From 6c52626bb1673425bd5ad320802865d815ce19b2 Mon Sep 17 00:00:00 2001 From: jiangx <1457960500@qq.com> Date: Wed, 22 Mar 2023 10:34:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=9A=80=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E5=AF=BC=E8=A7=88=E7=AD=9B=E9=80=89=E5=BA=97?= =?UTF-8?q?=E9=93=BA/=E5=81=9C=E8=BD=A6=E6=A8=A1=E5=9D=97hook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/composables/useDay.ts | 2 +- src/composables/useGuideFilterShop.ts | 22 +++++++++ src/composables/useInitConfigAndMallInfo.ts | 2 +- src/composables/useParkingKeyboard.ts | 47 ++++++++++++++++++ src/enums/index.ts | 2 +- src/http/http.ts | 2 +- src/views/Guide/Guide.vue | 25 +++------- src/views/Parking/Parking.vue | 54 ++------------------- 8 files changed, 85 insertions(+), 71 deletions(-) create mode 100644 src/composables/useGuideFilterShop.ts create mode 100644 src/composables/useParkingKeyboard.ts diff --git a/src/composables/useDay.ts b/src/composables/useDay.ts index 1201d38..26144ba 100644 --- a/src/composables/useDay.ts +++ b/src/composables/useDay.ts @@ -6,7 +6,7 @@ export const useDay = () => { zh: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], en: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], tw: ['星期日', '星期壹', '星期二', '星期三', '星期四', '星期五', '星期六'] - } + } as const const date = ref(new Date()) const store = useStore() diff --git a/src/composables/useGuideFilterShop.ts b/src/composables/useGuideFilterShop.ts new file mode 100644 index 0000000..a007332 --- /dev/null +++ b/src/composables/useGuideFilterShop.ts @@ -0,0 +1,22 @@ +import { ref, shallowRef, toRefs } from 'vue' +import { useStore } from '@/store/root' + +export const useGuideFilterShop = () => { + const store = useStore() + const { shopList, currentBuildingFloorsList, currentFloor } = toRefs(store) + + const floorIdx = ref(-1) //楼层选中索引 + const selectedShopList = shallowRef([]) //选中楼层的店铺列表 + + function filterShopByFloorName(floorName: string) { + selectedShopList.value = shopList.value.filter(item => item.floor === floorName) + } + + // //筛选当前楼层所需数据 + function filterAboutCurrentInfo() { + floorIdx.value = currentBuildingFloorsList.value.findIndex(item => item.floor === currentFloor.value.floor) + selectedShopList.value = shopList.value.filter(item => item.floor === currentFloor.value.floor) + } + + return { floorIdx, selectedShopList, filterShopByFloorName, filterAboutCurrentInfo } +} diff --git a/src/composables/useInitConfigAndMallInfo.ts b/src/composables/useInitConfigAndMallInfo.ts index 6589b50..31acd8a 100644 --- a/src/composables/useInitConfigAndMallInfo.ts +++ b/src/composables/useInitConfigAndMallInfo.ts @@ -21,6 +21,6 @@ export const useInitConfigAndMallInfo = async () => { store.SET_BUILDING_LIST(buildingList) store.SET_FACILITY_LIST(_facilityList.data) } catch (error) { - Message({ text: '初始化数据失败', type: 'success' }) + Message({ text: '获取数据失败', type: 'success' }) } } diff --git a/src/composables/useParkingKeyboard.ts b/src/composables/useParkingKeyboard.ts new file mode 100644 index 0000000..d65efc3 --- /dev/null +++ b/src/composables/useParkingKeyboard.ts @@ -0,0 +1,47 @@ +import { ref, computed } from 'vue' +import { isZhWord, isUppercaseWord } from '@/utils/utils' + +export const useParkingKeyboard = () => { + const NOT_ENERGY_PLATE = 7 //非能源车牌长度 + const ENERGY_PLATE = 8 //能源车牌长度 + const SPACE_MAX_LENGTH = 6 //车位最大允许长度 + const LICENSE = ['苏', 'A'] //默认车牌前缀 + + const plate = ref(LICENSE.slice()) + const plateToString = computed(() => plate.value.join('')) + const searchMethod = ref<'车牌' | '车位'>('车牌') + const inputLength = computed(() => (searchMethod.value === '车牌' ? ENERGY_PLATE : SPACE_MAX_LENGTH)) + const isEnergy = ref(false) + function handleEnergy(energy: boolean) { + isEnergy.value = energy + if (!energy && plate.value.length === ENERGY_PLATE) { + plate.value.pop() + } + } + function handleKeyboard(value: string) { + if (searchMethod.value === '车牌') { + if (plate.value.length === 1 && isZhWord(value)) { + plate.value[0] = value + return + } + if ( + (!isEnergy.value && plate.value.length >= NOT_ENERGY_PLATE) || + (isEnergy.value && plate.value.length >= ENERGY_PLATE) || + (plate.value.length === 0 && !isZhWord(value)) || + (plate.value.length === 1 && !isUppercaseWord(value)) || + (plate.value.length >= 2 && plate.value.length < 6 && isZhWord(value)) + ) { + return + } + } else if (plate.value.length >= SPACE_MAX_LENGTH) { + return + } + + plate.value.push(value) + } + function del() { + plate.value.pop() + } + + return { del, handleKeyboard, handleEnergy, inputLength, plate, plateToString, LICENSE, searchMethod } +} diff --git a/src/enums/index.ts b/src/enums/index.ts index 78eb131..d31218f 100644 --- a/src/enums/index.ts +++ b/src/enums/index.ts @@ -6,7 +6,7 @@ export enum ACTIVITY_TYPE { } export enum DEVICE { - WINDOW = 'windows', + WINDOWS = 'windows', ANDROID = 'android' } diff --git a/src/http/http.ts b/src/http/http.ts index c5ae1eb..3293ec3 100644 --- a/src/http/http.ts +++ b/src/http/http.ts @@ -13,7 +13,7 @@ class Request { constructor(config: CreateRequestConfig) { this.instance = axios.create(config) - // * 初始化存放取消请求控制器Map + //取消请求控制器Map this.abortControllerMap = new Map() this.interceptorsObj = config.interceptors // 拦截器执行顺序 接口请求 -> 实例请求 -> 全局请求 -> 实例响应 -> 全局响应 -> 接口响应 diff --git a/src/views/Guide/Guide.vue b/src/views/Guide/Guide.vue index ca86b98..35eb18c 100644 --- a/src/views/Guide/Guide.vue +++ b/src/views/Guide/Guide.vue @@ -3,23 +3,14 @@ diff --git a/src/views/Parking/Parking.vue b/src/views/Parking/Parking.vue index 3a61a62..4838796 100644 --- a/src/views/Parking/Parking.vue +++ b/src/views/Parking/Parking.vue @@ -1,68 +1,22 @@ - -