Commit 40713fe600e168e3ec1680ae5b6104a3fef7b9bc

Authored by xp.Huang
2 parents bfde1c1d e237a55a

Merge branch 'ft' into 'main_dev'

perf(src/packages/): 优化图表地图用户体验

See merge request yunteng/thingskit-view!109
... ... @@ -3,6 +3,13 @@ import { onMounted, reactive } from 'vue'
3 3 import { getAreaList } from '@/api/external/common/index'
4 4 import { areaEnum } from '../config'
5 5
  6 +const props = defineProps({
  7 + drillingIn:{
  8 + type:Boolean,
  9 + default:false
  10 + }
  11 +})
  12 +
6 13 const emits = defineEmits(['submit'])
7 14
8 15 const selectOptions = reactive({
... ... @@ -12,7 +19,7 @@ const selectOptions = reactive({
12 19 })
13 20
14 21 const selectValues = reactive({
15   - provinceValue: null,
  22 + provinceValue: 'china',
16 23 cityValue: null,
17 24 countyValue: null
18 25 })
... ... @@ -60,16 +67,19 @@ const onHandleSubmit = () => {
60 67 :options="selectOptions.provinceOptions"
61 68 />
62 69 <n-select
  70 + v-if="!props.drillingIn"
63 71 @change="onHandleSelectCity"
64 72 placeholder="请选择城市"
65 73 v-model:value="selectValues.cityValue"
66 74 :options="selectOptions.cityOptions"
67 75 />
68   - <n-select
  76 + <!-- 保留待用(下钻到区以下) -->
  77 + <!-- <n-select
  78 + v-if="!drillingIn"
69 79 placeholder="请选择区域"
70 80 v-model:value="selectValues.countyValue"
71 81 :options="selectOptions.countryOptions"
72   - />
  82 + /> -->
73 83 <n-button type="primary" @click="onHandleSubmit">确定</n-button>
74 84 </div>
75 85 </template>
... ...
... ... @@ -2,18 +2,17 @@
2 2 <!-- Echarts 全局设置 -->
3 3 <global-setting :optionData="optionData"></global-setting>
4 4 <CollapseItem name="地图" :expanded="true">
5   - <SelectCity @submit="onHandleSelectValues" />
6 5 <SettingItemBox name="开启下钻">
7 6 <SettingItem name="">
8 7 <n-switch v-model:value="optionData.drillingIn" size="small"></n-switch>
9 8 </SettingItem>
10 9 </SettingItemBox>
11   - <SettingItemBox name="显示返回图标">
  10 + <SettingItemBox name="返回图标">
12 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 13 </SettingItem>
15 14 </SettingItemBox>
16   - <SettingItemBox name="返回图标颜色">
  15 + <SettingItemBox name="图标颜色">
17 16 <SettingItem name="">
18 17 <n-color-picker
19 18 size="small"
... ... @@ -22,7 +21,7 @@
22 21 ></n-color-picker>
23 22 </SettingItem>
24 23 </SettingItemBox>
25   - <SettingItemBox name="返回图标距离">
  24 + <SettingItemBox name="图标距离">
26 25 <SettingItem name="距右">
27 26 <n-input-number
28 27 v-model:value="optionData.iconDistanceRight"
... ... @@ -40,6 +39,7 @@
40 39 ></n-input-number>
41 40 </SettingItem>
42 41 </SettingItemBox>
  42 + <SelectCity :drillingIn="optionData.drillingIn" @submit="onHandleSelectValues" />
43 43 <SettingItemBox name="区域颜色">
44 44 <SettingItem name="0%处颜色">
45 45 <n-color-picker
... ...
... ... @@ -89,8 +89,8 @@ const toolBoxOption = ref({
89 89 watch(
90 90 () => props.chartConfig.option,
91 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 94 toolBoxOption.value.feature.myFullButton.iconStyle.color = iconColor
95 95 toolBoxOption.value.right = iconDistanceRight
96 96 toolBoxOption.value.top = iconDistanceTop
... ...
1 1 import { defineStore } from "pinia";
2 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 4 import { RequestContentTypeEnum } from "@/enums/external/httpEnum";
5 5 import { useChartEditStore } from "@/store/modules/chartEditStore/chartEditStore";
6 6 import { pinia } from '@/store'
... ... @@ -8,7 +8,7 @@ import { cloneDeep } from "lodash";
8 8 import { useFilterFn } from "@/hooks/external/useFilterFn";
9 9
10 10
11   -const KEYS_SEPARATOR = ','
  11 +// const KEYS_SEPARATOR = ','
12 12 const chartEditStore = useChartEditStore(pinia)
13 13 export const useSocketStore = defineStore({
14 14 id: 'useSocketStore',
... ... @@ -260,22 +260,28 @@ export const useSocketStore = defineStore({
260 260 * 修改后的代码
261 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 /**
... ...