From 3b5faa420d89c2ee7f3973c043ea997e4885e0ec Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期一, 18 三月 2024 15:59:26 +0800
Subject: [PATCH] 编辑回填
---
Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue | 20 +-
Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue | 197 ++---------------------
Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue | 226 ++++++++++++++++++++++++++--
3 files changed, 239 insertions(+), 204 deletions(-)
diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue
index 9bdea76..b5322d1 100644
--- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue
+++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue
@@ -16,10 +16,10 @@
:key="item.oid" :icon="item.paramVOS.icon"
:type="item.paramVOS.buttonType || 'primary'" plain
size="small"
- @click="buttonClick(item)">
+ @click="buttonClick(item,scope)">
{{ item.name }}
</el-button>
- <dynamic-form :title="formName" :visible.sync="visible"></dynamic-form>
+<!-- <dynamic-form :title="formName" :visible.sync="visible"></dynamic-form>-->
</div>
</template>
@@ -36,6 +36,9 @@
LocationType: {
type: String,
},
+ scope:{
+ type:Object,
+ }
},
data() {
return {
@@ -81,7 +84,7 @@
initvalue: "reviewtype=department",
location: 'top',
buttonType: 'primary',
- buttonMethods: 'form'
+ buttonMethods: 'add'
},
pkComponent: "D99AD59E-563F-AB7A-F307-794B929114CD",
pkParentOid: "",
@@ -125,7 +128,7 @@
location: 'menu',
buttonType: 'text',
icon: "el-icon-edit",
- buttonMethods: 'form'
+ buttonMethods: 'edit'
},
pkComponent: "D99AD59E-563F-AB7A-F307-794B929114CD",
pkParentOid: "",
@@ -240,14 +243,7 @@
},
methods: {
buttonClick(item) {
- this.$emit('buttonClick', item.id)
-
- this.formName = item.name;
- if (item.paramVOS.buttonMethods === 'form') {
- this.visible = true;
- }else if(item.paramVOS.buttonMethods === 'delete'){
- this.$message.success('鍒犻櫎鎴愬姛锛�')
- }
+ this.$emit('buttonClick',this.scope,item)
}
}
}
diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue
index acae2e5..d0ccd6c 100644
--- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue
+++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-form.vue
@@ -1,6 +1,6 @@
<template>
<basic-container>
- <el-dialog v-if="dialogFormVisible" :title="title" :visible.sync="dialogFormVisible" append-to-body>
+ <el-dialog v-if="dialogFormVisible" :title="title" :visible.sync="dialogFormVisible" @close="closeHandler" append-to-body>
<avue-form v-model="form" :option="option" @submit="submitHandler" @reset-change="changeHandler"></avue-form>
</el-dialog>
</basic-container>
@@ -37,170 +37,14 @@
},
title: {
type: String
- }
+ },
+ formList:{
+ type:Array
+ },
},
data() {
return {
form: {},
- formList: [
- {
- comboxKey: null,
- customClass: null,
- data: null,
- dateFormate: null,
- defaultValue: "3-15-test",
- displayExtension: "",
- extendAttrMap: null,
- extendAttrString: null,
- field: "name",
- hidden: false,
- keyAttr: false,
- prefix: null,
- readOnly: false,
- referConfig: null,
- required: true,
- selectLibFlag: null,
- showField: null,
- suffix: '$',
- text: "鍚嶇О",
- tooltips: null,
- type: "text",
- unique: false,
- verify: ""
- },
- {
- comboxKey: null,
- customClass: null,
- data: null,
- dateFormate: null,
- defaultValue: "",
- displayExtension: "",
- extendAttrMap: null,
- extendAttrString: null,
- field: "code",
- hidden: false,
- keyAttr: false,
- prefix: null,
- readOnly: false,
- referConfig: null,
- required: false,
- selectLibFlag: null,
- showField: null,
- suffix: null,
- text: "缂栫爜",
- tooltips: null,
- type: "text",
- unique: false,
- verify: ""
- },
- {
- comboxKey: "EnumReviewType",
- customClass: null,
- data: null,
- dateFormate: null,
- defaultValue: "department",
- displayExtension: "",
- extendAttrMap: null,
- extendAttrString: null,
- field: "reviewtype",
- hidden: false,
- keyAttr: false,
- prefix: null,
- readOnly: false,
- referConfig: null,
- required: false,
- selectLibFlag: null,
- showField: null,
- suffix: null,
- text: "绫诲瀷",
- tooltips: null,
- type: "combox",
- unique: false,
- verify: "",
- dicData: [{
- label: '娴嬭瘯1',
- value: 'department'
- }, {
- label: '娴嬭瘯2',
- value: 'departments'
- }]
- },
- {
- comboxKey: null,
- customClass: null,
- data: null,
- dateFormate: null,
- defaultValue: "",
- displayExtension: "",
- extendAttrMap: null,
- extendAttrString: null,
- field: "creator",
- hidden: true,
- keyAttr: false,
- prefix: null,
- readOnly: true,
- referConfig: null,
- required: false,
- selectLibFlag: null,
- showField: null,
- suffix: null,
- text: "鍒涘缓浜�",
- tooltips: null,
- type: "text",
- unique: false,
- verify: ""
- },
- {
- comboxKey: null,
- customClass: null,
- data: null,
- dateFormate: "yyyy-MM-dd HH:mm:ss",
- defaultValue: "",
- displayExtension: "",
- extendAttrMap: null,
- extendAttrString: null,
- field: "createtime",
- hidden: true,
- keyAttr: false,
- prefix: null,
- readOnly: false,
- referConfig: null,
- required: false,
- selectLibFlag: null,
- showField: null,
- suffix: null,
- text: "鍒涘缓鏃堕棿",
- tooltips: null,
- type: "datetime",
- unique: false,
- verify: ""
- },
- {
- comboxKey: null,
- customClass: null,
- data: null,
- dateFormate: null,
- defaultValue: "",
- displayExtension: "",
- extendAttrMap: null,
- extendAttrString: null,
- field: "content",
- hidden: false,
- keyAttr: false,
- prefix: null,
- readOnly: false,
- referConfig: null,
- required: false,
- selectLibFlag: null,
- showField: null,
- suffix: null,
- text: "澶囨敞",
- tooltips: null,
- type: "textarea",
- unique: false,
- verify: ""
- },
- ],
}
},
computed: {
@@ -214,11 +58,23 @@
},
option() {
return {
- column: this.formColumn
+ column: this.formColumn(this.formList)
}
},
- formColumn() {
- return this.formList.map(item => {
+ },
+ methods:{
+ //琛ㄥ崟鎻愪氦
+ submitHandler(form,done){
+ console.log(form)
+ done()
+ },
+ changeHandler(){
+ this.form = {};
+ // this.clearValidate() 娓呯┖鏍¢獙
+ // this.resetFields()
+ },
+ formColumn(formList) {
+ return formList.map(item => {
const typeValue = item.type === 'text' ? 'input' : item.type === 'combox' ? 'select' : item.type;
return {
@@ -231,6 +87,8 @@
disabled: item.disabled,
labelSuffix: item.suffix,
suffixIcon: item.prefix,
+ placeholder:item.placeholder,
+ clearable:item.clearable,
rules: [{
required: item.required,
message: `璇疯緭鍏�${item.text}!`,
@@ -238,18 +96,9 @@
}]
}
})
- }
- },
- methods:{
- //琛ㄥ崟鎻愪氦
- submitHandler(form,done){
- console.log(form)
- done()
},
- changeHandler(){
+ closeHandler(){
this.form = {};
- // this.clearValidate() 娓呯┖鏍¢獙
- // this.resetFields()
},
}
}
diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue
index 692fee5..6e4ab50 100644
--- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue
+++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue
@@ -12,50 +12,53 @@
<!--menu鍖哄煙鎸夐挳-->
<template slot="menu" slot-scope="scope">
- <dynamic-button LocationType="menu" type="table" @buttonClick="buttonClick"></dynamic-button>
+ <dynamic-button :scope="scope" LocationType="menu" type="table" @buttonClick="buttonClick"></dynamic-button>
</template>
</avue-crud>
<!-- 琛ㄦ牸鍐呮寜閽搷浣滃璇濇琛ㄥ崟 -->
-<!-- <dynamic-form :visible.sync="visible" style="display: none"></dynamic-form>-->
+ <dynamic-form ref="dynamicForm" :formList="formList" :title="formName" :visible.sync="visible"
+ style="display: none"></dynamic-form>
</div>
</template>
<script>
export default {
name: "dynamic-table",
- props:{
- componentVO:{
- type:Object,
+ props: {
+ componentVO: {
+ type: Object,
default: {}
},
inDialog: {
type: Boolean,
default: false
},
- areasName:{
- type:String,
- default:''//westArea瀵艰埅鍖�
+ areasName: {
+ type: String,
+ default: ''//westArea瀵艰埅鍖�
},
- sourceData:{
+ sourceData: {
//鑿滃崟婧愭暟鎹垨鑰呭脊绐楁椂鎸夐挳鎵�灞炲尯鍩熺殑涓婁竴鍖哄煙閫変腑鏁版嵁
- type:Object,
+ type: Object,
default: {}
},
- paramVOS:{
- type:Object,
+ paramVOS: {
+ type: Object,
default: {}
}
},
data() {
return {
form: {},
+ formName: '',
loading: false,
- visible:false,
+ visible: false,
page: {
pageSize: 10,
currentPage: 1,
total: 5,
},
+ //琛ㄦ牸澶�
tableHeadList: [
{
align: "left",
@@ -127,6 +130,7 @@
width: 160
}
],
+ //琛ㄦ牸鏁版嵁
tableList: [
{
code: "20220102",
@@ -520,6 +524,166 @@
isfirstr: "1",
ts: "2022-02-18 14:35:53.177"
},
+ ],
+ // 琛ㄥ崟鏁版嵁
+ formList: [
+ {
+ comboxKey: null,
+ customClass: null,
+ data: null,
+ dateFormate: null,
+ defaultValue: "",
+ displayExtension: "",
+ extendAttrMap: null,
+ extendAttrString: null,
+ field: "name",
+ hidden: false,
+ keyAttr: false,
+ prefix: null,
+ readOnly: false,
+ referConfig: null,
+ required: true,
+ selectLibFlag: null,
+ showField: null,
+ suffix: '$',
+ text: "鍚嶇О",
+ tooltips: null,
+ type: "text",
+ unique: false,
+ verify: ""
+ },
+ {
+ comboxKey: null,
+ customClass: null,
+ data: null,
+ dateFormate: null,
+ defaultValue: "",
+ displayExtension: "",
+ extendAttrMap: null,
+ extendAttrString: null,
+ field: "code",
+ hidden: false,
+ keyAttr: false,
+ prefix: null,
+ readOnly: false,
+ referConfig: null,
+ required: false,
+ selectLibFlag: null,
+ showField: null,
+ suffix: null,
+ text: "缂栫爜",
+ tooltips: null,
+ type: "text",
+ unique: false,
+ verify: ""
+ },
+ {
+ comboxKey: "EnumReviewType",
+ customClass: null,
+ data: null,
+ dateFormate: null,
+ defaultValue: "department",
+ displayExtension: "",
+ extendAttrMap: null,
+ extendAttrString: null,
+ field: "reviewtype",
+ hidden: false,
+ keyAttr: false,
+ prefix: null,
+ readOnly: false,
+ referConfig: null,
+ required: false,
+ selectLibFlag: null,
+ showField: null,
+ suffix: null,
+ text: "绫诲瀷",
+ tooltips: null,
+ type: "combox",
+ unique: false,
+ verify: "",
+ dicData: [{
+ label: '娴嬭瘯1',
+ value: 'department'
+ }, {
+ label: '娴嬭瘯2',
+ value: 'departments'
+ }]
+ },
+ {
+ comboxKey: null,
+ customClass: null,
+ data: null,
+ dateFormate: null,
+ defaultValue: "",
+ displayExtension: "",
+ extendAttrMap: null,
+ extendAttrString: null,
+ field: "creator",
+ hidden: true,
+ keyAttr: false,
+ prefix: null,
+ readOnly: true,
+ referConfig: null,
+ required: false,
+ selectLibFlag: null,
+ showField: null,
+ suffix: null,
+ text: "鍒涘缓浜�",
+ tooltips: null,
+ type: "text",
+ unique: false,
+ verify: ""
+ },
+ {
+ comboxKey: null,
+ customClass: null,
+ data: null,
+ dateFormate: "yyyy-MM-dd HH:mm:ss",
+ defaultValue: "",
+ displayExtension: "",
+ extendAttrMap: null,
+ extendAttrString: null,
+ field: "createtime",
+ hidden: true,
+ keyAttr: false,
+ prefix: null,
+ readOnly: false,
+ referConfig: null,
+ required: false,
+ selectLibFlag: null,
+ showField: null,
+ suffix: null,
+ text: "鍒涘缓鏃堕棿",
+ tooltips: null,
+ type: "datetime",
+ unique: false,
+ verify: ""
+ },
+ {
+ comboxKey: null,
+ customClass: null,
+ data: null,
+ dateFormate: null,
+ defaultValue: "",
+ displayExtension: "",
+ extendAttrMap: null,
+ extendAttrString: null,
+ field: "content",
+ hidden: false,
+ keyAttr: false,
+ prefix: null,
+ readOnly: false,
+ referConfig: null,
+ required: false,
+ selectLibFlag: null,
+ showField: null,
+ suffix: null,
+ text: "澶囨敞",
+ tooltips: null,
+ type: "textarea",
+ unique: false,
+ verify: ""
+ },
]
}
},
@@ -531,8 +695,8 @@
editBtn: false,
delBtn: false,
height: 'auto',
- // indexFixed:false,
- // menuFixed:false,
+ indexFixed: false,
+ menuFixed: false,
column: this.updatedColumns,
};
},
@@ -553,9 +717,35 @@
},
},
methods: {
- buttonClick(id) {
- console.log(id)
- this.visible = true;
+ buttonClick(scope, item) {
+ this.formName = item.name;
+
+ function handleAdd() {
+ this.visible = true;
+ }
+
+ function handleEdit() {
+ this.visible = true;
+ this.$refs.dynamicForm.form = scope.row;
+ }
+
+ function handleDelete() {
+ this.$message.success('鍒犻櫎鎴愬姛锛�');
+ }
+
+ const methodHandlers = {
+ add: handleAdd.bind(this),
+ edit: handleEdit.bind(this),
+ delete: handleDelete.bind(this),
+ };
+
+ const method = item.paramVOS.buttonMethods;
+ const handler = methodHandlers[method];
+ if (handler) {
+ handler();
+ } else {
+ this.$message.error('璇烽噸鏂伴厤缃寜閽紒')
+ }
}
}
}
--
Gitblit v1.9.3