UNPKG

ed-frame-vue

Version:

easydata 基础组件

86 lines (82 loc) 2.79 kB
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 }, } }