From ad34a291db00bc4df1620b82221b7dcb22328f57 Mon Sep 17 00:00:00 2001 From: wangting <675591594@qq.com> Date: 星期三, 24 四月 2024 16:09:46 +0800 Subject: [PATCH] 新增action --- Source/ProjectWeb/src/actions/base/AddAction.js | 27 +++++++- /dev/null | 16 ----- Source/ProjectWeb/src/components/actions/AddEditDialog.vue | 93 +++++++++++++++++++++++++++++++ Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue | 1 Source/ProjectWeb/src/components/PLT-basic-component/BasicForm.vue | 25 +++++--- 5 files changed, 131 insertions(+), 31 deletions(-) diff --git a/Source/ProjectWeb/src/actions/base/AddAction.js b/Source/ProjectWeb/src/actions/base/AddAction.js index e4523d6..507921f 100644 --- a/Source/ProjectWeb/src/actions/base/AddAction.js +++ b/Source/ProjectWeb/src/actions/base/AddAction.js @@ -4,7 +4,7 @@ import {paramLow,callPreEvent, callPostEvent} from './BaseAction'; import {validatenull} from "@/util/validate"; import Vue from "vue"; - +import AddEditDialog from "@/components/actions/AddEditDialog" export const doAction = (options) => { options.paramVOS = paramLow(options.paramVOS) @@ -31,15 +31,32 @@ */ export const doAdd = (options,callback)=> { const paramVOS = options.paramVOS; - if (!paramVOS['form'] && !paramVOS['context']) { + if (!paramVOS['form'] && !paramVOS['context']&& !paramVOS['content']) { Vue.prototype.$message.error("鎸夐挳閰嶇疆涓嶆纭�"); return false; } - Vue.prototype.$message.success('鎵ц'+paramVOS.title); - if(callback){ - callback(options); + 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 (){ + document.body.removeChild(vm.$el); + instance.$destroy(); + instance = null; + }; + vm.prototype.saveCallback=function (){ + if (callback) { + callback(options); + } + } + document.body.appendChild(vm.$el); + } /** * 鍓嶇疆浜嬩欢 diff --git a/Source/ProjectWeb/src/components/PLT-basic-component/BasicForm.vue b/Source/ProjectWeb/src/components/PLT-basic-component/BasicForm.vue index 4412d13..caf71da 100644 --- a/Source/ProjectWeb/src/components/PLT-basic-component/BasicForm.vue +++ b/Source/ProjectWeb/src/components/PLT-basic-component/BasicForm.vue @@ -22,6 +22,7 @@ import vciWebRefer from "@/components/refer/vciWebRefer.vue"; import { formatMilliseconds } from "@/util/formatTime"; import { validatenull } from "@/util/validate"; +import { getDicts } from "@/api/system/dict"; export default { name: "basicForm", @@ -74,6 +75,7 @@ datetime: "datetime", date: "date", refer: "refer", + multiFile:"upload" } }; }, @@ -148,14 +150,15 @@ this.option.group = group; }, initItem(item){ - const type=this.columnType[this.type] || this.type + const type=this.columnType[item.type] || item.type const col= { ...item, label: item.text, prop: item.field, + showProp:item.showField, type: type, labelWidth: this.labelWidth || (item.text.length >= 6 ? 115 : 90), - disabled: item.disabled || this.disabled, + disabled: item.readOnly || this.disabled, span: item.span ? item.span : item.type === "textarea" @@ -174,16 +177,20 @@ trigger: "blur" }] } - if (col.propType === "dict") { + if (col.type === "select") { if(!validatenull(col.dictCode)) { - /*this.getDicts(col.dictCode).then((res) => { - if (res.success) { - const dic = res.obj.data; + /*getDicts(col.dictCode).then((res) => { + if (res.data.success){ + if(res.data.data && res.data.obj == null){ + res.data.obj = res.data.data + } + const dic = res.data.obj; col.dicData = dic.map((d) => { return { - label: d.name, - key: d.code, - value: d.code, + label: d.value, + key: d.key, + value: d.key, + attributes:d.attributes }; }); } diff --git a/Source/ProjectWeb/src/components/actions/AddEditDialog.vue b/Source/ProjectWeb/src/components/actions/AddEditDialog.vue new file mode 100644 index 0000000..cebbd0c --- /dev/null +++ b/Source/ProjectWeb/src/components/actions/AddEditDialog.vue @@ -0,0 +1,93 @@ +<template> + <el-dialog v-dialogDrag + :title="paramVOS.title" + :visible.sync="visible" + :width="width" + :style="'height:'+height || 'auto'" + :append-to-body="true" + class="avue-dialog avue-dialog--top" + @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> + </div> + </el-dialog> +</template> + +<script> +import uiView from "@/views/base/UIContentViewerInDialog" +import {dataForm} from "@/api/base/ui"; + +export default { + name: "AddEditDialog", + components:{uiView}, + props: { + sourceData: { + //鎵�灞炲尯鍩熺殑涓婁竴鍖哄煙閫変腑鏁版嵁 + type: Object, + default: {} + }, + dataStore: { + //寮圭獥鏃舵寜閽墍灞炲尯鍩熼�変腑鏁版嵁 + type: Array, + default: [] + }, + paramVOS: { + type: Object, + default: {} + }, + width: { + type: String, + default:'70%' + }, + height: { + type: String, + default:'500px' + }, + }, + data(){ + return { + visible:false + } + }, + computed:{ + }, + created() { + + }, + methods: { + dialogClose() { + this.visible = false; + }, + onLoad: function () { + if (Object.keys(this.sourceData).length > 0 && this.isShow) { + this.loading = true; + dataForm(this.params).then(res => { + this.form = res.data.obj; + this.loading = false; + }).catch(error => { + this.$message.error(error); + this.loading = false; + }); + } + }, + saveHandler() { + this.dialogClose(); + }, + escHandler() { + this.dialogClose(); + }, + resetValue() { + this.$refs.formRef.resetValue(); + } + } +} +</script> + +<style scoped> + +</style> diff --git a/Source/ProjectWeb/src/components/actions/formDialog.vue b/Source/ProjectWeb/src/components/actions/formDialog.vue deleted file mode 100644 index 7837de5..0000000 --- a/Source/ProjectWeb/src/components/actions/formDialog.vue +++ /dev/null @@ -1,16 +0,0 @@ -<template> - <dialog> - - </dialog> -</template> - -<script> - -export default { - name: "formDialog" -} -</script> - -<style scoped> - -</style> diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue index def378e..3e51d12 100644 --- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue +++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue @@ -9,7 +9,6 @@ </template> <script> - import {dataForm} from "@/api/base/ui"; export default { -- Gitblit v1.9.3