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