From 33855a1961d581727cfbf59230085e6b95cc549c Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期一, 29 四月 2024 15:56:37 +0800
Subject: [PATCH] action

---
 Source/ProjectWeb/src/components/actions/AddEditDialog.vue |  154 +++++++++++++++++++++++++++++++++++----------------
 1 files changed, 105 insertions(+), 49 deletions(-)

diff --git a/Source/ProjectWeb/src/components/actions/AddEditDialog.vue b/Source/ProjectWeb/src/components/actions/AddEditDialog.vue
index 54343ca..3d288d5 100644
--- a/Source/ProjectWeb/src/components/actions/AddEditDialog.vue
+++ b/Source/ProjectWeb/src/components/actions/AddEditDialog.vue
@@ -1,31 +1,37 @@
 <template>
   <el-dialog v-dialogDrag
-             :title="paramVOS.title"
+             :title="title"
              :visible.sync="visible"
              :width="width"
-             :fullscreen="paramVOS.content || paramVOS.context"
+             :fullscreen="fullscreen"
              :append-to-body="true"
-             class="avue-dialog avue-dialog--top"
+             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"
+                :style="fullscreen?'':'height:'+height"
+                :isEdit="true"
                 :formItems="formItems"
                 :formData="form">
     </basic-form>
-    <ui-view ref="uiViewRef" v-else-if="paramVOS.content || paramVOS.context"
+    <ui-view ref="uiViewRef" v-else-if="paramVOS.context"
+             :key="'AddEditDialog-'+type"
+             :style="fullscreen?'':'height:'+height"
              :btmType="paramVOS.type"
              :context="paramVOS.context"
              :inDialog="true"
-             :key="'AddEditDialog-'+type"
+             :canEdit="true"
              :sourceData="sourceData"
              :dataStore="dataStore"
              :paramVOS="paramVOS"
     ></ui-view>
-    <div slot="footer" class="dialog-footer avue-dialog__footer">
+    <div v-if="showSave" 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">閲� 缃�</el-button>
+      <el-button size="small" @click="resetValue" v-if="paramVOS.form">閲� 缃�</el-button>
     </div>
   </el-dialog>
 </template>
@@ -34,6 +40,7 @@
 import uiView from "@/views/base/UIContentViewerInDialog"
 import {getFormDefineById,dataForm} from "@/api/base/ui";
 import {addSave,editSave} from "@/api/base/actions"
+import {validatenull} from "@/util/validate"
 
 export default {
   name: "AddEditDialog",
@@ -52,16 +59,13 @@
     paramVOS: {
       type: Object,
       default: {}
-    },
-    width: {
-      type: String,
-      default:'60%'
     }
   },
   data(){
     return {
       type:"add",
       visible:false,
+      showSave:this.paramVOS.customBtn || true,
       span:12,
       formItems:[],
       form:{}
@@ -70,6 +74,36 @@
   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() {
@@ -99,15 +133,25 @@
           if (this.paramVOS.initvalue) {
             this.form=this.paramVOS.initvalue;
           }
-          if(this.type=="edit"){
+          if(this.type=="edit") {
             //鍔犺浇琛ㄥ崟鏁版嵁
-            dataForm(this.params,this.paramVOS.getdataurl,this.paramVOS.getdatamethod).then(res => {
+            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);
@@ -117,49 +161,61 @@
       }
     },
     saveHandler() {
-      this.$refs.formRef.validate((valid, done) => {
-        if (valid) {
-          if(this.type=="add"){
-            addSave(this.form,this.paramVOS.url,this.paramVOS.method).then(() => {
-              this.$message({
-                type: "success",
-                message: "淇濆瓨鎴愬姛!"
-              });
-              if(this.saveCallback){
-                this.saveCallback();
-              }
-              this.dialogClose();
-            }).error((e) => {
-              this.$message.error(e||"淇濆瓨澶辫触")
-            });
-          }else{
-            editSave(this.form,this.paramVOS.url,this.paramVOS.method).then(() => {
-              this.$message({
-                type: "success",
-                message: "淇敼鎴愬姛!"
-              });
-              if(this.saveCallback){
-                this.saveCallback();
-              }
-              this.dialogClose();
-            }).error((e) => {
-              this.$message.error(e||"淇敼澶辫触")
-            });
-          }
-        } else {
+      if(this.paramVOS.form){
+        this.$refs.formRef.validate((valid, done) => {
+          if (valid) {
+            this.saveValue(this.form)
+          } else {
 
+          }
+        });
+      }else{
+        //this.$refs.uiViewRef.
+        debugger;
+        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() {
-      this.$refs.formRef.resetFields();
+      if (this.paramVOS.form) {
+        this.$refs.formRef.resetFields();
+      }
     }
   }
 }
 </script>
 
 <style scoped>
-.avue-dialog__footer{
-  margin-bottom: 20px;
-}
+
 </style>

--
Gitblit v1.9.3