ith5 5 tháng trước cách đây
mục cha
commit
7f525183ce

+ 79 - 82
src/views/v1/advert/agentSite/tt_pac.vue

@@ -7,23 +7,12 @@
     :mask-closable="false"
     :ok-loading="loading"
     @cancel="close"
-    @before-ok="submit"
-  >
+    @before-ok="submit">
     <!-- 表单信息 start -->
-    <a-form
-      ref="formRef"
-      :model="formData"
-      :rules="rules"
-      :auto-label-width="true"
-    >
+    <a-form ref="formRef" :model="formData" :rules="rules" :auto-label-width="true">
       <a-form-item label="推送游戏" field="game_id">
-        <a-select v-model="formData.game_id" placeholder="请选择推送游戏">
-          <a-option
-            v-for="item in gamePackageOptions"
-            :key="item.game_id"
-            :value="item.game_id"
-            :label="item.name"
-          />
+        <a-select v-model="formData.game_id" placeholder="请选择推送游戏" @change="handleGameChange">
+          <a-option v-for="item in gamePackageOptions" :key="item.game_id" :value="item.game_id" :label="item.name" />
         </a-select>
       </a-form-item>
 
@@ -41,8 +30,7 @@
             v-for="item in ttAccountOptions"
             :key="item.advertiser_id"
             :value="item.advertiser_id"
-            :label="item.advertiser_name"
-          />
+            :label="item.advertiser_name" />
         </a-select>
       </a-form-item>
     </a-form>
@@ -51,131 +39,140 @@
 </template>
 
 <script setup>
-import { ref, reactive, computed } from "vue";
-import { Message, Modal } from "@arco-design/web-vue";
-import tool from "@/utils/tool";
-import api from "@/api/system/post";
-import { request } from "@/utils/request";
-import commonApi from "../../api/common";
-import agentSiteApi from "../../api/advert/agentSite";
+import { ref, reactive, computed } from 'vue'
+import { Message, Modal } from '@arco-design/web-vue'
+import tool from '@/utils/tool'
+import api from '@/api/system/post'
+import { request } from '@/utils/request'
+import commonApi from '../../api/common'
+import agentSiteApi from '../../api/advert/agentSite'
 
-const emit = defineEmits(["success"]);
+const emit = defineEmits(['success'])
 
 // 引用定义
-const formRef = ref();
-const mode = ref("");
-const visible = ref(false);
-const loading = ref(false);
-const siteIds = ref();
-const ttAccountOptions = ref([]);
-const gamePackageOptions = ref([]);
+const formRef = ref()
+const mode = ref('')
+const visible = ref(false)
+const loading = ref(false)
+const siteIds = ref()
+const ttAccountOptions = ref([])
+const gamePackageOptions = ref([])
 
 let title = computed(() => {
-  return "推送头条分包和转化";
-});
+  return '推送头条分包和转化'
+})
 
 // 表单初始值
 const initialFormData = {
-  id: "",
-  game_id: "",
+  id: '',
+  game_id: '',
   fb: true,
   zh: true,
-  remark: "",
-};
+  remark: '',
+}
 
 // 表单信息
-const formData = reactive({ ...initialFormData });
+const formData = reactive({ ...initialFormData })
 
 // 设置批量数据
 const setSiteIds = async (value) => {
-  siteIds.value = value;
-};
+  siteIds.value = value
+}
 
 // 验证规则
 const rules = {
-  game_id: [{ required: true, message: "推送游戏不能为空" }],
-  advertiser_id: [{ required: true, message: "头条账号不能为空" }],
-};
+  game_id: [{ required: true, message: '推送游戏不能为空' }],
+  advertiser_id: [{ required: true, message: '头条账号不能为空' }],
+}
 
 // 打开弹框
-const open = async (type = "ks") => {
-  mode.value = type;
+const open = async (type = 'ks') => {
+  mode.value = type
   // 重置表单数据
-  Object.assign(formData, initialFormData);
-  formRef.value.clearValidate();
-  formRef.value.resetFields();
+  Object.assign(formData, initialFormData)
+  formRef.value.clearValidate()
+  formRef.value.resetFields()
 
-  visible.value = true;
-  await initPage();
-};
+  visible.value = true
+  await initPage()
+}
 
 // 初始化页面数据
 const initPage = async () => {
-  await getGamePackageOptions();
-  await getTtAccountOptions();
-};
+  await getGamePackageOptions()
+  await getTtAccountOptions()
+}
+
+// 游戏ID改变
+const handleGameChange = (value) => {
+  const gameData = gamePackageOptions.value.find((item) => item.game_id === value)
+
+  formData.id = gameData.id
+}
 
 // 获取母包列表
 const getGamePackageOptions = async () => {
-  const res = await commonApi.getPackageOptionsApi({ media_id: 1 });
+  const res = await commonApi.getPackageOptionsApi({ media_id: 1 })
   if (res.code === 200) {
-    gamePackageOptions.value = res.data;
+    gamePackageOptions.value = res.data
   }
-};
+}
 
 // 获取头条账号Options
 const getTtAccountOptions = async () => {
-  const res = await agentSiteApi.getTtAccountOptionsApi();
+  const res = await agentSiteApi.getTtAccountOptionsApi()
   if (res.code === 200) {
-    ttAccountOptions.value = res.data;
+    ttAccountOptions.value = res.data
   }
-};
+}
 
 // 设置数据
 const setFormData = async (data) => {
   for (const key in formData) {
     if (data[key] != null && data[key] != undefined) {
-      formData[key] = data[key];
+      formData[key] = data[key]
     }
   }
-};
+}
 
 // 数据保存
 const submit = async (done) => {
-  const validate = await formRef.value?.validate();
+  const validate = await formRef.value?.validate()
   if (!validate) {
-    loading.value = true;
-    let data = { ...formData };
-    let result = {};
+    loading.value = true
+    let data = { ...formData }
+    console.log(data)
+    let result = {}
 
     // 推送
     result = await agentSiteApi.ttPushNewEventApi({
       site_ids: siteIds.value,
-      game_id: formData.game_id,
-      fb: formData.fb,
-      zh: formData.zh,
-      advertiser_id: formData.advertiser_id,
-    });
+      game_package_id: data.id,
+      geme_id: data.game_id,
+      fb: data.fb,
+      zh: data.zh,
+      advertiser_id: data.advertiser_id,
+    })
 
     if (result.code === 200) {
       // Message.success("操作成功");
       Modal.info({
-        title: "推送结果",
+        title: '推送结果',
         content: result.data.message,
-      });
-      emit("success");
-      done(true);
+      })
+      emit('success')
+      done(true)
     }
     // 防止连续点击提交
     setTimeout(() => {
-      loading.value = false;
-    }, 500);
+      loading.value = false
+    }, 500)
   }
-  done(false);
-};
+  done(false)
+}
 
 // 关闭弹窗
-const close = () => (visible.value = false);
+const close = () => (visible.value = false)
 
-defineExpose({ open, setFormData, setSiteIds });
+defineExpose({ open, setFormData, setSiteIds })
 </script>

+ 29 - 31
src/views/v1/advert/gamePackage/edit.vue

@@ -11,32 +11,26 @@
     <!-- 表单信息 start -->
     <a-form ref="formRef" :model="formData" :rules="rules" :auto-label-width="true">
       <a-form-item label="游戏" field="game_id">
-        <!-- <a-select
-          v-model="formData.game_id"
-          placeholder="请选择游戏ID"
-          allow-clear
-          @change="handleGameChange"
-        >
+        <!-- <a-select v-model="formData.game_id" placeholder="请选择游戏ID" allow-clear @change="handleGameChange">
           <a-option
             v-for="item in gameOptions"
             :key="item.id"
             :value="item.id"
-            :label="`${item.id}:${item.name}:${item.package_name}`"
-          />
+            :label="`${item.id}:${item.name}:${item.package_name}`" />
         </a-select> -->
-        <!-- <a-tree-select
+        <a-tree-select
           v-model="formData.game_id"
-          :data="gameListTree"
+          :data="gameOptions"
           tree-checked-strategy="child"
           :tree-checkable="false"
           :max-tag-count="2"
-          :fieldNames="{ title: 'name', key: 'id' }"
+          :fieldNames="{ title: 'name', key: 'name' }"
           allow-search
           allow-clear
-          placeholder="请选择游戏"
-        >
-        </a-tree-select> -->
-        <game-select v-model="formData.game_id" />
+          @change="handleGameChange"
+          placeholder="请选择游戏">
+        </a-tree-select>
+        <!-- <game-select v-model="formData.game_id" /> -->
       </a-form-item>
       <a-form-item label="所属媒体" field="media_id">
         <a-select v-model="formData.media_id" placeholder="请选择媒体ID" allow-clear @change="handleMediaChange">
@@ -87,6 +81,7 @@ import { Message } from '@arco-design/web-vue'
 import api from '../../api/advert/gamePackage'
 import advertCommonApi from '../../api/advert/common'
 import commonApi from '../../api/common'
+import v1CommonApi from '@/views/v1/api/common'
 import GameSelect from '@/components/game-select/index.vue'
 
 const emit = defineEmits(['success'])
@@ -98,6 +93,7 @@ const mode = ref('')
 const mediaOptions = ref([])
 const gameOptions = ref([])
 const gameListTree = ref([])
+const gameName = ref('')
 
 let title = computed(() => {
   return '母包管理' + (mode.value == 'add' ? '-新增' : '-编辑')
@@ -106,7 +102,7 @@ let title = computed(() => {
 // 表单初始值
 const initialFormData = {
   id: null,
-  media_id: null,
+  media_id: 1,
   game_id: null,
   name: '',
   package_name: '',
@@ -139,15 +135,18 @@ const open = async (type = 'add') => {
 // 游戏ID改变
 const handleGameChange = (value) => {
   console.log(value)
+
   if (value) {
+    const data = value.split(':')
     const media = mediaOptions.value.find((item) => item.id === formData.media_id)
-    const game = gameOptions.value.find((item) => item.id === value)
+
     if (media) {
-      formData.name = `${game.name}(${media.name})`
+      gameName.value = data[1]
+      formData.name = `${data[1]}(${media.name})`
     } else {
-      formData.name = game.name
+      formData.name = data[1]
     }
-    formData.package_name = game.package_name
+    formData.package_name = data[2]
   }
 }
 
@@ -155,11 +154,10 @@ const handleGameChange = (value) => {
 const handleMediaChange = (value) => {
   if (value) {
     const media = mediaOptions.value.find((item) => item.id === value)
-    const game = gameOptions.value.find((item) => item.id === formData.game_id)
-    if (game) {
-      formData.name = `${game.name}(${media.name})`
+    if (media) {
+      formData.name = `${gameName.value}(${media.name})`
     } else {
-      formData.name = `(${media.name})`
+      formData.name = gameName.value
     }
   }
 }
@@ -167,7 +165,7 @@ const handleMediaChange = (value) => {
 // 初始化页面数据
 const initPage = async () => {
   await getMediaOptions()
-  // await getGameOptions();
+  await getGameOptions()
   await getGameListTree()
 }
 
@@ -180,12 +178,12 @@ const getMediaOptions = async () => {
 }
 
 // // 获取游戏列表
-// const getGameOptions = async () => {
-//   const res = await centerCommonApi.getGameOptionsApi();
-//   if (res.code == 200) {
-//     gameOptions.value = res.data;
-//   }
-// };
+const getGameOptions = async () => {
+  const res = await v1CommonApi.getGameOptionsApi({ has_package: true })
+  if (res.code == 200) {
+    gameOptions.value = res.data
+  }
+}
 
 const getGameListTree = async () => {
   const resp = await commonApi.getGameListTreeApi({ single: true })

+ 1 - 0
src/views/v1/advert/gamePackage/index.vue

@@ -112,6 +112,7 @@ const options = reactive({
 
 // SaTable 列配置
 const columns = reactive([
+  { title: 'ID', dataIndex: 'id', width: 80 },
   { title: '游戏ID', dataIndex: 'game_id', width: 80 },
   { title: '母包名称', dataIndex: 'name', width: 220 },
   { title: '打包目录', dataIndex: 'letter', width: 120 },