|
|
@@ -49,6 +49,9 @@
|
|
|
<el-table-column label="操作" width="150" fixed="right">
|
|
|
<template #default="scope">
|
|
|
<div class="button">
|
|
|
+ <el-button class="button-item" type="primary" style="margin-bottom: 5px" @click="edit(scope.row)">
|
|
|
+ 关联渠道
|
|
|
+ </el-button>
|
|
|
<el-button class="button-item" type="primary" style="margin-bottom: 5px" @click="edit(scope.row)">
|
|
|
编辑
|
|
|
</el-button>
|
|
|
@@ -66,19 +69,149 @@
|
|
|
<!-- 操作弹窗 -->
|
|
|
<Layer :layer="layer" @confirm="submit(ruleForm)" @close="layer.show = false">
|
|
|
<el-form :model="formEdit" :rules="rules" ref="ruleForm" label-width="120px" style="margin-right: 30px">
|
|
|
- <el-form-item label="请求秘钥:" required prop="apiKey">
|
|
|
- <el-input v-model="formEdit.apiKey" type="number" placeholder="请输入" clearable />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="请求密令:" required prop="apiSecret">
|
|
|
- <el-input v-model="formEdit.apiSecret" placeholder="请输入" clearable />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="渠道ID:" required prop="channelId">
|
|
|
- <el-input v-model="formEdit.channelId" placeholder="请输入" clearable />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="渠道名称:" required prop="channelName">
|
|
|
- <el-input v-model="formEdit.channelName" placeholder="请输入" clearable />
|
|
|
- </el-form-item>
|
|
|
+ <el-row :gutter="5">
|
|
|
+ <el-col :span="10" v-if="formEdit.appId">
|
|
|
+ <el-form-item label="应用ID" required prop="apiKey">
|
|
|
+ <el-input v-model="formEdit.appId" disabled type="number" placeholder="请输入" clearable />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2" v-if="formEdit.appId"></el-col>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="应用名称:" required prop="appName">
|
|
|
+ <el-input v-model="formEdit.appName" placeholder="请输入" clearable />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="5">
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="应用类型" required prop="appType">
|
|
|
+ <el-select v-model="formEdit.appType">
|
|
|
+ <el-option value="1" label="Android" />
|
|
|
+ <el-option value="2" label="IOS" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2"></el-col>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="是否上架" required prop="store_on_sale">
|
|
|
+ <el-select v-model="formEdit.store_on_sale">
|
|
|
+ <el-option value="1" label="是" />
|
|
|
+ <el-option value="2" label="否" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="5">
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="上架商店" required prop="store_type">
|
|
|
+ <el-select v-model="formEdit.store_type" placeholder="请选择上架应用商店">
|
|
|
+ <el-option value="1" label="App Store" />
|
|
|
+ <el-option value="2" label="Google Play" />
|
|
|
+ <el-option value="3" label="华为商店" />
|
|
|
+ <el-option value="4" label="小米应用商店" />
|
|
|
+ <el-option value="5" label="OPPO商店" />
|
|
|
+ <el-option value="6" label="vivo商店" />
|
|
|
+ <el-option value="7" label="应用宝" />
|
|
|
+ <el-option value="8" label="TapTap" />
|
|
|
+ <el-option value="9" label="Amazon应用商店" />
|
|
|
+ <el-option value="10" label="三星应用商店" />
|
|
|
+ <el-option value="11" label="小米海外应用商店" />
|
|
|
+ <el-option value="12" label="华为海外应用市场" />
|
|
|
+ <el-option value="13" label="Roku" />
|
|
|
+ <el-option value="14" label="Samsung Smart TV" />
|
|
|
+ <el-option value="15" label="Microsoft" />
|
|
|
+ <el-option value="16" label="LG Smart TV" />
|
|
|
+ <el-option value="17" label="Vizio" />
|
|
|
+ <el-option value="99" label="其他" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2"></el-col>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="商店链接" required prop="store_url">
|
|
|
+ <el-input v-model="formEdit.store_url" placeholder="请输入上架商店链接" clearable />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="5">
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="应用域名" prop="required">
|
|
|
+ <el-input v-model="formEdit.domain" placeholder="请输入应用域名" clearable />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2"></el-col>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="应用包名" required prop="package_name">
|
|
|
+ <el-input v-model="formEdit.package_name" placeholder="请输入应用包名" clearable />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="5">
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="一级分类" prop="sub_category">
|
|
|
+ <el-select v-model="formEdit.category" placeholder="请选择上架应用商店">
|
|
|
+ <el-option value="1" label="App" />
|
|
|
+ <el-option value="2" label="Game" />
|
|
|
+ <el-option value="3" label="Family" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2"></el-col>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="二级分类" required prop="sub_category">
|
|
|
+ <el-select v-model="formEdit.sub_category" placeholder="请选择上架应用商店">
|
|
|
+ <el-option value="Daydream" label="Daydream" />
|
|
|
+ <el-option value="Wear" label="Android Wear" />
|
|
|
+ <el-option value="Design" label="Art & Design" />
|
|
|
+ <el-option value="Vehicles" label="Auto & Vehicles" />
|
|
|
+ <el-option value="Beauty" label="Beauty" />
|
|
|
+ <el-option value="Books" label="Books & Reference" />
|
|
|
+ <el-option value="Business" label="Business" />
|
|
|
+ <el-option value="Comics" label="Comics" />
|
|
|
+ <el-option value="Communication" label="Communication" />
|
|
|
+ <el-option value="Dating" label="Dating" />
|
|
|
+ <el-option value="Education" label="Education" />
|
|
|
+ <el-option value="Entertainment" label="Entertainment" />
|
|
|
+ <el-option value="Events" label="Events" />
|
|
|
+ <el-option value="Finance" label="Finance" />
|
|
|
+ <el-option value="Drink" label="Food & Drink" />
|
|
|
+ <el-option value="Fitness" label="Health & Fitness" />
|
|
|
+ <el-option value="House" label="House & Home" />
|
|
|
+ <el-option value="Libraries" label="Libraries & Demo" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="5">
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="屏幕方向" prop="screen_orientation">
|
|
|
+ <el-select v-model="formEdit.screen_orientation" placeholder="请选择屏幕方向">
|
|
|
+ <el-option value="1" label="竖屏" />
|
|
|
+ <el-option value="2" label="横屏" />
|
|
|
+ <el-option value="3" label="所有" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2"></el-col>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="版本号" required prop="versionCode">
|
|
|
+ <el-input v-model="formEdit.versionCode" placeholder="请输入版本号" clearable />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="5">
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="遵守美国COPPA" prop="screen_orientation">
|
|
|
+ <el-switch v-model="formEdit.coppa" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2"></el-col>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="遵守美国CCPA" required prop="versionCode">
|
|
|
+ <el-switch v-model="formEdit.ccpa" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
<el-form-item label="渠道账号:" required prop="channelAccount">
|
|
|
<el-input v-model="formEdit.channelAccount" placeholder="请输入" clearable />
|
|
|
</el-form-item>
|
|
|
@@ -101,7 +234,6 @@
|
|
|
<script setup>
|
|
|
import { onBeforeMount, ref, reactive } from "vue";
|
|
|
import { ElMessage } from "element-plus";
|
|
|
- import { useStore } from "vuex";
|
|
|
import { useGetDictList } from "@/hooks/useGetDictList.js";
|
|
|
import { channelAddOne, channelDeleteOne, channelUpdateOne, appList,} from "@/api/formworkErection.js";
|
|
|
import From from "@/components/from/index.vue";
|
|
|
@@ -110,9 +242,7 @@
|
|
|
import { CopyDocument, Hide, View} from "@element-plus/icons-vue";
|
|
|
import vCopy from '@/directive/copy'
|
|
|
|
|
|
- const store = useStore();
|
|
|
- const { dictData, loadDictData, getOptions, getDictionaryName } = useGetDictList();
|
|
|
- const form = ref(null);
|
|
|
+ const { loadDictData, getDictionaryName } = useGetDictList();
|
|
|
const tableData = ref([
|
|
|
]);
|
|
|
|
|
|
@@ -125,11 +255,9 @@
|
|
|
});
|
|
|
|
|
|
const formSearch = ref({
|
|
|
- channelId: null, // 渠道ID
|
|
|
- channelName: null, // 渠道名称
|
|
|
- channelAccount: "", // 渠道账号
|
|
|
- channelStatus: null, // 渠道状态
|
|
|
- loginType: null, // 登录类型
|
|
|
+ appName: null,
|
|
|
+ channelName: null,
|
|
|
+ appType: null,
|
|
|
|
|
|
limit: 20, // 当前页数量(查询量)
|
|
|
page: 1, // 当前页码
|
|
|
@@ -148,42 +276,18 @@
|
|
|
loadDictData().then(() => {
|
|
|
dynamicFormItems.value = [
|
|
|
{
|
|
|
- label: "渠道ID",
|
|
|
- prop: "channelId",
|
|
|
+ label: "应用名称",
|
|
|
+ prop: "appName",
|
|
|
type: "input",
|
|
|
},
|
|
|
{
|
|
|
- label: "渠道名称",
|
|
|
+ label: "广告渠道",
|
|
|
prop: "channelName",
|
|
|
type: "input",
|
|
|
},
|
|
|
{
|
|
|
- label: "渠道账号",
|
|
|
- prop: "channelAccount",
|
|
|
- type: "input",
|
|
|
- },
|
|
|
- {
|
|
|
- label: "渠道状态",
|
|
|
- prop: "channelStatus",
|
|
|
- type: "select",
|
|
|
- options: [
|
|
|
- {
|
|
|
- label: "全部",
|
|
|
- value: null,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "是",
|
|
|
- value: 0,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "否",
|
|
|
- value: 1,
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- {
|
|
|
- label: "登录类型",
|
|
|
- prop: "loginType",
|
|
|
+ label: "应用类型",
|
|
|
+ prop: "appType",
|
|
|
type: "select",
|
|
|
options: [
|
|
|
{
|
|
|
@@ -191,16 +295,15 @@
|
|
|
value: null,
|
|
|
},
|
|
|
{
|
|
|
- label: "账号密码",
|
|
|
+ label: "Android",
|
|
|
value: 1,
|
|
|
},
|
|
|
{
|
|
|
- label: "微信",
|
|
|
+ label: "IOS",
|
|
|
value: 2,
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
- // { label: '登录日期', prop: 'loginTime', type: 'daterange' },
|
|
|
];
|
|
|
});
|
|
|
};
|
|
|
@@ -227,11 +330,9 @@
|
|
|
formSearch.value.pageSizes = 20;
|
|
|
formSearch.value.limit = 20;
|
|
|
|
|
|
- formSearch.value.channelId = formData.channelId;
|
|
|
formSearch.value.channelName = formData.channelName;
|
|
|
- formSearch.value.channelAccount = formData.channelAccount;
|
|
|
- formSearch.value.channelStatus = formData.channelStatus;
|
|
|
- formSearch.value.loginType = formData.loginType;
|
|
|
+ formSearch.value.appName = formData.appName;
|
|
|
+ formSearch.value.appType = formData.appType;
|
|
|
formSearch
|
|
|
|
|
|
getList();
|
|
|
@@ -240,11 +341,9 @@
|
|
|
// 表单重置
|
|
|
const handleFormReset = () => {
|
|
|
formSearch.value = {
|
|
|
- channelId: null, // 渠道ID
|
|
|
- channelName: null, // 渠道名称
|
|
|
- channelAccount: "", // 渠道账号
|
|
|
- channelStatus: null, // 渠道状态
|
|
|
- loginType: null, // 登录类型
|
|
|
+ appName: null,
|
|
|
+ channelName: null,
|
|
|
+ appType: null,
|
|
|
|
|
|
limit: 20, // 当前页数量(查询量)
|
|
|
page: 1, // 当前页码
|
|
|
@@ -268,6 +367,13 @@
|
|
|
});
|
|
|
|
|
|
const formEdit = ref({
|
|
|
+ store_on_sale: "",
|
|
|
+ store_type: null,
|
|
|
+ store_url: "",
|
|
|
+ category: "",
|
|
|
+ sub_category: "",
|
|
|
+ screen_orientation: "",
|
|
|
+ versionCode: "",
|
|
|
apiKey: "", //请求秘钥
|
|
|
apiSecret: "", //请求密令
|
|
|
channelAccount: "", //渠道账号
|
|
|
@@ -282,11 +388,11 @@
|
|
|
const edit = (row) => {
|
|
|
ruleForm.value?.resetFields();
|
|
|
if (row) {
|
|
|
- layer.value.title = "编辑代理";
|
|
|
+ layer.value.title = "编辑APP";
|
|
|
layer.value.edit = true;
|
|
|
formEdit.value = row;
|
|
|
} else {
|
|
|
- layer.value.title = "新增代理";
|
|
|
+ layer.value.title = "新增APP";
|
|
|
layer.value.edit = false;
|
|
|
formEdit.value = {};
|
|
|
}
|
|
|
@@ -296,16 +402,6 @@
|
|
|
const ruleForm = ref(null);
|
|
|
|
|
|
const rules = reactive({
|
|
|
- /* formEditbannedLimit: [
|
|
|
- { required: true, message: "请输入封禁期限", trigger: "blur" },
|
|
|
- ],
|
|
|
- bannedReason: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: "请输入封禁原因",
|
|
|
- trigger: "blur",
|
|
|
- },
|
|
|
- ], */
|
|
|
});
|
|
|
|
|
|
const submit = async (formEl) => {
|