Commit e027bfdb272d8d1b97b773ca1f4e83702b569b9f

Authored by ww
1 parent b7006e3e

fix: bind data source use new fetch api

... ... @@ -181,4 +181,32 @@ class ConfigurationNodeApi {
181 181 static getDeviceAttribute(deviceProfileId, dataType) {
182 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 4952 let treeList = []
4953 4953
4954 4954 /**
4955   - * @description 当前选中的组织树节点
4956   - * @type {null | string}
4957   - */
4958   - let currentCheckedOrgNode = null
4959   -
4960   - /**
4961 4955 * @description 当前节点绑定数据
4962 4956 * @type {null | {act: [], event: [], dataSources: []}}
4963 4957 */
... ... @@ -5067,7 +5061,9 @@ DataFormatPanel.prototype.addDataFont = function (container) {
5067 5061 SLAVE_DEVICE_ID: 'slaveDeviceId',
5068 5062 ATTR: 'attr',
5069 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 5074
5079 5075 /**
5080 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 5079 function getDataSourceBindValue() {
5084 5080
... ... @@ -5236,7 +5232,7 @@ DataFormatPanel.prototype.addDataFont = function (container) {
5236 5232
5237 5233
5238 5234 async function mount() {
5239   - const { component, echoDataSource, getValue } = generateDataSourceComponent({ validate: false })
  5235 + const { component, echoDataSource, getValue } = generateDataSourceComponent({ validate: true })
5240 5236 $(fragment).append(title).append(component)
5241 5237 $(container).append(fragment)
5242 5238
... ... @@ -5938,7 +5934,7 @@ DataFormatPanel.prototype.addDataFont = function (container) {
5938 5934 const type = graph.getAttributeForCell(cell, basicAttr.COMPONENT_TYPE)
5939 5935 return renderMapping[type]?.(field) || {}
5940 5936
5941   - function getSubmitValue(field) {
  5937 + function getSubmitValue(field) {
5942 5938 const ENABLED_FLAG = 'on'
5943 5939 const additionalKey = HandleDataSource.enumConst
5944 5940 const value = {
... ... @@ -5950,7 +5946,8 @@ DataFormatPanel.prototype.addDataFont = function (container) {
5950 5946 [enumCategory.DATA_SOURCE]: {
5951 5947 [enumDataSourceConst.ORG_ID]: field[enumDataSourceConst.ORG_ID],
5952 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 5951 [enumDataSourceConst.ATTR]: field[enumDataSourceConst.ATTR],
5955 5952 [enumDataSourceConst.ADDITIONAL]: field[additionalKey.DATA_TYPE] ? {
5956 5953 [additionalKey.AGG]: field[additionalKey.AGG],
... ... @@ -5994,7 +5991,8 @@ DataFormatPanel.prototype.addDataFont = function (container) {
5994 5991 [enumCategory.DATA_SOURCE]: {
5995 5992 [enumDataSourceConst.ORG_ID]: field[enumDataSourceConst.ORG_ID],
5996 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 5996 [enumDataSourceConst.ATTR]: field[enumDataSourceConst.ATTR],
5999 5997 [enumDataSourceConst.ADDITIONAL]: {
6000 5998 [additionalKey.ORG_NAME]: field[additionalKey.ORG_NAME],
... ... @@ -7765,13 +7763,13 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7765 7763
7766 7764 const enumDataSourceConst = {
7767 7765 ORG_ID: 'orgId',
  7766 + DEVICE_TYPE: 'deviceType',
  7767 + DEVICE_PROFILE_ID: 'deviceProfileId',
7768 7768 DEVICE_ID: 'deviceId',
7769   - SLAVE_DEVICE_ID: 'slaveDeviceId',
7770 7769 ATTR: 'attr',
7771 7770 GATEWAY: 'GATEWAY',
7772 7771 ORG_NAME: 'orgName',
7773 7772 DEVICE_NAME: 'deviceName',
7774   - SLAVE_DEVICE_NAME: 'slaveDeviceName',
7775 7773 ATTR_NAME: 'attrName'
7776 7774 }
7777 7775
... ... @@ -7782,10 +7780,10 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7782 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 7788 const component = document.createElement('div')
7791 7789
... ... @@ -7799,13 +7797,66 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7799 7797 init()
7800 7798
7801 7799 function init() {
7802   - generatorOrgTres()
  7800 + generateDeviceTypeSelect()
  7801 + generateProductSelect()
  7802 + generatorOrgTrees()
7803 7803 generatorDeviceSelect()
7804   - generatorSlaveDevice()
7805 7804 generatorAttrSelect()
7806 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 7860 async function generateDeviceNameInput() {
7810 7861 const template = `
7811 7862 <div class="layui-form-item" style="margin-bottom: 0">
... ... @@ -7815,38 +7866,35 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7815 7866 <input style="display: none" type="text" name="${enumDataSourceConst.DEVICE_NAME}" class="layui-input">
7816 7867 </div>
7817 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 7869 <input style="display: none" type="text" name="${enumDataSourceConst.ATTR_NAME}" class="layui-input">
7822 7870 </div>
7823 7871 `
7824 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 7899 * @description 根据设备ID获取属性
7852 7900 */
... ... @@ -7862,7 +7910,7 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7862 7910 /**
7863 7911 * @description 生成组织选择
7864 7912 */
7865   - async function generatorOrgTres() {
  7913 + async function generatorOrgTrees() {
7866 7914 const orgContainerId = `data-source__component--org-${Date.now()}`
7867 7915 const orgContainer = `<div id="${orgContainerId}"></div>`
7868 7916 $(component).append(orgContainer)
... ... @@ -7881,18 +7929,15 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7881 7929 treeProps: {
7882 7930 data: treeList,
7883 7931 onlyIconControl: true,
7884   - click(node) {
7885   - currentCheckedOrgNode = node?.data?.id
  7932 +
  7933 + click(node) {
7886 7934 form.val(componentFilter, {
7887 7935 [enumDataSourceConst.ORG_NAME]: node?.data?.title,
7888 7936 [enumDataSourceConst.DEVICE_ID]: null,
7889   - [enumDataSourceConst.SLAVE_DEVICE_ID]: null,
7890   - [enumDataSourceConst.ATTR]: null,
7891 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 7959 if (!selected) return
7915 7960 form.val(componentFilter, {
7916 7961 [enumDataSourceConst.DEVICE_NAME]: selected?.name,
7917   - [enumDataSourceConst.SLAVE_DEVICE_ID]: null,
7918 7962 [enumDataSourceConst.ATTR]: null,
7919   - [enumDataSourceConst.SLAVE_DEVICE_NAME]: null,
7920 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 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 7973 * @description 生成属性选择器
... ... @@ -7984,36 +7994,32 @@ DataFormatPanel.prototype.addDataFont = function (container) {
7984 7994 * @param {{orgId: string, deviceId: string, slaveDeviceId?: string, attr: string}} dataSource
7985 7995 */
7986 7996 function echoDataSource(dataSource = {}) {
7987   - const { orgId, deviceId, slaveDeviceId, attr } = dataSource
  7997 + const { orgId, deviceId, deviceProfileId, deviceType, attr } = dataSource
7988 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 8003 Promise.all(queue)
8002 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 8009 form.val(componentFilter, {
8006 8010 orgId,
8007 8011 deviceId,
8008   - slaveDeviceId,
  8012 + deviceProfileId,
  8013 + deviceType,
8009 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 8024 function getValue() {
8019 8025 return form.val(componentFilter)
... ... @@ -8445,13 +8451,14 @@ DataFormatPanel.prototype.addDataFont = function (container) {
8445 8451 function proxyFn(fn) {
8446 8452 return (...args) => {
8447 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 8462 fn.apply(null, args)
8456 8463 }
8457 8464 }
... ... @@ -12303,14 +12310,15 @@ class UseLayUi {
12303 12310 * @param {boolean} [addPlaceholderOption = true] options.addPlaceholderOption
12304 12311 * @param {string} [labelField = 'name'] options.labelField
12305 12312 * @param {string} [valueField = 'name'] options.valueField
  12313 + * @param {string} [alias] options.alias
12306 12314 * @returns {*}
12307 12315 */
12308 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 12318 let { renderFn } = options
12311 12319 renderFn = renderFn || ((record) => {
12312 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 12322 } else {
12315 12323 return `<option value="${record}">${record}</option>`
12316 12324 }
... ... @@ -12456,6 +12464,7 @@ class UseLayUi {
12456 12464 * @param {boolean} [options.autoFormatDataSource = true] options.autoFormatDataSource
12457 12465 * @param {string} [options.layVerify] options.layVerify
12458 12466 * @param {string} [options.layVerType] options.layVerType
  12467 + * @param {boolean} [options.addPlaceholderOption] options.addPlaceholderOption
12459 12468 * @param {Function} [options.treeProps.onReady] options.treeProps.onReady
12460 12469 */
12461 12470 static createTreeSelect(options) {
... ... @@ -12477,6 +12486,7 @@ class UseLayUi {
12477 12486 childrenField = 'children',
12478 12487 layVerify,
12479 12488 layVerType,
  12489 + addPlaceholderOption
12480 12490 } = options
12481 12491
12482 12492 let { data = [], click, onReady } = treeProps
... ... @@ -12518,12 +12528,12 @@ class UseLayUi {
12518 12528 function mount() {
12519 12529 // mount select container
12520 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 12534 tree.render({
12525 12535 ...treeProps,
12526   - ...(autoFormatDataSource ? { data: UseLayUi.formatTreeDataSource(data, customSetTree, valueField, labelField, childrenField) } : {}),
  12536 + ...(autoFormatDataSource ? { data: treeData } : {}),
12527 12537 elem: $(elem).find('.tree-select__tree-mount'),
12528 12538 click(node) {
12529 12539 setValue(node.data)
... ... @@ -12545,22 +12555,10 @@ class UseLayUi {
12545 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 12558 if (UseLayUi.isFunction(onReady)) {
12561 12559 onReady(setValue)
12562 12560 }
12563   - // })
  12561 +
12564 12562 form.render()
12565 12563 }
12566 12564
... ...