From 1b2642c615001b3435a9e99e478517a917f656af Mon Sep 17 00:00:00 2001
From: yuxc <yuxc@vci-tech.com>
Date: 星期五, 26 四月 2024 17:27:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
Source/ProjectWeb/src/views/base/UIContentArea.vue | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 163 insertions(+), 17 deletions(-)
diff --git a/Source/ProjectWeb/src/views/base/UIContentArea.vue b/Source/ProjectWeb/src/views/base/UIContentArea.vue
index 24ed6bd..d6c7056 100644
--- a/Source/ProjectWeb/src/views/base/UIContentArea.vue
+++ b/Source/ProjectWeb/src/views/base/UIContentArea.vue
@@ -1,46 +1,116 @@
<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>
</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
@@ -58,6 +128,10 @@
type:Object,
default: {}
},
+ //涓婁竴鍖哄煙涓氬姟绫诲瀷
+ sourceBtmType:{
+ type: String
+ },
dataStore:{
//寮圭獥鏃舵寜閽墍灞炲尯鍩熼�変腑鏁版嵁
type:Array,
@@ -72,16 +146,88 @@
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);
+ // console.log(this.areasData);
},
methods:{
- tabHandleClick(tab, event) {
- console.log(tab, event);
+ 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;
+ }
}
}
</script>
--
Gitblit v1.9.3