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