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,6 +4,7 @@ import { deviceProfile, getGATEWAYdevice } from '/@/api/device/deviceManager';
4 4
5 export enum TypeEnum { 5 export enum TypeEnum {
6 IS_GATEWAY = 'GATEWAY', 6 IS_GATEWAY = 'GATEWAY',
  7 + SENSOR = 'SENSOR',
7 } 8 }
8 export const isGateWay = (type: string) => { 9 export const isGateWay = (type: string) => {
9 return type === TypeEnum.IS_GATEWAY; 10 return type === TypeEnum.IS_GATEWAY;
@@ -5,46 +5,60 @@ import { DeviceTypeEnum } from '/@/api/device/model/deviceModel'; @@ -5,46 +5,60 @@ import { DeviceTypeEnum } from '/@/api/device/model/deviceModel';
5 import { getCustomerList } from '/@/api/device/deviceManager'; 5 import { getCustomerList } from '/@/api/device/deviceManager';
6 import { DescItem } from '/@/components/Description/index'; 6 import { DescItem } from '/@/components/Description/index';
7 import moment from 'moment'; 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 export const realTimeDataColumns: BasicColumn[] = [ 64 export const realTimeDataColumns: BasicColumn[] = [
@@ -10,7 +10,11 @@ @@ -10,7 +10,11 @@
10 > 10 >
11 <Tabs v-model:activeKey="activeKey" :size="size"> 11 <Tabs v-model:activeKey="activeKey" :size="size">
12 <TabPane key="1" tab="详情"> 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 </TabPane> 18 </TabPane>
15 <TabPane key="2" tab="实时数据" v-if="deviceDetail?.deviceType !== 'GATEWAY'"> 19 <TabPane key="2" tab="实时数据" v-if="deviceDetail?.deviceType !== 'GATEWAY'">
16 <RealTimeData :deviceDetail="deviceDetail" /> 20 <RealTimeData :deviceDetail="deviceDetail" />
@@ -67,7 +71,7 @@ @@ -67,7 +71,7 @@
67 TBoxDetail, 71 TBoxDetail,
68 HistoryData, 72 HistoryData,
69 }, 73 },
70 - emits: ['reload', 'register', 'openTbDeviceDetail'], 74 + emits: ['reload', 'register', 'openTbDeviceDetail', 'openGatewayDeviceDetail'],
71 setup(_props, { emit }) { 75 setup(_props, { emit }) {
72 const activeKey = ref('1'); 76 const activeKey = ref('1');
73 const size = ref('small'); 77 const size = ref('small');
@@ -92,6 +96,10 @@ @@ -92,6 +96,10 @@
92 const handleOpenTbDeviceDetail = (data: { id: string; tbDeviceId: string }) => { 96 const handleOpenTbDeviceDetail = (data: { id: string; tbDeviceId: string }) => {
93 emit('openTbDeviceDetail', data); 97 emit('openTbDeviceDetail', data);
94 }; 98 };
  99 +
  100 + const handleOpenGatewayDevice = (data: { gatewayId: string; tbDeviceId: string }) => {
  101 + emit('openGatewayDeviceDetail', { id: data.gatewayId });
  102 + };
95 return { 103 return {
96 size, 104 size,
97 activeKey, 105 activeKey,
@@ -101,6 +109,7 @@ @@ -101,6 +109,7 @@
101 deviceDetailRef, 109 deviceDetailRef,
102 tbDeviceId, 110 tbDeviceId,
103 handleOpenTbDeviceDetail, 111 handleOpenTbDeviceDetail,
  112 + handleOpenGatewayDevice,
104 }; 113 };
105 }, 114 },
106 }); 115 });
@@ -92,10 +92,11 @@ @@ -92,10 +92,11 @@
92 required: true, 92 required: true,
93 }, 93 },
94 }, 94 },
95 - setup(props) { 95 + emits: ['open-gateway-device'],
  96 + setup(props, { emit }) {
96 const [register] = useDescription({ 97 const [register] = useDescription({
97 layout: 'vertical', 98 layout: 'vertical',
98 - schema: descSchema, 99 + schema: descSchema(emit),
99 column: 2, 100 column: 2,
100 }); 101 });
101 102
@@ -152,9 +152,12 @@ @@ -152,9 +152,12 @@
152 <DeviceDetailDrawer 152 <DeviceDetailDrawer
153 @register="registerDetailDrawer" 153 @register="registerDetailDrawer"
154 @open-tb-device-detail="handleOpenTbDeviceDetail" 154 @open-tb-device-detail="handleOpenTbDeviceDetail"
  155 + @open-gateway-device-detail="handleOpenGatewayDetail"
155 /> 156 />
156 <DeviceDetailDrawer @register="registerTbDetailDrawer" /> 157 <DeviceDetailDrawer @register="registerTbDetailDrawer" />
157 158
  159 + <DeviceDetailDrawer @register="registerGatewayDetailDrawer" />
  160 +
158 <DeviceModal @register="registerModal" @success="handleSuccess" @reload="handleSuccess" /> 161 <DeviceModal @register="registerModal" @success="handleSuccess" @reload="handleSuccess" />
159 <CustomerModal @register="registerCustomerModal" @reload="handleReload" /> 162 <CustomerModal @register="registerCustomerModal" @reload="handleReload" />
160 </PageWrapper> 163 </PageWrapper>
@@ -218,6 +221,7 @@ @@ -218,6 +221,7 @@
218 const [registerCustomerModal, { openModal: openCustomerModal }] = useModal(); 221 const [registerCustomerModal, { openModal: openCustomerModal }] = useModal();
219 const [registerDetailDrawer, { openDrawer }] = useDrawer(); 222 const [registerDetailDrawer, { openDrawer }] = useDrawer();
220 const [registerTbDetailDrawer, { openDrawer: openTbDeviceDrawer }] = useDrawer(); 223 const [registerTbDetailDrawer, { openDrawer: openTbDeviceDrawer }] = useDrawer();
  224 + const [registerGatewayDetailDrawer, { openDrawer: openGatewayDetailDrawer }] = useDrawer();
221 225
222 const [registerTable, { reload, setSelectedRowKeys, setProps }] = useTable({ 226 const [registerTable, { reload, setSelectedRowKeys, setProps }] = useTable({
223 title: '设备列表', 227 title: '设备列表',
@@ -329,6 +333,10 @@ @@ -329,6 +333,10 @@
329 openTbDeviceDrawer(true, data); 333 openTbDeviceDrawer(true, data);
330 }; 334 };
331 335
  336 + const handleOpenGatewayDetail = (data: { id: string; tbDeviceId: string }) => {
  337 + openGatewayDetailDrawer(true, data);
  338 + };
  339 +
332 return { 340 return {
333 registerTable, 341 registerTable,
334 handleCreate, 342 handleCreate,
@@ -354,6 +362,8 @@ @@ -354,6 +362,8 @@
354 handleReload, 362 handleReload,
355 registerTbDetailDrawer, 363 registerTbDetailDrawer,
356 handleOpenTbDeviceDetail, 364 handleOpenTbDeviceDetail,
  365 + handleOpenGatewayDetail,
  366 + registerGatewayDetailDrawer,
357 }; 367 };
358 }, 368 },
359 }); 369 });