import req from '@/request.js' export const ExtendParamsMixin = { data() { return { portal: window.context.portal, extendParams: [], productParams: [], extendRuleNames: {}, paramsValueList: [], extendsValue: {}, hasExtendValue: false } }, mounted() {}, methods: { // 获取设备扩展参数配置 getExtendParams(deviceId) { return new Promise((resolve, reject) => { req .post(this.portal + `/device/params/conf/findAll`, {deviceId}) .then(res => { if (res.status == 200) { this.extendParams = res.data console.log(this.extendParams) resolve() } }) }) }, // 获取产品扩展参数配置 getProductParams(productId) { return new Promise((resolve, reject) => { req .post(this.portal + `/device/product/paramsConf/findAll`, {productId}) .then(res => { if (res.status == 200) { this.productParams = res.data console.log(this.productParams) resolve() } }) }) }, // 获取扩展参数值 getExtendParamsData(id) { return new Promise((resolve, reject) => { req.get(this.portal + '/device/info/' + id).then(res => { if (res.status == 200) { // 是否已提交过扩展值 this.paramsValueList = res.data.paramsValueList if (this.paramsValueList.length) { this.hasExtendValue = true this.formatExtendData() // 扩展字段数组转对象 } else { this.hasExtendValue = false } console.log(this.paramsValueList) resolve() } }) }) }, handleExtendParams() { // console.log(this.params,'iiiiii'); // return let data = {} let rules = {} if (this.productParams) { this.productParams.forEach(item => { // 必选项加rules验证 if (item.isRequired == '1') { let message if (item.ctlType == 'input' || item.ctlType == 'number') { message = '请输入' + item.name } else { message = '请选择' + item.name } rules[`$extend${item.id}`] = [ { message, required: true, trigger: 'change' } ] this.extendRuleNames[`$extend${item.id}`] = `$extend${item.id}` } // 各类型控件赋值 有扩展的赋值 没有扩展值赋初始值 if (item.ctlType == 'input') { data[`$extend${item.id}`] = this.hasExtendValue ? this.extendsValue[item.id] : '' } else if (item.ctlType == 'select' || item.ctlType == 'radio') { if (item.json) { let options = JSON.parse(item.json) data[`$extend${item.id}`] = this.hasExtendValue ? this.extendsValue[item.id] : options.length && options[0].value } else { data[`$extend${item.id}`] = '' } } else if (item.ctlType == 'checkbox') { if (item.json) { let options = JSON.parse(item.json) if (this.hasExtendValue) { data[`$extend${item.id}`] = this.extendsValue[item.id] ? this.extendsValue[item.id].split(',') : [] } else { data[`$extend${item.id}`] = options.length ? [options[0].value] : [] } } else { data[`$extend${item.id}`] = [] } } else if (item.ctlType == 'number') { data[`$extend${item.id}`] = this.hasExtendValue ? this.extendsValue[item.id] : 0 } else if (item.ctlType == 'date') { data[`$extend${item.id}`] = this.hasExtendValue ? this.extendsValue[item.id] : '' } }) } //------------------------- this.params = Object.assign({}, this.params, data) this.$set(this.params) this.rules = Object.assign({}, this.rules, rules) console.log(this.rules) this.$set(this.rules) }, handleExtendSave(data, type) { this.productParams.forEach(item => { if (item.ctlType == 'checkbox') { data[`$extend${item.id}`] = data[`$extend${item.id}`].length ? data[`$extend${item.id}`].join(',') : '' } }) let extendList = [] for (let key in data) { if (key.indexOf('$extend') !== -1) { extendList.push({ confId: key.replace('$extend', ''), value: data[key] }) delete data[key] } } data.paramsValueList = extendList return data }, // 扩展参数合并到固定参数和rules验证中 handleExtendParamsMixin() { // console.log(this.params,'iiiiii'); // return let data = {} let rules = {} if (this.productParams) { this.productParams.forEach(item => { // 必选项加rules验证 if (item.isRequired == '1') { let message if (item.ctlType == 'input' || item.ctlType == 'number') { message = '请输入' + item.name } else { message = '请选择' + item.name } rules[`$extend${item.id}`] = [ { message, required: true, trigger: 'change' } ] this.extendRuleNames[`$extend${item.id}`] = `$extend${item.id}` } // 各类型控件赋值 有扩展的赋值 没有扩展值赋初始值 if (item.ctlType == 'input') { data[`$extend${item.id}`] = this.hasExtendValue ? this.extendsValue[item.id] : '' } else if (item.ctlType == 'select' || item.ctlType == 'radio') { if (item.json) { let options = JSON.parse(item.json) data[`$extend${item.id}`] = this.hasExtendValue ? this.extendsValue[item.id] : options.length && options[0].value } else { data[`$extend${item.id}`] = '' } } else if (item.ctlType == 'checkbox') { if (item.json) { let options = JSON.parse(item.json) if (this.hasExtendValue) { data[`$extend${item.id}`] = this.extendsValue[item.id] ? this.extendsValue[item.id].split(',') : [] } else { data[`$extend${item.id}`] = options.length ? [options[0].value] : [] } } else { data[`$extend${item.id}`] = [] } } else if (item.ctlType == 'number') { data[`$extend${item.id}`] = this.hasExtendValue ? this.extendsValue[item.id] : 0 } else if (item.ctlType == 'date') { data[`$extend${item.id}`] = this.hasExtendValue ? this.extendsValue[item.id] : '' } }) } if (this.extendParams) { this.extendParams.forEach(item => { // 必选项加rules验证 if (item.isRequired == '1') { let message if (item.ctlType == 'input' || item.ctlType == 'number') { message = '请输入' + item.name } else { message = '请选择' + item.name } rules[`$extend${item.id}`] = [ { message, required: true, trigger: 'change' } ] this.extendRuleNames[`$extend${item.id}`] = `$extend${item.id}` } // 各类型控件赋值 有扩展的赋值 没有扩展值赋初始值 if (item.ctlType == 'input') { data[`$extend${item.id}`] = this.hasExtendValue ? this.extendsValue[item.id] : '' } else if (item.ctlType == 'select' || item.ctlType == 'radio') { if (item.json) { let options = JSON.parse(item.json) data[`$extend${item.id}`] = this.hasExtendValue ? this.extendsValue[item.id] : options.length && options[0].value } else { data[`$extend${item.id}`] = '' } } else if (item.ctlType == 'checkbox') { if (item.json) { let options = JSON.parse(item.json) if (this.hasExtendValue) { data[`$extend${item.id}`] = this.extendsValue[item.id] ? this.extendsValue[item.id].split(',') : [] } else { data[`$extend${item.id}`] = options.length ? [options[0].value] : [] } } else { data[`$extend${item.id}`] = [] } } else if (item.ctlType == 'number') { data[`$extend${item.id}`] = this.hasExtendValue ? this.extendsValue[item.id] : 0 } else if (item.ctlType == 'date') { data[`$extend${item.id}`] = this.hasExtendValue ? this.extendsValue[item.id] : '' } }) } //------------------------- this.params = Object.assign({}, this.params, data) this.$set(this.params) this.rules = Object.assign({}, this.rules, rules) console.log(this.rules) this.$set(this.rules) }, formatExtendData() { this.extendsValue = {} this.paramsValueList.forEach(item => { this.extendsValue[item.confId] = item.value }) }, handleExtendParamsSave(data, type) { this.extendParams.forEach(item => { if (item.ctlType == 'checkbox') { data[`$extend${item.id}`] = data[`$extend${item.id}`].length ? data[`$extend${item.id}`].join(',') : '' } }) this.productParams.forEach(item => { if (item.ctlType == 'checkbox') { data[`$extend${item.id}`] = data[`$extend${item.id}`].length ? data[`$extend${item.id}`].join(',') : '' } }) let extendList = [] for (let key in data) { if (key.indexOf('$extend') !== -1) { extendList.push({ confId: key.replace('$extend', ''), value: data[key] }) delete data[key] } } data.paramsValueList = extendList return data } } }