pansl 1 éve
szülő
commit
7dc5fa4c0e

+ 16 - 13
src/api/pageLayout/channelPage/index.ts

@@ -1,26 +1,29 @@
 import http from '@/api/http';
 /**
- * 首页列表-列表
+ * 频道管理-列表
  */
-export function operationManageFirstPageList(params?: object) {
-  return http.get('/operationManage/firstPage/list', params);
+export function operationChannelList(params?: object) {
+  return http.get('/operation/channel/list', params);
 }
 
 /**
- * 首页列表-开启状态
+ * 频道管理-开启状态
  */
-export function operationManageFirstPageEnableStatus(params: object) {
-  return http.post('/operationManage/firstPage/enableStatus', params);
+export function operationChannelEnableStatus(
+  id: number | string,
+  params?: object
+) {
+  return http.post(`/operation/channel/enableStatus/${id}`, params);
 }
 /**
- * 首页列表-添加
+ * 频道管理-添加
  */
-export function operationManageFirstPageAdd(params: object) {
-  return http.post(`/operationManage/firstPage/add`, params);
+export function operationChannelAdd(params: object) {
+  return http.post(`/operation/channel/add`, params);
 }
 /**
- * 首页列表-配置
+ * 频道管理-配置
  */
-export function operationManageFirstPageSetConfig(params: object) {
-  return http.post(`/operationManage/firstPage/setConfig`, params);
-}
+export function operationChannelSetConfig(id: number | string, params: object) {
+  return http.post(`/operation/channel/setting/${id}`, params);
+}

+ 39 - 10
src/views/pageLayout/channelPageManage/form/config.vue

@@ -1,18 +1,20 @@
 <template>
   <el-form :model="formCallback" label-width="120px" ref="form" v-loading="loading" class="pr-4">
-    <el-form-item label="列表名称" prop="ids" :rules="[{ required: false, message: '巨量账户ID必须填写' }]" label-width="120px">
-      <el-input v-model="props.primary.type_str" disabled size="default" clearable></el-input>
+    <el-form-item label="频道名称" prop="ids" :rules="[{ required: false, message: '频道名称必须填写' }]" label-width="120px">
+      <el-input v-model="props.primary.type_txt" disabled size="default" clearable></el-input>
     </el-form-item>
     <el-form-item label="短剧" prop="duanjus" :rules="[{ required: true, message: '选择短剧' }]">
       <div>
         <div class="flex flex-wrap mb-5" v-if="formCallback.duanjus.length > 0">
           <div v-for="item in formCallback.duanjus" :key="item.id" class="mt-3 mr-3">
-            <el-input v-model="item.name" disabled placeholder="短剧名称" style="width:300px;" class="input-with-select">
-              <template #prepend>
-                <el-input type="number" min="1" disabled v-model.number="item.sort" placeholder="排序" size="default"
-                  clearable style="width: 115px"></el-input>
-              </template>
+            <el-input type="number" :disabled="false" min="1" v-model.number="item.sort" placeholder="排序" size="default"
+              clearable style="width: 115px;"></el-input>
+            <el-input v-model="item.name" :disabled="true" placeholder="短剧名称" style="width:300px;"
+              class="input-with-select">
             </el-input>
+            <el-icon class="ml-3 cursor-pointer" @click="chooseDel(item, index)">
+              <Delete />
+            </el-icon>
           </div>
         </div>
         <div>
@@ -33,9 +35,9 @@
 
 <script lang="ts" setup>
 import videoList from './videoList.vue';
-import { Close } from '@element-plus/icons-vue';
+import { Close, Delete } from '@element-plus/icons-vue';
 import { FormInstance } from 'element-plus';
-import { operationManageFirstPageSetConfig } from '@/api/pageLayout/homePage/index';
+import { operationChannelSetConfig } from '@/api/pageLayout/channelPage/index'
 import { useRouter, useRoute } from 'vue-router'
 const props = defineProps({
   primary: Object,
@@ -55,20 +57,47 @@ const formCallback = ref({
 const chooseShort = () => {
   videoVisible.value = true
 }
+const validateData = () => {
+  const sortSet = new Set();
+  const nameSet = new Set();
 
+  for (const item of formCallback.value.duanjus) {
+    if (item.sort === null || item.sort === undefined) {
+      ElMessage.error(`${item.name}的排序不能为空`)
+      return false;
+    }
+    if (sortSet.has(item.sort)) {
+      ElMessage.error(`${item.name}的排序重复`)
+      return false;
+    }
+    sortSet.add(item.sort);
+    if (nameSet.has(item.name)) {
+      ElMessage.error(`${item.name}的排序重复`)
+      return false;
+    }
+
+    nameSet.add(item.name);
+  }
+
+  return true;
+};
 const confirm = (e) => {
   formCallback.value.duanjus = e
   videoVisible.value = false
 }
+const chooseDel = (row: object, idx: number) => {
+  formCallback.value.duanjus.splice(idx, 1);
+}
 // 提交回传配置
 const submitForm = (formEl: FormInstance | undefined) => {
   console.log(formCallback.value, 'formCallbackformCallback');
   if (!formEl) return;
+  if (!validateData()) return
   loading.value = true;
   formEl
     .validate(valid => {
       if (valid) {
-        operationManageFirstPageSetConfig(formCallback.value).then(res => {
+        operationChannelSetConfig(formCallback.value.id, formCallback.value).then(res => {
           ElMessage.success(res.message)
           emit('close')
         })

+ 5 - 5
src/views/pageLayout/channelPageManage/form/create.vue

@@ -6,8 +6,8 @@
         <el-option v-for="(item, index) in miniprogramTypelist" :key="index" :label="item.label" :value="item.value" />
       </el-select>
     </el-form-item>
-    <el-form-item label="列表名称" prop="type" :rules="[{ required: true, message: '选择列表名称' }]" label-width="120px">
-      <el-select v-model="formCallback.type" clearable filterable placeholder="请选择支付方式">
+    <el-form-item label="频道名称" prop="type" :rules="[{ required: true, message: '选择频道名称' }]" label-width="120px">
+      <el-select v-model="formCallback.type" clearable filterable placeholder="请选择频道名称">
         <el-option v-for="(item, index) in typeList" :key="index" :label="item.name" :value="item.value" />
       </el-select>
     </el-form-item>
@@ -25,7 +25,7 @@
 <script lang="ts" setup>
 import { Close } from '@element-plus/icons-vue';
 import { FormInstance } from 'element-plus';
-import { operationManageFirstPageAdd } from '@/api/pageLayout/homePage/index'
+import { operationChannelAdd } from '@/api/pageLayout/channelPage/index'
 const emit = defineEmits(['close']);
 const loading = ref(false)
 const form = ref()
@@ -35,7 +35,7 @@ const formCallback = ref({
   status: 0,
 })
 
-const typeList = ref([{ name: '本周精选', value: 1 }, { name: '优选好剧', value: 2 }])
+const typeList = ref([{ name: '排行榜', value: 1 }, { name: '最新', value: 2 }])
 const miniprogramTypelist = ref([])
 const init = () => {
   optionsCommonParams().then(res => {
@@ -51,7 +51,7 @@ const submitForm = (formEl: FormInstance | undefined) => {
   formEl
     .validate(valid => {
       if (valid) {
-        operationManageFirstPageAdd(formCallback.value).then(res => {
+        operationChannelAdd(formCallback.value).then(res => {
           ElMessage.success(res.message)
           emit('close')
         })

+ 22 - 9
src/views/pageLayout/channelPageManage/form/videoList.vue

@@ -14,6 +14,9 @@
             <el-input v-model="item.name" :disabled="true" placeholder="短剧名称" style="width:300px;"
               class="input-with-select">
             </el-input>
+            <el-icon class="ml-3 cursor-pointer" @click="chooseDel(item, index)">
+              <Delete />
+            </el-icon>
           </div>
         </el-form-item>
       </div>
@@ -33,7 +36,7 @@
             @change="handleCascaderChange" />
         </el-form-item>
         <el-form-item label="微信审核状态" prop="wechatPass">
-          <el-select v-model="query.wechatPass" disabled filterable clearable placeholder="请选择微信审核状态">
+          <el-select v-model="query.wechatPass" filterable clearable placeholder="请选择微信审核状态">
             <el-option v-for="item in wxstatusOptions" :key="item.value" :label="item.label" :value="item.value" />
           </el-select>
         </el-form-item>
@@ -123,14 +126,14 @@
 
 <script lang="ts" setup>
 import { downloadImage } from '@/utils/index'
-import { InfoFilled } from '@element-plus/icons-vue';
+import { InfoFilled, Delete } from '@element-plus/icons-vue';
 import { provide } from 'vue'
 import { useGetList } from '@/hook/curd/useGetList';
 import { useDestroy } from '@/hook/curd/useDestroy';
 import { useOpen } from '@/hook/curd/useOpen';
 import { videoStockVideoCategoryList, videoStockVideoList } from '@/api/video/index'
 const api = 'videoStock/video/list';
-const multipleTableRef = ref()
+const multipleTableRef = ref(null); // 初始化为 null
 const multipleSelection = ref([]);
 const { data, query, search, reset, loading } = useGetList(api);
 const selectType = ref([])
@@ -156,7 +159,7 @@ const handleCascaderChange = (val: any) => {
 }
 
 const resetQuery = () => {
-  query.value = Object.assign({ page: query.value.page, limit: query.value.limit, shelfType: 2, wechatPass: 1 });
+  query.value = Object.assign({ page: query.value.page, limit: query.value.limit, shelfType: 2 });
   search()
   selectType.value = []
 }
@@ -197,8 +200,14 @@ const validateData = () => {
 };
 
 const tableData = computed(() => data.value?.data);
+const chooseDel = (row: object, idx: number) => {
+  console.log(row, idx, 'row: object, idx: number', multipleSelection.value[idx]);
+  multipleSelection.value.splice(idx, 1);
+  setRowSelected(false)
+}
 
 const handleSelectionChange = (val: []) => {
+  console.log(val, 'handleSelectionChangehandleSelectionChange');
   if (rowSelectFlag.value) return
   multipleSelection.value = val;
 };
@@ -228,11 +237,16 @@ if (props.primary) {
   }
 }
 
-const setRowSelected = () => {
+const setRowSelected = (status: boolean = true) => {
   rowSelectFlag.value = true
-  Object.keys(multipleSelection.value).forEach(key => {
-    multipleSelection.value[key] && multipleTableRef.value.toggleRowSelection(multipleSelection.value[key], true)
-  })
+  if (multipleTableRef.value) { // 确保 multipleTableRef 有有效的值
+    multipleTableRef.value.clearSelection(); // 清除之前的选中状态
+    multipleSelection.value.forEach((item) => {
+      multipleTableRef.value.toggleRowSelection(item, status);
+    });
+  } else {
+    ElMessage.error('表格实例未找到');
+  }
   rowSelectFlag.value = false
 }
 onMounted(() => {
@@ -252,7 +266,6 @@ onMounted(() => {
   overflow: auto;
 }
 
-
 .table-default {
   .set-warpper {
     height: 60px;

+ 11 - 7
src/views/pageLayout/channelPageManage/index.vue

@@ -1,15 +1,17 @@
 <template>
   <div class="table-default">
-    <div class="pt-5 pl-2" v-action="'operation.FirstPage.add'">
+    <div class="pt-5 pl-2" v-action="'operation.Channel.add'">
       <el-button type="primary" size="default" @click="openForm(null)">新增</el-button>
     </div>
     <el-table :data="tableData" class="mt-3" v-loading="loading">
       <el-table-column label="频道ID" prop="id"></el-table-column>
-      <el-table-column label="频道名称" prop="type_str">
+      <el-table-column label="频道名称" prop="type_txt">
       </el-table-column>
       <el-table-column label="添加时间" prop="created_at">
       </el-table-column>
-      <el-table-column label="状态" v-action="'operation.FirstPage.enableStatus'">
+      <el-table-column label="小程序类型" prop="miniprogram_type_text">
+      </el-table-column>
+      <el-table-column label="状态" v-action="'operation.Channel.enableStatus'">
         <template #default="scope">
           <div>
             <el-switch v-model="scope.row.status" :disabled="Boolean(scope.row.status)" @change="switchStatus(scope.row)"
@@ -21,7 +23,7 @@
       <el-table-column label="操作">
         <template #default="scope">
           <el-button link type="primary" size="small" @click="handleConfigure(scope.row)"
-            v-action="'operation.FirstPage.setConfig'">配置</el-button>
+            v-action="'operation.Channel.setting'">配置</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -42,9 +44,9 @@ import { computed, onMounted, ref } from 'vue';
 import create from './form/create.vue';
 import config from './form/config.vue';
 import { useGetList } from '@/hook/curd/useGetList';
-import { operationManageFirstPageEnableStatus } from '@/api/pageLayout/homePage/index'
+import { operationChannelEnableStatus } from '@/api/pageLayout/channelPage/index'
 
-const api = 'operationManage/firstPage/list';
+const api = 'operation/channel/list';
 
 const { data, query, search, reset, loading } = useGetList(api, true);
 const tableData = computed(() => data.value?.data);
@@ -65,9 +67,11 @@ const closeType = (type: string) => {
 }
 
 const switchStatus = (data: object) => {
-  operationManageFirstPageEnableStatus({ id: data.id }).then(res => {
+  operationChannelEnableStatus(data.id).then(res => {
     ElMessage.success(res.message)
     search()
+  }).catch(e => {
+    search()
   })
 }
 

+ 36 - 7
src/views/pageLayout/homePageManage/form/config.vue

@@ -1,18 +1,20 @@
 <template>
   <el-form :model="formCallback" label-width="120px" ref="form" v-loading="loading" class="pr-4">
-    <el-form-item label="列表名称" prop="ids" :rules="[{ required: false, message: '巨量账户ID必须填写' }]" label-width="120px">
+    <el-form-item label="列表名称" prop="ids" :rules="[{ required: false, message: '列表名称必须填写' }]" label-width="120px">
       <el-input v-model="props.primary.type_str" disabled size="default" clearable></el-input>
     </el-form-item>
     <el-form-item label="短剧" prop="duanjus" :rules="[{ required: true, message: '选择短剧' }]">
       <div>
         <div class="flex flex-wrap mb-5" v-if="formCallback.duanjus.length > 0">
           <div v-for="item in formCallback.duanjus" :key="item.id" class="mt-3 mr-3">
-            <el-input v-model="item.name" disabled placeholder="短剧名称" style="width:300px;" class="input-with-select">
-              <template #prepend>
-                <el-input type="number" min="1" disabled v-model.number="item.sort" placeholder="排序" size="default"
-                  clearable style="width: 115px"></el-input>
-              </template>
+            <el-input type="number" :disabled="false" min="1" v-model.number="item.sort" placeholder="排序" size="default"
+              clearable style="width: 115px;"></el-input>
+            <el-input v-model="item.name" :disabled="true" placeholder="短剧名称" style="width:300px;"
+              class="input-with-select">
             </el-input>
+            <el-icon class="ml-3 cursor-pointer" @click="chooseDel(item, index)">
+              <Delete />
+            </el-icon>
           </div>
         </div>
         <div>
@@ -33,7 +35,7 @@
 
 <script lang="ts" setup>
 import videoList from './videoList.vue';
-import { Close } from '@element-plus/icons-vue';
+import { Close, Delete } from '@element-plus/icons-vue';
 import { FormInstance } from 'element-plus';
 import { operationManageFirstPageSetConfig } from '@/api/pageLayout/homePage/index';
 import { useRouter, useRoute } from 'vue-router'
@@ -55,15 +57,42 @@ const formCallback = ref({
 const chooseShort = () => {
   videoVisible.value = true
 }
+const validateData = () => {
+  const sortSet = new Set();
+  const nameSet = new Set();
 
+  for (const item of formCallback.value.duanjus) {
+    if (item.sort === null || item.sort === undefined) {
+      ElMessage.error(`${item.name}的排序不能为空`)
+      return false;
+    }
+    if (sortSet.has(item.sort)) {
+      ElMessage.error(`${item.name}的排序重复`)
+      return false;
+    }
+    sortSet.add(item.sort);
+    if (nameSet.has(item.name)) {
+      ElMessage.error(`${item.name}的排序重复`)
+      return false;
+    }
+
+    nameSet.add(item.name);
+  }
+
+  return true;
+};
 const confirm = (e) => {
   formCallback.value.duanjus = e
   videoVisible.value = false
 }
+const chooseDel = (row: object, idx: number) => {
+  formCallback.value.duanjus.splice(idx, 1);
+}
 // 提交回传配置
 const submitForm = (formEl: FormInstance | undefined) => {
   console.log(formCallback.value, 'formCallbackformCallback');
   if (!formEl) return;
+  if (!validateData()) return
   loading.value = true;
   formEl
     .validate(valid => {

+ 1 - 1
src/views/pageLayout/homePageManage/form/create.vue

@@ -7,7 +7,7 @@
       </el-select>
     </el-form-item>
     <el-form-item label="列表名称" prop="type" :rules="[{ required: true, message: '选择列表名称' }]" label-width="120px">
-      <el-select v-model="formCallback.type" clearable filterable placeholder="请选择支付方式">
+      <el-select v-model="formCallback.type" clearable filterable placeholder="请选择列表名称">
         <el-option v-for="(item, index) in typeList" :key="index" :label="item.name" :value="item.value" />
       </el-select>
     </el-form-item>

+ 21 - 7
src/views/pageLayout/homePageManage/form/videoList.vue

@@ -14,6 +14,9 @@
             <el-input v-model="item.name" :disabled="true" placeholder="短剧名称" style="width:300px;"
               class="input-with-select">
             </el-input>
+            <el-icon class="ml-3 cursor-pointer" @click="chooseDel(item, index)">
+              <Delete />
+            </el-icon>
           </div>
         </el-form-item>
       </div>
@@ -123,14 +126,14 @@
 
 <script lang="ts" setup>
 import { downloadImage } from '@/utils/index'
-import { InfoFilled } from '@element-plus/icons-vue';
+import { InfoFilled, Delete } from '@element-plus/icons-vue';
 import { provide } from 'vue'
 import { useGetList } from '@/hook/curd/useGetList';
 import { useDestroy } from '@/hook/curd/useDestroy';
 import { useOpen } from '@/hook/curd/useOpen';
 import { videoStockVideoCategoryList, videoStockVideoList } from '@/api/video/index'
 const api = 'videoStock/video/list';
-const multipleTableRef = ref()
+const multipleTableRef = ref(null); // 初始化为 null
 const multipleSelection = ref([]);
 const { data, query, search, reset, loading } = useGetList(api);
 const selectType = ref([])
@@ -156,7 +159,7 @@ const handleCascaderChange = (val: any) => {
 }
 
 const resetQuery = () => {
-  query.value = Object.assign({ page: query.value.page, limit: query.value.limit, shelfType: 2, wechatPass: 1 });
+  query.value = Object.assign({ page: query.value.page, limit: query.value.limit, shelfType: 2 });
   search()
   selectType.value = []
 }
@@ -197,8 +200,14 @@ const validateData = () => {
 };
 
 const tableData = computed(() => data.value?.data);
+const chooseDel = (row: object, idx: number) => {
+  console.log(row, idx, 'row: object, idx: number', multipleSelection.value[idx]);
+  multipleSelection.value.splice(idx, 1);
+  setRowSelected(false)
+}
 
 const handleSelectionChange = (val: []) => {
+  console.log(val, 'handleSelectionChangehandleSelectionChange');
   if (rowSelectFlag.value) return
   multipleSelection.value = val;
 };
@@ -228,11 +237,16 @@ if (props.primary) {
   }
 }
 
-const setRowSelected = () => {
+const setRowSelected = (status: boolean = true) => {
   rowSelectFlag.value = true
-  Object.keys(multipleSelection.value).forEach(key => {
-    multipleSelection.value[key] && multipleTableRef.value.toggleRowSelection(multipleSelection.value[key], true)
-  })
+  if (multipleTableRef.value) { // 确保 multipleTableRef 有有效的值
+    multipleTableRef.value.clearSelection(); // 清除之前的选中状态
+    multipleSelection.value.forEach((item) => {
+      multipleTableRef.value.toggleRowSelection(item, status);
+    });
+  } else {
+    ElMessage.error('表格实例未找到');
+  }
   rowSelectFlag.value = false
 }
 onMounted(() => {

+ 2 - 0
src/views/pageLayout/homePageManage/index.vue

@@ -70,6 +70,8 @@ const switchStatus = (data: object) => {
   operationManageFirstPageEnableStatus({ id: data.id }).then(res => {
     ElMessage.success(res.message)
     search()
+  }).catch(e => {
+    search()
   })
 }
 

+ 14 - 6
src/views/pageLayout/viewpagerPageManage/form/create.vue

@@ -16,12 +16,15 @@
       <my-upload acceptType=".png,.jpg,.jpeg" :isCheckMM="true" :isMultiple="true" @fileRemove="fileRemove"
         @fileSuccess="fileSuccess" :fileList="formCallback.fileList" action="/qiniu/upload/image"></my-upload>
     </el-form-item>
-    <el-form-item label="链接短剧信息" prop="duanjus" :rules="[{ required: true, message: '选择链接短剧信息' }]">
+    <el-form-item label="链接短剧信息" prop="duanjus" :rules="[{ required: false, message: '选择链接短剧信息', trigger: 'change' }]">
       <div>
-        <div class="flex flex-wrap mb-5" v-if="formCallback?.duanjus?.name">
+        <div class="flex flex-wrap items-center mb-5" v-if="formCallback?.duanjus?.name">
           <el-input v-model="formCallback.duanjus.name" disabled placeholder="短剧名称" style="width:200px;"
             class="input-with-select">
           </el-input>
+          <el-icon class="ml-3 cursor-pointer" @click="chooseDel">
+            <Delete />
+          </el-icon>
         </div>
         <div>
           <el-button type="primary" size="default" @click="chooseShort">选择短剧</el-button>
@@ -44,7 +47,7 @@
 
 <script lang="ts" setup>
 import videoList from './videoList.vue';
-import { Close } from '@element-plus/icons-vue';
+import { Close, Delete } from '@element-plus/icons-vue';
 import { FormInstance } from 'element-plus';
 import {
   operationBannerEdit,
@@ -71,6 +74,9 @@ const init = () => {
   })
 }
 
+const chooseDel = () => {
+  formCallback.value.duanjus = ''
+}
 const fileSuccess = (e) => {
   console.log(e);
   formCallback.value.img_url = e;
@@ -97,13 +103,13 @@ const submitForm = (formEl: FormInstance | undefined) => {
       if (valid) {
         const params = {
           title: formCallback.value.title,
-          video_id: formCallback.value.duanjus.id,
+          video_id: formCallback.value.duanjus?.id,
           miniprogram_type: formCallback.value.miniprogram_type,
           sort: formCallback.value.sort,
           img_url: formCallback.value.img_url,
           status: formCallback.value.status,
         }
-        if (props.primary.id) {
+        if (props.primary?.id) {
           operationBannerEdit(formCallback.value.id, params).then(res => {
             ElMessage.success(res.message)
             emit('close')
@@ -113,8 +119,8 @@ const submitForm = (formEl: FormInstance | undefined) => {
             ElMessage.success(res.message)
             emit('close')
           })
-          loading.value = false;
         }
+        loading.value = false;
       } else {
         loading.value = false;
       }
@@ -127,6 +133,8 @@ if (props.primary.id) {
   formCallback.value = JSON.parse(JSON.stringify(props.primary))
   formCallback.value.duanjus = props.primary.videoInfo
   formCallback.value.fileList = [{ uid: props.primary.id, url: props.primary.img_url }]
+} else {
+  formCallback.value.fileList = []
 }
 onMounted(() => {
   init()

+ 12 - 5
src/views/pageLayout/viewpagerPageManage/form/videoList.vue

@@ -11,6 +11,9 @@
           <el-input v-model="multipleSelection.name" :disabled="true" placeholder="短剧名称" style="width:300px;"
             class="input-with-select">
           </el-input>
+          <el-icon class="ml-3 cursor-pointer" @click="chooseDel">
+            <Delete />
+          </el-icon>
         </el-form-item>
       </div>
     </el-card>
@@ -29,15 +32,15 @@
             @change="handleCascaderChange" />
         </el-form-item>
         <el-form-item label="微信审核状态" prop="wechatPass">
-          <el-select v-model="query.wechatPass" disabled filterable clearable placeholder="请选择微信审核状态">
+          <el-select v-model="query.wechatPass" filterable clearable placeholder="请选择微信审核状态">
             <el-option v-for="item in wxstatusOptions" :key="item.value" :label="item.label" :value="item.value" />
           </el-select>
         </el-form-item>
       </template>
     </Search>
     <div class="table-default">
-      <el-table :data="tableData" ref="multipleTableRef" height="380px" highlight-current-row class="mt-3"
-        v-loading="loading" row-key="id" @current-change="handleCurrentChange">
+      <el-table :data="tableData" ref="multipleTableRef" height="380px" class="mt-3" v-loading="loading" row-key="id"
+        @current-change="handleCurrentChange">
         <el-table-column>
           <template #default="scope">
             <el-radio class="radio" v-model="selVal" :label="scope.row.id"><span></span></el-radio>
@@ -123,7 +126,7 @@
 
 <script lang="ts" setup>
 import { downloadImage } from '@/utils/index'
-import { InfoFilled } from '@element-plus/icons-vue';
+import { InfoFilled, Delete } from '@element-plus/icons-vue';
 import { provide } from 'vue'
 import { useGetList } from '@/hook/curd/useGetList';
 import { useDestroy } from '@/hook/curd/useDestroy';
@@ -173,6 +176,10 @@ const dowload = (e: object) => {
 
 const tableData = computed(() => data.value?.data);
 
+const chooseDel = () => {
+  multipleSelection.value = ''
+  selVal.value = ''
+}
 const handleCurrentChange = (val: any) => {
   if (rowSelectFlag.value) return
   multipleSelection.value = val;
@@ -190,7 +197,7 @@ if (props.primary) {
 }
 
 onMounted(() => {
-  query.value = Object.assign({ page: query.value.page, limit: query.value.limit, shelfType: 2 });
+  query.value = Object.assign({ page: query.value.page, limit: query.value.limit, shelfType: 2, wechatPass: 1 });
   initType()
   search();
 });

+ 7 - 5
src/views/pageLayout/viewpagerPageManage/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="table-default">
-    <div class="pt-5 pl-2" v-action="'operation.FirstPage.add'">
+    <div class="pt-5 pl-2" v-action="'operation.Banner.add'">
       <el-button type="primary" size="default" @click="openForm(null)">新增</el-button>
     </div>
     <el-table :data="tableData" class="mt-3" v-loading="loading">
@@ -18,7 +18,7 @@
       </el-table-column>
       <el-table-column label="小程序类型" prop="miniprogram_type_text">
       </el-table-column>
-      <el-table-column label="状态" v-action="'operation.FirstPage.enableStatus'">
+      <el-table-column label="状态" v-action="'operation.Banner.updateStatus'">
         <template #default="scope">
           <div>
             <el-switch v-model="scope.row.status" @change="switchStatus(scope.row)" :active-value="1" :inactive-value="0">
@@ -29,10 +29,10 @@
       <el-table-column label="操作">
         <template #default="scope">
           <el-button link type="primary" size="small" @click="handleEdit(scope.row)"
-            v-action="'operation.FirstPage.setConfig'">编辑</el-button>
+            v-action="'operation.Banner.edit'">编辑</el-button>
           <br />
           <el-button link type="primary" size="small" @click="handleDel(scope.row)"
-            v-action="'operation.FirstPage.setConfig'">删除</el-button>
+            v-action="'operation.Banner.del'">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -77,8 +77,10 @@ const closeType = (type: string) => {
 const switchStatus = (data: object) => {
   operationBannerEditStatus(data.id, { status: data.status }).then(res => {
     ElMessage.success(res.message)
+    search()
+  }).catch(e => {
+    search()
   })
-  search()
 }
 
 const handleDel = (row: object) => {