ed-frame-vue
Version:
easydata 基础组件
86 lines (82 loc) • 2.79 kB
JavaScript
import {getControlProp} from "../../../utils/useBusiness";
export default {
methods: {
/**
* @name chosePopup
* @param control
* @description 打开选择弹窗
*/
chosePopup(control) {
this.visible = true
this.$nextTick(() => {
if (this.controlProps[control.id]) {
let controlProp = getControlProp(control, this.controlProps)
let componentName = controlProp.compType === 'system' ? controlProp.popupMode + control.id : controlProp.component + control.id
this.currentPopupComponent = this.popupComponents[componentName]
this.popupCache = {
ref: componentName,
control: control
}
if (controlProp.params) {
let params = {}
if (controlProp.params.indexOf(",") > 0) {
let tr = controlProp.params.split(',')
tr.forEach(t => {
params[t] = this.popupFormModel[t] ? this.popupFormModel[t] : this.formModel[t]
})
} else {
params[controlProp.params] = this.popupFormModel[controlProp.params] ? this.popupFormModel[controlProp.params] : this.formModel[controlProp.params]
}
this.$nextTick(() => {
try {
let componentRef = this.$refs[componentName]
if (componentRef) {
componentRef.loadData(params)
}
} catch (e) {
throw "错误的加载方法:" + e
}
})
}
}
})
},
/**
* @name handleOk
* @description 选择弹窗关闭取值
*/
async handleOk() {
const {
ref,
control
} = this.popupCache
let controlProp = getControlProp(control, this.controlProps)
let componentName = controlProp.compType === 'system' ? controlProp.popupMode + control.id : controlProp.component + control.id
const data = await this.$refs[componentName].getData()
if (data) {
if(data instanceof Array){
let arr = []
data.forEach(item => {
arr.push(item.label)
})
this.$set(this.formModel, control.controlName, arr.join(','))
}else {
this.$set(this.formModel, control.controlName, data.label);
}
this.$set(this.popupFormModel, control.controlName, data);
this.$refs.EasyDataForm.clearValidate(control.controlName)
this.$emit("chosePopupOk", data, control)
this.customizeChangeHandler(data.value, control)
this.visible = false
} else {
this.$message.warn('未选中~')
}
},
/**
* @name handleClose
*/
handleClose() {
this.visible = false
},
}
}