Riku
2025-06-04 d0f07e25103d7c7845c3b9534e8c66b5905447c0
src/components/scene/SceneSearch.vue
@@ -13,6 +13,7 @@
    draggable
    :modal="false"
    width="400px"
    size="medium"
  >
    <template #default>
      <el-row class="scene-table">
@@ -21,6 +22,7 @@
          :data="sceneStore.sceneList"
          table-layout="fixed"
          size="small"
          height="30vh"
          :show-overflow-tooltip="true"
          border
          row-class-name="t-row"
@@ -28,18 +30,25 @@
          header-row-class-name="t-header-row"
          header-cell-class-name="t-header-cell"
          @row-click="handleRowClick"
          @filter-change="handleFilterChange"
        >
          <el-table-column type="index" label="#" width="25" />
          <el-table-column
            prop="type"
            label="类型"
            width="55"
            width="56"
            column-key="type"
            :filters="sceneTypeFilter"
            :filter-method="filterHandler"
          />
          <el-table-column prop="name" label="名称" />
          <!-- <el-table-column prop="location" label="地址" /> -->
          <!-- <el-table-column prop="districtName" label="区县" align="center" /> -->
          <el-table-column
            prop="districtName"
            label="区县"
            align="center"
            width="54"
          />
          <!-- <el-table-column label="管理" width="70" align="center">
            <template #default="{ row }">
              <el-button
@@ -94,7 +103,8 @@
  data() {
    return {
      dialogVisible: false,
      onConfirm: undefined
      onConfirm: undefined,
      showSceneTypes: []
    };
  },
  computed: {
@@ -108,6 +118,15 @@
        .map((v) => {
          return { text: v.label, value: v.label };
        });
    },
    showSceneList() {
      if (this.showSceneTypes.length == 0) {
        return this.sceneStore.sceneList;
      } else {
        return this.sceneStore.sceneList.filter((v) => {
          return this.showSceneTypes.indexOf(v.type) != -1;
        });
      }
    }
  },
  watch: {
@@ -120,14 +139,20 @@
        }
      }
    },
    'sceneStore.sceneList': {
      handler(nV, oV) {
        if (nV != oV) {
          this.dialogVisible = true;
          this.drawMarks(nV);
        }
      },
      deep: true
    // 'sceneStore.sceneList': {
    //   handler(nV, oV) {
    //     if (nV != oV) {
    //       this.dialogVisible = true;
    //       this.drawMarks(nV);
    //     }
    //   },
    //   deep: true
    // },
    showSceneList(nV, oV) {
      if (nV != oV) {
        this.dialogVisible = true;
        this.drawMarks(nV);
      }
    },
    'toolboxStore.sceneSearchStatus': {
      handler(nV) {
@@ -158,6 +183,10 @@
    filterHandler(value, row, column) {
      const property = column['property'];
      return row[property] === value;
    },
    handleFilterChange(newFilters) {
      // console.log(newFilters);
      this.showSceneTypes = newFilters['type'];
    }
  }
};