Commit e027bfdb272d8d1b97b773ca1f4e83702b569b9f
1 parent
b7006e3e
fix: bind data source use new fetch api
Showing
2 changed files
with
152 additions
and
126 deletions
@@ -181,4 +181,32 @@ class ConfigurationNodeApi { | @@ -181,4 +181,32 @@ class ConfigurationNodeApi { | ||
181 | static getDeviceAttribute(deviceProfileId, dataType) { | 181 | static getDeviceAttribute(deviceProfileId, dataType) { |
182 | return defHttp.get(`/yt/device/attributes/${deviceProfileId}`, { params: { dataType } }) | 182 | return defHttp.get(`/yt/device/attributes/${deviceProfileId}`, { params: { dataType } }) |
183 | } | 183 | } |
184 | + | ||
185 | + /** | ||
186 | + * @description 获取产品 | ||
187 | + * @param {string} deviceType | ||
188 | + * @returns | ||
189 | + */ | ||
190 | + static getProduct(deviceType) { | ||
191 | + return defHttp.get('/yt/device_profile/me/list', { params: { deviceType } }) | ||
192 | + } | ||
193 | + | ||
194 | + /** | ||
195 | + * @description 获取满足条件的设备 | ||
196 | + * @param {{deviceLabel: string, deviceProfileId: string, deviceType: string, organizationId: string }} params | ||
197 | + * @returns | ||
198 | + */ | ||
199 | + static getMeetConditionsDevice(params = {}) { | ||
200 | + const { deviceLabel, deviceProfileId, deviceType, organizationId } = params | ||
201 | + return defHttp.get('/yt/device/list', { params: { deviceLabel, deviceProfileId, deviceType, organizationId } }) | ||
202 | + } | ||
203 | + | ||
204 | + /** | ||
205 | + * @description 获取字典值 | ||
206 | + * @param {string} dictCode | ||
207 | + * @returns | ||
208 | + */ | ||
209 | + static getDictionaryValue(dictCode) { | ||
210 | + return defHttp.post('/yt/dict_item/find', {dictCode}) | ||
211 | + } | ||
184 | } | 212 | } |
@@ -4952,12 +4952,6 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -4952,12 +4952,6 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
4952 | let treeList = [] | 4952 | let treeList = [] |
4953 | 4953 | ||
4954 | /** | 4954 | /** |
4955 | - * @description 当前选中的组织树节点 | ||
4956 | - * @type {null | string} | ||
4957 | - */ | ||
4958 | - let currentCheckedOrgNode = null | ||
4959 | - | ||
4960 | - /** | ||
4961 | * @description 当前节点绑定数据 | 4955 | * @description 当前节点绑定数据 |
4962 | * @type {null | {act: [], event: [], dataSources: []}} | 4956 | * @type {null | {act: [], event: [], dataSources: []}} |
4963 | */ | 4957 | */ |
@@ -5067,7 +5061,9 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5067,7 +5061,9 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
5067 | SLAVE_DEVICE_ID: 'slaveDeviceId', | 5061 | SLAVE_DEVICE_ID: 'slaveDeviceId', |
5068 | ATTR: 'attr', | 5062 | ATTR: 'attr', |
5069 | GATEWAY: 'GATEWAY', | 5063 | GATEWAY: 'GATEWAY', |
5070 | - ADDITIONAL: 'additional' | 5064 | + ADDITIONAL: 'additional', |
5065 | + DEVICE_PROFILE_ID: 'deviceProfileId', | ||
5066 | + DEVICE_TYPE: 'deviceType' | ||
5071 | } | 5067 | } |
5072 | 5068 | ||
5073 | /** | 5069 | /** |
@@ -5078,7 +5074,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5078,7 +5074,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
5078 | 5074 | ||
5079 | /** | 5075 | /** |
5080 | * @description 用于在其他位置获取数据源绑定的数据,在生成数据源面板中进行了改写 | 5076 | * @description 用于在其他位置获取数据源绑定的数据,在生成数据源面板中进行了改写 |
5081 | - * @return {{orgId: string, attr: string, deviceId: string, slaveDeviceId: string}} | 5077 | + * @return {{orgId: string, attr: string, deviceId: string, deviceType: string, deviceProfileId: string}} |
5082 | */ | 5078 | */ |
5083 | function getDataSourceBindValue() { | 5079 | function getDataSourceBindValue() { |
5084 | 5080 | ||
@@ -5236,7 +5232,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5236,7 +5232,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
5236 | 5232 | ||
5237 | 5233 | ||
5238 | async function mount() { | 5234 | async function mount() { |
5239 | - const { component, echoDataSource, getValue } = generateDataSourceComponent({ validate: false }) | 5235 | + const { component, echoDataSource, getValue } = generateDataSourceComponent({ validate: true }) |
5240 | $(fragment).append(title).append(component) | 5236 | $(fragment).append(title).append(component) |
5241 | $(container).append(fragment) | 5237 | $(container).append(fragment) |
5242 | 5238 | ||
@@ -5938,7 +5934,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5938,7 +5934,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
5938 | const type = graph.getAttributeForCell(cell, basicAttr.COMPONENT_TYPE) | 5934 | const type = graph.getAttributeForCell(cell, basicAttr.COMPONENT_TYPE) |
5939 | return renderMapping[type]?.(field) || {} | 5935 | return renderMapping[type]?.(field) || {} |
5940 | 5936 | ||
5941 | - function getSubmitValue(field) { | 5937 | + function getSubmitValue(field) { |
5942 | const ENABLED_FLAG = 'on' | 5938 | const ENABLED_FLAG = 'on' |
5943 | const additionalKey = HandleDataSource.enumConst | 5939 | const additionalKey = HandleDataSource.enumConst |
5944 | const value = { | 5940 | const value = { |
@@ -5950,7 +5946,8 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5950,7 +5946,8 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
5950 | [enumCategory.DATA_SOURCE]: { | 5946 | [enumCategory.DATA_SOURCE]: { |
5951 | [enumDataSourceConst.ORG_ID]: field[enumDataSourceConst.ORG_ID], | 5947 | [enumDataSourceConst.ORG_ID]: field[enumDataSourceConst.ORG_ID], |
5952 | [enumDataSourceConst.DEVICE_ID]: field[enumDataSourceConst.DEVICE_ID], | 5948 | [enumDataSourceConst.DEVICE_ID]: field[enumDataSourceConst.DEVICE_ID], |
5953 | - [enumDataSourceConst.SLAVE_DEVICE_ID]: field[enumDataSourceConst.SLAVE_DEVICE_ID] ? field[enumDataSourceConst.SLAVE_DEVICE_ID] : '', | 5949 | + [enumDataSourceConst.DEVICE_TYPE]: field[enumDataSourceConst.DEVICE_TYPE], |
5950 | + [enumDataSourceConst.DEVICE_PROFILE_ID]: field[enumDataSourceConst.DEVICE_PROFILE_ID], | ||
5954 | [enumDataSourceConst.ATTR]: field[enumDataSourceConst.ATTR], | 5951 | [enumDataSourceConst.ATTR]: field[enumDataSourceConst.ATTR], |
5955 | [enumDataSourceConst.ADDITIONAL]: field[additionalKey.DATA_TYPE] ? { | 5952 | [enumDataSourceConst.ADDITIONAL]: field[additionalKey.DATA_TYPE] ? { |
5956 | [additionalKey.AGG]: field[additionalKey.AGG], | 5953 | [additionalKey.AGG]: field[additionalKey.AGG], |
@@ -5994,7 +5991,8 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5994,7 +5991,8 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
5994 | [enumCategory.DATA_SOURCE]: { | 5991 | [enumCategory.DATA_SOURCE]: { |
5995 | [enumDataSourceConst.ORG_ID]: field[enumDataSourceConst.ORG_ID], | 5992 | [enumDataSourceConst.ORG_ID]: field[enumDataSourceConst.ORG_ID], |
5996 | [enumDataSourceConst.DEVICE_ID]: field[enumDataSourceConst.DEVICE_ID], | 5993 | [enumDataSourceConst.DEVICE_ID]: field[enumDataSourceConst.DEVICE_ID], |
5997 | - [enumDataSourceConst.SLAVE_DEVICE_ID]: field[enumDataSourceConst.SLAVE_DEVICE_ID] ? field[enumDataSourceConst.SLAVE_DEVICE_ID] : '', | 5994 | + [enumDataSourceConst.DEVICE_TYPE]: field[enumDataSourceConst.DEVICE_TYPE], |
5995 | + [enumDataSourceConst.DEVICE_PROFILE_ID]: field[enumDataSourceConst.DEVICE_PROFILE_ID], | ||
5998 | [enumDataSourceConst.ATTR]: field[enumDataSourceConst.ATTR], | 5996 | [enumDataSourceConst.ATTR]: field[enumDataSourceConst.ATTR], |
5999 | [enumDataSourceConst.ADDITIONAL]: { | 5997 | [enumDataSourceConst.ADDITIONAL]: { |
6000 | [additionalKey.ORG_NAME]: field[additionalKey.ORG_NAME], | 5998 | [additionalKey.ORG_NAME]: field[additionalKey.ORG_NAME], |
@@ -7765,13 +7763,13 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -7765,13 +7763,13 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
7765 | 7763 | ||
7766 | const enumDataSourceConst = { | 7764 | const enumDataSourceConst = { |
7767 | ORG_ID: 'orgId', | 7765 | ORG_ID: 'orgId', |
7766 | + DEVICE_TYPE: 'deviceType', | ||
7767 | + DEVICE_PROFILE_ID: 'deviceProfileId', | ||
7768 | DEVICE_ID: 'deviceId', | 7768 | DEVICE_ID: 'deviceId', |
7769 | - SLAVE_DEVICE_ID: 'slaveDeviceId', | ||
7770 | ATTR: 'attr', | 7769 | ATTR: 'attr', |
7771 | GATEWAY: 'GATEWAY', | 7770 | GATEWAY: 'GATEWAY', |
7772 | ORG_NAME: 'orgName', | 7771 | ORG_NAME: 'orgName', |
7773 | DEVICE_NAME: 'deviceName', | 7772 | DEVICE_NAME: 'deviceName', |
7774 | - SLAVE_DEVICE_NAME: 'slaveDeviceName', | ||
7775 | ATTR_NAME: 'attrName' | 7773 | ATTR_NAME: 'attrName' |
7776 | } | 7774 | } |
7777 | 7775 | ||
@@ -7782,10 +7780,10 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -7782,10 +7780,10 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
7782 | let deviceList = [] | 7780 | let deviceList = [] |
7783 | 7781 | ||
7784 | /** | 7782 | /** |
7785 | - * @description | ||
7786 | - * @type {{id: string, deviceType: string, name: string, deviceProfileId: string}[]} | ||
7787 | - */ | ||
7788 | - let slaveDeviceList = [] | 7783 | + * @descrition |
7784 | + * @type {{deviceProfileId: string, id: string, organizationId: string, deviceType: string}} | ||
7785 | + */ | ||
7786 | + let currentDataSource = {} | ||
7789 | 7787 | ||
7790 | const component = document.createElement('div') | 7788 | const component = document.createElement('div') |
7791 | 7789 | ||
@@ -7799,13 +7797,66 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -7799,13 +7797,66 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
7799 | init() | 7797 | init() |
7800 | 7798 | ||
7801 | function init() { | 7799 | function init() { |
7802 | - generatorOrgTres() | 7800 | + generateDeviceTypeSelect() |
7801 | + generateProductSelect() | ||
7802 | + generatorOrgTrees() | ||
7803 | generatorDeviceSelect() | 7803 | generatorDeviceSelect() |
7804 | - generatorSlaveDevice() | ||
7805 | generatorAttrSelect() | 7804 | generatorAttrSelect() |
7806 | generateDeviceNameInput() | 7805 | generateDeviceNameInput() |
7807 | } | 7806 | } |
7808 | 7807 | ||
7808 | + function generateDeviceTypeSelect() { | ||
7809 | + getDeviceType() | ||
7810 | + | ||
7811 | + const deviceType = UseLayUi.createSelect({ | ||
7812 | + label: '设备类型', | ||
7813 | + bindValueFiled: enumDataSourceConst.DEVICE_TYPE, | ||
7814 | + layFilter: `${componentFilter}--${enumDataSourceConst.DEVICE_TYPE}`, | ||
7815 | + className: 'data-source__component-select', | ||
7816 | + ...validateRule, | ||
7817 | + onClick(data) { | ||
7818 | + const { value } = data | ||
7819 | + form.val(componentFilter, { | ||
7820 | + [enumDataSourceConst.DEVICE_PROFILE_ID]: null, | ||
7821 | + [enumDataSourceConst.DEVICE_ID]: null, | ||
7822 | + [enumDataSourceConst.DEVICE_NAME]: null, | ||
7823 | + [enumDataSourceConst.DEVICE_ID]: null, | ||
7824 | + [enumDataSourceConst.ATTR]: null, | ||
7825 | + [enumDataSourceConst.ATTR_NAME]: null, | ||
7826 | + [enumDataSourceConst.ORG_ID]: null | ||
7827 | + }) | ||
7828 | + | ||
7829 | + currentDataSource[enumDataSourceConst.DEVICE_TYPE] = value | ||
7830 | + getMeetConditionsDevice(currentDataSource) | ||
7831 | + getProduct(value) | ||
7832 | + }, | ||
7833 | + }) | ||
7834 | + $(component).append(deviceType) | ||
7835 | + } | ||
7836 | + | ||
7837 | + function generateProductSelect() { | ||
7838 | + const productSelect = UseLayUi.createSelect({ | ||
7839 | + label: '产品', | ||
7840 | + bindValueFiled: enumDataSourceConst.DEVICE_PROFILE_ID, | ||
7841 | + layFilter: `${componentFilter}--${enumDataSourceConst.DEVICE_PROFILE_ID}`, | ||
7842 | + className: 'data-source__component-select', | ||
7843 | + ...validateRule, | ||
7844 | + onClick(data) { | ||
7845 | + const { value } = data | ||
7846 | + form.val(componentFilter, { | ||
7847 | + [enumDataSourceConst.DEVICE_NAME]: null, | ||
7848 | + [enumDataSourceConst.DEVICE_ID]: null, | ||
7849 | + [enumDataSourceConst.ATTR]: null, | ||
7850 | + [enumDataSourceConst.ATTR_NAME]: null, | ||
7851 | + }) | ||
7852 | + currentDataSource[enumDataSourceConst.DEVICE_PROFILE_ID] = value | ||
7853 | + getMeetConditionsDevice(currentDataSource) | ||
7854 | + getAttrByDeviceId(value) | ||
7855 | + }, | ||
7856 | + }) | ||
7857 | + $(component).append(productSelect) | ||
7858 | + } | ||
7859 | + | ||
7809 | async function generateDeviceNameInput() { | 7860 | async function generateDeviceNameInput() { |
7810 | const template = ` | 7861 | const template = ` |
7811 | <div class="layui-form-item" style="margin-bottom: 0"> | 7862 | <div class="layui-form-item" style="margin-bottom: 0"> |
@@ -7815,38 +7866,35 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -7815,38 +7866,35 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
7815 | <input style="display: none" type="text" name="${enumDataSourceConst.DEVICE_NAME}" class="layui-input"> | 7866 | <input style="display: none" type="text" name="${enumDataSourceConst.DEVICE_NAME}" class="layui-input"> |
7816 | </div> | 7867 | </div> |
7817 | <div class="layui-form-item" style="margin-bottom: 0"> | 7868 | <div class="layui-form-item" style="margin-bottom: 0"> |
7818 | - <input style="display: none" type="text" name="${enumDataSourceConst.SLAVE_DEVICE_NAME}" class="layui-input"> | ||
7819 | - </div> | ||
7820 | - <div class="layui-form-item" style="margin-bottom: 0"> | ||
7821 | <input style="display: none" type="text" name="${enumDataSourceConst.ATTR_NAME}" class="layui-input"> | 7869 | <input style="display: none" type="text" name="${enumDataSourceConst.ATTR_NAME}" class="layui-input"> |
7822 | </div> | 7870 | </div> |
7823 | ` | 7871 | ` |
7824 | $(component).append(template) | 7872 | $(component).append(template) |
7825 | } | 7873 | } |
7826 | 7874 | ||
7875 | + async function getDeviceType() { | ||
7876 | + const items = await ConfigurationNodeApi.getDictionaryValue('device_type') | ||
7877 | + $(`#${componentId} `).find(`select[name="${enumDataSourceConst.DEVICE_TYPE}"]`).html(UseLayUi.generateOptionTemplate({ dataSource: items, labelField: 'itemText', valueField: 'itemValue' })) | ||
7878 | + form.render('select', componentFilter) | ||
7879 | + } | ||
7827 | 7880 | ||
7828 | - /** | ||
7829 | - * @description 根据组织ID获取设备 | ||
7830 | - */ | ||
7831 | - async function getDevicesByOrgId(organizationId) { | ||
7832 | - if (organizationId) { | ||
7833 | - const items = deviceList = await ConfigurationNodeApi.getMasterDevice(organizationId); | ||
7834 | - $(`#${componentId} `).find(`select[name="${enumDataSourceConst.DEVICE_ID}"]`).html(UseLayUi.generateOptionTemplate({ dataSource: items })) | ||
7835 | - form.render('select', componentFilter) | ||
7836 | - } | 7881 | + async function getProduct(deviceType) { |
7882 | + const items = productList = await ConfigurationNodeApi.getProduct(deviceType) | ||
7883 | + $(`#${componentId} `).find(`select[name="${enumDataSourceConst.DEVICE_PROFILE_ID}"]`).html(UseLayUi.generateOptionTemplate({ dataSource: items, labelField: 'name', valueField: 'id', alias: 'alias' })) | ||
7884 | + form.render('select', componentFilter) | ||
7837 | } | 7885 | } |
7838 | 7886 | ||
7839 | /** | 7887 | /** |
7840 | - * @description 通过主设备ID获取从设备 | 7888 | + * @description 根据组织ID获取设备 |
7841 | */ | 7889 | */ |
7842 | - async function getSlaveDeviceByMasterDeviceId(orgId, deviceId) { | ||
7843 | - if (deviceId && currentCheckedOrgNode) { | ||
7844 | - const items = slaveDeviceList = await ConfigurationNodeApi.getSlaveDevice(orgId, deviceId); | ||
7845 | - $(`#${componentId} `).find(`select[name="${enumDataSourceConst.SLAVE_DEVICE_ID}"]`).html(UseLayUi.generateOptionTemplate({ dataSource: items })) | ||
7846 | - form.render('select', componentFilter) | ||
7847 | - } | 7890 | + async function getMeetConditionsDevice(params) { |
7891 | + if (!params.organizationId) return | ||
7892 | + const items = await ConfigurationNodeApi.getMeetConditionsDevice(params); | ||
7893 | + $(`#${componentId} `).find(`select[name="${enumDataSourceConst.DEVICE_ID}"]`).html(UseLayUi.generateOptionTemplate({ dataSource: items, valueField: 'tbDeviceId', labelField: 'name' })) | ||
7894 | + form.render('select', componentFilter) | ||
7848 | } | 7895 | } |
7849 | 7896 | ||
7897 | + | ||
7850 | /** | 7898 | /** |
7851 | * @description 根据设备ID获取属性 | 7899 | * @description 根据设备ID获取属性 |
7852 | */ | 7900 | */ |
@@ -7862,7 +7910,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -7862,7 +7910,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
7862 | /** | 7910 | /** |
7863 | * @description 生成组织选择 | 7911 | * @description 生成组织选择 |
7864 | */ | 7912 | */ |
7865 | - async function generatorOrgTres() { | 7913 | + async function generatorOrgTrees() { |
7866 | const orgContainerId = `data-source__component--org-${Date.now()}` | 7914 | const orgContainerId = `data-source__component--org-${Date.now()}` |
7867 | const orgContainer = `<div id="${orgContainerId}"></div>` | 7915 | const orgContainer = `<div id="${orgContainerId}"></div>` |
7868 | $(component).append(orgContainer) | 7916 | $(component).append(orgContainer) |
@@ -7881,18 +7929,15 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -7881,18 +7929,15 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
7881 | treeProps: { | 7929 | treeProps: { |
7882 | data: treeList, | 7930 | data: treeList, |
7883 | onlyIconControl: true, | 7931 | onlyIconControl: true, |
7884 | - click(node) { | ||
7885 | - currentCheckedOrgNode = node?.data?.id | 7932 | + |
7933 | + click(node) { | ||
7886 | form.val(componentFilter, { | 7934 | form.val(componentFilter, { |
7887 | [enumDataSourceConst.ORG_NAME]: node?.data?.title, | 7935 | [enumDataSourceConst.ORG_NAME]: node?.data?.title, |
7888 | [enumDataSourceConst.DEVICE_ID]: null, | 7936 | [enumDataSourceConst.DEVICE_ID]: null, |
7889 | - [enumDataSourceConst.SLAVE_DEVICE_ID]: null, | ||
7890 | - [enumDataSourceConst.ATTR]: null, | ||
7891 | [enumDataSourceConst.DEVICE_NAME]: null, | 7937 | [enumDataSourceConst.DEVICE_NAME]: null, |
7892 | - [enumDataSourceConst.SLAVE_DEVICE_NAME]: null, | ||
7893 | - [enumDataSourceConst.ATTR_NAME]: null, | ||
7894 | }) | 7938 | }) |
7895 | - getDevicesByOrgId(node.data.id) | 7939 | + currentDataSource.organizationId = node?.data?.id |
7940 | + getMeetConditionsDevice(currentDataSource) | ||
7896 | }, | 7941 | }, |
7897 | }, | 7942 | }, |
7898 | }) | 7943 | }) |
@@ -7914,50 +7959,15 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -7914,50 +7959,15 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
7914 | if (!selected) return | 7959 | if (!selected) return |
7915 | form.val(componentFilter, { | 7960 | form.val(componentFilter, { |
7916 | [enumDataSourceConst.DEVICE_NAME]: selected?.name, | 7961 | [enumDataSourceConst.DEVICE_NAME]: selected?.name, |
7917 | - [enumDataSourceConst.SLAVE_DEVICE_ID]: null, | ||
7918 | [enumDataSourceConst.ATTR]: null, | 7962 | [enumDataSourceConst.ATTR]: null, |
7919 | - [enumDataSourceConst.SLAVE_DEVICE_NAME]: null, | ||
7920 | [enumDataSourceConst.ATTR_NAME]: null, | 7963 | [enumDataSourceConst.ATTR_NAME]: null, |
7921 | }) | 7964 | }) |
7922 | - if (selected.deviceType === enumDataSourceConst.GATEWAY) { | ||
7923 | - $(`#${componentId}`).find(`select[name="${enumDataSourceConst.SLAVE_DEVICE_ID}"]`) | ||
7924 | - .attr('lay-verify', 'required').attr('lay-verType', 'tips') | ||
7925 | - .parentsUntil(`#${componentId}`).show() | ||
7926 | - getSlaveDeviceByMasterDeviceId(currentCheckedOrgNode, selected.id) | ||
7927 | - } else { | ||
7928 | - $(`#${componentId}`).find(`select[name="${enumDataSourceConst.SLAVE_DEVICE_ID}"]`) | ||
7929 | - .attr('lay-verify', '').attr('lay-verType', 'tips') | ||
7930 | - .parentsUntil(`#${componentId}`).hide() | ||
7931 | - console.log(selected) | ||
7932 | - getAttrByDeviceId(selected.deviceProfileId) | ||
7933 | - } | ||
7934 | }, | 7965 | }, |
7935 | }) | 7966 | }) |
7936 | $(component).append(deviceSelect) | 7967 | $(component).append(deviceSelect) |
7937 | } | 7968 | } |
7938 | 7969 | ||
7939 | - /** | ||
7940 | - * @description 生成从设备选择器 | ||
7941 | - */ | ||
7942 | - function generatorSlaveDevice() { | ||
7943 | - const slaveDeviceSelect = UseLayUi.createSelect({ | ||
7944 | - label: '子设备', | ||
7945 | - bindValueFiled: enumDataSourceConst.SLAVE_DEVICE_ID, | ||
7946 | - layFilter: `${componentFilter}--${enumDataSourceConst.SLAVE_DEVICE_ID}`, | ||
7947 | - className: 'data-source__component-select', | ||
7948 | - onClick(data) { | ||
7949 | - const { value } = data | ||
7950 | - const selected = slaveDeviceList.find(item => item.id === value) | ||
7951 | - form.val(componentFilter, { | ||
7952 | - [enumDataSourceConst.SLAVE_DEVICE_NAME]: selected?.name, | ||
7953 | - [enumDataSourceConst.ATTR]: null, | ||
7954 | - [enumDataSourceConst.ATTR_NAME]: null, | ||
7955 | - }) | ||
7956 | - getAttrByDeviceId(selected.deviceProfileId) | ||
7957 | - }, | ||
7958 | - }) | ||
7959 | - $(component).append(slaveDeviceSelect) | ||
7960 | - } | 7970 | + |
7961 | 7971 | ||
7962 | /** | 7972 | /** |
7963 | * @description 生成属性选择器 | 7973 | * @description 生成属性选择器 |
@@ -7984,36 +7994,32 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -7984,36 +7994,32 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
7984 | * @param {{orgId: string, deviceId: string, slaveDeviceId?: string, attr: string}} dataSource | 7994 | * @param {{orgId: string, deviceId: string, slaveDeviceId?: string, attr: string}} dataSource |
7985 | */ | 7995 | */ |
7986 | function echoDataSource(dataSource = {}) { | 7996 | function echoDataSource(dataSource = {}) { |
7987 | - const { orgId, deviceId, slaveDeviceId, attr } = dataSource | 7997 | + const { orgId, deviceId, deviceProfileId, deviceType, attr } = dataSource |
7988 | const queue = [] | 7998 | const queue = [] |
7989 | - if (orgId) { | ||
7990 | - currentCheckedOrgNode = orgId | ||
7991 | - queue.push(getDevicesByOrgId(orgId)) | ||
7992 | - } | ||
7993 | - if (slaveDeviceId) { | ||
7994 | - queue.push(getSlaveDeviceByMasterDeviceId(orgId, deviceId)) | ||
7995 | - $(`#${componentId}`).find(`select[name="${enumDataSourceConst.SLAVE_DEVICE_ID}"]`).parentsUntil(`#${componentId}`).show() | ||
7996 | - queue.push(getAttrByDeviceId(slaveDeviceId)) | ||
7997 | - } else { | ||
7998 | - $(`#${componentId}`).find(`select[name="${enumDataSourceConst.SLAVE_DEVICE_ID}"]`).parentsUntil(`#${componentId}`).hide() | ||
7999 | - queue.push(getAttrByDeviceId(deviceId)) | ||
8000 | - } | 7999 | + currentDataSource = { organizationId: orgId, deviceProfileId, deviceType } |
8000 | + queue.push(getProduct(deviceType)) | ||
8001 | + queue.push(getMeetConditionsDevice({ organizationId: orgId, deviceProfileId, deviceType })) | ||
8002 | + queue.push(getAttrByDeviceId(deviceProfileId)) | ||
8001 | Promise.all(queue) | 8003 | Promise.all(queue) |
8002 | .finally(() => { | 8004 | .finally(() => { |
8003 | - const orgNode = UseLayUi.findTreeObjectByField(treeList, currentCheckedOrgNode) | ||
8004 | - $(`#${componentId} input[name="${enumDataSourceConst.ORG_ID}"]`).parent().find('span').html(orgNode?.name) | 8005 | + const orgNode = UseLayUi.findTreeObjectByField(treeList, orgId) |
8006 | + | ||
8007 | + $(`#${componentId} input[name="${enumDataSourceConst.ORG_ID}"]`).val(orgNode?.id).parent().find('span').html(orgNode?.name) | ||
8008 | + | ||
8005 | form.val(componentFilter, { | 8009 | form.val(componentFilter, { |
8006 | orgId, | 8010 | orgId, |
8007 | deviceId, | 8011 | deviceId, |
8008 | - slaveDeviceId, | 8012 | + deviceProfileId, |
8013 | + deviceType, | ||
8009 | attr, | 8014 | attr, |
8010 | }) | 8015 | }) |
8016 | + | ||
8011 | }) | 8017 | }) |
8012 | } | 8018 | } |
8013 | 8019 | ||
8014 | /** | 8020 | /** |
8015 | * | 8021 | * |
8016 | - * @returns {{orgId: string, attr: string, deviceId: string, slaveDeviceId: string}} | 8022 | + * @returns {{orgId: string, attr: string, deviceId: string, devi}} |
8017 | */ | 8023 | */ |
8018 | function getValue() { | 8024 | function getValue() { |
8019 | return form.val(componentFilter) | 8025 | return form.val(componentFilter) |
@@ -8445,13 +8451,14 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -8445,13 +8451,14 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
8445 | function proxyFn(fn) { | 8451 | function proxyFn(fn) { |
8446 | return (...args) => { | 8452 | return (...args) => { |
8447 | const currentDataSource = getDataSourceBindValue() || {} | 8453 | const currentDataSource = getDataSourceBindValue() || {} |
8448 | - | ||
8449 | - to(ConfigurationNodeApi.updateNodeInfo({ | ||
8450 | - configurationId, | ||
8451 | - contentId: currentPageId.id, | ||
8452 | - nodeId: graphId, | ||
8453 | - [enumCategory.DATA_SOURCE]: currentDataSource | ||
8454 | - })) | 8454 | + if (currentDataSource.deviceProfileId && currentDataSource.deviceType && currentDataSource.orgId) { |
8455 | + to(ConfigurationNodeApi.updateNodeInfo({ | ||
8456 | + configurationId, | ||
8457 | + contentId: currentPageId.id, | ||
8458 | + nodeId: graphId, | ||
8459 | + [enumCategory.DATA_SOURCE]: currentDataSource | ||
8460 | + })) | ||
8461 | + } | ||
8455 | fn.apply(null, args) | 8462 | fn.apply(null, args) |
8456 | } | 8463 | } |
8457 | } | 8464 | } |
@@ -12303,14 +12310,15 @@ class UseLayUi { | @@ -12303,14 +12310,15 @@ class UseLayUi { | ||
12303 | * @param {boolean} [addPlaceholderOption = true] options.addPlaceholderOption | 12310 | * @param {boolean} [addPlaceholderOption = true] options.addPlaceholderOption |
12304 | * @param {string} [labelField = 'name'] options.labelField | 12311 | * @param {string} [labelField = 'name'] options.labelField |
12305 | * @param {string} [valueField = 'name'] options.valueField | 12312 | * @param {string} [valueField = 'name'] options.valueField |
12313 | + * @param {string} [alias] options.alias | ||
12306 | * @returns {*} | 12314 | * @returns {*} |
12307 | */ | 12315 | */ |
12308 | static generateOptionTemplate(options) { | 12316 | static generateOptionTemplate(options) { |
12309 | - const { dataSource = [], addPlaceholderOption = true, labelField = 'name', valueField = 'id' } = options | 12317 | + const { dataSource = [], addPlaceholderOption = true, labelField = 'name', valueField = 'id', alias } = options |
12310 | let { renderFn } = options | 12318 | let { renderFn } = options |
12311 | renderFn = renderFn || ((record) => { | 12319 | renderFn = renderFn || ((record) => { |
12312 | if (typeof record === 'object') { | 12320 | if (typeof record === 'object') { |
12313 | - return `<option value="${record[valueField]}" ${record.disabled ? 'disabled=""' : ''}>${record[labelField]}</option>` | 12321 | + return `<option value="${record[valueField]}" ${record.disabled ? 'disabled=""' : ''}>${alias && record[alias] ? record[alias] : record[labelField]}</option>` |
12314 | } else { | 12322 | } else { |
12315 | return `<option value="${record}">${record}</option>` | 12323 | return `<option value="${record}">${record}</option>` |
12316 | } | 12324 | } |
@@ -12456,6 +12464,7 @@ class UseLayUi { | @@ -12456,6 +12464,7 @@ class UseLayUi { | ||
12456 | * @param {boolean} [options.autoFormatDataSource = true] options.autoFormatDataSource | 12464 | * @param {boolean} [options.autoFormatDataSource = true] options.autoFormatDataSource |
12457 | * @param {string} [options.layVerify] options.layVerify | 12465 | * @param {string} [options.layVerify] options.layVerify |
12458 | * @param {string} [options.layVerType] options.layVerType | 12466 | * @param {string} [options.layVerType] options.layVerType |
12467 | + * @param {boolean} [options.addPlaceholderOption] options.addPlaceholderOption | ||
12459 | * @param {Function} [options.treeProps.onReady] options.treeProps.onReady | 12468 | * @param {Function} [options.treeProps.onReady] options.treeProps.onReady |
12460 | */ | 12469 | */ |
12461 | static createTreeSelect(options) { | 12470 | static createTreeSelect(options) { |
@@ -12477,6 +12486,7 @@ class UseLayUi { | @@ -12477,6 +12486,7 @@ class UseLayUi { | ||
12477 | childrenField = 'children', | 12486 | childrenField = 'children', |
12478 | layVerify, | 12487 | layVerify, |
12479 | layVerType, | 12488 | layVerType, |
12489 | + addPlaceholderOption | ||
12480 | } = options | 12490 | } = options |
12481 | 12491 | ||
12482 | let { data = [], click, onReady } = treeProps | 12492 | let { data = [], click, onReady } = treeProps |
@@ -12518,12 +12528,12 @@ class UseLayUi { | @@ -12518,12 +12528,12 @@ class UseLayUi { | ||
12518 | function mount() { | 12528 | function mount() { |
12519 | // mount select container | 12529 | // mount select container |
12520 | $(elem).html(template) | 12530 | $(elem).html(template) |
12521 | - | ||
12522 | - // mount tree | ||
12523 | - // UseLayUi.nextTick(() => { | 12531 | + const treeData = UseLayUi.formatTreeDataSource(data, customSetTree, valueField, labelField, childrenField) |
12532 | + if (addPlaceholderOption) treeData.unshift({ title: '请选择', id: undefined }) | ||
12533 | + // mount tree | ||
12524 | tree.render({ | 12534 | tree.render({ |
12525 | ...treeProps, | 12535 | ...treeProps, |
12526 | - ...(autoFormatDataSource ? { data: UseLayUi.formatTreeDataSource(data, customSetTree, valueField, labelField, childrenField) } : {}), | 12536 | + ...(autoFormatDataSource ? { data: treeData } : {}), |
12527 | elem: $(elem).find('.tree-select__tree-mount'), | 12537 | elem: $(elem).find('.tree-select__tree-mount'), |
12528 | click(node) { | 12538 | click(node) { |
12529 | setValue(node.data) | 12539 | setValue(node.data) |
@@ -12545,22 +12555,10 @@ class UseLayUi { | @@ -12545,22 +12555,10 @@ class UseLayUi { | ||
12545 | layui.stope(e); | 12555 | layui.stope(e); |
12546 | }) | 12556 | }) |
12547 | 12557 | ||
12548 | - // blur | ||
12549 | - // $(document) | ||
12550 | - // .on("click", function (e) { | ||
12551 | - // const target = e.target | ||
12552 | - // const parentNode = $(`.${CLASS_NAME} .tree-select__tree-mount`) | ||
12553 | - // if (!parentNode) return | ||
12554 | - // console.log($.contains(parentNode, target)) | ||
12555 | - // // const showClose = UseLayUi.isInNode(parentNode, target, true) | ||
12556 | - // // if (showClose) return | ||
12557 | - // // $(`.${ SELECT_CLS }`).removeClass("layui-form-selected") | ||
12558 | - // }); | ||
12559 | - | ||
12560 | if (UseLayUi.isFunction(onReady)) { | 12558 | if (UseLayUi.isFunction(onReady)) { |
12561 | onReady(setValue) | 12559 | onReady(setValue) |
12562 | } | 12560 | } |
12563 | - // }) | 12561 | + |
12564 | form.render() | 12562 | form.render() |
12565 | } | 12563 | } |
12566 | 12564 |