feat(系统设置): 系统_插件管理_上传成功_变更场景
This commit is contained in:
parent
b0d385bb4a
commit
6515a70886
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -94,6 +94,11 @@
|
|||
width: 960px;
|
||||
}
|
||||
}
|
||||
.ms-modal-small {
|
||||
.arco-modal {
|
||||
width: 580px;
|
||||
}
|
||||
}
|
||||
|
||||
/** 按钮 **/
|
||||
.arco-btn-primary {
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.99996 14C11.3137 14 14 11.3137 14 8.00002C14 4.68631 11.3137 2.00002 7.99996 2.00002C4.68625 2.00002 1.99996 4.68631 1.99996 8.00002C1.99996 11.3137 4.68625 14 7.99996 14ZM7.99996 15.3334C3.94987 15.3334 0.666626 12.0501 0.666626 8.00002C0.666626 3.94993 3.94987 0.666687 7.99996 0.666687C12.05 0.666687 15.3333 3.94993 15.3333 8.00002C15.3333 12.0501 12.05 15.3334 7.99996 15.3334ZM7.66662 10.6667H8.33329C8.51739 10.6667 8.66662 10.8159 8.66662 11V11.6667C8.66662 11.8508 8.51739 12 8.33329 12H7.66662C7.48253 12 7.33329 11.8508 7.33329 11.6667V11C7.33329 10.8159 7.48253 10.6667 7.66662 10.6667ZM5.36653 6.18783C5.375 6.11331 5.38368 6.05133 5.39256 6.00187C5.52252 5.27814 5.85165 4.74591 6.37997 4.40516C6.79374 4.13507 7.30217 4.00002 7.90528 4.00002C8.69775 4.00002 9.35608 4.19193 9.8803 4.57575C10.4045 4.95957 10.6666 5.52819 10.6666 6.28161C10.6666 6.74362 10.5527 7.13277 10.3247 7.44906C10.1915 7.64097 9.93553 7.88619 9.55683 8.18472L9.18339 8.47791C8.98001 8.63784 8.84502 8.82441 8.77839 9.03765C8.76026 9.09584 8.74433 9.20402 8.73059 9.36218C8.71564 9.53446 8.57143 9.66669 8.39851 9.66669H7.65224C7.46814 9.66668 7.3189 9.51745 7.3189 9.33335C7.3189 9.3231 7.31938 9.31285 7.32032 9.30264C7.36324 8.83871 7.40921 8.54514 7.45821 8.42194C7.54938 8.19271 7.78431 7.92884 8.16301 7.63031L8.54697 7.32645C8.6732 7.2305 9.32367 6.77245 9.32367 6.36691C9.32367 5.96136 9.25302 5.8122 9.0494 5.58962C8.84578 5.36705 8.38742 5.29541 7.97366 5.29541C7.56691 5.29541 7.21932 5.40343 7.04926 5.67708C6.97049 5.80382 6.90609 5.93903 6.85963 6.07698C6.84135 6.13125 6.82516 6.19953 6.81105 6.28182C6.78361 6.44184 6.64487 6.55882 6.48251 6.55882H5.69774C5.51364 6.55882 5.3644 6.40958 5.3644 6.22548C5.3644 6.2129 5.36511 6.20033 5.36653 6.18783Z" fill="#783887"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1,5 @@
|
|||
<svg width="60" height="60" viewBox="0 0 60 60" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="30" cy="30" r="30" fill="#E5F9EF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.33333 30C4.33333 44.1769 15.8232 55.6667 30 55.6667C44.1768 55.6667 55.6667 44.1769 55.6667 30C55.6667 15.8232 44.1768 4.33337 30 4.33337C15.8232 4.33337 4.33333 15.8232 4.33333 30Z" fill="#00C261"/>
|
||||
<path d="M42.5924 24.9124C43.2189 24.2859 43.2189 23.2702 42.5924 22.6437L41.4581 21.5094C40.8316 20.8829 39.8159 20.8829 39.1894 21.5094L26.4368 34.2607L21.7048 29.5302C21.0784 28.9038 20.0627 28.9038 19.4362 29.5302L18.3019 30.6646C17.6754 31.291 17.6754 32.3067 18.3019 32.9332L25.1078 39.7391C25.552 40.1833 26.1919 40.3125 26.7506 40.1279C27.1481 40.1183 27.5429 39.9619 27.8463 39.6585L42.5924 24.9124Z" fill="white"/>
|
||||
</svg>
|
After Width: | Height: | Size: 828 B |
|
@ -1,2 +1,2 @@
|
|||
// 上传类型
|
||||
export type UploadType = 'excel' | 'word' | 'pdf' | 'txt' | 'vedio' | 'sql' | 'csv' | 'zip' | 'xmind' | 'image';
|
||||
export type UploadType = 'excel' | 'word' | 'pdf' | 'txt' | 'vedio' | 'sql' | 'csv' | 'zip' | 'xmind' | 'image' | 'jar';
|
||||
|
|
|
@ -0,0 +1,100 @@
|
|||
/* eslint-disable no-restricted-syntax */
|
||||
import {
|
||||
type AppContext,
|
||||
type Component,
|
||||
type ComponentPublicInstance,
|
||||
createVNode,
|
||||
getCurrentInstance,
|
||||
render,
|
||||
type VNode,
|
||||
} from 'vue';
|
||||
|
||||
export type Components = Component;
|
||||
|
||||
export interface Options {
|
||||
visible?: boolean;
|
||||
onClose?: () => void;
|
||||
appendTo?: HTMLElement | string;
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
export interface CommandComponent1 {
|
||||
(options: Options): VNode;
|
||||
close: () => void;
|
||||
}
|
||||
|
||||
const getAppendToElement = (props: Options): HTMLElement => {
|
||||
let appendTo: HTMLElement | null = document.body;
|
||||
if (props.appendTo) {
|
||||
if (typeof props.appendTo === 'string') {
|
||||
appendTo = document.querySelector<HTMLElement>(props.appendTo);
|
||||
}
|
||||
if (props.appendTo instanceof HTMLElement) {
|
||||
appendTo = props.appendTo;
|
||||
}
|
||||
if (!(appendTo instanceof HTMLElement)) {
|
||||
appendTo = document.body;
|
||||
}
|
||||
}
|
||||
return appendTo;
|
||||
};
|
||||
|
||||
const initInstance = <T extends Components>(
|
||||
// eslint-disable-next-line no-shadow
|
||||
Component: T,
|
||||
props: Options,
|
||||
container: HTMLElement,
|
||||
appContext: AppContext | null = null
|
||||
) => {
|
||||
const vNode = createVNode(Component, props);
|
||||
vNode.appContext = appContext;
|
||||
render(vNode, container);
|
||||
|
||||
getAppendToElement(props).appendChild(container);
|
||||
return vNode;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
export const useCommandComponent = <T extends Components>(Component: T): CommandComponent1 => {
|
||||
const appContext = getCurrentInstance()?.appContext;
|
||||
if (appContext) {
|
||||
const currentProvides = (getCurrentInstance() as any)?.provides;
|
||||
Reflect.set(appContext, 'provides', { ...appContext.provides, ...currentProvides });
|
||||
}
|
||||
|
||||
const container = document.createElement('div');
|
||||
|
||||
const close = () => {
|
||||
render(null, container);
|
||||
container.parentNode?.removeChild(container);
|
||||
};
|
||||
|
||||
const CommandComponent = (options: Options): VNode => {
|
||||
if (!Reflect.has(options, 'visible')) {
|
||||
options.visible = true;
|
||||
}
|
||||
if (typeof options.onClose !== 'function') {
|
||||
options.onClose = close;
|
||||
} else {
|
||||
const originOnClose = options.onClose;
|
||||
options.onClose = () => {
|
||||
originOnClose();
|
||||
close();
|
||||
};
|
||||
}
|
||||
const vNode = initInstance<T>(Component, options, container, appContext);
|
||||
const vm = vNode.component?.proxy as ComponentPublicInstance<Options>;
|
||||
for (const prop in options) {
|
||||
if (Reflect.has(options, prop) && !Reflect.has(vm.$props, prop)) {
|
||||
vm[prop as keyof ComponentPublicInstance] = options[prop];
|
||||
}
|
||||
}
|
||||
return vNode;
|
||||
};
|
||||
|
||||
CommandComponent.close = close;
|
||||
|
||||
return CommandComponent;
|
||||
};
|
||||
|
||||
export default useCommandComponent;
|
|
@ -0,0 +1,18 @@
|
|||
import { computed } from 'vue';
|
||||
|
||||
export function useDialog(props: any, emits: any) {
|
||||
const dialogVisible = computed<boolean>({
|
||||
get() {
|
||||
return props.visible;
|
||||
},
|
||||
set(visible) {
|
||||
emits('update:visible', visible);
|
||||
if (!visible) {
|
||||
emits('close');
|
||||
}
|
||||
},
|
||||
});
|
||||
return { dialogVisible };
|
||||
}
|
||||
|
||||
export default useDialog;
|
|
@ -15,6 +15,64 @@ const getPluginList = () => {
|
|||
applicationScene: 'string',
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
organizationList: [
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 1',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 2',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 3',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 4',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
],
|
||||
children: [
|
||||
{
|
||||
id: '1-1-1',
|
||||
|
@ -28,6 +86,64 @@ const getPluginList = () => {
|
|||
applicationScene: 'string',
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
organizationList: [
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 1',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 2',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 3',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 4',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -43,6 +159,64 @@ const getPluginList = () => {
|
|||
applicationScene: 'string',
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
organizationList: [
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 1',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 2',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 3',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 4',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
],
|
||||
children: [
|
||||
{
|
||||
id: '2-1-1',
|
||||
|
@ -56,6 +230,64 @@ const getPluginList = () => {
|
|||
applicationScene: 'string',
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
organizationList: [
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 1',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 2',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 3',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
{
|
||||
id: 'string',
|
||||
num: 0,
|
||||
name: '组织 4',
|
||||
description: 'blabla',
|
||||
createTime: 0,
|
||||
updateTime: 0,
|
||||
createUser: 'string',
|
||||
updateUser: 'string',
|
||||
deleted: true,
|
||||
deleteUser: 'string',
|
||||
deleteTime: 0,
|
||||
enable: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
export interface organizationItem {
|
||||
id?: string;
|
||||
num: number;
|
||||
name: string;
|
||||
description: string;
|
||||
createTime: number;
|
||||
updateTime: number;
|
||||
createUser: string;
|
||||
updateUser: string;
|
||||
deleted: boolean;
|
||||
deleteUser: string;
|
||||
deleteTime: number;
|
||||
enable: boolean;
|
||||
}
|
||||
export type organizationList = organizationItem[];
|
||||
|
||||
export interface PluginItem {
|
||||
id: string;
|
||||
name: string;
|
||||
|
@ -10,6 +26,7 @@ export interface PluginItem {
|
|||
applicationScene: string;
|
||||
createUser: string;
|
||||
updateUser: string;
|
||||
organizationList: organizationList;
|
||||
children?: PluginItem[];
|
||||
}
|
||||
export type PluginList = PluginItem[];
|
||||
|
@ -28,3 +45,10 @@ export interface SceneItem {
|
|||
svg: string;
|
||||
}
|
||||
export type SceneList = SceneItem[];
|
||||
|
||||
export type PluginForm = {
|
||||
pluginName: string;
|
||||
organize: string | number;
|
||||
describe: string;
|
||||
organizeGroup: Array<string | number>;
|
||||
};
|
||||
|
|
|
@ -24,6 +24,9 @@
|
|||
import { useI18n } from '@/hooks/useI18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
const props = defineProps<{
|
||||
setCurrent: (step: number) => void;
|
||||
}>();
|
||||
const sceneList = ref<SceneList>([
|
||||
{
|
||||
name: 'system.plugin.interfaceTest',
|
||||
|
@ -44,6 +47,7 @@
|
|||
item.isSelected = false;
|
||||
});
|
||||
currentItem.isSelected = true;
|
||||
props.setCurrent(2);
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -53,7 +57,10 @@
|
|||
@apply flex flex-row items-center rounded border-solid py-2;
|
||||
&--active {
|
||||
/* stylelint-disable-next-line color-function-notation */
|
||||
background-color: rgba(var(--primary-5), 0.1);
|
||||
background-color: rgb(var(--primary-1));
|
||||
}
|
||||
&:hover {
|
||||
background-color: rgb(var(--primary-1));
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -17,18 +17,36 @@
|
|||
</a-row>
|
||||
</div>
|
||||
<ms-base-table v-bind="propsRes" v-on="propsEvent">
|
||||
<template #organization="{ record }">
|
||||
<a-tag
|
||||
v-for="org of record.organizationList.slice(0, 2)"
|
||||
:key="org.id"
|
||||
class="mr-[4px] border-[rgb(var(--primary-5))] bg-transparent !text-[rgb(var(--primary-5))]"
|
||||
bordered
|
||||
>
|
||||
{{ org.name }}
|
||||
</a-tag>
|
||||
<a-tag
|
||||
v-show="record.organizationList.length > 2"
|
||||
class="mr-[4px] border-[rgb(var(--primary-5))] bg-transparent !text-[rgb(var(--primary-5))]"
|
||||
bordered
|
||||
>
|
||||
+{{ record.organizationList.length - 2 }}
|
||||
</a-tag>
|
||||
</template>
|
||||
<template #action="{ record }">
|
||||
<MsButton>{{ t('system.plugin.edit') }}</MsButton>
|
||||
<MsButton>{{ t('system.plugin.ChangeScene') }}</MsButton>
|
||||
<MsButton @click="update(record)">{{ t('system.plugin.edit') }}</MsButton>
|
||||
<MsButton @click="changeScene(record)">{{ t('system.plugin.ChangeScene') }}</MsButton>
|
||||
<MsTableMoreAction :list="tableActions" @select="handleSelect($event, record)"></MsTableMoreAction>
|
||||
</template>
|
||||
</ms-base-table>
|
||||
<uploadModel :visible="uploadVisible" @cancel="uploadVisible = false" />
|
||||
<UploadModel :visible="uploadVisible" @cancel="uploadVisible = false" @upload="uploadPlugin" @success="okHandler" />
|
||||
<UpdatePluginModal ref="updateModalRef" :visible="updateVisible" @cancel="updateVisible = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted } from 'vue';
|
||||
import { ref, onMounted, reactive } from 'vue';
|
||||
import { useI18n } from '@/hooks/useI18n';
|
||||
import MsBaseTable from '@/components/pure/ms-table/base-table.vue';
|
||||
import useTable from '@/components/pure/ms-table/useTable';
|
||||
|
@ -37,19 +55,38 @@
|
|||
import type { ActionsItem } from '@/components/pure/ms-table-more-action/types';
|
||||
import { getPluginList } from '@/api/modules/system/pluginManger';
|
||||
import MsButton from '@/components/pure/ms-button/index.vue';
|
||||
import uploadModel from './uploadModel.vue';
|
||||
import UploadModel from './uploadModel.vue';
|
||||
import UpdatePluginModal from './updatePluginModal.vue';
|
||||
import uploadSuccessModal from './uploadSuccessModal.vue';
|
||||
import sceneChangeModal from './sceneChangeModal.vue';
|
||||
import { useCommandComponent } from '@/hooks/useCommandComponent';
|
||||
|
||||
const { t } = useI18n();
|
||||
export type Options = {
|
||||
title: string;
|
||||
visible: boolean;
|
||||
onClose?: () => void;
|
||||
};
|
||||
const columns: MsTableColumn = [
|
||||
{
|
||||
title: 'system.plugin.tableColunmName',
|
||||
dataIndex: 'name',
|
||||
width: 200,
|
||||
fixed: 'left',
|
||||
},
|
||||
{
|
||||
title: 'system.plugin.tableColunmDescription',
|
||||
dataIndex: 'describe',
|
||||
},
|
||||
{
|
||||
title: 'system.plugin.tableColunmApplicationScene',
|
||||
dataIndex: 'applicationScene',
|
||||
},
|
||||
{
|
||||
title: 'system.user.tableColunmOrg',
|
||||
slotName: 'organization',
|
||||
dataIndex: 'organizationList',
|
||||
},
|
||||
{
|
||||
title: 'system.plugin.tableColunmJarPackage',
|
||||
dataIndex: 'jarPackage',
|
||||
|
@ -59,8 +96,16 @@
|
|||
dataIndex: 'version',
|
||||
},
|
||||
{
|
||||
title: 'system.plugin.tableColunmApplicationScene',
|
||||
dataIndex: 'applicationScene',
|
||||
title: 'system.plugin.tableColunmAuthorization',
|
||||
dataIndex: 'authorizationType',
|
||||
},
|
||||
{
|
||||
title: 'system.plugin.tableColunmCreatedBy',
|
||||
dataIndex: 'createdBy',
|
||||
},
|
||||
{
|
||||
title: 'system.plugin.tableColunmExpirationDate',
|
||||
dataIndex: 'expirationDate',
|
||||
},
|
||||
{
|
||||
title: 'system.plugin.tableColunmActions',
|
||||
|
@ -78,7 +123,7 @@
|
|||
];
|
||||
const { propsRes, propsEvent, loadList, setKeyword } = useTable(getPluginList, {
|
||||
columns,
|
||||
scroll: { y: 'auto' },
|
||||
scroll: { y: 'auto', x: 1800 },
|
||||
selectable: false,
|
||||
showSelectAll: false,
|
||||
});
|
||||
|
@ -91,7 +136,8 @@
|
|||
},
|
||||
]);
|
||||
const uploadVisible = ref<boolean>(false);
|
||||
|
||||
const updateVisible = ref<boolean>(false);
|
||||
const updateModalRef = ref();
|
||||
onMounted(async () => {
|
||||
setKeyword(keyword.value);
|
||||
await loadList();
|
||||
|
@ -117,6 +163,38 @@
|
|||
function uploadPlugin() {
|
||||
uploadVisible.value = true;
|
||||
}
|
||||
function update(record: any) {
|
||||
updateVisible.value = true;
|
||||
updateModalRef.value.title = record.name;
|
||||
}
|
||||
const myUploadSuccessDialog = useCommandComponent(uploadSuccessModal);
|
||||
const mySceneChangeDialog = useCommandComponent(sceneChangeModal);
|
||||
const uploadSuccessOptions = reactive({
|
||||
title: '上传插件',
|
||||
visible: false,
|
||||
onClose: () => {
|
||||
myUploadSuccessDialog.close();
|
||||
},
|
||||
});
|
||||
const sceneChangeOptions = reactive({
|
||||
title: '场景变更-(插件名称)',
|
||||
visible: false,
|
||||
onClose: () => {
|
||||
myUploadSuccessDialog.close();
|
||||
},
|
||||
});
|
||||
|
||||
const dialogOpen = (options: Options) => {
|
||||
options.visible = true;
|
||||
myUploadSuccessDialog(uploadSuccessOptions);
|
||||
};
|
||||
const okHandler = () => {
|
||||
dialogOpen(uploadSuccessOptions);
|
||||
};
|
||||
const changeScene = () => {
|
||||
sceneChangeOptions.visible = true;
|
||||
mySceneChangeDialog(sceneChangeOptions);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
<template>
|
||||
<a-modal v-model:visible="dialogVisible" class="ms-modal-form ms-modal-small" title-align="start">
|
||||
<template #title> {{ title }} </template>
|
||||
<a-alert type="warning" :closable="true">
|
||||
<div> 插件内容与应用场景不一致时插件功能将无法启用,请谨慎操作! </div>
|
||||
</a-alert>
|
||||
<div class="mt-6 flex flex-col">
|
||||
<div
|
||||
v-for="(item, index) in sceneList"
|
||||
:key="index"
|
||||
class="ms-ls-row my-2"
|
||||
:class="{ 'ms-ls-row--active': item.isSelected }"
|
||||
@click="selectHandler(item)"
|
||||
>
|
||||
<div class="ms-icon-list ml-4 mr-5">
|
||||
<svg-icon :width="'64px'" :height="'46px'" :name="item.svg" />
|
||||
</div>
|
||||
<div class="flex flex-col justify-center">
|
||||
<div class="mb-1 font-medium">
|
||||
<span>{{ t(item.name) }}</span>
|
||||
<a-tag
|
||||
v-show="item.isSelected"
|
||||
size="small"
|
||||
class="ml-[4px] border-[rgb(var(--primary-4))] bg-transparent px-1 text-xs !text-[rgb(var(--primary-4))]"
|
||||
>当前场景</a-tag
|
||||
>
|
||||
</div>
|
||||
<div class="text-sm">{{ t(item.description) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import { useDialog } from '@/hooks/useDialog';
|
||||
import type { SceneItem, SceneList } from '@/models/system/plugin';
|
||||
|
||||
import { useI18n } from '@/hooks/useI18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
const props = defineProps<{
|
||||
visible: boolean;
|
||||
title?: string;
|
||||
}>();
|
||||
const emits = defineEmits<{
|
||||
(event: 'update:visible', visible: boolean): void;
|
||||
(event: 'close'): void;
|
||||
}>();
|
||||
const sceneList = ref<SceneList>([
|
||||
{
|
||||
name: 'system.plugin.interfaceTest',
|
||||
description: 'system.plugin.interfaceTestDescribe',
|
||||
isSelected: true,
|
||||
svg: 'apitest',
|
||||
},
|
||||
{
|
||||
name: 'system.plugin.projectManger',
|
||||
description: 'system.plugin.projectMangerDescribe',
|
||||
isSelected: false,
|
||||
svg: 'promanger',
|
||||
},
|
||||
]);
|
||||
const { dialogVisible } = useDialog(props, emits);
|
||||
const selectHandler = (currentItem: SceneItem) => {
|
||||
sceneList.value.forEach((item: SceneItem) => {
|
||||
item.isSelected = false;
|
||||
});
|
||||
currentItem.isSelected = true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.ms-ls-row {
|
||||
border-width: 1px;
|
||||
@apply flex flex-row items-center rounded border-solid py-2;
|
||||
&--active {
|
||||
background-color: rgb(var(--primary-1));
|
||||
}
|
||||
&:hover {
|
||||
background-color: rgb(var(--primary-1));
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<a-steps v-bind="attrs" @change="changeCurrent">
|
||||
<a-steps :current="currentStep" @change="changeCurrent">
|
||||
<a-step v-for="item of stepList" :key="item.title">{{ t(item.title) }}</a-step>
|
||||
</a-steps>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, useAttrs } from 'vue';
|
||||
import { ref, watchEffect } from 'vue';
|
||||
import { useI18n } from '@/hooks/useI18n';
|
||||
import type { StepList } from '@/models/system/plugin';
|
||||
|
||||
|
@ -15,10 +15,13 @@
|
|||
stepList: StepList;
|
||||
setCurrent: (step: number) => void;
|
||||
}>();
|
||||
const attrs = useAttrs();
|
||||
const currentStep = ref(1);
|
||||
const changeCurrent = (step: number) => {
|
||||
props.setCurrent(step);
|
||||
};
|
||||
watchEffect(() => {
|
||||
currentStep.value = props.current;
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
|
|
@ -0,0 +1,105 @@
|
|||
<template>
|
||||
<a-modal
|
||||
v-model:visible="updateVisible"
|
||||
class="ms-modal-form ms-modal-small"
|
||||
title-align="start"
|
||||
width="540px"
|
||||
@ok="handleOk"
|
||||
@cancel="handleCancel"
|
||||
>
|
||||
<template #title> {{ t('system.plugin.updateTitle', { name: title }) }}</template>
|
||||
<a-row class="grid-demo">
|
||||
<a-form :model="form" size="small" :style="{ width: '600px' }" layout="vertical">
|
||||
<!-- <a-col :span="24"> -->
|
||||
<a-form-item field="pluginName" :label="t('system.plugin.name')" asterisk-position="end">
|
||||
<a-input
|
||||
v-model="form.pluginName"
|
||||
size="small"
|
||||
:placeholder="t('system.plugin.defaultJarNameTip')"
|
||||
allow-clear
|
||||
/>
|
||||
</a-form-item>
|
||||
<!-- </a-col> -->
|
||||
<a-form-item field="organize" :label="t('system.plugin.appOrganize')" asterisk-position="end">
|
||||
<a-radio-group v-model="form.organize" size="small">
|
||||
<a-radio value="1">全部组织</a-radio>
|
||||
<a-radio value="2">指定组织</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
v-if="form.organize === '2'"
|
||||
field="organize"
|
||||
:label="t('system.plugin.selectOrganization')"
|
||||
asterisk-position="end"
|
||||
:rules="[{ required: true, message: t('system.plugin.selectOriginize') }]"
|
||||
>
|
||||
<a-select v-model="form.organizeGroup" multiple :placeholder="t('system.plugin.selectOriginize')" allow-clear>
|
||||
<a-option v-for="item of originizeList" :key="item.value">{{ item.label }}</a-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item field="describe" :label="t('system.plugin.description')" asterisk-position="end">
|
||||
<a-textarea
|
||||
v-model="form.describe"
|
||||
size="small"
|
||||
:placeholder="t('system.plugin.pluginDescription')"
|
||||
allow-clear
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-row>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, watchEffect, reactive, onMounted } from 'vue';
|
||||
import { useI18n } from '@/hooks/useI18n';
|
||||
import type { PluginForm } from '@/models/system/plugin';
|
||||
|
||||
const { t } = useI18n();
|
||||
const props = defineProps<{
|
||||
visible: boolean;
|
||||
}>();
|
||||
const emit = defineEmits<{
|
||||
(e: 'cancel'): void;
|
||||
}>();
|
||||
const title = ref<string>();
|
||||
const originizeList = ref([
|
||||
{
|
||||
label: '组织一',
|
||||
value: '1',
|
||||
},
|
||||
{
|
||||
label: '组织二',
|
||||
value: '2',
|
||||
},
|
||||
]);
|
||||
const form = reactive<PluginForm>({
|
||||
pluginName: '',
|
||||
organize: '',
|
||||
describe: '',
|
||||
organizeGroup: [],
|
||||
});
|
||||
|
||||
const updateVisible = ref<boolean>(false);
|
||||
watchEffect(() => {
|
||||
updateVisible.value = props.visible;
|
||||
});
|
||||
const handleCancel = () => {
|
||||
emit('cancel');
|
||||
};
|
||||
|
||||
const handleOk = () => {
|
||||
handleCancel();
|
||||
};
|
||||
const initData = () => {
|
||||
form.pluginName = title.value as string;
|
||||
};
|
||||
onMounted(() => {
|
||||
initData();
|
||||
});
|
||||
defineExpose({
|
||||
title,
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -1,17 +1,28 @@
|
|||
<template>
|
||||
<a-modal
|
||||
v-model:visible="pluginVisible"
|
||||
class="ms-modal-form ms-modal-small"
|
||||
title-align="start"
|
||||
width="500px"
|
||||
:footer="false"
|
||||
@ok="handleOk"
|
||||
@cancel="handleCancel"
|
||||
>
|
||||
<template #title> {{ t('system.plugin.uploadPlugin') }} </template>
|
||||
<div>
|
||||
<StepProgress :step-list="stepList" :current="currentStep" small :set-current="setCurrent" changeable />
|
||||
<SceneList />
|
||||
<SceneList v-show="currentStep === 1" :set-current="setCurrent" />
|
||||
<uploadPlugin v-show="currentStep === 2" />
|
||||
</div>
|
||||
<template #footer>
|
||||
<div v-show="currentStep === 2" class="float-right">
|
||||
<a-space>
|
||||
<a-button type="secondary" @click="handleCancel">{{ t('system.plugin.pluginCancel') }}</a-button>
|
||||
<a-button type="secondary" @click="preStep">{{ t('system.plugin.pluginPreStep') }}</a-button>
|
||||
<a-button type="secondary" @click="saveAndAddPlugin">{{ t('system.plugin.saveAndAdd') }}</a-button>
|
||||
<a-button type="primary" @click="saveConfirm('confirm')">{{ t('system.plugin.pluginConfirm') }}</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
</template>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
|
@ -21,9 +32,11 @@
|
|||
import type { StepList } from '@/models/system/plugin';
|
||||
import StepProgress from './stepProgress.vue';
|
||||
import SceneList from './SceneList.vue';
|
||||
import uploadPlugin from './uploadPlugin.vue';
|
||||
|
||||
const { t } = useI18n();
|
||||
const currentStep = ref<number>(1);
|
||||
|
||||
const stepList = ref<StepList>([
|
||||
{
|
||||
name: '选择应用场景',
|
||||
|
@ -37,8 +50,10 @@
|
|||
},
|
||||
]);
|
||||
const pluginVisible = ref(false);
|
||||
const emit = defineEmits<{
|
||||
const emits = defineEmits<{
|
||||
(e: 'cancel'): void;
|
||||
(e: 'upload'): void;
|
||||
(e: 'success'): void;
|
||||
}>();
|
||||
const props = defineProps<{
|
||||
visible: boolean;
|
||||
|
@ -47,7 +62,7 @@
|
|||
pluginVisible.value = props.visible;
|
||||
});
|
||||
const handleCancel = () => {
|
||||
emit('cancel');
|
||||
emits('cancel');
|
||||
};
|
||||
|
||||
const handleOk = () => {
|
||||
|
@ -56,6 +71,19 @@
|
|||
const setCurrent = (step: number) => {
|
||||
currentStep.value = step;
|
||||
};
|
||||
const preStep = () => {
|
||||
currentStep.value = currentStep.value === 2 ? 1 : 2;
|
||||
};
|
||||
const saveConfirm = (flag: string) => {
|
||||
if (flag === 'confirm') {
|
||||
handleCancel();
|
||||
emits('success');
|
||||
}
|
||||
};
|
||||
const saveAndAddPlugin = () => {
|
||||
saveConfirm('saveAndAdd');
|
||||
preStep();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
<style scoped lang="less"></style>
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
<template>
|
||||
<div class="form grid grid-cols-1">
|
||||
<a-row class="grid-demo">
|
||||
<a-form :model="form" size="small" :style="{ width: '600px' }" layout="vertical">
|
||||
<div class="relative">
|
||||
<a-form-item field="pluginName" :label="t('system.plugin.name')" asterisk-position="end">
|
||||
<a-input
|
||||
v-model="form.pluginName"
|
||||
size="small"
|
||||
:placeholder="t('system.plugin.defaultJarNameTip')"
|
||||
allow-clear
|
||||
/>
|
||||
<span class="absolute right-0 top-1 flex items-center">
|
||||
<span class="float-left">{{ t('system.plugin.getPlugin') }}</span>
|
||||
<a-tooltip :content="t('system.plugin.infoTip')">
|
||||
<a class="float-left mx-2" href="javascript:;">
|
||||
<svg-icon :width="'16px'" :height="'16px'" :name="'infotip'"
|
||||
/></a>
|
||||
</a-tooltip>
|
||||
</span>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<a-form-item field="organize" :label="t('system.plugin.appOrganize')" asterisk-position="end">
|
||||
<a-radio-group v-model="form.organize" size="small">
|
||||
<a-radio value="1">全部组织</a-radio>
|
||||
<a-radio value="2">指定组织</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
v-if="form.organize === '2'"
|
||||
field="organize"
|
||||
:label="t('system.plugin.selectOrganization')"
|
||||
asterisk-position="end"
|
||||
:rules="[{ required: true, message: t('system.plugin.selectOriginize') }]"
|
||||
>
|
||||
<a-select v-model="form.organizeGroup" multiple :placeholder="t('system.plugin.selectOriginize')" allow-clear>
|
||||
<a-option v-for="item of originizeList" :key="item.value">{{ item.label }}</a-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item field="describe" :label="t('system.plugin.description')" asterisk-position="end">
|
||||
<a-textarea
|
||||
v-model="form.describe"
|
||||
size="small"
|
||||
:placeholder="t('system.plugin.pluginDescription')"
|
||||
allow-clear
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-row>
|
||||
<MsUpload
|
||||
action="/"
|
||||
accept="excel"
|
||||
main-text="system.user.importModalDragtext"
|
||||
:sub-text="t('system.plugin.supportFormat')"
|
||||
:show-file-list="false"
|
||||
></MsUpload>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive } from 'vue';
|
||||
import MsUpload from '@/components/pure/ms-upload/index.vue';
|
||||
import { useI18n } from '@/hooks/useI18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
const form = reactive({
|
||||
pluginName: '',
|
||||
organize: '1',
|
||||
describe: '',
|
||||
organizeGroup: [],
|
||||
});
|
||||
const originizeList = ref([
|
||||
{
|
||||
label: '组织一',
|
||||
value: '1',
|
||||
},
|
||||
{
|
||||
label: '组织二',
|
||||
value: '2',
|
||||
},
|
||||
]);
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,71 @@
|
|||
<template>
|
||||
<a-modal
|
||||
v-model:visible="dialogVisible"
|
||||
class="ms-modal-form ms-modal-small"
|
||||
title-align="start"
|
||||
:footer="false"
|
||||
@open="BeforeOpen"
|
||||
>
|
||||
<template #title> {{ title }} </template>
|
||||
<div class="flex w-full flex-col items-center justify-center">
|
||||
<div class="mb-5"><svg-icon :width="'60px'" :height="'60px'" :name="'success'" /></div>
|
||||
<div class="font-semibold">{{ t('system.plugin.uploadSuccess') }}</div>
|
||||
<div class="my-1 text-sm"
|
||||
><a class="mx-1" href="javascript:;">{{ countDown }}</a>
|
||||
<span class="text-slate-400">{{ t('system.plugin.afterSecond') }}</span></div
|
||||
>
|
||||
<div class="mb-6 text-sm">
|
||||
{{ t('system.plugin.uploadSuccessAfter') }}
|
||||
<a href="javascript:;">{{ t('system.plugin.ServiceIntegration') }}</a>
|
||||
{{ t('system.plugin.platformAuthentication') }}
|
||||
</div>
|
||||
<div>
|
||||
<a-space>
|
||||
<a-button type="primary">{{ t('system.plugin.continueUpload') }}</a-button>
|
||||
<a-button type="outline">{{ t('system.plugin.ServiceIntegration') }}</a-button>
|
||||
<a-button type="secondary">{{ t('system.plugin.backPluginList') }}</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<a-checkbox v-model="isTip" class="text-sm">{{ t('system.plugin.nextNoTips') }}</a-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import { useDialog } from '@/hooks/useDialog';
|
||||
import { useI18n } from '@/hooks/useI18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
const props = defineProps<{
|
||||
visible: boolean;
|
||||
title?: string;
|
||||
}>();
|
||||
const emits = defineEmits<{
|
||||
(event: 'update:visible', visible: boolean): void;
|
||||
(event: 'close'): void;
|
||||
}>();
|
||||
const { dialogVisible } = useDialog(props, emits);
|
||||
const isTip = ref(false);
|
||||
const countDown = ref<number>(5);
|
||||
const timer = ref<any>(null);
|
||||
const BeforeOpen = () => {
|
||||
timer.value = setInterval(() => {
|
||||
if (countDown.value > 1) {
|
||||
--countDown.value;
|
||||
} else {
|
||||
clearInterval(timer.value);
|
||||
emits('close');
|
||||
countDown.value = 5;
|
||||
}
|
||||
}, 1000);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
a {
|
||||
color: rgb(var(--primary-5));
|
||||
}
|
||||
</style>
|
|
@ -12,11 +12,21 @@ export default {
|
|||
'system.plugin.tableColunmCreateTime': 'CreateTime',
|
||||
'system.plugin.tableColunmUpdateTime': 'UpdateTime',
|
||||
'system.plugin.tableColunmApplicationScene': 'ApplicationScene',
|
||||
'system.plugin.tableColunmOrg': 'Application Organization',
|
||||
'system.plugin.tableColunmAuthorization': 'Authorization Type',
|
||||
'system.plugin.tableColunmCreatedBy': 'Created By',
|
||||
'system.plugin.tableColunmExpirationDate': 'Expiration Date',
|
||||
'system.plugin.tableColunmActions': 'Actions',
|
||||
'system.plugin.ChangeScene': 'Change Scene',
|
||||
'system.plugin.SelectApplicationScene': 'Select Application Scene',
|
||||
'system.plugin.interfaceTest': 'Interface Test',
|
||||
'system.plugin.projectManger': 'Project Manger',
|
||||
'system.plugin.name': 'Name',
|
||||
'system.plugin.defaultJarNameTip': 'The default is the package name',
|
||||
'system.plugin.appOrganize': 'Application Organization',
|
||||
'system.plugin.description': 'Description',
|
||||
'system.plugin.pluginDescription': 'Please describe the plug-in',
|
||||
'system.plugin.supportFormat': 'Only JAR format files are supported and the file size does not exceed 50M',
|
||||
'system.plugin.interfaceTestDescribe': 'Plug-ins for protocol classes recommend choosing an interface test',
|
||||
'system.plugin.projectMangerDescribe': 'The project management platform class recommends choosing project management',
|
||||
'system.resourcePool.disablePoolConfirm': 'Confirm',
|
||||
|
@ -27,7 +37,23 @@ export default {
|
|||
'This resource pool has been used, and related tests will stop immediately after deletion, please operate with caution!',
|
||||
'system.resourcePool.deletePoolContentUnuse': 'This resource pool is not in use. Are you sure to delete it?',
|
||||
'system.resourcePool.deletePoolConfirm': 'Confirm',
|
||||
'system.resourcePool.deletePoolCancel': 'Cancel',
|
||||
'system.plugin.pluginConfirm': 'Confirm',
|
||||
'system.plugin.pluginCancel': 'Cancel',
|
||||
'system.plugin.pluginPreStep': 'Previous Step',
|
||||
'system.plugin.saveAndAdd': 'Save & Continue',
|
||||
'system.plugin.updateTitle': 'Update Plugin(`name`)',
|
||||
'system.plugin.selectOriginize': 'Please Choose Organization',
|
||||
'system.plugin.selectOrganization': 'Choose Organization',
|
||||
'system.plugin.infoTip': 'Jump to the Github download plug-in',
|
||||
'system.plugin.getPlugin': 'Gets the open source plug-in',
|
||||
'system.plugin.afterSecond': 'Return to the list of plug-ins after the second',
|
||||
'system.plugin.uploadSuccess': 'Upload Success!',
|
||||
'system.plugin.uploadSuccessAfter': 'After successful upload, must arrive',
|
||||
'system.plugin.ServiceIntegration': 'Service Integration',
|
||||
'system.plugin.platformAuthentication': 'Configuration platform authentication information can be effective',
|
||||
'system.plugin.continueUpload': 'Continue Upload',
|
||||
'system.plugin.backPluginList': 'Back to list of plugins',
|
||||
'system.plugin.nextNoTips': 'No more tips next time',
|
||||
'system.resourcePool.deletePoolSuccess': 'Deleted successfully',
|
||||
'system.resourcePool.detailDesc': 'Description',
|
||||
'system.resourcePool.detailUrl': 'Current site URL',
|
||||
|
|
|
@ -12,11 +12,21 @@ export default {
|
|||
'system.plugin.tableColunmCreateTime': '创建时间',
|
||||
'system.plugin.tableColunmUpdateTime': '更新时间',
|
||||
'system.plugin.tableColunmApplicationScene': '应用场景',
|
||||
'system.plugin.tableColunmOrg': '应用组织',
|
||||
'system.plugin.tableColunmAuthorization': '授权类型',
|
||||
'system.plugin.tableColunmCreatedBy': '创建人',
|
||||
'system.plugin.tableColunmExpirationDate': '到期时间',
|
||||
'system.plugin.tableColunmActions': '操作',
|
||||
'system.plugin.ChangeScene': '场景变更',
|
||||
'system.plugin.SelectApplicationScene': '选择应用场景',
|
||||
'system.plugin.interfaceTest': '接口测试',
|
||||
'system.plugin.projectManger': '项目管理',
|
||||
'system.plugin.name': '插件名称',
|
||||
'system.plugin.defaultJarNameTip': '默认为包名',
|
||||
'system.plugin.appOrganize': '应用组织',
|
||||
'system.plugin.description': '描述',
|
||||
'system.plugin.pluginDescription': '请对该插件进行描述',
|
||||
'system.plugin.supportFormat': '只支持JAR格式文件,文件大小不超过50M',
|
||||
'system.plugin.interfaceTestDescribe': '协议类的插件建议选择接口测试',
|
||||
'system.plugin.projectMangerDescribe': '项目管理平台类建议选择项目管理',
|
||||
'system.resourcePool.disablePoolConfirm': '确认禁用',
|
||||
|
@ -26,7 +36,23 @@ export default {
|
|||
'system.resourcePool.deletePoolContentUsed': '该资源池已被使用,删除后相关测试会立即停止,请谨慎操作!',
|
||||
'system.resourcePool.deletePoolContentUnuse': '该资源池未被使用,是否确认删除?',
|
||||
'system.resourcePool.deletePoolConfirm': '确认删除',
|
||||
'system.resourcePool.deletePoolCancel': '取消',
|
||||
'system.plugin.pluginConfirm': '确认',
|
||||
'system.plugin.pluginCancel': '取消',
|
||||
'system.plugin.pluginPreStep': '上一步',
|
||||
'system.plugin.saveAndAdd': '保存并继续添加',
|
||||
'system.plugin.updateTitle': '更新插件({name})',
|
||||
'system.plugin.selectOriginize': '请选择组织',
|
||||
'system.plugin.selectOrganization': '选择组织',
|
||||
'system.plugin.infoTip': '跳转至Github下载插件',
|
||||
'system.plugin.getPlugin': '获取开源插件',
|
||||
'system.plugin.afterSecond': '秒后回到插件列表',
|
||||
'system.plugin.uploadSuccess': '上传成功!',
|
||||
'system.plugin.uploadSuccessAfter': '上传成功后,须到',
|
||||
'system.plugin.ServiceIntegration': '服务集成',
|
||||
'system.plugin.platformAuthentication': '配置平台认证信息方可生效',
|
||||
'system.plugin.continueUpload': '继续上传',
|
||||
'system.plugin.backPluginList': '回到插件列表',
|
||||
'system.plugin.nextNoTips': '下次不再提示',
|
||||
'system.resourcePool.deletePoolSuccess': '删除成功',
|
||||
'system.resourcePool.detailDesc': '描述',
|
||||
'system.resourcePool.detailUrl': '当前站点 URL',
|
||||
|
|
Loading…
Reference in New Issue