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