Showing
7 changed files
with
41 additions
and
27 deletions
@@ -3,8 +3,11 @@ | @@ -3,8 +3,11 @@ | ||
3 | import { DropMenu } from '/@/components/Dropdown'; | 3 | import { DropMenu } from '/@/components/Dropdown'; |
4 | import Dropdown from '/@/components/Dropdown/src/Dropdown.vue'; | 4 | import Dropdown from '/@/components/Dropdown/src/Dropdown.vue'; |
5 | import { Tooltip } from 'ant-design-vue'; | 5 | import { Tooltip } from 'ant-design-vue'; |
6 | - // import SvgIcon from '/@/components/Icon/src/SvgIcon.vue'; | ||
7 | - import { isBataBoardSharePage, MoreActionEvent } from '../../config/config'; | 6 | + import { |
7 | + isBataBoardSharePage, | ||
8 | + MoreActionEvent, | ||
9 | + VisualComponentPermission, | ||
10 | + } from '../../config/config'; | ||
8 | import { computed } from '@vue/reactivity'; | 11 | import { computed } from '@vue/reactivity'; |
9 | import { usePermission } from '/@/hooks/web/usePermission'; | 12 | import { usePermission } from '/@/hooks/web/usePermission'; |
10 | import { DataSource } from '/@/api/dataBoard/model'; | 13 | import { DataSource } from '/@/api/dataBoard/model'; |
@@ -19,9 +22,9 @@ | @@ -19,9 +22,9 @@ | ||
19 | const { hasPermission } = usePermission(); | 22 | const { hasPermission } = usePermission(); |
20 | const dropMenuList = computed<DropMenu[]>(() => { | 23 | const dropMenuList = computed<DropMenu[]>(() => { |
21 | const basicMenu: DropMenu[] = []; | 24 | const basicMenu: DropMenu[] = []; |
22 | - const hasUpdatePermission = hasPermission('api:yt:data_component:update:update'); | ||
23 | - const hasDeletePermission = hasPermission('api:yt:data_component:delete'); | ||
24 | - const hasCopyPermission = hasPermission('api:yt:dataBoardDetail:copy'); | 25 | + const hasUpdatePermission = hasPermission(VisualComponentPermission.UPDATE); |
26 | + const hasDeletePermission = hasPermission(VisualComponentPermission.DELETE); | ||
27 | + const hasCopyPermission = hasPermission(VisualComponentPermission.COPY); | ||
25 | if (hasUpdatePermission) | 28 | if (hasUpdatePermission) |
26 | basicMenu.push({ | 29 | basicMenu.push({ |
27 | text: '编辑组件', | 30 | text: '编辑组件', |
@@ -69,7 +72,6 @@ | @@ -69,7 +72,6 @@ | ||
69 | > | 72 | > |
70 | <Tooltip :title="item.deviceName" placement="topLeft"> | 73 | <Tooltip :title="item.deviceName" placement="topLeft"> |
71 | <div class="flex p-1"> | 74 | <div class="flex p-1"> |
72 | - <!-- <SvgIcon name="" prefix="iconfont" class="!fill-emerald-400" /> --> | ||
73 | <div class="truncate font-bold">{{ item.deviceRename || item.deviceName }}</div> | 75 | <div class="truncate font-bold">{{ item.deviceRename || item.deviceName }}</div> |
74 | </div> | 76 | </div> |
75 | </Tooltip> | 77 | </Tooltip> |
@@ -2,8 +2,6 @@ | @@ -2,8 +2,6 @@ | ||
2 | import { useSlots } from 'vue'; | 2 | import { useSlots } from 'vue'; |
3 | import { useUpdateCenter } from '../../hook/useUpdateCenter'; | 3 | import { useUpdateCenter } from '../../hook/useUpdateCenter'; |
4 | import { FrontDataSourceRecord } from '../../types/type'; | 4 | import { FrontDataSourceRecord } from '../../types/type'; |
5 | - // import type { WidgetWrapperRegister } from './type'; | ||
6 | - // import { DataSource } from '/@/api/dataBoard/model'; | ||
7 | 5 | ||
8 | const props = defineProps<{ | 6 | const props = defineProps<{ |
9 | dataSource: FrontDataSourceRecord[]; | 7 | dataSource: FrontDataSourceRecord[]; |
@@ -61,14 +59,14 @@ | @@ -61,14 +59,14 @@ | ||
61 | height: 100%; | 59 | height: 100%; |
62 | background-color: #fff; | 60 | background-color: #fff; |
63 | border-radius: 3px; | 61 | border-radius: 3px; |
64 | - box-shadow: 0px 1px 10px 0px rgba(0, 0, 0, 0.1); | 62 | + box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.1); |
65 | } | 63 | } |
64 | + | ||
66 | .widget-content { | 65 | .widget-content { |
67 | display: flex; | 66 | display: flex; |
68 | flex-wrap: wrap; | 67 | flex-wrap: wrap; |
69 | justify-content: center; | 68 | justify-content: center; |
70 | align-items: center; | 69 | align-items: center; |
71 | - | ||
72 | width: 100%; | 70 | width: 100%; |
73 | height: 100%; | 71 | height: 100%; |
74 | } | 72 | } |
src/views/visual/board/components/WidgetWrapper/type.ts
deleted
100644 → 0
@@ -4,7 +4,19 @@ export enum MoreActionEvent { | @@ -4,7 +4,19 @@ export enum MoreActionEvent { | ||
4 | DELETE = 'delete', | 4 | DELETE = 'delete', |
5 | } | 5 | } |
6 | 6 | ||
7 | -// export enum | 7 | +export enum VisualBoardPermission { |
8 | + UPDATE = 'api:yt:data_board:update:update', | ||
9 | + DELETE = 'api:yt:data_board:delete', | ||
10 | + CREATE = '', | ||
11 | + DETAIL = 'api:yt:data_component:list', | ||
12 | +} | ||
13 | + | ||
14 | +export enum VisualComponentPermission { | ||
15 | + UPDATE = 'api:yt:data_component:update:update', | ||
16 | + DELETE = 'api:yt:data_component:delete', | ||
17 | + COPY = 'api:yt:dataBoardDetail:copy', | ||
18 | + CREATE = 'api:yt:data_component:add:post', | ||
19 | +} | ||
8 | 20 | ||
9 | export const DEFAULT_MAX_COL = 24; | 21 | export const DEFAULT_MAX_COL = 24; |
10 | export const DEFAULT_WIDGET_WIDTH = 6; | 22 | export const DEFAULT_WIDGET_WIDTH = 6; |
@@ -16,6 +16,7 @@ | @@ -16,6 +16,7 @@ | ||
16 | DEFAULT_WIDGET_WIDTH, | 16 | DEFAULT_WIDGET_WIDTH, |
17 | isBataBoardSharePage, | 17 | isBataBoardSharePage, |
18 | MoreActionEvent, | 18 | MoreActionEvent, |
19 | + VisualComponentPermission, | ||
19 | } from '../config/config'; | 20 | } from '../config/config'; |
20 | import { | 21 | import { |
21 | addDataComponent, | 22 | addDataComponent, |
@@ -391,7 +392,7 @@ | @@ -391,7 +392,7 @@ | ||
391 | </div> | 392 | </div> |
392 | </template> | 393 | </template> |
393 | <template #extra> | 394 | <template #extra> |
394 | - <Authority value="api:yt:data_component:add:post"> | 395 | + <Authority :value="VisualComponentPermission.CREATE"> |
395 | <Button v-if="!getIsSharePage" type="primary" @click="handleOpenCreatePanel"> | 396 | <Button v-if="!getIsSharePage" type="primary" @click="handleOpenCreatePanel"> |
396 | 创建组件 | 397 | 创建组件 |
397 | </Button> | 398 | </Button> |
@@ -439,7 +440,6 @@ | @@ -439,7 +440,6 @@ | ||
439 | :data-source="item.record.dataSource" | 440 | :data-source="item.record.dataSource" |
440 | > | 441 | > |
441 | <template #header> | 442 | <template #header> |
442 | - <!-- <div>header</div> --> | ||
443 | <BaseWidgetHeader | 443 | <BaseWidgetHeader |
444 | :record="item.record.dataSource" | 444 | :record="item.record.dataSource" |
445 | :id="item.record.id" | 445 | :id="item.record.id" |
@@ -448,11 +448,6 @@ | @@ -448,11 +448,6 @@ | ||
448 | > | 448 | > |
449 | <template #moreAction> | 449 | <template #moreAction> |
450 | <Tooltip title="趋势"> | 450 | <Tooltip title="趋势"> |
451 | - <!-- <LineChartOutlined | ||
452 | - v-if="!getIsSharePage" | ||
453 | - class="cursor-pointer mx-1" | ||
454 | - @click="handleOpenHistroyDataModal(item.record.dataSource)" | ||
455 | - /> --> | ||
456 | <img | 451 | <img |
457 | :src="trendIcon" | 452 | :src="trendIcon" |
458 | v-if="!getIsSharePage" | 453 | v-if="!getIsSharePage" |
@@ -494,14 +489,18 @@ | @@ -494,14 +489,18 @@ | ||
494 | .vue-grid-item:not(.vue-grid-placeholder) { | 489 | .vue-grid-item:not(.vue-grid-placeholder) { |
495 | background: #fff; | 490 | background: #fff; |
496 | border: none !important; | 491 | border: none !important; |
492 | + | ||
497 | /* border: 1px solid black; */ | 493 | /* border: 1px solid black; */ |
498 | } | 494 | } |
495 | + | ||
499 | .vue-grid-item .resizing { | 496 | .vue-grid-item .resizing { |
500 | opacity: 0.9; | 497 | opacity: 0.9; |
501 | } | 498 | } |
499 | + | ||
502 | .vue-grid-item .static { | 500 | .vue-grid-item .static { |
503 | background: #cce; | 501 | background: #cce; |
504 | } | 502 | } |
503 | + | ||
505 | .vue-grid-item .text { | 504 | .vue-grid-item .text { |
506 | font-size: 24px; | 505 | font-size: 24px; |
507 | text-align: center; | 506 | text-align: center; |
@@ -514,16 +513,20 @@ | @@ -514,16 +513,20 @@ | ||
514 | height: 100%; | 513 | height: 100%; |
515 | width: 100%; | 514 | width: 100%; |
516 | } | 515 | } |
516 | + | ||
517 | .vue-grid-item .no-drag { | 517 | .vue-grid-item .no-drag { |
518 | height: 100%; | 518 | height: 100%; |
519 | width: 100%; | 519 | width: 100%; |
520 | } | 520 | } |
521 | + | ||
521 | .vue-grid-item .minMax { | 522 | .vue-grid-item .minMax { |
522 | font-size: 12px; | 523 | font-size: 12px; |
523 | } | 524 | } |
525 | + | ||
524 | .vue-grid-item .add { | 526 | .vue-grid-item .add { |
525 | cursor: pointer; | 527 | cursor: pointer; |
526 | } | 528 | } |
529 | + | ||
527 | .vue-draggable-handle { | 530 | .vue-draggable-handle { |
528 | position: absolute; | 531 | position: absolute; |
529 | width: 20px; | 532 | width: 20px; |
@@ -8,6 +8,10 @@ interface GapRecord { | @@ -8,6 +8,10 @@ interface GapRecord { | ||
8 | endIndex: Nullable<number>; | 8 | endIndex: Nullable<number>; |
9 | } | 9 | } |
10 | 10 | ||
11 | +/** | ||
12 | + * @description calculate where to place the component | ||
13 | + * @returns | ||
14 | + */ | ||
11 | export function useCalcGridLayout() { | 15 | export function useCalcGridLayout() { |
12 | const calcLayoutInfo = ( | 16 | const calcLayoutInfo = ( |
13 | layoutInfo: Layout[], | 17 | layoutInfo: Layout[], |
@@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
7 | import { useMessage } from '/@/hooks/web/useMessage'; | 7 | import { useMessage } from '/@/hooks/web/useMessage'; |
8 | import Dropdown from '/@/components/Dropdown/src/Dropdown.vue'; | 8 | import Dropdown from '/@/components/Dropdown/src/Dropdown.vue'; |
9 | import { DropMenu } from '/@/components/Dropdown'; | 9 | import { DropMenu } from '/@/components/Dropdown'; |
10 | - import { DATA_BOARD_SHARE_URL, MoreActionEvent } from './config/config'; | 10 | + import { DATA_BOARD_SHARE_URL, MoreActionEvent, VisualBoardPermission } from './config/config'; |
11 | import { useModal } from '/@/components/Modal'; | 11 | import { useModal } from '/@/components/Modal'; |
12 | import PanelDetailModal from './components/PanelDetailModal.vue'; | 12 | import PanelDetailModal from './components/PanelDetailModal.vue'; |
13 | import { getDataBoardList, deleteDataBoard } from '/@/api/dataBoard'; | 13 | import { getDataBoardList, deleteDataBoard } from '/@/api/dataBoard'; |
@@ -90,8 +90,8 @@ | @@ -90,8 +90,8 @@ | ||
90 | 90 | ||
91 | const { hasPermission } = usePermission(); | 91 | const { hasPermission } = usePermission(); |
92 | const dropMenuList = computed<DropMenu[]>(() => { | 92 | const dropMenuList = computed<DropMenu[]>(() => { |
93 | - const hasUpdatePermission = hasPermission('api:yt:data_board:update:update'); | ||
94 | - const hasDeletePermission = hasPermission('api:yt:data_board:delete'); | 93 | + const hasUpdatePermission = hasPermission(VisualBoardPermission.UPDATE); |
94 | + const hasDeletePermission = hasPermission(VisualBoardPermission.DELETE); | ||
95 | const basicMenu: DropMenu[] = []; | 95 | const basicMenu: DropMenu[] = []; |
96 | if (hasUpdatePermission) | 96 | if (hasUpdatePermission) |
97 | basicMenu.push({ | 97 | basicMenu.push({ |
@@ -160,7 +160,7 @@ | @@ -160,7 +160,7 @@ | ||
160 | const [registerModal, { openModal }] = useModal(); | 160 | const [registerModal, { openModal }] = useModal(); |
161 | 161 | ||
162 | const handleViewBoard = (record: DataBoardRecord) => { | 162 | const handleViewBoard = (record: DataBoardRecord) => { |
163 | - const hasDetailPermission = hasPermission('api:yt:data_component:list'); | 163 | + const hasDetailPermission = hasPermission(VisualBoardPermission.DETAIL); |
164 | if (hasDetailPermission) { | 164 | if (hasDetailPermission) { |
165 | const boardId = encode(record.id); | 165 | const boardId = encode(record.id); |
166 | const boardName = encode(record.name); | 166 | const boardName = encode(record.name); |
@@ -179,8 +179,6 @@ | @@ -179,8 +179,6 @@ | ||
179 | '.ant-spin-container' | 179 | '.ant-spin-container' |
180 | ) as HTMLElement; | 180 | ) as HTMLElement; |
181 | listContainerEl && | 181 | listContainerEl && |
182 | - // (listContainerEl.style.minHeight = listContainerHeight + 'px') && | ||
183 | - // (listContainerEl.style.maxHeight = listContainerHeight + 'px') && | ||
184 | (listContainerEl.style.height = listContainerHeight + 'px') && | 182 | (listContainerEl.style.height = listContainerHeight + 'px') && |
185 | (listContainerEl.style.overflowY = 'auto') && | 183 | (listContainerEl.style.overflowY = 'auto') && |
186 | (listContainerEl.style.overflowX = 'hidden'); | 184 | (listContainerEl.style.overflowX = 'hidden'); |