Commit a9ddc543f951322c43140598f8534be87bcd4024
Merge branch 'ww' into 'main'
fix: Bug in teambition See merge request huang/yun-teng-iot-front!310
Showing
45 changed files
with
97 additions
and
43 deletions
| ... | ... | @@ -49,6 +49,10 @@ export const useRedo = (_router?: Router) => { |
| 49 | 49 | params['_redirect_type'] = 'path'; |
| 50 | 50 | params['path'] = fullPath; |
| 51 | 51 | } |
| 52 | + // TODO DEFECT-687 teambition | |
| 53 | + if (fullPath.includes('/visual/board/detail/')) { | |
| 54 | + params['path'] = fullPath; | |
| 55 | + } | |
| 52 | 56 | push({ name: REDIRECT_NAME, params, query }).then(() => resolve(true)); |
| 53 | 57 | }); |
| 54 | 58 | } | ... | ... |
| ... | ... | @@ -6,7 +6,7 @@ import { |
| 6 | 6 | EXCEPTION_COMPONENT, |
| 7 | 7 | PAGE_NOT_FOUND_NAME, |
| 8 | 8 | } from '/@/router/constant'; |
| 9 | -import { DATA_BOARD_SHARE_URL } from '/@/views/data/board/config/config'; | |
| 9 | +import { DATA_BOARD_SHARE_URL } from '../../views/visual/board/config/config'; | |
| 10 | 10 | |
| 11 | 11 | // 404 on a page |
| 12 | 12 | export const PAGE_NOT_FOUND_ROUTE: AppRouteRecordRaw = { |
| ... | ... | @@ -81,7 +81,7 @@ export const ERROR_LOG_ROUTE: AppRouteRecordRaw = { |
| 81 | 81 | export const DATA_BOARD_SHARE: AppRouteRecordRaw = { |
| 82 | 82 | path: DATA_BOARD_SHARE_URL(), |
| 83 | 83 | name: 'dataBoardSharePage', |
| 84 | - component: () => import('/@/views/data/board/detail/index.vue'), | |
| 84 | + component: () => import('/@/views/visual/board/detail/index.vue'), | |
| 85 | 85 | meta: { |
| 86 | 86 | ignoreAuth: true, |
| 87 | 87 | title: '分享看板', | ... | ... |
src/views/visual/board/components/InstrumentComponent/DashBoardComponent.vue
renamed from
src/views/data/board/components/InstrumentComponent/DashBoardComponent.vue
| ... | ... | @@ -79,15 +79,20 @@ |
| 79 | 79 | const getUpdateValueFn = (componentType: InstrumentComponentType) => { |
| 80 | 80 | if (componentType === 'instrument-component-1') return update_instrument_1_value; |
| 81 | 81 | if (componentType === 'instrument-component-2') return update_instrument_2_value; |
| 82 | - return (_radio: number) => {}; | |
| 82 | + return (_radio: DashBoardValue) => {}; | |
| 83 | 83 | }; |
| 84 | 84 | |
| 85 | - const updateChartValue = useThrottleFn((newValue) => { | |
| 85 | + const updateChartValue = useThrottleFn(() => { | |
| 86 | 86 | const updateFn = getUpdateValueFn(props.layout.componentType); |
| 87 | - unref(chartRef)?.setOption((updateFn(newValue || 0) as unknown as EChartsOption) || {}); | |
| 87 | + unref(chartRef)?.setOption((updateFn(props.value) as unknown as EChartsOption) || {}); | |
| 88 | 88 | }, 500); |
| 89 | 89 | |
| 90 | - watch(() => props.value.value, updateChartValue); | |
| 90 | + watch(() => props.value, updateChartValue); | |
| 91 | + | |
| 92 | + // watch( | |
| 93 | + // () => [props.value.gradientInfo, props.value.unit, props.value.valueColor, props.value.name], | |
| 94 | + // updateChartValue | |
| 95 | + // ); | |
| 91 | 96 | |
| 92 | 97 | const updateChartFont = useThrottleFn(() => { |
| 93 | 98 | const option = beforeUpdateFn(props.layout.componentType); |
| ... | ... | @@ -110,7 +115,9 @@ |
| 110 | 115 | function handleRandomValue() { |
| 111 | 116 | const newValue = Math.floor(Math.random() * 100); |
| 112 | 117 | const updateFn = getUpdateValueFn(props.layout.componentType); |
| 113 | - unref(chartRef)?.setOption((updateFn(newValue) as unknown as EChartsOption) || {}); | |
| 118 | + unref(chartRef)?.setOption( | |
| 119 | + (updateFn({ ...props.value, value: newValue }) as unknown as EChartsOption) || {} | |
| 120 | + ); | |
| 114 | 121 | } |
| 115 | 122 | |
| 116 | 123 | onMounted(() => { |
| ... | ... | @@ -135,20 +142,20 @@ |
| 135 | 142 | <div class="text-center" :style="{ fontSize: fontSize({ radio: getRadio, basic: 16 }) }"> |
| 136 | 143 | {{ props.value.name }} |
| 137 | 144 | </div> |
| 138 | - <div | |
| 139 | - class="text-xs text-center truncate p-5" | |
| 140 | - :style="{ fontSize: fontSize({ radio: getRadio, basic: 12, max: 16 }), color: '#999' }" | |
| 145 | + <Tooltip | |
| 146 | + placement="top" | |
| 147 | + :title="dateUtil(props?.value?.updateTime || new Date()).format(DEFAULT_DATE_FORMAT)" | |
| 141 | 148 | > |
| 142 | - <Tooltip | |
| 143 | - placement="top" | |
| 144 | - :title="dateUtil(props?.value?.updateTime || new Date()).format(DEFAULT_DATE_FORMAT)" | |
| 149 | + <div | |
| 150 | + class="text-xs text-center truncate p-5" | |
| 151 | + :style="{ fontSize: fontSize({ radio: getRadio, basic: 12, max: 16 }), color: '#999' }" | |
| 145 | 152 | > |
| 146 | 153 | <span class="mr-2">更新时间:</span> |
| 147 | 154 | <span> |
| 148 | 155 | {{ dateUtil(props?.value?.updateTime || new Date()).format(DEFAULT_DATE_FORMAT) }} |
| 149 | 156 | </span> |
| 150 | - </Tooltip> | |
| 151 | - </div> | |
| 157 | + </div> | |
| 158 | + </Tooltip> | |
| 152 | 159 | </div> |
| 153 | 160 | </div> |
| 154 | 161 | </template> | ... | ... |
src/views/visual/board/components/InstrumentComponent/DigitalDashBoard.vue
renamed from
src/views/data/board/components/InstrumentComponent/DigitalDashBoard.vue
| ... | ... | @@ -151,20 +151,20 @@ |
| 151 | 151 | > |
| 152 | 152 | <span>{{ props.value.name || '电表' }}</span> |
| 153 | 153 | </div> |
| 154 | - <div | |
| 155 | - class="text-center text-xs truncate p-5" | |
| 156 | - :style="{ fontSize: fontSize({ radio: getRadio, basic: 12, max: 16 }), color: '#999' }" | |
| 154 | + <Tooltip | |
| 155 | + placement="top" | |
| 156 | + :title="dateUtil(props?.value?.updateTime || new Date()).format(DEFAULT_DATE_FORMAT)" | |
| 157 | 157 | > |
| 158 | - <Tooltip | |
| 159 | - placement="top" | |
| 160 | - :title="dateUtil(props?.value?.updateTime || new Date()).format(DEFAULT_DATE_FORMAT)" | |
| 158 | + <div | |
| 159 | + class="text-center text-xs truncate p-5" | |
| 160 | + :style="{ fontSize: fontSize({ radio: getRadio, basic: 12, max: 16 }), color: '#999' }" | |
| 161 | 161 | > |
| 162 | 162 | <span class="mr-1">更新时间:</span> |
| 163 | 163 | <span> |
| 164 | 164 | {{ dateUtil(props?.value?.updateTime || new Date()).format(DEFAULT_DATE_FORMAT) }} |
| 165 | 165 | </span> |
| 166 | - </Tooltip> | |
| 167 | - </div> | |
| 166 | + </div> | |
| 167 | + </Tooltip> | |
| 168 | 168 | </div> |
| 169 | 169 | <div></div> |
| 170 | 170 | </section> | ... | ... |
src/views/visual/board/components/InstrumentComponent/dashBoardComponent.config.ts
renamed from
src/views/data/board/components/InstrumentComponent/dashBoardComponent.config.ts
| ... | ... | @@ -32,7 +32,7 @@ export interface DashBoardValue { |
| 32 | 32 | name?: string; |
| 33 | 33 | updateTime?: string; |
| 34 | 34 | value?: number; |
| 35 | - valueColor?: string; | |
| 35 | + fontColor?: string; | |
| 36 | 36 | gradientInfo?: GradientInfoRecord[]; |
| 37 | 37 | } |
| 38 | 38 | |
| ... | ... | @@ -53,6 +53,7 @@ export const instrumentComponent1 = (params?: Partial<ComponentInfo>): EChartsOp |
| 53 | 53 | series: [ |
| 54 | 54 | { |
| 55 | 55 | type: 'gauge', |
| 56 | + radius: '50%', | |
| 56 | 57 | center: ['50%', '60%'], |
| 57 | 58 | startAngle: 200, |
| 58 | 59 | endAngle: -20, |
| ... | ... | @@ -83,15 +84,15 @@ export const instrumentComponent1 = (params?: Partial<ComponentInfo>): EChartsOp |
| 83 | 84 | }, |
| 84 | 85 | }, |
| 85 | 86 | splitLine: { |
| 86 | - distance: -45, | |
| 87 | - length: 14, | |
| 87 | + distance: -40, | |
| 88 | + length: 10, | |
| 88 | 89 | lineStyle: { |
| 89 | 90 | width: 3, |
| 90 | 91 | color: '#999', |
| 91 | 92 | }, |
| 92 | 93 | }, |
| 93 | 94 | axisLabel: { |
| 94 | - distance: -5, | |
| 95 | + distance: 0, | |
| 95 | 96 | color: '#999', |
| 96 | 97 | // fontSize: 20, |
| 97 | 98 | }, |
| ... | ... | @@ -120,6 +121,7 @@ export const instrumentComponent1 = (params?: Partial<ComponentInfo>): EChartsOp |
| 120 | 121 | }, |
| 121 | 122 | { |
| 122 | 123 | type: 'gauge', |
| 124 | + radius: '50%', | |
| 123 | 125 | center: ['50%', '60%'], |
| 124 | 126 | startAngle: 200, |
| 125 | 127 | endAngle: -20, |
| ... | ... | @@ -239,7 +241,7 @@ export const getGradient = (key: Gradient, record: GradientInfo[] = []) => { |
| 239 | 241 | }; |
| 240 | 242 | |
| 241 | 243 | export const update_instrument_1_font = (radio: number) => { |
| 242 | - const basicFontSize = fontSize({ radio, basic: 20, max: 25, min: 12 }); | |
| 244 | + const basicFontSize = fontSize({ radio, basic: 16, max: 16, min: 12 }); | |
| 243 | 245 | return { |
| 244 | 246 | series: [ |
| 245 | 247 | { |
| ... | ... | @@ -256,7 +258,7 @@ export const update_instrument_1_font = (radio: number) => { |
| 256 | 258 | |
| 257 | 259 | export const update_instrument_2_font = (radio: number) => { |
| 258 | 260 | const axisLabelFontSize = fontSize({ radio, basic: 10, max: 16 }); |
| 259 | - const detailFontSize = fontSize({ radio, basic: 20, max: 25, min: 12 }); | |
| 261 | + const detailFontSize = fontSize({ radio, basic: 16, max: 16, min: 10 }); | |
| 260 | 262 | return { |
| 261 | 263 | series: [ |
| 262 | 264 | { |
| ... | ... | @@ -275,11 +277,16 @@ const handleValue = (value: any) => { |
| 275 | 277 | return Number(value).toFixed(2); |
| 276 | 278 | }; |
| 277 | 279 | |
| 278 | -export const update_instrument_1_value = (value: number) => { | |
| 280 | +export const update_instrument_1_value = (params: DashBoardValue) => { | |
| 281 | + const { value = 0, unit = '°C', fontColor } = params; | |
| 279 | 282 | return { |
| 280 | 283 | series: [ |
| 281 | 284 | { |
| 282 | 285 | data: [{ value: handleValue(value) }], |
| 286 | + detail: { | |
| 287 | + formatter: `{value} ${unit ?? ''}`, | |
| 288 | + color: fontColor || 'inherit', | |
| 289 | + }, | |
| 283 | 290 | }, |
| 284 | 291 | { |
| 285 | 292 | data: [{ value: handleValue(value) }], |
| ... | ... | @@ -288,11 +295,35 @@ export const update_instrument_1_value = (value: number) => { |
| 288 | 295 | } as EChartsOption; |
| 289 | 296 | }; |
| 290 | 297 | |
| 291 | -export const update_instrument_2_value = (value: number) => { | |
| 298 | +export const update_instrument_2_value = (params: DashBoardValue) => { | |
| 299 | + const { value = 0, unit = 'km/h', fontColor, gradientInfo } = params; | |
| 300 | + const firstRecord = getGradient(Gradient.FIRST, gradientInfo); | |
| 301 | + const secondRecord = getGradient(Gradient.SECOND, gradientInfo); | |
| 302 | + const thirdRecord = getGradient(Gradient.THIRD, gradientInfo); | |
| 303 | + | |
| 304 | + let max = thirdRecord?.value || secondRecord?.value || firstRecord?.value || 70; | |
| 305 | + max = Number(1 + Array(String(max).length).fill(0).join('')); | |
| 306 | + | |
| 307 | + const firstGradient = firstRecord?.value ? firstRecord.value / max : 0.3; | |
| 308 | + const secondGradient = secondRecord?.value ? secondRecord.value / max : 0.7; | |
| 292 | 309 | return { |
| 293 | 310 | series: [ |
| 294 | 311 | { |
| 295 | 312 | data: [{ value: handleValue(value) }], |
| 313 | + detail: { | |
| 314 | + formatter: `{value} ${unit ?? ''}`, | |
| 315 | + color: fontColor || 'inherit', | |
| 316 | + }, | |
| 317 | + axisLine: { | |
| 318 | + lineStyle: { | |
| 319 | + width: 20, | |
| 320 | + color: [ | |
| 321 | + [firstGradient, firstRecord?.color || GradientColor.FIRST], | |
| 322 | + [secondGradient, secondRecord?.color || GradientColor.SECOND], | |
| 323 | + [1, thirdRecord?.color || GradientColor.THIRD], | |
| 324 | + ], | |
| 325 | + }, | |
| 326 | + }, | |
| 296 | 327 | }, |
| 297 | 328 | ], |
| 298 | 329 | } as EChartsOption; | ... | ... |
src/views/visual/board/components/InstrumentComponent/digitalDashBoard.config.ts
renamed from
src/views/data/board/components/InstrumentComponent/digitalDashBoard.config.ts
src/views/visual/board/components/InstrumentComponent/index.ts
renamed from
src/views/data/board/components/InstrumentComponent/index.ts
src/views/visual/board/components/Other/CommandSendButton.vue
renamed from
src/views/data/board/components/Other/CommandSendButton.vue
src/views/visual/board/components/Other/IndicatorLight.vue
renamed from
src/views/data/board/components/Other/IndicatorLight.vue
src/views/visual/board/components/Other/InformationPanel.vue
renamed from
src/views/data/board/components/Other/InformationPanel.vue
src/views/visual/board/components/Other/LightBulbSwitch.vue
renamed from
src/views/data/board/components/Other/LightBulbSwitch.vue
src/views/visual/board/components/Other/RockerSwitch.vue
renamed from
src/views/data/board/components/Other/RockerSwitch.vue
src/views/visual/board/components/Other/SlidingSwitch.vue
renamed from
src/views/data/board/components/Other/SlidingSwitch.vue
src/views/visual/board/components/Other/ToggleSwitch.vue
renamed from
src/views/data/board/components/Other/ToggleSwitch.vue
src/views/visual/board/components/PanelDetailModal.vue
renamed from
src/views/data/board/components/PanelDetailModal.vue
src/views/visual/board/components/PictureComponent/PictureComponent.vue
renamed from
src/views/data/board/components/PictureComponent/PictureComponent.vue
src/views/visual/board/components/PictureComponent/index.ts
renamed from
src/views/data/board/components/PictureComponent/index.ts
src/views/visual/board/components/PictureComponent/pictureComponent.config.ts
renamed from
src/views/data/board/components/PictureComponent/pictureComponent.config.ts
src/views/visual/board/components/TextComponent/TextComponent.vue
renamed from
src/views/data/board/components/TextComponent/TextComponent.vue
| ... | ... | @@ -91,11 +91,12 @@ |
| 91 | 91 | </div> |
| 92 | 92 | </div> |
| 93 | 93 | </div> |
| 94 | - <div v-if="getShowUpdate" class="text-center text-xs truncate p-5" style="color: #999"> | |
| 95 | - <Tooltip | |
| 96 | - placement="top" | |
| 97 | - :title="dateUtil(props?.value?.updateTime || new Date()).format(DEFAULT_DATE_FORMAT)" | |
| 98 | - > | |
| 94 | + <Tooltip | |
| 95 | + v-if="getShowUpdate" | |
| 96 | + placement="top" | |
| 97 | + :title="dateUtil(props?.value?.updateTime || new Date()).format(DEFAULT_DATE_FORMAT)" | |
| 98 | + > | |
| 99 | + <div class="text-center text-xs truncate p-5" style="color: #999"> | |
| 99 | 100 | <div |
| 100 | 101 | :style="{ fontSize: fontSize({ radio: getRadio, basic: 12, max: 14 }) }" |
| 101 | 102 | class="truncate" |
| ... | ... | @@ -105,7 +106,7 @@ |
| 105 | 106 | {{ dateUtil(props?.value?.updateTime || new Date()).format(DEFAULT_DATE_FORMAT) }} |
| 106 | 107 | </span> |
| 107 | 108 | </div> |
| 108 | - </Tooltip> | |
| 109 | - </div> | |
| 109 | + </div> | |
| 110 | + </Tooltip> | |
| 110 | 111 | </div> |
| 111 | 112 | </template> | ... | ... |
src/views/visual/board/components/TextComponent/config.ts
renamed from
src/views/data/board/components/TextComponent/config.ts
src/views/visual/board/components/WidgetHeader/BaseWidgetHeader.vue
renamed from
src/views/data/board/components/WidgetHeader/BaseWidgetHeader.vue
src/views/visual/board/components/WidgetWrapper/WidgetWrapper.vue
renamed from
src/views/data/board/components/WidgetWrapper/WidgetWrapper.vue
src/views/visual/board/components/WidgetWrapper/type.ts
renamed from
src/views/data/board/components/WidgetWrapper/type.ts
src/views/visual/board/config/componentMap.ts
renamed from
src/views/data/board/config/componentMap.ts
src/views/visual/board/config/config.ts
renamed from
src/views/data/board/config/config.ts
src/views/visual/board/config/panelDetail.ts
renamed from
src/views/data/board/config/panelDetail.ts
src/views/visual/board/detail/components/BasicConfiguration.vue
renamed from
src/views/data/board/detail/components/BasicConfiguration.vue
src/views/visual/board/detail/components/DataBindModal.vue
renamed from
src/views/data/board/detail/components/DataBindModal.vue
src/views/visual/board/detail/components/HistoryTrendModal.vue
renamed from
src/views/data/board/detail/components/HistoryTrendModal.vue
src/views/visual/board/detail/components/VisualConfiguration.vue
renamed from
src/views/data/board/detail/components/VisualConfiguration.vue
src/views/visual/board/detail/components/VisualOptionsModal.vue
renamed from
src/views/data/board/detail/components/VisualOptionsModal.vue
src/views/visual/board/detail/components/VisualWidgetSelect.vue
renamed from
src/views/data/board/detail/components/VisualWidgetSelect.vue
src/views/visual/board/detail/config/basicConfiguration.ts
renamed from
src/views/data/board/detail/config/basicConfiguration.ts
src/views/visual/board/detail/config/help.ts
renamed from
src/views/data/board/detail/config/help.ts
src/views/visual/board/detail/config/historyTrend.config.ts
renamed from
src/views/data/board/detail/config/historyTrend.config.ts
src/views/visual/board/detail/config/util.ts
renamed from
src/views/data/board/detail/config/util.ts
src/views/visual/board/detail/config/visualOptions.ts
renamed from
src/views/data/board/detail/config/visualOptions.ts
src/views/visual/board/detail/index.vue
renamed from
src/views/data/board/detail/index.vue
src/views/visual/board/hook/useCalcGridLayout.ts
renamed from
src/views/data/board/hook/useCalcGridLayout.ts
src/views/visual/board/hook/useSocketConnect.ts
renamed from
src/views/data/board/hook/useSocketConnect.ts
src/views/visual/board/hook/useUpdateCenter.ts
renamed from
src/views/data/board/hook/useUpdateCenter.ts
src/views/visual/board/index.vue
renamed from
src/views/data/board/index.vue
| ... | ... | @@ -136,9 +136,18 @@ |
| 136 | 136 | |
| 137 | 137 | const handleViewBoard = (record: DataBoardRecord) => { |
| 138 | 138 | const hasDetailPermission = hasPermission('api:yt:data_component:list'); |
| 139 | - if (hasDetailPermission) | |
| 140 | - router.push(`/data/board/detail/${encode(record.id)}/${encode(record.name)}`); | |
| 141 | - else createMessage.warning('没有权限'); | |
| 139 | + if (hasDetailPermission) { | |
| 140 | + const boardId = encode(record.id); | |
| 141 | + const boardName = encode(record.name); | |
| 142 | + router.push(`/visual/board/detail/${boardId}/${boardName}`); | |
| 143 | + // router.push({ | |
| 144 | + // name: 'visualBoardDetail' | |
| 145 | + // params: { | |
| 146 | + // boardId: encode(record.id), | |
| 147 | + // boardName: encode(record.name), | |
| 148 | + // }, | |
| 149 | + // }); | |
| 150 | + } else createMessage.warning('没有权限'); | |
| 142 | 151 | }; |
| 143 | 152 | |
| 144 | 153 | const handlePagenationPosition = () => { | ... | ... |
src/views/visual/board/types/type.ts
renamed from
src/views/data/board/types/type.ts