CzRger 1 year ago
parent
commit
d3c7fa5c8c

+ 16 - 30
src/components/cus/CusForm.vue

@@ -38,9 +38,12 @@ export default defineComponent({
     const router = useRouter();
     const route = useRoute();
     const that = (getCurrentInstance() as ComponentInternalInstance).appContext.config.globalProperties
-    const state = reactive({})
+    const state = reactive({
+      formChildrenMap: new Map()
+    })
     const ref_cusForm: any = ref(null)
     provide('element-loading-background', props.elementLoadingBackground)
+    provide('cus-form-children-map', state.formChildrenMap)
     let _formView: any = ref(props.formView)
     watch(() => props.formView, (n) => {
       _formView.value = n
@@ -49,24 +52,16 @@ export default defineComponent({
     const submit = () => {
       return new Promise((resolve, reject) => {
         const nodes: any = [];
-        const handleItem = (itemVue: any) => {
-          const _itemValue = itemVue?.__vueParentComponent?.parent
-          if (_itemValue?.type.name === "CusFormColumn") {
-            const errorMessage = _itemValue.setupState.handleValidate()
-            if (errorMessage) {
-              nodes.push({
-                node: _itemValue,
-                message: errorMessage
-              });
-            }
-          }
-          if (itemVue.childNodes && itemVue.childNodes.length > 0) {
-            itemVue.childNodes.forEach((v: any) => {
-              handleItem(v);
+        state.formChildrenMap.forEach((v: any, k: string) => {
+          const errorMessage = v.handleValidate()
+          if (errorMessage) {
+            nodes.push({
+              uuid: k,
+              node: v,
+              message: errorMessage
             });
           }
-        };
-        handleItem(ref_cusForm?.value?.$el);
+        })
         if (nodes.length > 0) {
           reject(nodes);
         } else {
@@ -77,20 +72,11 @@ export default defineComponent({
     const handleEnter = () => {
       emit('handleEnter')
     }
+    provide('handle-enter', handleEnter)
     const reset = () => {
-      const handleItem = (itemVue: any) => {
-        const _itemValue = itemVue?.__vueParentComponent?.parent
-        if (_itemValue?.type.name === "CusFormColumn") {
-          _itemValue.setupState.reset()
-        } else {
-          if (itemVue.childNodes && itemVue.childNodes.length > 0) {
-            itemVue.childNodes.forEach((v: any) => {
-              handleItem(v);
-            });
-          }
-        }
-      };
-      handleItem(ref_cusForm?.value?.$el);
+      state.formChildrenMap.forEach((v: any, k: string) => {
+        v.reset()
+      })
     }
     return {
       ...toRefs(state),

+ 28 - 10
src/components/cus/CusFormColumn.vue

@@ -238,7 +238,8 @@ import {
   getCurrentInstance,
   ComponentInternalInstance,
   toRefs,
-  nextTick
+  nextTick,
+  inject, onUnmounted, onBeforeUnmount
 } from 'vue'
 import {useStore} from 'vuex'
 import {useRouter, useRoute} from 'vue-router'
@@ -258,6 +259,7 @@ import DeptCom from './cus-form-link/dept.vue'
 import UploadCom from './cus-form-link/upload.vue'
 import NumberCom from './cus-form-link/number.vue'
 import TreeSelectCom from './cus-form-link/tree-select.vue'
+import { v4 } from "uuid";
 
 export default defineComponent({
   name: 'CusFormColumn',
@@ -304,7 +306,8 @@ export default defineComponent({
     const route = useRoute();
     const that = (getCurrentInstance() as ComponentInternalInstance).appContext.config.globalProperties
     const state = reactive({
-      errorMessage: null
+      errorMessage: null,
+      uuid: ''
     })
     const ref_cusFormColumn: any = ref(null)
     const isValue = (val: any) => {
@@ -364,15 +367,9 @@ export default defineComponent({
       }
       return state.errorMessage
     }
+    const handleEnterFunc = inject('handle-enter', () => {})
     const handleEnter = () => {
-      const find = (itemVue: any) => {
-        if (itemVue?.type.name === "CusForm") {
-          itemVue.setupState.handleEnter()
-        } else {
-          find(itemVue.parent)
-        }
-      }
-      find(ref_cusFormColumn?.value?.$el?.__vueParentComponent)
+      handleEnterFunc?.()
     }
     const reset = () => {
       state.errorMessage = null
@@ -390,6 +387,27 @@ export default defineComponent({
         p.style.marginBottom = '18px'
       }
     })
+    onMounted(() => {
+      state.uuid = v4()
+      const formChildrenMap: any = inject('cus-form-children-map', new Map())
+      let flag = true
+      const deep = (dom) => {
+        if (dom.className === 'hidden-columns') {
+          flag = false
+        }
+        if (dom.parentElement) {
+          deep(dom.parentElement)
+        }
+      }
+      deep(ref_cusFormColumn.value.$parent.$el)
+      if (flag) {
+        formChildrenMap.set(state.uuid, ref_cusFormColumn.value.$parent)
+      }
+    })
+    onBeforeUnmount(() => {
+      const formChildrenMap: any = inject('cus-form-children-map', new Map())
+      formChildrenMap.delete(state.uuid)
+    })
     return {
       ...toRefs(state),
       handleValidate,

+ 1 - 0
src/views/gis/business/enterprise/index.vue

@@ -56,6 +56,7 @@
               :span="24"
               label="搜索:"
               v-model:param="enterprise.tempForm.name"
+              @keyup.enter="onSearch"
           />
           <div class="__cus-buttons-2">
             <div class="__cus-button-submit __hover" @click="onSearch">搜索</div>

+ 1 - 0
src/views/gis/business/power/index.vue

@@ -87,6 +87,7 @@
               :span="24"
               label="搜索:"
               v-model:param="unable.tempForm.text"
+              @keyup.enter="onSearch"
           />
           <div class="__cus-buttons-2">
             <div class="__cus-button-submit __hover" @click="onSearch">搜索</div>

+ 1 - 1
src/views/gis/layout/index.vue

@@ -249,9 +249,9 @@ export default defineComponent({
       {label: '图层', value: 'element', com: ElementCom, disabled: true},
       {label: '框选', value: 'select', com: SelectCom, disabled: true},
       {label: '周边分析', value: 'analysis', com: AnalysisCom, disabled: true},
-      {label: '清空图层', value: 'clear', com: undefined},
       {label: '工具', value: 'tool', com: ToolCom},
       {label: '定位', value: 'position', com: PositionCom},
+      {label: '清空标绘', value: 'clear', com: undefined},
       {label: '底图', value: 'base', com: BaseCom},
       {label: '图例', value: 'example', com: ExampleCom},
     ]

+ 1 - 1
src/views/gis/layout/tools/base.vue

@@ -3,7 +3,7 @@
     <template v-for="[k, v] in mapFunc?.baseLayer?.switchMapper">
       <div
           class="base-item __hover"
-          :class="{active: mapFunc.baseLayer.judgeActive(k)}"
+          :class="{active: mapFunc.baseLayer.judgeActive(k), '__box-shadow': mapFunc.baseLayer.judgeActive(k)}"
           @click="mapFunc.baseLayer.switchLayer(k)"
       >
         <div class="label">{{ v.get("_label") }}</div>