From 6ce0533e1e78d5b2c9e00dfe9a2b889608a79f7d Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Wed, 31 Aug 2022 00:10:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=9C=B0=E5=9B=BE=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/MapTaskPresetModal.vue | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/components/AMap/src/components/MapTaskPresetModal.vue b/src/components/AMap/src/components/MapTaskPresetModal.vue index 2da457c..2beed7b 100644 --- a/src/components/AMap/src/components/MapTaskPresetModal.vue +++ b/src/components/AMap/src/components/MapTaskPresetModal.vue @@ -2,6 +2,7 @@ @@ -52,7 +53,7 @@ /** 类型规范统一声明定义区域 */ interface WindowState { - currentEditKeyRef: string; + currentEditRowRef: Nullable; taskPresetRow: Recordable; courierUserId: string; modelRef: Recordable; @@ -61,7 +62,7 @@ /** 通用变量统一声明区域 */ const state = reactive({ - currentEditKeyRef: '', + currentEditRowRef: null, taskPresetRow: {}, courierUserId: '', orgList: [], @@ -176,7 +177,7 @@ return [ { label: '编辑', - disabled: state.currentEditKeyRef ? state.currentEditKeyRef !== record.key : false, + disabled: state.currentEditRowRef ? state.currentEditRowRef.key !== record.key : false, onClick: handleTaskTurnToDoEdit.bind(null, record), } ]; @@ -198,13 +199,13 @@ /** 处理转办任务表格编辑 */ function handleTaskTurnToDoEdit(record: EditRecordRow) { - state.currentEditKeyRef = record.key; + state.currentEditRowRef = record; record.onEdit?.(true); } /** 处理转办任务表格编辑取消 */ function handleTaskTurnToDoCancel(record: EditRecordRow) { - state.currentEditKeyRef = ''; + state.currentEditRowRef = null; record.onEdit?.(false, false); } @@ -213,17 +214,26 @@ const valid = await record.onValid?.(); if (valid) { const pass = await record.onEdit?.(false, true); - pass && (state.currentEditKeyRef = ''); + pass && (state.currentEditRowRef = null); + } + } + + /** 处理模态框状态修改 */ + function handleModalVisibleChange (visible: boolean) { + if (!visible && state.currentEditRowRef) { + handleTaskTurnToDoCancel(state.currentEditRowRef); } } /** 处理弹出框提交 */ async function handleSubmit() { try { - setModalProps({ confirmLoading: true }); // 处理提交之前逻辑 - const formData = await formElRef.value.validate(); + setModalProps({ confirmLoading: true }); const mapTaskPresetData = toRaw(getDataSource()); + if (state.currentEditRowRef) return createMessage.error('表格行未保存,请检查!'); + if (mapTaskPresetData.length === 0) return createMessage.error('表格数据不能为空!'); + const formData = await formElRef.value.validate(); const validateData:Promise[] = []; // 清除旧的上级医检医院 mapTaskPresetData.forEach(item => { @@ -236,11 +246,11 @@ } }); const validateResult = await Promise.all(validateData); - if (!validateResult.every(item => item)) return createMessage.error('表格校验未通过,请检查!'); + if (!validateResult.every(item => item)) return createMessage.error('表格行校验未通过,请检查!'); // 自动填充交接最终到达上级医检医院 const lastElement = mapTaskPresetData[mapTaskPresetData.length - 1]; const option = state.orgList.find(item => item.value == formData.destinationPresetId); - if (option) { + if (option && lastElement) { lastElement.destinationPresetId = option.value; lastElement.destinationPresetName = option.label; lastElement.destinationPresetlng = option.mapLng;