Commit 8414e9eff4dbbc87368e7ed31d836794459b9d1f

Authored by ww
1 parent 6b4e205d

perf: DEFECT-823 device detail open sensor devcie can open gateway device

... ... @@ -4,6 +4,7 @@ import { deviceProfile, getGATEWAYdevice } from '/@/api/device/deviceManager';
4 4
5 5 export enum TypeEnum {
6 6 IS_GATEWAY = 'GATEWAY',
  7 + SENSOR = 'SENSOR',
7 8 }
8 9 export const isGateWay = (type: string) => {
9 10 return type === TypeEnum.IS_GATEWAY;
... ...
... ... @@ -5,46 +5,60 @@ import { DeviceTypeEnum } from '/@/api/device/model/deviceModel';
5 5 import { getCustomerList } from '/@/api/device/deviceManager';
6 6 import { DescItem } from '/@/components/Description/index';
7 7 import moment from 'moment';
  8 +import { h } from 'vue';
  9 +import { Button } from 'ant-design-vue';
  10 +import { TypeEnum } from './data';
  11 +
8 12 // 设备详情的描述
9   -export const descSchema: DescItem[] = [
10   - {
11   - field: 'createTime',
12   - label: '创建时间',
13   - },
14   - {
15   - field: 'name',
16   - label: '设备名称',
17   - },
18   - {
19   - field: 'label',
20   - label: '设备标签',
21   - },
22   - {
23   - field: 'deviceProfile.name',
24   - label: '产品',
25   - },
26   - {
27   - field: 'gatewayName',
28   - label: '所属网关',
29   - show: (data) => !!data.gatewayName,
30   - },
31   - {
32   - field: 'deviceType',
33   - label: '设备类型',
34   - render: (text) => {
35   - return text === DeviceTypeEnum.GATEWAY
36   - ? '网关设备'
37   - : text == DeviceTypeEnum.DIRECT_CONNECTION
38   - ? '直连设备'
39   - : '网关子设备';
  13 +export const descSchema = (emit: EmitType): DescItem[] => {
  14 + return [
  15 + {
  16 + field: 'createTime',
  17 + label: '创建时间',
40 18 },
41   - },
42   - {
43   - field: 'description',
44   - label: '描述',
45   - span: 2,
46   - },
47   -];
  19 + {
  20 + field: 'name',
  21 + label: '设备名称',
  22 + },
  23 + {
  24 + field: 'label',
  25 + label: '设备标签',
  26 + },
  27 + {
  28 + field: 'deviceProfile.name',
  29 + label: '产品',
  30 + render(val, data) {
  31 + if (TypeEnum.SENSOR !== data.deviceType) return val;
  32 + return h(
  33 + Button,
  34 + { type: 'link', style: { padding: 0 }, onClick: () => emit('open-gateway-device', data) },
  35 + { default: () => val }
  36 + );
  37 + },
  38 + },
  39 + {
  40 + field: 'gatewayName',
  41 + label: '所属网关',
  42 + show: (data) => !!data.gatewayName,
  43 + },
  44 + {
  45 + field: 'deviceType',
  46 + label: '设备类型',
  47 + render: (text) => {
  48 + return text === DeviceTypeEnum.GATEWAY
  49 + ? '网关设备'
  50 + : text == DeviceTypeEnum.DIRECT_CONNECTION
  51 + ? '直连设备'
  52 + : '网关子设备';
  53 + },
  54 + },
  55 + {
  56 + field: 'description',
  57 + label: '描述',
  58 + // span: 2,
  59 + },
  60 + ];
  61 +};
48 62
49 63 // 实时数据表格
50 64 export const realTimeDataColumns: BasicColumn[] = [
... ...
... ... @@ -10,7 +10,11 @@
10 10 >
11 11 <Tabs v-model:activeKey="activeKey" :size="size">
12 12 <TabPane key="1" tab="详情">
13   - <Detail ref="deviceDetailRef" :deviceDetail="deviceDetail" />
  13 + <Detail
  14 + ref="deviceDetailRef"
  15 + :deviceDetail="deviceDetail"
  16 + @open-gateway-device="handleOpenGatewayDevice"
  17 + />
14 18 </TabPane>
15 19 <TabPane key="2" tab="实时数据" v-if="deviceDetail?.deviceType !== 'GATEWAY'">
16 20 <RealTimeData :deviceDetail="deviceDetail" />
... ... @@ -67,7 +71,7 @@
67 71 TBoxDetail,
68 72 HistoryData,
69 73 },
70   - emits: ['reload', 'register', 'openTbDeviceDetail'],
  74 + emits: ['reload', 'register', 'openTbDeviceDetail', 'openGatewayDeviceDetail'],
71 75 setup(_props, { emit }) {
72 76 const activeKey = ref('1');
73 77 const size = ref('small');
... ... @@ -92,6 +96,10 @@
92 96 const handleOpenTbDeviceDetail = (data: { id: string; tbDeviceId: string }) => {
93 97 emit('openTbDeviceDetail', data);
94 98 };
  99 +
  100 + const handleOpenGatewayDevice = (data: { gatewayId: string; tbDeviceId: string }) => {
  101 + emit('openGatewayDeviceDetail', { id: data.gatewayId });
  102 + };
95 103 return {
96 104 size,
97 105 activeKey,
... ... @@ -101,6 +109,7 @@
101 109 deviceDetailRef,
102 110 tbDeviceId,
103 111 handleOpenTbDeviceDetail,
  112 + handleOpenGatewayDevice,
104 113 };
105 114 },
106 115 });
... ...
... ... @@ -92,10 +92,11 @@
92 92 required: true,
93 93 },
94 94 },
95   - setup(props) {
  95 + emits: ['open-gateway-device'],
  96 + setup(props, { emit }) {
96 97 const [register] = useDescription({
97 98 layout: 'vertical',
98   - schema: descSchema,
  99 + schema: descSchema(emit),
99 100 column: 2,
100 101 });
101 102
... ...
... ... @@ -152,9 +152,12 @@
152 152 <DeviceDetailDrawer
153 153 @register="registerDetailDrawer"
154 154 @open-tb-device-detail="handleOpenTbDeviceDetail"
  155 + @open-gateway-device-detail="handleOpenGatewayDetail"
155 156 />
156 157 <DeviceDetailDrawer @register="registerTbDetailDrawer" />
157 158
  159 + <DeviceDetailDrawer @register="registerGatewayDetailDrawer" />
  160 +
158 161 <DeviceModal @register="registerModal" @success="handleSuccess" @reload="handleSuccess" />
159 162 <CustomerModal @register="registerCustomerModal" @reload="handleReload" />
160 163 </PageWrapper>
... ... @@ -218,6 +221,7 @@
218 221 const [registerCustomerModal, { openModal: openCustomerModal }] = useModal();
219 222 const [registerDetailDrawer, { openDrawer }] = useDrawer();
220 223 const [registerTbDetailDrawer, { openDrawer: openTbDeviceDrawer }] = useDrawer();
  224 + const [registerGatewayDetailDrawer, { openDrawer: openGatewayDetailDrawer }] = useDrawer();
221 225
222 226 const [registerTable, { reload, setSelectedRowKeys, setProps }] = useTable({
223 227 title: '设备列表',
... ... @@ -329,6 +333,10 @@
329 333 openTbDeviceDrawer(true, data);
330 334 };
331 335
  336 + const handleOpenGatewayDetail = (data: { id: string; tbDeviceId: string }) => {
  337 + openGatewayDetailDrawer(true, data);
  338 + };
  339 +
332 340 return {
333 341 registerTable,
334 342 handleCreate,
... ... @@ -354,6 +362,8 @@
354 362 handleReload,
355 363 registerTbDetailDrawer,
356 364 handleOpenTbDeviceDetail,
  365 + handleOpenGatewayDetail,
  366 + registerGatewayDetailDrawer,
357 367 };
358 368 },
359 369 });
... ...