Commit d4c3666a508a914ea0a37c0d1bd3a4dbc41d4ae2

Authored by ww
1 parent 49db5844

perf: optimize the code

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