Browse Source

互联网-社管一张图-款选,列表,点击要素未显示选中样式

CzRger 1 year ago
parent
commit
ed7c691617

+ 4 - 3
src/views/gis/business/common/focus-content.vue

@@ -5,8 +5,8 @@
       <div class="icon-1"/>
       <div class="icon-1"/>
       <div class="icon-1"/>
-      <div class="icon-2"/>
-      <div class="icon-2"/>
+<!--      <div class="icon-2"/>-->
+<!--      <div class="icon-2"/>-->
     </div>
     <div class="focus-content-com_slot">
       <slot/>
@@ -66,7 +66,7 @@ export default defineComponent({
     top: 0;
     left: 0;
     background: #FFFFFF;
-    border: 1px solid #D6D6D6;
+    border: 1px solid #f5f5f5;
     display: flex;
     align-items: center;
     justify-content: center;
@@ -77,6 +77,7 @@ export default defineComponent({
       background-repeat: no-repeat;
       background-size: 100% 100%;
       position: absolute;
+      opacity: 0.3;
       &:nth-child(1) {
         left: 0;
         top: 0;

+ 63 - 7
src/views/gis/layout/tools/select.vue

@@ -62,6 +62,8 @@
               :page="cusTransfer.result.table.pageNum"
               :pageSize="cusTransfer.result.table.pageSize"
               @handlePage="handlePage"
+              :row-class-name="tableRowClassName"
+              @row-click="handleRowClick"
           >
           </CusTable>
         </div>
@@ -124,7 +126,7 @@ export default defineComponent({
           },
           table: {
             head: [
-              {value: "type", label: "类型", show: true, align: 'left', width: 100},
+              {value: "typeName", label: "类型", show: true, align: 'left', width: 100},
               {value: "name", label: "名称", show: true, align: 'left'},
             ],
             data: <any>[],
@@ -173,10 +175,22 @@ export default defineComponent({
           }
         }).then(res => {
           state.cusTransfer.result.table.data = res.data.features.map(v => {
-            return {
+            const obj = {
               name: v.properties.name,
-              type: store.getters['dictionary/elementTypeMap'].get(v.properties.typeValue)
+              typeName: store.getters['dictionary/elementTypeMap'].get(v.properties.typeValue),
+              type: v.properties.typeValue,
+              info: v.properties,
+              id: v.properties.dataId,
+              typeValue: v.properties.typeValue,
+              wkt: `POINT(${v.geometry.coordinates.join(' ')})`,
+              featureType: '',
             }
+            if (['lgszyjkscsb', 'jgzzmgs', 'lgsjkyfl'].includes(v.properties.typeValue)) {
+              obj.featureType = 'qy'
+            } else if (['gal', 'shl', 'myl'].includes(v.properties.typeValue)) {
+              obj.featureType = 'sb'
+            }
+            return obj
           })
           state.cusTransfer.result.table.loading = false
         }).catch(() => {
@@ -197,10 +211,10 @@ export default defineComponent({
     const hasTypeCpt = computed(() => {
       const m = new Map()
       state.cusTransfer.result.table.data.forEach(v => {
-        if (m.has(v.type)) {
-          m.set(v.type, m.get(v.type) + 1)
+        if (m.has(v.typeName)) {
+          m.set(v.typeName, m.get(v.typeName) + 1)
         } else {
-          m.set(v.type, 1)
+          m.set(v.typeName, 1)
         }
       })
       const arr: any = []
@@ -224,6 +238,41 @@ export default defineComponent({
       }
       onSearch()
     }
+    const tableRowClassName = ({row}) => {
+      if (
+        (row.featureType === 'qy' && row.id === store.state.gis.gisParams.qy.feature?.getId()) ||
+        (row.featureType === 'sb' && row.id === store.state.gis.gisParams.default.feature?.getId())
+      ) {
+        return 'row-active'
+      }
+      return ''
+    }
+    const handleRowClick = (row) => {
+      switch (row.featureType) {
+        case 'qy': {
+          if (row.id === store.state.gis.gisParams.qy.feature?.getId()) {
+            store.dispatch('gis/LOAD_GIS_PARAMS_QY_RESET')
+          } else {
+            store.dispatch('gis/LOAD_GIS_PARAMS_QY', {
+              wkt: row.wkt,
+              id: row.id,
+              info: row.info
+            })
+          }
+        } break
+        case 'sb': {
+          if (row.id === store.state.gis.gisParams.default.feature?.getId()) {
+            store.dispatch('gis/LOAD_GIS_PARAMS_DEFAULT_RESET')
+          } else {
+            store.dispatch('gis/LOAD_GIS_PARAMS_DEFAULT_SB', {
+              wkt: row.wkt,
+              id: row.id,
+              info: row.info
+            })
+          }
+        } break
+      }
+    }
     watch(() => state.cusTransfer, () => {
       emit('update:transfer', state.cusTransfer)
     }, { deep: true })
@@ -254,7 +303,9 @@ export default defineComponent({
       handlePage,
       hasTypeCpt,
       onSearch,
-      onReset
+      onReset,
+      tableRowClassName,
+      handleRowClick
     }
   },
 })
@@ -361,6 +412,11 @@ export default defineComponent({
       }
       .table {
         flex: 1;
+        :deep(.row-active) {
+          >td {
+            background: rgba(16,140,243,0.1);
+          }
+        }
       }
     }
   }