<template>
|
<el-dialog v-dialogDrag
|
:title="title"
|
:visible.sync="visible"
|
:width="width"
|
:fullscreen="fullscreen"
|
:append-to-body="true"
|
top="0"
|
class="avue-dialog"
|
:destroy-on-close="true"
|
@close="dialogClose">
|
<basic-form ref="formRef" v-if="paramVOS.form"
|
:key="'dialog-'+paramVOS.form"
|
:span="span"
|
:formItems="formItems"
|
:formData="form">
|
</basic-form>
|
<ui-view ref="uiViewRef" v-else-if="paramVOS.context"
|
:key="'AddEditDialog-'+type"
|
:btmType="paramVOS.type"
|
:context="paramVOS.context"
|
:inDialog="true"
|
:sourceData="sourceData"
|
:dataStore="dataStore"
|
:paramVOS="paramVOS"
|
></ui-view>
|
<div class="dialog-footer avue-dialog__footer">
|
<el-button type="primary" plain size="small" @click="saveHandler">保 存</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 {getFormDefineById,dataForm} from "@/api/base/ui";
|
import {addSave,editSave} from "@/api/base/actions"
|
|
export default {
|
name: "AddEditDialog",
|
components:{uiView},
|
props: {
|
sourceData: {
|
//所属区域的上一区域选中数据
|
type: Object,
|
default: {}
|
},
|
dataStore: {
|
//弹窗时按钮所属区域选中数据
|
type: Array,
|
default: []
|
},
|
paramVOS: {
|
type: Object,
|
default: {}
|
}
|
},
|
data(){
|
return {
|
type:"add",
|
visible:false,
|
span:12,
|
formItems:[],
|
form:{}
|
}
|
},
|
computed:{
|
title(){
|
return this.paramVOS.title || (this.type=='add'?'添加':'修改')
|
},
|
width(){
|
return this.paramVOS.width || "60%"
|
},
|
height(){
|
return this.paramVOS.height || "500px"
|
},
|
fullscreen(){
|
if(this.paramVOS.width || this.paramVOS.height){
|
return false;
|
}else if(this.paramVOS.form){
|
return false;
|
}
|
return false;
|
}
|
},
|
created() {
|
},
|
watch: {
|
sourceData: {
|
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.loading = true;
|
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"){
|
//加载表单数据
|
dataForm(this.params,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() {
|
if(this.paramVOS.form){
|
this.$refs.formRef.validate((valid, done) => {
|
if (valid) {
|
this.saveValue(this.form)
|
} else {
|
|
}
|
});
|
}else{
|
//this.$refs.uiViewRef.
|
if(this.saveCallback){
|
this.saveCallback({});
|
}
|
}
|
|
},
|
saveValue(savedata){
|
if(this.type=="add"){
|
addSave(savedata,this.paramVOS.url,this.paramVOS.method).then(() => {
|
this.$message({
|
type: "success",
|
message: "保存成功!"
|
});
|
if(this.saveCallback){
|
this.saveCallback(savedata);
|
}
|
this.dialogClose();
|
}).error((e) => {
|
this.$message.error(e||"保存失败")
|
});
|
}else{
|
editSave(savedata,this.paramVOS.url,this.paramVOS.method).then(() => {
|
this.$message({
|
type: "success",
|
message: "修改成功!"
|
});
|
if(this.saveCallback){
|
this.saveCallback(savedata);
|
}
|
this.dialogClose();
|
}).error((e) => {
|
this.$message.error(e||"修改失败")
|
});
|
}
|
},
|
resetValue() {
|
if (this.paramVOS.form) {
|
this.$refs.formRef.resetFields();
|
}
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
|
</style>
|