From 3e91c55148bb7d7012733bc0c5d7284be018978e Mon Sep 17 00:00:00 2001 From: 23688nl <329261658@qq.com> Date: Fri, 26 Aug 2022 18:05:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4:=20=E9=A0=85=E7=9B=AE?= =?UTF-8?q?=E7=AE=A1=E7=90=86=20=E8=A9=B3=E6=83=85=E9=A0=81=20=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=AE=A1=E7=90=86=E5=92=8C=20=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=20=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/images/devcie_default.png | Bin 0 -> 28877 bytes public/index.html | 2 +- src/api/iot/project_new.js | 28 + src/assets/images/devcie_default.png | Bin 0 -> 28877 bytes src/components/Cards/index.js | 8 + src/components/Cards/src/ESimpleCard/index.js | 84 +++ .../Cards/src/ESimpleCard/style.scss | 53 ++ src/components/Edescriptions/index.js | 9 + .../Edescriptions/src/descriptions-item.js | 30 + .../Edescriptions/src/descriptions-row.js | 116 ++++ src/components/Edescriptions/src/index.js | 180 ++++++ src/config/env.js | 9 +- src/views/iot/project/index.vue | 6 +- .../DeviceManage/EDeviceChildren.vue | 442 +++++++++++++++ .../profileV2/DeviceManage/EDeviceTable.vue | 512 ++++++++++++++++++ .../profileV2/DeviceManage/EDynamicTable.vue | 122 +++++ .../project/profileV2/DeviceManage/index.vue | 48 ++ .../iot/project/profileV2/ECensusCards.vue | 81 +++ .../iot/project/profileV2/EEchartsGauge.vue | 141 +++++ .../iot/project/profileV2/EEchartsLine.vue | 66 +++ .../iot/project/profileV2/EEchartsPie.vue | 122 +++++ src/views/iot/project/profileV2/ENavMenu.vue | 91 ++++ .../project/profileV2/EObjectContainer.vue | 47 ++ .../iot/project/profileV2/EObjectInfo.vue | 426 +++++++++++++++ .../iot/project/profileV2/EObjectSpace.vue | 371 +++++++++++++ .../project/profileV2/EObjectSpaceDevice.vue | 353 ++++++++++++ .../iot/project/profileV2/EObjectTenant.vue | 386 +++++++++++++ .../iot/project/profileV2/EProjectManage.vue | 19 + .../iot/project/profileV2/ETodayRatio.vue | 169 ++++++ .../iot/project/profileV2/ETrendCensus.vue | 205 +++++++ .../iot/project/profileV2/ETypeCensus.vue | 258 +++++++++ src/views/iot/project/profileV2/details.vue | 451 +++++++++++++++ src/views/profile/DeviceDetailsView/index.vue | 2 +- src/views/profile/DeviceDetailsView/info.vue | 2 +- 34 files changed, 4830 insertions(+), 9 deletions(-) create mode 100644 public/images/devcie_default.png create mode 100644 src/api/iot/project_new.js create mode 100644 src/assets/images/devcie_default.png create mode 100644 src/components/Cards/index.js create mode 100644 src/components/Cards/src/ESimpleCard/index.js create mode 100644 src/components/Cards/src/ESimpleCard/style.scss create mode 100644 src/components/Edescriptions/index.js create mode 100644 src/components/Edescriptions/src/descriptions-item.js create mode 100644 src/components/Edescriptions/src/descriptions-row.js create mode 100644 src/components/Edescriptions/src/index.js create mode 100644 src/views/iot/project/profileV2/DeviceManage/EDeviceChildren.vue create mode 100644 src/views/iot/project/profileV2/DeviceManage/EDeviceTable.vue create mode 100644 src/views/iot/project/profileV2/DeviceManage/EDynamicTable.vue create mode 100644 src/views/iot/project/profileV2/DeviceManage/index.vue create mode 100644 src/views/iot/project/profileV2/ECensusCards.vue create mode 100644 src/views/iot/project/profileV2/EEchartsGauge.vue create mode 100644 src/views/iot/project/profileV2/EEchartsLine.vue create mode 100644 src/views/iot/project/profileV2/EEchartsPie.vue create mode 100644 src/views/iot/project/profileV2/ENavMenu.vue create mode 100644 src/views/iot/project/profileV2/EObjectContainer.vue create mode 100644 src/views/iot/project/profileV2/EObjectInfo.vue create mode 100644 src/views/iot/project/profileV2/EObjectSpace.vue create mode 100644 src/views/iot/project/profileV2/EObjectSpaceDevice.vue create mode 100644 src/views/iot/project/profileV2/EObjectTenant.vue create mode 100644 src/views/iot/project/profileV2/EProjectManage.vue create mode 100644 src/views/iot/project/profileV2/ETodayRatio.vue create mode 100644 src/views/iot/project/profileV2/ETrendCensus.vue create mode 100644 src/views/iot/project/profileV2/ETypeCensus.vue create mode 100644 src/views/iot/project/profileV2/details.vue diff --git a/public/images/devcie_default.png b/public/images/devcie_default.png new file mode 100644 index 0000000000000000000000000000000000000000..392d8bbc2c52b3842e6c5daab4007af559822f6f GIT binary patch literal 28877 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 gzZ>WOH+2I3e?| - + diff --git a/src/api/iot/project_new.js b/src/api/iot/project_new.js new file mode 100644 index 00000000..675b67ff --- /dev/null +++ b/src/api/iot/project_new.js @@ -0,0 +1,28 @@ +import request from "@/utils/request"; + +// 查询 项目 网关/子设备 +export function listProjectDevice(query) { + return request({ + url: "/iot/device/getProjectDeviceList", + method: "get", + params: query + }); +} + +// 查询 项目 型号 +export function listProjectModel(query) { + return request({ + url: "/iot/model/getProjectModelList", + method: "get", + params: query + }); +} + +// 查询 项目 子设备 表格 列 +export function listProjectTableFilter(query) { + return request({ + url: "/iot/dev/prod/fun/tableHeader", + method: "get", + params: query + }); +} diff --git a/src/assets/images/devcie_default.png b/src/assets/images/devcie_default.png new file mode 100644 index 0000000000000000000000000000000000000000..392d8bbc2c52b3842e6c5daab4007af559822f6f GIT binary patch literal 28877 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 gzZ>WOH+2I3e?| + { + (title || extra || $slots.cardHeader) ? +
+ { $slots.cardHeader || + + } +
+ : null + } +
+ { + $slots.cardBody + } +
+ + ) + } +} diff --git a/src/components/Cards/src/ESimpleCard/style.scss b/src/components/Cards/src/ESimpleCard/style.scss new file mode 100644 index 00000000..a62831c9 --- /dev/null +++ b/src/components/Cards/src/ESimpleCard/style.scss @@ -0,0 +1,53 @@ +.e-simple-card { + width: 100%; + height: 100%; + background: #FFFFFF; + border: 1px solid #E8E8E8; + border-radius: 5px; + +} +.e-simple-card__header { + border-bottom: 1px solid #E8E8E8; + padding: 10px; +} +.e-simple-card__body { + padding: 20px; +} + +.e-simple-card__header .e-header-template { + display: flex; + width: 100%; + height: 15px; + align-items: center; +} +.e-header-template .template-left { + width: 60%; + height: 100%; + display: flex; + justify-content: flex-start; + align-items: center; +} +.e-header-template .template-left .template-title { + font-size: 14px; + font-family: 'Source Han Sans CN'; + font-weight: 400; + color: #344567; +} +.e-header-template .template-left .template-icon { + font-size: 14px; + margin-right: 5px; + color: #344567; +} + +.e-header-template .template__extra { + width: 40%; + height: 100%; + display: flex; + justify-content: flex-end; + align-items: center; + font-size: 16px; +} + +.e-header-template .template__extra .icon:hover { + color: #1890ff +} diff --git a/src/components/Edescriptions/index.js b/src/components/Edescriptions/index.js new file mode 100644 index 00000000..c4cf7626 --- /dev/null +++ b/src/components/Edescriptions/index.js @@ -0,0 +1,9 @@ +import Descriptions from './src/index'; +import './style.scss' + +/* istanbul ignore next */ +Descriptions.install = function install(Vue) { + Vue.component(Descriptions.name, Descriptions); +}; + +export default Descriptions; diff --git a/src/components/Edescriptions/src/descriptions-item.js b/src/components/Edescriptions/src/descriptions-item.js new file mode 100644 index 00000000..d764543c --- /dev/null +++ b/src/components/Edescriptions/src/descriptions-item.js @@ -0,0 +1,30 @@ +export default { + name: 'ElDescriptionsItem', + props: { + label: { + type: String, + default: '' + }, + span: { + type: Number, + default: 1 + }, + contentClassName: { + type: String, + default: '' + }, + contentStyle: { + type: Object + }, + labelClassName: { + type: String, + default: '' + }, + labelStyle: { + type: Object + } + }, + render() { + return null; + } +}; diff --git a/src/components/Edescriptions/src/descriptions-row.js b/src/components/Edescriptions/src/descriptions-row.js new file mode 100644 index 00000000..d75dd28e --- /dev/null +++ b/src/components/Edescriptions/src/descriptions-row.js @@ -0,0 +1,116 @@ +export default { + name: 'ElDescriptionsRow', + props: { + row: { + type: Array + } + }, + inject: ['elDescriptions'], + render(h) { + const { elDescriptions } = this; + const row = (this.row || []).map(item => { + return { + ...item, + label: item.slots.label || item.props.label, + ...['labelClassName', 'contentClassName', 'labelStyle', 'contentStyle'].reduce((res, key) => { + res[key] = item.props[key] || elDescriptions[key]; + return res; + }, {}) + }; + }); + if (elDescriptions.direction === 'vertical') { + return ( + + + { + row.map(item => { + return ( + {item.label} + ); + }) + } + + + { + row.map(item =>{ + return ( + {item.slots.default} + ); + }) + } + + + ); + } + if (elDescriptions.border) { + return ( + + + { + row.map(item=> { + return ([ + {item.label}, + {item.slots.default} + ]); + }) + } + + + ); + } + return ( + + + { + row.map(item=> { + return ( + +
+ {item.label} + {item.slots.default} +
+ ); + }) + } + + + ); + } +}; diff --git a/src/components/Edescriptions/src/index.js b/src/components/Edescriptions/src/index.js new file mode 100644 index 00000000..43c8c3d3 --- /dev/null +++ b/src/components/Edescriptions/src/index.js @@ -0,0 +1,180 @@ +import DescriptionsRow from './descriptions-row'; +import { isFunction } from 'element-ui/src/utils/types'; + +export default { + name: 'ElDescriptions', + components: { + [DescriptionsRow.name]: DescriptionsRow + }, + props: { + border: { + type: Boolean, + default: false + }, + column: { + type: Number, + default: 3 + }, + direction: { + type: String, + default: 'horizontal' + }, + size: { + type: String + // validator: isValidComponentSize, + }, + title: { + type: String, + default: '' + }, + extra: { + type: String, + default: '' + }, + labelStyle: { + type: Object + }, + contentStyle: { + type: Object + }, + labelClassName: { + type: String, + default: '' + }, + contentClassName: { + type: String, + default: '' + }, + colon: { + type: Boolean, + default: true + } + }, + computed: { + descriptionsSize() { + return this.size || (this.$ELEMENT || {}).size; + } + }, + provide() { + return { + elDescriptions: this + }; + }, + methods: { + getOptionProps(vnode) { + if (vnode.componentOptions) { + const componentOptions = vnode.componentOptions; + const { propsData = {}, Ctor = {} } = componentOptions; + const props = (Ctor.options || {}).props || {}; + const res = {}; + for (const k in props) { + const v = props[k]; + const defaultValue = v.default; + if (defaultValue !== undefined) { + res[k] = isFunction(defaultValue) ? defaultValue.call(vnode) : defaultValue; + } + } + return { ...res, ...propsData }; + } + return {}; + }, + getSlots(vnode) { + let componentOptions = vnode.componentOptions || {}; + const children = vnode.children || componentOptions.children || []; + const slots = {}; + children.forEach(child => { + if (!this.isEmptyElement(child)) { + const name = (child.data && child.data.slot) || 'default'; + slots[name] = slots[name] || []; + if (child.tag === 'template') { + slots[name].push(child.children); + } else { + slots[name].push(child); + } + } + }); + return { ...slots }; + }, + isEmptyElement(c) { + return !(c.tag || (c.text && c.text.trim() !== '')); + }, + filledNode(node, span, count, isLast = false) { + if (!node.props) { + node.props = {}; + } + if (span > count) { + node.props.span = count; + } + if (isLast) { + // set the max span, cause of the last td + node.props.span = count; + } + return node; + }, + getRows() { + const children = ((this.$slots.default || []).filter(vnode => vnode.tag && + vnode.componentOptions && vnode.componentOptions.Ctor.options.name === 'ElDescriptionsItem')); + const nodes = children.map(vnode => { + return { + props: this.getOptionProps(vnode), + slots: this.getSlots(vnode), + vnode + }; + }); + const rows = []; + let temp = []; + let count = this.column; + + nodes.forEach((node, index) => { + const span = node.props.span || 1; + + if (index === children.length - 1) { + temp.push(this.filledNode(node, span, count, true)); + rows.push(temp); + return; + } + + if (span < count) { + count -= span; + temp.push(node); + } else { + temp.push(this.filledNode(node, span, count)); + rows.push(temp); + count = this.column; + temp = []; + } + }); + + return rows; + } + }, + render() { + const { title, extra, border, descriptionsSize, $slots } = this; + const rows = this.getRows(); + + return ( +
+ { + (title || extra || $slots.title || $slots.extra) + ?
+
+ { $slots.title ? $slots.title : title} +
+
+ { $slots.extra ? $slots.extra : extra } +
+
+ : null + } + +
+ + {rows.map(row => ( + + ))} +
+
+
+ ); + } +}; diff --git a/src/config/env.js b/src/config/env.js index be094302..8e15503a 100644 --- a/src/config/env.js +++ b/src/config/env.js @@ -11,6 +11,7 @@ let wsProtocol = 'ws://'; let iotWebSocketAlarmBaseUrl = '' let bigWebSocketUrl = '' let port = '8899' +let webSocketProjectGatewayUrl = '' // window.dasConfig = { // ip: 'http://192.168.10.241:32024' @@ -41,8 +42,9 @@ if (env.NODE_ENV == 'development') { } else if(env.NODE_ENV == 'test') { } iotWebSocketAlarmBaseUrl = sysWebSocket + hrefHost + ':8899/ws/alarm/live' -bigWebSocketUrl = sysWebSocket + hrefHost + ( port ? ':'+ port :'') + '/ws/dev/readData' -sysWebSocket = sysWebSocket + hrefHost; +sysWebSocket = sysWebSocket + hrefHost + ( port ? ':'+ port :''); +bigWebSocketUrl = sysWebSocket + '/ws/dev/readData' +webSocketProjectGatewayUrl = sysWebSocket + '/ws/dev/projectDeviceLive' iotWebSocketBaseUrl = sysWebSocket + '/ws/dev/up/' devLiveWebSocketBaseUrl = sysWebSocket + '/ws/dev/live/' iotPlatformUrl = 'http://' + iotHost + prodApi @@ -54,5 +56,6 @@ export { iotWebSocketAlarmBaseUrl, devLiveWebSocketBaseUrl, prodApi, - bigWebSocketUrl + bigWebSocketUrl, + webSocketProjectGatewayUrl } diff --git a/src/views/iot/project/index.vue b/src/views/iot/project/index.vue index bda77a34..f2992af5 100644 --- a/src/views/iot/project/index.vue +++ b/src/views/iot/project/index.vue @@ -274,9 +274,9 @@ -
+
@@ -647,7 +647,7 @@ export default { }, handleDetails(row) { this.sourceId = row.projectId; - this.componectVal = "DetailsWrap"; + this.componectVal = "DetailsWrapNew"; }, // 跳转详情页 linkToTable() { diff --git a/src/views/iot/project/profileV2/DeviceManage/EDeviceChildren.vue b/src/views/iot/project/profileV2/DeviceManage/EDeviceChildren.vue new file mode 100644 index 00000000..f03d1a16 --- /dev/null +++ b/src/views/iot/project/profileV2/DeviceManage/EDeviceChildren.vue @@ -0,0 +1,442 @@ + + + diff --git a/src/views/iot/project/profileV2/DeviceManage/EDeviceTable.vue b/src/views/iot/project/profileV2/DeviceManage/EDeviceTable.vue new file mode 100644 index 00000000..fff865a7 --- /dev/null +++ b/src/views/iot/project/profileV2/DeviceManage/EDeviceTable.vue @@ -0,0 +1,512 @@ + + + diff --git a/src/views/iot/project/profileV2/DeviceManage/EDynamicTable.vue b/src/views/iot/project/profileV2/DeviceManage/EDynamicTable.vue new file mode 100644 index 00000000..466e8ca4 --- /dev/null +++ b/src/views/iot/project/profileV2/DeviceManage/EDynamicTable.vue @@ -0,0 +1,122 @@ + + + diff --git a/src/views/iot/project/profileV2/DeviceManage/index.vue b/src/views/iot/project/profileV2/DeviceManage/index.vue new file mode 100644 index 00000000..ec0e8043 --- /dev/null +++ b/src/views/iot/project/profileV2/DeviceManage/index.vue @@ -0,0 +1,48 @@ + + diff --git a/src/views/iot/project/profileV2/ECensusCards.vue b/src/views/iot/project/profileV2/ECensusCards.vue new file mode 100644 index 00000000..2f4c8352 --- /dev/null +++ b/src/views/iot/project/profileV2/ECensusCards.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/views/iot/project/profileV2/EEchartsGauge.vue b/src/views/iot/project/profileV2/EEchartsGauge.vue new file mode 100644 index 00000000..f54fd10c --- /dev/null +++ b/src/views/iot/project/profileV2/EEchartsGauge.vue @@ -0,0 +1,141 @@ + + + diff --git a/src/views/iot/project/profileV2/EEchartsLine.vue b/src/views/iot/project/profileV2/EEchartsLine.vue new file mode 100644 index 00000000..273c500c --- /dev/null +++ b/src/views/iot/project/profileV2/EEchartsLine.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/views/iot/project/profileV2/EEchartsPie.vue b/src/views/iot/project/profileV2/EEchartsPie.vue new file mode 100644 index 00000000..e9dcbdf2 --- /dev/null +++ b/src/views/iot/project/profileV2/EEchartsPie.vue @@ -0,0 +1,122 @@ + + + diff --git a/src/views/iot/project/profileV2/ENavMenu.vue b/src/views/iot/project/profileV2/ENavMenu.vue new file mode 100644 index 00000000..88102ef5 --- /dev/null +++ b/src/views/iot/project/profileV2/ENavMenu.vue @@ -0,0 +1,91 @@ + + + diff --git a/src/views/iot/project/profileV2/EObjectContainer.vue b/src/views/iot/project/profileV2/EObjectContainer.vue new file mode 100644 index 00000000..ac94040a --- /dev/null +++ b/src/views/iot/project/profileV2/EObjectContainer.vue @@ -0,0 +1,47 @@ + + diff --git a/src/views/iot/project/profileV2/EObjectInfo.vue b/src/views/iot/project/profileV2/EObjectInfo.vue new file mode 100644 index 00000000..92c15396 --- /dev/null +++ b/src/views/iot/project/profileV2/EObjectInfo.vue @@ -0,0 +1,426 @@ + + + + diff --git a/src/views/iot/project/profileV2/EObjectSpace.vue b/src/views/iot/project/profileV2/EObjectSpace.vue new file mode 100644 index 00000000..8721dea5 --- /dev/null +++ b/src/views/iot/project/profileV2/EObjectSpace.vue @@ -0,0 +1,371 @@ + + + + diff --git a/src/views/iot/project/profileV2/EObjectSpaceDevice.vue b/src/views/iot/project/profileV2/EObjectSpaceDevice.vue new file mode 100644 index 00000000..ff18ca74 --- /dev/null +++ b/src/views/iot/project/profileV2/EObjectSpaceDevice.vue @@ -0,0 +1,353 @@ + + + diff --git a/src/views/iot/project/profileV2/EObjectTenant.vue b/src/views/iot/project/profileV2/EObjectTenant.vue new file mode 100644 index 00000000..8e244d4b --- /dev/null +++ b/src/views/iot/project/profileV2/EObjectTenant.vue @@ -0,0 +1,386 @@ + + + diff --git a/src/views/iot/project/profileV2/EProjectManage.vue b/src/views/iot/project/profileV2/EProjectManage.vue new file mode 100644 index 00000000..b6201844 --- /dev/null +++ b/src/views/iot/project/profileV2/EProjectManage.vue @@ -0,0 +1,19 @@ + + diff --git a/src/views/iot/project/profileV2/ETodayRatio.vue b/src/views/iot/project/profileV2/ETodayRatio.vue new file mode 100644 index 00000000..26fdee91 --- /dev/null +++ b/src/views/iot/project/profileV2/ETodayRatio.vue @@ -0,0 +1,169 @@ + + + + diff --git a/src/views/iot/project/profileV2/ETrendCensus.vue b/src/views/iot/project/profileV2/ETrendCensus.vue new file mode 100644 index 00000000..02fba45a --- /dev/null +++ b/src/views/iot/project/profileV2/ETrendCensus.vue @@ -0,0 +1,205 @@ + + + + diff --git a/src/views/iot/project/profileV2/ETypeCensus.vue b/src/views/iot/project/profileV2/ETypeCensus.vue new file mode 100644 index 00000000..9d0a5f51 --- /dev/null +++ b/src/views/iot/project/profileV2/ETypeCensus.vue @@ -0,0 +1,258 @@ + + + + diff --git a/src/views/iot/project/profileV2/details.vue b/src/views/iot/project/profileV2/details.vue new file mode 100644 index 00000000..556a8809 --- /dev/null +++ b/src/views/iot/project/profileV2/details.vue @@ -0,0 +1,451 @@ + + + diff --git a/src/views/profile/DeviceDetailsView/index.vue b/src/views/profile/DeviceDetailsView/index.vue index b10efa45..f75d0d9c 100644 --- a/src/views/profile/DeviceDetailsView/index.vue +++ b/src/views/profile/DeviceDetailsView/index.vue @@ -113,7 +113,7 @@ import ModelOat from "./modelOat"; import ChildDevice from "./childDevice"; export default { name: "DetailsWrap", - props: ["sourceId", "isTenant"], + props: ["sourceId", "isTenant", 'isPersonal'], components: { InfoWrap, DeviceLog, diff --git a/src/views/profile/DeviceDetailsView/info.vue b/src/views/profile/DeviceDetailsView/info.vue index 7e3088e8..45f2c163 100644 --- a/src/views/profile/DeviceDetailsView/info.vue +++ b/src/views/profile/DeviceDetailsView/info.vue @@ -19,7 +19,7 @@ > 编辑