From f35680f356168af8d4a3d5f34456e561af40fbba Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 24 十二月 2025 13:15:10 +0800
Subject: [PATCH] feat: 接口

---
 src/views/OperationManage/OperationManageList.vue |  178 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 122 insertions(+), 56 deletions(-)

diff --git a/src/views/OperationManage/OperationManageList.vue b/src/views/OperationManage/OperationManageList.vue
index 9ff904a..c7be21d 100644
--- a/src/views/OperationManage/OperationManageList.vue
+++ b/src/views/OperationManage/OperationManageList.vue
@@ -5,45 +5,31 @@
         <template #query>
           <QueryFilterItem>
             <FieldSelect
-              v-model="extraParamState.pageType"
+              v-model="extraParamState.page"
               placeholder="骞垮憡椤甸潰"
-              :value-enum="[]"
+              :value-enum="EnumAdvertisementPageText"
               clearable
-              @change="getAdvertiseOnShowList()"
+              @change="getList()"
             />
           </QueryFilterItem>
           <QueryFilterItem tip-content="鐘舵��">
             <FieldRadio
               v-model="extraParamState.status"
-              :value-enum="[
-                { value: true, label: '灞曠ず涓�' },
-                { value: false, label: '宸蹭笅鏋�' },
-              ]"
+              :value-enum="EnumAdvertisementStatusText"
               buttonStyle
               showAllBtn
-              @change="getAdvertiseOnShowList()"
+              @change="getList()"
             />
           </QueryFilterItem>
-          <QueryFilterItem tip-content="骞垮憡寮�濮嬫椂闂�">
+          <QueryFilterItem tip-content="骞垮憡鏃堕棿">
             <FieldDatePicker
-              v-model="extraParamState.beginDate"
+              v-model="extraParamState.time"
               type="daterange"
               range-separator="~"
-              start-placeholder="寮�濮嬫棩鏈�"
-              end-placeholder="缁撴潫鏃ユ湡"
+              start-placeholder="寮�濮嬫椂闂�"
+              end-placeholder="缁撴潫鏃堕棿"
               clearable
-              @change="getAdvertiseOnShowList()"
-            ></FieldDatePicker>
-          </QueryFilterItem>
-          <QueryFilterItem tip-content="骞垮憡缁撴潫鏃堕棿">
-            <FieldDatePicker
-              v-model="extraParamState.endDate"
-              type="daterange"
-              range-separator="~"
-              start-placeholder="寮�濮嬫棩鏈�"
-              end-placeholder="缁撴潫鏃ユ湡"
-              clearable
-              @change="getAdvertiseOnShowList()"
+              @change="getList()"
             ></FieldDatePicker>
           </QueryFilterItem>
           <QueryFilterItem>
@@ -51,7 +37,7 @@
               v-model="extraParamState.keyword"
               style="width: 260px"
               placeholder="骞垮憡鍚嶇О"
-              @on-click-search="getAdvertiseOnShowList"
+              @on-click-search="getList"
             >
             </SearchInput>
           </QueryFilterItem>
@@ -69,6 +55,8 @@
       <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
       </ProTableV2>
     </AppContainer>
+    <AddOrEditAdvertisementDialog v-bind="dialogProps"></AddOrEditAdvertisementDialog>
+    <LogDialog v-bind="dialogLogProps"></LogDialog>
   </LoadingLayout>
 </template>
 
@@ -89,10 +77,13 @@
   UploadUserFile,
 } from '@bole-core/components';
 import { useAccess } from '@/hooks';
-import { FlexWorkerEleSignEnumText } from '@/constants';
+import { EnumAdvertisementPageText, EnumAdvertisementStatusText } from '@/constants';
 import { ModelValueType } from 'element-plus';
-import { format, setOSSLink, convertApi2FormUrl, convertFormUrl2Api } from '@/utils';
+import { format, convertApi2FormUrlOnlyOne } from '@/utils';
 import { Message } from '@bole-core/core';
+import * as advertisementServices from '@/services/api/advertisement';
+import AddOrEditAdvertisementDialog from './components/AddOrEditAdvertisementDialog.vue';
+import LogDialog from './components/LogDialog.vue';
 
 defineOptions({
   name: 'OperationManageList',
@@ -103,17 +94,19 @@
   takeOnBtn: {
     emits: { onClick: (role) => setAdvertiseOnShowStatus(role) },
     extraProps: {
-      hide: (row) => row.status,
+      hide: (row: API.GetAdvertisementsQueryResultItem) =>
+        row.status === EnumAdvertisementStatus.InProcess,
     },
   },
   takeDownBtn: {
     emits: { onClick: (role) => setAdvertiseOnShowStatus(role) },
     props: { type: 'danger' },
     extraProps: {
-      hide: (row) => !row.status,
+      hide: (row: API.GetAdvertisementsQueryResultItem) =>
+        row.status === EnumAdvertisementStatus.Stopped,
     },
   },
-  logBtn: { emits: { onClick: (role) => openDialog(role) } },
+  logBtn: { emits: { onClick: (role) => openLogDialog(role) } },
 };
 
 const { checkSubModuleItemShow, column, operationBtns } = useAccess({
@@ -127,12 +120,12 @@
 const state = reactive({ ...BaseState });
 
 onMounted(async () => {
-  await getAdvertiseOnShowList();
+  await getList();
   state.loading = false;
 });
 
 const {
-  getDataSource: getAdvertiseOnShowList,
+  getDataSource: getList,
   proTableProps,
   paginationState,
   extraParamState,
@@ -140,15 +133,19 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetUserClientForBackInput = {
+      let params: API.GetAdvertisementsQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
-        searchKeys: extraParamState.keyword,
+        keywords: extraParamState.keyword,
+        beginTime: format(extraParamState.time[0], 'YYYY-MM-DD 00:00:00'),
+        endTime: format(extraParamState.time[1], 'YYYY-MM-DD 23:59:59'),
+        page: extraParamState.page,
+        status: extraParamState.status,
       };
-      let res = await flexEnterpriseWokerServices.getUserClientList(params, {
+      let res = await advertisementServices.getAdvertisements(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -157,27 +154,40 @@
   {
     defaultExtraParams: {
       keyword: '',
-      pageType: '' as any as number,
-      status: '' as any as boolean,
-      beginDate: [] as unknown as ModelValueType,
+      page: '' as any as EnumAdvertisementPage,
+      status: '' as any as EnumAdvertisementStatus,
+      time: [] as unknown as ModelValueType,
       endDate: [] as unknown as ModelValueType,
-      orderInput: [{ property: 'sort', order: EnumPagedListOrder.Desc }],
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
     },
-    columnsRenderProps: {},
+    columnsRenderProps: {
+      page: { type: 'enum', valueEnum: EnumAdvertisementPageText },
+      status: { type: 'enum', valueEnum: EnumAdvertisementStatusText },
+      url: {
+        type: 'link',
+        text: (row: API.GetAdvertisementsQueryResultItem) => (row.url ? '鏌ョ湅' : ''),
+      },
+      file: { type: 'url' },
+      beginTime: { type: 'date', format: 'YYYY-MM-DD' },
+      endTime: { type: 'date', format: 'YYYY-MM-DD' },
+    },
   }
 );
 
-function openDialog(row?) {
+async function openDialog(row?: API.GetAdvertisementsQueryResultItem) {
   if (row) {
-    handleEdit({
-      id: row.id,
-      pageType: row.pageType,
-      advertiseName: row.advertiseName,
-      advertiseLink: row.advertiseLink,
-      imgInfo: row.imgInfo.map((x) => convertApi2FormUrl(x.imgUrl)),
-      date: [format(row.advertiseBeginDate), format(row.advertiseEndDate)],
-      sort: row.sort,
-    });
+    const res = await getAdvertisement(row.id);
+    if (res) {
+      handleEdit({
+        id: res.id,
+        page: res.page,
+        name: res.name,
+        url: res.url,
+        file: res.file ? convertApi2FormUrlOnlyOne(res.file) : [],
+        time: [format(res.beginTime), format(res.endTime)],
+        sort: res.sort,
+      });
+    }
   } else {
     handleAdd();
   }
@@ -188,23 +198,79 @@
   defaultFormParams: {
     title: '鏂板骞垮憡',
     id: '',
-    pageType: '' as any as number,
-    advertiseName: '',
-    advertiseLink: '',
-    imgInfo: [] as UploadUserFile[],
-    date: [] as unknown as ModelValueType,
+    page: '' as any as EnumAdvertisementPage,
+    name: '',
+    url: '',
+    file: [] as UploadUserFile[],
+    time: [] as unknown as ModelValueType,
     sort: 0,
   },
   editTitle: '缂栬緫骞垮憡',
+  closeAfterConfirm: false,
 });
 
 async function handleAddOrEdit() {
   try {
+    let params: API.SaveAdvertisementCommand = {
+      page: editForm.page,
+      name: editForm.name,
+      url: editForm.url,
+      file: editForm.file?.[0]?.url,
+      beginTime: format(editForm.time[0], 'YYYY-MM-DD 00:00:00'),
+      endTime: format(editForm.time[1], 'YYYY-MM-DD 23:59:59'),
+      sort: editForm.sort,
+    };
+    if (editForm.id) {
+      params.id = editForm.id;
+    }
+    let res = await advertisementServices.saveAdvertisement(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+      dialogState.dialogVisible = false;
+    }
   } catch (error) {}
 }
 
-async function setAdvertiseOnShowStatus(row) {
+const {
+  dialogProps: dialogLogProps,
+  handleAdd: handleLogAdd,
+  editForm: editLogForm,
+} = useFormDialog({
+  defaultFormParams: {
+    id: '',
+  },
+});
+
+function openLogDialog(row: API.GetAdvertisementsQueryResultItem) {
+  handleLogAdd({
+    id: row.id,
+  });
+}
+
+async function getAdvertisement(id: string) {
   try {
+    return await advertisementServices.getAdvertisement({ id: id });
+  } catch (error) {}
+}
+
+async function setAdvertiseOnShowStatus(row: API.GetAdvertisementsQueryResultItem) {
+  try {
+    await Message.tipMessage(
+      `纭瑕�${row.status === EnumAdvertisementStatus.InProcess ? '涓嬫灦' : '涓婃灦'}璇ュ箍鍛婂悧锛焋
+    );
+    let params: API.SetAdvertisementStatusCommand = {
+      ids: [row.id],
+      status:
+        row.status === EnumAdvertisementStatus.InProcess
+          ? EnumAdvertisementStatus.Stopped
+          : EnumAdvertisementStatus.InProcess,
+    };
+    let res = await advertisementServices.setAdvertisementStatus(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+    }
   } catch (error) {}
 }
 </script>

--
Gitblit v1.10.0