Showing
1 changed file
with
481 additions
and
362 deletions
| @@ -4880,17 +4880,17 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -4880,17 +4880,17 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 4880 | 4880 | ||
| 4881 | // 获取url的请求参数函数 | 4881 | // 获取url的请求参数函数 |
| 4882 | function getRequest() { | 4882 | function getRequest() { |
| 4883 | - var url = location.search; //获取url中"?"符后的字串 | ||
| 4884 | - var theRequest = new Object(); | ||
| 4885 | - if (url.indexOf("?") != -1) { | ||
| 4886 | - var str = url.substring(1); | ||
| 4887 | - strs = str.split("&"); | ||
| 4888 | - for(var i = 0; i < strs.length; i ++) { | ||
| 4889 | - theRequest[strs[i].split("=")[0]]=decodeURI(strs[i].split("=")[1]); | ||
| 4890 | - } | 4883 | + var url = location.search; //获取url中"?"符后的字串 |
| 4884 | + var theRequest = new Object(); | ||
| 4885 | + if (url.indexOf("?") != -1) { | ||
| 4886 | + var str = url.substring(1); | ||
| 4887 | + strs = str.split("&"); | ||
| 4888 | + for (var i = 0; i < strs.length; i++) { | ||
| 4889 | + theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]); | ||
| 4890 | + } | ||
| 4891 | } | 4891 | } |
| 4892 | - return theRequest; | ||
| 4893 | - } | 4892 | + return theRequest; |
| 4893 | + } | ||
| 4894 | 4894 | ||
| 4895 | var dataSourceTitle = this.createTitle("数据源"); | 4895 | var dataSourceTitle = this.createTitle("数据源"); |
| 4896 | dataSourceTitle.style.padding = "6px 0px 6px 6px"; | 4896 | dataSourceTitle.style.padding = "6px 0px 6px 6px"; |
| @@ -4916,26 +4916,25 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -4916,26 +4916,25 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 4916 | treeUl.setAttribute("id", "organizationTree"); | 4916 | treeUl.setAttribute("id", "organizationTree"); |
| 4917 | organizationTree.appendChild(treeUl); | 4917 | organizationTree.appendChild(treeUl); |
| 4918 | container.appendChild(organizationTree); | 4918 | container.appendChild(organizationTree); |
| 4919 | - | 4919 | + let treeList = []; |
| 4920 | // 获取组织数据 | 4920 | // 获取组织数据 |
| 4921 | (function getTreeList() { | 4921 | (function getTreeList() { |
| 4922 | //调用API,获取保存的内容 | 4922 | //调用API,获取保存的内容 |
| 4923 | - DefHttp() | ||
| 4924 | - .get("/yt/organization/me/list") | ||
| 4925 | - .then(function (response) { | ||
| 4926 | - //实例化树形菜单 | ||
| 4927 | - $("#organizationTree").tree({ | ||
| 4928 | - data: response.data, | ||
| 4929 | - lines: true, | ||
| 4930 | - formatter(node) { | ||
| 4931 | - return node.name; | ||
| 4932 | - }, | ||
| 4933 | - onClick(node) { | ||
| 4934 | - // 获取组织下的设备 | ||
| 4935 | - getDevicesByOrganizationId(node.id); | ||
| 4936 | - }, | ||
| 4937 | - }); | 4923 | + defHttp.get("/yt/organization/me/list").then(function (res) { |
| 4924 | + //实例化树形菜单 | ||
| 4925 | + treeList = res; | ||
| 4926 | + $("#organizationTree").tree({ | ||
| 4927 | + data: res, | ||
| 4928 | + lines: true, | ||
| 4929 | + formatter(node) { | ||
| 4930 | + return node.name; | ||
| 4931 | + }, | ||
| 4932 | + onClick(node) { | ||
| 4933 | + // 获取组织下的设备 | ||
| 4934 | + getDevicesByOrganizationId(node.id); | ||
| 4935 | + }, | ||
| 4938 | }); | 4936 | }); |
| 4937 | + }); | ||
| 4939 | })(); | 4938 | })(); |
| 4940 | 4939 | ||
| 4941 | // 选择设备 | 4940 | // 选择设备 |
| @@ -4949,21 +4948,33 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -4949,21 +4948,33 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 4949 | deviceSelect.setAttribute("id", "device"); | 4948 | deviceSelect.setAttribute("id", "device"); |
| 4950 | deviceStylePanel.appendChild(deviceSelect); | 4949 | deviceStylePanel.appendChild(deviceSelect); |
| 4951 | 4950 | ||
| 4951 | + // 获取组织下的所有直连设备和网关子设备 | ||
| 4952 | + async function getDevicesByOrganizationId_DIRECT_CONNECTIONAndSENSOR( | ||
| 4953 | + organizationId | ||
| 4954 | + ) { | ||
| 4955 | + const res1 = await defHttp.get( | ||
| 4956 | + `/yt/device/list/DIRECT_CONNECTION?organizationId=${organizationId}` | ||
| 4957 | + ); | ||
| 4958 | + const res2 = await defHttp.get( | ||
| 4959 | + `/yt/device/list/SENSOR?organizationId=${organizationId}` | ||
| 4960 | + ); | ||
| 4961 | + return [...res1, ...res2]; | ||
| 4962 | + } | ||
| 4963 | + | ||
| 4952 | // 根据组织id获取组织下的设备列表--在点击组织时调用 | 4964 | // 根据组织id获取组织下的设备列表--在点击组织时调用 |
| 4953 | - function getDevicesByOrganizationId(organizationId) { | 4965 | + async function getDevicesByOrganizationId(organizationId) { |
| 4954 | if (organizationId) { | 4966 | if (organizationId) { |
| 4955 | - DefHttp() | ||
| 4956 | - .get(`/yt/device?page=1&pageSize=20&organizationId=${organizationId}`) | ||
| 4957 | - .then(function (response) { | ||
| 4958 | - $("#device").combobox({ | ||
| 4959 | - data: response.data.items, | ||
| 4960 | - valueField: "tbDeviceId", | ||
| 4961 | - textField: "name", | ||
| 4962 | - onChange(newValue) { | ||
| 4963 | - getDeviceAttribute(newValue); | ||
| 4964 | - }, | ||
| 4965 | - }); | ||
| 4966 | - }); | 4967 | + const items = await getDevicesByOrganizationId_DIRECT_CONNECTIONAndSENSOR( |
| 4968 | + organizationId | ||
| 4969 | + ); | ||
| 4970 | + $("#device").combobox({ | ||
| 4971 | + data: items, | ||
| 4972 | + valueField: "tbDeviceId", | ||
| 4973 | + textField: "name", | ||
| 4974 | + onChange(newValue) { | ||
| 4975 | + getDeviceAttribute(newValue); | ||
| 4976 | + }, | ||
| 4977 | + }); | ||
| 4967 | } | 4978 | } |
| 4968 | } | 4979 | } |
| 4969 | 4980 | ||
| @@ -4981,10 +4992,10 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -4981,10 +4992,10 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 4981 | // 获取设备下的属性-key--在改变设备时调用 | 4992 | // 获取设备下的属性-key--在改变设备时调用 |
| 4982 | function getDeviceAttribute(tbDeviceId) { | 4993 | function getDeviceAttribute(tbDeviceId) { |
| 4983 | if (tbDeviceId) { | 4994 | if (tbDeviceId) { |
| 4984 | - DefHttp() | 4995 | + defHttp |
| 4985 | .get(`/plugins/telemetry/DEVICE/${tbDeviceId}/keys/timeseries`) | 4996 | .get(`/plugins/telemetry/DEVICE/${tbDeviceId}/keys/timeseries`) |
| 4986 | .then(function (response) { | 4997 | .then(function (response) { |
| 4987 | - const mapRes = response.data.map((item) => { | 4998 | + const mapRes = response.map((item) => { |
| 4988 | return { | 4999 | return { |
| 4989 | value: item, | 5000 | value: item, |
| 4990 | text: item, | 5001 | text: item, |
| @@ -5080,7 +5091,6 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5080,7 +5091,6 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5080 | 5091 | ||
| 5081 | genarateCheckbox(dynamicEffect); | 5092 | genarateCheckbox(dynamicEffect); |
| 5082 | 5093 | ||
| 5083 | - | ||
| 5084 | // 解构全局属性layui要用到的模块 | 5094 | // 解构全局属性layui要用到的模块 |
| 5085 | const { layer, form } = layui; | 5095 | const { layer, form } = layui; |
| 5086 | 5096 | ||
| @@ -5110,260 +5120,178 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5110,260 +5120,178 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5110 | let currentPageId = ui.currentPage.node; | 5120 | let currentPageId = ui.currentPage.node; |
| 5111 | // 图形的id | 5121 | // 图形的id |
| 5112 | let graphId = ss.vertices[0].id; | 5122 | let graphId = ss.vertices[0].id; |
| 5113 | - console.log('需要的值',configurationId,currentPageId.id,graphId,) | 5123 | + // 事件类型 |
| 5114 | const eventType = { | 5124 | const eventType = { |
| 5115 | - 'DOWN':'按下', | ||
| 5116 | - 'UP':'抬起', | ||
| 5117 | - 'SINGLE':'单击', | ||
| 5118 | - 'DOUBLE':'双击', | ||
| 5119 | - } | 5125 | + DOWN: "按下", |
| 5126 | + UP: "抬起", | ||
| 5127 | + SINGLE: "单击", | ||
| 5128 | + DOUBLE: "双击", | ||
| 5129 | + }; | ||
| 5130 | + // 动画类型 | ||
| 5131 | + const animType = { | ||
| 5132 | + FLASH: "闪烁", | ||
| 5133 | + DISPLAY: "显示/隐藏", | ||
| 5134 | + ROTATE: "旋转", | ||
| 5135 | + }; | ||
| 5120 | 5136 | ||
| 5121 | //按下和抬起的事件处理函数 | 5137 | //按下和抬起的事件处理函数 |
| 5122 | - function handlePressANDupliftEvent(event) { | 5138 | + async function handlePressANDupliftEvent(event) { |
| 5139 | + // 获取当前节点(图形)的信息 | ||
| 5140 | + const res = await defHttp.get(`/yt/configuration/node/NODE/${graphId}`); | ||
| 5141 | + // 查找节点内容 | ||
| 5142 | + const findContent = res.event?.find((item) => { | ||
| 5143 | + if (item.content.title === event.data.type) return item; | ||
| 5144 | + }); | ||
| 5145 | + console.log(findContent); | ||
| 5146 | + // 当前租户的根组织id | ||
| 5147 | + const rootOrgId = treeList[0].id; | ||
| 5148 | + console.log(rootOrgId); | ||
| 5149 | + // 获取根组织下的所有设备 | ||
| 5150 | + async function getOrgAllDevices() { | ||
| 5151 | + return Promise.all([ | ||
| 5152 | + defHttp.get( | ||
| 5153 | + `/yt/device/list/DIRECT_CONNECTION?organizationId=${rootOrgId}` | ||
| 5154 | + ), | ||
| 5155 | + defHttp.get(`/yt/device/list/GATEWAY?organizationId=${rootOrgId}`), | ||
| 5156 | + defHttp.get(`/yt/device/list/SENSOR?organizationId=${rootOrgId}`), | ||
| 5157 | + ]); | ||
| 5158 | + } | ||
| 5159 | + const deviceList = await getOrgAllDevices(); | ||
| 5160 | + console.log(deviceList.flat(1)) | ||
| 5123 | // 打开弹窗 | 5161 | // 打开弹窗 |
| 5124 | layer.open({ | 5162 | layer.open({ |
| 5125 | title: "创建交互", | 5163 | title: "创建交互", |
| 5126 | content: ` | 5164 | content: ` |
| 5127 | - <form class="layui-form"> | ||
| 5128 | - <div style="width:400px"> | ||
| 5129 | - <div class="layui-form-item"> | ||
| 5130 | - <label class="layui-form-label">事件</label> | ||
| 5131 | - <div class="layui-input-block"> | ||
| 5132 | - <input type="text" name="title" disabled class="layui-input" value="${event.data.type}"> | ||
| 5133 | - </div> | ||
| 5134 | - </div> | ||
| 5135 | - <div class="layui-form-item"> | ||
| 5136 | - <label class="layui-form-label">动作</label> | ||
| 5137 | - <div class="layui-input-block"> | ||
| 5138 | - <select name="city" lay-verify="required"> | ||
| 5139 | - <option value="0" selected>给变量赋值</option> | ||
| 5140 | - </select> | ||
| 5141 | - </div> | ||
| 5142 | - </div> | ||
| 5143 | - <div class="layui-form-item"> | ||
| 5144 | - <label class="layui-form-label">类型</label> | ||
| 5145 | - <div class="layui-input-block"> | ||
| 5146 | - <input type="radio" name="type" value="1" title="联网设备" checked> | ||
| 5147 | - <input type="radio" name="type" value="2" title="产品/场景" disabled > | ||
| 5148 | - </div> | ||
| 5149 | - </div> | ||
| 5150 | - </div> | ||
| 5151 | - <div style="height:200px;overflow-y:scroll" id="tableContent"> | ||
| 5152 | - | ||
| 5153 | - <div style="display:flex;justify-content:center;"> | ||
| 5154 | - <button type="button" class="layui-btn layui-btn-primary layui-border-blue" id="addData">添加一条</button> | ||
| 5155 | - </div> | ||
| 5156 | - </div> | ||
| 5157 | - </form> | ||
| 5158 | - `, | ||
| 5159 | - area: ["800px", "500px"], | 5165 | + <form class="layui-form" lay-filter="formModal"> |
| 5166 | + <div style="width:400px"> | ||
| 5167 | + <div class="layui-form-item"> | ||
| 5168 | + <label class="layui-form-label">事件</label> | ||
| 5169 | + <div class="layui-input-block"> | ||
| 5170 | + <input type="text" name="event" class="layui-input" value="${event.data.type}" disabled> | ||
| 5171 | + </div> | ||
| 5172 | + </div> | ||
| 5173 | + <div class="layui-form-item"> | ||
| 5174 | + <label class="layui-form-label">动作</label> | ||
| 5175 | + <div class="layui-input-block"> | ||
| 5176 | + <select name="action" lay-verify="required"> | ||
| 5177 | + <option value="0" selected>给变量赋值</option> | ||
| 5178 | + </select> | ||
| 5179 | + </div> | ||
| 5180 | + </div> | ||
| 5181 | + <div class="layui-form-item"> | ||
| 5182 | + <label class="layui-form-label">类型</label> | ||
| 5183 | + <div class="layui-input-block"> | ||
| 5184 | + <input type="radio" name="type" value="1" title="联网设备" checked> | ||
| 5185 | + <input type="radio" name="type" value="2" title="产品/场景" disabled> | ||
| 5186 | + </div> | ||
| 5187 | + </div> | ||
| 5188 | + </div> | ||
| 5189 | + <div style="height:255px;overflow-y:scroll" id="tableContent"> | ||
| 5190 | + <div style="display:flex;justify-content:center;"> | ||
| 5191 | + <button type="button" class="layui-btn layui-btn-primary layui-border-blue" id="addData">添加一条</button> | ||
| 5192 | + </div> | ||
| 5193 | + </div> | ||
| 5194 | + </form> | ||
| 5195 | + `, | ||
| 5196 | + area: ["800px", "600px"], | ||
| 5160 | btn: ["保存", "取消"], | 5197 | btn: ["保存", "取消"], |
| 5161 | - yes(index) { | 5198 | + shade: ["0.7", "#fafafa"], |
| 5199 | + async yes(index) { | ||
| 5200 | + // 遍历表格数据 | ||
| 5201 | + const content = []; | ||
| 5202 | + for (let item of $("#tableBody tr")) { | ||
| 5203 | + content.push({ | ||
| 5204 | + min: item.children[0].children[0].value, | ||
| 5205 | + max: item.children[1].children[0].value, | ||
| 5206 | + }); | ||
| 5207 | + } | ||
| 5208 | + // 获取其他数据 | ||
| 5209 | + const formModal = { | ||
| 5210 | + ...form.val("formModal"), | ||
| 5211 | + configurationId, | ||
| 5212 | + contentId: currentPageId.id, | ||
| 5213 | + id: graphId, | ||
| 5214 | + condition: { | ||
| 5215 | + content, | ||
| 5216 | + }, | ||
| 5217 | + }; | ||
| 5218 | + await defHttp.post("/yt/configuration/node/act", formModal); | ||
| 5162 | layer.close(index); | 5219 | layer.close(index); |
| 5163 | }, | 5220 | }, |
| 5164 | btn2(index) { | 5221 | btn2(index) { |
| 5165 | layer.close(index); | 5222 | layer.close(index); |
| 5166 | }, | 5223 | }, |
| 5167 | - shade: ["0.7", "#fafafa"], | ||
| 5168 | }); | 5224 | }); |
| 5169 | 5225 | ||
| 5170 | // 在tableContent最前面添加元素 | 5226 | // 在tableContent最前面添加元素 |
| 5171 | $("#tableContent").prepend(` | 5227 | $("#tableContent").prepend(` |
| 5172 | - <table class="layui-table"> | ||
| 5173 | - <colgroup> | ||
| 5174 | - <col width="210"> | ||
| 5175 | - <col width="210"> | ||
| 5176 | - <col width="210"> | ||
| 5177 | - <col width="60"> | ||
| 5178 | - </colgroup> | ||
| 5179 | - <thead> | ||
| 5180 | - <tr> | ||
| 5181 | - <th style="text-align:center">选择设备</th> | ||
| 5182 | - <th style="text-align:center">变量</th> | ||
| 5183 | - <th style="text-align:center">下发值</th> | ||
| 5184 | - <th style="text-align:center">操作</th> | ||
| 5185 | - </tr> | ||
| 5186 | - </thead> | ||
| 5187 | - <tbody id="tableBody"> | ||
| 5188 | - <tr> | ||
| 5189 | - <td> | ||
| 5190 | - <select name="city" lay-verify="required"> | ||
| 5191 | - <option value="0">上海</option> | ||
| 5192 | - <option value="1">北京</option> | ||
| 5193 | - </select> | ||
| 5194 | - </td> | ||
| 5195 | - <td> | ||
| 5196 | - <select name="city" lay-verify="required"> | ||
| 5197 | - <option value="3">深圳</option> | ||
| 5198 | - <option value="4">杭州</option> | ||
| 5199 | - </select> | ||
| 5200 | - </td> | ||
| 5201 | - <td> | ||
| 5202 | - <input type="text" name="title" class="layui-input"> | ||
| 5203 | - </td> | ||
| 5204 | - <td> | ||
| 5205 | - <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> | ||
| 5206 | - </td> | ||
| 5207 | - </tr> | ||
| 5208 | - </tbody> | ||
| 5209 | - </table> | ||
| 5210 | - `); | ||
| 5211 | - form.render(); | ||
| 5212 | - let typeRadio = "1"; | ||
| 5213 | - // 监听的表单radio事件 | ||
| 5214 | - form.on("radio", function (data) { | ||
| 5215 | - typeRadio = data.value; | ||
| 5216 | - if (data.value === "1") { | ||
| 5217 | - $("#tableContent").children().first().remove(); | ||
| 5218 | - $("#tableContent").prepend(` | ||
| 5219 | - <table class="layui-table"> | 5228 | + <table class="layui-table"> |
| 5220 | <colgroup> | 5229 | <colgroup> |
| 5221 | - <col width="210"> | ||
| 5222 | - <col width="210"> | ||
| 5223 | - <col width="210"> | 5230 | + <col> |
| 5231 | + <col> | ||
| 5232 | + <col> | ||
| 5233 | + <col width="240"> | ||
| 5224 | <col width="60"> | 5234 | <col width="60"> |
| 5225 | </colgroup> | 5235 | </colgroup> |
| 5226 | <thead> | 5236 | <thead> |
| 5227 | <tr> | 5237 | <tr> |
| 5228 | <th style="text-align:center">选择设备</th> | 5238 | <th style="text-align:center">选择设备</th> |
| 5239 | + <th style="text-align:center">选择子设备</th> | ||
| 5229 | <th style="text-align:center">变量</th> | 5240 | <th style="text-align:center">变量</th> |
| 5230 | <th style="text-align:center">下发值</th> | 5241 | <th style="text-align:center">下发值</th> |
| 5231 | <th style="text-align:center">操作</th> | 5242 | <th style="text-align:center">操作</th> |
| 5232 | </tr> | 5243 | </tr> |
| 5233 | </thead> | 5244 | </thead> |
| 5234 | - <tbody id="tableBody"> | ||
| 5235 | - <tr> | ||
| 5236 | - <td> | ||
| 5237 | - <select name="city" lay-verify="required"> | ||
| 5238 | - <option value="0">上海</option> | ||
| 5239 | - <option value="1">北京</option> | ||
| 5240 | - </select> | ||
| 5241 | - </td> | ||
| 5242 | - <td> | ||
| 5243 | - <select name="city" lay-verify="required"> | ||
| 5244 | - <option value="3">深圳</option> | ||
| 5245 | - <option value="4">杭州</option> | ||
| 5246 | - </select> | ||
| 5247 | - </td> | ||
| 5248 | - <td> | ||
| 5249 | - <input type="text" name="title" class="layui-input"> | ||
| 5250 | - </td> | ||
| 5251 | - <td> | ||
| 5252 | - <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> | ||
| 5253 | - </td> | ||
| 5254 | - </tr> | ||
| 5255 | - </tbody> | ||
| 5256 | - </table> | ||
| 5257 | - `); | ||
| 5258 | - } else { | ||
| 5259 | - $("#tableContent").children().first().remove(); | ||
| 5260 | - $("#tableContent").prepend(` | 5245 | + <tbody id="tableBody"></tbody> |
| 5246 | + </table> | ||
| 5247 | + `); | ||
| 5248 | + | ||
| 5249 | + // 监听的表单radio事件 (暂不实现) | ||
| 5250 | + form.on("radio", function (data) { | ||
| 5251 | + $("#tableContent").children().first().remove(); | ||
| 5252 | + $("#tableContent").prepend(` | ||
| 5261 | <table class="layui-table"> | 5253 | <table class="layui-table"> |
| 5262 | - <colgroup> | ||
| 5263 | - <col width="175"> | ||
| 5264 | - <col width="175"> | ||
| 5265 | - <col width="175"> | ||
| 5266 | - <col width="175"> | ||
| 5267 | - <col width="60"> | ||
| 5268 | - </colgroup> | ||
| 5269 | - <thead> | ||
| 5270 | - <tr> | ||
| 5271 | - <th style="text-align:center">产品/场景</th> | ||
| 5272 | - <th style="text-align:center">数据源</th> | ||
| 5273 | - <th style="text-align:center">变量</th> | ||
| 5274 | - <th style="text-align:center">下发值</th> | ||
| 5275 | - <th style="text-align:center">操作</th> | ||
| 5276 | - </tr> | ||
| 5277 | - </thead> | ||
| 5278 | - <tbody id="tableBody"> | 5254 | + <colgroup> |
| 5255 | + <col> | ||
| 5256 | + <col> | ||
| 5257 | + <col width="60"> | ||
| 5258 | + </colgroup> | ||
| 5259 | + <thead> | ||
| 5260 | + <tr> | ||
| 5261 | + <th style="text-align:center">最小值(>=)</th> | ||
| 5262 | + <th style="text-align:center">最大值(<=)</th> | ||
| 5263 | + <th style="text-align:center">操作</th> | ||
| 5264 | + </tr> | ||
| 5265 | + </thead> | ||
| 5266 | + <tbody id="tableBody"></tbody> | ||
| 5267 | + </table> | ||
| 5268 | + `); | ||
| 5269 | + form.render(); | ||
| 5270 | + }); | ||
| 5271 | + // 添加一条 | ||
| 5272 | + $("#addData").click(() => { | ||
| 5273 | + $("#tableBody").append(` | ||
| 5279 | <tr> | 5274 | <tr> |
| 5280 | <td> | 5275 | <td> |
| 5281 | - <select name="city" lay-verify="required"> | ||
| 5282 | - <option value="0">上海</option> | ||
| 5283 | - <option value="1">北京</option> | 5276 | + <select name="device" lay-verify="required" id="deviceSelect"> |
| 5284 | </select> | 5277 | </select> |
| 5285 | </td> | 5278 | </td> |
| 5286 | <td> | 5279 | <td> |
| 5287 | - <select name="city" lay-verify="required"> | ||
| 5288 | - <option value="3">深圳</option> | ||
| 5289 | - <option value="4">杭州</option> | 5280 | + <select name="childDevice" lay-verify="required" id="childSelect"> |
| 5290 | </select> | 5281 | </select> |
| 5291 | </td> | 5282 | </td> |
| 5292 | <td> | 5283 | <td> |
| 5293 | - <select name="city" lay-verify="required"> | ||
| 5294 | - <option value="0">上海</option> | ||
| 5295 | - <option value="1">北京</option> | 5284 | + <select name="veriable" lay-verify="required" id="veriableSelect"> |
| 5296 | </select> | 5285 | </select> |
| 5297 | </td> | 5286 | </td> |
| 5298 | <td> | 5287 | <td> |
| 5299 | - <input type="text" name="title" class="layui-input"> | 5288 | + <textarea placeholder="请输入命令" class="layui-textarea" name="value"></textarea> |
| 5300 | </td> | 5289 | </td> |
| 5301 | <td> | 5290 | <td> |
| 5302 | <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> | 5291 | <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> |
| 5303 | </td> | 5292 | </td> |
| 5304 | </tr> | 5293 | </tr> |
| 5305 | - </tbody> | ||
| 5306 | - </table> | ||
| 5307 | - `); | ||
| 5308 | - } | ||
| 5309 | - form.render(); | ||
| 5310 | - }); | ||
| 5311 | - // 添加一条 | ||
| 5312 | - $("#addData").click(() => { | ||
| 5313 | - | ||
| 5314 | - if (typeRadio === "1") { | ||
| 5315 | - $("#tableBody").append(` | ||
| 5316 | - <tr> | ||
| 5317 | - <td> | ||
| 5318 | - <select name="city" lay-verify="required"> | ||
| 5319 | - <option value="0">上海</option> | ||
| 5320 | - <option value="1">北京</option> | ||
| 5321 | - </select> | ||
| 5322 | - </td> | ||
| 5323 | - <td> | ||
| 5324 | - <select name="city" lay-verify="required"> | ||
| 5325 | - <option value="3">深圳</option> | ||
| 5326 | - <option value="4">杭州</option> | ||
| 5327 | - </select> | ||
| 5328 | - </td> | ||
| 5329 | - <td> | ||
| 5330 | - <input type="text" name="title" class="layui-input"> | ||
| 5331 | - </td> | ||
| 5332 | - <td> | ||
| 5333 | - <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> | ||
| 5334 | - </td> | ||
| 5335 | - </tr> | ||
| 5336 | - `); | ||
| 5337 | - } else { | ||
| 5338 | - $("#tableBody").append(` | ||
| 5339 | - <tr> | ||
| 5340 | - <td> | ||
| 5341 | - <select name="city" lay-verify="required"> | ||
| 5342 | - <option value="0">上海</option> | ||
| 5343 | - <option value="1">北京</option> | ||
| 5344 | - </select> | ||
| 5345 | - </td> | ||
| 5346 | - <td> | ||
| 5347 | - <select name="city" lay-verify="required"> | ||
| 5348 | - <option value="3">深圳</option> | ||
| 5349 | - <option value="4">杭州</option> | ||
| 5350 | - </select> | ||
| 5351 | - </td> | ||
| 5352 | - <td> | ||
| 5353 | - <select name="city" lay-verify="required"> | ||
| 5354 | - <option value="3">深圳</option> | ||
| 5355 | - <option value="4">杭州</option> | ||
| 5356 | - </select> | ||
| 5357 | - </td> | ||
| 5358 | - <td> | ||
| 5359 | - <input type="text" name="title" class="layui-input"> | ||
| 5360 | - </td> | ||
| 5361 | - <td> | ||
| 5362 | - <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> | ||
| 5363 | - </td> | ||
| 5364 | - </tr> | ||
| 5365 | - `); | ||
| 5366 | - } | 5294 | + `); |
| 5367 | form.render(); | 5295 | form.render(); |
| 5368 | // 为添加的每一行绑定删除当前行的事件 | 5296 | // 为添加的每一行绑定删除当前行的事件 |
| 5369 | $(".deleteData").click(function () { | 5297 | $(".deleteData").click(function () { |
| @@ -5375,10 +5303,89 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5375,10 +5303,89 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5375 | $(".deleteData").click(function () { | 5303 | $(".deleteData").click(function () { |
| 5376 | this.parentNode.parentNode.remove(); | 5304 | this.parentNode.parentNode.remove(); |
| 5377 | }); | 5305 | }); |
| 5306 | + setTimeout(async () => { | ||
| 5307 | + const len = findContent?.condition?.content?.length; | ||
| 5308 | + if (!len) { | ||
| 5309 | + $("#tableBody").prepend(` | ||
| 5310 | + <tr> | ||
| 5311 | + <td> | ||
| 5312 | + <select name="device" lay-verify="required" id="deviceSelect"> | ||
| 5313 | + </select> | ||
| 5314 | + </td> | ||
| 5315 | + <td> | ||
| 5316 | + <select name="childDevice" lay-verify="required" id="childSelect"> | ||
| 5317 | + </select> | ||
| 5318 | + </td> | ||
| 5319 | + <td> | ||
| 5320 | + <select name="veriable" lay-verify="required" id="veriableSelect"> | ||
| 5321 | + </select> | ||
| 5322 | + </td> | ||
| 5323 | + <td> | ||
| 5324 | + <textarea placeholder="请输入命令" class="layui-textarea" name="value"></textarea> | ||
| 5325 | + </td> | ||
| 5326 | + <td> | ||
| 5327 | + <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> | ||
| 5328 | + </td> | ||
| 5329 | + </tr> | ||
| 5330 | + `); | ||
| 5331 | + | ||
| 5332 | + $(".deleteData").click(function () { | ||
| 5333 | + this.parentNode.parentNode.remove(); | ||
| 5334 | + }); | ||
| 5335 | + form.render(); | ||
| 5336 | + return; | ||
| 5337 | + } | ||
| 5338 | + | ||
| 5339 | + | ||
| 5340 | + // form.val("formModal", { deviceId: findAnim?.deviceId }); | ||
| 5341 | + // if (!findAnim?.deviceId) return; | ||
| 5342 | + // const res = await defHttp.get( | ||
| 5343 | + // `/plugins/telemetry/DEVICE/${findAnim?.deviceId}/keys/timeseries` | ||
| 5344 | + // ); | ||
| 5345 | + // // 先清空子元素 | ||
| 5346 | + // $("#attrSelect").empty(); | ||
| 5347 | + // $("#attrSelect").append(`<option value="">请选择属性</option>`); | ||
| 5348 | + // for (let item of res) { | ||
| 5349 | + // // 在追加 | ||
| 5350 | + // $("#attrSelect").append(`<option value="${item}">${item}</option>`); | ||
| 5351 | + // } | ||
| 5352 | + // form.val("formModal", { attr: findAnim?.attr }); | ||
| 5353 | + // for (let i = 0; i < len; i++) { | ||
| 5354 | + // $("#tableBody").append(` | ||
| 5355 | + // <tr> | ||
| 5356 | + // <td> | ||
| 5357 | + // <select name="device" lay-verify="required" id="deviceSelect"> | ||
| 5358 | + // </select> | ||
| 5359 | + // </td> | ||
| 5360 | + // <td> | ||
| 5361 | + // <select name="veriable" lay-verify="required" id="veriableSelect"> | ||
| 5362 | + // </select> | ||
| 5363 | + // </td> | ||
| 5364 | + // <td> | ||
| 5365 | + // <textarea placeholder="请输入命令" class="layui-textarea" name="value"></textarea> | ||
| 5366 | + // </td> | ||
| 5367 | + // <td> | ||
| 5368 | + // <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> | ||
| 5369 | + // </td> | ||
| 5370 | + // </tr> | ||
| 5371 | + // `); | ||
| 5372 | + // } | ||
| 5373 | + | ||
| 5374 | + // $(".deleteData").click(function () { | ||
| 5375 | + // this.parentNode.parentNode.remove(); | ||
| 5376 | + // }); | ||
| 5377 | + // form.render(); | ||
| 5378 | + }, 500); | ||
| 5378 | } | 5379 | } |
| 5379 | 5380 | ||
| 5380 | //单击和双击的事件处理函数 | 5381 | //单击和双击的事件处理函数 |
| 5381 | - function handleClickANDdbClickEvent(event) { | 5382 | + async function handleClickANDdbClickEvent(event) { |
| 5383 | + // 查询节点内容 | ||
| 5384 | + const res = await defHttp.get(`/yt/configuration/node/NODE/${graphId}`); | ||
| 5385 | + | ||
| 5386 | + const findContent = res.event?.find((item) => { | ||
| 5387 | + if (item.content.title === event.data.type) return item; | ||
| 5388 | + }); | ||
| 5382 | // 打开弹窗 | 5389 | // 打开弹窗 |
| 5383 | layer.open({ | 5390 | layer.open({ |
| 5384 | title: "创建交互", | 5391 | title: "创建交互", |
| @@ -5395,41 +5402,47 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5395,41 +5402,47 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5395 | <label class="layui-form-label">动作</label> | 5402 | <label class="layui-form-label">动作</label> |
| 5396 | <div class="layui-input-block"> | 5403 | <div class="layui-input-block"> |
| 5397 | <select name="action" lay-verify="required" lay-filter="actionSelectChange"> | 5404 | <select name="action" lay-verify="required" lay-filter="actionSelectChange"> |
| 5398 | - <option value="0" selected>打开链接</option> | 5405 | + <option value="0">打开链接</option> |
| 5399 | <option value="1">打开页面</option> | 5406 | <option value="1">打开页面</option> |
| 5400 | - <option value="2">给变量赋值</option> | 5407 | + <option value="2" disabled>给变量赋值</option> |
| 5401 | </select> | 5408 | </select> |
| 5402 | </div> | 5409 | </div> |
| 5403 | </div> | 5410 | </div> |
| 5404 | - <div class="layui-form-item" id="dynamicInput"> | 5411 | + <div class="layui-form-item" id="dynamicInputLink"> |
| 5405 | <label class="layui-form-label">链接</label> | 5412 | <label class="layui-form-label">链接</label> |
| 5406 | <div class="layui-input-block"> | 5413 | <div class="layui-input-block"> |
| 5407 | <input type="text" name="link" class="layui-input"> | 5414 | <input type="text" name="link" class="layui-input"> |
| 5408 | </div> | 5415 | </div> |
| 5409 | </div> | 5416 | </div> |
| 5417 | + <div class="layui-form-item" id="dynamicInputPage" style="display:none"> | ||
| 5418 | + <label class="layui-form-label">页面</label> | ||
| 5419 | + <div class="layui-input-block"> | ||
| 5420 | + <select name="page" lay-verify="required" id="pageSelect"> | ||
| 5421 | + </select> | ||
| 5422 | + </div> | ||
| 5423 | + </div> | ||
| 5410 | </div> | 5424 | </div> |
| 5411 | <div style="height:200px;overflow-y:scroll" id="tableContent"> | 5425 | <div style="height:200px;overflow-y:scroll" id="tableContent"> |
| 5412 | - | ||
| 5413 | </div> | 5426 | </div> |
| 5414 | </form> | 5427 | </form> |
| 5415 | `, | 5428 | `, |
| 5416 | area: ["800px", "500px"], | 5429 | area: ["800px", "500px"], |
| 5417 | btn: ["保存", "取消"], | 5430 | btn: ["保存", "取消"], |
| 5418 | - yes(index) { | 5431 | + async yes(index) { |
| 5419 | // 获取事件类型的key | 5432 | // 获取事件类型的key |
| 5420 | let type = null; | 5433 | let type = null; |
| 5421 | - for(let key in eventType){ | ||
| 5422 | - if(eventType[key] === event.data.type){ | 5434 | + for (let key in eventType) { |
| 5435 | + if (eventType[key] === event.data.type) { | ||
| 5423 | type = key; | 5436 | type = key; |
| 5424 | } | 5437 | } |
| 5425 | } | 5438 | } |
| 5426 | - DefHttp().post('/yt/configuration/node/event',{ | 5439 | + await defHttp.post("/yt/configuration/node/event", { |
| 5427 | configurationId, | 5440 | configurationId, |
| 5428 | - contentId:currentPageId.id, | ||
| 5429 | - id:graphId, | 5441 | + contentId: currentPageId.id, |
| 5442 | + id: graphId, | ||
| 5430 | type, | 5443 | type, |
| 5431 | - content:form.val('formModal') | ||
| 5432 | - }) | 5444 | + content: form.val("formModal"), |
| 5445 | + }); | ||
| 5433 | layer.close(index); | 5446 | layer.close(index); |
| 5434 | }, | 5447 | }, |
| 5435 | btn2(index) { | 5448 | btn2(index) { |
| @@ -5437,9 +5450,27 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5437,9 +5450,27 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5437 | }, | 5450 | }, |
| 5438 | shade: ["0.7", "#fafafa"], | 5451 | shade: ["0.7", "#fafafa"], |
| 5439 | }); | 5452 | }); |
| 5453 | + | ||
| 5454 | + // 获取页面数组->转换为option | ||
| 5455 | + for (let item of ui.pages) { | ||
| 5456 | + const option = `<option value="${ | ||
| 5457 | + "data:page/id," + item.getId() | ||
| 5458 | + }">${item.getName()}</option>`; | ||
| 5459 | + $("#pageSelect").append(option); | ||
| 5460 | + } | ||
| 5461 | + if (findContent?.content.action === "1") { | ||
| 5462 | + $("#dynamicInputLink").css({ display: "none" }); | ||
| 5463 | + $("#dynamicInputPage").css({ display: "block" }); | ||
| 5464 | + } | ||
| 5465 | + | ||
| 5466 | + form.val("formModal", { | ||
| 5467 | + action: findContent?.content.action || "0", | ||
| 5468 | + link: findContent?.content.link, | ||
| 5469 | + page: findContent?.content.page, | ||
| 5470 | + }); | ||
| 5440 | form.render(); | 5471 | form.render(); |
| 5441 | let typeRadio = "1"; | 5472 | let typeRadio = "1"; |
| 5442 | - // 监听的表单radio事件 | 5473 | + // 监听的表单radio事件 (暂不实现) |
| 5443 | form.on("radio", function (data) { | 5474 | form.on("radio", function (data) { |
| 5444 | typeRadio = data.value; | 5475 | typeRadio = data.value; |
| 5445 | if (data.value === "1") { | 5476 | if (data.value === "1") { |
| @@ -5539,32 +5570,17 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5539,32 +5570,17 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5539 | }); | 5570 | }); |
| 5540 | 5571 | ||
| 5541 | // 监听动作选择框的变化 | 5572 | // 监听动作选择框的变化 |
| 5542 | - form.on("select(actionSelectChange)", function (data) { | ||
| 5543 | - if (data.value === "0") { | ||
| 5544 | - $("#dynamicInput") | ||
| 5545 | - .empty() | ||
| 5546 | - .append( | ||
| 5547 | - ` | ||
| 5548 | - <label class="layui-form-label">链接</label> | ||
| 5549 | - <div class="layui-input-block"> | ||
| 5550 | - <input type="text" name="title" class="layui-input"> | ||
| 5551 | - </div> | ||
| 5552 | - ` | ||
| 5553 | - ); | 5573 | + form.on("select(actionSelectChange)", function ({ value }) { |
| 5574 | + if (value === "0") { | ||
| 5575 | + $("#dynamicInputPage").css({ display: "none" }); | ||
| 5576 | + $("#dynamicInputLink").css({ display: "block" }); | ||
| 5577 | + | ||
| 5554 | $("#tableContent").empty(); | 5578 | $("#tableContent").empty(); |
| 5555 | - } else if (data.value === "1") { | ||
| 5556 | - $("#dynamicInput") | ||
| 5557 | - .empty() | ||
| 5558 | - .append( | ||
| 5559 | - ` | ||
| 5560 | - <label class="layui-form-label">页面</label> | ||
| 5561 | - <div class="layui-input-block"> | ||
| 5562 | - <input type="text" name="title" class="layui-input"> | ||
| 5563 | - </div> | ||
| 5564 | - ` | ||
| 5565 | - ); | 5579 | + } else if (value === "1") { |
| 5580 | + $("#dynamicInputLink").css({ display: "none" }); | ||
| 5581 | + $("#dynamicInputPage").css({ display: "block" }); | ||
| 5566 | $("#tableContent").empty(); | 5582 | $("#tableContent").empty(); |
| 5567 | - } else if (data.value === "2") { | 5583 | + } else if (value === "2") { |
| 5568 | $("#dynamicInput") | 5584 | $("#dynamicInput") |
| 5569 | .empty() | 5585 | .empty() |
| 5570 | .append( | 5586 | .append( |
| @@ -5629,7 +5645,6 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5629,7 +5645,6 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5629 | }); | 5645 | }); |
| 5630 | // 添加一条 | 5646 | // 添加一条 |
| 5631 | $("#addData").click(() => { | 5647 | $("#addData").click(() => { |
| 5632 | - | ||
| 5633 | if (typeRadio === "1") { | 5648 | if (typeRadio === "1") { |
| 5634 | $("#tableBody").append(` | 5649 | $("#tableBody").append(` |
| 5635 | <tr> | 5650 | <tr> |
| @@ -5694,41 +5709,46 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5694,41 +5709,46 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5694 | } | 5709 | } |
| 5695 | 5710 | ||
| 5696 | //数据动效的事件处理函数 | 5711 | //数据动效的事件处理函数 |
| 5697 | - function handleSoundEffectEvent(event) { | ||
| 5698 | - var zNodes = [ | ||
| 5699 | - { id: 1, pId: 0, name: "父1 - 展开", open: true }, | ||
| 5700 | - { id: 11, pId: 1, name: "父11 - 折叠" }, | ||
| 5701 | - { id: 111, pId: 11, name: "叶子节点节点节点111" }, | ||
| 5702 | - { id: 113, pId: 11, name: "叶子节点节点节点113" }, | ||
| 5703 | - { id: 1131, pId: 113, name: "叶子节点节点节点1131" }, | ||
| 5704 | - { id: 1132, pId: 113, name: "叶子节点节点节点1132" }, | ||
| 5705 | - { id: 1133, pId: 113, name: "叶子节点节点节点1133" }, | ||
| 5706 | - { id: 114, pId: 11, name: "叶子节点节点节点114" }, | ||
| 5707 | - { id: 12, pId: 1, name: "父12 - 折叠" }, | ||
| 5708 | - { id: 121, pId: 12, name: "叶子节点节点节点121" }, | ||
| 5709 | - { id: 122, pId: 12, name: "叶子节点节点节点122" }, | ||
| 5710 | - { id: 123, pId: 12, name: "叶子节点节点节点123" }, | ||
| 5711 | - { id: 124, pId: 12, name: "叶子节点节点节点124" }, | ||
| 5712 | - { id: 13, pId: 1, name: "父13" }, | ||
| 5713 | - { id: 2, pId: 0, name: "父2 - 折叠" }, | ||
| 5714 | - { id: 21, pId: 2, name: "父21 - 展开", open: true }, | ||
| 5715 | - { id: 211, pId: 21, name: "叶子节点节点节点211" }, | ||
| 5716 | - { id: 212, pId: 21, name: "叶子节点节点节点212" }, | ||
| 5717 | - { id: 213, pId: 21, name: "叶子节点节点节点213" }, | ||
| 5718 | - { id: 214, pId: 21, name: "叶子节点节点节点214" }, | ||
| 5719 | - ]; | 5712 | + async function handleSoundEffectEvent(event) { |
| 5713 | + const { act } = await defHttp.get( | ||
| 5714 | + `/yt/configuration/node/NODE/${graphId}` | ||
| 5715 | + ); | ||
| 5716 | + // 获取动画类型 | ||
| 5717 | + let type = null; | ||
| 5718 | + for (let key in animType) { | ||
| 5719 | + if (animType[key] === event.data.title) { | ||
| 5720 | + type = key; | ||
| 5721 | + } | ||
| 5722 | + } | ||
| 5723 | + // 查找对应的动画 | ||
| 5724 | + const findAnim = act?.find((item) => { | ||
| 5725 | + if (item.type === type) return item; | ||
| 5726 | + }); | ||
| 5727 | + | ||
| 5728 | + // 树结构转为数组list | ||
| 5729 | + function treeToArr(data, pId = 0, res = []) { | ||
| 5730 | + data.forEach((item) => { | ||
| 5731 | + res.push({ pId, id: item.id, name: item.name }); | ||
| 5732 | + if (item.children && item.children.length) { | ||
| 5733 | + treeToArr(item.children, item.id, res); | ||
| 5734 | + } | ||
| 5735 | + }); | ||
| 5736 | + return res; | ||
| 5737 | + } | ||
| 5738 | + // 深拷贝一下数据并且拍平这个树形结构数据 | ||
| 5739 | + const flatTreeList = treeToArr(JSON.parse(JSON.stringify(treeList))); | ||
| 5720 | 5740 | ||
| 5721 | // 打开弹窗 | 5741 | // 打开弹窗 |
| 5722 | layer.open({ | 5742 | layer.open({ |
| 5723 | title: event.data.title, | 5743 | title: event.data.title, |
| 5724 | content: ` | 5744 | content: ` |
| 5725 | - <form class="layui-form"> | 5745 | + <form class="layui-form" lay-filter="formModal"> |
| 5726 | <div style="width:400px"> | 5746 | <div style="width:400px"> |
| 5727 | <div class="layui-form-item"> | 5747 | <div class="layui-form-item"> |
| 5728 | <label class="layui-form-label">类型</label> | 5748 | <label class="layui-form-label">类型</label> |
| 5729 | <div class="layui-input-block"> | 5749 | <div class="layui-input-block"> |
| 5730 | <input type="radio" name="type" value="1" title="联网设备" checked> | 5750 | <input type="radio" name="type" value="1" title="联网设备" checked> |
| 5731 | - <input type="radio" name="type" value="2" title="产品/场景" > | 5751 | + <input type="radio" name="type" value="2" title="产品/场景" disabled> |
| 5732 | </div> | 5752 | </div> |
| 5733 | </div> | 5753 | </div> |
| 5734 | <div class="layui-form-item"> | 5754 | <div class="layui-form-item"> |
| @@ -5741,10 +5761,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5741,10 +5761,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5741 | <div class="layui-form-item"> | 5761 | <div class="layui-form-item"> |
| 5742 | <label class="layui-form-label">设备</label> | 5762 | <label class="layui-form-label">设备</label> |
| 5743 | <div class="layui-input-block"> | 5763 | <div class="layui-input-block"> |
| 5744 | - <select name="city" lay-verify="required"> | ||
| 5745 | - <option value="0" selected>设备1</option> | ||
| 5746 | - <option value="0">设备2</option> | ||
| 5747 | - <option value="0">设备3</option> | 5764 | + <select name="deviceId" lay-verify="required" id="deviceSelect" lay-filter="deviceSelect"> |
| 5748 | </select> | 5765 | </select> |
| 5749 | </div> | 5766 | </div> |
| 5750 | </div> | 5767 | </div> |
| @@ -5752,11 +5769,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5752,11 +5769,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5752 | <div class="layui-form-item"> | 5769 | <div class="layui-form-item"> |
| 5753 | <label class="layui-form-label">属性</label> | 5770 | <label class="layui-form-label">属性</label> |
| 5754 | <div class="layui-input-block"> | 5771 | <div class="layui-input-block"> |
| 5755 | - <select name="city" lay-verify="required"> | ||
| 5756 | - <option value="0" selected>属性1</option> | ||
| 5757 | - <option value="0">属性2</option> | ||
| 5758 | - <option value="0">属性3</option> | ||
| 5759 | - </select> | 5772 | + <select name="attr" lay-verify="required" id="attrSelect"></select> |
| 5760 | </div> | 5773 | </div> |
| 5761 | </div> | 5774 | </div> |
| 5762 | </div> | 5775 | </div> |
| @@ -5770,7 +5783,35 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5770,7 +5783,35 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5770 | area: ["800px", "500px"], | 5783 | area: ["800px", "500px"], |
| 5771 | btn: ["保存", "取消"], | 5784 | btn: ["保存", "取消"], |
| 5772 | shade: ["0.7", "#fafafa"], | 5785 | shade: ["0.7", "#fafafa"], |
| 5773 | - yes(index) { | 5786 | + async yes(index) { |
| 5787 | + // 获取动画类型 | ||
| 5788 | + let type = null; | ||
| 5789 | + for (let key in animType) { | ||
| 5790 | + if (animType[key] === event.data.title) { | ||
| 5791 | + type = key; | ||
| 5792 | + } | ||
| 5793 | + } | ||
| 5794 | + // 遍历表格数据 | ||
| 5795 | + const content = []; | ||
| 5796 | + for (let item of $("#tableBody tr")) { | ||
| 5797 | + content.push({ | ||
| 5798 | + min: item.children[0].children[0].value, | ||
| 5799 | + max: item.children[1].children[0].value, | ||
| 5800 | + }); | ||
| 5801 | + } | ||
| 5802 | + // 获取其他数据 | ||
| 5803 | + const formModal = { | ||
| 5804 | + ...form.val("formModal"), | ||
| 5805 | + orgId: $("#select").selectZTreeGet().id, | ||
| 5806 | + configurationId, | ||
| 5807 | + contentId: currentPageId.id, | ||
| 5808 | + id: graphId, | ||
| 5809 | + condition: { | ||
| 5810 | + content, | ||
| 5811 | + }, | ||
| 5812 | + type, | ||
| 5813 | + }; | ||
| 5814 | + await defHttp.post("/yt/configuration/node/act", formModal); | ||
| 5774 | layer.close(index); | 5815 | layer.close(index); |
| 5775 | }, | 5816 | }, |
| 5776 | btn2(index) { | 5817 | btn2(index) { |
| @@ -5780,16 +5821,59 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5780,16 +5821,59 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5780 | 5821 | ||
| 5781 | $("#select") | 5822 | $("#select") |
| 5782 | .selectZTree({ | 5823 | .selectZTree({ |
| 5783 | - data: zNodes, | 5824 | + data: flatTreeList, |
| 5784 | width: 290, | 5825 | width: 290, |
| 5785 | showSearch: false, | 5826 | showSearch: false, |
| 5786 | placeholder: "请选择组织", | 5827 | placeholder: "请选择组织", |
| 5787 | - onSelected(ele, value) { | ||
| 5788 | - console.log(value); | ||
| 5789 | - console.log("onSelected"); | 5828 | + async onReady() { |
| 5829 | + if (findAnim?.orgId) { | ||
| 5830 | + $("#select").selectZTreeSet(findAnim?.orgId); | ||
| 5831 | + const items = | ||
| 5832 | + await getDevicesByOrganizationId_DIRECT_CONNECTIONAndSENSOR( | ||
| 5833 | + findAnim?.orgId | ||
| 5834 | + ); | ||
| 5835 | + $("#deviceSelect").empty(); | ||
| 5836 | + $("#deviceSelect").append(`<option value="">请选择设备</option>`); | ||
| 5837 | + for (let item of items) { | ||
| 5838 | + // 在追加 | ||
| 5839 | + $("#deviceSelect").append( | ||
| 5840 | + `<option value="${item.tbDeviceId}">${item.name}</option>` | ||
| 5841 | + ); | ||
| 5842 | + } | ||
| 5843 | + form.render(); | ||
| 5844 | + } | ||
| 5790 | }, | 5845 | }, |
| 5791 | }) | 5846 | }) |
| 5792 | - | 5847 | + .on("change", async (ele, { id }) => { |
| 5848 | + const items = | ||
| 5849 | + await getDevicesByOrganizationId_DIRECT_CONNECTIONAndSENSOR(id); | ||
| 5850 | + // 先清空子元素 | ||
| 5851 | + $("#deviceSelect").empty(); | ||
| 5852 | + $("#deviceSelect").append(`<option value="">请选择设备</option>`); | ||
| 5853 | + for (let item of items) { | ||
| 5854 | + // 在追加 | ||
| 5855 | + $("#deviceSelect").append( | ||
| 5856 | + `<option value="${item.tbDeviceId}">${item.name}</option>` | ||
| 5857 | + ); | ||
| 5858 | + } | ||
| 5859 | + form.render(); | ||
| 5860 | + }); | ||
| 5861 | + | ||
| 5862 | + form.on("select(deviceSelect)", async ({ value }) => { | ||
| 5863 | + if (!value) return; | ||
| 5864 | + const res = await defHttp.get( | ||
| 5865 | + `/plugins/telemetry/DEVICE/${value}/keys/timeseries` | ||
| 5866 | + ); | ||
| 5867 | + // 先清空子元素 | ||
| 5868 | + $("#attrSelect").empty(); | ||
| 5869 | + $("#attrSelect").append(`<option value="">请选择属性</option>`); | ||
| 5870 | + for (let item of res) { | ||
| 5871 | + // 在追加 | ||
| 5872 | + $("#attrSelect").append(`<option value="${item}">${item}</option>`); | ||
| 5873 | + } | ||
| 5874 | + form.render(); | ||
| 5875 | + }); | ||
| 5876 | + | ||
| 5793 | // 在tableContent最前面添加元素 | 5877 | // 在tableContent最前面添加元素 |
| 5794 | $("#tableContent").prepend(` | 5878 | $("#tableContent").prepend(` |
| 5795 | <table class="layui-table"> | 5879 | <table class="layui-table"> |
| @@ -5800,28 +5884,16 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5800,28 +5884,16 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5800 | </colgroup> | 5884 | </colgroup> |
| 5801 | <thead> | 5885 | <thead> |
| 5802 | <tr> | 5886 | <tr> |
| 5803 | - <th style="text-align:center">最小值(<=)</th> | ||
| 5804 | - <th style="text-align:center">最大值(>=)</th> | 5887 | + <th style="text-align:center">最小值(>=)</th> |
| 5888 | + <th style="text-align:center">最大值(<=)</th> | ||
| 5805 | <th style="text-align:center">操作</th> | 5889 | <th style="text-align:center">操作</th> |
| 5806 | </tr> | 5890 | </tr> |
| 5807 | </thead> | 5891 | </thead> |
| 5808 | - <tbody id="tableBody"> | ||
| 5809 | - <tr> | ||
| 5810 | - <td> | ||
| 5811 | - <input type="text" name="title" class="layui-input"> | ||
| 5812 | - </td> | ||
| 5813 | - <td> | ||
| 5814 | - <input type="text" name="title" class="layui-input"> | ||
| 5815 | - </td> | ||
| 5816 | - <td> | ||
| 5817 | - <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> | ||
| 5818 | - </td> | ||
| 5819 | - </tr> | ||
| 5820 | - </tbody> | 5892 | + <tbody id="tableBody"></tbody> |
| 5821 | </table> | 5893 | </table> |
| 5822 | `); | 5894 | `); |
| 5823 | - form.render(); | ||
| 5824 | - // 监听的表单radio事件 | 5895 | + |
| 5896 | + // 监听的表单radio事件 (暂不实现) | ||
| 5825 | form.on("radio", function (data) { | 5897 | form.on("radio", function (data) { |
| 5826 | $("#tableContent").children().first().remove(); | 5898 | $("#tableContent").children().first().remove(); |
| 5827 | $("#tableContent").prepend(` | 5899 | $("#tableContent").prepend(` |
| @@ -5838,19 +5910,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5838,19 +5910,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5838 | <th style="text-align:center">操作</th> | 5910 | <th style="text-align:center">操作</th> |
| 5839 | </tr> | 5911 | </tr> |
| 5840 | </thead> | 5912 | </thead> |
| 5841 | - <tbody id="tableBody"> | ||
| 5842 | - <tr> | ||
| 5843 | - <td> | ||
| 5844 | - <input type="text" name="title" class="layui-input"> | ||
| 5845 | - </td> | ||
| 5846 | - <td> | ||
| 5847 | - <input type="text" name="title" class="layui-input"> | ||
| 5848 | - </td> | ||
| 5849 | - <td> | ||
| 5850 | - <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> | ||
| 5851 | - </td> | ||
| 5852 | - </tr> | ||
| 5853 | - </tbody> | 5913 | + <tbody id="tableBody"></tbody> |
| 5854 | </table> | 5914 | </table> |
| 5855 | `); | 5915 | `); |
| 5856 | form.render(); | 5916 | form.render(); |
| @@ -5860,10 +5920,10 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5860,10 +5920,10 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5860 | $("#tableBody").append(` | 5920 | $("#tableBody").append(` |
| 5861 | <tr> | 5921 | <tr> |
| 5862 | <td> | 5922 | <td> |
| 5863 | - <input type="text" name="title" class="layui-input"> | 5923 | + <input type="text" name="min" class="layui-input"> |
| 5864 | </td> | 5924 | </td> |
| 5865 | <td> | 5925 | <td> |
| 5866 | - <input type="text" name="title" class="layui-input"> | 5926 | + <input type="text" name="max" class="layui-input"> |
| 5867 | </td> | 5927 | </td> |
| 5868 | <td> | 5928 | <td> |
| 5869 | <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> | 5929 | <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> |
| @@ -5881,6 +5941,65 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5881,6 +5941,65 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5881 | $(".deleteData").click(function () { | 5941 | $(".deleteData").click(function () { |
| 5882 | this.parentNode.parentNode.remove(); | 5942 | this.parentNode.parentNode.remove(); |
| 5883 | }); | 5943 | }); |
| 5944 | + | ||
| 5945 | + // 回显数据 | ||
| 5946 | + // $("#select").selectZTreeSet(findAnim?.orgId) | ||
| 5947 | + setTimeout(async () => { | ||
| 5948 | + form.val("formModal", { deviceId: findAnim?.deviceId }); | ||
| 5949 | + if (!findAnim?.deviceId) return; | ||
| 5950 | + const res = await defHttp.get( | ||
| 5951 | + `/plugins/telemetry/DEVICE/${findAnim?.deviceId}/keys/timeseries` | ||
| 5952 | + ); | ||
| 5953 | + // 先清空子元素 | ||
| 5954 | + $("#attrSelect").empty(); | ||
| 5955 | + $("#attrSelect").append(`<option value="">请选择属性</option>`); | ||
| 5956 | + for (let item of res) { | ||
| 5957 | + // 在追加 | ||
| 5958 | + $("#attrSelect").append(`<option value="${item}">${item}</option>`); | ||
| 5959 | + } | ||
| 5960 | + form.val("formModal", { attr: findAnim?.attr }); | ||
| 5961 | + | ||
| 5962 | + const len = findAnim?.condition?.content?.length; | ||
| 5963 | + if (!len) { | ||
| 5964 | + $("#tableBody").prepend(` | ||
| 5965 | + <tr> | ||
| 5966 | + <td> | ||
| 5967 | + <input type="text" name="min" class="layui-input"> | ||
| 5968 | + </td> | ||
| 5969 | + <td> | ||
| 5970 | + <input type="text" name="max" class="layui-input"> | ||
| 5971 | + </td> | ||
| 5972 | + <td> | ||
| 5973 | + <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> | ||
| 5974 | + </td> | ||
| 5975 | + </tr> | ||
| 5976 | + `); | ||
| 5977 | + $(".deleteData").click(function () { | ||
| 5978 | + this.parentNode.parentNode.remove(); | ||
| 5979 | + }); | ||
| 5980 | + return; | ||
| 5981 | + } | ||
| 5982 | + for (let i = 0; i < len; i++) { | ||
| 5983 | + $("#tableBody").append(` | ||
| 5984 | + <tr> | ||
| 5985 | + <td> | ||
| 5986 | + <input type="text" name="min" class="layui-input" value="${findAnim.condition.content[i].min}"> | ||
| 5987 | + </td> | ||
| 5988 | + <td> | ||
| 5989 | + <input type="text" name="max" class="layui-input" value="${findAnim.condition.content[i].max}"> | ||
| 5990 | + </td> | ||
| 5991 | + <td> | ||
| 5992 | + <button type="button" class="layui-btn layui-btn-primary layui-border-red deleteData">删除</button> | ||
| 5993 | + </td> | ||
| 5994 | + </tr> | ||
| 5995 | + `); | ||
| 5996 | + } | ||
| 5997 | + | ||
| 5998 | + $(".deleteData").click(function () { | ||
| 5999 | + this.parentNode.parentNode.remove(); | ||
| 6000 | + }); | ||
| 6001 | + form.render(); | ||
| 6002 | + }, 500); | ||
| 5884 | } | 6003 | } |
| 5885 | 6004 | ||
| 5886 | // 数据交互事件 | 6005 | // 数据交互事件 |