田源
2024-11-14 8835c9e1dec836d6d8159e78b9df12ad6402ad98
Source/plt-web/plt-web-ui/src/components/actions/base/AddEditDialog.vue
@@ -1,44 +1,45 @@
<template>
  <el-dialog v-dialogDrag
             :append-to-body="true"
             :close-on-click-modal="false"
             :destroy-on-close="true"
             :fullscreen="fullscreen"
             :title="title"
             :visible.sync="visible"
             :width="width"
             :fullscreen="fullscreen"
             :append-to-body="true"
             top="0"
             class="avue-dialog"
             :destroy-on-close="true"
             :close-on-click-modal="false"
             top="0"
             @close="dialogClose">
    <basic-form ref="formRef" v-if="paramVOS.form"
                :key="'dialog-'+paramVOS.form"
    <basic-form v-if="paramVOS.form" :key="'dialog-'+paramVOS.form"
                ref="formRef"
                v-loading="loading"
                :formData="form"
                :formItems="formItems"
                :initValue="paramVOS.initvalue"
                :isEdit="true"
                :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"
    <ui-view v-else-if="paramVOS.context" :key="'AddEditDialog-'+type"
             ref="uiViewRef"
             :actionType="type"
             :sourceData="sourceData"
             :btmType="paramVOS.type"
             :canEdit="true"
             :context="paramVOS.context"
             :dataStore="dataStore"
             :inDialog="true"
             :paramVOS="paramVOS"
             :sourceData="sourceData"
             :style="fullscreen?'':'height:'+height"
             @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 v-if="paramVOS.form" plain size="small" type="primary" @click="formSave">保 存</el-button>
      <el-button v-else plain size="small" type="primary" @click="contextSave">保 存</el-button>
      <el-button size="small" @click="dialogClose">取 消</el-button>
      <el-button size="small" @click="resetValue" v-if="paramVOS.form">重 置</el-button>
      <el-button v-if="paramVOS.form" size="small" @click="resetValue">重 置</el-button>
    </div>
  </el-dialog>
</template>
@@ -46,13 +47,13 @@
<script>
import uiView from "@/views/base/UIContentViewerInDialog"
import {parseEventByUrl} from "@/components/actions/BaseAction"
import {getFormDefineById,dataForm} from "@/api/base/ui";
import {addSave,editSave} from "@/api/base/actions"
import {getFormDefineById, dataForm} from "@/api/base/ui";
import {addSave, editSave} from "@/api/base/actions"
import {validatenull} from "@/util/validate"
export default {
  name: "AddEditDialog",
  components:{uiView},
  components: {uiView},
  props: {
    sourceData: {
      //所属区域的上一区域选中数据
@@ -69,22 +70,23 @@
      default: {}
    }
  },
  data(){
  data() {
    return {
      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']
      loading: 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'?'添加':'修改')
  computed: {
    title() {
      return this.paramVOS.title || (this.type == 'add' ? '添加' : '修改')
    },
    width() {
      if (!validatenull(this.paramVOS.width)) {
@@ -97,7 +99,7 @@
        return "60%";
      }
    },
    height(){
    height() {
      if (!validatenull(this.paramVOS.height)) {
        if (this.paramVOS.height.includes("px") || this.paramVOS.height.includes("%")) {
          return this.paramVOS.height;
@@ -108,10 +110,10 @@
        return "auto"
      }
    },
    fullscreen(){
      if(this.paramVOS.width || this.paramVOS.height){
    fullscreen() {
      if (this.paramVOS.width || this.paramVOS.height) {
        return false;
      }else if(this.paramVOS.form){
      } else if (this.paramVOS.form) {
        return false;
      }
      return true;
@@ -137,13 +139,13 @@
    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;
        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;
            this.form = this.paramVOS.initvalue;
          }
          if(this.type=="edit") {
          if (this.type == "edit") {
            //加载表单数据
            let sourceDataMap = {};
            for (let i in this.sourceData) {
@@ -156,13 +158,14 @@
              formDefineId: this.paramVOS.form,
              oid: this.dataStore[0].oid
            }, sourceDataMap), this.paramVOS.getdataurl, this.paramVOS.getdatamethod).then(res => {
              this.form=res.data.obj;
              this.form = res.data.obj.data;
              this.loading = false;
            }).catch(error => {
              this.$message.error(error);
              this.loading = false;
            })
          }
          this.loading = false;
        }).catch(error => {
          this.$message.error(error);
          this.loading = false;
@@ -170,27 +173,27 @@
      }
    },
    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;
    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');
            if(urlobj.params){
              Object.assign(this.paramVOS,urlobj.params);
            var urlobj = parseEventByUrl(this.paramVOS.savebeforeevent, null, null, 'doAction');
            if (urlobj.params) {
              Object.assign(this.paramVOS, urlobj.params);
            }
            if(validatenull(urlobj.jsPath)){
            if (validatenull(urlobj.jsPath)) {
              this.saveBforeHandle(this.paramVOS);
            }else{
            } else {
              try {
                import(`./${urlobj.jsPath}.js`).then(module => {
                  module[urlobj.methodName]({
                    paramVOS: this.paramVOS,
                    dataStore: this.dataStore,
                    sourceData:this.sourceData
                  },this.formSaveHandle);
                    sourceData: this.sourceData
                  }, this.formSaveHandle);
                })
              } catch (error) {
                this.$message.error('未找到保存前置事件执行js');
@@ -204,18 +207,18 @@
      }
    },
    formSave() {
      let that=this;
      let that = this;
      this.$refs.formRef.validate((valid, done) => {
        if (valid) {
          this.formDefineId=this.paramVOS.form;
          this.formDefineId = this.paramVOS.form;
          if (this.paramVOS.savebeforeevent) {
            var urlobj = parseEventByUrl(this.paramVOS.savebeforeevent,null,null,'doAction');
            if(urlobj.params){
              Object.assign(this.paramVOS,urlobj.params);
            var urlobj = parseEventByUrl(this.paramVOS.savebeforeevent, null, null, 'doAction');
            if (urlobj.params) {
              Object.assign(this.paramVOS, urlobj.params);
            }
            if(validatenull(urlobj.jsPath)){
            if (validatenull(urlobj.jsPath)) {
              this.saveBforeHandle(this.paramVOS);
            }else{
            } else {
              try {
                import(`./${urlobj.jsPath}.js`).then(module => {
                  module[urlobj.methodName]({
@@ -236,11 +239,11 @@
        }
      });
    },
    formSaveHandle(){
      let that=this;
    formSaveHandle() {
      let that = this;
      let formValues = this.getValues();
      if(formValues.otherValue.releaseFileOids){
        formValues.otherValue.releaseFileOids=formValues.otherValue.releaseFileOids.split(',');
      if (formValues.otherValue.releaseFileOids) {
        formValues.otherValue.releaseFileOids = formValues.otherValue.releaseFileOids.split(',');
      }
      if (!formValues.defaultValues.btmname) {
        formValues.defaultValues.btmname = this.paramVOS.type;
@@ -251,33 +254,33 @@
        afterEvent: this.paramVOS.afterevent,
        beforeServerEvent: this.paramVOS.beforeserverevent,
        afterServerEvent: this.paramVOS.afterserverevent,
        releaseFileOids: formValues.otherValue.releaseFileOids||[],
        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(() => {
      if (that.type == "add") {
        addSave(datas, that.paramVOS.url, that.paramVOS.method).then(() => {
          that.$message({
            type: "success",
            message: that.paramVOS.successmsg||"保存成功!"
            message: that.paramVOS.successmsg || "保存成功!"
          });
          if(that.saveCallback){
            that.saveCallback(that.type,that.form);
          if (that.saveCallback) {
            that.saveCallback(that.type, that.form);
          }
          if (this.paramVOS.saveafterevent) {
            let urlobj = parseEventByUrl(this.paramVOS.saveafterevent,null,null,'doAction');
            if(urlobj.params){
              Object.assign(this.paramVOS,urlobj.params);
            let urlobj = parseEventByUrl(this.paramVOS.saveafterevent, null, null, 'doAction');
            if (urlobj.params) {
              Object.assign(this.paramVOS, urlobj.params);
            }
            if(validatenull(urlobj.jsPath)){
            if (validatenull(urlobj.jsPath)) {
              this.saveAfterHandle(this.paramVOS);
            }else{
            } else {
              try {
                import(`./${urlobj.jsPath}.js`).then(module => {
                  module[urlobj.methodName]({
                    paramVOS: this.paramVOS,
                    dataStore: this.dataStore,
                    sourceData:this.sourceData
                    sourceData: this.sourceData
                  });
                })
              } catch (error) {
@@ -287,29 +290,29 @@
          }
          that.dialogClose();
        });
      }else{
        editSave(datas,that.paramVOS.url,that.paramVOS.method).then(() => {
      } else {
        editSave(datas, that.paramVOS.url, that.paramVOS.method).then(() => {
          that.$message({
            type: "success",
            message: that.paramVOS.successmsg||"修改成功!"
            message: that.paramVOS.successmsg || "修改成功!"
          });
          if(that.saveCallback){
            that.saveCallback(that.type,that.form);
          if (that.saveCallback) {
            that.saveCallback(that.type, that.form);
          }
          if (this.paramVOS.saveafterevent) {
            let urlobj = parseEventByUrl(this.paramVOS.saveafterevent,null,null,'doAction');
            if(urlobj.params){
              Object.assign(this.paramVOS,urlobj.params);
            let urlobj = parseEventByUrl(this.paramVOS.saveafterevent, null, null, 'doAction');
            if (urlobj.params) {
              Object.assign(this.paramVOS, urlobj.params);
            }
            if(validatenull(urlobj.jsPath)){
            if (validatenull(urlobj.jsPath)) {
              this.saveAfterHandle(this.paramVOS);
            }else{
            } else {
              try {
                import(`./${urlobj.jsPath}.js`).then(module => {
                  module[urlobj.methodName]({
                    paramVOS: this.paramVOS,
                    dataStore: this.dataStore,
                    sourceData:this.sourceData
                    sourceData: this.sourceData
                  });
                })
              } catch (error) {
@@ -321,7 +324,7 @@
        });
      }
    },
    getValues(){
    getValues() {
      let defaultValues = {}, otherValue = {};
      for (var key in this.form) {
        if (this.btmDefaultKeys.indexOf(key.toLowerCase()) > -1) {
@@ -331,8 +334,8 @@
        }
      }
      return {
        defaultValues:defaultValues,
        otherValue:otherValue
        defaultValues: defaultValues,
        otherValue: otherValue
      }
    },
    resetValue() {
@@ -344,11 +347,11 @@
      this.form = form;
    },
    //保存前置事件
    saveBforeHandle(params){
    saveBforeHandle(params) {
      this.$message.info('执行保存前置事件');
    },
    //保存后置事件
    saveAfterHandle(params){
    saveAfterHandle(params) {
      this.$message.info('保存后置事件执行');
    },
  }