From c4d9e7a20dac267c5496ad3586c5053be279a17a Mon Sep 17 00:00:00 2001 From: wangting <675591594@qq.com> Date: 星期五, 26 四月 2024 20:09:59 +0800 Subject: [PATCH] 添加action,表单组件 --- Source/ProjectWeb/src/views/base/UIContentArea.vue | 152 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 139 insertions(+), 13 deletions(-) diff --git a/Source/ProjectWeb/src/views/base/UIContentArea.vue b/Source/ProjectWeb/src/views/base/UIContentArea.vue index 705baaf..3978afc 100644 --- a/Source/ProjectWeb/src/views/base/UIContentArea.vue +++ b/Source/ProjectWeb/src/views/base/UIContentArea.vue @@ -1,8 +1,8 @@ <template> <basic-container :cradStyle="cradStyle" cardBodyStyle="height:100%;box-sizing: border-box;padding-bottom:5px;"> - <el-tabs style="height: 100%;" class="UITabs" v-if="areasData.length>1" v-model="activeName" type="card" @tab-click="tabHandleClick"> - <el-tab-pane style="height:100%;overflow: auto" v-for="(areaItem,index) in areasData" :key="areaItem.oid" :label="areaItem.name" :name="areasName+'-Tab-'+index"> - <el-collapse class="UI-collapse" v-model="collapseActiveNames" v-if="areaItem.componentVOs.length>1" @change="handleChange"> + <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}} @@ -11,60 +11,113 @@ <compoent-index :key="areasName+'componentVO-'+componentVO.oid" :inDialog="inDialog" :componentVO="componentVO" - :sourceData="sourceData" + :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="areasName+'componentVO-'+areaItem.componentVOs[0].oid" + :uiBtmType="uiBtmType" + :uiContext="uiContext" :inDialog="inDialog" :componentVO="areaItem.componentVOs[0]" - :sourceData="sourceData" + :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 style="height:100%;overflow: auto"> - <el-collapse class="UI-collapse" v-model="collapseActiveNames" v-if="areasData[0].componentVOs.length>1" @change="handleChange"> - <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"> <compoent-index :key="areasName+'componentVO-'+componentVO.oid" + :uiBtmType="uiBtmType" + :uiContext="uiContext" :inDialog="inDialog" :componentVO="componentVO" - :sourceData="sourceData" + :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="areasName+'componentVO-'+areasData[0].componentVOs[0].oid" + <compoent-index :key="areasName+'componentVO-'+newAreasData[0].componentVOs[0].oid" + :uiBtmType="uiBtmType" + :uiContext="uiContext" :inDialog="inDialog" - :componentVO="areasData[0].componentVOs[0]" - :sourceData="sourceData" + :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="info" + description="娌℃湁鍙樉绀虹殑鍐呭锛岃閫夋嫨鏉ユ簮鏁版嵁銆�"> + </el-alert> + <el-alert + v-else-if="newAreasData.length== 0" + class="alert" + :closable="false" + title="" + type="info" + description="涓嶆弧瓒虫樉绀鸿〃杈惧紡鏉′欢锛屾病鏈夊彲鏄剧ず鐨勫唴瀹广��"> + </el-alert> </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 @@ -82,6 +135,10 @@ type:Object, default: {} }, + //涓婁竴鍖哄煙涓氬姟绫诲瀷 + sourceBtmType:{ + type: String + }, dataStore:{ //寮圭獥鏃舵寜閽墍灞炲尯鍩熼�変腑鏁版嵁 type:Array, @@ -96,18 +153,87 @@ data(){ return{ activeName:this.areasName+'-Tab-0', - collapseActiveNames:[this.areasName+'-collapse-0'] + collapseActiveNames:[this.areasName+'-collapse-0'], + newAreasData:[] } + }, + computed:{ + newSourceData(){ + if(this.sourceData.attributes && this.sourceData.parentId!=undefined && this.sourceData.parentId !=null){ + //婧愭暟鎹槸鏍戣妭鐐� + return this.sourceData.attributes + } + return this.sourceData; + } + }, + watch: { + 'newSourceData':{ + handler(newval) { + this.getNewAreasData(); + } + } + }, + created() { + this.getNewAreasData(); }, mounted() { // console.log(this.areasData); }, methods:{ + getNewAreasData(){ + if(Object.keys(this.newSourceData).length> 0){ + let newAreasData = []; + this.areasData.forEach(areaData => { + //楠岃瘉鏄惧紡琛ㄨ揪寮� + if (!validatenull(areaData.displayExpression)) { + if (this.checkDisplayExpression(areaData.displayExpression)) { + newAreasData.push(areaData) + } + } else { + newAreasData.push(areaData) + } + }) + this.newAreasData = newAreasData; + }else { + this.newAreasData=this.areasData; + } + }, + 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" + //("${btmname}"="浜у搧鍨嬪彿" and "${producttype}"<>"璇曢獙浠�") or "${btmname}"="ppart"or "${btmname}"="宸ヨ壓闆朵欢"or "${btmname}"="part"or "${btmname}"="闆朵欢" + //${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*and\s*"/g, ') && "').replace(/\)\s*AND\s*"/g, ') && "').replace(/\)\s*or\s*"/g, ') || "').replace(/\)\s*OR\s*"/g, ') || "'); + newDisplayExpressionStr = newDisplayExpressionStr.replace(/"\s*and\s*\(/g, '" && (').replace(/"\s*AND\s*\(/g, '" && (').replace(/"\s*or\s*\(/g, '" || (').replace(/"\s*OR\s*\(/g, '" || ('); + newDisplayExpressionStr = newDisplayExpressionStr.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, '') + + try { + if (eval('(' + newDisplayExpressionStr + ')')) { + checkdisplay = true; + } + }catch (e) { + console.log(displayExpressionStr); + } + + return checkdisplay; + }, tabHandleClick(tab, event) { // console.log(tab, event); }, handleChange(val) { //console.log(val); + }, + setDataStore(value) { + this.$emit("setDataStore", value); + this.dataStore = value.dataStore; } } } -- Gitblit v1.9.3