diff --git a/apps/web-antd/src/api/property/visitorManagement/model.d.ts b/apps/web-antd/src/api/property/visitorManagement/model.d.ts index eec10054..c687f880 100644 --- a/apps/web-antd/src/api/property/visitorManagement/model.d.ts +++ b/apps/web-antd/src/api/property/visitorManagement/model.d.ts @@ -70,6 +70,10 @@ export interface VisitorManagementVO { * 预约状态(0:待确认,1:已确认,2:已取消,3:已完成) */ serveStatus: number; + /** + * 身份证号 + */ + idCard: string; } export interface VisitorManagementForm extends BaseEntity { diff --git a/apps/web-antd/src/api/sis/accessControl/index.ts b/apps/web-antd/src/api/sis/accessControl/index.ts index e6798260..b209b5ef 100644 --- a/apps/web-antd/src/api/sis/accessControl/index.ts +++ b/apps/web-antd/src/api/sis/accessControl/index.ts @@ -2,12 +2,12 @@ import type { AccessControlForm, AccessControlQuery, AccessControlVO, -} from './model' +} from './model'; -import type { ID, IDS, PageResult, TreeNode } from '#/api/common' +import type { ID, IDS, PageResult, TreeNode } from '#/api/common'; -import { commonExport } from '#/api/helper' -import { requestClient } from '#/api/request' +import { commonExport } from '#/api/helper'; +import { requestClient } from '#/api/request'; /** * 查询门禁管理列表 @@ -18,7 +18,7 @@ export function accessControlList(params?: AccessControlQuery) { return requestClient.get>( '/sis/accessControl/list', { params }, - ) + ); } /** @@ -27,7 +27,7 @@ export function accessControlList(params?: AccessControlQuery) { * @returns 门禁管理列表 */ export function accessControlExport(params?: AccessControlQuery) { - return commonExport('/sis/accessControl/export', params ?? {}) + return commonExport('/sis/accessControl/export', params ?? {}); } /** @@ -36,7 +36,7 @@ export function accessControlExport(params?: AccessControlQuery) { * @returns 门禁管理详情 */ export function accessControlInfo(id: ID) { - return requestClient.get(`/sis/accessControl/${id}`) + return requestClient.get(`/sis/accessControl/${id}`); } /** @@ -45,7 +45,7 @@ export function accessControlInfo(id: ID) { * @returns void */ export function accessControlAdd(data: AccessControlForm) { - return requestClient.postWithMsg('/sis/accessControl', data) + return requestClient.postWithMsg('/sis/accessControl', data); } /** @@ -54,7 +54,7 @@ export function accessControlAdd(data: AccessControlForm) { * @returns void */ export function accessControlUpdate(data: AccessControlForm) { - return requestClient.putWithMsg('/sis/accessControl', data) + return requestClient.putWithMsg('/sis/accessControl', data); } /** @@ -63,7 +63,7 @@ export function accessControlUpdate(data: AccessControlForm) { * @returns void */ export function accessControlRemove(id: ID | IDS) { - return requestClient.deleteWithMsg(`/sis/accessControl/${id}`) + return requestClient.deleteWithMsg(`/sis/accessControl/${id}`); } /** @@ -71,7 +71,7 @@ export function accessControlRemove(id: ID | IDS) { * @returns void */ export function queryTree() { - return requestClient.get[]>(`/sis/accessControl/tree`) + return requestClient.get[]>(`/sis/accessControl/tree`); } /** @@ -79,5 +79,12 @@ export function queryTree() { * @returns void */ export function accessControlSync() { - return requestClient.get(`/sis/accessControl/sync`) + return requestClient.get(`/sis/accessControl/sync`); +} + +export function remoteOpenDoor(params: any) { + return requestClient.post( + `/sis/accessControl/e8/remoteOpenDoor`, + params, + ); } diff --git a/apps/web-antd/src/views/property/attendanceManagement/shiftSetting/shift-modal.vue b/apps/web-antd/src/views/property/attendanceManagement/shiftSetting/shift-modal.vue index dc2ff70d..838d5b3e 100644 --- a/apps/web-antd/src/views/property/attendanceManagement/shiftSetting/shift-modal.vue +++ b/apps/web-antd/src/views/property/attendanceManagement/shiftSetting/shift-modal.vue @@ -63,7 +63,6 @@ const [BasicModal, modalApi] = useVbenModal({ ]; } record.status = record.status?.toString(); - console.log(record); await formApi.setValues(record); } await markInitialized(); diff --git a/apps/web-antd/src/views/property/clean/cleanOrders/clean-modal.vue b/apps/web-antd/src/views/property/clean/cleanOrders/clean-modal.vue index 34527570..d534c4d0 100644 --- a/apps/web-antd/src/views/property/clean/cleanOrders/clean-modal.vue +++ b/apps/web-antd/src/views/property/clean/cleanOrders/clean-modal.vue @@ -188,7 +188,7 @@ const modalSchema = [ }, }, { - label: '联系电话', + label: '评价图片', fieldName: 'imgUrl', component: 'Input', dependencies: { @@ -196,6 +196,30 @@ const modalSchema = [ triggerFields: [''], }, }, + { + label: '签到方式', + fieldName: 'signType', + component: 'Select', + componentProps: { + options:getDictOptions('wy_bjqdfs') + }, + dependencies: { + show: () => (isReadonly.value ? true : false), + triggerFields: [''], + }, + }, + { + label: '签到图片', + fieldName: 'signImgUrl', + component: 'ImageUpload', + componentProps: { + helpMessage:false + }, + dependencies: { + show: (formValue) => (isReadonly.value&&formValue.signImgUrl ? true : false), + triggerFields: [''], + }, + }, ]; const [BasicForm, formApi] = useVbenForm({ commonConfig: { 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 95c4f82f..13a5bd7c 100644 --- a/apps/web-antd/src/views/property/customerService/centerConsole/index.vue +++ b/apps/web-antd/src/views/property/customerService/centerConsole/index.vue @@ -115,7 +115,6 @@ async function fetchOrderTyper() { const totalQuantity = board.value.satisfactionChartList.reduce((sum, item) => { return sum + Number(item.quantity || 0); }, 0); - console.log(seriesData.value) renderOrderTyper({ title: {text: '工单类型分类占比',left: '18px',top: '18px'}, tooltip: { @@ -127,7 +126,13 @@ async function fetchOrderTyper() { orient: 'vertical', icon: 'circle', itemWidth: 8, - itemHeight: 8 + itemHeight: 8, + formatter: (name) => { + const dataItem = seriesData.value.find(item => item.name === name); + const value = dataItem?.value || 0; + const percentage = totalQuantity ? ((value / totalQuantity) * 100).toFixed(1) : 0; + return `${name} ${percentage}% ${value}个`; + }, }, series: [ { diff --git a/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/index.vue b/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/index.vue index a5a30d0e..1bc29de5 100644 --- a/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/index.vue +++ b/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/index.vue @@ -154,6 +154,6 @@ const handleUpdate = (dataSet) => { - + diff --git a/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/inspectionRoute-modal.vue b/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/inspectionRoute-modal.vue index 18f22086..284f9a52 100644 --- a/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/inspectionRoute-modal.vue +++ b/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/inspectionRoute-modal.vue @@ -7,7 +7,6 @@ import { useVbenForm } from '#/adapter/form'; import { inspectionRouteAdd, inspectionRouteInfo, - inspectionRouteList, inspectionRouteUpdate } from '#/api/property/inspectionManagement/inspectionRoute'; import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; @@ -62,11 +61,14 @@ const [BasicModal, modalApi] = useVbenModal({ if (isUpdate.value && id) { const record = await inspectionRouteInfo(id); pointList.value = (record.inspectionRoutePointVoList || []).map(item => ({ + id: item.id, pointId: item.pointId ?? '', pointName: item.pointName ?? '', + startTime: item.startTime ?? '', + endTime: item.endTime ?? '', + sort: item.sort ?? '', })); await tableApi.reload(); - console.log(pointList.value,111) await formApi.setValues(record); } await markInitialized(); @@ -83,10 +85,10 @@ async function handleConfirm() { } let data = { ...cloneDeep(await formApi.getValues()), - inspectionRoutePointBoList:[pointData.value] + inspectionRoutePointBoList:[...pointList.value] } - console.log(data,333) await (isUpdate.value ? inspectionRouteUpdate(data) : inspectionRouteAdd(data)); + pointList.value = [] resetInitialized(); emit('reload'); modalApi.close(); @@ -99,9 +101,11 @@ async function handleConfirm() { async function handleClosed() { await formApi.resetForm(); + pointList.value = [] resetInitialized(); } +const pointItem = ref([]) async function queryWorkOrdersType() { let params = { pageSize: 1000, @@ -112,6 +116,10 @@ async function queryWorkOrdersType() { label: item.pointName, value: item.id, })); + pointItem.value = res.rows.map((item) => ({ + pointId: item.id, + pointName: item.pointName, + })); tableApi.formApi.updateSchema([{ componentProps: () => ({ options: options, @@ -166,7 +174,6 @@ const gridOptions: VxeGridProps = { }; const [BasicTable, tableApi] = useVbenVxeGrid({ - formOptions, gridOptions, }); @@ -180,15 +187,20 @@ function handleAdd() { } async function handleEdit(row: Required) { - pointModalApi.setData({ id: row.id }); + pointModalApi.setData({ row }); pointModalApi.open(); } -const pointData = ref({}) const handlePoint = (data) => { data.startTime = dayjs(data.startTime).format('YYYY-MM-DD HH:mm:ss') data.endTime = dayjs(data.endTime).format('YYYY-MM-DD HH:mm:ss') - pointData.value = data; + data.pointName = pointItem.value.find(item => item.pointId === data.pointId)?.pointName; + const existingIndex = pointList.value.findIndex(item => item.pointId === data.pointId); + if (existingIndex !== -1) { + pointList.value[existingIndex] = data; + } else { + pointList.value.push(data); + } }; @@ -196,7 +208,7 @@ const handlePoint = (data) => { - + - + diff --git a/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/point-modal.vue b/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/point-modal.vue index c21b83c9..34623aed 100644 --- a/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/point-modal.vue +++ b/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/point-modal.vue @@ -2,7 +2,7 @@ import { useVbenModal } from '@vben/common-ui'; import { cloneDeep } from '@vben/utils'; import { useVbenForm } from '#/adapter/form'; -import { inspectionRouteInfo } from '#/api/property/inspectionManagement/inspectionRoute'; +import dayjs from 'dayjs'; import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; import { inspectionPointList, @@ -34,6 +34,13 @@ const { onBeforeClose, markInitialized, resetInitialized } = useBeforeCloseDiff( }, ); +const props = defineProps({ + pointList: { + type: Array, + default: () => [], + }, +}); + const [BasicModal, modalApi] = useVbenModal({ class: 'w-[550px]', fullscreenButton: false, @@ -45,13 +52,14 @@ const [BasicModal, modalApi] = useVbenModal({ return null; } modalApi.modalLoading(true); + const { row } = modalApi.getData() as { row?: number | string }; + isUpdate.value = !!row; await queryWorkOrdersType() - const { id } = modalApi.getData() as { id?: number | string }; - isUpdate.value = !!id; - - if (isUpdate.value && id) { - const record = await inspectionRouteInfo(id); - await formApi.setValues(record); + if (isUpdate.value && row ){ + row.startTime = dayjs(row.startTime) + row.endTime = dayjs(row.endTime) + console.log(row,456) + await formApi.setValues(row); } await markInitialized(); @@ -89,15 +97,26 @@ async function queryWorkOrdersType() { pageNum: 1 } const res = await inspectionPointList(params) - const options = res.rows.map((item) => ({ - label: item.pointName, - value: item.id, - })); + let options = [] + if(isUpdate.value){ + options = res.rows.map((item) => ({ + label: item.pointName, + value: item.id, + })); + }else{ + const existingIds = props.pointList.map(item => item.pointId); + const filteredRows = res.rows.filter(item => !existingIds.includes(item.id)); + options = filteredRows.map((item) => ({ + label: item.pointName, + value: item.id, + })); + } formApi.updateSchema([{ componentProps: () => ({ options: options, showSearch: true, filterOption: filterOption, + disabled: isUpdate.value, }), fieldName: 'pointId', }]) diff --git a/apps/web-antd/src/views/property/visitorManagement/visitorTodo/visitorTodo-detail.vue b/apps/web-antd/src/views/property/visitorManagement/visitorTodo/visitorTodo-detail.vue index 828a3df9..16c92028 100644 --- a/apps/web-antd/src/views/property/visitorManagement/visitorTodo/visitorTodo-detail.vue +++ b/apps/web-antd/src/views/property/visitorManagement/visitorTodo/visitorTodo-detail.vue @@ -34,13 +34,19 @@ async function handleOpenChange(open: boolean) {