From 0c38987f747be590af21e3d4c9700401c04fc347 Mon Sep 17 00:00:00 2001 From: wangting <675591594@qq.com> Date: 星期二, 16 四月 2024 17:04:31 +0800 Subject: [PATCH] 显示表达式 --- Source/ProjectWeb/src/views/base/UIContentArea.vue | 81 +++++++++++++++++++++++----------------- 1 files changed, 46 insertions(+), 35 deletions(-) diff --git a/Source/ProjectWeb/src/views/base/UIContentArea.vue b/Source/ProjectWeb/src/views/base/UIContentArea.vue index 82f2975..d6c7056 100644 --- a/Source/ProjectWeb/src/views/base/UIContentArea.vue +++ b/Source/ProjectWeb/src/views/base/UIContentArea.vue @@ -84,16 +84,7 @@ 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 + v-else-if="Object.keys(newSourceData).length> 0" class="alert" :closable="false" title="" @@ -101,7 +92,6 @@ show-icon description="涓嶆弧瓒虫樉绀鸿〃杈惧紡鏉′欢锛屾病鏈夊彲鏄剧ず鐨勫唴瀹广��"> </el-alert> - {{newSourceData}} </div> </basic-container> </template> @@ -156,24 +146,11 @@ data(){ return{ activeName:this.areasName+'-Tab-0', - collapseActiveNames:[this.areasName+'-collapse-0'] + collapseActiveNames:[this.areasName+'-collapse-0'], + newAreasData:[] } }, 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){ //婧愭暟鎹槸鏍戣妭鐐� @@ -182,29 +159,63 @@ return this.sourceData; } }, + watch: { + 'newSourceData':{ + handler(newval) { + this.getNewAreasData(); + } + } + }, created() { - + this.getNewAreasData(); }, mounted() { // console.log(this.areasData); }, methods:{ - checkDisplayExpression(displayExpressionStr){ + 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; + 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,'') + 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, '') - const sandbox = {}; - if(eval('('+newDisplayExpressionStr+')')){ - checkdisplay=true; + try { + if (eval('(' + newDisplayExpressionStr + ')')) { + checkdisplay = true; + } + }catch (e) { + console.log(displayExpressionStr); } + return checkdisplay; }, tabHandleClick(tab, event) { -- Gitblit v1.9.3