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