Переглянути джерело

bug-703:穴位详情:无 详情不能和其他选项同时选中

张田田 6 днів тому
батько
коміт
cb04690ff5
1 змінених файлів з 19 додано та 0 видалено
  1. 19 0
      src/views/business/components/AcupointTable.vue

+ 19 - 0
src/views/business/components/AcupointTable.vue

@@ -747,6 +747,7 @@ export default {
     },
   },
   created() {
+    this._prevDetailTypes = [...this.innerDetailTypes];
     this.getAcupointList();
     this.getMeridianList();
     this.getEarAcupointList();
@@ -789,6 +790,7 @@ export default {
         this.detailTables = JSON.parse(JSON.stringify(data.detailTables));
         this.innerIsEditable = data.innerIsEditable;
         this.innerDetailTypes = [...data.innerDetailTypes];
+        this._prevDetailTypes = [...data.innerDetailTypes];
         this.detailRequired = data.detailRequired;
         this.operationGuide = data.operationGuide;
         this.singleCount = data.singleCount;
@@ -804,6 +806,7 @@ export default {
         this.detailTables = def.detailTables;
         this.innerIsEditable = def.innerIsEditable;
         this.innerDetailTypes = def.innerDetailTypes;
+        this._prevDetailTypes = [...def.innerDetailTypes];
         this.detailRequired = def.detailRequired;
         this.operationGuide = def.operationGuide;
         this.singleCount = def.singleCount;
@@ -1061,6 +1064,22 @@ export default {
       this.$emit("update:isEditable", val);
     },
     onDetailTypesChange(val) {
+      // 无详情 与其他选项不能同时选中
+      const NO_DETAIL = "无详情";
+      const lastSelected = val.length > this._prevDetailTypes?.length
+        ? val.find((v) => !this._prevDetailTypes.includes(v))
+        : null;
+
+      if (lastSelected === NO_DETAIL) {
+        // 选中了"无详情",取消其他所有选项
+        val = [NO_DETAIL];
+      } else if (lastSelected && lastSelected !== NO_DETAIL && val.includes(NO_DETAIL)) {
+        // 选中了其他选项,取消"无详情"
+        val = val.filter((v) => v !== NO_DETAIL);
+      }
+      this.innerDetailTypes = val;
+      this._prevDetailTypes = [...val];
+
       val.forEach((type) => {
         const table = this.detailTables[type];
         const isEmpty = !table || table.length === 0;