| | |
| | | <template> |
| | | <el-dialog v-dialogDrag |
| | | :title="paramVOS.title" |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :width="width" |
| | | :style="'height:'+height || 'auto'" |
| | | :fullscreen="fullscreen" |
| | | :append-to-body="true" |
| | | class="avue-dialog avue-dialog--top" |
| | | top="0" |
| | | class="avue-dialog" |
| | | :destroy-on-close="true" |
| | | @close="dialogClose"> |
| | | dialog |
| | | <basic-form ref="formRef" v-if="paramVOS.form"></basic-form> |
| | | <ui-view ref="uiViewRef" v-else-if="paramVOS.content || paramVOS.context"></ui-view> |
| | | <div v-if="paramVOS.form" class="avue-dialog__footer"> |
| | | <el-button type="primary" @click="saveHandler">保 存</el-button> |
| | | <el-button @click="escHandler">取 消</el-button> |
| | | <el-button @click="resetValue">重 置</el-button> |
| | | <basic-form ref="formRef" v-if="paramVOS.form" |
| | | :key="'dialog-'+paramVOS.form" |
| | | :span="span" |
| | | :style="fullscreen?'':'height:'+height" |
| | | :isEdit="true" |
| | | :formItems="formItems" |
| | | :formData="form" |
| | | :initValue="paramVOS.initvalue" |
| | | :uploadattachment="paramVOS.uploadattachment || false" |
| | | @getFormData="getFormData"> |
| | | </basic-form> |
| | | <ui-view ref="uiViewRef" v-else-if="paramVOS.context" |
| | | :key="'AddEditDialog-'+type" |
| | | :style="fullscreen?'':'height:'+height" |
| | | :btmType="paramVOS.type" |
| | | :context="paramVOS.context" |
| | | :inDialog="true" |
| | | :canEdit="true" |
| | | :actionType="type" |
| | | :sourceData="sourceData" |
| | | :dataStore="dataStore" |
| | | :paramVOS="paramVOS" |
| | | @getFormData="getFormData" |
| | | ></ui-view> |
| | | <div v-if="showSave" class="dialog-footer avue-dialog__footer"> |
| | | <el-button type="primary" plain size="small" @click="formSave" v-if="paramVOS.form">保 存</el-button> |
| | | <el-button type="primary" plain size="small" @click="contextSave" v-else>保 存</el-button> |
| | | <el-button size="small" @click="dialogClose">取 消</el-button> |
| | | <el-button size="small" @click="resetValue" v-if="paramVOS.form">重 置</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import uiView from "@/views/base/UIContentViewerInDialog" |
| | | import {dataForm} from "@/api/base/ui"; |
| | | import {parseEventByUrl} from "@/components/actions/base/BaseAction" |
| | | import {getFormDefineById,dataForm} from "@/api/base/ui"; |
| | | import {addSave,editSave} from "@/api/base/actions" |
| | | import {validatenull} from "@/util/validate" |
| | | |
| | | export default { |
| | | name: "AddEditDialog", |
| | |
| | | paramVOS: { |
| | | type: Object, |
| | | default: {} |
| | | }, |
| | | width: { |
| | | type: String, |
| | | default:'70%' |
| | | }, |
| | | height: { |
| | | type: String, |
| | | default:'500px' |
| | | }, |
| | | } |
| | | }, |
| | | data(){ |
| | | return { |
| | | visible:false |
| | | type:"add", |
| | | visible:false, |
| | | showSave:this.paramVOS.customBtn || true, |
| | | span:12, |
| | | formItems:[], |
| | | form:{}, |
| | | btmDefaultKeys : ['oid', 'id', 'name', 'description', 'revisionoid', 'nameoid', 'btmname', 'lastr', 'firstr', 'lastv', 'firstv', 'creator', 'createtime', 'lastModifier', 'lastmodifytime', 'revisionrule', 'revisionseq', 'revisionvalue', 'versionrule', 'versionseq', 'versionvalue', 'lcstatus', 'ts', 'owner', 'checkinby', 'checkintime', 'checkoutby', 'checkouttime', 'copyfromversion', 'secretgrade'], |
| | | linkDefaultKeys :['oid','creator','createtime','lastmodifier','lastmodifytime','f_oid','foid','f_revisionoid','frevisionoid','f_nameoid','fnameoid','f_btmname','fbtmname','t_oid','toid','t_revisionoid','trevisionoid','t_nameoid','tnameoid','t_btmname','tbtmname','ts'] |
| | | |
| | | } |
| | | }, |
| | | computed:{ |
| | | title(){ |
| | | return this.paramVOS.title || (this.type=='add'?'添加':'修改') |
| | | }, |
| | | width() { |
| | | if (!validatenull(this.paramVOS.width)) { |
| | | if (this.paramVOS.width.includes("px") || this.paramVOS.width.includes("%")) { |
| | | return this.paramVOS.width; |
| | | } else { |
| | | return this.paramVOS.width + "px"; |
| | | } |
| | | } else { |
| | | return "60%"; |
| | | } |
| | | }, |
| | | height(){ |
| | | if (!validatenull(this.paramVOS.height)) { |
| | | if (this.paramVOS.height.includes("px") || this.paramVOS.height.includes("%")) { |
| | | return this.paramVOS.height; |
| | | } else { |
| | | return this.paramVOS.height + "px"; |
| | | } |
| | | } else { |
| | | return "auto" |
| | | } |
| | | }, |
| | | fullscreen(){ |
| | | if(this.paramVOS.width || this.paramVOS.height){ |
| | | return false; |
| | | }else if(this.paramVOS.form){ |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | }, |
| | | created() { |
| | | |
| | | }, |
| | | watch: { |
| | | paramVOS: { |
| | | handler(val) { |
| | | if (this.paramVOS.form) { |
| | | this.onLoad(); |
| | | } |
| | | }, |
| | | deep: true, |
| | | immediate: true |
| | | }, |
| | | }, |
| | | methods: { |
| | | dialogClose() { |
| | | this.visible = false; |
| | | }, |
| | | onLoad: function () { |
| | | if (Object.keys(this.sourceData).length > 0 && this.isShow) { |
| | | if (Object.keys(this.sourceData).length > 0) { |
| | | this.loading = true; |
| | | dataForm(this.params).then(res => { |
| | | this.form = res.data.obj; |
| | | this.loading = false; |
| | | getFormDefineById(this.paramVOS.type,this.paramVOS.form).then(result => { |
| | | this.formItems=result.data.obj.items; |
| | | this.span=result.data.obj.columnOneRow?(24/result.data.obj.columnOneRow) : 12; |
| | | if (this.paramVOS.initvalue) { |
| | | this.form=this.paramVOS.initvalue; |
| | | } |
| | | if(this.type=="edit") { |
| | | //加载表单数据 |
| | | let sourceDataMap = {}; |
| | | for (let i in this.sourceData) { |
| | | const item = this.sourceData[i] |
| | | if (item.constructor === Object) return; |
| | | sourceDataMap['sourceData["' + i + '"]'] = item; |
| | | } |
| | | dataForm(Object.assign({ |
| | | btmname: this.paramVOS.type, |
| | | formDefineId: this.paramVOS.form, |
| | | oid: this.dataStore[0].oid |
| | | }, sourceDataMap), this.paramVOS.getdataurl, this.paramVOS.getdatamethod).then(res => { |
| | | this.form=res.data.obj; |
| | | this.loading = false; |
| | | }).catch(error => { |
| | | this.$message.error(error); |
| | | this.loading = false; |
| | | }) |
| | | } |
| | | }).catch(error => { |
| | | this.$message.error(error); |
| | | this.loading = false; |
| | | }); |
| | | |
| | | } |
| | | }, |
| | | saveHandler() { |
| | | this.dialogClose(); |
| | | contextSave(){ |
| | | const useDataType=this.paramVOS["useDataType"] || "form";//使用ui上下文中的哪个类型数据,默认form。值:form、tree、table、TreeTable |
| | | for(let key in this.$refs.uiViewRef.data){ |
| | | if(this.$refs.uiViewRef.data[key].type== useDataType){ |
| | | this.form=this.$refs.uiViewRef.data[key].data; |
| | | this.formDefineId=this.$refs.uiViewRef.data[key].DefineVO.id; |
| | | if (this.paramVOS.savebeforeevent) { |
| | | var urlobj = parseEventByUrl(this.paramVOS.savebeforeevent,null,null,'doAction'); |
| | | import(`./${urlobj.jsPath}.js`).then(module => { |
| | | module[urlobj.methodName]({ |
| | | paramVOS: this.paramVOS, |
| | | dataStore: this.dataStore, |
| | | sourceData:this.sourceData |
| | | },this.formSaveHandle); |
| | | }) |
| | | } else { |
| | | this.formSaveHandle(); |
| | | } |
| | | return; |
| | | } |
| | | } |
| | | }, |
| | | escHandler() { |
| | | this.dialogClose(); |
| | | formSave() { |
| | | let that=this; |
| | | this.$refs.formRef.validate((valid, done) => { |
| | | if (valid) { |
| | | this.formDefineId=this.paramVOS.form; |
| | | if (this.paramVOS.savebeforeevent) { |
| | | var urlobj = parseEventByUrl(this.paramVOS.savebeforeevent,null,null,'doAction'); |
| | | import(`./${urlobj.jsPath}.js`).then(module => { |
| | | module[urlobj.methodName]({ |
| | | paramVOS: this.paramVOS, |
| | | dataStore: this.dataStore, |
| | | sourceData:this.sourceData |
| | | },that.formSaveHandle); |
| | | }) |
| | | } else { |
| | | that.formSaveHandle(); |
| | | } |
| | | } else { |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | formSaveHandle(){ |
| | | let that=this; |
| | | let formValues = this.getValues(); |
| | | if(formValues.otherValue.releaseFileOids){ |
| | | formValues.otherValue.releaseFileOids=formValues.otherValue.releaseFileOids.split(','); |
| | | } |
| | | if (!formValues.defaultValues.btmname) { |
| | | formValues.defaultValues.btmname = this.paramVOS.type; |
| | | } |
| | | let datas = { |
| | | formDefineId: this.formDefineId, |
| | | preEvent: this.paramVOS.preevent, |
| | | afterEvent: this.paramVOS.afterevent, |
| | | beforeServerEvent: this.paramVOS.beforeserverevent, |
| | | afterServerEvent: this.paramVOS.afterserverevent, |
| | | releaseFileOids: formValues.otherValue.releaseFileOids||[], |
| | | data: formValues.otherValue |
| | | } |
| | | Object.assign(datas, formValues.defaultValues); |
| | | if(that.type=="add"){ |
| | | addSave(datas,that.paramVOS.url,that.paramVOS.method).then(() => { |
| | | that.$message({ |
| | | type: "success", |
| | | message: that.paramVOS.successmsg||"保存成功!" |
| | | }); |
| | | if(that.saveCallback){ |
| | | that.saveCallback(that.type,that.form); |
| | | } |
| | | if (this.paramVOS.saveafterevent) { |
| | | let urlobj = parseEventByUrl(this.paramVOS.saveafterevent,null,null,'doAction'); |
| | | import(`./${urlobj.jsPath}.js`).then(module => { |
| | | module[urlobj.methodName]({ |
| | | paramVOS: this.paramVOS, |
| | | dataStore: this.dataStore, |
| | | sourceData:this.sourceData |
| | | }); |
| | | }) |
| | | } |
| | | that.dialogClose(); |
| | | }); |
| | | }else{ |
| | | editSave(datas,that.paramVOS.url,that.paramVOS.method).then(() => { |
| | | that.$message({ |
| | | type: "success", |
| | | message: that.paramVOS.successmsg||"修改成功!" |
| | | }); |
| | | if(that.saveCallback){ |
| | | that.saveCallback(that.type,that.form); |
| | | } |
| | | if (this.paramVOS.saveafterevent) { |
| | | let urlobj = parseEventByUrl(this.paramVOS.saveafterevent,null,null,'doAction'); |
| | | import(`./${urlobj.jsPath}.js`).then(module => { |
| | | module[urlobj.methodName]({ |
| | | paramVOS: this.paramVOS, |
| | | dataStore: this.dataStore, |
| | | sourceData:this.sourceData |
| | | }); |
| | | }) |
| | | } |
| | | that.dialogClose(); |
| | | }); |
| | | } |
| | | }, |
| | | getValues(){ |
| | | let defaultValues = {}, otherValue = {}; |
| | | for (var key in this.form) { |
| | | if (this.btmDefaultKeys.indexOf(key.toLowerCase()) > -1) { |
| | | defaultValues[key] = this.form[key]; |
| | | } else { |
| | | otherValue[key] = this.form[key]; |
| | | } |
| | | } |
| | | return { |
| | | defaultValues:defaultValues, |
| | | otherValue:otherValue |
| | | } |
| | | }, |
| | | resetValue() { |
| | | this.$refs.formRef.resetValue(); |
| | | if (this.paramVOS.form) { |
| | | this.$refs.formRef.resetFields(); |
| | | } |
| | | }, |
| | | getFormData(form) { |
| | | this.form = form; |
| | | } |
| | | } |
| | | } |