ed-frame-vue
Version:
easydata 基础组件
90 lines (84 loc) • 2.77 kB
JavaScript
export default {
methods: {
/**
* @name getFormData
* @param moduleId 一级/二级模块ID
* @param isValidate 是否进行校验,默认false
* @return {Promise<unknown>|*|string|Promise<*|string>}
* @description 获取模板数据
*/
getFormData(moduleId, isValidate = false) {
if (moduleId && typeof moduleId === "string") {
const module = this.modules.find(i => i.id === moduleId);
return module ? this._getOneFormData(module.id, isValidate) : this._getTowFormData(moduleId, isValidate);
} else if (typeof moduleId === "boolean") {
return this._getAllFormData(moduleId)
} else {
return this._getAllFormData(isValidate)
}
},
// 获取所有模板数据
_getAllFormData(isValidate) {
const PromiseAll = []
this.modules.map(module => PromiseAll.push(this.$refs[module.id][0].getFormData(isValidate)))
return new Promise((resolve, reject) => {
Promise.all(PromiseAll).then(data => {
let formData = []
data.map(one => one.map(tow => formData.push(tow)))
resolve(formData)
}).catch(err => {
console.log(err)
reject(err)
})
})
},
// 获取单个一级模块数据
async _getOneFormData(moduleId, isValidate) {
return new Promise((resolve, reject) => {
const module = this.modules.find(i => i.id === moduleId);
if (module) {
this.$refs[module.id][0].getFormData(isValidate).then(data => {
console.log(data)
resolve(data)
}).catch(err => {
console.log(err)
this.$message.error(err)
reject(err)
})
} else {
this.$message.error('未查询到此模块')
reject('未查询到此模块')
}
})
},
// 获取单个二级模块数据
_getTowFormData(moduleId, isValidate) {
let oneRefs, module = null
this.modules.map(oneModule => {
oneModule.twoModules.map(twoModule => {
if (twoModule.id === moduleId) {
oneRefs = this.$refs[oneModule.id][0]
module = twoModule
}
})
})
if (module) {
return oneRefs.$refs[module.id][0].getFormData(isValidate)
} else {
return '未查询到此模块'
}
},
/** 获取动态模板超级提交时,所有参数,提交url */
async _getSubmitData(isValidate = false) {
const viewModels = await this.getFormData(isValidate)
return {
url: this.moduleInfo.save_url,
params: {
bizParams: this.bizParams,
viewModels: viewModels,
extraParams: this.extraParams
}
}
}
}
}