From a5cb45db6a24630df3b8bab8df51cc153dd4c751 Mon Sep 17 00:00:00 2001 From: wangting <675591594@qq.com> Date: 星期三, 07 六月 2023 18:07:14 +0800 Subject: [PATCH] 表单组件绑定上树参照选中的数据 --- Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue | 19 ++++++++- Source/UBCS-WEB/src/components/refer/vciWebRefer.vue | 46 ++++++++++++++--------- Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue | 20 +++++++-- 3 files changed, 59 insertions(+), 26 deletions(-) diff --git a/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue b/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue index 396fd4d..6afac39 100644 --- a/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue +++ b/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue @@ -27,6 +27,9 @@ <vciWebRefer v-if="item.type == 'refer'" :referConfig="item.referConfig || {}" + :value="form[item.referConfig.field] || item.value" + :text="form[item.referConfig.showField]" + @setReferValue="setReferValue" ></vciWebRefer> </template> </avue-form> @@ -559,9 +562,7 @@ showField:formItem.showField || formItem.field, field: formItem.field, placeholder: formItem.inputTip, - options:formItem.referConfig, - value:'', - text:'' + options:formItem.referConfig }:{}, change: () => { this.changeFun(formItem.displayExtension, formItem.prop); @@ -645,6 +646,11 @@ return val; } }, + changeFun(displayExtension, prop) { + // executeCode({displayExtension, data: this.form}).then(res => { + // this.form[prop] = res.data.data + // }) + }, // 鑾峰彇swich鍜屽凡鎷垮埌鐨勪笅鎷夋暟鎹� getDataList(type, dicData) { if (type === "truefalse") { @@ -708,6 +714,13 @@ } ); }, + setReferValue(data){ + if(data.field){ + this.form[data.field]=data.value || ''; + this.form[data.showField]=data.text || ''; + this.$emit("getFormData", this.form); + } + } }, watch: { // 琛ㄥ崟鏁版嵁淇敼鍙嶉鍒扮埗缁勪欢 diff --git a/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue b/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue index 8049591..27f49f0 100644 --- a/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue +++ b/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue @@ -1,7 +1,7 @@ <template> - <vciWebReferTree v-if="refertype=='tree'" :value="value" :referConfig="referConfig"></vciWebReferTree> - <vciWebReferTable v-else-if="refertype=='table'" :value="value" :referConfig="referConfig"></vciWebReferTable> - <vciWebReferDefalut v-else :value="value" :referConfig="referConfig"></vciWebReferDefalut> + <vciWebReferTree v-if="refertype=='tree'" @setValue="setValue" :value="value" :text="text" :referConfig="referConfig"></vciWebReferTree> + <vciWebReferTable v-else-if="refertype=='table'" @setValue="setValue" :value="value" :text="text" :referConfig="referConfig"></vciWebReferTable> + <vciWebReferDefalut v-else @setValue="setValue" :value="value" :text="text" :referConfig="referConfig"></vciWebReferDefalut> </template> <script> @@ -11,30 +11,40 @@ import {validatenull} from "@/util/validate"; export default { name: "vciWebRefer", - props:["referConfig"], - components: { vciWebReferTree,vciWebReferTable,vciWebReferDefalut}, + props: ["referConfig","value","text"], + components: {vciWebReferTree, vciWebReferTable, vciWebReferDefalut}, data() { return { refertype: this.referConfig.options.type, isMuti: ("true" == this.referConfig.options.isMuti || this.referConfig.options.isMuti == true || this.referConfig.options.muti == true) ? true : false, - value: this.referConfig.value + emitData:{} }; }, created() { - var title =this.referConfig.title || ''; - title = title.replace(":",""); - if(title){ - title = validatenull(this.referConfig.title)?('涓恒��' + title + '銆戦�夊彇鍊�'):this.referConfig.title; - }else{ - title = validatenull(this.referConfig.title)?('涓恒��' + this.referConfig.showField + '銆戦�夊彇鍊�'):this.referConfig.title; + var title = this.referConfig.title || ''; + title = title.replace(":", ""); + if (title) { + title = validatenull(this.referConfig.title) ? ('涓恒��' + title + '銆戦�夊彇鍊�') : this.referConfig.title; + } else { + title = validatenull(this.referConfig.title) ? ('涓恒��' + this.referConfig.showField + '銆戦�夊彇鍊�') : this.referConfig.title; } - this.referConfig.title= title; - this.referConfig.isMuti=this.isMuti - if(this.refertype=='tree'){ - console.log('referConfig:') - console.log(this.referConfig) + this.referConfig.title = title; + this.referConfig.isMuti = this.isMuti; + }, + methods: { + setValue(value) { + this.emitData = value; } - + }, + watch:{ + // 淇敼鍙嶉鍒扮埗缁勪欢 + emitData: { + deep: true, + immediate: true, + handler(newV) { + this.$emit("setReferValue", newV); + }, + } }, mounted() { diff --git a/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue b/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue index fb1830b..4180372 100644 --- a/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue +++ b/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue @@ -1,5 +1,5 @@ <template> - <avue-input-tree :props="props" :lazy="lazy" :tree-load="treeLoad" :leaf-only="!referConfig.onlyLeaf" :multiple="isMuti" v-model="value" :placeholder="placeholder" :dic="treeData"></avue-input-tree> + <avue-input-tree ref="referTree" :props="props" :lazy="lazy" :tree-load="treeLoad" :node-click="nodeClick" :leaf-only="!referConfig.onlyLeaf" :multiple="isMuti" v-model="value" :placeholder="placeholder" :dic="treeData"></avue-input-tree> </template> <script> @@ -7,7 +7,7 @@ export default { name: "vciWebReferTree", - props:["referConfig","value"], + props:["referConfig","value","text"], data() { return { options: this.referConfig.options, @@ -20,8 +20,9 @@ //value:"value", //label:"title" }, - treeUrl: this.referConfig.options.url || '',//'/api/ubcs-code/codeClassify/treeCodeClassify', + treeUrl: this.referConfig.options.url || '/api/ubcs-code/codeClassify/treeCodeClassify', treeData: [], + currentNode:{}, params: {}, loadType: {'all': 'all', 'node': 'node'}, copyParam: ['btmType', 'lnType', 'toBtmType', 'textField', 'valueField', 'parentFieldName', 'parentValue', 'sort', 'order', 'isDirection', 'whereSql', 'isMuti', 'queryScheme', 'isQueryAllColumn', 'queryColumn', 'split', 'loadType', 'onlyLeaf', 'onlyLeafText', 'parentUsedField'] @@ -29,6 +30,8 @@ }, created() { this.getParams(); + console.log('referConfig:') + console.log(this.referConfig) }, mounted() { if(!this.lazy){ @@ -42,7 +45,6 @@ methods: { getParams:function (){ var queryParams = {}; - debugger; if(this.options.extraParams){ queryParams = this.options.extraParams; } @@ -140,8 +142,16 @@ } })) }); + }, + nodeClick(data){ + //涓嶈鐢╳atch鐩戝惉value鍊硷紝浼氭壘涓嶅埌text + this.value=data[this.props.value]; + this.text=data[this.props.label]; + this.currentNode=data; + this.$emit("setValue", {field:this.referConfig.field,showField:this.referConfig.showField,value:this.value,text:this.text,rawData:this.currentNode}); } - + }, + watch:{ } } </script> -- Gitblit v1.9.3