| | |
| | | <template> |
| | | <Category :category="industryList" @change="change" class="position-select-view"> |
| | | <Category :category="_industryList" @change="change" class="position-select-view"> |
| | | <CategoryPane :max="max" :categoryChild="categoryChild" :multiple="multiple" v-model="model"> |
| | | </CategoryPane> |
| | | </Category> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useAllSearchSettingList, useSearchSettingType } from '@12333/hooks'; |
| | | import { useDictionaryDataSelect, useGetDictionaryCategorySelect } from '@12333/hooks'; |
| | | import Category from './Category.vue'; |
| | | import CategoryPane from './CategoryPane.vue'; |
| | | import { reactive, computed, watch } from 'vue'; |
| | | import { SearchType } from '@12333/constants'; |
| | | import { CategoryCode } from '@12333/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'PositionSelectView', |
| | |
| | | const model = defineModel<string[]>(); |
| | | |
| | | const state = reactive({ |
| | | provinceIndex: 0, |
| | | industryIndex: 0, |
| | | }); |
| | | |
| | | const { allSearchSettingList: positionList } = useAllSearchSettingList({ |
| | | searchType: SearchType.Position, |
| | | const { dictionaryDataList: industryList } = useDictionaryDataSelect({ |
| | | categoryCode: CategoryCode.IndustryCategory, |
| | | }); |
| | | const { searchSettingTypeList: industryList } = useSearchSettingType({ |
| | | searchType: SearchType.IndustryCategory, |
| | | |
| | | const _industryList = computed(() => |
| | | industryList.value.map((x) => ({ |
| | | ...x, |
| | | name: x.label, |
| | | id: x.value, |
| | | })) |
| | | ); |
| | | |
| | | const { dictionaryDataList: positionList } = useDictionaryDataSelect({ |
| | | categoryCode: CategoryCode.Position, |
| | | }); |
| | | |
| | | const _positionList = computed(() => |
| | | positionList.value.map((x) => ({ |
| | | ...x, |
| | | name: x.label, |
| | | id: x.value, |
| | | })) |
| | | ); |
| | | |
| | | const categoryChild = computed(() => { |
| | | if (!industryList.value.length) { |
| | | if (!_industryList.value.length) { |
| | | return []; |
| | | } |
| | | return positionList.value?.filter( |
| | | (x) => x.parentName === industryList.value[state.provinceIndex].name |
| | | return _positionList.value?.filter( |
| | | (x) => x.data.field1 === _industryList.value[state.industryIndex]?.code |
| | | ); |
| | | }); |
| | | |
| | | const change = (index: number) => { |
| | | state.provinceIndex = index; |
| | | state.industryIndex = index; |
| | | }; |
| | | </script> |
| | | |