fix(组件): 更多按钮点击无反应修复&部分页面优化
This commit is contained in:
parent
f1981d1baa
commit
522a2e389e
|
@ -1,7 +1,7 @@
|
|||
@font-face {
|
||||
font-family: iconfont; /* Project id 3462279 */
|
||||
src: url('iconfont.woff2?t=1706424798592') format('woff2'), url('iconfont.woff?t=1706424798592') format('woff'),
|
||||
url('iconfont.ttf?t=1706424798592') format('truetype'), url('iconfont.svg?t=1706424798592#iconfont') format('svg');
|
||||
src: url('iconfont.woff2?t=1709115886161') format('woff2'), url('iconfont.woff?t=1709115886161') format('woff'),
|
||||
url('iconfont.ttf?t=1709115886161') format('truetype'), url('iconfont.svg?t=1709115886161#iconfont') format('svg');
|
||||
}
|
||||
.iconfont {
|
||||
font-size: 16px;
|
||||
|
@ -10,6 +10,24 @@
|
|||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
.icon-icon_unlink::before {
|
||||
content: '\e7a1';
|
||||
}
|
||||
.icon-icon_unloading::before {
|
||||
content: '\e7a2';
|
||||
}
|
||||
.icon-icon_form_one::before {
|
||||
content: '\e7a0';
|
||||
}
|
||||
.icon-icon_aiming::before {
|
||||
content: '\e79e';
|
||||
}
|
||||
.icon-icon_frame_select::before {
|
||||
content: '\e79f';
|
||||
}
|
||||
.icon-icon_lower_branch::before {
|
||||
content: '\e79d';
|
||||
}
|
||||
.icon-icon_swich::before {
|
||||
content: '\e79c';
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -5,6 +5,48 @@
|
|||
"css_prefix_text": "icon-",
|
||||
"description": "DE、MS项目icon管理",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "39371890",
|
||||
"name": "icon_unlink",
|
||||
"font_class": "icon_unlink",
|
||||
"unicode": "e7a1",
|
||||
"unicode_decimal": 59297
|
||||
},
|
||||
{
|
||||
"icon_id": "39371889",
|
||||
"name": "icon_unloading",
|
||||
"font_class": "icon_unloading",
|
||||
"unicode": "e7a2",
|
||||
"unicode_decimal": 59298
|
||||
},
|
||||
{
|
||||
"icon_id": "39144507",
|
||||
"name": "icon_form_one",
|
||||
"font_class": "icon_form_one",
|
||||
"unicode": "e7a0",
|
||||
"unicode_decimal": 59296
|
||||
},
|
||||
{
|
||||
"icon_id": "39143243",
|
||||
"name": "icon_aiming",
|
||||
"font_class": "icon_aiming",
|
||||
"unicode": "e79e",
|
||||
"unicode_decimal": 59294
|
||||
},
|
||||
{
|
||||
"icon_id": "39143242",
|
||||
"name": "icon_frame_select",
|
||||
"font_class": "icon_frame_select",
|
||||
"unicode": "e79f",
|
||||
"unicode_decimal": 59295
|
||||
},
|
||||
{
|
||||
"icon_id": "39142606",
|
||||
"name": "icon_lower_branch",
|
||||
"font_class": "icon_lower_branch",
|
||||
"unicode": "e79d",
|
||||
"unicode_decimal": 59293
|
||||
},
|
||||
{
|
||||
"icon_id": "39108518",
|
||||
"name": "icon_swich",
|
||||
|
|
|
@ -14,6 +14,18 @@
|
|||
/>
|
||||
<missing-glyph />
|
||||
|
||||
<glyph glyph-name="icon_unlink" unicode="" d="M699.690667 481.664l173.952-173.994667c83.413333-83.370667 88.490667-210.602667 4.053333-291.2-84.309333-80.469333-207.573333-76.629333-289.706667 5.504l-173.994666 173.994667a44.757333 44.757333 0 0 0 63.232 63.274667l173.994666-173.994667c48.298667-48.298667 116.138667-50.432 164.693334-4.053333 46.506667 44.373333 43.733333 113.92-5.546667 163.2l-173.952 173.994666a44.757333 44.757333 0 0 0 63.274667 63.274667z m-122.88-93.738667l87.04-87.04a44.757333 44.757333 0 0 0-63.317334-63.232l-86.997333 86.997334a44.757333 44.757333 0 0 0 63.274667 63.274666zM390.954667 790.741333l173.994666-173.994666a44.757333 44.757333 0 1 0-63.274666-63.274667L327.68 727.466667c-46.890667 46.933333-120.32 48.426667-163.925333 4.778666C120.106667 688.64 121.6 615.253333 168.533333 568.32l173.994667-173.994667a44.757333 44.757333 0 1 0-63.274667-63.274666L105.258667 505.045333C24.021333 586.282667 21.290667 716.373333 100.48 795.52 179.626667 874.709333 309.717333 871.978667 390.954667 790.741333zM373.845333 590.933333L460.8 503.893333a44.757333 44.757333 0 0 0-63.274667-63.274666l-87.04 87.04a44.757333 44.757333 0 1 0 63.317334 63.232z" horiz-adv-x="1024" />
|
||||
|
||||
<glyph glyph-name="icon_unloading" unicode="" d="M896 298.666667a42.666667 42.666667 0 0 0 42.666667-42.666667v-170.666667a42.666667 42.666667 0 0 0-42.666667-42.666666h-238.293333l33.792-33.834667a42.666667 42.666667 0 0 0 3.541333-56.32l-3.541333-4.010667a42.666667 42.666667 0 0 0-60.330667 0l-106.666667 106.666667-3.114666 3.498667a42.794667 42.794667 0 0 0-0.298667 0.341333l3.413333-3.84A43.008 43.008 0 0 0 512 84.48 42.666667 42.666667 0 0 0 512 85.333333v0.768c0 1.024 0.085333 2.048 0.170667 3.029334L512 85.333333a43.008 43.008 0 0 0 9.088 26.325334c1.066667 1.322667 2.176 2.645333 3.413333 3.84l106.666667 106.666666a42.666667 42.666667 0 0 0 60.330667-60.330666l-33.834667-33.834667H853.333333v128a42.666667 42.666667 0 0 0 37.674667 42.368L896 298.666667zM384 810.666667a42.666667 42.666667 0 0 0 32.768-15.36L510.72 682.666667H853.333333a85.333333 85.333333 0 0 0 85.12-78.933334L938.666667 597.333333v-192a42.666667 42.666667 0 0 0-85.333334 0V597.333333h-362.666666a42.666667 42.666667 0 0 0-32.768 15.36L363.946667 725.333333H128v-682.666666h320a42.666667 42.666667 0 0 0 0-85.333334H128a85.333333 85.333333 0 0 0-85.333333 85.333334V725.333333a85.333333 85.333333 0 0 0 85.333333 85.333334h256z" horiz-adv-x="1024" />
|
||||
|
||||
<glyph glyph-name="icon_form_one" unicode="" d="M192-42.666667A106.666667 106.666667 0 0 0 85.333333 64v640A106.666667 106.666667 0 0 0 192 810.666667h640A106.666667 106.666667 0 0 0 938.666667 704v-640a106.666667 106.666667 0 0 0-106.666667-106.666667h-640zM597.333333 554.666667H170.666667v-490.666667a21.333333 21.333333 0 0 1 21.333333-21.333333H597.333333V554.666667z m256 0h-170.666666v-512h149.333333a21.333333 21.333333 0 0 1 21.333333 21.333333V554.666667z m-256 170.666666H192a21.333333 21.333333 0 0 1-21.333333-21.333333V640h426.666666V725.333333z m234.666667 0H682.666667v-85.333333h170.666666V704a21.333333 21.333333 0 0 1-21.333333 21.333333z" horiz-adv-x="1024" />
|
||||
|
||||
<glyph glyph-name="icon_aiming" unicode="" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333s-210.133333-469.333333-469.333333-469.333333S42.666667 124.8 42.666667 384 252.8 853.333333 512 853.333333z m42.666667-87.68V661.333333a42.666667 42.666667 0 0 0-85.333334 0V765.653333A384.170667 384.170667 0 0 1 130.346667 426.666667H234.666667a42.666667 42.666667 0 0 0 0-85.333334H130.346667A384.170667 384.170667 0 0 1 469.333333 2.304V106.666667a42.666667 42.666667 0 0 0 85.333334 0v-104.32a384.170667 384.170667 0 0 1 338.986666 338.944L768 341.333333a42.666667 42.666667 0 0 0 0 85.333334h125.653333a384.170667 384.170667 0 0 1-338.944 338.986666z" horiz-adv-x="1024" />
|
||||
|
||||
<glyph glyph-name="icon_frame_select" unicode="" d="M298.666667 810.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-42.666667h341.333334V768a42.666667 42.666667 0 0 0 42.666666 42.666667h170.666667a42.666667 42.666667 0 0 0 42.666667-42.666667v-170.666667a42.666667 42.666667 0 0 0-42.666667-42.666666h-42.666667v-341.333334h42.666667a42.666667 42.666667 0 0 0 42.666667-42.666666v-170.666667a42.666667 42.666667 0 0 0-42.666667-42.666667h-170.666667a42.666667 42.666667 0 0 0-42.666666 42.666667v42.666667H341.333333v-42.666667a42.666667 42.666667 0 0 0-42.666666-42.666667H128a42.666667 42.666667 0 0 0-42.666667 42.666667v170.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h42.666667V554.666667H128a42.666667 42.666667 0 0 0-42.666667 42.666666V768a42.666667 42.666667 0 0 0 42.666667 42.666667h170.666667z m554.666666-682.666667h-85.333333v-85.333333h85.333333v85.333333zM256 128H170.666667v-85.333333h85.333333v85.333333zM682.666667 640H341.333333v-42.666667a42.666667 42.666667 0 0 0-42.666666-42.666666H256v-341.333334h42.666667a42.666667 42.666667 0 0 0 42.666666-42.666666v-42.666667h341.333334v42.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h42.666667V554.666667h-42.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V640zM256 725.333333H170.666667v-85.333333h85.333333V725.333333z m597.333333 0h-85.333333v-85.333333h85.333333V725.333333z" horiz-adv-x="1024" />
|
||||
|
||||
<glyph glyph-name="icon_lower_branch" unicode="" d="M132.736 554.666667C106.538667 554.666667 85.333333 572.288 85.333333 594.048V771.285333C85.333333 793.045333 106.538667 810.666667 132.736 810.666667h331.861333c26.197333 0 47.402667-17.621333 47.402667-39.381334v-177.237333c0-21.76-21.205333-39.381333-47.402667-39.381333H341.333333v-85.290667L597.333333 469.333333v-85.333333l-256 0.042667v-256L597.333333 128v-85.333333l-256 0.042666C294.186667 42.666667 256 80.853333 256 128V554.666667H132.736z m284.458667 177.237333H180.138667v-98.474667h237.056V731.904zM900.693333 554.666667c20.949333 0 37.930667-17.621333 37.930667-39.381334v-177.237333c0-21.76-16.981333-39.381333-37.930667-39.381333H635.306667c-20.949333 0-37.930667 17.621333-37.930667 39.381333V515.285333c0 21.76 16.981333 39.381333 37.930667 39.381334h265.472z m-37.930666-78.762667h-189.610667v-98.474667h189.610667V475.904z m37.973333-262.570667c20.906667 0 37.888-17.621333 37.888-39.381333v-177.237333c0-21.76-16.981333-39.381333-37.930667-39.381334H635.306667c-20.949333 0-37.930667 17.621333-37.930667 39.381334v177.237333c0 21.76 16.981333 39.381333 37.930667 39.381333h265.472z m-37.973333-78.762666h-189.610667v-98.474667h189.610667v98.474667z" horiz-adv-x="1024" />
|
||||
|
||||
<glyph glyph-name="icon_swich" unicode="" d="M670.165333 798.165333l256-256c1.536-1.493333 2.901333-3.114667 4.138667-4.778666l3.029333-4.693334 2.304-4.864 1.493334-4.48 1.28-6.314666L938.666667 512l-0.128-3.2-0.725334-5.376-1.28-4.736-1.877333-4.736-2.218667-4.181333-2.858666-4.096-3.413334-3.84a43.050667 43.050667 0 0 0-4.778666-4.138667l-4.693334-3.029333-4.864-2.304-4.48-1.493334-6.357333-1.28L896 469.333333H128a42.666667 42.666667 0 1 0 0 85.333334h664.96l-183.125333 183.168a42.666667 42.666667 0 1 0 60.330666 60.330666zM913.066667 341.333333a42.666667 42.666667 0 0 0 0-85.333333H248.064l183.168-183.168a42.666667 42.666667 0 0 0-60.373333-60.330667l-256 256a43.008 43.008 0 0 0-4.096 4.778667l-3.072 4.693333-2.261334 4.864-1.237333 3.498667-1.152 4.864-0.597333 5.12L102.357333 298.666667l0.128 3.2 0.554667 4.266666 0.512 2.517334 1.877333 5.845333 1.578667 3.541333 1.578667 2.858667 2.858666 4.096 3.413334 3.84 2.346666 2.133333 4.010667 3.114667 3.157333 1.92 6.101334 2.773333 3.2 1.024 3.925333 0.853334 3.584 0.512L145.066667 341.333333h768z" horiz-adv-x="1024" />
|
||||
|
||||
<glyph glyph-name="icon_split_turn-down_arrow" unicode="" d="M832-86.528a43.434667 43.434667 0 0 0-6.357333 0.426667l-2.218667 0.426666a40.106667 40.106667 0 0 0-13.653333 5.376 44.16 44.16 0 0 0-3.157334 2.133334l-0.938666 0.725333a43.349333 43.349333 0 0 0-3.84 3.413333l-106.666667 106.666667a42.666667 42.666667 0 0 0 60.330667 60.330667l33.834666-33.834667v195.669333a128 128 0 0 1-120.490666 127.786667l-7.509334 0.213333h-341.333333v-323.626666l33.834667 33.792a42.666667 42.666667 0 0 0 56.32 3.541333l4.010666-3.541333a42.666667 42.666667 0 0 0 0-60.330667l-106.666666-106.666667a42.666667 42.666667 0 0 0-60.330667 0l-106.666667 106.666667a42.666667 42.666667 0 0 0 60.330667 60.330667l33.834667-33.834667V560.853333A149.418667 149.418667 0 0 0 277.333333 853.333333a149.333333 149.333333 0 0 0 42.666667-292.48v-92.714666h341.333333a213.333333 213.333333 0 0 0 213.333334-213.333334v-195.626666l33.834666 33.792a42.666667 42.666667 0 0 0 56.32 3.541333l4.010667-3.541333a42.666667 42.666667 0 0 0 0-60.330667l-106.666667-106.666667-3.328-2.901333-1.450666-1.237333a43.946667 43.946667 0 0 0-16.810667-7.509334l-2.261333-0.426666-2.773334-0.256h-0.085333l-0.512-0.042667 0.469333 0.042667-3.413333-0.170667zM277.333333 768a64 64 0 1 1 0-128 64 64 0 0 1 0 128z" horiz-adv-x="1024" />
|
||||
|
|
Before Width: | Height: | Size: 430 KiB After Width: | Height: | Size: 436 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -19,7 +19,13 @@
|
|||
<icon-upload class="mr-[8px]" />{{ t('ms.add.attachment.localUpload') }}
|
||||
</a-button>
|
||||
</MsUpload>
|
||||
<a-button size="small" type="text" class="ms-add-attachment-dropdown-btn" @click="emit('linkFile')">
|
||||
<a-button
|
||||
v-permission="['PROJECT_FILE_MANAGEMENT:READ']"
|
||||
size="small"
|
||||
type="text"
|
||||
class="ms-add-attachment-dropdown-btn"
|
||||
@click="emit('linkFile')"
|
||||
>
|
||||
<MsIcon type="icon-icon_link-copy_outlined" class="mr-[8px]" size="16" />
|
||||
{{ t('ms.add.attachment.associateFile') }}
|
||||
</a-button>
|
||||
|
@ -28,6 +34,7 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import MsIcon from '@/components/pure/ms-icon-font/index.vue';
|
||||
import MsUpload from '@/components/pure/ms-upload/index.vue';
|
||||
import { MsFileItem } from '@/components/pure/ms-upload/types';
|
||||
|
||||
|
|
|
@ -77,10 +77,17 @@
|
|||
<MsButton type="text" @click="clearDeletedFiles">{{ t('ms.add.attachment.quickClear') }}</MsButton>
|
||||
</div>
|
||||
<div class="file-list">
|
||||
<div v-for="file of alreadyDeleteFiles" :key="file.value">
|
||||
<MsTag size="small" max-width="100%" closable @close="handleClose(file)">
|
||||
{{ file.label }}
|
||||
</MsTag>
|
||||
<div v-for="file of alreadyDeleteFiles" :key="file.value" class="file-list-item">
|
||||
<a-tooltip :content="file.name" :mouse-enter-delay="300">
|
||||
<MsTag size="small" max-width="100%">
|
||||
{{ file.name }}
|
||||
</MsTag>
|
||||
</a-tooltip>
|
||||
<a-tooltip :content="t('ms.add.attachment.remove')">
|
||||
<MsButton type="text" status="secondary" @click="handleClose(file)">
|
||||
<MsIcon type="icon-icon_unlink" class="hover:text-[rgb(var(--primary-5))]" size="16" />
|
||||
</MsButton>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -89,10 +96,34 @@
|
|||
{{ t('ms.add.attachment.other') }}
|
||||
</div>
|
||||
<div class="file-list">
|
||||
<div v-for="file of otherFiles" :key="file.value">
|
||||
<MsTag size="small" max-width="100%" closable @close="handleClose(file)">
|
||||
{{ file.label }}
|
||||
</MsTag>
|
||||
<div v-for="file of otherFiles" :key="file.value" class="file-list-item">
|
||||
<a-tooltip :content="file.name" :mouse-enter-delay="300">
|
||||
<MsTag size="small" max-width="100%">
|
||||
{{ file.name }}
|
||||
</MsTag>
|
||||
</a-tooltip>
|
||||
<div v-if="file.local === true" class="flex items-center">
|
||||
<a-tooltip :content="t('ms.add.attachment.saveAs')">
|
||||
<MsButton type="text" status="secondary" class="!mr-0" @click="handleClose(file)">
|
||||
<MsIcon type="icon-icon_unloading" class="hover:text-[rgb(var(--primary-5))]" size="16" />
|
||||
</MsButton>
|
||||
</a-tooltip>
|
||||
<a-divider direction="vertical" :margin="4"></a-divider>
|
||||
<a-tooltip :content="t('ms.add.attachment.remove')">
|
||||
<MsButton type="text" status="secondary" @click="handleClose(file)">
|
||||
<MsIcon
|
||||
type="icon-icon_delete-trash_outlined"
|
||||
class="hover:text-[rgb(var(--primary-5))]"
|
||||
size="16"
|
||||
/>
|
||||
</MsButton>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<a-tooltip v-else :content="t('ms.add.attachment.cancelAssociate')">
|
||||
<MsButton type="text" status="secondary" @click="handleClose(file)">
|
||||
<MsIcon type="icon-icon_unlink" class="hover:text-[rgb(var(--primary-5))]" size="16" />
|
||||
</MsButton>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -129,6 +160,7 @@
|
|||
import { TagData } from '@arco-design/web-vue';
|
||||
|
||||
import MsButton from '@/components/pure/ms-button/index.vue';
|
||||
import MsIcon from '@/components/pure/ms-icon-font/index.vue';
|
||||
import MsTag, { Size } from '@/components/pure/ms-tag/ms-tag.vue';
|
||||
import MsTagsInput from '@/components/pure/ms-tags-input/index.vue';
|
||||
import type { MsFileItem } from '@/components/pure/ms-upload/types';
|
||||
|
@ -215,6 +247,7 @@
|
|||
...item,
|
||||
value: item?.uid || '',
|
||||
label: item?.name || '',
|
||||
local: true,
|
||||
}));
|
||||
} else {
|
||||
inputFileName.value = fileItem.name || '';
|
||||
|
@ -305,7 +338,12 @@
|
|||
.ms-scroll-bar();
|
||||
|
||||
gap: 8px;
|
||||
max-height: 100px;
|
||||
max-height: 200px;
|
||||
.file-list-item {
|
||||
@apply flex items-center justify-between;
|
||||
|
||||
gap: 8px;
|
||||
}
|
||||
}
|
||||
:deep(.arco-input-tag-has-prefix) {
|
||||
padding-left: 4px;
|
||||
|
|
|
@ -4,4 +4,7 @@ export default {
|
|||
'ms.add.attachment.alreadyDelete': 'Deleted files',
|
||||
'ms.add.attachment.other': 'Other files',
|
||||
'ms.add.attachment.quickClear': 'Clear',
|
||||
'ms.add.attachment.remove': 'Remove',
|
||||
'ms.add.attachment.cancelAssociate': 'Disassociate',
|
||||
'ms.add.attachment.saveAs': 'Save',
|
||||
};
|
||||
|
|
|
@ -4,4 +4,7 @@ export default {
|
|||
'ms.add.attachment.alreadyDelete': '已被删除文件',
|
||||
'ms.add.attachment.other': '其他文件',
|
||||
'ms.add.attachment.quickClear': '一键移除',
|
||||
'ms.add.attachment.remove': '移除',
|
||||
'ms.add.attachment.cancelAssociate': '取消关联',
|
||||
'ms.add.attachment.saveAs': '转存',
|
||||
};
|
||||
|
|
|
@ -6,13 +6,13 @@
|
|||
@select="selectHandler"
|
||||
@popup-visible-change="visibleChange"
|
||||
>
|
||||
<div :class="['ms-more-action-trigger-content', visible ? 'ms-more-action-trigger-content--focus' : '']">
|
||||
<slot>
|
||||
<slot>
|
||||
<div :class="['ms-more-action-trigger-content', visible ? 'ms-more-action-trigger-content--focus' : '']">
|
||||
<MsButton type="text" size="mini" class="more-icon-btn">
|
||||
<MsIcon type="icon-icon_more_outlined" size="16" class="text-[var(--color-text-4)]" />
|
||||
</MsButton>
|
||||
</slot>
|
||||
</div>
|
||||
</div>
|
||||
</slot>
|
||||
<template #content>
|
||||
<template v-for="item of props.list">
|
||||
<a-divider
|
||||
|
|
|
@ -35,11 +35,27 @@ export const pathMap: PathMapItem[] = [
|
|||
level: MENU_LEVEL[2],
|
||||
children: [
|
||||
{
|
||||
key: 'API_TEST_DEBUG', // 接口测试-接口调试
|
||||
key: 'API_TEST_DEBUG_MANAGEMENT', // 接口测试-接口调试
|
||||
locale: 'menu.apiTest.debug',
|
||||
route: RouteEnum.API_TEST_DEBUG,
|
||||
route: RouteEnum.API_TEST_DEBUG_MANAGEMENT,
|
||||
permission: [],
|
||||
level: MENU_LEVEL[2],
|
||||
children: [
|
||||
{
|
||||
key: 'API_TEST_DEBUG_MANAGEMENT_MODULE', // 接口测试-接口调试-模块
|
||||
locale: 'common.module',
|
||||
route: RouteEnum.API_TEST_DEBUG_MANAGEMENT,
|
||||
permission: [],
|
||||
level: MENU_LEVEL[2],
|
||||
},
|
||||
{
|
||||
key: 'API_TEST_DEBUG_MANAGEMENT_DEBUG', // 接口测试-接口调试-调试
|
||||
locale: 'menu.apiTest.debug.debug',
|
||||
route: RouteEnum.API_TEST_DEBUG_MANAGEMENT,
|
||||
permission: [],
|
||||
level: MENU_LEVEL[2],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'API_TEST_MANAGEMENT', // 接口测试-接口管理
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
export enum ApiTestRouteEnum {
|
||||
API_TEST = 'apiTest',
|
||||
API_TEST_DEBUG = 'apiTestDebug',
|
||||
API_TEST_DEBUG_MANAGEMENT = 'apiTestDebug',
|
||||
API_TEST_MANAGEMENT = 'apiTestManagement',
|
||||
API_TEST_REPORT = 'apiTestReport',
|
||||
}
|
||||
|
|
|
@ -71,9 +71,36 @@ export default function usePathMap() {
|
|||
return null;
|
||||
};
|
||||
|
||||
/**
|
||||
* 通过 key 查找对应的 locale 路径
|
||||
*/
|
||||
const findLocalePath = (targetKey: string) => {
|
||||
function getLocalePathArr(trees: PathMapItem[], path: string[] = []): string[] {
|
||||
for (let i = 0; i < trees.length; i++) {
|
||||
const node = trees[i];
|
||||
const newPathArr = [...path, node.locale];
|
||||
|
||||
if (node.key === targetKey) {
|
||||
return newPathArr;
|
||||
}
|
||||
|
||||
if (targetKey.startsWith(node.key) && node.children) {
|
||||
const result = getLocalePathArr(node.children, newPathArr);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
return getLocalePathArr(pathMap);
|
||||
};
|
||||
|
||||
return {
|
||||
getPathMapByLevel,
|
||||
jumpRouteByMapKey,
|
||||
getRouteLevelByKey,
|
||||
findLocalePath,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -121,4 +121,5 @@ export default {
|
|||
'common.stay': 'Stay',
|
||||
'common.apply': 'Apply',
|
||||
'common.stop': 'Stop',
|
||||
'common.module': 'Module',
|
||||
};
|
||||
|
|
|
@ -25,6 +25,7 @@ export default {
|
|||
'menu.caseManagement': 'Case Management',
|
||||
'menu.apiTest': 'API Test',
|
||||
'menu.apiTest.debug': 'API debug',
|
||||
'menu.apiTest.debug.debug': 'Debug',
|
||||
'menu.apiTest.management': 'API Management',
|
||||
'menu.apiTest.report': 'API Report',
|
||||
'menu.uiTest': 'UI Test',
|
||||
|
|
|
@ -124,4 +124,5 @@ export default {
|
|||
'common.stay': '留下',
|
||||
'common.apply': '应用',
|
||||
'common.stop': '停止',
|
||||
'common.module': '模块',
|
||||
};
|
||||
|
|
|
@ -25,6 +25,7 @@ export default {
|
|||
'menu.caseManagement': '用例管理',
|
||||
'menu.apiTest': '接口测试',
|
||||
'menu.apiTest.debug': '接口调试',
|
||||
'menu.apiTest.debug.debug': '调试',
|
||||
'menu.apiTest.management': '接口管理',
|
||||
'menu.apiTest.report': '接口报告',
|
||||
'menu.uiTest': 'UI测试',
|
||||
|
|
|
@ -25,7 +25,7 @@ const ApiTest: AppRouteRecordRaw = {
|
|||
children: [
|
||||
{
|
||||
path: 'debug',
|
||||
name: ApiTestRouteEnum.API_TEST_DEBUG,
|
||||
name: ApiTestRouteEnum.API_TEST_DEBUG_MANAGEMENT,
|
||||
component: () => import('@/views/api-test/debug/index.vue'),
|
||||
meta: {
|
||||
locale: 'menu.apiTest.debug',
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
/>
|
||||
<template #content>
|
||||
<div>{{ t('apiTestDebug.batchAddParamsTip1') }}</div>
|
||||
<div>{{ t('apiTestDebug.batchAddParamsTip2') }}</div>
|
||||
<div v-if="!props.noParamType">{{ t('apiTestDebug.batchAddParamsTip2') }}</div>
|
||||
<div>{{ t('apiTestDebug.batchAddParamsTip3') }}</div>
|
||||
</template>
|
||||
</a-tooltip>
|
||||
|
@ -48,10 +48,16 @@
|
|||
|
||||
import { useI18n } from '@/hooks/useI18n';
|
||||
|
||||
const props = defineProps<{
|
||||
params: Record<string, any>[];
|
||||
defaultParamItem?: Record<string, any>; // 默认参数项
|
||||
}>();
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
params: Record<string, any>[];
|
||||
defaultParamItem?: Record<string, any>; // 默认参数项
|
||||
noParamType?: boolean; // 是否有参数类型
|
||||
}>(),
|
||||
{
|
||||
noParamType: false,
|
||||
}
|
||||
);
|
||||
const emit = defineEmits<{
|
||||
(e: 'apply', resultArr: (Record<string, any> | null)[]): void;
|
||||
}>();
|
||||
|
|
|
@ -972,7 +972,7 @@
|
|||
@apply invisible;
|
||||
}
|
||||
.arco-select-view-value {
|
||||
color: var(--color-text-brand);
|
||||
color: var(--color-text-1);
|
||||
}
|
||||
.arco-select {
|
||||
border-color: transparent !important;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<batchAddKeyVal
|
||||
:params="innerParams"
|
||||
:default-param-item="defaultHeaderParamsItem"
|
||||
no-param-type
|
||||
@apply="handleBatchParamApply"
|
||||
/>
|
||||
</div>
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
<div class="ml-[16px]">
|
||||
<a-dropdown-button
|
||||
v-if="!requestVModel.executeLoading"
|
||||
v-permission="[props.permissionMap.execute]"
|
||||
:disabled="requestVModel.executeLoading || (isHttpProtocol && !requestVModel.url)"
|
||||
class="exec-btn"
|
||||
@click="() => execute(isPriorityLocalExec ? 'localExec' : 'serverExec')"
|
||||
|
@ -70,6 +71,7 @@
|
|||
<a-button v-else type="primary" class="mr-[12px]" @click="stopDebug">{{ t('common.stop') }}</a-button>
|
||||
<a-dropdown
|
||||
v-if="props.isDefinition"
|
||||
v-permission="[props.permissionMap.create, props.permissionMap.update]"
|
||||
:loading="saveLoading || (isHttpProtocol && !requestVModel.url)"
|
||||
@select="handleSelect"
|
||||
>
|
||||
|
@ -83,6 +85,7 @@
|
|||
</a-dropdown>
|
||||
<a-button
|
||||
v-else
|
||||
v-permission="[props.permissionMap.create, props.permissionMap.update]"
|
||||
type="secondary"
|
||||
:disabled="isHttpProtocol && !requestVModel.url"
|
||||
:loading="saveLoading"
|
||||
|
@ -289,6 +292,7 @@
|
|||
import { filterTree, getGenerateId, parseQueryParams } from '@/utils';
|
||||
import { scrollIntoView } from '@/utils/dom';
|
||||
import { registerCatchSaveShortcut, removeCatchSaveShortcut } from '@/utils/event';
|
||||
import { hasAnyPermission } from '@/utils/permission';
|
||||
|
||||
import { PluginConfig } from '@/models/apiTest/common';
|
||||
import { ExecuteHTTPRequestFullParams } from '@/models/apiTest/debug';
|
||||
|
@ -333,6 +337,11 @@
|
|||
createApi: (...args) => Promise<any>; // 创建接口
|
||||
updateApi: (...args) => Promise<any>; // 更新接口
|
||||
uploadTempFileApi?: (...args) => Promise<any>; // 上传临时文件接口
|
||||
permissionMap: {
|
||||
execute: string;
|
||||
create: string;
|
||||
update: string;
|
||||
};
|
||||
}>();
|
||||
const emit = defineEmits(['addDone']);
|
||||
|
||||
|
@ -892,29 +901,33 @@
|
|||
|
||||
async function handleSaveShortcut() {
|
||||
if (!requestVModel.value.isNew) {
|
||||
// 更新接口不需要弹窗,直接更新保存
|
||||
updateDebug();
|
||||
if (hasAnyPermission([props.permissionMap.update])) {
|
||||
// 更新接口不需要弹窗,直接更新保存
|
||||
updateDebug();
|
||||
}
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (!isHttpProtocol.value) {
|
||||
// 插件需要校验动态表单
|
||||
await fApi.value?.validate();
|
||||
if (hasAnyPermission([props.permissionMap.create])) {
|
||||
try {
|
||||
if (!isHttpProtocol.value) {
|
||||
// 插件需要校验动态表单
|
||||
await fApi.value?.validate();
|
||||
}
|
||||
saveModalForm.value = {
|
||||
name: requestVModel.value.name || '',
|
||||
path: requestVModel.value.url || '',
|
||||
moduleId: 'root',
|
||||
};
|
||||
saveModalVisible.value = true;
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(error);
|
||||
// 校验不通过则不进行保存
|
||||
requestVModel.value.activeTab = RequestComposition.PLUGIN;
|
||||
nextTick(() => {
|
||||
scrollIntoView(document.querySelector('.arco-form-item-message'), { block: 'center' });
|
||||
});
|
||||
}
|
||||
saveModalForm.value = {
|
||||
name: requestVModel.value.name || '',
|
||||
path: requestVModel.value.url || '',
|
||||
moduleId: 'root',
|
||||
};
|
||||
saveModalVisible.value = true;
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(error);
|
||||
// 校验不通过则不进行保存
|
||||
requestVModel.value.activeTab = RequestComposition.PLUGIN;
|
||||
nextTick(() => {
|
||||
scrollIntoView(document.querySelector('.arco-form-item-message'), { block: 'center' });
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -139,7 +139,6 @@
|
|||
: tabMoreActionList
|
||||
"
|
||||
class="response-more-action"
|
||||
icon-mode="hide"
|
||||
@select="(e) => handleMoreActionSelect(e, tab as ResponseItem)"
|
||||
/>
|
||||
<popConfirm
|
||||
|
|
|
@ -3,10 +3,16 @@
|
|||
<div class="mb-[8px] flex items-center gap-[8px]">
|
||||
<a-input v-model:model-value="moduleKeyword" :placeholder="t('apiTestDebug.searchTip')" allow-clear />
|
||||
<a-dropdown @select="handleSelect">
|
||||
<a-button type="primary">{{ t('apiTestDebug.newApi') }}</a-button>
|
||||
<a-button v-permission="['PROJECT_API_DEBUG:READ+ADD', 'PROJECT_API_DEBUG:READ+IMPORT']" type="primary">
|
||||
{{ t('apiTestDebug.newApi') }}
|
||||
</a-button>
|
||||
<template #content>
|
||||
<a-doption value="newApi">{{ t('apiTestDebug.newApi') }}</a-doption>
|
||||
<a-doption value="import">{{ t('apiTestDebug.importApi') }}</a-doption>
|
||||
<a-doption v-permission="['PROJECT_API_DEBUG:READ+ADD']" value="newApi">
|
||||
{{ t('apiTestDebug.newApi') }}
|
||||
</a-doption>
|
||||
<a-doption v-permission="['PROJECT_API_DEBUG:READ+IMPORT']" value="import">
|
||||
{{ t('apiTestDebug.importApi') }}
|
||||
</a-doption>
|
||||
</template>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
|
@ -23,7 +29,7 @@
|
|||
</MsButton>
|
||||
</a-tooltip>
|
||||
<popConfirm mode="add" :all-names="rootModulesName" parent-id="NONE" @add-finish="initModules">
|
||||
<MsButton type="icon" class="!mr-0 p-[2px]">
|
||||
<MsButton v-permission="['PROJECT_API_DEBUG:READ+ADD']" type="icon" class="!mr-0 p-[2px]">
|
||||
<MsIcon
|
||||
type="icon-icon_create_planarity"
|
||||
size="18"
|
||||
|
@ -56,7 +62,7 @@
|
|||
children: 'children',
|
||||
count: 'count',
|
||||
}"
|
||||
:draggable="true"
|
||||
:draggable="hasAnyPermission(['PROJECT_API_DEBUG:READ+UPDATE'])"
|
||||
:selectable="nodeSelectable"
|
||||
block-node
|
||||
title-tooltip-position="left"
|
||||
|
@ -82,6 +88,7 @@
|
|||
<template #extra="nodeData">
|
||||
<popConfirm
|
||||
v-if="nodeData.id !== 'root'"
|
||||
v-permission="['PROJECT_API_DEBUG:READ+UPDATE']"
|
||||
mode="rename"
|
||||
:parent-id="nodeData.id"
|
||||
:node-id="nodeData.id"
|
||||
|
@ -96,6 +103,7 @@
|
|||
<!-- 默认模块的 id 是root,默认模块不可编辑、不可添加子模块;API不可添加子模块 -->
|
||||
<popConfirm
|
||||
v-if="nodeData.id !== 'root' && nodeData.type !== 'API'"
|
||||
v-permission="['PROJECT_API_DEBUG:READ+ADD']"
|
||||
mode="add"
|
||||
:all-names="(nodeData.children || []).map((e: ModuleTreeNode) => e.name || '')"
|
||||
:parent-id="nodeData.id"
|
||||
|
@ -137,6 +145,7 @@
|
|||
import useModal from '@/hooks/useModal';
|
||||
import useAppStore from '@/store/modules/app';
|
||||
import { mapTree } from '@/utils';
|
||||
import { hasAnyPermission } from '@/utils/permission';
|
||||
|
||||
import { ModuleTreeNode } from '@/models/common';
|
||||
|
||||
|
@ -206,11 +215,13 @@
|
|||
{
|
||||
label: 'common.rename',
|
||||
eventTag: 'rename',
|
||||
permission: ['PROJECT_API_DEBUG:READ+UPDATE'],
|
||||
},
|
||||
{
|
||||
label: 'common.delete',
|
||||
eventTag: 'delete',
|
||||
danger: true,
|
||||
permission: ['PROJECT_API_DEBUG:READ+DELETE'],
|
||||
},
|
||||
];
|
||||
const renamePopVisible = ref(false);
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
v-model:active-tab="activeDebug"
|
||||
v-model:tabs="debugTabs"
|
||||
:limit="10"
|
||||
:readonly="!hasAnyPermission(['PROJECT_API_DEBUG:READ+ADD'])"
|
||||
at-least-one
|
||||
@add="addDebugTab"
|
||||
>
|
||||
|
@ -40,6 +41,11 @@
|
|||
:execute-api="executeDebug"
|
||||
:local-execute-api="localExecuteApiDebug"
|
||||
:upload-temp-file-api="uploadTempFile"
|
||||
:permission-map="{
|
||||
execute: 'PROJECT_API_DEBUG:READ+EXECUTE',
|
||||
update: 'PROJECT_API_DEBUG:READ+UPDATE',
|
||||
create: 'PROJECT_API_DEBUG:READ+ADD',
|
||||
}"
|
||||
@add-done="handleDebugAddDone"
|
||||
/>
|
||||
</div>
|
||||
|
@ -105,6 +111,7 @@
|
|||
import { useI18n } from '@/hooks/useI18n';
|
||||
import useModal from '@/hooks/useModal';
|
||||
import { parseCurlScript } from '@/utils';
|
||||
import { hasAnyPermission } from '@/utils/permission';
|
||||
|
||||
import { ExecuteBody } from '@/models/apiTest/debug';
|
||||
import { ModuleTreeNode } from '@/models/common';
|
||||
|
@ -352,7 +359,11 @@
|
|||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
let isLeaving = false;
|
||||
onBeforeRouteLeave((to, from, next) => {
|
||||
if (!isLeaving && debugTabs.value.some((tab) => tab.unSaved)) {
|
||||
if (
|
||||
!isLeaving &&
|
||||
debugTabs.value.some((tab) => tab.unSaved) &&
|
||||
hasAnyPermission(['PROJECT_API_DEBUG:READ+ADD', 'PROJECT_API_DEBUG:READ+UPDATE'])
|
||||
) {
|
||||
isLeaving = true;
|
||||
// 如果有未保存的调试则提示用户
|
||||
openModal({
|
||||
|
|
|
@ -25,6 +25,11 @@
|
|||
:update-api="updateDebug"
|
||||
:execute-api="executeDebug"
|
||||
:local-execute-api="localExecuteApiDebug"
|
||||
:permission-map="{
|
||||
execute: 'PROJECT_API_DEFINITION:READ+EXECUTE',
|
||||
update: 'PROJECT_API_DEFINITION:READ+UPDATE',
|
||||
create: 'PROJECT_API_DEFINITION:READ+ADD',
|
||||
}"
|
||||
is-definition
|
||||
@add-done="emit('addDone')"
|
||||
/>
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
:default-expand-all="isExpandAll"
|
||||
:expand-all="isExpandAll"
|
||||
:empty-text="t('caseManagement.caseReview.noReviews')"
|
||||
:draggable="!props.isModal"
|
||||
:draggable="!props.isModal && hasAnyPermission(['CASE_REVIEW:READ+UPDATE'])"
|
||||
:virtual-list-props="virtualListProps"
|
||||
:field-names="{
|
||||
title: 'name',
|
||||
|
@ -66,6 +66,7 @@
|
|||
<!-- 默认模块的 id 是root,默认模块不可编辑、不可添加子模块 -->
|
||||
<popConfirm
|
||||
v-if="nodeData.id !== 'root'"
|
||||
v-permission="['CASE_REVIEW:READ+ADD']"
|
||||
mode="add"
|
||||
:all-names="(nodeData.children || []).map((e: ModuleTreeNode) => e.name || '')"
|
||||
:parent-id="nodeData.id"
|
||||
|
@ -78,6 +79,7 @@
|
|||
</popConfirm>
|
||||
<popConfirm
|
||||
v-if="nodeData.id !== 'root'"
|
||||
v-permission="['CASE_REVIEW:READ+UPDATE']"
|
||||
mode="rename"
|
||||
:parent-id="nodeData.id"
|
||||
:node-id="nodeData.id"
|
||||
|
@ -110,6 +112,7 @@
|
|||
import useModal from '@/hooks/useModal';
|
||||
import useAppStore from '@/store/modules/app';
|
||||
import { mapTree } from '@/utils';
|
||||
import { hasAnyPermission } from '@/utils/permission';
|
||||
|
||||
import { ModuleTreeNode } from '@/models/common';
|
||||
|
||||
|
@ -183,11 +186,13 @@
|
|||
{
|
||||
label: 'common.rename',
|
||||
eventTag: 'rename',
|
||||
permission: ['CASE_REVIEW:READ+UPDATE'],
|
||||
},
|
||||
{
|
||||
label: 'common.delete',
|
||||
eventTag: 'delete',
|
||||
danger: true,
|
||||
permission: ['CASE_REVIEW:READ+DELETE'],
|
||||
},
|
||||
];
|
||||
const renamePopVisible = ref(false);
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
:node-more-actions="folderMoreActions"
|
||||
:expand-all="props.isExpandAll"
|
||||
:empty-text="t('project.fileManagement.noFolder')"
|
||||
:draggable="!props.isModal"
|
||||
:draggable="!props.isModal && hasAnyPermission(['PROJECT_FILE_MANAGEMENT:READ+UPDATE'])"
|
||||
:virtual-list-props="virtualListProps"
|
||||
:field-names="{
|
||||
title: 'name',
|
||||
|
@ -40,6 +40,7 @@
|
|||
<!-- 默认模块的 id 是root,默认模块不可编辑、不可添加子模块 -->
|
||||
<popConfirm
|
||||
v-if="nodeData.id !== 'root'"
|
||||
v-permission="['PROJECT_FILE_MANAGEMENT:READ+ADD']"
|
||||
mode="add"
|
||||
:all-names="(nodeData.children || []).map((e: ModuleTreeNode) => e.name || '')"
|
||||
:parent-id="nodeData.id"
|
||||
|
@ -52,6 +53,7 @@
|
|||
</popConfirm>
|
||||
<popConfirm
|
||||
v-if="nodeData.id !== 'root'"
|
||||
v-permission="['PROJECT_FILE_MANAGEMENT:READ+UPDATE']"
|
||||
mode="rename"
|
||||
:parent-id="nodeData.id"
|
||||
:node-id="nodeData.id"
|
||||
|
@ -84,6 +86,7 @@
|
|||
import useModal from '@/hooks/useModal';
|
||||
import useAppStore from '@/store/modules/app';
|
||||
import { mapTree } from '@/utils';
|
||||
import { hasAnyPermission } from '@/utils/permission';
|
||||
|
||||
import { ModuleTreeNode } from '@/models/common';
|
||||
|
||||
|
@ -130,11 +133,13 @@
|
|||
{
|
||||
label: 'project.fileManagement.rename',
|
||||
eventTag: 'rename',
|
||||
permission: ['PROJECT_FILE_MANAGEMENT:READ+UPDATE'],
|
||||
},
|
||||
{
|
||||
label: 'project.fileManagement.delete',
|
||||
eventTag: 'delete',
|
||||
danger: true,
|
||||
permission: ['PROJECT_FILE_MANAGEMENT:READ+DELETE'],
|
||||
},
|
||||
];
|
||||
const renamePopVisible = ref(false);
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
</MsButton>
|
||||
</a-tooltip>
|
||||
<a-dropdown trigger="click" @select="handleAddSelect">
|
||||
<MsButton type="icon" class="!mr-0 p-[2px]">
|
||||
<MsButton v-permission="['PROJECT_FILE_MANAGEMENT:READ+ADD']" type="icon" class="!mr-0 p-[2px]">
|
||||
<MsIcon
|
||||
type="icon-icon_create_planarity"
|
||||
size="18"
|
||||
|
@ -38,6 +38,7 @@
|
|||
</template>
|
||||
</a-dropdown>
|
||||
<popConfirm
|
||||
v-permission="['PROJECT_FILE_MANAGEMENT:READ+ADD']"
|
||||
mode="add"
|
||||
:all-names="rootModulesName"
|
||||
parent-id="none"
|
||||
|
|
|
@ -72,6 +72,7 @@
|
|||
:placeholder="t('system.log.operateTargetPlaceholder')"
|
||||
:panel-width="100"
|
||||
strictly
|
||||
label-path-mode
|
||||
class="filter-item"
|
||||
/>
|
||||
<a-input
|
||||
|
@ -122,7 +123,11 @@
|
|||
</a-tooltip>
|
||||
</template>
|
||||
<template #module="{ record }">
|
||||
{{ getModuleLocale(record.module) }}
|
||||
<a-tooltip :content="getModuleLocale(record.module)">
|
||||
<div class="one-line-text">
|
||||
{{ getModuleLocale(record.module) }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<template #type="{ record }">
|
||||
{{ t(typeOptions.find((e) => e.value === record.type)?.label || '') }}
|
||||
|
@ -339,7 +344,7 @@
|
|||
|
||||
const moduleOptions = ref<CascaderOption[]>([]);
|
||||
const moduleLocaleMap = ref<Record<string, string>>({});
|
||||
const { getPathMapByLevel, jumpRouteByMapKey } = usePathMap();
|
||||
const { getPathMapByLevel, jumpRouteByMapKey, findLocalePath } = usePathMap();
|
||||
|
||||
function initModuleOptions() {
|
||||
moduleOptions.value = getPathMapByLevel(props.mode, (e) => {
|
||||
|
@ -359,7 +364,9 @@
|
|||
*/
|
||||
function getModuleLocale(module: string) {
|
||||
try {
|
||||
return t(moduleLocaleMap.value[module] || '') || module;
|
||||
return findLocalePath(module)
|
||||
.map((e) => t(e) || module)
|
||||
.join('/');
|
||||
} catch (error) {
|
||||
return module;
|
||||
}
|
||||
|
@ -470,7 +477,7 @@
|
|||
title: 'system.log.operateTarget',
|
||||
dataIndex: 'module',
|
||||
slotName: 'module',
|
||||
width: 100,
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: 'system.log.operateType',
|
||||
|
@ -489,7 +496,7 @@
|
|||
title: 'system.log.time',
|
||||
dataIndex: 'createTime',
|
||||
fixed: 'right',
|
||||
width: 100,
|
||||
width: 120,
|
||||
sortable: {
|
||||
sortDirections: ['ascend', 'descend'],
|
||||
sorter: true,
|
||||
|
|
Loading…
Reference in New Issue