Commit 40713fe600e168e3ec1680ae5b6104a3fef7b9bc
Merge branch 'ft' into 'main_dev'
perf(src/packages/): 优化图表地图用户体验 See merge request yunteng/thingskit-view!109
Showing
4 changed files
with
42 additions
and
26 deletions
| @@ -3,6 +3,13 @@ import { onMounted, reactive } from 'vue' | @@ -3,6 +3,13 @@ import { onMounted, reactive } from 'vue' | ||
| 3 | import { getAreaList } from '@/api/external/common/index' | 3 | import { getAreaList } from '@/api/external/common/index' |
| 4 | import { areaEnum } from '../config' | 4 | import { areaEnum } from '../config' |
| 5 | 5 | ||
| 6 | +const props = defineProps({ | ||
| 7 | + drillingIn:{ | ||
| 8 | + type:Boolean, | ||
| 9 | + default:false | ||
| 10 | + } | ||
| 11 | +}) | ||
| 12 | + | ||
| 6 | const emits = defineEmits(['submit']) | 13 | const emits = defineEmits(['submit']) |
| 7 | 14 | ||
| 8 | const selectOptions = reactive({ | 15 | const selectOptions = reactive({ |
| @@ -12,7 +19,7 @@ const selectOptions = reactive({ | @@ -12,7 +19,7 @@ const selectOptions = reactive({ | ||
| 12 | }) | 19 | }) |
| 13 | 20 | ||
| 14 | const selectValues = reactive({ | 21 | const selectValues = reactive({ |
| 15 | - provinceValue: null, | 22 | + provinceValue: 'china', |
| 16 | cityValue: null, | 23 | cityValue: null, |
| 17 | countyValue: null | 24 | countyValue: null |
| 18 | }) | 25 | }) |
| @@ -60,16 +67,19 @@ const onHandleSubmit = () => { | @@ -60,16 +67,19 @@ const onHandleSubmit = () => { | ||
| 60 | :options="selectOptions.provinceOptions" | 67 | :options="selectOptions.provinceOptions" |
| 61 | /> | 68 | /> |
| 62 | <n-select | 69 | <n-select |
| 70 | + v-if="!props.drillingIn" | ||
| 63 | @change="onHandleSelectCity" | 71 | @change="onHandleSelectCity" |
| 64 | placeholder="请选择城市" | 72 | placeholder="请选择城市" |
| 65 | v-model:value="selectValues.cityValue" | 73 | v-model:value="selectValues.cityValue" |
| 66 | :options="selectOptions.cityOptions" | 74 | :options="selectOptions.cityOptions" |
| 67 | /> | 75 | /> |
| 68 | - <n-select | 76 | + <!-- 保留待用(下钻到区以下) --> |
| 77 | + <!-- <n-select | ||
| 78 | + v-if="!drillingIn" | ||
| 69 | placeholder="请选择区域" | 79 | placeholder="请选择区域" |
| 70 | v-model:value="selectValues.countyValue" | 80 | v-model:value="selectValues.countyValue" |
| 71 | :options="selectOptions.countryOptions" | 81 | :options="selectOptions.countryOptions" |
| 72 | - /> | 82 | + /> --> |
| 73 | <n-button type="primary" @click="onHandleSubmit">确定</n-button> | 83 | <n-button type="primary" @click="onHandleSubmit">确定</n-button> |
| 74 | </div> | 84 | </div> |
| 75 | </template> | 85 | </template> |
| @@ -2,18 +2,17 @@ | @@ -2,18 +2,17 @@ | ||
| 2 | <!-- Echarts 全局设置 --> | 2 | <!-- Echarts 全局设置 --> |
| 3 | <global-setting :optionData="optionData"></global-setting> | 3 | <global-setting :optionData="optionData"></global-setting> |
| 4 | <CollapseItem name="地图" :expanded="true"> | 4 | <CollapseItem name="地图" :expanded="true"> |
| 5 | - <SelectCity @submit="onHandleSelectValues" /> | ||
| 6 | <SettingItemBox name="开启下钻"> | 5 | <SettingItemBox name="开启下钻"> |
| 7 | <SettingItem name=""> | 6 | <SettingItem name=""> |
| 8 | <n-switch v-model:value="optionData.drillingIn" size="small"></n-switch> | 7 | <n-switch v-model:value="optionData.drillingIn" size="small"></n-switch> |
| 9 | </SettingItem> | 8 | </SettingItem> |
| 10 | </SettingItemBox> | 9 | </SettingItemBox> |
| 11 | - <SettingItemBox name="显示返回图标"> | 10 | + <SettingItemBox name="返回图标"> |
| 12 | <SettingItem name=""> | 11 | <SettingItem name=""> |
| 13 | - <n-switch v-model:value="optionData.showIcon" size="small"></n-switch> | 12 | + <n-switch v-model:value="optionData.drillingIn" size="small"></n-switch> |
| 14 | </SettingItem> | 13 | </SettingItem> |
| 15 | </SettingItemBox> | 14 | </SettingItemBox> |
| 16 | - <SettingItemBox name="返回图标颜色"> | 15 | + <SettingItemBox name="图标颜色"> |
| 17 | <SettingItem name=""> | 16 | <SettingItem name=""> |
| 18 | <n-color-picker | 17 | <n-color-picker |
| 19 | size="small" | 18 | size="small" |
| @@ -22,7 +21,7 @@ | @@ -22,7 +21,7 @@ | ||
| 22 | ></n-color-picker> | 21 | ></n-color-picker> |
| 23 | </SettingItem> | 22 | </SettingItem> |
| 24 | </SettingItemBox> | 23 | </SettingItemBox> |
| 25 | - <SettingItemBox name="返回图标距离"> | 24 | + <SettingItemBox name="图标距离"> |
| 26 | <SettingItem name="距右"> | 25 | <SettingItem name="距右"> |
| 27 | <n-input-number | 26 | <n-input-number |
| 28 | v-model:value="optionData.iconDistanceRight" | 27 | v-model:value="optionData.iconDistanceRight" |
| @@ -40,6 +39,7 @@ | @@ -40,6 +39,7 @@ | ||
| 40 | ></n-input-number> | 39 | ></n-input-number> |
| 41 | </SettingItem> | 40 | </SettingItem> |
| 42 | </SettingItemBox> | 41 | </SettingItemBox> |
| 42 | + <SelectCity :drillingIn="optionData.drillingIn" @submit="onHandleSelectValues" /> | ||
| 43 | <SettingItemBox name="区域颜色"> | 43 | <SettingItemBox name="区域颜色"> |
| 44 | <SettingItem name="0%处颜色"> | 44 | <SettingItem name="0%处颜色"> |
| 45 | <n-color-picker | 45 | <n-color-picker |
| @@ -89,8 +89,8 @@ const toolBoxOption = ref({ | @@ -89,8 +89,8 @@ const toolBoxOption = ref({ | ||
| 89 | watch( | 89 | watch( |
| 90 | () => props.chartConfig.option, | 90 | () => props.chartConfig.option, |
| 91 | newData => { | 91 | newData => { |
| 92 | - const { iconColor, showIcon, iconDistanceRight, iconDistanceTop } = newData | ||
| 93 | - toolBoxOption.value.feature.myFullButton.show = showIcon | 92 | + const { iconColor, drillingIn, iconDistanceRight, iconDistanceTop } = newData |
| 93 | + toolBoxOption.value.feature.myFullButton.show = drillingIn | ||
| 94 | toolBoxOption.value.feature.myFullButton.iconStyle.color = iconColor | 94 | toolBoxOption.value.feature.myFullButton.iconStyle.color = iconColor |
| 95 | toolBoxOption.value.right = iconDistanceRight | 95 | toolBoxOption.value.right = iconDistanceRight |
| 96 | toolBoxOption.value.top = iconDistanceTop | 96 | toolBoxOption.value.top = iconDistanceTop |
| 1 | import { defineStore } from "pinia"; | 1 | import { defineStore } from "pinia"; |
| 2 | import { KeyBoundComponentList, SocketComponentRecord, SocketReceiveMessageType, SocketSendMessageItemType, SocketSendMessageType, SocketStoreType, UnsubscribePoolType } from '@/store/external/modules/socketStore.d' | 2 | import { KeyBoundComponentList, SocketComponentRecord, SocketReceiveMessageType, SocketSendMessageItemType, SocketSendMessageType, SocketStoreType, UnsubscribePoolType } from '@/store/external/modules/socketStore.d' |
| 3 | -import { CreateComponentGroupType, CreateComponentType } from "@/packages/index.d"; | 3 | +import { CreateComponentType } from "@/packages/index.d"; |
| 4 | import { RequestContentTypeEnum } from "@/enums/external/httpEnum"; | 4 | import { RequestContentTypeEnum } from "@/enums/external/httpEnum"; |
| 5 | import { useChartEditStore } from "@/store/modules/chartEditStore/chartEditStore"; | 5 | import { useChartEditStore } from "@/store/modules/chartEditStore/chartEditStore"; |
| 6 | import { pinia } from '@/store' | 6 | import { pinia } from '@/store' |
| @@ -8,7 +8,7 @@ import { cloneDeep } from "lodash"; | @@ -8,7 +8,7 @@ import { cloneDeep } from "lodash"; | ||
| 8 | import { useFilterFn } from "@/hooks/external/useFilterFn"; | 8 | import { useFilterFn } from "@/hooks/external/useFilterFn"; |
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | -const KEYS_SEPARATOR = ',' | 11 | +// const KEYS_SEPARATOR = ',' |
| 12 | const chartEditStore = useChartEditStore(pinia) | 12 | const chartEditStore = useChartEditStore(pinia) |
| 13 | export const useSocketStore = defineStore({ | 13 | export const useSocketStore = defineStore({ |
| 14 | id: 'useSocketStore', | 14 | id: 'useSocketStore', |
| @@ -260,22 +260,28 @@ export const useSocketStore = defineStore({ | @@ -260,22 +260,28 @@ export const useSocketStore = defineStore({ | ||
| 260 | * 修改后的代码 | 260 | * 修改后的代码 |
| 261 | * 修改ws绑定单个文本组件,然后有多个,并且进行分组,显示的信息为原始信息,而非过滤函数返回的信息 | 261 | * 修改ws绑定单个文本组件,然后有多个,并且进行分组,显示的信息为原始信息,而非过滤函数返回的信息 |
| 262 | */ | 262 | */ |
| 263 | - const target = chartEditStore.getComponentList?.reduce((prev: Array<CreateComponentType | CreateComponentGroupType>, acc) => { | ||
| 264 | - acc?.isGroup ? (prev = [...(acc?.groupList as CreateComponentGroupType[])]) : prev?.push(acc) | ||
| 265 | - return prev | ||
| 266 | - }, []) | ||
| 267 | - ?.filter( | ||
| 268 | - item => (item?.request?.requestContentType as RequestContentTypeEnum) === RequestContentTypeEnum.WEB_SOCKET | ||
| 269 | - ) | ||
| 270 | - target.forEach(item => { | ||
| 271 | - if (item.id === id) { | ||
| 272 | - const _value = this.getComponentValueByKeys(item, value) | ||
| 273 | - const { filter } = item | ||
| 274 | - const { value: filterValue, reason, flag } = useFilterFn(filter, _value) | ||
| 275 | - item.option.dataset = flag ? filterValue : reason | 263 | + chartEditStore.getComponentList.forEach(targetItem => { |
| 264 | + if (targetItem.isGroup) { | ||
| 265 | + //分组 | ||
| 266 | + targetItem.groupList?.forEach(groupItem => { | ||
| 267 | + if (groupItem.id === id) { | ||
| 268 | + const _value = this.getComponentValueByKeys(groupItem, value) | ||
| 269 | + const { filter } = groupItem | ||
| 270 | + const { value: filterValue, reason, flag } = useFilterFn(filter, _value) | ||
| 271 | + groupItem.option.dataset = flag ? filterValue : reason | ||
| 272 | + } | ||
| 273 | + }) | ||
| 274 | + } else { | ||
| 275 | + //单个 | ||
| 276 | + if (targetItem.id === id) { | ||
| 277 | + const _value = this.getComponentValueByKeys(targetItem, value) | ||
| 278 | + const { filter } = targetItem | ||
| 279 | + const { value: filterValue, reason, flag } = useFilterFn(filter, _value) | ||
| 280 | + targetItem.option.dataset = flag ? filterValue : reason | ||
| 281 | + } | ||
| 276 | } | 282 | } |
| 283 | + // | ||
| 277 | }) | 284 | }) |
| 278 | - // | ||
| 279 | }, | 285 | }, |
| 280 | 286 | ||
| 281 | /** | 287 | /** |