From 007418e0f113375285647b517b204f3f00daa07b Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期四, 25 四月 2024 15:31:51 +0800
Subject: [PATCH] 添加action

---
 Source/ProjectWeb/src/actions/base/AddAction.js              |   25 ++++----
 Source/ProjectWeb/src/actions/base/BaseAction.js             |    3 
 Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue |    6 +-
 Source/ProjectWeb/src/api/base/actions.js                    |   28 +++++++++
 Source/ProjectWeb/src/components/actions/AddEditDialog.vue   |   75 ++++++++++++++++++------
 5 files changed, 99 insertions(+), 38 deletions(-)

diff --git a/Source/ProjectWeb/src/actions/base/AddAction.js b/Source/ProjectWeb/src/actions/base/AddAction.js
index 507921f..bad926f 100644
--- a/Source/ProjectWeb/src/actions/base/AddAction.js
+++ b/Source/ProjectWeb/src/actions/base/AddAction.js
@@ -31,31 +31,30 @@
  */
 export const doAdd = (options,callback)=> {
   const paramVOS = options.paramVOS;
-  if (!paramVOS['form'] && !paramVOS['context']&& !paramVOS['content']) {
+  if (!paramVOS['form'] && !paramVOS['context'] && !paramVOS['content']) {
     Vue.prototype.$message.error("鎸夐挳閰嶇疆涓嶆纭�");
     return false;
   }
 
   const dialogConstructor = Vue.extend(AddEditDialog);
   let instance = new dialogConstructor();
-  instance.props={
-    sourceData:options.sourceData,
-    dataStore:options.dataStore,
-    paramVOS:paramVOS
-  }
-  const vm = instance.$mount();
-  vm.visible=true;
-  vm.dialogClose=function (){
+  instance.sourceData = options.sourceData;
+  instance.dataStore = options.dataStore;
+  instance.paramVOS = paramVOS
+
+  instance.type = 'add';
+  instance.dialogClose = function () {
+    vm.visible = false;
     document.body.removeChild(vm.$el);
     instance.$destroy();
     instance = null;
   };
-  vm.prototype.saveCallback=function (){
-    if (callback) {
-      callback(options);
-    }
+  if (callback) {
+    instance.saveCallback = callback(options);
   }
+  let vm = instance.$mount();
   document.body.appendChild(vm.$el);
+  instance.visible = true;
 
 }
 /**
diff --git a/Source/ProjectWeb/src/actions/base/BaseAction.js b/Source/ProjectWeb/src/actions/base/BaseAction.js
index 0e9b377..93c5db0 100644
--- a/Source/ProjectWeb/src/actions/base/BaseAction.js
+++ b/Source/ProjectWeb/src/actions/base/BaseAction.js
@@ -13,8 +13,7 @@
 
   if(button.url && button.url!='null'){
     //鏈夐厤缃產ction璺緞锛屼娇鐢ㄨ矾寰勫搴旂殑js
-    let buttonParse = parseEventByUrl(button.url,options,false);
-    import("../"+buttonParse.jsPath+".js").then(module => {
+    import("../"+button.url+".js").then(module => {
       module.doAction(options);
     })
   }else {
diff --git a/Source/ProjectWeb/src/api/base/actions.js b/Source/ProjectWeb/src/api/base/actions.js
new file mode 100644
index 0000000..b60e7f3
--- /dev/null
+++ b/Source/ProjectWeb/src/api/base/actions.js
@@ -0,0 +1,28 @@
+import request from '@/router/axios';
+
+// 鏂板
+export const addSave = (url,method,data) => {
+  url='/api/'+(url||"uiDataController/addSave");
+  return request({
+    url: url,
+    method: method || 'post',
+    data
+  })
+}
+// 淇敼
+export const edit = (data) => {
+  return request({
+    url: '/api/uiDataController/edit-save',
+    method: 'put',
+    data
+  })
+}
+// 鍒犻櫎
+export const del = (data) => {
+  let url = '/api/uiDataController/remove'
+  return request({
+    url,
+    method: 'post',
+    data
+  })
+}
diff --git a/Source/ProjectWeb/src/components/actions/AddEditDialog.vue b/Source/ProjectWeb/src/components/actions/AddEditDialog.vue
index cebbd0c..0ee7d33 100644
--- a/Source/ProjectWeb/src/components/actions/AddEditDialog.vue
+++ b/Source/ProjectWeb/src/components/actions/AddEditDialog.vue
@@ -3,17 +3,26 @@
              :title="paramVOS.title"
              :visible.sync="visible"
              :width="width"
-             :style="'height:'+height || 'auto'"
+             :fullscreen="paramVOS.content || paramVOS.context"
              :append-to-body="true"
              class="avue-dialog avue-dialog--top"
+             :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">
+    </basic-form>
+    <ui-view ref="uiViewRef" v-else-if="paramVOS.content || paramVOS.context"
+             :btmType="paramVOS.type"
+             :context="paramVOS.context"
+             :inDialog="true"
+             :key="'AddEditDialog-'+type"
+             :sourceData="sourceData"
+             :dataStore="dataStore"
+             :paramVOS="paramVOS"
+    ></ui-view>
+    <div slot="footer" 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>
     </div>
   </el-dialog>
 </template>
@@ -21,6 +30,7 @@
 <script>
 import uiView from "@/views/base/UIContentViewerInDialog"
 import {dataForm} from "@/api/base/ui";
+import {addSave} from "@/api/base/actions"
 
 export default {
   name: "AddEditDialog",
@@ -42,22 +52,32 @@
     },
     width: {
       type: String,
-      default:'70%'
-    },
-    height: {
-      type: String,
-      default:'500px'
-    },
+      default:'60%'
+    }
   },
   data(){
     return {
+      type:"add",
       visible:false
     }
   },
   computed:{
+    title(){
+      return this.paramVOS.title || (this.type=='add'?'娣诲姞':'淇敼')
+    }
   },
   created() {
-
+  },
+  watch: {
+    sourceData: {
+      handler(val) {
+        if (this.paramVOS.form) {
+          this.onLoad();
+        }
+      },
+      deep: true,
+      immediate: true
+    },
   },
   methods: {
     dialogClose() {
@@ -76,13 +96,28 @@
       }
     },
     saveHandler() {
-      this.dialogClose();
-    },
-    escHandler() {
-      this.dialogClose();
+      this.$refs.formRef.validate((valid, done) => {
+        if (valid) {
+          addSave(this.paramVOS.url,this.paramVOS.method,this.form).then(() => {
+            this.$message({
+              type: "success",
+              message: "鍒涘缓鎴愬姛!"
+            });
+            if(this.saveCallback){
+              this.saveCallback();
+            }
+            this.dialogClose();
+          }).error((e) => {
+            this.$message.error(e||"鍒涘缓澶辫触")
+          });
+
+        } else {
+
+        }
+      });
     },
     resetValue() {
-      this.$refs.formRef.resetValue();
+      this.$refs.formRef.resetFields();
     }
   }
 }
diff --git a/Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue b/Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue
index 6942d23..3c680d3 100644
--- a/Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue
+++ b/Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue
@@ -1,6 +1,6 @@
 <template>
   <!--UI涓婁笅鏂囩殑灞曠ず鍣�-->
-  <div style="height:calc(100% - 4px);min-width:1200px" >
+  <div style="height:calc(100% - 4px);" >
     <el-header v-if="uiDefineVO.northAreas && uiDefineVO.northAreas.length>0">
       <UIContentArea :key="'northArea-'+uiDefineVO.oid"
                      :uiBtmType="btmType"
@@ -35,7 +35,7 @@
         </UIContentArea>
       </el-aside>
       <el-container style="height: 100%;display: block">
-        <el-main v-if="uiDefineVO.centerAreas && uiDefineVO.centerAreas.length>0" :style="'min-height: 300px;height: '+centerHeight">
+        <el-main v-if="uiDefineVO.centerAreas && uiDefineVO.centerAreas.length>0" :style="'min-height: 200px;height: '+centerHeight">
           <UIContentArea :key="'centerArea-'+uiDefineVO.oid"
                          :uiBtmType="btmType"
                          :uiContext="context"
@@ -51,7 +51,7 @@
           </UIContentArea>
         </el-main>
         <el-footer v-if="uiDefineVO.southAreas && uiDefineVO.southAreas.length>0" height="35%"
-                   style="min-height: 150px;">
+                   style="min-height: 100px;">
           <UIContentArea :key="'southArea-'+uiDefineVO.oid"
                          :uiBtmType="btmType"
                          :uiContext="context"

--
Gitblit v1.9.3