diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 61544f301d..9ad273b602 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,13 +5,12 @@ repos: hooks: - id: check-merge-conflict - repo: https://github.com/psf/black - rev: 22.3.0 + rev: stable hooks: - id: black - name: black - language: python + language_version: python3.6 - repo: https://github.com/pycqa/isort - rev: 5.11.5 + rev: 5.6.4 hooks: - id: isort args: ["--profile", "black", "--filter-files"] diff --git a/app.yml b/app.yml index c1de4d0cdd..9f37147d67 100644 --- a/app.yml +++ b/app.yml @@ -6,7 +6,7 @@ is_use_celery: True author: 蓝鲸智云 introduction: 标准运维是通过一套成熟稳定的任务调度引擎,把在多系统间的工作整合到一个流程,助力运维实现跨系统调度自动化的SaaS应用。 introduction_en: SOPS is a SaaS application that utilizes a set of mature and stable task scheduling engines to help realize cross-system scheduling automation, and integrates the work among multiple systems into a single process. -version: 3.31.0-alpha2 +version: 3.31.0 category: 运维工具 language_support: 中文 desktop: diff --git a/app_desc.yaml b/app_desc.yaml index ff5bd6bc65..c45cea3485 100644 --- a/app_desc.yaml +++ b/app_desc.yaml @@ -1,5 +1,5 @@ spec_version: 2 -app_version: "3.31.0-alpha2" +app_version: "3.31.0" app: region: default bk_app_code: bk_sops diff --git a/config/default.py b/config/default.py index 911fe0b52e..e797d76236 100644 --- a/config/default.py +++ b/config/default.py @@ -211,7 +211,7 @@ # mako模板中: # 如果静态资源修改了以后,上线前改这个版本号即可 -STATIC_VERSION = "3.31.0-alpha2" +STATIC_VERSION = "3.31.0" DEPLOY_DATETIME = datetime.datetime.now().strftime("%Y%m%d%H%M%S") STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] diff --git a/frontend/desktop/src/assets/fonts/bksops-icon.eot b/frontend/desktop/src/assets/fonts/bksops-icon.eot index d8c71d9d0f..0ed6cf8ed2 100644 Binary files a/frontend/desktop/src/assets/fonts/bksops-icon.eot and b/frontend/desktop/src/assets/fonts/bksops-icon.eot differ diff --git a/frontend/desktop/src/assets/fonts/bksops-icon.svg b/frontend/desktop/src/assets/fonts/bksops-icon.svg index 0b4dc054f8..e1c5106cd9 100644 --- a/frontend/desktop/src/assets/fonts/bksops-icon.svg +++ b/frontend/desktop/src/assets/fonts/bksops-icon.svg @@ -587,7 +587,7 @@ - + diff --git a/frontend/desktop/src/assets/fonts/bksops-icon.ttf b/frontend/desktop/src/assets/fonts/bksops-icon.ttf index ed11d935cb..59bf7604dd 100644 Binary files a/frontend/desktop/src/assets/fonts/bksops-icon.ttf and b/frontend/desktop/src/assets/fonts/bksops-icon.ttf differ diff --git a/frontend/desktop/src/assets/fonts/bksops-icon.woff b/frontend/desktop/src/assets/fonts/bksops-icon.woff index f42a17ea0d..d89befc02a 100644 Binary files a/frontend/desktop/src/assets/fonts/bksops-icon.woff and b/frontend/desktop/src/assets/fonts/bksops-icon.woff differ diff --git a/frontend/desktop/src/components/common/RenderForm/FormGroup.vue b/frontend/desktop/src/components/common/RenderForm/FormGroup.vue index 4b7041edf2..dd592e4b9f 100644 --- a/frontend/desktop/src/components/common/RenderForm/FormGroup.vue +++ b/frontend/desktop/src/components/common/RenderForm/FormGroup.vue @@ -104,7 +104,7 @@ .rf-tag-form { + margin-right: 58px; + } + .hook-icon { + padding-right: 3px !important; + } } .rf-group-name { display: block @@ -446,15 +454,17 @@ display: flex; align-items: center; justify-content: center; - padding: 0 8px; height: 32px; background: #f0f1f5; border-radius: 2px; + cursor: pointer; z-index: 1; - .hook-icon { - font-size: 16px; + .hook-icon, + .render-skip-icon { + height: 32px; + line-height: 32px; + font-size: 12px; color: #979ba5; - cursor: pointer; &.disabled { color: #c4c6cc; cursor: not-allowed; @@ -464,8 +474,13 @@ } } .hook-icon { + line-height: 33px; + padding: 0 8px; font-size: 16px; } + .render-skip-icon { + padding: 0 8px 0 3px; + } .icon-angle-up-fill { font-size: 12px; color: #c4c6cc; diff --git a/frontend/desktop/src/components/common/RenderForm/FormItem.vue b/frontend/desktop/src/components/common/RenderForm/FormItem.vue index dae623311b..6d53b47681 100644 --- a/frontend/desktop/src/components/common/RenderForm/FormItem.vue +++ b/frontend/desktop/src/components/common/RenderForm/FormItem.vue @@ -477,12 +477,15 @@ } &.rf-has-hook { & > .rf-tag-form { - margin-right: 45px; + margin-right: 40px; } } &.show-render { > .rf-tag-form { - margin-right: 64px; + margin-right: 58px; + } + .hook-icon { + padding-right: 3px !important; } } &.rf-col-layout { @@ -548,16 +551,17 @@ display: flex; align-items: center; justify-content: space-between; - padding: 0 8px; height: 32px; background: #f0f1f5; border-radius: 2px; z-index: 1; + cursor: pointer; .hook-icon, .render-skip-icon { - font-size: 14px; + height: 32px; + line-height: 32px; + font-size: 12px; color: #979ba5; - cursor: pointer; &.disabled { color: #c4c6cc; cursor: not-allowed; @@ -567,10 +571,12 @@ } } .hook-icon { + line-height: 31px; + padding: 0 8px; font-size: 16px; } .render-skip-icon { - margin-left: 7px; + padding: 0 8px 0 3px; } .icon-angle-up-fill { font-size: 12px; diff --git a/frontend/desktop/src/components/common/RenderForm/tags/TagCodeEditor.vue b/frontend/desktop/src/components/common/RenderForm/tags/TagCodeEditor.vue index 520428a8f5..e438f40b05 100644 --- a/frontend/desktop/src/components/common/RenderForm/tags/TagCodeEditor.vue +++ b/frontend/desktop/src/components/common/RenderForm/tags/TagCodeEditor.vue @@ -213,12 +213,14 @@ } }) }) - } else if (this.decorationsMap[lineNumber]) { - this.decorationsMap[lineNumber].forEach(decorations => { - monacoInstance.deltaDecorations( - [...decorations], - [] - ) + } else { + Object.keys(this.decorationsMap).forEach(key => { + this.decorationsMap[key].forEach(decorations => { + monacoInstance.deltaDecorations( + [...decorations], + [] + ) + }) }) this.decorationsMap = {} } diff --git a/frontend/desktop/src/components/common/RenderForm/tags/TagDatatable.vue b/frontend/desktop/src/components/common/RenderForm/tags/TagDatatable.vue index d53dcbbfa0..20ddcb6efa 100644 --- a/frontend/desktop/src/components/common/RenderForm/tags/TagDatatable.vue +++ b/frontend/desktop/src/components/common/RenderForm/tags/TagDatatable.vue @@ -81,7 +81,7 @@ :parent-value="scope.row" @init="onInitColumn(scope.$index, cIndex, ...arguments)" @change="onEditColumn(scope.$index, cIndex, ...arguments)" - @blur="onColumnInputBlur(scope.$index, ...arguments)"> + @blur="onColumnInputBlur(scope.$index, cIndex, ...arguments)"> @@ -570,8 +570,8 @@ this.$set(this.tableValue[this.editRowNumber], field, val) this.triggerSameRowEvent('change', row, col, val) }, - onColumnInputBlur (scope, val) { - this.triggerSameRowEvent('blur', scope.$index, scope.column.index, val) + onColumnInputBlur (row, col, val) { + this.triggerSameRowEvent('blur', row, col, val) }, onDelete (index, row) { if (this.pagination) { diff --git a/frontend/desktop/src/components/common/RenderForm/tags/TagInput.vue b/frontend/desktop/src/components/common/RenderForm/tags/TagInput.vue index f3679cd257..bc2ef4a6fc 100644 --- a/frontend/desktop/src/components/common/RenderForm/tags/TagInput.vue +++ b/frontend/desktop/src/components/common/RenderForm/tags/TagInput.vue @@ -32,6 +32,7 @@ }" :contenteditable="!isDisabled" :data-placeholder="placeholder" + data-test-name="formTag_input_divInput" v-bk-clickoutside="handleClickOutSide" @mouseup="handleInputMouseUp" @focus="handleInputFocus" @@ -48,11 +49,11 @@
  • - {{ item }} + :key="item.key" + :class="{ 'is-hover': hoverKey === item.key }" + @click.stop="onSelectVal(item.key)"> + {{ item.key }} + {{ item.name }}
  • @@ -122,14 +123,14 @@ }), constantArr: { get () { - let Keylist = [] + let KeyList = [] if (this.constants) { - Keylist = [...Object.keys(this.constants)] + KeyList = [...Object.values(this.constants)] } if (this.internalVariable) { - Keylist = [...Keylist, ...Object.keys(this.internalVariable)] + KeyList = [...KeyList, ...Object.values(this.internalVariable)] } - return Keylist + return KeyList }, set (val) { this.varList = val @@ -203,7 +204,7 @@ const divInputDom = this.$el.querySelector('.div-input') if (divInputDom) { divInputDom.innerHTML = this.value - if (this.render) { + if (this.render && this.value) { this.handleInputBlur() } } @@ -330,7 +331,7 @@ matchResult = [matchText] } if (matchResult && matchResult[0]) { - this.varList = this.constantArr.filter(item => item.indexOf(matchText) > -1) + this.varList = this.constantArr.filter(item => item.key.indexOf(matchText) > -1) // 计算变量下拉列表的left this.isListOpen = false if (this.varList.length) { @@ -352,11 +353,10 @@ this.$el.appendChild(newDom) const focusValueWidth = newDom.offsetWidth || 0 this.$el.removeChild(newDom) - let right = inputWidth - 238 - previousDomLeft - previousDomWidth - focusValueWidth - right = right > 0 ? right : 0 - this.varListPositionRight = right this.$nextTick(() => { - const { height: varListHeight } = document.querySelector('.rf-select-list').getBoundingClientRect() + const { width: varListWidth, height: varListHeight } = this.$el.querySelector('.rf-select-list').getBoundingClientRect() + let right = inputWidth - varListWidth - previousDomLeft - previousDomWidth - focusValueWidth + right = right > 0 ? right : 0 const top = window.innerHeight < inputTop + 30 + varListHeight + 50 ? -95 : 30 this.varListPosition = `right: ${right}px; top: ${top}px` }) @@ -382,9 +382,14 @@ // 获取行内纯文本 const divInputDom = this.$el.querySelector('.div-input') let inputValue = divInputDom.textContent + inputValue.replace(' ', ' ') if (divInputDom.childNodes.length) { inputValue = Array.from(divInputDom.childNodes).map(item => { - return item.type === 'button' ? item.value : item.textContent + return item.type === 'button' + ? item.value + : item.textContent.trim() === '' + ? ' ' + : item.textContent.replace(/ /g, ' ') }).join('') } this.input.value = inputValue @@ -410,7 +415,7 @@ let isExistVar = false if ($0) { isExistVar = this.constantArr.some(item => { - const varText = item.slice(2, -1) + const varText = item.key.slice(2, -1) if ($0.indexOf(varText) > -1) { const regexp = new RegExp(`^(.*\\W|\\W)?${varText}(\\W|\\W.*)?$`) return regexp.test($0) @@ -424,6 +429,7 @@ return match }) divInputDom.innerHTML = innerHtml + this.updateInputValue() }, // 文本框按键事件 handleInputKeyDown (e) { @@ -451,12 +457,12 @@ if (len) { event.preventDefault() event.stopPropagation() - let curIndex = this.varList.findIndex(item => item === this.hoverKey) + let curIndex = this.varList.findIndex(item => item.key === this.hoverKey) curIndex = event.code === 'ArrowDown' ? curIndex + 1 : curIndex - 1 curIndex = curIndex > len - 1 ? 0 : (curIndex < 0 ? len - 1 : curIndex) const option = this.varList[curIndex] if (option) { - this.hoverKey = option + this.hoverKey = option.key const selectDom = this.$el.querySelector('.rf-select-content') const hoverItemDom = selectDom.querySelector('.is-hover') if (hoverItemDom) { @@ -487,12 +493,17 @@ position: absolute; top: 30px; right: 0; - width: 238px; + max-width: 600px; background: #ffffff; + border: 1px solid #dcdee5; border-radius: 2px; - box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 3px 9px 0 rgba(0,0,0,.1); overflow-y: hidden; z-index: 100; + .name { + color: #c4c6cc; + margin-left: 16px; + } } .rf-select-content { max-height: 100px; @@ -501,12 +512,21 @@ @include scrollbar; } .rf-select-item { + display: flex; + align-items: center; padding: 0 10px; line-height: 32px; font-size: 12px; cursor: pointer; - overflow: hidden; - text-overflow: ellipsis; + > span { + flex-shrink: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + .name { + max-width: 250px; + } &.is-hover, &:hover { background: #f5f7fa; diff --git a/frontend/desktop/src/components/common/RenderForm/tags/TagPassword.vue b/frontend/desktop/src/components/common/RenderForm/tags/TagPassword.vue index 8f6ec7cd1a..6af5e05773 100644 --- a/frontend/desktop/src/components/common/RenderForm/tags/TagPassword.vue +++ b/frontend/desktop/src/components/common/RenderForm/tags/TagPassword.vue @@ -23,12 +23,12 @@ - + + @@ -104,8 +108,9 @@ value: '' }, cursorPos: 0, - inputText: '', + inputDisplayText: '', // 输入框展示的值 inputPlaceholder: '', + showInputVal: false, ASYMMETRIC_CIPHER_TYPE: window.ASYMMETRIC_CIPHER_TYPE, ASYMMETRIC_PUBLIC_KEY: window.ASYMMETRIC_PUBLIC_KEY, ASYMMETRIC_PREFIX: window.ASYMMETRIC_PREFIX @@ -141,7 +146,7 @@ }, mounted () { if (this.localVal?.tag === 'value') { - this.inputText = this.localVal.value ? '******' : '' + this.inputDisplayText = this.localVal.value ? '******' : '' } }, methods: { @@ -150,9 +155,10 @@ tag: val, value: '' } - this.inputText = '' + this.inputDisplayText = '' this.change() }, + // 单行文本框输入 handleInput (e) { this.localVal.value = e.target.value this.inputPlaceholder = '' @@ -160,6 +166,7 @@ handleTextareaKeyDown (e) { this.cursorPos = e.target.selectionStart }, + // 多行文本框输入 handleTextareaInput (e) { const value = e.target.value const start = this.cursorPos > e.target.selectionStart ? e.target.selectionStart : this.cursorPos @@ -174,23 +181,27 @@ }, handleTextareaKeyUp (e) { this.inputPlaceholder = '' - this.inputText = e.target.value.replace(/[^\n]/g, '·') + this.inputDisplayText = e.target.value.replace(/[^\n]/g, '·') }, + // 获取焦点后清空密码 handleFocus () { if (this.localVal.value.length > 0) { this.inputPlaceholder = i18n.t('要修改密码请点击后重新输入密码') } this.localVal.value = '' - this.inputText = '' + this.inputDisplayText = '' this.change() }, // 输入框失焦后执行加密逻辑 handleBlur () { - this.inputText = this.textareaMode ? this.localVal.value.replace(/[^\n]/g, '·') : this.localVal.value + this.inputDisplayText = this.textareaMode ? this.localVal.value.replace(/[^\n]/g, '·') : this.localVal.value const encryptedVal = this.encryptPassword() this.localVal.value = encryptedVal this.change() }, + handleToggleEye () { + this.showInputVal = !this.showInputVal + }, handleSelectVariable (val) { this.localVal.value = val this.change() @@ -229,6 +240,12 @@ border-top-right-radius: 0; border-bottom-right-radius: 0; } + .value-edit-input { + display: flex; + align-items: center; + flex: 1; + position: relative; + } .value-input { flex: 1; padding: 0 10px; @@ -269,6 +286,18 @@ background-color: #ffffff; } } + .toggle-eye-icon { + position: absolute; + top: 50%; + right: 12px; + font-size: 14px; + color: #979ba5; + transform: translateY(-50%); + cursor: pointer; + &:hover { + color: #3a84ff; + } + } .select-var { flex: 1; border-top-left-radius: 0; diff --git a/frontend/desktop/src/components/common/RenderForm/tags/TagTextarea.vue b/frontend/desktop/src/components/common/RenderForm/tags/TagTextarea.vue index 4d16f302c8..f3588658aa 100644 --- a/frontend/desktop/src/components/common/RenderForm/tags/TagTextarea.vue +++ b/frontend/desktop/src/components/common/RenderForm/tags/TagTextarea.vue @@ -21,6 +21,7 @@ }" :contenteditable="!isDisabled" :data-placeholder="placeholder" + data-test-name="formTag_textarea_divInput" v-bk-clickoutside="handleClickOutSide" @mouseup="handleInputMouseUp" @focus="handleInputFocus" @@ -38,11 +39,11 @@
  • - {{ item }} + :key="item.key" + :class="{ 'is-hover': hoverKey === item.key }" + @click.stop="onSelectVal(item.key)"> + {{ item.key }} + {{ item.name }}
  • @@ -107,10 +108,10 @@ get () { let KeyList = [] if (this.constants) { - KeyList = [...Object.keys(this.constants)] + KeyList = [...Object.values(this.constants)] } if (this.internalVariable) { - KeyList = [...KeyList, ...Object.keys(this.internalVariable)] + KeyList = [...KeyList, ...Object.values(this.internalVariable)] } return KeyList }, @@ -158,8 +159,9 @@ mounted () { const divInputDom = this.$el.querySelector('.div-input') if (divInputDom) { - divInputDom.innerText = typeof this.value === 'string' ? this.value : JSON.stringify(this.value) - if (this.render) { + const value = typeof this.value === 'string' ? this.value : JSON.stringify(this.value) + divInputDom.innerText = value + if (this.render && value) { this.handleInputBlur() // 把用户手动换行变成div标签 divInputDom.innerHTML = divInputDom.innerHTML.replace(/
    /g, '

    ') @@ -277,7 +279,7 @@ } // 判断是否为变量格式 if (matchText === '$' || /^\${[a-zA-Z_]*[\w|.]*/.test(matchText)) { - this.varList = this.constantArr.filter(item => item.indexOf(matchText) > -1) + this.varList = this.constantArr.filter(item => item.key.indexOf(matchText) > -1) // 计算变量下拉列表的坐标 this.isListOpen = false if (this.varList.length) { @@ -307,13 +309,13 @@ const focusValueWidth = newDom.offsetWidth || 0 const focusValueHeight = newDom.offsetHeight || 0 this.$el.removeChild(newDom) - let popLeft = previousDomLeft + previousDomWidth + focusValueWidth - if (popLeft > inputWidth - 238) { - popLeft = inputWidth - 238 - } - let popTop = textNodeTop - inputTop + focusValueHeight + 2 // 2px是为了使光标和联想列表隔开 this.$nextTick(() => { - const { height: varListHeight } = document.querySelector('.rf-select-list').getBoundingClientRect() + const { height: varListHeight, width: varListWidth } = this.$el.querySelector('.rf-select-list').getBoundingClientRect() + let popLeft = previousDomLeft + previousDomWidth + focusValueWidth + if (popLeft > inputWidth - varListWidth) { + popLeft = inputWidth - varListWidth + } + let popTop = textNodeTop - inputTop + focusValueHeight + 2 // 2px是为了使光标和联想列表隔开 if (window.innerHeight < textNodeTop + focusValueHeight + varListHeight + 50) { popTop = textNodeTop - inputTop - varListHeight - 2 } @@ -345,7 +347,11 @@ let domValue = dom.textContent || '\n' if (dom.childNodes.length) { domValue = Array.from(dom.childNodes).map(item => { - return item.type === 'button' ? item.value : item.textContent + return item.type === 'button' + ? item.value + : item.textContent.trim() === '' + ? ' ' + : item.textContent.replace(/ /g, ' ') }).join('') } return domValue @@ -376,7 +382,7 @@ let isExistVar = false if ($0) { isExistVar = this.constantArr.some(item => { - const varText = item.slice(2, -1) + const varText = item.key.slice(2, -1) if ($0.indexOf(varText) > -1) { const regexp = new RegExp(`^(.*\\W|\\W)?${varText}(\\W|\\W.*)?$`) return regexp.test($0) @@ -402,6 +408,7 @@ dom.innerHTML = innerHtml } }) + this.updateInputValue() }, // 文本框按键事件 handleInputKeyDown (e) { @@ -436,12 +443,12 @@ if (len) { event.preventDefault() event.stopPropagation() - let curIndex = this.varList.findIndex(item => item === this.hoverKey) + let curIndex = this.varList.findIndex(item => item.key === this.hoverKey) curIndex = event.code === 'ArrowDown' ? curIndex + 1 : curIndex - 1 curIndex = curIndex > len - 1 ? 0 : (curIndex < 0 ? len - 1 : curIndex) const option = this.varList[curIndex] if (option) { - this.hoverKey = option + this.hoverKey = option.key const selectDom = this.$el.querySelector('.rf-select-content') const hoverItemDom = selectDom.querySelector('.is-hover') if (hoverItemDom) { @@ -471,12 +478,17 @@ position: absolute; top: 40px; right: 0; - width: 238px; + max-width: 600px; background: #ffffff; + border: 1px solid #dcdee5; border-radius: 2px; - box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 3px 9px 0 rgba(0,0,0,.1); overflow-y: hidden; z-index: 100; + .name { + color: #c4c6cc; + margin-left: 16px; + } } .rf-select-content { max-height: 100px; @@ -485,12 +497,21 @@ @include scrollbar; } .rf-select-item { + display: flex; + align-items: center; padding: 0 10px; line-height: 32px; font-size: 12px; cursor: pointer; - overflow: hidden; - text-overflow: ellipsis; + > span { + flex-shrink: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + .name { + max-width: 250px; + } &.is-hover, &:hover { background: #f5f7fa; diff --git a/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/BranchGateway.vue b/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/BranchGateway.vue index a2c72bc32a..bb03dc798f 100755 --- a/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/BranchGateway.vue +++ b/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/BranchGateway.vue @@ -16,6 +16,7 @@ 'branch-gateway', { 'fail-skip': node.status === 'FINISHED' && node.skip }, { 'ready': node.ready }, + { 'actived': node.isActived }, node.status ? node.status.toLowerCase() : '' ]">
    diff --git a/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/ConditionalParallelGateway.vue b/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/ConditionalParallelGateway.vue index 4d47575b00..c469c30d25 100644 --- a/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/ConditionalParallelGateway.vue +++ b/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/ConditionalParallelGateway.vue @@ -16,6 +16,7 @@ 'branch-gateway', { 'fail-skip': node.status === 'FINISHED' && node.skip }, { 'ready': node.ready }, + { 'actived': node.isActived }, node.status ? node.status.toLowerCase() : '' ]">
    diff --git a/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/ConvergeGateway.vue b/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/ConvergeGateway.vue index b20c763104..73e18f04b9 100755 --- a/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/ConvergeGateway.vue +++ b/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/ConvergeGateway.vue @@ -10,7 +10,15 @@ * specific language governing permissions and limitations under the License. */ diff --git a/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/ParallelGateway.vue b/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/ParallelGateway.vue index d10b0ec0ec..05dd1de997 100755 --- a/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/ParallelGateway.vue +++ b/frontend/desktop/src/components/common/TemplateCanvas/NodeTemplate/ParallelGateway.vue @@ -10,7 +10,15 @@ * specific language governing permissions and limitations under the License. */ diff --git a/frontend/desktop/src/components/common/TemplateCanvas/PalettePanel/index.vue b/frontend/desktop/src/components/common/TemplateCanvas/PalettePanel/index.vue index 7a2a164109..75cd4e75ed 100755 --- a/frontend/desktop/src/components/common/TemplateCanvas/PalettePanel/index.vue +++ b/frontend/desktop/src/components/common/TemplateCanvas/PalettePanel/index.vue @@ -33,13 +33,13 @@
    @@ -57,29 +57,14 @@
    - - - -