From cee72470afec9d97bbf98d58d935d74e498e514e Mon Sep 17 00:00:00 2001 From: v_xugzhou <941071842@qq.com> Date: Wed, 29 May 2024 14:35:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BB=A3=E7=A0=81=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=A1=86=E6=A3=80=E6=B5=8B=E5=8F=98=E9=87=8F=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20--bug=3D124737145?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/RenderForm/tags/TagCodeEditor.vue | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/frontend/desktop/src/components/common/RenderForm/tags/TagCodeEditor.vue b/frontend/desktop/src/components/common/RenderForm/tags/TagCodeEditor.vue index 2e20923096..b4b4960bdf 100644 --- a/frontend/desktop/src/components/common/RenderForm/tags/TagCodeEditor.vue +++ b/frontend/desktop/src/components/common/RenderForm/tags/TagCodeEditor.vue @@ -160,20 +160,30 @@ setVariableTag (value, valueUpdate) { const { attrs } = this.scheme if (attrs.variable_render !== false) return - const regex = /\${[a-zA-Z_]\w*}/ const rows = value.split('\n') // 获取光标所在行 const { monacoInstance } = this.$refs.tagCodeEditor?.$refs.codeEditor || {} const { lineNumber } = monacoInstance?.getPosition() || {} - if (regex.test(value)) { - const matchMap = rows.reduce((acc, cur, idx) => { - const variables = cur.match(/\${[a-zA-Z_]\w*}/g) || [] - const matchList = variables.filter(item => this.constantArr.includes(item)) - if (matchList.length) { - acc[idx + 1] = matchList - } - return acc - }, {}) + // 判读变量是否存在 + let isExist = false + const matchMap = rows.reduce((acc, cur, idx) => { + const matchList = [] + cur.replace(/\${([^${}]+)}/g, (match, $0) => { + isExist = this.constantArr.some(item => { + const varText = item.slice(2, -1) + if ($0.indexOf(varText) > -1 && new RegExp(`^(.*\\W|\\W)?${varText}(\\W|\\W.*)?$`).test($0)) { + matchList.push(match) + return true + } + return false + }) + }) + if (matchList.length) { + acc[idx + 1] = matchList + } + return acc + }, {}) + if (isExist) { // 脚本内容存在全局变量 this.globalVarLength = Object.values(matchMap).flat().length // 数据更新处理逻辑