hookehuyr

点击画布和关闭弹框时检查表单数据是否修改过

...@@ -587,6 +587,7 @@ export default { ...@@ -587,6 +587,7 @@ export default {
587 type: null, // 操作方式 0:仅保存流程说明 1:删除,2:启用 587 type: null, // 操作方式 0:仅保存流程说明 1:删除,2:启用
588 }, 588 },
589 showConfirmation: true, 589 showConfirmation: true,
590 + node_attr: {},
590 }); 591 });
591 592
592 /** 593 /**
...@@ -1203,6 +1204,24 @@ export default { ...@@ -1203,6 +1204,24 @@ export default {
1203 1204
1204 state.more_attr = data.property; // 更多属性 1205 state.more_attr = data.property; // 更多属性
1205 1206
1207 + // 初始化表单数据比较结构
1208 + state.field_extend.forEach(ele => {
1209 + state.field_auths.forEach(auth => {
1210 + if (ele.field_id === auth.field_id) {
1211 + ele.field_extend.visibled = auth.visible.checked;
1212 + ele.field_extend.editabled = auth.editable.checked;
1213 + ele.field_extend.readonly = auth.editable.disabled;
1214 + }
1215 + })
1216 + });
1217 + // 储存原始节点属性
1218 + state.node_attr = {
1219 + name: _.cloneDeep(state.node_name),
1220 + user: _.cloneDeep(state.userTags),
1221 + field: _.cloneDeep(state.field_extend),
1222 + property: _.cloneDeep(state.more_attr)
1223 + }
1224 +
1206 // 开始节点不显示审批意见 1225 // 开始节点不显示审批意见
1207 if (model_id ==='start-node') { 1226 if (model_id ==='start-node') {
1208 state.more_attr = state.more_attr.filter((ele: any) => { 1227 state.more_attr = state.more_attr.filter((ele: any) => {
...@@ -1262,7 +1281,24 @@ export default { ...@@ -1262,7 +1281,24 @@ export default {
1262 * 1281 *
1263 */ 1282 */
1264 function cancel() { 1283 function cancel() {
1265 - editor.closeModel() 1284 + if (!checkFormEdited()) {
1285 + ElMessageBox.confirm(
1286 + '您刚才修改过表单内容还未保存,是否离开?',
1287 + '温馨提示',
1288 + {
1289 + confirmButtonText: '离开',
1290 + cancelButtonText: '取消',
1291 + type: 'warning',
1292 + }
1293 + )
1294 + .then(() => {
1295 + editor.closeModel()
1296 + })
1297 + .catch(() => {
1298 + })
1299 + } else {
1300 + editor.closeModel()
1301 + }
1266 } 1302 }
1267 1303
1268 /** 1304 /**
...@@ -1502,8 +1538,39 @@ export default { ...@@ -1502,8 +1538,39 @@ export default {
1502 } 1538 }
1503 1539
1504 function onClickCanvas(e: myEvent) { 1540 function onClickCanvas(e: myEvent) {
1505 - state.detailModel = null; 1541 + if (!checkFormEdited()) {
1506 - editor.closeModel() 1542 + ElMessageBox.confirm(
1543 + '您刚才修改过表单内容还未保存,是否离开?',
1544 + '温馨提示',
1545 + {
1546 + confirmButtonText: '离开',
1547 + cancelButtonText: '取消',
1548 + type: 'warning',
1549 + }
1550 + )
1551 + .then(() => {
1552 + state.detailModel = null;
1553 + editor.closeModel()
1554 + })
1555 + .catch(() => {
1556 + })
1557 + } else {
1558 + state.detailModel = null;
1559 + editor.closeModel()
1560 + }
1561 + }
1562 +
1563 + const checkFormEdited = () => { // 检查表单是否修改过内容
1564 + state.field_extend.forEach(ele => {
1565 + state.field_auths.forEach(auth => {
1566 + if (ele.field_id === auth.field_id) {
1567 + ele.field_extend.visibled = auth.visible.checked;
1568 + ele.field_extend.editabled = auth.editable.checked;
1569 + ele.field_extend.readonly = auth.editable.disabled;
1570 + }
1571 + })
1572 + });
1573 + return _.isEqual(state.node_attr, {name: state.node_name, user: state.userTags, field: state.field_extend, property: state.more_attr})
1507 } 1574 }
1508 1575
1509 /** 1576 /**
......