From cc993ff4b559a937f6ceaf01c7e77e1d6b50baa1 Mon Sep 17 00:00:00 2001 From: Ldc <ldc@vci.com> Date: 星期二, 16 四月 2024 10:53:34 +0800 Subject: [PATCH] 1、修改form表单上传方式 --- Source/ProjectWeb/src/views/base/UIContentArea.vue | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 151 insertions(+), 16 deletions(-) diff --git a/Source/ProjectWeb/src/views/base/UIContentArea.vue b/Source/ProjectWeb/src/views/base/UIContentArea.vue index 24ed6bd..82f2975 100644 --- a/Source/ProjectWeb/src/views/base/UIContentArea.vue +++ b/Source/ProjectWeb/src/views/base/UIContentArea.vue @@ -1,46 +1,126 @@ <template> - <basic-container :cradStyle="cradStyle"> - <el-tabs v-if="areasData.length>1" v-model="activeName" type="card" @tab-click="tabHandleClick"> - <el-tab-pane v-for="(areaItem,index) in areasData" :key="areaItem.oid" :label="areaItem.name" :name="areasName+'-Tab-'+index"> - <el-collapse v-model="collapseActiveNames" v-if="areaItem.componentVOs.length>1"> + <basic-container :cradStyle="cradStyle" cardBodyStyle="height:100%;box-sizing: border-box;padding-bottom:5px;"> + <el-tabs style="height: 100%;" class="UITabs" v-if="newAreasData.length>1" v-model="activeName" type="card" @tab-click="tabHandleClick"> + <el-tab-pane style="height:100%;overflow: auto" v-for="(areaItem,index) in newAreasData" :key="areaItem.oid" :label="areaItem.name" :name="areasName+'-Tab-'+index"> + <el-collapse class="UI-collapse" :key="areaItem.oid+'-collapse'" v-model="collapseActiveNames" v-if="areaItem.componentVOs.length>1" @change="handleChange"> <el-collapse-item v-for="(componentVO,componentIndex) in areaItem.componentVOs" :name="areasName+'-collapse-'+componentIndex"> <template slot="title"> {{componentVO.name}} </template> - <div class="componentVO" style="height: 60%"> - <compoent-index :key="componentVO.oid" :componentVO="componentVO" :sourceData="sourceData" :areasName="areasName" :paramVOS="paramVOS"></compoent-index> + <div class="componentVO"> + <compoent-index :key="areasName+'componentVO-'+componentVO.oid" + :inDialog="inDialog" + :componentVO="componentVO" + :sourceData="newSourceData" + :dataStore="dataStore" + :areasName="areasName" + :paramVOS="paramVOS" + @setDataStore="setDataStore" + :isShow="collapseActiveNames.indexOf(areasName+'-collapse-'+componentIndex)!=-1?true:false"></compoent-index> </div> </el-collapse-item> </el-collapse> <div v-else class="componentVO"> - <compoent-index :key="areaItem.componentVOs[0].oid" :componentVO="areaItem.componentVOs[0]" :sourceData="sourceData" :areasName="areasName" :paramVOS="paramVOS"></compoent-index> + <compoent-index :key="areasName+'componentVO-'+areaItem.componentVOs[0].oid" + :uiBtmType="uiBtmType" + :uiContext="uiContext" + :inDialog="inDialog" + :componentVO="areaItem.componentVOs[0]" + :sourceData="newSourceData" + :sourceBtmType="sourceBtmType" + :dataStore="dataStore" + :areasName="areasName" + :paramVOS="paramVOS" + @setDataStore="setDataStore" + :isShow="activeName==(areasName+'-Tab-'+index)?true:false"></compoent-index> </div> </el-tab-pane> </el-tabs> - <div v-else> - <el-collapse v-model="collapseActiveNames" v-if="areasData[0].componentVOs.length>1"> - <el-collapse-item v-for="(componentVO,componentIndex) in areasData[0].componentVOs" :name="areasName+'-collapse-'+componentIndex"> + <div v-else-if="newAreasData.length===1" style="height:100%;overflow: auto"> + <el-collapse class="UI-collapse" :key="newAreasData[0].oid+'-collapse'" v-model="collapseActiveNames" v-if="newAreasData[0].componentVOs.length>1" @change="handleChange"> + <el-collapse-item v-for="(componentVO,componentIndex) in newAreasData[0].componentVOs" :name="areasName+'-collapse-'+componentIndex"> <template slot="title"> {{componentVO.name}} </template> - <div class="componentVO" style="height: 60%"> - <compoent-index :key="componentVO.oid" :componentVO="componentVO" :sourceData="sourceData" :areasName="areasName" :paramVOS="paramVOS"></compoent-index> + <div class="componentVO"> + <compoent-index :key="areasName+'componentVO-'+componentVO.oid" + :uiBtmType="uiBtmType" + :uiContext="uiContext" + :inDialog="inDialog" + :componentVO="componentVO" + :sourceData="newSourceData" + :sourceBtmType="sourceBtmType" + :dataStore="dataStore" + :areasName="areasName" + :paramVOS="paramVOS" + @setDataStore="setDataStore" + :isShow="collapseActiveNames.indexOf(areasName+'-collapse-'+componentIndex)!=-1?true:false"></compoent-index> </div> </el-collapse-item> </el-collapse> <div v-else class="componentVO"> - <compoent-index :key="areasData[0].componentVOs[0].oid" :componentVO="areasData[0].componentVOs[0]" :sourceData="sourceData" :areasName="areasName" :paramVOS="paramVOS"></compoent-index> + <compoent-index :key="areasName+'componentVO-'+newAreasData[0].componentVOs[0].oid" + :uiBtmType="uiBtmType" + :uiContext="uiContext" + :inDialog="inDialog" + :componentVO="newAreasData[0].componentVOs[0]" + :sourceData="newSourceData" + :sourceBtmType="sourceBtmType" + :dataStore="dataStore" + :areasName="areasName" + :paramVOS="paramVOS" + @setDataStore="setDataStore" + :isShow="true"></compoent-index> </div> + </div> + <div v-else> + <el-alert + v-if="areasData.length==0" + class="alert" + :closable="false" + title="閰嶇疆閿欒" + type="error" + show-icon + description="璇ュ尯鍩熸病鏈夐厤缃樉绀虹殑鍐呭"> + </el-alert> + <el-alert + v-else-if="Object.keys(newSourceData).length === 0" + class="alert" + :closable="false" + title="婧愭暟鎹负绌�" + type="error" + show-icon + description="涓嶆弧瓒虫樉绀鸿〃杈惧紡鏉′欢锛屾病鏈夊彲鏄剧ず鐨勫唴瀹�"> + </el-alert> + <el-alert + v-else + class="alert" + :closable="false" + title="" + type="error" + show-icon + description="涓嶆弧瓒虫樉绀鸿〃杈惧紡鏉′欢锛屾病鏈夊彲鏄剧ず鐨勫唴瀹广��"> + </el-alert> + {{newSourceData}} </div> </basic-container> </template> <script> import compoentIndex from "@/components/dynamic-components/index" +import {validatenull, verifyNotNull} from "@/util/validate"; export default { name: "UIContentArea", components:{compoentIndex}, props:{ + //ui涓婁笅鏂囩殑涓氬姟绫诲瀷锛堟垨閾炬帴绫诲瀷锛� + uiBtmType: { + type: String + }, + //ui涓婁笅鏂� + uiContext:{ + type: String + }, inDialog: { type: Boolean, default: false @@ -57,6 +137,10 @@ //鑿滃崟婧愭暟鎹垨鑰呭脊绐楁椂鎸夐挳鎵�灞炲尯鍩熺殑涓婁竴鍖哄煙閫変腑鏁版嵁 type:Object, default: {} + }, + //涓婁竴鍖哄煙涓氬姟绫诲瀷 + sourceBtmType:{ + type: String }, dataStore:{ //寮圭獥鏃舵寜閽墍灞炲尯鍩熼�変腑鏁版嵁 @@ -75,13 +159,64 @@ collapseActiveNames:[this.areasName+'-collapse-0'] } }, + computed:{ + newAreasData(){ + let newAreasData = []; + this.areasData.forEach(areaData => { + //楠岃瘉鏄惧紡琛ㄨ揪寮� + if (!validatenull(areaData.displayExpression)) { + if (this.checkDisplayExpression(areaData.displayExpression)) { + newAreasData.push(areaData) + } + } else { + newAreasData.push(areaData) + } + }) + return newAreasData; + }, + newSourceData(){ + if(this.sourceData.attributes && this.sourceData.parentId!=undefined && this.sourceData.parentId !=null){ + //婧愭暟鎹槸鏍戣妭鐐� + return this.sourceData.attributes + } + return this.sourceData; + } + }, + created() { + + }, mounted() { - console.log(this.areasData); + // console.log(this.areasData); }, methods:{ - tabHandleClick(tab, event) { - console.log(tab, event); + checkDisplayExpression(displayExpressionStr){ + //"${folderbusinesstype}"<>"workunit" and "${folderbusinesstype}"<>"part" and "${folderbusinesstype}"<>"Terminology" and "${folderbusinesstype}"<>"AssMaterial" and "${folderbusinesstype}"<>"resourcelib" and "${folderbusinesstype}"<>"material" and "${folderbusinesstype}"<>"machine" + // "${folderbusinesstype}"="AssMaterial" or "${folderbusinesstype}"="assmaterial" + //"${folderbusinesstype}"="material" + //${folderbusinesstype}涓烘簮鏁版嵁涓殑灞炴�� + + let checkdisplay=false; + //鏇挎崲and鍜宱r + let newDisplayExpressionStr=displayExpressionStr.replace(/"\s*and\s*"/g,'" && "').replace(/"\s*AND\s*"/g,'" && "').replace(/"\s*or\s*"/g,'" || "').replace(/"\s*OR\s*"/g,'" || "'); + newDisplayExpressionStr=newDisplayExpressionStr.replace(/"\s*<>\s*"/g,'" != "').replace(/"\s*=\s*"/g,'" == "'); + newDisplayExpressionStr=newDisplayExpressionStr.replace(/"\$\{/g,'this.newSourceData.').replace(/\}"/g,'') + + const sandbox = {}; + if(eval('('+newDisplayExpressionStr+')')){ + checkdisplay=true; + } + return checkdisplay; }, + tabHandleClick(tab, event) { + // console.log(tab, event); + }, + handleChange(val) { + //console.log(val); + }, + setDataStore(value) { + this.$emit("setDataStore", value); + this.dataStore = value.dataStore; + } } } </script> -- Gitblit v1.9.3