From 7a56036c8875d650f8380aed23a0db2b9a6589e7 Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Wed, 31 Aug 2022 00:49:45 +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 --- .../AMap/src/components/MapTaskModal.vue | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/src/components/AMap/src/components/MapTaskModal.vue b/src/components/AMap/src/components/MapTaskModal.vue index bbe15d0..708db2f 100644 --- a/src/components/AMap/src/components/MapTaskModal.vue +++ b/src/components/AMap/src/components/MapTaskModal.vue @@ -2,6 +2,7 @@ @@ -63,15 +64,15 @@ /** 类型规范统一声明定义区域 */ interface WindowState { - taskOrdinaryCurrentEditKeyRef: string; - taskPresetCurrentEditKeyRef: string; + taskOrdinaryCurrentEditRowRef: Nullable; + taskPresetCurrentEditRowRef: Nullable; mapData: MapData; } /** 通用变量统一声明区域 */ const state = reactive({ - taskOrdinaryCurrentEditKeyRef: '', - taskPresetCurrentEditKeyRef: '', + taskOrdinaryCurrentEditRowRef: null, + taskPresetCurrentEditRowRef: null, mapData: { name: '', courierUserId: '', @@ -200,7 +201,7 @@ return [ { label: '编辑', - disabled: state.taskOrdinaryCurrentEditKeyRef ? state.taskOrdinaryCurrentEditKeyRef !== record.key : false, + disabled: state.taskOrdinaryCurrentEditRowRef ? state.taskOrdinaryCurrentEditRowRef.key !== record.key : false, onClick: handleTaskOrdinaryEdit.bind(null, record), } ]; @@ -222,13 +223,13 @@ /** 处理普通任务表格编辑 */ function handleTaskOrdinaryEdit(record: EditRecordRow) { - state.taskOrdinaryCurrentEditKeyRef = record.key; + state.taskOrdinaryCurrentEditRowRef = record; record.onEdit?.(true); } /** 处理普通任务表格编辑取消 */ function handleTaskOrdinaryCancel(record: EditRecordRow) { - state.taskOrdinaryCurrentEditKeyRef = ''; + state.taskOrdinaryCurrentEditRowRef = null; record.onEdit?.(false, false); } @@ -237,7 +238,7 @@ const valid = await record.onValid?.(); if (valid) { const pass = await record.onEdit?.(false, true); - pass && (state.taskOrdinaryCurrentEditKeyRef = ''); + pass && (state.taskOrdinaryCurrentEditRowRef = null); } } @@ -247,7 +248,7 @@ return [ { label: '编辑', - disabled: state.taskPresetCurrentEditKeyRef ? state.taskPresetCurrentEditKeyRef !== record.key : false, + disabled: state.taskPresetCurrentEditRowRef ? state.taskPresetCurrentEditRowRef.key !== record.key : false, onClick: handleTaskPresetEdit.bind(null, record), } ]; @@ -269,13 +270,13 @@ /** 处理交接任务表格编辑 */ function handleTaskPresetEdit(record: EditRecordRow) { - state.taskPresetCurrentEditKeyRef = record.key; + state.taskPresetCurrentEditRowRef = record; record.onEdit?.(true); } /** 处理交接任务表格编辑取消 */ function handleTaskPresetCancel(record: EditRecordRow) { - state.taskPresetCurrentEditKeyRef = ''; + state.taskPresetCurrentEditRowRef = null; record.onEdit?.(false, false); } @@ -284,7 +285,7 @@ const valid = await record.onValid?.(); if (valid) { const pass = await record.onEdit?.(false, true); - pass && (state.taskPresetCurrentEditKeyRef = ''); + pass && (state.taskPresetCurrentEditRowRef = null); } } @@ -293,13 +294,23 @@ openModal(true, { row: record, courierUserId: state.mapData.courierUserId }); } + /** 处理模态框状态修改 */ + function handleModalVisibleChange (visible: boolean) { + if (!visible) { + state.taskOrdinaryCurrentEditRowRef && handleTaskOrdinaryCancel(state.taskOrdinaryCurrentEditRowRef); + state.taskPresetCurrentEditRowRef && handleTaskPresetCancel(state.taskPresetCurrentEditRowRef); + } + } + /** 处理弹出框提交 */ async function handleSubmit() { try { - setModalProps({ confirmLoading: true }); // 处理提交之前逻辑 + setModalProps({ confirmLoading: true }); const taskOrdinaryData = toRaw(getTaskOrdinaryDataSource()); const taskPresetData = toRaw(getTaskPresetDataSource()); + if (state.taskOrdinaryCurrentEditRowRef || state.taskPresetCurrentEditRowRef) return createMessage.error('表格行未保存,请检查!'); + if (taskOrdinaryData.length === 0 && taskPresetData.length === 0) return createMessage.error('表格数据不能为空!'); // 校验表格是否通过 const validateData:Promise[] = []; taskOrdinaryData.forEach(item => { @@ -309,7 +320,7 @@ validateData.push(item.onValid?.() || Promise.resolve(true)); }); const validateResult = await Promise.all(validateData); - if (!validateResult.every(item => item)) return createMessage.error('表格校验未通过,请检查!'); + if (!validateResult.every(item => item)) return createMessage.error('表格行校验未通过,请检查!'); state.mapData.mapTask = [...taskOrdinaryData, ...taskPresetData]; // 处理提交完成之后逻辑 closeModal();