From 89504036742a64ac44c821b9a069220faf150915 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期一, 15 四月 2024 10:32:52 +0800 Subject: [PATCH] 文件上传整合代码 --- Source/ProjectWeb/src/views/custom-ui/test2.vue | 548 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 546 insertions(+), 2 deletions(-) diff --git a/Source/ProjectWeb/src/views/custom-ui/test2.vue b/Source/ProjectWeb/src/views/custom-ui/test2.vue index e73b6cf..cbd9fae 100644 --- a/Source/ProjectWeb/src/views/custom-ui/test2.vue +++ b/Source/ProjectWeb/src/views/custom-ui/test2.vue @@ -1,12 +1,556 @@ <template> <basic-container> - 娴嬭瘯鑷畾涔夌粍浠跺睍绀�222222222 + <div :id="'UI-dynamic-'+areasName+componentVO.oid" class="UI-dynamic"> + <avue-form v-model="form" :option="option"> + <template v-for="item in slotData" :slot="item.prop + 'Label'"> + <span> + <span>{{ item.label }} </span> + <el-tooltip + v-if="item.keyAttr" + class="item" + content="璇ュ睘鎬т负鍏抽敭灞炴��" + effect="dark" + placement="top-start" + > + <i class="el-icon-star-on" style="font-size: 17px !important; color: red;vertical-align: baseline;"></i> + </el-tooltip> + </span> + </template> + <template slot="menuForm"> + <dynamic-button :butttonList="componentVO.buttons" type="form" @buttonClick="buttonClick"></dynamic-button> + </template> + + <template v-for="item in slotData" :slot="item.prop + ''"> + <!-- 鍙傜収 --> + <vciWebRefer v-if="item.type == 'refer'" + :key="item.prop" + :ref="'referFormRef'+item.prop" + :data-key="item.prop" + :disabled="item.disabled || false" + :display="item.display || true" + :referConfig="item.referConfig || {}" + :reloadFormKey="(item.referConfig.useFormKey && item.referConfig.formValues && item.referConfig.formValues[item.referConfig.useFormKey]) || ''" + :text="item.referConfig.showProp" + :value="item.prop || item.value" + referType="master" + @setReferValue="setReferValue"> + + </vciWebRefer> + <!-- 瀵屾枃鏈帶浠� --> + <rich-text v-if="item.type === 'richText'" :value="form[subitemName]" @input="form[subitemName] = $event"></rich-text> + <!-- 琛ㄥ崟涓婁紶鏂囦欢缁勪欢 --> + <form-upload v-if="item.type === 'upload'"></form-upload> + </template> + </avue-form> + </div> </basic-container> </template> <script> +import VciWebRefer from "@/components/refer/vciWebRefer"; +import {verifyNull, verifySlash} from "@/util/validate"; + export default { - name: "test2" + name: "test2", + components: {VciWebRefer}, + props: { + componentVO: { + type: Object, + default: {} + }, + inDialog: { + type: Boolean, + default: false + }, + areasName: { + type: String, + default: '' + }, + sourceData: { + //鎵�灞炲尯鍩熺殑涓婁竴鍖哄煙閫変腑鏁版嵁 + type: Object, + default: {} + }, + dataStore: { + //寮圭獥鏃舵寜閽墍灞炲尯鍩熼�変腑鏁版嵁 + type: Array, + default: [] + }, + paramVOS: { + type: Object, + default: {} + }, + isShow: { + //鎵�鍦ㄥ尯鍩熸槸鍚﹀凡鏄剧ず锛岄拡瀵箃ab鍜宑ollapse + type: Boolean, + default: true + }, + }, + data() { + return { + formDefine: { + "formDefineVO": { + "btmType": "material", + "columnOneRow": 3, + "freeMarkerEls": [], + "id": "materialform", + "items": [ + { + "comboxKey": null, + "customClass": null, + "data": null, + "dateFormate": null, + "defaultValue": "", + "displayExtension": "", + "extendAttrMap": null, + "extendAttrString": null, + "field": "id", + "hidden": false, + "keyAttr": false, + "prefix": null, + "readOnly": false, + "referConfig": null, + "required": true, + "selectLibFlag": null, + "showField": null, + "suffix": null, + "text": "鏉愭枡浠g爜", + "tooltips": null, + "type": "text", + "unique": false, + "verify": "" + }, + { + "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": null, + "text": "鏉愭枡鍚嶇О", + "tooltips": null, + "type": "text", + "unique": false, + "verify": "" + }, + { + "comboxKey": null, + "customClass": null, + "data": null, + "dateFormate": null, + "defaultValue": "", + "displayExtension": "", + "extendAttrMap": null, + "extendAttrString": null, + "field": "specification", + "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": null, + "customClass": null, + "data": null, + "dateFormate": null, + "defaultValue": "", + "displayExtension": "", + "extendAttrMap": null, + "extendAttrString": null, + "field": "materialtrademark", + "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": null, + "customClass": null, + "data": null, + "dateFormate": null, + "defaultValue": "", + "displayExtension": "", + "extendAttrMap": null, + "extendAttrString": null, + "field": "technicalrequirement", + "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": null, + "customClass": null, + "data": null, + "dateFormate": null, + "defaultValue": "", + "displayExtension": "", + "extendAttrMap": null, + "extendAttrString": null, + "field": "classofexpenditure", + "hidden": false, + "keyAttr": false, + "prefix": null, + "readOnly": false, + "referConfig": { + showProp: "userIdName", + type: 'user', + extraParams: { + aaa: '111' + },//鏌ヨ鏉′欢锛屽彲閫� + paramForFormKey: 'formDeptId', //浣跨敤琛ㄥ崟涓婄殑鏁版嵁浣滀负鏌ヨ鏉′欢鍙傛暟,娌℃湁鏃朵娇鐢╱seFormKey + formValuesKey: 'ruleForm',//椤甸潰涓婄殑琛ㄥ崟鏁版嵁瀵硅薄鍚嶇О锛岄粯璁ゅ�尖�榝orm鈥� + useFormKey: 'deptId',//闇�瑕佷粠formValues涓幏鍙栫殑琛ㄥ崟瀛楁,鏍规嵁閮ㄩ棬鏍戝弬鐓ч�変腑鏁版嵁鍔ㄦ�佹煡璇㈢敤鎴� + isMuti: true,//鏄惁澶氶�夛紝鍙�� + width: '1000px', + referBusCode: "user", + mapProps: { + 'personClassifyText': 'personClassify' + }, + defalutValue: '1', //鍙傜収榛樿鍊� + defalutText: '娴嬭瘯榛樿鍊�' //鍙傜収榛樿鏄剧ず鍊� + }, + "required": false, + "selectLibFlag": null, + "showField": null, + "suffix": null, + "text": "娑堣�楀垎绫�", + "tooltips": null, + "type": "refer", + "unique": false, + "verify": "" + }, + { + "comboxKey": null, + "customClass": null, + "data": null, + "dateFormate": null, + "defaultValue": "", + "displayExtension": "", + "extendAttrMap": null, + "extendAttrString": null, + "field": "measurementunit", + "hidden": false, + "keyAttr": false, + "prefix": null, + "readOnly": false, + "referConfig": null, + "required": false, + "selectLibFlag": null, + "showField": null, + "suffix": null, + "text": "璁¢噺鍗曚綅", + "tooltips": null, + "type": "upload", + "unique": false, + "verify": "", + "uploadList":['.png','.xls','.'] + }, + { + "comboxKey": null, + "customClass": null, + "data": null, + "dateFormate": null, + "defaultValue": "", + "displayExtension": "", + "extendAttrMap": null, + "extendAttrString": null, + "field": "description", + "hidden": false, + "keyAttr": false, + "prefix": null, + "readOnly": false, + "referConfig": null, + "required": false, + "selectLibFlag": null, + "showField": null, + "suffix": null, + "text": "澶囨敞", + "tooltips": null, + "type": "richText", + "unique": false, + "verify": "" + } + ], + "linkTypeFlag": false, + "oid": "ED51077B-253F-2AB9-A0E6-BA289052B03C", + "queryTemplateName": "" + }, + "id": null, + "lastModifier": null, + "lastModifyTime": null, + "lastR": null, + "lastV": null, + "lcStatus": null, + "lcStatusText": null, + "lctid": null, + "name": "琛ㄥ崟鏄剧ず", + "nameOid": null, + "oid": "88BF207E-6F02-8E76-5086-5061DBD35A98", + "orderNum": 1, + "owner": null, + "pkLayout": "0D6C19B4-4C8B-F540-7441-2ABAFE606031", + "revisionOid": null, + "revisionRule": null, + "revisionSeq": 0, + "revisionValue": null, + "secretGrade": null, + "secretGradeText": null, + "tableDefineVO": null, + "treeDefineVO": null, + "treeTableDefineVO": null, + "ts": null, + "uiComponentType": "form", + "uiComponentTypeText": "琛ㄥ崟", + "uiParseClass": "", + "versionRule": null, + "versionSeq": 0, + "versionValue": null + }, + form: { + }, + subitemName:'' + } + }, + computed: { + option() { + return { + submitBtn: false, + emptyBtn: false, + height: 300, + column: this.getColumnData() + } + }, + slotData() { + return this.getColumnData() + } + }, + watch: { + slotData: { + handler(newV) { + this.getDictList(newV) + }, + immediate: true, + }, + form: { + handler(val) { + if (val) { + if (Array.isArray(val)) { // 妫�鏌� val 鏄惁涓烘暟缁� + for (let code of val) { + if ( + code.type == "refer" && + code.referConfig && + code.referConfig.useFormKey + ) { + code.referConfig.formValues = val; + // code.referConfigTemp.options = code.referConfig; + } + } + } else if (typeof val === 'object') { // 妫�鏌� val 鏄惁涓哄璞� + // 杩唬瀵硅薄鐨勯�昏緫 + } + this.$emit("input", val); + } + }, + deep: true, + immediate: true, + }, + sourceData: { + handler(newval) { + //婧愭暟鎹湁鍙樺寲鏃跺彉鏇村綋鍓嶅尯鍩熸暟鎹� + console.log(this.areasName); + console.log(newval); + } + } + }, + methods: { + //杞寲鏁版嵁 + formColumn(formList) { + return formList.map(item => { + const typeValue = item.type === 'text' ? 'input' : item.type === 'combox' ? 'select' : item.type; + if(item.type === 'richText'){ + this.subitemName = item.field; + }else if(item.type === 'upload'){ + + } + + + return { + label: item.text, + prop: item.field, + type: typeValue, + labelWidth: item.text.length >= 6 ? 115 : 90, + value: item.defaultValue, + dicData: item.type === 'combox' ? item.dicData : item.dicUrl, + readonly: item.readOnly, + disabled: item.disabled, + display: !item.hidden, + labelSuffix: item.suffix, + suffixIcon: item.prefix, + placeholder: item.placeholder, + clearable: item.clearable, + tip: item.tooltips, + keyAttr: item.keyAttr, + referConfig: item.referConfig, + rules: [{ + required: item.required, + message: `璇疯緭鍏�${item.text}!`, + trigger: "blur" + }] + }; + }); + }, + + //鏁版嵁鍒ょ┖ + getColumnData() { + if (this.formDefine && this.formDefine.formDefineVO && this.formDefine.formDefineVO.items && this.formDefine.formDefineVO.items.length > 0) { + return this.formColumn(this.formDefine.formDefineVO.items) + } else { + return null; + } + }, + + buttonClick(item) { + console.log(item.id) + }, + async getDictList(val) { + for (let code of val) { + if (!verifyNull(code.dictData) && code.type == "select") { + if ( + verifySlash(code.dictCode) && + Object.prototype.hasOwnProperty.call(code, "dictCode") + ) { + const res = await getlistByCode(code.dictCode); + if (res.success) { + const dic = res.data; + code.dictData = dic.map((d) => { + return { + label: d.name, + key: d.code, + value: d.id, + }; + }); + } + } else { + this.getDicts(code.dictCode) + .then((res) => { + if (res.success) { + const dic = res.obj.datas; + code.dictData = dic.map((d) => { + return { + label: d.name, + key: d.code, + value: d.code, + }; + }); + } + }) + .catch(() => { + this.$message.error(` 鏁版嵁瀛楀吀${code.dictCode}閿欒`); + }); + } + } + if (code.type == "refer") { + if (code.referConfig && code.referConfig.useFormKey) { + if (verifyNull(code.referConfig.formValuesKey)) { + code.referConfig.formValuesKey = "form"; + } + code.referConfig.formValues = this[code.referConfig.formValuesKey]; + } + code.referConfigTemp = { + title: code.label, + showProp: + code.showProp || code.referConfig.showProp || code.prop + "Name", + prop: code.prop, + propMap: code.propMap || {}, + placeholder: code.placeholder + ? code.placeholder + : ` 璇烽�夋嫨` + code.label, + options: code.referConfig, + }; + } + } + this.formTemplateData = val; + }, + setReferValue(data) { + if (data && data.prop) { + this.form[data.prop] = data.value || ""; + this.form[data.showProp] = data.text || ""; + if (data.propMap) { + //璇存槑闇�瑕佹槧灏� + for (let key in data.propMap) { + let mapFields = data.propMap[key].split(","); + let value = []; + data.rawData.forEach((_item) => { + var temp; + if (!_item.extendData) { + _item.extendData = {}; + } + if (mapFields.length == 1) { + var mapField = mapFields[0]; + temp = _item[mapField] || _item["extendData"][mapField]; + } else { + //鏈夊涓� + var mutiTemp = []; + mapFields.forEach((_itemField) => { + mutiTemp.push( + _item[_itemField] || _item["extendData"][_itemField] + ); + }); + temp = mutiTemp.join(" "); + } + if (temp != null && temp != "") { + value.push(temp); + } + }); + this.form[key] = value.join(","); + } + } + } + }, + } } </script> -- Gitblit v1.9.3