|
@@ -0,0 +1,53 @@
|
|
|
+<template v-if="state.selectDto.length">
|
|
|
+ <el-select v-model="localSelect" @change="onChange">
|
|
|
+ <el-option v-for="item in state.selectDto" :key="item.id" :label="item.name" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup lang="ts" name="my-select-request">
|
|
|
+ import {PropType} from "vue/dist/vue";
|
|
|
+ import {onMounted, reactive, ref} from "vue";
|
|
|
+ import type {selectDto} from "/@/components/my-select-request/mySelectRequestDto";
|
|
|
+ import {localStorageSet} from "/@/utils/localStorageSet";
|
|
|
+ import {MySelectRequest} from "/@/components/my-select-request/mySelectRequest";
|
|
|
+ /**
|
|
|
+ * 接受父组件中传过来的数据字典id,
|
|
|
+ * 根据id去查询
|
|
|
+ * */
|
|
|
+ const props = defineProps({
|
|
|
+ modelValue: Object as PropType<any | undefined | null>,
|
|
|
+ code: String,
|
|
|
+ select: String
|
|
|
+ })
|
|
|
+
|
|
|
+ const localSelect = ref(props.select)
|
|
|
+
|
|
|
+ const emits = defineEmits(['search'])
|
|
|
+
|
|
|
+ const state = reactive({
|
|
|
+ /**选择选择值*/
|
|
|
+ selectDto: <selectDto>[],
|
|
|
+ })
|
|
|
+
|
|
|
+ const onChange = () =>{
|
|
|
+ emits('search',state.select)
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取缓存,缓存不存在就发送请求
|
|
|
+ * */
|
|
|
+ onMounted(async () => {
|
|
|
+ state.selectDto = localStorageSet.getItemWithExpiration(props.code as string)
|
|
|
+ if (!state.selectDto){
|
|
|
+ const res = await new MySelectRequest().getCodeDict([props.code])
|
|
|
+ /**存一天的缓存*/
|
|
|
+ localStorageSet.setItemWithExpiration(props.code as string, res?.data,1)
|
|
|
+ state.selectDto = localStorageSet.getItemWithExpiration(props.code as string)
|
|
|
+ }
|
|
|
+
|
|
|
+ })
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped lang="scss">
|
|
|
+
|
|
|
+</style>
|