From 9d75dd2168c7cc5abc1fc065e671154c6d6d39bc Mon Sep 17 00:00:00 2001 From: FLL <2162874245@qq.com> Date: Wed, 23 Jul 2025 20:50:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../costManagement/costItemSetting/data.ts | 4 +- .../customerService/centerConsole/index.vue | 31 ++++--- .../contingenPlan/contingenPlan-detail.vue | 31 ++++++- .../customerService/contingenPlan/data.ts | 4 +- .../customerService/contingenPlan/index.vue | 55 ++++++++++++- .../customerService/feedbacks/index.vue | 10 +-- .../property/customerService/notices/data.ts | 81 ++++++++++--------- .../customerService/notices/index.vue | 40 ++++----- .../notices/notices-detail.vue | 60 ++++++++++++++ .../customerService/notices/notices-modal.vue | 38 ++++++++- 10 files changed, 266 insertions(+), 88 deletions(-) create mode 100644 apps/web-antd/src/views/property/customerService/notices/notices-detail.vue diff --git a/apps/web-antd/src/views/property/costManagement/costItemSetting/data.ts b/apps/web-antd/src/views/property/costManagement/costItemSetting/data.ts index 1a81f642..0cb913d5 100644 --- a/apps/web-antd/src/views/property/costManagement/costItemSetting/data.ts +++ b/apps/web-antd/src/views/property/costManagement/costItemSetting/data.ts @@ -207,13 +207,13 @@ export const modalSchema: FormSchemaGetter = () => [ { label: '计费单价', fieldName: 'unitPrice', - component: 'Input', + component: 'InputNumber', rules: 'required', }, { label: '附加费', fieldName: 'surcharge', - component: 'Input', + component: 'InputNumber', rules: 'required', }, ]; diff --git a/apps/web-antd/src/views/property/customerService/centerConsole/index.vue b/apps/web-antd/src/views/property/customerService/centerConsole/index.vue index 2be3601d..e82aae92 100644 --- a/apps/web-antd/src/views/property/customerService/centerConsole/index.vue +++ b/apps/web-antd/src/views/property/customerService/centerConsole/index.vue @@ -52,16 +52,19 @@ async function fetchWorkOrderCount() { const satisfactionLevel = ref(); const { renderEcharts: renderSatisfactionLevel } = useEcharts(satisfactionLevel); async function fetchSatisfactionLevel() { + seriesData.value = board.value.satisfactionRateList.map(item => { + return `${item.value}`; + }) renderSatisfactionLevel({ title: {text: '满意度指数',left: '18px'}, tooltip: { trigger: 'item'}, radar: { indicator: [ - {name: '1星', max: 1000}, - {name: '2星', max: 1000}, - {name: '3星', max: 1000}, - {name: '4星', max: 1000}, - {name: '5星', max: 1000}, + {name: '1星'}, + {name: '2星'}, + {name: '3星'}, + {name: '4星'}, + {name: '5星'}, ] }, series: [ @@ -70,7 +73,7 @@ async function fetchSatisfactionLevel() { name: '满意度指数', data: [ { - value: [500, 400, 800, 600, 400], + value: seriesData.value, } ] } @@ -157,8 +160,12 @@ async function fetchOrderTyper() { }) } -const goToProperty = () => { - router.push('/property') +const goOrderPool = () => { + router.push('/property/business/workOrders') +} + +const goToDo = () => { + router.push('/property/business/workOrderPending') } onMounted(async () => { @@ -180,7 +187,7 @@ onMounted(async () => {
工单总数:
{{ board.workOrdersTotal }}
-
点击前往工单池
+
点击前往工单池
@@ -188,7 +195,7 @@ onMounted(async () => {
待派工单数:
{{ board.notWorkOrdersTotal }}
-
点击前往工单待办
+
点击前往工单待办
@@ -226,8 +233,8 @@ onMounted(async () => {
累计处理工单数
12
-
累计回复数
-
2
+ +
(null); - +const handleRecords = shallowRef(null); async function handleOpenChange(open: boolean) { if (!open) { return null; @@ -23,6 +30,12 @@ async function handleOpenChange(open: boolean) { const {id} = modalApi.getData() as { id: number | string }; const response = await contingenPlanInfo(id); contingenPlanIDetail.value = response; + handleRecords.value = response.contingenPlanRecordVos.map(item => ({ + status: item.status, + createTime: item.createTime, + handlerName: item.dutyPersionName + })); + console.log(handleRecords.value) modalApi.modalLoading(false); } @@ -65,5 +78,19 @@ async function handleOpenChange(open: boolean) { + + + 处理记录 + + + +

类型: +

+

时间:{{item.createTime}}

+

处理人:{{item.handlerName}}

+
+
diff --git a/apps/web-antd/src/views/property/customerService/contingenPlan/data.ts b/apps/web-antd/src/views/property/customerService/contingenPlan/data.ts index aef7829e..933e55ec 100644 --- a/apps/web-antd/src/views/property/customerService/contingenPlan/data.ts +++ b/apps/web-antd/src/views/property/customerService/contingenPlan/data.ts @@ -15,7 +15,7 @@ export const querySchema: FormSchemaGetter = () => [ label: '预案类型', }, { - component: 'Input', + component: 'ApiSelect', fieldName: 'dutyPersion', label: '责任人', }, @@ -92,7 +92,7 @@ export const columns: VxeGridProps['columns'] = [ fixed: 'right', slots: { default: 'action' }, title: '操作', - width: 180, + width: 240, }, ]; diff --git a/apps/web-antd/src/views/property/customerService/contingenPlan/index.vue b/apps/web-antd/src/views/property/customerService/contingenPlan/index.vue index e9bc09e4..5d105101 100644 --- a/apps/web-antd/src/views/property/customerService/contingenPlan/index.vue +++ b/apps/web-antd/src/views/property/customerService/contingenPlan/index.vue @@ -7,11 +7,12 @@ import { vxeCheckboxChecked, type VxeGridProps } from '#/adapter/vxe-table'; - +import {onMounted} from "vue"; import { contingenPlanExport, contingenPlanList, contingenPlanRemove, + contingenPlanUpdate } from '#/api/property/customerService/contingenPlan'; import type { ContingenPlanForm } from '#/api/property/customerService/contingenPlan/model'; import { commonDownloadExcel } from '#/utils/file/download'; @@ -19,6 +20,8 @@ import { commonDownloadExcel } from '#/utils/file/download'; import contingenPlanModal from './contingenPlan-modal.vue'; import contingenPlanDetail from './contingenPlan-detail.vue'; import { columns, querySchema } from './data'; +import {personList} from "#/api/property/resident/person"; +import {renderDictValue} from "#/utils/render"; const formOptions: VbenFormProps = { commonConfig: { @@ -93,6 +96,12 @@ async function handleDelete(row: Required) { await tableApi.query(); } +async function handleExamine(row: Required) { + row.status = '1' + await contingenPlanUpdate(row); + await tableApi.query(); +} + function handleMultiDelete() { const rows = tableApi.grid.getCheckboxRecords(); const ids = rows.map((row: Required) => row.id); @@ -112,6 +121,36 @@ function handleDownloadExcel() { fieldMappingTime: formOptions.fieldMappingTime, }); } + +async function queryPersonData() { + let params = { + pageSize: 1000, + pageNum: 1, + } + const res = await personList(params); + const options = res.rows.map((user) => ({ + label: user.userName + '-' + renderDictValue(user.gender, 'sys_user_sex') + '-' + user.phone, + value: user.id, + })); + tableApi.formApi.updateSchema([ + { + componentProps: () => ({ + options: options, + showSearch:true, + filterOption: filterOption + }), + fieldName: 'dutyPersion', + } + ]) +} + +const filterOption = (input: string, option: any) => { + return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0; +}; + +onMounted(async () => { + await queryPersonData() +})