From 7347a3842900f139875a8bdbd21c36e0d1e98634 Mon Sep 17 00:00:00 2001 From: TimSpan Date: Thu, 28 Nov 2024 14:11:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=AE=89=E5=90=8E=E5=8F=B0=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E9=A1=B9=E7=9B=AE=20=E7=9A=84=E5=A2=9E=E5=88=A0?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- policeManagement/src/global.d.ts | 5 +- .../src/types/views/serviceManagement.ts | 24 ++ .../src/views/query/publicUnit.vue | 387 +++++++++++++++++- 3 files changed, 410 insertions(+), 6 deletions(-) create mode 100644 policeManagement/src/types/views/serviceManagement.ts diff --git a/policeManagement/src/global.d.ts b/policeManagement/src/global.d.ts index cee3553..352bfeb 100644 --- a/policeManagement/src/global.d.ts +++ b/policeManagement/src/global.d.ts @@ -97,6 +97,9 @@ interface OptionsResponse { DeleteFlag: Option[]; } - +interface TypeEnum { + value: string; + label: string +} diff --git a/policeManagement/src/types/views/serviceManagement.ts b/policeManagement/src/types/views/serviceManagement.ts new file mode 100644 index 0000000..05aa507 --- /dev/null +++ b/policeManagement/src/types/views/serviceManagement.ts @@ -0,0 +1,24 @@ +import { BaseTableRowRecord } from "@/types/components/table"; + +export interface serviceProjectSaveOrUpdateParams_ extends BaseTableRowRecord { + snowFlakeId: string + enterprisesUnitId: string, + enterprisesUnitName: string, + projectManagerMiniProgramUserId: string, + projectManagerMiniProgramUserName: string, + name: string, + type: TypeEnum, + twoType: BaseEnum, + outsourceName: string, + isFiling: BaseEnum, + idNumber: string, + serviceArea: number, + buildingTotal: number, + houseTotal: number, + staffTotal: number, + securityUserTotal: number, + remark: string, + createUserName: string, + createTime: string, + enterprisesUnitAdministrativeDivisionCodes: Record +} diff --git a/policeManagement/src/views/query/publicUnit.vue b/policeManagement/src/views/query/publicUnit.vue index af77f39..71f5794 100644 --- a/policeManagement/src/views/query/publicUnit.vue +++ b/policeManagement/src/views/query/publicUnit.vue @@ -1,12 +1,29 @@ @@ -18,7 +35,7 @@ import { AutoComplete, Button, Input, message, Modal, Space } from 'ant-design-v import { debounce } from 'lodash-es' import FormProMax from '@/components/form/FormProMax.vue' import api from '@/axios' -import { ref, reactive } from 'vue' +import { ref, reactive, computed, onMounted } from 'vue' import TableProMax from '@/components/table/TableProMax.vue' import { TableProMaxProps } from '@/types/components/table/index.ts' import { ComponentExposed } from 'vue-component-type-helpers' @@ -26,13 +43,13 @@ import { dictSelectNodes } from '@/config/dict.ts' import { publicUnitPagerQueryParams } from '@/types/views/publicUnit.ts' import { FormProMaxItemOptions } from '@/types/components/form//index.ts' import { FormExpose } from 'ant-design-vue/es/form/Form' +import { serviceProjectSaveOrUpdateParams_ } from '@/types/views/serviceManagement' type _FormType = EnterprisesUnitSaveOrUpdateParams & { contactPersonInfoName?: string contactPersonInfoTelephone?: string } type TableProps = TableProMaxProps -// const reqApi: TableProps['requestApi'] = (params) => api.post('/enterprisesUnit/pager', params) //分页 const reqApi: TableProps['requestApi'] = (params) => api.post('/eu/pager', params) //分页 const tableRef = ref>(null) const columns: TableProps['columns'] = [ @@ -281,7 +298,7 @@ const saveOrUpdateEnterprisesUnit = (params: _FormType, callback: Function) => { content: () => , onOk: async () => { await _formRef.value?.validate() - // const resp = await api.post('/enterprisesUnit/saveOrUpdate', { + const resp = await api.post('/eu/add_upd', { ..._formParams.value, contactPersonInfo: { @@ -292,7 +309,6 @@ const saveOrUpdateEnterprisesUnit = (params: _FormType, callback: Function) => { message.success(resp.message) await tableRef.value?.requestGetTableData() - // reqApi(params) callback && callback() }, }) @@ -313,4 +329,365 @@ const searchFormOptions = reactive({ label: '手机号', }, }) +type _TableProps = TableProMaxProps +const isRecruitSecurityHidden = ref(false) +const visible = ref(false) +const serviceTitle = ref('新增服务项目') +const idNumberDisabled = ref(true) +const formRef = ref(null) +const enterprisesUnitId = ref('') +const netType = computed(() => { + //@ts-ignore + return formParams.value.type === 'security' ? dictSelectNodes('ServiceProjectTwoType') : dictSelectNodes('UserType' as any) +}) +const formParams = ref<{ + snowFlakeId?: string + enterprisesUnitId: string + securityUnitId: string + administrativeDivisionCodes?: null + projectManagerMiniProgramUserId?: string + projectManagerMiniProgramUserName?: string + name: string + type: string + twoType?: number + outsourceName?: string + isFiling?: number + idNumber?: string + serviceArea?: number + buildingTotal?: number + houseTotal?: number + staffTotal?: number + securityUserTotal?: number + remark?: string +}>({ + name: '', + enterprisesUnitId: null, + type: 'security', + securityUnitId: null, +}) +const securityUnitIdList = ref([]) +const formItemOptions = ref>({ + name: { + type: 'input', + label: '服务项目名称', + required: true, + }, + + securityUnitId: { + type: 'select', + label: '保安单位', + required: true, + options: securityUnitIdList, + }, + type: { + type: 'radioGroup', + label: '服务类型', + //@ts-ignore + options: dictSelectNodes('ServiceProjectType'), + required: true, + componentsProps: { + onChange: (e) => { + if (e.target?.value === 'security') { + isRecruitSecurityHidden.value = false + formParams.value.twoType = null + } else { + formParams.value.twoType = null + isRecruitSecurityHidden.value = true + } + }, + }, + }, + twoType: { + required: true, + type: 'radioGroup', + label: '二级类型', + options: netType, + componentsProps: { + onChange: (e) => { + if (e.target.value !== 'outsource') { + idNumberDisabled.value = true + formParams.value.outsourceName = '' + } else { + idNumberDisabled.value = false + } + }, + }, + }, + outsourceName: { + type: 'input', + label: '外包公司名称', + hidden: idNumberDisabled as any, + }, + isFiling: { + required: true, + type: 'radioGroup', + label: '是否备案', + options: dictSelectNodes('IsOrNot'), + }, + idNumber: { + type: 'input', + label: '保安服务许可证', + }, + serviceArea: { + type: 'inputNumber', + label: '服务区域面积', + }, + buildingTotal: { + type: 'inputNumber', + label: '楼栋数量', + componentsProps: { + formatter: (value: any) => { + return Math.round(value) ? Math.round(value) : ('' as any) + }, + min: 0, + }, + }, + houseTotal: { + type: 'inputNumber', + label: '户数', + componentsProps: { + formatter: (value: any) => { + return Math.round(value) ? Math.round(value) : ('' as any) + }, + min: 0, + }, + }, + staffTotal: { + type: 'inputNumber', + label: '工作人员数量', + componentsProps: { + formatter: (value: any) => { + return Math.round(value) ? Math.round(value) : ('' as any) + }, + min: 0, + }, + }, + securityUserTotal: { + type: 'inputNumber', + label: '保安人员数量', + componentsProps: { + formatter: (value: any) => { + return Math.round(value) ? Math.round(value) : ('' as any) + }, + min: 0, + }, + }, + remark: { + type: 'inputTextArea', + label: '备注', + }, +}) + +const _tableRef = ref>(null) +const expandedRowRender: TableProMaxProps['expandedRowRender'] = ({ record }) => { + console.log('🚀 ~ record:', record) + + const _columns: _TableProps['columns'] = [ + { + dataIndex: 'name', + title: '服务项目名称', + }, + { + dataIndex: 'type', + title: '服务类型', + customRender: ({ text }) => {text?.label}, + }, + { + dataIndex: 'twoType', + title: '二级类型', + customRender: ({ text }) => {text?.label}, + }, + { + dataIndex: 'outsourceName', + title: '外包公司名称', + customRender: ({ record }) => { + if (record.twoType.value === 'outsource') { + return record.outsourceName + } + }, + }, + { + dataIndex: 'isFiling', + title: '是否备案', + customRender: ({ text }) => {text?.label}, + }, + { + dataIndex: 'idNumber', + title: '保安服务许可证', + }, + + { + dataIndex: 'serviceArea', + title: '服务区域面积', + }, + { + dataIndex: 'buildingTotal', + title: '楼栋数量', + }, + + { + dataIndex: 'houseTotal', + title: '户数', + }, + { + dataIndex: 'staffTotal', + title: '工作人员数量', + }, + { + dataIndex: 'securityUserTotal', + title: '保安人员数量', + }, + { + dataIndex: 'remark', + title: '备注', + }, + { + dataIndex: 'createUserInfo', + title: '创建人', + customRender: ({ record }) => { + return ( +
+

创建人:{record.createUserInfo.name}

+ +

创建人单位:{record.createUserInfo.unitName}

+
+ ) + }, + }, + { + dataIndex: 'createTime', + title: '创建时间', + }, + { + dataIndex: 'opt', + title: '操作', + fixed: 'right', + + customRender({ record }) { + return ( + + { + console.log('🚀 ~ customRender ~ record:编辑回显参数', record) + visible.value = true + serviceTitle.value = '编辑服务项目' + idNumberDisabled.value = record.twoType.value !== 'outsource' + { + /* */ + } + + formParams.value.securityUnitId = record.securityUnitId //企事业单位id + + formParams.value.enterprisesUnitId = record.enterprisesUnitId //企事业单位id + formParams.value.snowFlakeId = record.snowFlakeId //id + formParams.value.projectManagerMiniProgramUserId = record.projectManagerMiniProgramUserId //项目经理小程序用户id + formParams.value.name = record.name + formParams.value.type = record.type.value //服务类型 + formParams.value.twoType = record.twoType.value //二级类型 + formParams.value.outsourceName = record.outsourceName //外包公司名称 + formParams.value.isFiling = record.isFiling.value //是否备案 + formParams.value.remark = record.remark //备注 + formParams.value.idNumber = record.idNumber //证件号(保安服务许可证/备案证 + formParams.value.serviceArea = record.serviceArea //服务区域面积 + formParams.value.buildingTotal = record.buildingTotal //楼栋数量 + formParams.value.houseTotal = record.houseTotal //户数 + formParams.value.staffTotal = record.staffTotal //工作人员数量 + formParams.value.securityUserTotal = record.securityUserTotal //保安人员数量 + + { + /* formParams.value.administrativeDivisionCodes = record.enterprisesUnitAdministrativeDivisionCodes */ + } + }} + > + 编辑 + + { + const resp = await api.delete('/m2/eu/deleteSpById', { + serviceProjectId: record.snowFlakeId, + }) + message.success(resp.message) + await _tableRef.value?.requestGetTableData() + }} + > + 删除 + + + ) + }, + }, + ] + const _reqApi: _TableProps['requestApi'] = async (params) => { + console.log('🚀 ~ params:', params) + // @ts-ignore + return await api.get('/m2/eu/listSp', { enterprisesUnitId: record?.snowFlakeId }) + } + return ( + { + return ( + + + + ) + }, + }} + /> + ) +} + +const closeModal = async () => { + visible.value = false + formParams.value = { + securityUnitId: '', + enterprisesUnitId: '', + administrativeDivisionCodes: '', + name: '', + type: 'security', + idNumber: '', + serviceArea: null, + buildingTotal: null, + houseTotal: null, + staffTotal: null, + securityUserTotal: null, + remark: '', + } + formRef.value.resetFields() + enterprisesUnitId.value = '' + serviceTitle.value = '新增服务项目' + idNumberDisabled.value = false +} + +const submit = async () => { + console.log('formParams.value____________________', formParams.value) + + await formRef.value.validate() + + const serviceProjectSaveOrUpdateParams = { ...formParams.value } + + const resp = await api.post('/m2/eu/add_upd_sp', serviceProjectSaveOrUpdateParams) + message.success(resp.message) + await _tableRef.value.requestGetTableData() + await closeModal() +} + +onMounted(async () => { + const res = await api.get('/management/listSecurityUnit') + securityUnitIdList.value = res.data +}) +const addService = function (record) { + console.log('🚀 ~ addService ~ record:', record) + formParams.value.enterprisesUnitId = record.snowFlakeId //企事业单位Id + visible.value = true +}