forked from drone/command-center-dashboard

chenyao
2025-04-02 6e0afaa5762765fad3e47b52f05df5553818b5ea
src/views/Home/SearchBox.vue
@@ -14,22 +14,53 @@
    </div>
    <div class="searchBtn"></div>
    <div class="region">
      <el-select v-model="value2" placeholder="请选择查询">
        <el-option
          v-for="item in options1"
          :key="item.value"
          :label="item.label"
          :value="item.value"
        />
      </el-select>
      <el-tree-select
        v-model="treeValue"
        check-strictly
        lazy
        :load="load"
        :props="props"
        style="width: 240px"
        @change="treeChange"
      />
    </div>
  </div>
</template>
<script setup>
const input3 = ref('');
import { getRegion } from '@/api/home';
import { useStore } from 'vuex';
const store = useStore();
const input3 = ref('');
const userAreaCode = computed(() => store.state.user.userInfo.detail.areaCode);
const selectedAreaCode = computed(() => store.state.user.selectedAreaCode);
const value = ref('Option1');
const value2 = ref('Optio44n1');
const treeValue = ref(userAreaCode.value);
let first = true;
function treeChange(value) {
  store.commit('setSelectedAreaCode', value);
}
const props = {
  label: 'name',
  value: 'code',
  children: 'children',
};
const load = async (node, resolve) => {
  if (first) {
    first = false;
    const res = await getRegion(userAreaCode.value);
    const { provinceCode, provinceName } = res?.data?.data?.[0] || {};
    resolve([{ code: provinceCode, name: provinceName }]);
    return;
  }
  const code = node?.data?.code || userAreaCode.value;
  if ((node?.data?.regionLevel || 0) > 2) return resolve([]);
  getRegion(code).then(res => {
    resolve(res?.data?.data || []);
  });
};
const options = [
  {
@@ -38,20 +69,11 @@
  },
  {
    value: 'Optio44n1',
    label: '事件',
    label: '地址',
  },
];
const options1 = [
  {
    value: 'Option1',
    label: '南昌市',
  },
  {
    value: 'Optio44n1',
    label: '抚州市',
  },
];
onMounted(() => {});
</script>
<style scoped lang="scss">
.searchBox {