Compare commits
155 Commits
2.231114.7
...
2.231207.9
| Author | SHA1 | Date | |
|---|---|---|---|
| 37eb798c4a | |||
| 6536e8baba | |||
|
|
90a34302a8 | ||
| 84bbeda7fc | |||
| cbefc04ac9 | |||
|
|
7564d6c6ab | ||
|
|
36ac9d0a5f | ||
|
|
be6e91390e | ||
|
|
f9016492be | ||
|
|
dd8dc63eab | ||
|
|
6303aecb47 | ||
|
|
0216c253d8 | ||
| 1076663511 | |||
|
|
8495192b83 | ||
|
|
88840cf88e | ||
|
|
97e453d880 | ||
|
|
dfc4a849f6 | ||
|
|
20b6c5c10a | ||
|
|
ab2154003e | ||
|
|
b2b837623a | ||
|
|
fb45c3fc10 | ||
|
|
d64c0f9e5e | ||
|
|
27cc02e0d6 | ||
|
|
12643cac12 | ||
|
|
205e07af45 | ||
|
|
a1443ebb95 | ||
|
|
b6d22014ce | ||
|
|
9abeb7be97 | ||
|
|
96d6cfcfa2 | ||
| c16a1675f0 | |||
|
|
bddba89d1e | ||
|
|
eb49b4d29a | ||
|
|
9d0daca765 | ||
|
|
cc234ee081 | ||
|
|
e23438d910 | ||
|
|
4fccb85353 | ||
|
|
3a8f6964ae | ||
|
|
5f89732a61 | ||
|
|
8a7698b58f | ||
|
|
805785ccb7 | ||
|
|
f2d5379506 | ||
| 134406a82c | |||
| 19f4f2e1a1 | |||
| fffc40b4a3 | |||
|
|
95fbce6b0e | ||
|
|
1784941670 | ||
|
|
38c3964f5c | ||
| f9ab845feb | |||
| 48247bbb25 | |||
|
|
7c66d15e58 | ||
|
|
1c83d7ca46 | ||
|
|
ab79f577af | ||
| 14a8af033c | |||
|
|
572551dd76 | ||
|
|
c8e8cca410 | ||
|
|
642fff876a | ||
|
|
8e1edc680e | ||
| 6d9322f483 | |||
| 4cd896abfe | |||
|
|
ac93726a0f | ||
|
|
534f261bd4 | ||
|
|
a22213eae3 | ||
|
|
c21fbd133a | ||
|
|
55981f8936 | ||
|
|
252ed66ff8 | ||
|
|
44c9f0879b | ||
|
|
9f16fb3df6 | ||
|
|
a41936a199 | ||
|
|
dff94061e2 | ||
|
|
37d59bf7da | ||
|
|
7be72be2f8 | ||
|
|
ec21656385 | ||
|
|
c1d513bc82 | ||
|
|
a6542145e3 | ||
|
|
c5c3c9be71 | ||
|
|
ac14a207c4 | ||
|
|
a991cf3370 | ||
|
|
af53fe1d89 | ||
|
|
8370598e17 | ||
|
|
5094b91f28 | ||
|
|
4c06ddd5f9 | ||
|
|
133affa551 | ||
|
|
03a3899377 | ||
|
|
9f5f35c79d | ||
|
|
44ee479b32 | ||
| 62a15150b6 | |||
|
|
5accdd1b31 | ||
|
|
f3fc415338 | ||
| 018196eb88 | |||
| 3e29706b26 | |||
|
|
627e579729 | ||
| 030254db4e | |||
|
|
0e7b6fa6e4 | ||
| 57f126b5f2 | |||
| 8fa758d747 | |||
|
|
2030509cbb | ||
|
|
10a48af368 | ||
|
|
5101b1bae3 | ||
|
|
c590482fa4 | ||
|
|
c1c6500df2 | ||
|
|
12499e78ea | ||
|
|
6ada29bc9b | ||
|
|
0f988f65e4 | ||
|
|
c8a53c0c0f | ||
|
|
d870f12daf | ||
| a960e77fc6 | |||
| f32d5dd06e | |||
|
|
f9bd9f7292 | ||
|
|
6ecd98650b | ||
| c49da78996 | |||
| c4f3eabc71 | |||
|
|
3a6059263f | ||
|
|
a104fbf7eb | ||
|
|
407e15ca3c | ||
|
|
60adbce55d | ||
|
|
5e8049c3b3 | ||
|
|
129c9085d5 | ||
|
|
3bc4fafde7 | ||
|
|
2e165fbcff | ||
|
|
474502b45b | ||
|
|
081523db42 | ||
|
|
21cd314c46 | ||
|
|
5c792b9ac5 | ||
|
|
14eabfe1fe | ||
|
|
1e5874d7e7 | ||
|
|
e9054e320f | ||
| 9fdd322757 | |||
|
|
4c9388ffcb | ||
| dc4d91eb41 | |||
| 86e3795693 | |||
| 03411444e4 | |||
| f401ded041 | |||
|
|
010cb6d45b | ||
|
|
bb577bef0b | ||
|
|
69bd3879b1 | ||
|
|
ae6feb15a2 | ||
|
|
b8feb6fa35 | ||
| bb92be64fd | |||
| ce556f8a57 | |||
|
|
6f246c5800 | ||
|
|
6ceee6498f | ||
|
|
261806ccda | ||
|
|
bfc0afdb14 | ||
|
|
1238dc3a35 | ||
|
|
7d5ee27bee | ||
|
|
b9f8426b3f | ||
| a5d380209e | |||
| 65c6571c79 | |||
|
|
2ef4261e1b | ||
| 84e7e2ef9f | |||
|
|
5980c7d881 | ||
|
|
de6271df00 | ||
|
|
4f18fe2552 | ||
|
|
b569fa57b6 | ||
|
|
c1a0c6f208 |
@@ -11,7 +11,7 @@ VITE_APP_NAME = "Core Network EMS"
|
|||||||
VITE_APP_CODE = "CN EMS"
|
VITE_APP_CODE = "CN EMS"
|
||||||
|
|
||||||
# 应用版本
|
# 应用版本
|
||||||
VITE_APP_VERSION = "2.2311.7"
|
VITE_APP_VERSION = "2.231204.9"
|
||||||
|
|
||||||
# 接口基础URL地址-不带/后缀
|
# 接口基础URL地址-不带/后缀
|
||||||
VITE_API_BASE_URL = "/omc-api"
|
VITE_API_BASE_URL = "/omc-api"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ VITE_APP_NAME = "Core Network EMS"
|
|||||||
VITE_APP_CODE = "CN EMS"
|
VITE_APP_CODE = "CN EMS"
|
||||||
|
|
||||||
# 应用版本
|
# 应用版本
|
||||||
VITE_APP_VERSION = "2.231114.7"
|
VITE_APP_VERSION = "2.2312.9"
|
||||||
|
|
||||||
# 接口基础URL地址-不带/后缀
|
# 接口基础URL地址-不带/后缀
|
||||||
VITE_API_BASE_URL = "/omc-api"
|
VITE_API_BASE_URL = "/omc-api"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" href="/favicon.ico" />
|
<link rel="icon" href="/favicon.ico" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title> </title>
|
<title>loading...</title>
|
||||||
<link rel="preload" href="/loading.js" as="script">
|
<link rel="preload" href="/loading.js" as="script">
|
||||||
<script async src="/loading.js"></script>
|
<script async src="/loading.js"></script>
|
||||||
<link rel="preload" href="/config.js" as="script">
|
<link rel="preload" href="/config.js" as="script">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "ems_frontend_vue3",
|
"name": "ems_frontend_vue3",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "核心网管理系统",
|
"description": "核心网管理平台",
|
||||||
"author": "TsMask",
|
"author": "TsMask",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.0.0"
|
"node": ">=18.0.0"
|
||||||
@@ -12,11 +12,14 @@
|
|||||||
"preview": "vite preview"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ant-design-vue/pro-layout": "^3.2.5",
|
"antdv-pro-layout": "^3.2.6",
|
||||||
"@ant-design/icons-vue": "^7.0.1",
|
"@ant-design/icons-vue": "^7.0.1",
|
||||||
"@codemirror/lang-javascript": "^6.2.1",
|
"@codemirror/lang-javascript": "^6.2.1",
|
||||||
"@codemirror/merge": "^6.1.2",
|
"@codemirror/merge": "^6.1.2",
|
||||||
"@codemirror/theme-one-dark": "^6.1.2",
|
"@codemirror/theme-one-dark": "^6.1.2",
|
||||||
|
"@tato30/vue-pdf": "^1.8.1",
|
||||||
|
"@vueuse/components": "^10.6.1",
|
||||||
|
"@vueuse/core": "^10.6.1",
|
||||||
"ant-design-vue": "^3.2.20",
|
"ant-design-vue": "^3.2.20",
|
||||||
"codemirror": "^6.0.1",
|
"codemirror": "^6.0.1",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
@@ -30,6 +33,7 @@
|
|||||||
"vue-codemirror": "^6.1.1",
|
"vue-codemirror": "^6.1.1",
|
||||||
"vue-i18n": "^9.5.0",
|
"vue-i18n": "^9.5.0",
|
||||||
"vue-router": "^4.2.5",
|
"vue-router": "^4.2.5",
|
||||||
|
"vue3-smooth-dnd": "^0.0.6",
|
||||||
"xlsx": "^0.18.5"
|
"xlsx": "^0.18.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
BIN
public/alarmHelp/en/20002.xlsx
Normal file
BIN
public/alarmHelp/en/20003.xlsx
Normal file
BIN
public/alarmHelp/en/20004.xlsx
Normal file
BIN
public/alarmHelp/en/20005.xlsx
Normal file
BIN
public/alarmHelp/en/30001.xlsx
Normal file
BIN
public/alarmHelp/en/30002.xlsx
Normal file
BIN
public/alarmHelp/en/30003.xlsx
Normal file
BIN
public/alarmHelp/en/30004.xlsx
Normal file
BIN
public/alarmHelp/en/30005.xlsx
Normal file
BIN
public/alarmHelp/en/30006.xlsx
Normal file
BIN
public/alarmHelp/en/30007.xlsx
Normal file
BIN
public/alarmHelp/en/30008.xlsx
Normal file
BIN
public/alarmHelp/en/40001.xlsx
Normal file
BIN
public/alarmHelp/en/40002.xlsx
Normal file
BIN
public/alarmHelp/en/all.xlsx
Normal file
BIN
public/alarmHelp/zh/20003.xlsx
Normal file
BIN
public/alarmHelp/zh/30001.xlsx
Normal file
BIN
public/alarmHelp/zh/30005.xlsx
Normal file
BIN
public/alarmHelp/zh/all.xlsx
Normal file
@@ -1,16 +1,27 @@
|
|||||||
/**
|
/**
|
||||||
* config 非Nginx部署可使用的配置参数
|
* =============== Zh ===============
|
||||||
* Configuration parameters available for non Nginx deployments using config
|
* - Nginx部署
|
||||||
|
* 删除loading.js同级下同名文件,Nginx代理地址: /omc-api
|
||||||
|
*
|
||||||
|
* - 非Nginx部署
|
||||||
|
* 请将当前文件与loading.js同级,将host变量值修改为数据服务访问地址
|
||||||
|
* !!!注意: 修改当前文件后,建议关闭浏览器后重新访问
|
||||||
|
*
|
||||||
|
* =============== En ===============
|
||||||
|
* - Nginx Deployment
|
||||||
|
* Delete the file with the same name under the same level of loading.js, Nginx proxy address: /omc-api
|
||||||
|
*
|
||||||
|
* - Non-Nginx Deployment
|
||||||
|
* Please make the current file the same level as the loading.js, change the host variable value to the data service access address
|
||||||
|
* !!! Note: After modifying the current file, it is recommended to revisit it after closing the browser.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
(function () {
|
(function () {
|
||||||
// host = ip:prot
|
// host = ip:prot
|
||||||
const host = "192.168.2.166:3030";
|
const host = '192.168.8.100:3030';
|
||||||
|
|
||||||
// Service Address 服务地址
|
// Service Address 服务地址
|
||||||
const baseUrl = `http://${host}`
|
sessionStorage.setItem(baseUrl, `http://${host}`);
|
||||||
sessionStorage.setItem("baseUrl", baseUrl)
|
// websocket Address
|
||||||
|
sessionStorage.setItem(wsUrl, `ws://${host}`);
|
||||||
// websocket Address
|
|
||||||
const wsUrl = `ws://${host}`
|
|
||||||
sessionStorage.setItem("wsUrl", wsUrl)
|
|
||||||
})();
|
})();
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 227 B |
@@ -155,22 +155,30 @@
|
|||||||
}
|
}
|
||||||
</style>`;
|
</style>`;
|
||||||
|
|
||||||
|
const lang = localStorage.getItem('cache:local:i18n');
|
||||||
|
// 根据浏览器选择语言
|
||||||
|
// if (!lang) {
|
||||||
|
// let preferredLanguage = navigator.language;
|
||||||
|
// if (preferredLanguage.indexOf('-')) {
|
||||||
|
// preferredLanguage = preferredLanguage.replace('-', '_');
|
||||||
|
// }
|
||||||
|
// localStorage.setItem('cache:local:i18n', preferredLanguage);
|
||||||
|
// }
|
||||||
|
|
||||||
let loadInfo = {
|
let loadInfo = {
|
||||||
title: '正在加载资源',
|
title: '正在加载资源',
|
||||||
titleSub: '初次加载资源可能需要较多时间',
|
titleSub: '初次加载资源可能需要较多时间',
|
||||||
msg: '请耐心等待',
|
msg: '请耐心等待',
|
||||||
};
|
};
|
||||||
document.title = "管理系统";
|
// document.title = "AGrandEMS";
|
||||||
|
|
||||||
// 判断选择语言
|
|
||||||
const lang = localStorage.getItem('cache:local:i18n') || 'zh_CN';
|
|
||||||
if (lang === 'en_US') {
|
if (lang === 'en_US') {
|
||||||
loadInfo = {
|
loadInfo = {
|
||||||
title: 'Loading Resources',
|
title: 'Loading Resources',
|
||||||
titleSub: 'Loading resources for the first time may take a lot of time',
|
titleSub: 'Loading resources for the first time may take a lot of time',
|
||||||
msg: 'Please be patient',
|
msg: 'Please be patient',
|
||||||
};
|
};
|
||||||
document.title = "Managerial System";
|
// document.title = "AGrandEMS";
|
||||||
}
|
}
|
||||||
|
|
||||||
const divStr = `
|
const divStr = `
|
||||||
|
|||||||
@@ -86,4 +86,10 @@ body .ant-pro-basicLayout {
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translate(-2em, 0);
|
transform: translate(-2em, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**强制改表格边距 */
|
||||||
|
.ant-table.ant-table-small .ant-table-tbody > tr > td,
|
||||||
|
.ant-table.ant-table-small .ant-table-thead > tr > th {
|
||||||
|
padding: 6px !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import {
|
|||||||
RESULT_CODE_SUCCESS,
|
RESULT_CODE_SUCCESS,
|
||||||
RESULT_MSG_ERROR,
|
RESULT_MSG_ERROR,
|
||||||
} from '@/constants/result-constants';
|
} from '@/constants/result-constants';
|
||||||
import { request } from '@/plugins/http-fetch';
|
import { language, request } from '@/plugins/http-fetch';
|
||||||
import { parseObjLineToHump } from '@/utils/parse-utils';
|
import { parseObjLineToHump } from '@/utils/parse-utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,7 +48,7 @@ export async function updateConfig(tag: string, data: Record<string, any>) {
|
|||||||
delete result.data;
|
delete result.data;
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import {
|
|||||||
RESULT_MSG_ERROR,
|
RESULT_MSG_ERROR,
|
||||||
RESULT_MSG_SUCCESS,
|
RESULT_MSG_SUCCESS,
|
||||||
} from '@/constants/result-constants';
|
} from '@/constants/result-constants';
|
||||||
import { request } from '@/plugins/http-fetch';
|
import { language, request } from '@/plugins/http-fetch';
|
||||||
import { parseFirstLower, parseObjLineToHump } from '@/utils/parse-utils';
|
import { parseObjLineToHump } from '@/utils/parse-utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询配置参数标签栏
|
* 查询配置参数标签栏
|
||||||
@@ -57,6 +57,7 @@ async function getParamConfigInfo(
|
|||||||
params: {
|
params: {
|
||||||
SQL: `SELECT param_json FROM param_config WHERE ne_type = '${neType}' AND top_tag='${topTag}'`,
|
SQL: `SELECT param_json FROM param_config WHERE ne_type = '${neType}' AND top_tag='${topTag}'`,
|
||||||
},
|
},
|
||||||
|
timeout: 1_000,
|
||||||
}),
|
}),
|
||||||
// 获取对应信息
|
// 获取对应信息
|
||||||
request({
|
request({
|
||||||
@@ -65,6 +66,7 @@ async function getParamConfigInfo(
|
|||||||
params: {
|
params: {
|
||||||
ne_id: neId,
|
ne_id: neId,
|
||||||
},
|
},
|
||||||
|
timeout: 1_000,
|
||||||
}),
|
}),
|
||||||
]).then(resArr => {
|
]).then(resArr => {
|
||||||
let wrRule: Record<string, any> = {};
|
let wrRule: Record<string, any> = {};
|
||||||
@@ -333,7 +335,7 @@ export async function getParamConfigInfoForm(
|
|||||||
result.data.data = dataArray;
|
result.data.data = dataArray;
|
||||||
|
|
||||||
// 无数据时,用于新增
|
// 无数据时,用于新增
|
||||||
result.data.dataRule = { title: `Index-0`, key: 0, record : [ruleArr]} ;
|
result.data.dataRule = { title: `Index-0`, key: 0, record: ruleArr };
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -455,7 +457,7 @@ export async function updateNeConfigReload(neType: string, neId: string) {
|
|||||||
} else if (str.indexOf('success') !== -1) {
|
} else if (str.indexOf('success') !== -1) {
|
||||||
delete result.data;
|
delete result.data;
|
||||||
} else {
|
} else {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import {
|
|||||||
RESULT_CODE_SUCCESS,
|
RESULT_CODE_SUCCESS,
|
||||||
RESULT_MSG_ERROR,
|
RESULT_MSG_ERROR,
|
||||||
} from '@/constants/result-constants';
|
} from '@/constants/result-constants';
|
||||||
import { request } from '@/plugins/http-fetch';
|
import { language, request } from '@/plugins/http-fetch';
|
||||||
import { parseObjLineToHump } from '@/utils/parse-utils';
|
import { parseObjLineToHump } from '@/utils/parse-utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -117,7 +117,7 @@ export async function sendNeSoftware(data: Record<string, any>) {
|
|||||||
delete result.data;
|
delete result.data;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -136,7 +136,7 @@ export async function runNeSoftware(data: Record<string, any>) {
|
|||||||
delete result.data;
|
delete result.data;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -155,7 +155,7 @@ export async function backNeSoftware(data: Record<string, any>) {
|
|||||||
delete result.data;
|
delete result.data;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import {
|
|||||||
RESULT_MSG_ERROR,
|
RESULT_MSG_ERROR,
|
||||||
RESULT_MSG_SUCCESS,
|
RESULT_MSG_SUCCESS,
|
||||||
} from '@/constants/result-constants';
|
} from '@/constants/result-constants';
|
||||||
import { request } from '@/plugins/http-fetch';
|
import { language, request } from '@/plugins/http-fetch';
|
||||||
import { parseObjLineToHump } from '@/utils/parse-utils';
|
import { parseObjLineToHump } from '@/utils/parse-utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -63,7 +63,7 @@ export async function getAlarmSet() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Object.keys(resultData).length === 0) {
|
if (Object.keys(resultData).length === 0) {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR, data: {} };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: {} };
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
code: RESULT_CODE_SUCCESS,
|
code: RESULT_CODE_SUCCESS,
|
||||||
@@ -117,7 +117,7 @@ export async function updateAlarmSet(data: Record<string, any>) {
|
|||||||
}
|
}
|
||||||
// 无变更时
|
// 无变更时
|
||||||
if (resultNum === 0) {
|
if (resultNum === 0) {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR, data: 0 };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: 0 };
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
code: RESULT_CODE_SUCCESS,
|
code: RESULT_CODE_SUCCESS,
|
||||||
@@ -183,7 +183,7 @@ export async function updateForwardSet(data: Record<string, any>) {
|
|||||||
delete result.data;
|
delete result.data;
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -77,3 +77,15 @@ export function getSysConf() {
|
|||||||
method: 'get',
|
method: 'get',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转存上传文件到静态资源
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export function transferStaticFile(data: Record<string, any>) {
|
||||||
|
return request({
|
||||||
|
url: `/transferStaticFile`,
|
||||||
|
method: 'post',
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import {
|
|||||||
RESULT_MSG_ERROR,
|
RESULT_MSG_ERROR,
|
||||||
RESULT_MSG_SUCCESS,
|
RESULT_MSG_SUCCESS,
|
||||||
} from '@/constants/result-constants';
|
} from '@/constants/result-constants';
|
||||||
import { request } from '@/plugins/http-fetch';
|
import { language, request } from '@/plugins/http-fetch';
|
||||||
import { parseObjLineToHump } from '@/utils/parse-utils';
|
import { parseObjLineToHump } from '@/utils/parse-utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -53,7 +53,7 @@ export async function getLogSet() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Object.keys(resultData).length === 0) {
|
if (Object.keys(resultData).length === 0) {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR, data: {} };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: {} };
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -100,7 +100,7 @@ export async function updateLogSet(data: Record<string, any>) {
|
|||||||
}
|
}
|
||||||
// 无变更时
|
// 无变更时
|
||||||
if (resultNum === 0) {
|
if (resultNum === 0) {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR, data: 0 };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: 0 };
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
code: RESULT_CODE_SUCCESS,
|
code: RESULT_CODE_SUCCESS,
|
||||||
@@ -161,7 +161,7 @@ export async function updateFtpLogSet(data: Record<string, any>) {
|
|||||||
delete result.data;
|
delete result.data;
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@@ -216,7 +216,7 @@ export async function updateRemoteOut(data: Record<string, any>) {
|
|||||||
delete result.data;
|
delete result.data;
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@@ -249,7 +249,7 @@ export async function exportLog(query: Record<string, any>) {
|
|||||||
order begin_time,end_time`;
|
order begin_time,end_time`;
|
||||||
}
|
}
|
||||||
if (!querySQL) {
|
if (!querySQL) {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: [] };
|
||||||
}
|
}
|
||||||
// 发起请求
|
// 发起请求
|
||||||
const result = await request({
|
const result = await request({
|
||||||
@@ -286,7 +286,7 @@ export async function backupLog(logType: string) {
|
|||||||
result.data = v;
|
result.data = v;
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: 0 };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import {
|
|||||||
RESULT_CODE_SUCCESS,
|
RESULT_CODE_SUCCESS,
|
||||||
RESULT_MSG_ERROR,
|
RESULT_MSG_ERROR,
|
||||||
} from '@/constants/result-constants';
|
} from '@/constants/result-constants';
|
||||||
import { request } from '@/plugins/http-fetch';
|
import { language, request } from '@/plugins/http-fetch';
|
||||||
import { parseObjLineToHump } from '@/utils/parse-utils';
|
import { parseObjLineToHump } from '@/utils/parse-utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -55,7 +55,7 @@ export async function updateOperationSet(data: Record<string, any>) {
|
|||||||
delete result.data;
|
delete result.data;
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export async function getMMLByNE(neType: string) {
|
|||||||
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/mml_system`,
|
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/mml_system`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
SQL: `select * from mml_system where ne_type = '${neType}'`,
|
SQL: `select * from mml_system where ne_type = '${neType}' and status = 'Active'`,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
// 解析数据
|
// 解析数据
|
||||||
@@ -36,18 +36,18 @@ export async function getMMLByNE(neType: string) {
|
|||||||
export async function sendMMlByNE(
|
export async function sendMMlByNE(
|
||||||
neType: string,
|
neType: string,
|
||||||
neId: string,
|
neId: string,
|
||||||
cmdStr: string
|
cmdArr: string[]
|
||||||
) {
|
) {
|
||||||
// 发起请求
|
// 发起请求
|
||||||
const result = await request({
|
const result = await request({
|
||||||
url: `/api/rest/operationManagement/v1/elementType/${neType}/objectType/mml?ne_id=${neId}`,
|
url: `/api/rest/operationManagement/v1/elementType/${neType}/objectType/mml?ne_id=${neId}`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: { mml: [cmdStr] },
|
data: { mml: cmdArr },
|
||||||
timeout: 180_000,
|
timeout: 180_000,
|
||||||
});
|
});
|
||||||
// 解析数据
|
// 解析数据
|
||||||
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
|
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
|
||||||
result.data = result.data.data[0];
|
result.data = result.data.data;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export async function getMMLByOMC() {
|
|||||||
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/mml_command`,
|
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/mml_command`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
SQL: `select * from mml_command where ne_type = 'OMC'`,
|
SQL: `select * from mml_command where ne_type = 'OMC' and status = 'Active'`,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
// 解析数据
|
// 解析数据
|
||||||
@@ -31,17 +31,17 @@ export async function getMMLByOMC() {
|
|||||||
* @param cmdStr 命令串
|
* @param cmdStr 命令串
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export async function sendMMlByOMC(neId: string, cmdStr: string) {
|
export async function sendMMlByOMC(neId: string, cmdArr: string[]) {
|
||||||
// 发起请求
|
// 发起请求
|
||||||
const result = await request({
|
const result = await request({
|
||||||
url: `/api/rest/operationManagement/v1/elementType/OMC/objectType/mml?ne_id=${neId}`,
|
url: `/api/rest/operationManagement/v1/elementType/OMC/objectType/mml?ne_id=${neId}`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: { mml: [cmdStr] },
|
data: { mml: cmdArr },
|
||||||
timeout: 180_000,
|
timeout: 180_000,
|
||||||
});
|
});
|
||||||
// 解析数据
|
// 解析数据
|
||||||
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
|
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
|
||||||
result.data = result.data.data[0];
|
result.data = result.data.data;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export async function getMMLByUDM() {
|
|||||||
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/mml_subscriber`,
|
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/mml_subscriber`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
SQL: `select * from mml_subscriber where ne_type = 'UDM'`,
|
SQL: `select * from mml_subscriber where ne_type = 'UDM' and status = 'Active'`,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
// 解析数据
|
// 解析数据
|
||||||
@@ -31,17 +31,17 @@ export async function getMMLByUDM() {
|
|||||||
* @param cmdStr 命令串
|
* @param cmdStr 命令串
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export async function sendMMlByUDM(neId: string, cmdStr: string) {
|
export async function sendMMlByUDM(neId: string, cmdArr: string[]) {
|
||||||
// 发起请求
|
// 发起请求
|
||||||
const result = await request({
|
const result = await request({
|
||||||
url: `/api/rest/operationManagement/v1/elementType/UDM/objectType/mml?ne_id=${neId}`,
|
url: `/api/rest/operationManagement/v1/elementType/UDM/objectType/mml?ne_id=${neId}`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: { mml: [cmdStr] },
|
data: { mml: cmdArr },
|
||||||
timeout: 180_000,
|
timeout: 180_000,
|
||||||
});
|
});
|
||||||
// 解析数据
|
// 解析数据
|
||||||
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
|
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
|
||||||
result.data = result.data.data[0];
|
result.data = result.data.data;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import {
|
|||||||
RESULT_CODE_SUCCESS,
|
RESULT_CODE_SUCCESS,
|
||||||
RESULT_MSG_ERROR,
|
RESULT_MSG_ERROR,
|
||||||
} from '@/constants/result-constants';
|
} from '@/constants/result-constants';
|
||||||
import { request } from '@/plugins/http-fetch';
|
import { language, request } from '@/plugins/http-fetch';
|
||||||
import { parseObjLineToHump } from '@/utils/parse-utils';
|
import { parseObjLineToHump } from '@/utils/parse-utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -86,7 +86,7 @@ export async function logoutSession(id: string) {
|
|||||||
delete result.data;
|
delete result.data;
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { request } from '@/plugins/http-fetch';
|
|||||||
*/
|
*/
|
||||||
export function exportAuth(query: Record<string, any>) {
|
export function exportAuth(query: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/rest/udmUserManage/v1/authExport',
|
url: '/ne/udm/auth/export',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: query,
|
data: query,
|
||||||
responseType: 'blob',
|
responseType: 'blob',
|
||||||
@@ -20,9 +20,9 @@ export function exportAuth(query: Record<string, any>) {
|
|||||||
* @param data 表单数据对象
|
* @param data 表单数据对象
|
||||||
* @returns object
|
* @returns object
|
||||||
*/
|
*/
|
||||||
export function importAuthData(neId: string, data: FormData) {
|
export function importAuthData(data: FormData) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/authImport/${neId}`,
|
url: `/ne/udm/auth/import`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data,
|
data,
|
||||||
dataType: 'form-data',
|
dataType: 'form-data',
|
||||||
@@ -36,7 +36,7 @@ export function importAuthData(neId: string, data: FormData) {
|
|||||||
*/
|
*/
|
||||||
export function listAuth(query: Record<string, any>) {
|
export function listAuth(query: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/rest/udmUserManage/v1/auths',
|
url: '/ne/udm/auth/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: query,
|
params: query,
|
||||||
});
|
});
|
||||||
@@ -49,8 +49,8 @@ export function listAuth(query: Record<string, any>) {
|
|||||||
*/
|
*/
|
||||||
export function loadAuth(neId: string) {
|
export function loadAuth(neId: string) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/authSave/${neId}`,
|
url: `/ne/udm/auth/resetData/${neId}`,
|
||||||
method: 'post',
|
method: 'put',
|
||||||
timeout: 180_000,
|
timeout: 180_000,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -62,7 +62,7 @@ export function loadAuth(neId: string) {
|
|||||||
*/
|
*/
|
||||||
export function getAuth(neId: string, imsi: string) {
|
export function getAuth(neId: string, imsi: string) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/auth/${neId}/${imsi}`,
|
url: `/ne/udm/auth/${neId}/${imsi}`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -74,7 +74,7 @@ export function getAuth(neId: string, imsi: string) {
|
|||||||
*/
|
*/
|
||||||
export function updateAuth(data: Record<string, any>) {
|
export function updateAuth(data: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/auth/${data.neId}`,
|
url: `/ne/udm/auth/${data.neId}`,
|
||||||
method: 'put',
|
method: 'put',
|
||||||
data: data,
|
data: data,
|
||||||
});
|
});
|
||||||
@@ -87,7 +87,7 @@ export function updateAuth(data: Record<string, any>) {
|
|||||||
*/
|
*/
|
||||||
export function addAuth(data: Record<string, any>) {
|
export function addAuth(data: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/auth/${data.neId}`,
|
url: `/ne/udm/auth/${data.neId}`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data,
|
data: data,
|
||||||
});
|
});
|
||||||
@@ -98,9 +98,9 @@ export function addAuth(data: Record<string, any>) {
|
|||||||
* @param data 鉴权对象
|
* @param data 鉴权对象
|
||||||
* @returns object
|
* @returns object
|
||||||
*/
|
*/
|
||||||
export function batchAuth( data: Record<string, any>) {
|
export function batchAuth(data: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/auth/${data.neID}/${data.num}`,
|
url: `/ne/udm/auth/${data.neID}/${data.num}`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data,
|
data: data,
|
||||||
});
|
});
|
||||||
@@ -113,13 +113,11 @@ export function batchAuth( data: Record<string, any>) {
|
|||||||
*/
|
*/
|
||||||
export function delAuth(neId: string, data: Record<string, any>) {
|
export function delAuth(neId: string, data: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/auth/${neId}/${data.imsi}`,
|
url: `/ne/udm/auth/${neId}/${data.imsi}`,
|
||||||
method: 'delete',
|
method: 'delete',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除鉴权
|
* 批量删除鉴权
|
||||||
* @param data 鉴权对象
|
* @param data 鉴权对象
|
||||||
@@ -127,7 +125,7 @@ export function delAuth(neId: string, data: Record<string, any>) {
|
|||||||
*/
|
*/
|
||||||
export function batchDelAuth(data: Record<string, any>) {
|
export function batchDelAuth(data: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/auth/${data.neID}/${data.imsi}/${data.num}`,
|
url: `/ne/udm/auth/${data.neID}/${data.imsi}/${data.num}`,
|
||||||
method: 'delete',
|
method: 'delete',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,5 +26,8 @@ export async function listBase5G(query: Record<string, any>) {
|
|||||||
data.total = rows.length;
|
data.total = rows.length;
|
||||||
data.rows = rows;
|
data.rows = rows;
|
||||||
}
|
}
|
||||||
|
// 模拟数据
|
||||||
|
// data.rows =[{"address":"192.168.1.137:38412","id":"217","name":"","ueNum":0}]
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,5 +26,17 @@ export async function listIMS(query: Record<string, any>) {
|
|||||||
data.total = rows.length;
|
data.total = rows.length;
|
||||||
data.rows = rows;
|
data.rows = rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 测试数据
|
||||||
|
// data.rows = [
|
||||||
|
// {
|
||||||
|
// activeTime: '2023-11-29 17:04:54',
|
||||||
|
// barring: 0,
|
||||||
|
// impu: 'sip:12307551232@ims.mnc000.mcc460.3gppnetwork.org',
|
||||||
|
// imsi: '460001230000002',
|
||||||
|
// msisdn: '12307551232',
|
||||||
|
// regState: 1,
|
||||||
|
// },
|
||||||
|
// ];
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|||||||
39
src/api/neUser/n3iwf.ts
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
||||||
|
import { request } from '@/plugins/http-fetch';
|
||||||
|
import { parseObjLineToHump } from '@/utils/parse-utils';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询列表
|
||||||
|
* @param query 查询参数
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export async function listN3iwf(query: Record<string, any>) {
|
||||||
|
const result = await request({
|
||||||
|
url: '/api/rest/ueManagement/v1/elementType/n3iwf/objectType/ueInfo',
|
||||||
|
method: 'get',
|
||||||
|
params: query,
|
||||||
|
});
|
||||||
|
let data: DataList = {
|
||||||
|
total: 0,
|
||||||
|
rows: [],
|
||||||
|
code: result.code,
|
||||||
|
msg: result.msg,
|
||||||
|
};
|
||||||
|
// 解析数据
|
||||||
|
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
|
||||||
|
const rows = parseObjLineToHump(result.data.data);
|
||||||
|
data.total = rows.length;
|
||||||
|
data.rows = rows;
|
||||||
|
}
|
||||||
|
// 模拟数据
|
||||||
|
// data.rows = [
|
||||||
|
// {
|
||||||
|
// "activeTime": "2023-11-29 06:35:43",
|
||||||
|
// "imsi": "460302072701181",
|
||||||
|
// "nai": "0460302072701181@nai.epc.mnc030.mcc460.3gppnetwork.org",
|
||||||
|
// "regState": 1
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
217
src/api/neUser/pcf.ts
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
import {
|
||||||
|
RESULT_CODE_ERROR,
|
||||||
|
RESULT_CODE_SUCCESS,
|
||||||
|
} from '@/constants/result-constants';
|
||||||
|
import { request } from '@/plugins/http-fetch';
|
||||||
|
import { parseObjLineToHump } from '@/utils/parse-utils';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规则导出
|
||||||
|
* @param data 表单数据对象
|
||||||
|
* @returns bolb
|
||||||
|
*/
|
||||||
|
export function exportRule(data: Record<string, any>) {
|
||||||
|
return request({
|
||||||
|
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/file/export`,
|
||||||
|
method: 'get',
|
||||||
|
params: data,
|
||||||
|
responseType: 'blob',
|
||||||
|
timeout: 180_000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入规则数据
|
||||||
|
* @param data 表单数据对象
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export function importRuleData(data: Record<string, any>) {
|
||||||
|
return request({
|
||||||
|
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/file/import?neId=${data.neId}&filePath=${data.filePath}&fileType=${data.fileType}`,
|
||||||
|
method: 'put',
|
||||||
|
data,
|
||||||
|
timeout: 60_000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询规则列表
|
||||||
|
* @param query 查询参数
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export async function listRules(query: Record<string, any>) {
|
||||||
|
const result = await request({
|
||||||
|
url: '/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo',
|
||||||
|
method: 'get',
|
||||||
|
params: query,
|
||||||
|
});
|
||||||
|
let data: DataList = {
|
||||||
|
total: 0,
|
||||||
|
rows: [],
|
||||||
|
code: result.code,
|
||||||
|
msg: result.msg,
|
||||||
|
};
|
||||||
|
|
||||||
|
// 解析数据
|
||||||
|
if (result.code === RESULT_CODE_SUCCESS) {
|
||||||
|
if (result.data?.status) {
|
||||||
|
return {
|
||||||
|
code: RESULT_CODE_ERROR,
|
||||||
|
msg: result.data?.cause,
|
||||||
|
rows: result.data,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (Array.isArray(result.data.data)) {
|
||||||
|
const rows = parseObjLineToHump(result.data.data);
|
||||||
|
data.total = rows.length;
|
||||||
|
data.rows = rows;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 模拟数据
|
||||||
|
// data.rows = [
|
||||||
|
// {
|
||||||
|
// "hdrEnrich": "dnn",
|
||||||
|
// "imsi": "160990100000003",
|
||||||
|
// "msisdn": "86755900011",
|
||||||
|
// "pccRules": "internet|ims_sig",
|
||||||
|
// "qosAudio": "qos_audio",
|
||||||
|
// "qosVideo": "qos_video",
|
||||||
|
// "rfsp": 0,
|
||||||
|
// "sar": "def_sar",
|
||||||
|
// "sessRules": "internet|ims_sig",
|
||||||
|
// "uePolicy": "uep_001"
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询规则详细
|
||||||
|
* @param neId 网元ID
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export async function getRule(neId: string, imsi: string) {
|
||||||
|
const result = await request({
|
||||||
|
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${neId}&imsi=${imsi}`,
|
||||||
|
method: 'get',
|
||||||
|
});
|
||||||
|
// 解析数据
|
||||||
|
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
|
||||||
|
result.data = result.data.data[0];
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改规则
|
||||||
|
* @param data 规则对象
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export async function updateRule(data: Record<string, any>) {
|
||||||
|
const result = await request({
|
||||||
|
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${data.neId}`,
|
||||||
|
method: 'put',
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
// 解析数据
|
||||||
|
if (result.code === RESULT_CODE_SUCCESS && result.data?.status) {
|
||||||
|
return {
|
||||||
|
code: RESULT_CODE_ERROR,
|
||||||
|
msg: result.data?.cause,
|
||||||
|
data: result.data,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量修改规则
|
||||||
|
* @param data 规则对象
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export async function batchUpdateRule(data: Record<string, any>) {
|
||||||
|
const result = await request({
|
||||||
|
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/batch/${data.num}?neId=${data.neId}`,
|
||||||
|
method: 'put',
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
// 解析数据
|
||||||
|
if (result.code === RESULT_CODE_SUCCESS && result.data?.status) {
|
||||||
|
return {
|
||||||
|
code: RESULT_CODE_ERROR,
|
||||||
|
msg: result.data?.cause,
|
||||||
|
data: result.data,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增规则
|
||||||
|
* @param data 规则对象
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export async function addRule(data: Record<string, any>) {
|
||||||
|
const result = await request({
|
||||||
|
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${data.neId}`,
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
// 解析数据
|
||||||
|
if (result.code === RESULT_CODE_SUCCESS && result.data?.status) {
|
||||||
|
return {
|
||||||
|
code: RESULT_CODE_ERROR,
|
||||||
|
msg: result.data?.cause,
|
||||||
|
data: result.data,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增规则
|
||||||
|
* @param data 规则对象
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export async function batchAddRule(data: Record<string, any>) {
|
||||||
|
const result = await request({
|
||||||
|
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/batch/${data.num}?neId=${data.neId}`,
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
// 解析数据
|
||||||
|
if (result.code === RESULT_CODE_SUCCESS && result.data?.status) {
|
||||||
|
return {
|
||||||
|
code: RESULT_CODE_ERROR,
|
||||||
|
msg: result.data?.cause,
|
||||||
|
data: result.data,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除规则
|
||||||
|
* @param data 规则对象
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export function delRule(neId: string, data: Record<string, any>) {
|
||||||
|
return request({
|
||||||
|
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${neId}&imsi=${data.imsi}`,
|
||||||
|
method: 'delete',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除规则
|
||||||
|
* @param data 规则对象
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export async function batchDelRule(data: Record<string, any>) {
|
||||||
|
return request({
|
||||||
|
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/batch/${data.num}?neId=${data.neId}&imsi=${data.imsi}`,
|
||||||
|
method: 'delete',
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@ import { request } from '@/plugins/http-fetch';
|
|||||||
*/
|
*/
|
||||||
export function exportSub(query: Record<string, any>) {
|
export function exportSub(query: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/rest/udmUserManage/v1/subExport',
|
url: '/ne/udm/sub/export',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: query,
|
data: query,
|
||||||
responseType: 'blob',
|
responseType: 'blob',
|
||||||
@@ -21,9 +21,9 @@ export function exportSub(query: Record<string, any>) {
|
|||||||
* @param data 表单数据对象
|
* @param data 表单数据对象
|
||||||
* @returns object
|
* @returns object
|
||||||
*/
|
*/
|
||||||
export function importSubData(neId: string, data: FormData) {
|
export function importSubData(data: FormData) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/subImport/${neId}`,
|
url: `/ne/udm/sub/import`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data,
|
data,
|
||||||
dataType: 'form-data',
|
dataType: 'form-data',
|
||||||
@@ -38,8 +38,8 @@ export function importSubData(neId: string, data: FormData) {
|
|||||||
*/
|
*/
|
||||||
export function loadSub(neId: string) {
|
export function loadSub(neId: string) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/subSave/${neId}`,
|
url: `/ne/udm/sub/resetData/${neId}`,
|
||||||
method: 'post',
|
method: 'put',
|
||||||
timeout: 180_000,
|
timeout: 180_000,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -51,7 +51,7 @@ export function loadSub(neId: string) {
|
|||||||
*/
|
*/
|
||||||
export function listSub(query: Record<string, any>) {
|
export function listSub(query: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/rest/udmUserManage/v1/subs',
|
url: '/ne/udm/sub/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: query,
|
params: query,
|
||||||
});
|
});
|
||||||
@@ -64,7 +64,7 @@ export function listSub(query: Record<string, any>) {
|
|||||||
*/
|
*/
|
||||||
export function getSub(neId: string, imsi: string) {
|
export function getSub(neId: string, imsi: string) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/subInfo/${neId}/${imsi}`,
|
url: `/ne/udm/sub/${neId}/${imsi}`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -77,7 +77,7 @@ export function getSub(neId: string, imsi: string) {
|
|||||||
*/
|
*/
|
||||||
export function updateSub(neId: string, data: Record<string, any>) {
|
export function updateSub(neId: string, data: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/sub/${neId}`,
|
url: `/ne/udm/sub/${neId}`,
|
||||||
method: 'put',
|
method: 'put',
|
||||||
data: data,
|
data: data,
|
||||||
});
|
});
|
||||||
@@ -90,7 +90,7 @@ export function updateSub(neId: string, data: Record<string, any>) {
|
|||||||
*/
|
*/
|
||||||
export function addSub(neID: string, data: Record<string, any>) {
|
export function addSub(neID: string, data: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/sub/${neID}`,
|
url: `/ne/udm/sub/${neID}`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data,
|
data: data,
|
||||||
});
|
});
|
||||||
@@ -103,7 +103,7 @@ export function addSub(neID: string, data: Record<string, any>) {
|
|||||||
*/
|
*/
|
||||||
export function batchAddSub(data: Record<string, any>) {
|
export function batchAddSub(data: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/sub/${data.neID}/${data.num}`,
|
url: `/ne/udm/sub/${data.neID}/${data.num}`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data,
|
data: data,
|
||||||
});
|
});
|
||||||
@@ -116,7 +116,7 @@ export function batchAddSub(data: Record<string, any>) {
|
|||||||
*/
|
*/
|
||||||
export function delSub(neId: string, imsi: string) {
|
export function delSub(neId: string, imsi: string) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/sub/${neId}/${imsi}`,
|
url: `/ne/udm/sub/${neId}/${imsi}`,
|
||||||
method: 'delete',
|
method: 'delete',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ export function delSub(neId: string, imsi: string) {
|
|||||||
*/
|
*/
|
||||||
export function batchDelSub(data: Record<string, any>) {
|
export function batchDelSub(data: Record<string, any>) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/rest/udmUserManage/v1/sub/${data.neID}/${data.imsi}/${data.num}`,
|
url: `/ne/udm/sub/${data.neID}/${data.imsi}/${data.num}`,
|
||||||
method: 'delete',
|
method: 'delete',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,5 +26,38 @@ export async function listUE(query: Record<string, any>) {
|
|||||||
data.total = rows.length;
|
data.total = rows.length;
|
||||||
data.rows = rows;
|
data.rows = rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 模拟数据
|
||||||
|
// data.rows = [
|
||||||
|
// {
|
||||||
|
// imsi: 'imsi-460029004200044',
|
||||||
|
// msisdn: 'msisdn-12346002044',
|
||||||
|
// pduSessionInfo: [
|
||||||
|
// {
|
||||||
|
// activeTime: '2023-11-29 18:39:06',
|
||||||
|
// dnn: 'ims',
|
||||||
|
// ipv4: '10.10.48.97',
|
||||||
|
// ipv6: '',
|
||||||
|
// pduSessionID: 6,
|
||||||
|
// ranN3IP: '192.168.8.223',
|
||||||
|
// sstSD: '1-000001',
|
||||||
|
// tai: '46000-0001',
|
||||||
|
// upfN3IP: '192.168.1.161',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// activeTime: '2023-11-29 18:39:05',
|
||||||
|
// dnn: 'cmnet',
|
||||||
|
// ipv4: '10.10.48.62',
|
||||||
|
// ipv6: '',
|
||||||
|
// pduSessionID: 5,
|
||||||
|
// ranN3IP: '192.168.8.223',
|
||||||
|
// sstSD: '1-000001',
|
||||||
|
// tai: '46000-0001',
|
||||||
|
// upfN3IP: '192.168.1.163',
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
// ratType: 'EUTRAN',
|
||||||
|
// },
|
||||||
|
// ];
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,17 +15,23 @@ export async function listgoldData(query: Record<string, any>) {
|
|||||||
// 查询
|
// 查询
|
||||||
let querySQL = '';
|
let querySQL = '';
|
||||||
if (query.neType) {
|
if (query.neType) {
|
||||||
querySQL += ` and ne_type like '%${query.neType}%' `;
|
querySQL += ` and gold_kpi.ne_type like '%${query.neType}%' `;
|
||||||
}
|
}
|
||||||
if (query.beginTime) {
|
if (query.beginTime) {
|
||||||
querySQL += ` and start_time >= '${query.beginTime}' `;
|
querySQL += ` and start_time >= '${query.beginTime}' `;
|
||||||
}
|
}
|
||||||
if (query.endTime) {
|
if (query.endTime) {
|
||||||
querySQL += ` and start_time <= '${query.endTime}' `;
|
querySQL += ` and end_time <= '${query.endTime}' `;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 排序
|
// 排序
|
||||||
let sortSql = ' order by start_time ';
|
let sortSql = ' order by ';
|
||||||
|
if (query.sortField) {
|
||||||
|
sortSql += ` ${query.sortField} `;
|
||||||
|
} else {
|
||||||
|
sortSql += ` start_time `;
|
||||||
|
}
|
||||||
|
|
||||||
if (query.sortOrder === 'asc') {
|
if (query.sortOrder === 'asc') {
|
||||||
sortSql += ' asc ';
|
sortSql += ' asc ';
|
||||||
} else {
|
} else {
|
||||||
@@ -69,3 +75,41 @@ export async function listgoldData(query: Record<string, any>) {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询黄金指标数据
|
||||||
|
* @param query 查询参数
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export async function goldData(query: Record<string, any>) {
|
||||||
|
const result = await request({
|
||||||
|
url: `/ne/kpi/data`,
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
neType: query.neType[0],
|
||||||
|
neId: query.neType[1],
|
||||||
|
startTime: query.beginTime,
|
||||||
|
endTime: query.endTime,
|
||||||
|
interval: query.particle,
|
||||||
|
},
|
||||||
|
timeout: 60_000,
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询网元可用黄金指标
|
||||||
|
* @param neType 网元类型
|
||||||
|
* @returns object
|
||||||
|
*/
|
||||||
|
export async function getGoldTitleByNE(neType: string) {
|
||||||
|
// 发起请求
|
||||||
|
const result = await request({
|
||||||
|
url: `/ne/kpi/title`,
|
||||||
|
method: 'get',
|
||||||
|
params: { neType },
|
||||||
|
});
|
||||||
|
// 解析数据
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,15 +16,24 @@ export async function listperfData(query: Record<string, any>) {
|
|||||||
if (query.neType) {
|
if (query.neType) {
|
||||||
querySQL += ` and ne_type like '%${query.neType}%' `;
|
querySQL += ` and ne_type like '%${query.neType}%' `;
|
||||||
}
|
}
|
||||||
|
if (query.taskId) {
|
||||||
|
querySQL += ` and task_id like '%${query.taskId}%' `;
|
||||||
|
}
|
||||||
if (query.beginTime) {
|
if (query.beginTime) {
|
||||||
querySQL += ` and start_time >= '${query.beginTime}' `;
|
querySQL += ` and start_time >= '${query.beginTime}' `;
|
||||||
}
|
}
|
||||||
if (query.endTime) {
|
if (query.endTime) {
|
||||||
querySQL += ` and start_time <= '${query.endTime}' `;
|
querySQL += ` and end_time <= '${query.endTime}' `;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 排序
|
// 排序
|
||||||
let sortSql = ' order by start_time ';
|
let sortSql = ' order by ';
|
||||||
|
if (query.sortField) {
|
||||||
|
sortSql += ` ${query.sortField} `;
|
||||||
|
}else{
|
||||||
|
sortSql += ` start_time `;
|
||||||
|
}
|
||||||
|
|
||||||
if (query.sortOrder === 'asc') {
|
if (query.sortOrder === 'asc') {
|
||||||
sortSql += ' asc ';
|
sortSql += ' asc ';
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
import { request } from '@/plugins/http-fetch';
|
import {
|
||||||
|
RESULT_CODE_ERROR,
|
||||||
|
RESULT_CODE_SUCCESS,
|
||||||
|
RESULT_MSG_ERROR,
|
||||||
|
} from '@/constants/result-constants';
|
||||||
|
import { request, language } from '@/plugins/http-fetch';
|
||||||
import { encode } from 'js-base64';
|
import { encode } from 'js-base64';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -37,7 +42,7 @@ export async function downloadFileChunk(
|
|||||||
async function sendRequest() {
|
async function sendRequest() {
|
||||||
const range = `bytes=${start}-${end}`;
|
const range = `bytes=${start}-${end}`;
|
||||||
const res = await downloadFile(filePath, range);
|
const res = await downloadFile(filePath, range);
|
||||||
if (res.code === 200 && res.status === 206) {
|
if (res.code === RESULT_CODE_SUCCESS && res.status === 206) {
|
||||||
// 总大小
|
// 总大小
|
||||||
const contentRange = res.headers.get('content-range') || '0/0';
|
const contentRange = res.headers.get('content-range') || '0/0';
|
||||||
totalSize = parseInt(contentRange.split('/')[1]);
|
totalSize = parseInt(contentRange.split('/')[1]);
|
||||||
@@ -109,7 +114,7 @@ export async function uploadFileChunk(
|
|||||||
|
|
||||||
// 检查是否已上传部分数据块
|
// 检查是否已上传部分数据块
|
||||||
const resCheck = await chunkCheck(fileIdentifier, name);
|
const resCheck = await chunkCheck(fileIdentifier, name);
|
||||||
if (resCheck.code !== 200) {
|
if (resCheck.code !== RESULT_CODE_SUCCESS) {
|
||||||
return resCheck;
|
return resCheck;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,7 +135,7 @@ export async function uploadFileChunk(
|
|||||||
formData.append('identifier', fileIdentifier);
|
formData.append('identifier', fileIdentifier);
|
||||||
|
|
||||||
const resUpload = await chunkUpload(formData);
|
const resUpload = await chunkUpload(formData);
|
||||||
if (resUpload.code === 200) {
|
if (resUpload.code === RESULT_CODE_SUCCESS) {
|
||||||
uploadedSize += chunk.size;
|
uploadedSize += chunk.size;
|
||||||
uploadProgress = (uploadedSize / size) * 100;
|
uploadProgress = (uploadedSize / size) * 100;
|
||||||
console.log(`上传进度:${uploadProgress}%`);
|
console.log(`上传进度:${uploadProgress}%`);
|
||||||
@@ -144,7 +149,7 @@ export async function uploadFileChunk(
|
|||||||
if (uploadedSize === size) {
|
if (uploadedSize === size) {
|
||||||
return await chunkMerge(fileIdentifier, name, subPath);
|
return await chunkMerge(fileIdentifier, name, subPath);
|
||||||
}
|
}
|
||||||
return { code: 500, msg: '上传出错,请重试' };
|
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -193,3 +198,33 @@ export function chunkUpload(data: FormData) {
|
|||||||
dataType: 'form-data',
|
dataType: 'form-data',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上传切片文件并发送文件到网元端
|
||||||
|
* @param neType 网元类型, UPF
|
||||||
|
* @param neId 网元标识, 001
|
||||||
|
* @param fileData 文件对象
|
||||||
|
* @param chunkSize 数据块大小MB,默认1MB
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export async function uploadFileToNE(
|
||||||
|
neType: string,
|
||||||
|
neId: string,
|
||||||
|
fileData: File,
|
||||||
|
chunkSize: number = 1
|
||||||
|
) {
|
||||||
|
const uploadChunkRes = await uploadFileChunk(fileData, chunkSize, 'import');
|
||||||
|
if (uploadChunkRes.code === RESULT_CODE_SUCCESS) {
|
||||||
|
const transferToNeFileRes = await request({
|
||||||
|
url: `/ne/action/pushFile`,
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
uploadPath: uploadChunkRes.data.fileName,
|
||||||
|
neType,
|
||||||
|
neId,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return transferToNeFileRes;
|
||||||
|
}
|
||||||
|
return uploadChunkRes;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,69 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg width="1361px" height="609px" viewBox="0 0 1361 609" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
||||||
<!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
|
|
||||||
<title>Ant-Design-Pro</title>
|
|
||||||
<desc>mask-and-vue3 By TsMask</desc>
|
|
||||||
<defs></defs>
|
|
||||||
<g id="Ant-Design-Pro" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
||||||
<g id="mask-and-vue3" transform="translate(-79.000000, -82.000000)">
|
|
||||||
<g id="Group-21" transform="translate(77.000000, 73.000000)">
|
|
||||||
<g id="Group-18" opacity="0.8" transform="translate(74.901416, 569.699158) rotate(-7.000000) translate(-74.901416, -569.699158) translate(4.901416, 525.199158)">
|
|
||||||
<ellipse id="Oval-11" fill="#CFDAE6" opacity="0.25" cx="63.5748792" cy="32.468367" rx="21.7830479" ry="21.766008"></ellipse>
|
|
||||||
<ellipse id="Oval-3" fill="#CFDAE6" opacity="0.599999964" cx="5.98746479" cy="13.8668601" rx="5.2173913" ry="5.21330997"></ellipse>
|
|
||||||
<path d="M38.1354514,88.3520215 C43.8984227,88.3520215 48.570234,83.6838647 48.570234,77.9254015 C48.570234,72.1669383 43.8984227,67.4987816 38.1354514,67.4987816 C32.3724801,67.4987816 27.7006688,72.1669383 27.7006688,77.9254015 C27.7006688,83.6838647 32.3724801,88.3520215 38.1354514,88.3520215 Z" id="Oval-3-Copy" fill="#CFDAE6" opacity="0.45"></path>
|
|
||||||
<path d="M64.2775582,33.1704963 L119.185836,16.5654915" id="Path-12" stroke="#CFDAE6" stroke-width="1.73913043" stroke-linecap="round" stroke-linejoin="round"></path>
|
|
||||||
<path d="M42.1431708,26.5002681 L7.71190162,14.5640702" id="Path-16" stroke="#E0B4B7" stroke-width="0.702678964" opacity="0.7" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.405357899873153,2.108036953469981"></path>
|
|
||||||
<path d="M63.9262187,33.521561 L43.6721326,69.3250951" id="Path-15" stroke="#BACAD9" stroke-width="0.702678964" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.405357899873153,2.108036953469981"></path>
|
|
||||||
<g id="Group-17" transform="translate(126.850922, 13.543654) rotate(30.000000) translate(-126.850922, -13.543654) translate(117.285705, 4.381889)" fill="#CFDAE6">
|
|
||||||
<ellipse id="Oval-4" opacity="0.45" cx="9.13482653" cy="9.12768076" rx="9.13482653" ry="9.12768076"></ellipse>
|
|
||||||
<path d="M18.2696531,18.2553615 C18.2696531,13.2142826 14.1798519,9.12768076 9.13482653,9.12768076 C4.08980114,9.12768076 0,13.2142826 0,18.2553615 L18.2696531,18.2553615 Z" id="Oval-4" transform="translate(9.134827, 13.691521) scale(-1, -1) translate(-9.134827, -13.691521) "></path>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g id="Group-14" transform="translate(216.294700, 123.725600) rotate(-5.000000) translate(-216.294700, -123.725600) translate(106.294700, 35.225600)">
|
|
||||||
<ellipse id="Oval-2" fill="#CFDAE6" opacity="0.25" cx="29.1176471" cy="29.1402439" rx="29.1176471" ry="29.1402439"></ellipse>
|
|
||||||
<ellipse id="Oval-2" fill="#CFDAE6" opacity="0.3" cx="29.1176471" cy="29.1402439" rx="21.5686275" ry="21.5853659"></ellipse>
|
|
||||||
<ellipse id="Oval-2-Copy" stroke="#CFDAE6" opacity="0.4" cx="179.019608" cy="138.146341" rx="23.7254902" ry="23.7439024"></ellipse>
|
|
||||||
<ellipse id="Oval-2" fill="#BACAD9" opacity="0.5" cx="29.1176471" cy="29.1402439" rx="10.7843137" ry="10.7926829"></ellipse>
|
|
||||||
<path d="M29.1176471,39.9329268 L29.1176471,18.347561 C23.1616351,18.347561 18.3333333,23.1796097 18.3333333,29.1402439 C18.3333333,35.1008781 23.1616351,39.9329268 29.1176471,39.9329268 Z" id="Oval-2" fill="#BACAD9"></path>
|
|
||||||
<g id="Group-9" opacity="0.45" transform="translate(172.000000, 131.000000)" fill="#E6A1A6">
|
|
||||||
<ellipse id="Oval-2-Copy-2" cx="7.01960784" cy="7.14634146" rx="6.47058824" ry="6.47560976"></ellipse>
|
|
||||||
<path d="M0.549019608,13.6219512 C4.12262681,13.6219512 7.01960784,10.722722 7.01960784,7.14634146 C7.01960784,3.56996095 4.12262681,0.670731707 0.549019608,0.670731707 L0.549019608,13.6219512 Z" id="Oval-2-Copy-2" transform="translate(3.784314, 7.146341) scale(-1, 1) translate(-3.784314, -7.146341) "></path>
|
|
||||||
</g>
|
|
||||||
<ellipse id="Oval-10" fill="#CFDAE6" cx="218.382353" cy="138.685976" rx="1.61764706" ry="1.61890244"></ellipse>
|
|
||||||
<ellipse id="Oval-10-Copy-2" fill="#E0B4B7" opacity="0.35" cx="179.558824" cy="175.381098" rx="1.61764706" ry="1.61890244"></ellipse>
|
|
||||||
<ellipse id="Oval-10-Copy" fill="#E0B4B7" opacity="0.35" cx="180.098039" cy="102.530488" rx="2.15686275" ry="2.15853659"></ellipse>
|
|
||||||
<path d="M28.9985381,29.9671598 L171.151018,132.876024" id="Path-11" stroke="#CFDAE6" opacity="0.8"></path>
|
|
||||||
</g>
|
|
||||||
<g id="Group-10" opacity="0.799999952" transform="translate(1054.100635, 36.659317) rotate(-11.000000) translate(-1054.100635, -36.659317) translate(1026.600635, 4.659317)">
|
|
||||||
<ellipse id="Oval-7" stroke="#CFDAE6" stroke-width="0.941176471" cx="43.8135593" cy="32" rx="11.1864407" ry="11.2941176"></ellipse>
|
|
||||||
<g id="Group-12" transform="translate(34.596774, 23.111111)" fill="#BACAD9">
|
|
||||||
<ellipse id="Oval-7" opacity="0.45" cx="9.18534718" cy="8.88888889" rx="8.47457627" ry="8.55614973"></ellipse>
|
|
||||||
<path d="M9.18534718,17.4450386 C13.8657264,17.4450386 17.6599235,13.6143199 17.6599235,8.88888889 C17.6599235,4.16345787 13.8657264,0.332739156 9.18534718,0.332739156 L9.18534718,17.4450386 Z" id="Oval-7"></path>
|
|
||||||
</g>
|
|
||||||
<path d="M34.6597385,24.809694 L5.71666084,4.76878945" id="Path-2" stroke="#CFDAE6" stroke-width="0.941176471"></path>
|
|
||||||
<ellipse id="Oval" stroke="#CFDAE6" stroke-width="0.941176471" cx="3.26271186" cy="3.29411765" rx="3.26271186" ry="3.29411765"></ellipse>
|
|
||||||
<ellipse id="Oval-Copy" fill="#F7E1AD" cx="2.79661017" cy="61.1764706" rx="2.79661017" ry="2.82352941"></ellipse>
|
|
||||||
<path d="M34.6312443,39.2922712 L5.06366663,59.785082" id="Path-10" stroke="#CFDAE6" stroke-width="0.941176471"></path>
|
|
||||||
</g>
|
|
||||||
<g id="Group-19" opacity="0.33" transform="translate(1282.537219, 446.502867) rotate(-10.000000) translate(-1282.537219, -446.502867) translate(1142.537219, 327.502867)">
|
|
||||||
<g id="Group-17" transform="translate(141.333539, 104.502742) rotate(275.000000) translate(-141.333539, -104.502742) translate(129.333539, 92.502742)" fill="#BACAD9">
|
|
||||||
<circle id="Oval-4" opacity="0.45" cx="11.6666667" cy="11.6666667" r="11.6666667"></circle>
|
|
||||||
<path d="M23.3333333,23.3333333 C23.3333333,16.8900113 18.1099887,11.6666667 11.6666667,11.6666667 C5.22334459,11.6666667 0,16.8900113 0,23.3333333 L23.3333333,23.3333333 Z" id="Oval-4" transform="translate(11.666667, 17.500000) scale(-1, -1) translate(-11.666667, -17.500000) "></path>
|
|
||||||
</g>
|
|
||||||
<circle id="Oval-5-Copy-6" fill="#CFDAE6" cx="201.833333" cy="87.5" r="5.83333333"></circle>
|
|
||||||
<path d="M143.5,88.8126685 L155.070501,17.6038544" id="Path-17" stroke="#BACAD9" stroke-width="1.16666667"></path>
|
|
||||||
<path d="M17.5,37.3333333 L127.466252,97.6449735" id="Path-18" stroke="#BACAD9" stroke-width="1.16666667"></path>
|
|
||||||
<polyline id="Path-19" stroke="#CFDAE6" stroke-width="1.16666667" points="143.902597 120.302281 174.935455 231.571342 38.5 147.510847 126.366941 110.833333"></polyline>
|
|
||||||
<path d="M159.833333,99.7453842 L195.416667,89.25" id="Path-20" stroke="#E0B4B7" stroke-width="1.16666667" opacity="0.6"></path>
|
|
||||||
<path d="M205.333333,82.1372105 L238.719406,36.1666667" id="Path-24" stroke="#BACAD9" stroke-width="1.16666667"></path>
|
|
||||||
<path d="M266.723424,132.231988 L207.083333,90.4166667" id="Path-25" stroke="#CFDAE6" stroke-width="1.16666667"></path>
|
|
||||||
<circle id="Oval-5" fill="#C1D1E0" cx="156.916667" cy="8.75" r="8.75"></circle>
|
|
||||||
<circle id="Oval-5-Copy-3" fill="#C1D1E0" cx="39.0833333" cy="148.75" r="5.25"></circle>
|
|
||||||
<circle id="Oval-5-Copy-2" fill-opacity="0.6" fill="#D1DEED" cx="8.75" cy="33.25" r="8.75"></circle>
|
|
||||||
<circle id="Oval-5-Copy-4" fill-opacity="0.6" fill="#D1DEED" cx="243.833333" cy="30.3333333" r="5.83333333"></circle>
|
|
||||||
<circle id="Oval-5-Copy-5" fill="#E0B4B7" cx="175.583333" cy="232.75" r="5.25"></circle>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 16 KiB |
@@ -69,7 +69,7 @@ const props = defineProps({
|
|||||||
const seriesStyle = [
|
const seriesStyle = [
|
||||||
{
|
{
|
||||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||||
{
|
{
|
||||||
offset: 0,
|
offset: 0,
|
||||||
color: 'rgba(22, 119, 255, .5)',
|
color: 'rgba(22, 119, 255, .5)',
|
||||||
},
|
},
|
||||||
@@ -203,7 +203,7 @@ function initChart() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
grid: props.option.grid || { left: '8%', right: '8%', bottom: '20%' },
|
grid: props.option.grid || { left: '8%', right: '8%', bottom: '20%' },
|
||||||
legend: {
|
legend: props.option.legend || {
|
||||||
right: 10,
|
right: 10,
|
||||||
itemWidth: 8,
|
itemWidth: 8,
|
||||||
textStyle: {
|
textStyle: {
|
||||||
|
|||||||
168
src/components/DraggableModal/index.vue
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, watch, watchEffect, CSSProperties, computed } from 'vue';
|
||||||
|
import { useDraggable } from '@vueuse/core';
|
||||||
|
const emit = defineEmits(['update:visible', 'ok', 'cancel']);
|
||||||
|
/**于a-modal保持一致 */
|
||||||
|
const props = defineProps({
|
||||||
|
/**是否弹出显示,必传 */
|
||||||
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
/**窗口标题 */
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
/**窗口宽度 */
|
||||||
|
width: {
|
||||||
|
type: [String, Number],
|
||||||
|
default: '520px',
|
||||||
|
},
|
||||||
|
bodyStyle: {
|
||||||
|
type: Object,
|
||||||
|
default: {},
|
||||||
|
},
|
||||||
|
keyboard: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
mask: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
maskClosable: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
maskStyle: {
|
||||||
|
type: Object,
|
||||||
|
default: {},
|
||||||
|
},
|
||||||
|
destroyOnClose: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
confirmLoading: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
footer: {
|
||||||
|
type: Object,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// 对标题进行监听
|
||||||
|
const modalTitleRef = ref<HTMLElement | null>(null);
|
||||||
|
const { x, y, isDragging } = useDraggable(modalTitleRef);
|
||||||
|
|
||||||
|
const startX = ref<number>(0);
|
||||||
|
const startY = ref<number>(0);
|
||||||
|
const startedDrag = ref(false);
|
||||||
|
const transformX = ref(0);
|
||||||
|
const transformY = ref(0);
|
||||||
|
const preTransformX = ref(0);
|
||||||
|
const preTransformY = ref(0);
|
||||||
|
const dragRect = ref({ left: 0, right: 0, top: 0, bottom: 0 });
|
||||||
|
|
||||||
|
watch([x, y], () => {
|
||||||
|
if (!startedDrag.value) {
|
||||||
|
startX.value = x.value;
|
||||||
|
startY.value = y.value;
|
||||||
|
const bodyRect = document.body.getBoundingClientRect();
|
||||||
|
const titleRectEl = modalTitleRef.value;
|
||||||
|
if (titleRectEl) {
|
||||||
|
const titleRect = titleRectEl.getBoundingClientRect();
|
||||||
|
dragRect.value.right = bodyRect.width - (titleRect.width + 24);
|
||||||
|
dragRect.value.bottom = bodyRect.height - (titleRect.height + 16);
|
||||||
|
}
|
||||||
|
preTransformX.value = transformX.value;
|
||||||
|
preTransformY.value = transformY.value;
|
||||||
|
}
|
||||||
|
startedDrag.value = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
watchEffect(() => {
|
||||||
|
if (!isDragging.value) {
|
||||||
|
startedDrag.value = false;
|
||||||
|
}
|
||||||
|
if (startedDrag.value) {
|
||||||
|
const dragRectX = Math.min(
|
||||||
|
Math.max(dragRect.value.left + 24, x.value),
|
||||||
|
dragRect.value.right
|
||||||
|
);
|
||||||
|
transformX.value = preTransformX.value + dragRectX - startX.value;
|
||||||
|
|
||||||
|
const dragRectY = Math.min(
|
||||||
|
Math.max(dragRect.value.top + 16, y.value),
|
||||||
|
dragRect.value.bottom
|
||||||
|
);
|
||||||
|
transformY.value = preTransformY.value + dragRectY - startY.value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 位移
|
||||||
|
const transformStyle = computed<CSSProperties>(() => {
|
||||||
|
return {
|
||||||
|
transform: `translate(${transformX.value}px, ${transformY.value}px)`,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
/**监听是否显示,位置还原 */
|
||||||
|
watch(
|
||||||
|
() => props.visible,
|
||||||
|
val => {
|
||||||
|
if (val) {
|
||||||
|
transformX.value = 0;
|
||||||
|
transformY.value = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<a-modal
|
||||||
|
wrapClassName="draggable-modal"
|
||||||
|
:width="props.width"
|
||||||
|
:keyboard="props.keyboard"
|
||||||
|
:mask="props.mask"
|
||||||
|
:mask-closable="props.maskClosable"
|
||||||
|
:visible="props.visible"
|
||||||
|
:confirm-loading="props.confirmLoading"
|
||||||
|
:body-style="props.bodyStyle"
|
||||||
|
:mask-style="props.maskStyle"
|
||||||
|
:destroy-on-close="props.destroyOnClose"
|
||||||
|
:footer="props.footer"
|
||||||
|
@ok="e => emit('ok', e)"
|
||||||
|
@cancel="e => emit('cancel', e)"
|
||||||
|
>
|
||||||
|
<template #title>
|
||||||
|
<div
|
||||||
|
ref="modalTitleRef"
|
||||||
|
class="draggable-modal-title"
|
||||||
|
v-text="title"
|
||||||
|
></div>
|
||||||
|
</template>
|
||||||
|
<template #modalRender="{ originVNode }">
|
||||||
|
<div :style="transformStyle">
|
||||||
|
<component :is="originVNode" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<slot></slot>
|
||||||
|
</a-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.draggable-modal {
|
||||||
|
// 穿透选择文字
|
||||||
|
// 给a-modal设置 get-container=".ant-pro-page-container"
|
||||||
|
// 防止跳转显示
|
||||||
|
// &.ant-modal-wrap {
|
||||||
|
// pointer-events: none;
|
||||||
|
// }
|
||||||
|
&-title {
|
||||||
|
width: 100%;
|
||||||
|
cursor: move;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
176
src/components/TableColumnsDnd/index.vue
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import { reactive, watch, onMounted, PropType } from 'vue';
|
||||||
|
import { Container, Draggable } from 'vue3-smooth-dnd';
|
||||||
|
import useI18n from '@/hooks/useI18n';
|
||||||
|
import { type ColumnsType } from 'ant-design-vue/lib/table';
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
const emit = defineEmits(['update:columns-dnd']);
|
||||||
|
const props = defineProps({
|
||||||
|
/**
|
||||||
|
* 表格字段列非响应式数据,必传
|
||||||
|
*
|
||||||
|
* v-model:columns-dnd取变更的数据
|
||||||
|
*/
|
||||||
|
columns: {
|
||||||
|
type: Array<any>,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
/**按钮类型
|
||||||
|
* text 图标
|
||||||
|
* ghost 图标按钮带文字
|
||||||
|
*/
|
||||||
|
type: {
|
||||||
|
type: String as PropType<'text' | 'ghost'>,
|
||||||
|
default: 'text',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
/**表格字段列 */
|
||||||
|
const tableColumns = reactive<ColumnsType>(props.columns);
|
||||||
|
|
||||||
|
/**表格字段列勾选状态 */
|
||||||
|
const state = reactive({
|
||||||
|
indeterminate: false,
|
||||||
|
checkAll: true,
|
||||||
|
columnsTitleList: tableColumns.map(s => `${s.title}`),
|
||||||
|
});
|
||||||
|
|
||||||
|
/**表格字段列全选操作 */
|
||||||
|
function fnTableColumnsCheckAllChange(e: any) {
|
||||||
|
const checked = e.target.checked;
|
||||||
|
state.indeterminate = false;
|
||||||
|
state.columnsTitleList = checked ? tableColumns.map(s => `${s.title}`) : [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**表格字段列拖拽操作 */
|
||||||
|
function fnTableColumnsDrop(dropResult: any) {
|
||||||
|
const { removedIndex, addedIndex, payload } = dropResult;
|
||||||
|
if (removedIndex !== null && addedIndex !== null) {
|
||||||
|
let itemToAdd = payload;
|
||||||
|
itemToAdd = tableColumns.splice(removedIndex, 1)[0];
|
||||||
|
tableColumns.splice(addedIndex, 0, itemToAdd);
|
||||||
|
fnUpdateColumns();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**表格字段列固定操作 */
|
||||||
|
function fnTableColumnsFixed(row: Record<string, any>) {
|
||||||
|
if (row.fixed === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const optTitle = t('common.operate');
|
||||||
|
if (row.title === optTitle) {
|
||||||
|
const optFixed = row.fixed === 'right';
|
||||||
|
row.fixed = optFixed ? false : 'right';
|
||||||
|
} else {
|
||||||
|
row.fixed = !row.fixed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**表格字段列勾选字段变化 */
|
||||||
|
function fnUpdateColumns() {
|
||||||
|
let list = tableColumns.filter(s =>
|
||||||
|
state.columnsTitleList.includes(`${s.title}`)
|
||||||
|
);
|
||||||
|
// 取消全选时留第一个
|
||||||
|
if (list.length === 0) {
|
||||||
|
list = [tableColumns[0]];
|
||||||
|
}
|
||||||
|
emit('update:columns-dnd', list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**表格字段列勾选监听 */
|
||||||
|
watch(
|
||||||
|
() => state.columnsTitleList,
|
||||||
|
val => {
|
||||||
|
const len = val.length;
|
||||||
|
state.indeterminate = !!len && len < tableColumns.length;
|
||||||
|
state.checkAll = len === tableColumns.length;
|
||||||
|
fnUpdateColumns();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
fnUpdateColumns();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<a-tooltip>
|
||||||
|
<template #title>
|
||||||
|
{{ t('common.columnSetText') }}
|
||||||
|
</template>
|
||||||
|
<a-popover trigger="click" placement="bottomRight">
|
||||||
|
<template #title>
|
||||||
|
<div class="table-column-setting-title">
|
||||||
|
<a-checkbox
|
||||||
|
v-model:checked="state.checkAll"
|
||||||
|
:indeterminate="state.indeterminate"
|
||||||
|
@change="fnTableColumnsCheckAllChange"
|
||||||
|
>
|
||||||
|
{{ t('common.columnSetTitle') }}
|
||||||
|
</a-checkbox>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #content>
|
||||||
|
<a-checkbox-group
|
||||||
|
v-model:value="state.columnsTitleList"
|
||||||
|
style="width: 100%; max-height: 450px; overflow-y: auto"
|
||||||
|
>
|
||||||
|
<Container orientation="vertical" @drop="fnTableColumnsDrop">
|
||||||
|
<Draggable v-for="c in tableColumns" :key="c.title">
|
||||||
|
<div class="table-column-setting-list-item">
|
||||||
|
<HolderOutlined class="anticon" />
|
||||||
|
<a-checkbox :value="c.title">
|
||||||
|
{{ c.title }}
|
||||||
|
</a-checkbox>
|
||||||
|
<a-button
|
||||||
|
v-if="c.fixed !== undefined"
|
||||||
|
size="small"
|
||||||
|
:type="c.fixed ? 'primary' : 'dashed'"
|
||||||
|
@click="fnTableColumnsFixed(c)"
|
||||||
|
>
|
||||||
|
<template #icon><FlagOutlined /></template>
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
|
</Draggable>
|
||||||
|
</Container>
|
||||||
|
</a-checkbox-group>
|
||||||
|
</template>
|
||||||
|
<a-button :type="props.type" size="small">
|
||||||
|
<template #icon><TableOutlined /></template>
|
||||||
|
<span v-if="props.type === 'ghost'">
|
||||||
|
{{ t('common.columnSetText') }}
|
||||||
|
</span>
|
||||||
|
</a-button>
|
||||||
|
</a-popover>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.table-column-setting-title {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 32px;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-column-setting-list-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-column-setting-list-item > .anticon {
|
||||||
|
padding-right: 8px;
|
||||||
|
cursor: move;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-column-setting-list-item .ant-checkbox-wrapper {
|
||||||
|
flex: 1;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -2,25 +2,46 @@
|
|||||||
export const RESULT_CODE_SUCCESS = 1;
|
export const RESULT_CODE_SUCCESS = 1;
|
||||||
|
|
||||||
/**响应-msg正常成功 */
|
/**响应-msg正常成功 */
|
||||||
export const RESULT_MSG_SUCCESS = 'success';
|
export const RESULT_MSG_SUCCESS: Record<string, string> = {
|
||||||
|
zh_CN: '成功!',
|
||||||
|
en_US: 'Success!',
|
||||||
|
};
|
||||||
|
|
||||||
/**响应-code错误失败 */
|
/**响应-code错误失败 */
|
||||||
export const RESULT_CODE_ERROR = 0;
|
export const RESULT_CODE_ERROR = 0;
|
||||||
|
|
||||||
/**响应-msg错误失败 */
|
/**响应-msg错误失败 */
|
||||||
export const RESULT_MSG_ERROR = 'error';
|
export const RESULT_MSG_ERROR: Record<string, string> = {
|
||||||
|
zh_CN: '错误!',
|
||||||
|
en_US: 'Error!',
|
||||||
|
};
|
||||||
|
|
||||||
/**响应-网络连接超时 */
|
/**响应-网络连接超时 */
|
||||||
export const RESULT_MSG_TIMEOUT = 'Network connection timeout!';
|
export const RESULT_MSG_TIMEOUT: Record<string, string> = {
|
||||||
|
zh_CN: '网络连接超时!',
|
||||||
|
en_US: 'Network Connection Timeout!',
|
||||||
|
};
|
||||||
|
|
||||||
/**响应-未知响应数据类型 */
|
/**响应-未知响应数据类型 */
|
||||||
export const RESULT_MSG_NOT_TYPE = 'Unknown response data type!';
|
export const RESULT_MSG_NOT_TYPE: Record<string, string> = {
|
||||||
|
zh_CN: '未知响应数据类型!',
|
||||||
|
en_US: 'Unknown Response Data Type!',
|
||||||
|
};
|
||||||
|
|
||||||
/**响应-服务器连接出错 */
|
/**响应-服务器连接出错 */
|
||||||
export const RESULT_MSG_SERVER_ERROR = 'Server connection error!';
|
export const RESULT_MSG_SERVER_ERROR: Record<string, string> = {
|
||||||
|
zh_CN: '服务器连接出错!',
|
||||||
|
en_US: 'Server Connection Error!',
|
||||||
|
};
|
||||||
|
|
||||||
/**响应-请求地址未找到 */
|
/**响应-请求地址未找到 */
|
||||||
export const RESULT_MSG_URL_NOTFOUND = 'Request address not found!';
|
export const RESULT_MSG_URL_NOTFOUND: Record<string, string> = {
|
||||||
|
zh_CN: '请求地址未找到!',
|
||||||
|
en_US: 'Request Address Not Found!',
|
||||||
|
};
|
||||||
|
|
||||||
/**响应-数据正在处理,请勿重复提交 */
|
/**响应-数据正在处理,请勿重复提交 */
|
||||||
export const RESULT_MSG_URL_RESUBMIT = 'Data is being processed, please do not resubmit!';
|
export const RESULT_MSG_URL_RESUBMIT: Record<string, string> = {
|
||||||
|
zh_CN: '数据正在处理,请勿重复提交!',
|
||||||
|
en_US: 'Data are being processed, please do not resubmit',
|
||||||
|
};
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { computed } from 'vue';
|
import { computed, onBeforeMount } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { localSet } from '@/utils/cache-local-utils';
|
import { localGet, localSet } from '@/utils/cache-local-utils';
|
||||||
import { CACHE_LOCAL_I18N } from '@/constants/cache-keys-constants';
|
import { CACHE_LOCAL_I18N } from '@/constants/cache-keys-constants';
|
||||||
|
|
||||||
export default function useLocale() {
|
export default function useLocale() {
|
||||||
@@ -16,10 +16,31 @@ export default function useLocale() {
|
|||||||
const changeLocale = (value: string) => {
|
const changeLocale = (value: string) => {
|
||||||
i18n.locale.value = value;
|
i18n.locale.value = value;
|
||||||
localSet(CACHE_LOCAL_I18N, value);
|
localSet(CACHE_LOCAL_I18N, value);
|
||||||
window.location.reload()
|
window.location.reload();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 可选的语言
|
||||||
|
const optionsLocale = [
|
||||||
|
{
|
||||||
|
value: 'zh_CN',
|
||||||
|
label: '中文',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'en_US',
|
||||||
|
label: 'English',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
// 挂载前根据默认语言在设置一次
|
||||||
|
onBeforeMount(() => {
|
||||||
|
const localI18n = localGet(CACHE_LOCAL_I18N);
|
||||||
|
if (localI18n) {
|
||||||
|
i18n.locale.value = localI18n;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
optionsLocale,
|
||||||
currentLocale,
|
currentLocale,
|
||||||
changeLocale,
|
changeLocale,
|
||||||
t: i18n.t,
|
t: i18n.t,
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import enUS from './locales/en-US';
|
|||||||
|
|
||||||
const i18n = createI18n({
|
const i18n = createI18n({
|
||||||
legacy: false, // 使用 Composition API 的方式创建 i18n 实例
|
legacy: false, // 使用 Composition API 的方式创建 i18n 实例
|
||||||
locale: localGet(CACHE_LOCAL_I18N) || 'zh_CN', // 默认显示语言
|
locale: localGet(CACHE_LOCAL_I18N) || 'en_US', // 默认显示语言
|
||||||
messages: {
|
messages: {
|
||||||
zh_CN: zhCN,
|
zh_CN: zhCN,
|
||||||
en_US: enUS,
|
en_US: enUS,
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export default {
|
|||||||
tipTitle: 'Prompt',
|
tipTitle: 'Prompt',
|
||||||
msgSuccess: 'Success {msg}',
|
msgSuccess: 'Success {msg}',
|
||||||
errorFields: 'Please fill in the required information in {num} correctly!',
|
errorFields: 'Please fill in the required information in {num} correctly!',
|
||||||
tablePaginationTotal: 'A total of {total} items',
|
tablePaginationTotal: 'Total {total} items',
|
||||||
noData: "No Data",
|
noData: "No Data",
|
||||||
zebra:'Tabular zebra pattern',
|
zebra:'Tabular zebra pattern',
|
||||||
ok: 'Ok',
|
ok: 'Ok',
|
||||||
@@ -36,6 +36,8 @@ export default {
|
|||||||
searchBarText: 'Search bar',
|
searchBarText: 'Search bar',
|
||||||
tableStripedText: 'Form Zebra',
|
tableStripedText: 'Form Zebra',
|
||||||
reloadText: 'Refresh',
|
reloadText: 'Refresh',
|
||||||
|
columnSetText: 'Column Setting',
|
||||||
|
columnSetTitle: 'Column Display / Sorting',
|
||||||
sizeText: 'Density',
|
sizeText: 'Density',
|
||||||
size: {
|
size: {
|
||||||
default: 'Default',
|
default: 'Default',
|
||||||
@@ -51,7 +53,7 @@ export default {
|
|||||||
fold: 'Fold',
|
fold: 'Fold',
|
||||||
},
|
},
|
||||||
rowId: 'ID',
|
rowId: 'ID',
|
||||||
operate: 'Operate',
|
operate: 'Operation',
|
||||||
units: {
|
units: {
|
||||||
second: 'Second',
|
second: 'Second',
|
||||||
minute: 'Minute',
|
minute: 'Minute',
|
||||||
@@ -124,6 +126,11 @@ export default {
|
|||||||
// 静态路由
|
// 静态路由
|
||||||
router: {
|
router: {
|
||||||
index: "Home",
|
index: "Home",
|
||||||
|
login: "Sign In",
|
||||||
|
register: 'Registrations',
|
||||||
|
page403: 'No Access',
|
||||||
|
page404: 'Match Page Not Found',
|
||||||
|
helpDoc: 'System User Documentation',
|
||||||
account: {
|
account: {
|
||||||
index: "Personal Center",
|
index: "Personal Center",
|
||||||
profile: "Personal Info",
|
profile: "Personal Info",
|
||||||
@@ -151,7 +158,12 @@ export default {
|
|||||||
|
|
||||||
// 布局
|
// 布局
|
||||||
loayouts: {
|
loayouts: {
|
||||||
|
basic: {
|
||||||
|
officialUrl: 'Official',
|
||||||
|
helpDoc: 'Doc',
|
||||||
|
},
|
||||||
rightContent: {
|
rightContent: {
|
||||||
|
helpDoc: "System User Documentation",
|
||||||
fullscreen: "Full Screen",
|
fullscreen: "Full Screen",
|
||||||
logout: "Logout",
|
logout: "Logout",
|
||||||
profile: "Profile",
|
profile: "Profile",
|
||||||
@@ -186,8 +198,8 @@ export default {
|
|||||||
runStatus:'Running Status',
|
runStatus:'Running Status',
|
||||||
mark:'Brief Information',
|
mark:'Brief Information',
|
||||||
object:'Object',
|
object:'Object',
|
||||||
versionNum:'Version Number',
|
versionNum:'Version',
|
||||||
systemStatus:'System Status',
|
systemStatus:'Status',
|
||||||
realNeStatus:'Status',
|
realNeStatus:'Status',
|
||||||
reloadTime:'Refresh Time',
|
reloadTime:'Refresh Time',
|
||||||
},
|
},
|
||||||
@@ -211,7 +223,7 @@ export default {
|
|||||||
tabPane1: 'Account password login',
|
tabPane1: 'Account password login',
|
||||||
tabPane2: 'Login with phone number',
|
tabPane2: 'Login with phone number',
|
||||||
registerBtn: 'Register an account',
|
registerBtn: 'Register an account',
|
||||||
loginBtn: 'Login',
|
loginBtn: 'Sign In',
|
||||||
loginSuccess: 'Login successful',
|
loginSuccess: 'Login successful',
|
||||||
loginMethod: 'Other login methods:',
|
loginMethod: 'Other login methods:',
|
||||||
loginMethodWX: 'WeChat Scan Login',
|
loginMethodWX: 'WeChat Scan Login',
|
||||||
@@ -323,6 +335,7 @@ export default {
|
|||||||
mac:'NE MAC address',
|
mac:'NE MAC address',
|
||||||
macTip:'Able to locate the physical address (MAC) of the network element',
|
macTip:'Able to locate the physical address (MAC) of the network element',
|
||||||
port:'Port',
|
port:'Port',
|
||||||
|
portTip:'Maximum range 0~65535',
|
||||||
pvflag:'PV Flag',
|
pvflag:'PV Flag',
|
||||||
pnf:'Physical Network Element',
|
pnf:'Physical Network Element',
|
||||||
vnf:'Virtual Network Element',
|
vnf:'Virtual Network Element',
|
||||||
@@ -345,31 +358,31 @@ export default {
|
|||||||
backupManage: {
|
backupManage: {
|
||||||
setBackupTask: 'Set automatic backup time',
|
setBackupTask: 'Set automatic backup time',
|
||||||
neTypePlease: 'Query network element type',
|
neTypePlease: 'Query network element type',
|
||||||
neType: 'Type',
|
neType: 'NE Type',
|
||||||
neID: 'NE ID',
|
neID: 'NE ID',
|
||||||
fileName: 'File Name',
|
fileName: 'File Name',
|
||||||
createAt: 'CreateAt',
|
createAt: 'Create at',
|
||||||
remark:'Remark ',
|
remark:'Remark',
|
||||||
edit:'Edit Backup File',
|
edit:'Edit Backup File',
|
||||||
totalSure:'Confirm that {oper} records item number {id}?',
|
totalSure:'Confirm that {oper} records item number {id}?',
|
||||||
},
|
},
|
||||||
softwareManage: {
|
softwareManage: {
|
||||||
sendBtn: 'Distribute',
|
sendBtn: 'Distribute',
|
||||||
runBtn: 'Activation',
|
runBtn: 'Activate',
|
||||||
backBtn: 'Back',
|
backBtn: 'Rollback',
|
||||||
historyBtn: 'Distribution Record',
|
historyBtn: 'Distribution Record',
|
||||||
neTypePlease: 'Select network element type',
|
neTypePlease: 'Select network element type',
|
||||||
neType: 'Type',
|
neType: 'NE Type',
|
||||||
fileName: 'File Name',
|
fileName: 'File Name',
|
||||||
version: 'Version',
|
version: 'Version',
|
||||||
versionPlease: 'Version number cannot be empty',
|
versionPlease: 'Version number cannot be empty',
|
||||||
updateTime: 'Uploaded',
|
updateTime: 'Uploaded Time',
|
||||||
description: 'Description',
|
description: 'Description',
|
||||||
deleteTip: 'Are you sure to delete the data item with software [{fileName}]?',
|
deleteTip: 'Are you sure to delete the data item with software [{fileName}]?',
|
||||||
downloadTip: 'Are you sure to download the data item with software [{fileName}]?',
|
downloadTip: 'Are you sure to download the data item with software [{fileName}]?',
|
||||||
updateComment: 'software documentation',
|
updateComment: 'Comment',
|
||||||
updateCommentPlease: 'Please enter the software description',
|
updateCommentPlease: 'Please enter the software description',
|
||||||
updateFile: 'Software Files',
|
updateFile: 'Software File',
|
||||||
updateFilePlease: 'Please upload the updated software file',
|
updateFilePlease: 'Please upload the updated software file',
|
||||||
verifyFile: 'Verify File',
|
verifyFile: 'Verify File',
|
||||||
selectFile: 'SELECT FILE',
|
selectFile: 'SELECT FILE',
|
||||||
@@ -392,9 +405,9 @@ export default {
|
|||||||
},
|
},
|
||||||
license: {
|
license: {
|
||||||
neTypePlease: 'Select network element type',
|
neTypePlease: 'Select network element type',
|
||||||
neType: 'Type',
|
neType: 'NE Type',
|
||||||
fileName: 'File Name',
|
fileName: 'File Name',
|
||||||
createTime: 'Uploaded',
|
createTime: 'Uploaded Time',
|
||||||
comment: 'File Description',
|
comment: 'File Description',
|
||||||
updateComment: 'License Description',
|
updateComment: 'License Description',
|
||||||
updateCommentPlease: 'Please enter a license description',
|
updateCommentPlease: 'Please enter a license description',
|
||||||
@@ -429,6 +442,8 @@ export default {
|
|||||||
addSure:'Are you sure to submit the new record of Index: [{value}]? '
|
addSure:'Are you sure to submit the new record of Index: [{value}]? '
|
||||||
},
|
},
|
||||||
configParamForm: {
|
configParamForm: {
|
||||||
|
treeTitle: "Navigation Configuration",
|
||||||
|
treeSelectTip: "Select configuration item information in the left configuration navigation!",
|
||||||
neType: 'NE Type',
|
neType: 'NE Type',
|
||||||
neTypePleace: "Please select the network element type",
|
neTypePleace: "Please select the network element type",
|
||||||
noConfigData: "No data on configuration items",
|
noConfigData: "No data on configuration items",
|
||||||
@@ -454,74 +469,108 @@ export default {
|
|||||||
},
|
},
|
||||||
neUser: {
|
neUser: {
|
||||||
auth: {
|
auth: {
|
||||||
authInfo:' Authentication Info',
|
authInfo:'Authentication Info',
|
||||||
neTypePlease: 'Query network element type',
|
neTypePlease: 'Query network element Object',
|
||||||
neType: 'UDM Type',
|
neType: 'UDM Object',
|
||||||
export: 'Export',
|
export: 'Export',
|
||||||
exportConfirm: 'Are you sure to export all authentication user data?',
|
exportConfirm: 'Are you sure to export all authentication user data?',
|
||||||
import: 'Import',
|
import: 'Import',
|
||||||
loadDataConfirm: 'Are you sure you want to reload the data?',
|
loadDataConfirm: 'Are you sure you want to reload the data?',
|
||||||
loadData: 'LoadData',
|
loadData: 'Load Data',
|
||||||
loadDataTip: 'Successfully obtained updated data: {num} items. The system is updating the data internally. Please do not click repeatedly to obtain updates!!!',
|
loadDataTip: 'Successfully fetched load data: {num} entries, the system is internally updating the data. You can click reset to refresh the data list after the loading is finished, please don it repeat click to get update!!!!',
|
||||||
num: 'Number allocation ',
|
startIMSI: 'Start IMSI',
|
||||||
batchAddText: 'Batch Add ',
|
batchAddText: 'Batch Add',
|
||||||
batchDelText: 'Batch Del ',
|
batchDelText: 'Batch Delete',
|
||||||
delNum:'Number of deletions ',
|
numAdd: 'Number of releases',
|
||||||
imsiTip:'SUPI=MCC+MNC+MSIN MCC=mobile country code, consisting of three digits MNC=Mobile Network Number, consisting of two digits MSIN=Mobile Customer Identification Number, composed of 10 digits of equal length',
|
numDel: 'Number of deleted',
|
||||||
delSure:'Are you sure to delete the user with IMSI number: {imsi}?',
|
imsiTip: 'IMSI=MCC+MNC+MSIN',
|
||||||
noListData:'No network element list data yet',
|
imsiTip1: 'MCC=Mobile Country Code, consisting of three digits.',
|
||||||
|
imsiTip2: 'MNC = Mobile Network Number, consisting of two digits',
|
||||||
|
imsiTip3: 'MSIN = Mobile Subscriber Identification Number, consisting of 10 equal digits.',
|
||||||
|
amfTip: 'Authentication management field, maximum parameter length is 4',
|
||||||
|
algoIndexTip: 'Algorithm index, between 0 and 15',
|
||||||
|
kiTip: 'User signing key information, the maximum length of 32',
|
||||||
|
opcTip: 'The authentication key, OPC, is calculated from Ki and OP, OP is the root key of the operator, ki is the authentication key, and the maximum length is 32.',
|
||||||
|
delSure:'Are you sure you want to delete the user with IMSI number: {imsi}?',
|
||||||
},
|
},
|
||||||
sub: {
|
sub: {
|
||||||
subInfo:' Subscription Info',
|
subInfo:' Subscription Info',
|
||||||
neTypePlease: 'Query network element type',
|
neType: 'UDM Object',
|
||||||
neType: 'UDM Type',
|
|
||||||
export: 'Export',
|
export: 'Export',
|
||||||
exportConfirm: 'Are you sure to export all signed user data?',
|
exportConfirm: 'Are you sure to export all signed user data?',
|
||||||
import: 'Import',
|
import: 'Import',
|
||||||
loadDataConfirm: 'Are you sure you want to reload the data?',
|
loadDataConfirm: 'Are you sure you want to reload the data?',
|
||||||
loadData: 'LoadData',
|
loadData: 'Load Data',
|
||||||
loadDataTip: 'Successfully obtained updated data: {num} items. The system is updating the data internally. Please do not click repeatedly to obtain updates!!!',
|
loadDataTip: 'Successfully fetched load data: {num} entries, the system is internally updating the data. You can click reset to refresh the data list after the loading is finished, please don it repeat click to get update!!!!',
|
||||||
num: 'Number of deletions',
|
numAdd: 'Number of releases',
|
||||||
batchAddText: 'Batch Add ',
|
numDel: 'Number of deleted',
|
||||||
batchDelText: 'Batch Del ',
|
batchAddText: 'Batch Add',
|
||||||
|
batchDelText: 'Batch Delete',
|
||||||
|
enable:'Enable',
|
||||||
|
disable:'Disable',
|
||||||
startIMSI: 'Start IMSI',
|
startIMSI: 'Start IMSI',
|
||||||
msisdnTip:'Parameter maximum length: {msg}',
|
imsiTip: 'IMSI=MCC+MNC+MSIN',
|
||||||
arfbTip:'Restricted area template. In the restricted area specified by the template, the UE is not allowed to communicate with the network.',
|
imsiTip1: 'MCC=Mobile Country Code, consisting of three digits.',
|
||||||
sarTip:'Service area restriction template defines the allowed areas in which the UE can communicate with the network; defines the disallowed areas in which the UE and the network are not allowed to initiate Service Request or SM signaling to obtain user services.',
|
imsiTip2: 'MNC = Mobile Network Number, consisting of two digits',
|
||||||
micoTip:'Signed MICO business flag',
|
imsiTip3: 'MSIN = Mobile Subscriber Identification Number, consisting of 10 equal digits.',
|
||||||
rfspTip:'RFSP index, in NG-RAN, the index of a specific RRM configuration, the parameter is between 0 and 127',
|
msisdnTip: 'Maximum parameter length {num}',
|
||||||
epsFlagTip:'Whether to enable 4G EPS service, 0=disable, 1=enable',
|
inputTip: 'The maximum length of the parameter is {num}',
|
||||||
contextIdTip:'To sign up for the APN context ID, you must select it from the APN Context list.',
|
arfbTip: 'Restricted area template, in which the UE is not allowed to communicate with the network in the restricted area specified in the template',
|
||||||
staticIpTip:'Specify the static IP address used by mobile phone users when surfing the Internet. If it is "-", it means using a dynamic IP address.',
|
sarTip: 'Service Area Restriction template, defining permitted areas in which the UE can communicate with the network, and disallowed areas in which the UE and the network are not allowed to initiate Service Requests or SM signaling to obtain subscriber services',
|
||||||
epsOdbTip:"ODB (Operator-Determined Barring) operator-determined blocking, that is, the user's business ability to access the EPS network is determined by the operator. Selected --- the corresponding service is allowed Unselected --- the corresponding service is prohibited",
|
micoTip: 'Signed MICO business flag bits',
|
||||||
hplmnOdbTip:"HPLMN-ODB blocking determined by the home operator, that is, the user's service ability to access the EPS network is determined by the user's home operator. Selected --- the corresponding service is allowed Unselected -- the corresponding service is prohibited",
|
rfspTip:'RFSP index, in NG-RAN, the index of a specific RRM configuration, parameter between 0 and 127',
|
||||||
ardTip:'The access control flag (Access-Restriction-Data) can be used to distinguish 2G/3G/LTE users, which facilitates differentiated services for different types of users when 2G/3G/LTE networks coexist.',
|
ueTypeTip: 'Operator-defined subscriber UE Usage Type, integer, parameter between 0 and 127',
|
||||||
|
epsFlagTip: 'Enable or disable 4G EPS service',
|
||||||
|
contextIdTip: 'To sign up for an APN Context ID, you must select it from the APN Context list.',
|
||||||
|
apnContextTip: 'The list of APNs available to the phone, up to six, is defined in the HSS.',
|
||||||
|
staticIpTip: 'Specify the static IP address to be used by the cell phone user to access the Internet, and "-" means dynamic IP address is used.',
|
||||||
|
epsOdbTip: 'ODB (Operator-Determined Barring) Operator-determined blocking, i.e. the ability of a subscriber to access the EPS network is determined by the operator.',
|
||||||
|
hplmnOdbTip: 'HPLMN-ODB homing operator-determined blocking, i.e., the ability of a subscriber to access services in the EPS network is determined by the subscriber is homing operator',
|
||||||
|
ardTip:'Access-Restriction-Data (Access-Restriction-Data), can be used to distinguish between 2G/3G/LTE users, to facilitate the coexistence of 2G/3G/LTE network for different types of users to distinguish between the service',
|
||||||
},
|
},
|
||||||
base5G: {
|
pcf: {
|
||||||
neTypePlease: 'Query network element type',
|
neType: 'PCF Object',
|
||||||
neType: 'AMF Type',
|
export: 'Export',
|
||||||
|
exportConfirm: 'Confirm exporting all user policy control information data?',
|
||||||
|
import: 'Import',
|
||||||
|
addTitle: 'Adding Policy Control Information',
|
||||||
|
updateTitle: '{imsi} Policy control information',
|
||||||
|
startIMSI: 'Start IMSI',
|
||||||
|
batchAddText: 'Batch Add',
|
||||||
|
batchDelText: 'Batch Delete',
|
||||||
|
batchUpdateText: 'Batch Modify',
|
||||||
|
batchNum: 'Number of batches',
|
||||||
|
imsiTip: 'IMSI=MCC+MNC+MSIN',
|
||||||
|
imsiTip1: 'MCC=Mobile Country Code, consisting of three digits.',
|
||||||
|
imsiTip2: 'MNC = Mobile Network Number, consisting of two digits',
|
||||||
|
imsiTip3: 'MSIN = Mobile Subscriber Identification Number, consisting of 10 equal digits.',
|
||||||
|
delSure:'Are you sure you want to delete the user with IMSI number: {imsi}?',
|
||||||
},
|
},
|
||||||
ue: {
|
base5G: {
|
||||||
neTypePlease: 'Query network element type',
|
neType: 'AMF Object',
|
||||||
neType: 'SMF Type',
|
|
||||||
},
|
},
|
||||||
ims: {
|
n3iwf: {
|
||||||
neTypePlease: 'Query network element type',
|
neType: 'N3IWF Object',
|
||||||
neType: 'IMS Type',
|
},
|
||||||
|
ue: {
|
||||||
|
neType: 'SMF Object',
|
||||||
|
},
|
||||||
|
ims: {
|
||||||
|
neType: 'IMS Object',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
perfManage: {
|
perfManage: {
|
||||||
taskManage:{
|
taskManage:{
|
||||||
taskId: 'Task ID',
|
taskId: 'Task ID',
|
||||||
neType: 'NE Type',
|
neType: 'NE Type',
|
||||||
size: 'Measurement Dimensionality',
|
size: 'Time Granularity',
|
||||||
taskStatus: 'Task Status',
|
taskStatus: 'Task Status',
|
||||||
addUser: 'Creator',
|
addUser: 'Creator',
|
||||||
addTime: 'Creation Time',
|
addTime: 'Creation Time',
|
||||||
granulOption:'Particle',
|
granulOption:'Granularity',
|
||||||
performanceList:'Performance Set',
|
performanceList:'Performance Set',
|
||||||
period:'Measurement period',
|
period:'Measuring Period',
|
||||||
plan:'Measuring plan',
|
plan:'Measuring Plan',
|
||||||
performanceSelect:'Please select a performance measurement dataset',
|
performanceSelect:'Please select a performance measurement dataset',
|
||||||
delPerfTip: 'Are you sure to delete the data item with record number {num}',
|
delPerfTip: 'Are you sure to delete the data item with record number {num}',
|
||||||
delPerf: 'Successfully deleted task {num}',
|
delPerf: 'Successfully deleted task {num}',
|
||||||
@@ -535,6 +584,15 @@ export default {
|
|||||||
stopSure:'Confirm the pending task with number [{row.id}]?',
|
stopSure:'Confirm the pending task with number [{row.id}]?',
|
||||||
letUpWarning:'Prohibit activation of activated tasks',
|
letUpWarning:'Prohibit activation of activated tasks',
|
||||||
stopWarning: 'Prohibit suspending inactive measurement tasks',
|
stopWarning: 'Prohibit suspending inactive measurement tasks',
|
||||||
|
weekPlan:'Weekly Plan',
|
||||||
|
monthPlan:'Monthly Plan',
|
||||||
|
one:'Monday',
|
||||||
|
two:'Tuesday',
|
||||||
|
three:'Wednesday',
|
||||||
|
four:'Thursday',
|
||||||
|
five:'Friday',
|
||||||
|
six:'Saturday',
|
||||||
|
seven:'Sunday',
|
||||||
},
|
},
|
||||||
perfThreshold:{
|
perfThreshold:{
|
||||||
thresholdValue:'Threshold Value',
|
thresholdValue:'Threshold Value',
|
||||||
@@ -546,7 +604,7 @@ export default {
|
|||||||
errorThreInfo: 'Failed to obtain threshold information',
|
errorThreInfo: 'Failed to obtain threshold information',
|
||||||
staticSet:'Statistical Settings',
|
staticSet:'Statistical Settings',
|
||||||
threValue:'Threshold Value',
|
threValue:'Threshold Value',
|
||||||
alarmLevel:'Alarm Level',
|
alarmLevel:'Severity',
|
||||||
status:'Status',
|
status:'Status',
|
||||||
letupSure:'Confirm the performance threshold of activation number [{id}]?',
|
letupSure:'Confirm the performance threshold of activation number [{id}]?',
|
||||||
stopSure:'Confirm the performance threshold of the suspension number [{id}]?',
|
stopSure:'Confirm the performance threshold of the suspension number [{id}]?',
|
||||||
@@ -558,18 +616,25 @@ export default {
|
|||||||
type:'NE Type',
|
type:'NE Type',
|
||||||
neName:'Ne Name',
|
neName:'Ne Name',
|
||||||
granulOption:'Granularity',
|
granulOption:'Granularity',
|
||||||
kpiCode:'Statistical Code',
|
kpiCode:'KPI Code',
|
||||||
kpiId:'Statistical Item',
|
kpiId:'KPI ID',
|
||||||
value:'Value',
|
value:'Value',
|
||||||
startTime:'Start Time',
|
startTime:'Start Time',
|
||||||
endTime:'End Time',
|
endTime:'End Time',
|
||||||
},
|
},
|
||||||
goldTarget:{
|
goldTarget:{
|
||||||
type:'NE Type',
|
type:'NE Type',
|
||||||
enTitle:'Gold Indicator Item',
|
enTitle:'KPI ID',
|
||||||
value:'Value',
|
value:'Value',
|
||||||
startTime:'Start Time',
|
startTime:'Start Time',
|
||||||
endTime:'End Time',
|
endTime:'End Time',
|
||||||
|
particle: 'Particle Ssize',
|
||||||
|
timeFrame: 'Time Range',
|
||||||
|
nullTip:'There are no statistical data within this time range',
|
||||||
|
kpiTitle:'KPI Statistics Chart',
|
||||||
|
allData:'Complete Data',
|
||||||
|
makeLine:'Statistical Chart',
|
||||||
|
time:'Time',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
traceManage: {
|
traceManage: {
|
||||||
@@ -578,11 +643,11 @@ export default {
|
|||||||
imsiPlease: 'Please enter IMSI',
|
imsiPlease: 'Please enter IMSI',
|
||||||
msisdn: 'MSISDN',
|
msisdn: 'MSISDN',
|
||||||
msisdnPlease: 'Please enter MSISDN',
|
msisdnPlease: 'Please enter MSISDN',
|
||||||
trackTaskId: 'Tracking task tag',
|
trackTaskId: 'Task ID',
|
||||||
srcIp: 'Source IP address',
|
srcIp: 'Source IP Address',
|
||||||
dstIp: 'Destination IP address',
|
dstIp: 'Destination IP Address',
|
||||||
signalType: 'Signaling type',
|
signalType: 'Signaling Type',
|
||||||
msgDirect: 'Message Direct',
|
msgDirect: 'Message Direction',
|
||||||
msgType: 'Message Type',
|
msgType: 'Message Type',
|
||||||
rowTime: 'Record Time',
|
rowTime: 'Record Time',
|
||||||
signalData: 'Signaling Data',
|
signalData: 'Signaling Data',
|
||||||
@@ -593,11 +658,11 @@ export default {
|
|||||||
taskDownTip: 'Confirm downloading the signaling details HTML file?',
|
taskDownTip: 'Confirm downloading the signaling details HTML file?',
|
||||||
},
|
},
|
||||||
pcap: {
|
pcap: {
|
||||||
cardTitle: 'PCAP capture',
|
cardTitle: 'PCAP Capture',
|
||||||
neType: 'Type',
|
neType: 'Type',
|
||||||
neTypePlease: 'Please select the type of network element',
|
neTypePlease: 'Please select the type of network element',
|
||||||
neIp: 'IP address',
|
neIp: 'IP Address',
|
||||||
capArg: 'Capture parameters',
|
capArg: 'Capture Parameters',
|
||||||
capArgPlease: 'Please enter tcpdump any support parameters!',
|
capArgPlease: 'Please enter tcpdump any support parameters!',
|
||||||
capTime: 'Duration in seconds',
|
capTime: 'Duration in seconds',
|
||||||
capTimePlease: 'Please enter the duration, up to 120 seconds',
|
capTimePlease: 'Please enter the duration, up to 120 seconds',
|
||||||
@@ -612,7 +677,7 @@ export default {
|
|||||||
execTimeout: 'Execution timeout',
|
execTimeout: 'Execution timeout',
|
||||||
execSuccess: 'Execution completed',
|
execSuccess: 'Execution completed',
|
||||||
execFailed: 'Execution failed',
|
execFailed: 'Execution failed',
|
||||||
execBreak: 'break execution',
|
execBreak: 'Break Execution',
|
||||||
noFileName: 'Invalid file name',
|
noFileName: 'Invalid file name',
|
||||||
execUPFStartA: 'Executed, please stop capturing packets according to the situation',
|
execUPFStartA: 'Executed, please stop capturing packets according to the situation',
|
||||||
execUPFStart: 'Execution successful, please stop capturing packets according to the situation',
|
execUPFStart: 'Execution successful, please stop capturing packets according to the situation',
|
||||||
@@ -625,7 +690,7 @@ export default {
|
|||||||
neTypePlease: 'Query network element type',
|
neTypePlease: 'Query network element type',
|
||||||
neType: 'NE Type',
|
neType: 'NE Type',
|
||||||
neID: 'NE ID',
|
neID: 'NE ID',
|
||||||
trackType: 'Tracing type',
|
trackType: 'Tracing Type',
|
||||||
trackTypePlease: 'Please select a tracing type',
|
trackTypePlease: 'Please select a tracing type',
|
||||||
creater: 'Created by',
|
creater: 'Created by',
|
||||||
startTime: 'Start Time',
|
startTime: 'Start Time',
|
||||||
@@ -636,20 +701,20 @@ export default {
|
|||||||
imsi: 'IMSI',
|
imsi: 'IMSI',
|
||||||
imsiPlease: 'Please enter IMSI',
|
imsiPlease: 'Please enter IMSI',
|
||||||
imsiTip: 'Mobile communication IMSI number',
|
imsiTip: 'Mobile communication IMSI number',
|
||||||
srcIp: 'Source IP address',
|
srcIp: 'Source IP Address',
|
||||||
srcIpPlease: 'Please enter the source IP address',
|
srcIpPlease: 'Please enter the source IP address',
|
||||||
srcIpTip: 'Current sender IPv4 address',
|
srcIpTip: 'Current sender IPv4 address',
|
||||||
dstIp: 'Destination IP address',
|
dstIp: 'Destination IP Address',
|
||||||
dstIpPlease: 'Please enter the destination IP address',
|
dstIpPlease: 'Please enter the destination IP address',
|
||||||
dstIpTip: 'IPv4 address of the receiving end of the other party',
|
dstIpTip: 'IPv4 address of the receiving end of the other party',
|
||||||
interfaces: 'Signaling interface',
|
interfaces: 'Signaling Interface',
|
||||||
interfacesPlease: 'Please enter the signaling interface',
|
interfacesPlease: 'Please enter the signaling interface',
|
||||||
signalPort: 'SignalPort',
|
signalPort: 'Signal Port',
|
||||||
signalPortPlease: 'Please enter the signaling port',
|
signalPortPlease: 'Please enter the signaling port',
|
||||||
signalPortTip: 'Port corresponding to the interface',
|
signalPortTip: 'Port corresponding to the interface',
|
||||||
rangePicker: 'Start End Time',
|
rangePicker: 'Start/End Time',
|
||||||
rangePickerPlease: 'Please select the start and end time of the task',
|
rangePickerPlease: 'Please select the start and end time of the task',
|
||||||
comment: 'Task description',
|
comment: 'Task Description',
|
||||||
commentPlease: 'Task description can be entered',
|
commentPlease: 'Task description can be entered',
|
||||||
addTask: 'Add Task',
|
addTask: 'Add Task',
|
||||||
editTask: 'Modify Task',
|
editTask: 'Modify Task',
|
||||||
@@ -677,17 +742,6 @@ export default {
|
|||||||
mySelf: 'Personalization',
|
mySelf: 'Personalization',
|
||||||
exportAll: 'Export All',
|
exportAll: 'Export All',
|
||||||
disPlayFilfter: 'Display Filters',
|
disPlayFilfter: 'Display Filters',
|
||||||
autoConfirm: 'Automatic Confirm',
|
|
||||||
critical:'Critical',
|
|
||||||
major:'Major',
|
|
||||||
minor:'Minor',
|
|
||||||
warning:'Warning',
|
|
||||||
eventAlarm:'Event',
|
|
||||||
communicationAlarm:'CommunicationAlarm',
|
|
||||||
equipmentAlarm:'EquipmentAlarm',
|
|
||||||
processingFailure:'ProcessingFailure',
|
|
||||||
environmentalAlarm:'EnvironmentalAlarm',
|
|
||||||
qualityOfServiceAlarm:'QualityOfServiceAlarm',
|
|
||||||
alarmId:'ID',
|
alarmId:'ID',
|
||||||
alarmTitle:'Title',
|
alarmTitle:'Title',
|
||||||
clearUser:'Clear User',
|
clearUser:'Clear User',
|
||||||
@@ -706,7 +760,7 @@ export default {
|
|||||||
ackTime:'Ack Time',
|
ackTime:'Ack Time',
|
||||||
ackError:'Please do not confirm again',
|
ackError:'Please do not confirm again',
|
||||||
syncMyself:'Manual Synchronization',
|
syncMyself:'Manual Synchronization',
|
||||||
realTitle:'Title',
|
realTitle:'English Title',
|
||||||
objectNf:'Object NE',
|
objectNf:'Object NE',
|
||||||
helpFile:'Help Documentation',
|
helpFile:'Help Documentation',
|
||||||
set:'Set',
|
set:'Set',
|
||||||
@@ -723,12 +777,12 @@ export default {
|
|||||||
exportSure:'Confirm whether to export all historical alarm information',
|
exportSure:'Confirm whether to export all historical alarm information',
|
||||||
},
|
},
|
||||||
faultSetting:{
|
faultSetting:{
|
||||||
interfaceType:'Alarm forwarding interface class',
|
interfaceType:'Type',
|
||||||
email:'Email',
|
email:'Email',
|
||||||
sms:'SMS',
|
sms:'SMS',
|
||||||
save:'Save',
|
save:'Save',
|
||||||
noChange:'There is no change in the alarm forwarding interface settings.',
|
noChange:'There is no change in the alarm forwarding settings.',
|
||||||
forwardSet:'Alarm forwarding interface setting',
|
forwardSet:'Alarm Forwarding Setting',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
logManage:{
|
logManage:{
|
||||||
@@ -792,24 +846,23 @@ export default {
|
|||||||
network: 'Network',
|
network: 'Network',
|
||||||
loadDetail: "Load Factor",
|
loadDetail: "Load Factor",
|
||||||
resourceUsage: "Resource utilization rate",
|
resourceUsage: "Resource utilization rate",
|
||||||
read: 'retrieve',
|
read: 'Read',
|
||||||
write: 'write',
|
write: 'Write',
|
||||||
readWriteCount: 'Number of reads and writes',
|
readWriteCount: 'Number of reads and writes',
|
||||||
count: 'substandard',
|
count: 'Substandard',
|
||||||
readWriteTime: 'Read/Write Delay',
|
readWriteTime: 'Read/Write Delay',
|
||||||
up: 'up train',
|
up: 'Uplink',
|
||||||
down: 'down train',
|
down: 'Downlink',
|
||||||
},
|
},
|
||||||
online:{
|
online:{
|
||||||
mettingId:'Session Number',
|
mettingId:'Session Number',
|
||||||
account:'Account',
|
account:'Account',
|
||||||
class:'Department',
|
|
||||||
host:'Host',
|
host:'Host',
|
||||||
loginDes:'Login Location',
|
loginDes:'Login Location',
|
||||||
os:'OS',
|
os:'OS',
|
||||||
lib:'Browser',
|
lib:'Browser',
|
||||||
loginTime:'Log in time',
|
loginTime:'Login Time',
|
||||||
getOut:'Forced retreat',
|
getOut:'Forced Quit',
|
||||||
getOutSure:'Confirm the forced logout of the user whose login account is {userName} ?',
|
getOutSure:'Confirm the forced logout of the user whose login account is {userName} ?',
|
||||||
},
|
},
|
||||||
system:{
|
system:{
|
||||||
@@ -822,10 +875,10 @@ export default {
|
|||||||
runTime:'Running Time',
|
runTime:'Running Time',
|
||||||
cpuInfo:'CPU Information',
|
cpuInfo:'CPU Information',
|
||||||
model:'Model',
|
model:'Model',
|
||||||
hz:'Rate Hz',
|
hz:'Rate HZ',
|
||||||
cores:'Number of Cores',
|
cores:'Number of Cores',
|
||||||
usage:'Usage Rate (%)',
|
usage:'Usage Rate (%)',
|
||||||
memory:'memory Information',
|
memory:'Memory Information',
|
||||||
totalMemory:'Total Memory',
|
totalMemory:'Total Memory',
|
||||||
lastMemory:'Remaining Memory',
|
lastMemory:'Remaining Memory',
|
||||||
proMemory:'Total process memory',
|
proMemory:'Total process memory',
|
||||||
@@ -847,42 +900,38 @@ export default {
|
|||||||
spaceUsage:'Space Usage (%)'
|
spaceUsage:'Space Usage (%)'
|
||||||
},
|
},
|
||||||
job: {
|
job: {
|
||||||
jobName: "Job Name",
|
jobName: "Name",
|
||||||
jobNamePlease: 'Please enter the task name correctly, limited to 2-50 characters',
|
jobNamePlease: 'Please enter the task name correctly, limited to 2-50 characters',
|
||||||
jobGroup: "Job Group",
|
jobGroup: "Group",
|
||||||
invokeTarget: "Invoke Target",
|
invokeTarget: "Invoke",
|
||||||
invokeTargetPlease: 'Please enter the call target correctly, limited to 2-50 characters.',
|
invokeTargetPlease: 'Please enter the call target correctly, limited to 2-50 characters.',
|
||||||
invokeTargetTip: "Parameter description: support for preset incoming parameters, serialized processing parameters in the processor",
|
invokeTargetTip: "Parameter description: support for preset incoming parameters, serialized processing parameters in the processor",
|
||||||
cronExpression: "Cron Expressions",
|
cronExpression: "Cron",
|
||||||
cronExpressionPlease: 'Please enter or generate a cron execution expression',
|
cronExpressionPlease: 'Please enter or generate a cron execution expression',
|
||||||
cronExpressionTip: "Example of an expression:0/20 * * * * ?",
|
cronExpressionTip: "Example of an expression:0/20 * * * * ?",
|
||||||
cronExpressionTip1: "Illustrative example: Execute tasks every 20 seconds",
|
cronExpressionTip1: "Illustrative example: Execute tasks every 20 seconds",
|
||||||
cronExpressionNew: "Generating Expressions",
|
cronExpressionNew: "Generating Expression",
|
||||||
status: "Status",
|
status: "Status",
|
||||||
status0: "Disable",
|
|
||||||
status1: "Opens",
|
|
||||||
status00: "Pause",
|
|
||||||
status01: "Normalcy",
|
|
||||||
statusChange: "Are you sure you want the {text} {num} job?",
|
statusChange: "Are you sure you want the {text} {num} job?",
|
||||||
saveLog: "Recording log",
|
saveLog: "Log",
|
||||||
tipRowErr: "Errors in the recording of jobs",
|
tipRowErr: "Errors in the recording of jobs",
|
||||||
viewInfoErr: "Failed to get job information",
|
viewInfoErr: "Failed to get job information",
|
||||||
viewJob: "Job Info",
|
viewJob: "Task Info",
|
||||||
addJob: "Add Job",
|
addJob: "Add Task",
|
||||||
editJob: "Modify Job",
|
editJob: "Modify Task",
|
||||||
runOne: "execute once",
|
runOne: "execute once",
|
||||||
runOneTip: "Are you sure you want to perform a [{num}] job right away?",
|
runOneTip: "Are you sure you want to perform a [{num}] task right away?",
|
||||||
runOneOk: "{num} Executed successfully",
|
runOneOk: "{num} Executed successfully",
|
||||||
delTip: "Are you sure you want to delete job number [{num}]?",
|
delTip: "Are you sure you want to delete task number [{num}]?",
|
||||||
delOk: "Deleted Successfully",
|
delOk: "Deleted Successfully",
|
||||||
resetTip: "Sure you want to reset and refresh the scheduling job?",
|
resetTip: "Sure you want to reset and refresh the scheduling task?",
|
||||||
resetOk: "Reset Successful",
|
resetOk: "Reset Successful",
|
||||||
exportTip: "Confirm exporting xlsx table files based on search criteria?",
|
exportTip: "Confirm exporting xlsx table files based on search criteria?",
|
||||||
exportOk: "Completed Export",
|
exportOk: "Completed Export",
|
||||||
resetQueue: "Reset Queue",
|
resetQueue: "Reset Queue",
|
||||||
jobLog: "Job Log",
|
jobLog: "Task Log",
|
||||||
createTime: "CreateTime",
|
createTime: "CreateTime",
|
||||||
targetParams: "TargetParams",
|
targetParams: "Arguments",
|
||||||
targetParamsPlease: 'Call target incoming parameters, only support json strings',
|
targetParamsPlease: 'Call target incoming parameters, only support json strings',
|
||||||
misfirePolicy: "Error Strategy",
|
misfirePolicy: "Error Strategy",
|
||||||
misfirePolicy1: "Immediate Implementation",
|
misfirePolicy1: "Immediate Implementation",
|
||||||
@@ -899,7 +948,7 @@ export default {
|
|||||||
invokeTarget: "Invoke Target",
|
invokeTarget: "Invoke Target",
|
||||||
status: "Status",
|
status: "Status",
|
||||||
status0: "Failures",
|
status0: "Failures",
|
||||||
status1: "Normalcy",
|
status1: "Active",
|
||||||
createTime: "Create Time",
|
createTime: "Create Time",
|
||||||
costTime: "Cost Time",
|
costTime: "Cost Time",
|
||||||
viewLog: "Scheduling log Info",
|
viewLog: "Scheduling log Info",
|
||||||
@@ -952,12 +1001,12 @@ export default {
|
|||||||
},
|
},
|
||||||
system:{
|
system:{
|
||||||
user: {
|
user: {
|
||||||
userInfo:' User Info',
|
userInfo:'User Info',
|
||||||
userNum: 'User Number',
|
userNum: 'User Number',
|
||||||
account: 'Account',
|
account: 'Account',
|
||||||
userName: 'User Name',
|
userName: 'User Name',
|
||||||
permission: 'Permission',
|
permission: 'Role',
|
||||||
className: 'Class Name',
|
className: 'Department',
|
||||||
loginIp: 'Login Address',
|
loginIp: 'Login Address',
|
||||||
loginTime: 'Login Time',
|
loginTime: 'Login Time',
|
||||||
status: 'Status',
|
status: 'Status',
|
||||||
@@ -968,9 +1017,9 @@ export default {
|
|||||||
phoneTip:'Please enter the correct phone number',
|
phoneTip:'Please enter the correct phone number',
|
||||||
resetPwd:'Reset Password',
|
resetPwd:'Reset Password',
|
||||||
start:'Enable',
|
start:'Enable',
|
||||||
stop:'Deactivate',
|
stop:'Pending',
|
||||||
normalcy:'normalcy',
|
normalcy:'Active',
|
||||||
deactivate:'deactivate',
|
deactivate:'Pending',
|
||||||
delSuss:'Successfully deleted',
|
delSuss:'Successfully deleted',
|
||||||
sureTip:'Are you sure you want to {text} {userName} user?',
|
sureTip:'Are you sure you want to {text} {userName} user?',
|
||||||
delSure:'Confirm deletion of data item with user ID {userId}?',
|
delSure:'Confirm deletion of data item with user ID {userId}?',
|
||||||
@@ -1018,13 +1067,14 @@ export default {
|
|||||||
refreshCacheOk: "Refresh Cache Successful",
|
refreshCacheOk: "Refresh Cache Successful",
|
||||||
},
|
},
|
||||||
setting: {
|
setting: {
|
||||||
charMaxLen: 'bit character length',
|
charMaxLen: 'characters length',
|
||||||
saveSubmit: 'Submit Save',
|
saveSubmit: 'Submit&Save',
|
||||||
saveSuccess: 'Submit Save Successful',
|
saveSuccess: 'Submit ands Save Successful',
|
||||||
revert: 'Vat',
|
revert: 'Reset',
|
||||||
revertSuccess: 'Vat Successful',
|
revertSuccess: 'Reset Successful',
|
||||||
uploadFormat: 'Only the upload image format ({format}) is supported',
|
uploadFile: 'Upload File',
|
||||||
uploadSize: 'Image file size must be less than {size}MB',
|
uploadFormat: 'Only the upload file format ({format}) is supported',
|
||||||
|
uploadSize: 'The file size must be less than {size}MB.',
|
||||||
uploadSuccess: 'File uploaded successfully, submit and save to take effect',
|
uploadSuccess: 'File uploaded successfully, submit and save to take effect',
|
||||||
sysLogo: 'System Logo',
|
sysLogo: 'System Logo',
|
||||||
sysLogoBrand: 'Brand',
|
sysLogoBrand: 'Brand',
|
||||||
@@ -1034,18 +1084,16 @@ export default {
|
|||||||
sysLogoTipContentUpload: 'Are you sure you want to upload the logo file?',
|
sysLogoTipContentUpload: 'Are you sure you want to upload the logo file?',
|
||||||
sysLogoInstruction: 'The system logo display style is shown in the preview area.',
|
sysLogoInstruction: 'The system logo display style is shown in the preview area.',
|
||||||
sysLogoInstruction1: 'If you want to change the image, please adjust it accordingly before uploading.',
|
sysLogoInstruction1: 'If you want to change the image, please adjust it accordingly before uploading.',
|
||||||
sysLogoInstruction2: 'Show the whole picture to the system logo area, please use transparent background, size ratio size',
|
sysLogoInstruction2: 'Show the whole picture to the system logo area, please use transparent background, size ratio',
|
||||||
sysLogoInstruction3: 'Displayed as logo + system name to the system logo area.',
|
sysLogoInstruction3: 'Displayed as logo + system name to the system logo area.',
|
||||||
sysLogoInstruction4: 'Logo size ratio size',
|
sysLogoInstruction4: 'Logo size ratio',
|
||||||
sysName: 'System Name',
|
sysName: 'System Name',
|
||||||
sysNamePlease: 'Please enter the system name',
|
|
||||||
sysNameLimitation: 'System Name Restrictions',
|
sysNameLimitation: 'System Name Restrictions',
|
||||||
sysNameTipContent: 'Confirm that you want to submit the current changed system name?',
|
sysNameTipContent: 'Confirm that you want to submit the current changed system name?',
|
||||||
sysCopyright: 'Copyright Notice',
|
sysCopyright: 'Copyright Notice',
|
||||||
sysCopyrightPlease: 'Please enter copyright notice',
|
|
||||||
sysCopyrightLimitation: 'Copyright Notice Limitation',
|
sysCopyrightLimitation: 'Copyright Notice Limitation',
|
||||||
sysCopyrightTipContent: 'Confirmation of submitting a copyright notice for the current change?',
|
sysCopyrightTipContent: 'Confirmation of submitting a copyright notice for the current change?',
|
||||||
sysLoginBg: 'Login screen background',
|
sysLoginBg: 'Login Screen Background',
|
||||||
sysLoginBgNone: 'No background image',
|
sysLoginBgNone: 'No background image',
|
||||||
sysLoginBgUpload: 'Upload background image',
|
sysLoginBgUpload: 'Upload background image',
|
||||||
sysLoginBgTipContentUpload: 'Confirmed to upload login screen background file?',
|
sysLoginBgTipContentUpload: 'Confirmed to upload login screen background file?',
|
||||||
@@ -1054,6 +1102,22 @@ export default {
|
|||||||
sysLoginBgInstruction: 'The background style of the system login interface is shown in the preview area, please refer to the actual display.',
|
sysLoginBgInstruction: 'The background style of the system login interface is shown in the preview area, please refer to the actual display.',
|
||||||
sysLoginBgInstruction1: 'Please select the appropriate image for uploading.',
|
sysLoginBgInstruction1: 'Please select the appropriate image for uploading.',
|
||||||
sysLoginBgInstruction2: 'Restore the background image to the initial system default background by clicking the Restore button.',
|
sysLoginBgInstruction2: 'Restore the background image to the initial system default background by clicking the Restore button.',
|
||||||
|
sysHelpDoc: 'System User Documentation',
|
||||||
|
sysHelpDocTipContentUpload: 'Are you sure you want to upload the system documentation?',
|
||||||
|
sysHelpDocTipContent: 'Confirm that you want to submit system usage documentation for the current [{lang}] change?',
|
||||||
|
sysHelpDocOpen: 'Document Access',
|
||||||
|
sysHelpDocInstruction: 'Description of system functions and use, PDF document manual',
|
||||||
|
sysOfficialUrl: 'Official Link',
|
||||||
|
sysOfficialUrlErrTip: 'Please fill in a valid link address http(s)://',
|
||||||
|
sysOfficialUrlTipContent: 'Do you confirm that you want to submit the current change of the official website address?',
|
||||||
|
sysOfficialUrlNo: 'No link address',
|
||||||
|
sysOfficialUrlOpen: 'Open the official website.',
|
||||||
|
sysOfficialUrlInstruction: 'Official website link address',
|
||||||
|
sysOfficialUrlInstruction1: 'start, if you need to hide do not jump to fill in the',
|
||||||
|
i18n: "Internationalization Switch",
|
||||||
|
i18nOpen: "Display Switch",
|
||||||
|
i18nDefault: "Default Languages",
|
||||||
|
i18nInstruction: 'Whether to display the internationalization switch and set the system default language',
|
||||||
},
|
},
|
||||||
role:{
|
role:{
|
||||||
allScopeOptions:'All data permissions',
|
allScopeOptions:'All data permissions',
|
||||||
@@ -1071,7 +1135,7 @@ export default {
|
|||||||
roleInfo:'Role information',
|
roleInfo:'Role information',
|
||||||
distribute:'Assign data permissions',
|
distribute:'Assign data permissions',
|
||||||
open:'Enable',
|
open:'Enable',
|
||||||
close:'Deactivate',
|
close:'Pending',
|
||||||
statusSure:'Are you sure you want {text} {roleName} role?',
|
statusSure:'Are you sure you want {text} {roleName} role?',
|
||||||
statusFailed:'{roleName} {text} failed',
|
statusFailed:'{roleName} {text} failed',
|
||||||
delSure:'Confirm to delete the data item with role number [{roleId}]?',
|
delSure:'Confirm to delete the data item with role number [{roleId}]?',
|
||||||
@@ -1082,8 +1146,8 @@ export default {
|
|||||||
openSwitch:'Expand/Collapse',
|
openSwitch:'Expand/Collapse',
|
||||||
selAllSwitch:'Select all/Deselect all',
|
selAllSwitch:'Select all/Deselect all',
|
||||||
relationSwitch:'Father and son linkage',
|
relationSwitch:'Father and son linkage',
|
||||||
normal:'Normal',
|
normal:'Active',
|
||||||
stop:'Pause',
|
stop:'Pending',
|
||||||
preScope:'Scope of authority',
|
preScope:'Scope of authority',
|
||||||
dataPer:'Data permission',
|
dataPer:'Data permission',
|
||||||
userId:'User Number',
|
userId:'User Number',
|
||||||
@@ -1134,7 +1198,7 @@ export default {
|
|||||||
},
|
},
|
||||||
log:{
|
log:{
|
||||||
operate:{
|
operate:{
|
||||||
operId:'Log Number',
|
operId:'ID',
|
||||||
moduleName:'Module Name',
|
moduleName:'Module Name',
|
||||||
workType:'Business Type',
|
workType:'Business Type',
|
||||||
operUser:'Operator',
|
operUser:'Operator',
|
||||||
@@ -1176,7 +1240,7 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
menu:{
|
menu:{
|
||||||
menuInfo:'Menu Information',
|
menuInfo:' Menu Information',
|
||||||
menuName:'Menu Name',
|
menuName:'Menu Name',
|
||||||
menuId:'Menu Number',
|
menuId:'Menu Number',
|
||||||
menuSort:'Menu Sort',
|
menuSort:'Menu Sort',
|
||||||
@@ -1206,7 +1270,7 @@ export default {
|
|||||||
pathTip:`The accessed routing address, such as: user, /auth 1. If the network address requires internal access, start with http(s):// Menu behavior (root node): The current window opens the menu behavior, (non-root node) :Embedded window. 2. If the network address requires external access, set the internal address option to No. Menu behavior: Open a new tab 3. If the embedded subpage needs to hide the page, set the display status option to Hide address splicing to embed routing. address`,
|
pathTip:`The accessed routing address, such as: user, /auth 1. If the network address requires internal access, start with http(s):// Menu behavior (root node): The current window opens the menu behavior, (non-root node) :Embedded window. 2. If the network address requires external access, set the internal address option to No. Menu behavior: Open a new tab 3. If the embedded subpage needs to hide the page, set the display status option to Hide address splicing to embed routing. address`,
|
||||||
sonPage:'Subpage address',
|
sonPage:'Subpage address',
|
||||||
componentTip:' The component path accessed by views in the page component directory, such as: system/user/index Note: The routing address without the .vue file suffix is the network address and can be filled in as a link',
|
componentTip:' The component path accessed by views in the page component directory, such as: system/user/index Note: The routing address without the .vue file suffix is the network address and can be filled in as a link',
|
||||||
perms:`Permission identification example: monitor:server:query Permission identification is used in the back-end controller, such as: @PreAuthorize({ hasPermissions: ['monitor:server:query'] }) Permission identification is used in the front-end Vue page, such as: v-perms:has="['monitor:server:query']"`
|
perms:`Permission identification example: monitor:server:query Permission identification is used in the back-end controller, such as:['monitor:server:query'] Permission identification is used in the front-end Vue page, such as: v-perms:has="['monitor:server:query']"`
|
||||||
},
|
},
|
||||||
dict:{
|
dict:{
|
||||||
dictInfo:'Dictionary Type Information',
|
dictInfo:'Dictionary Type Information',
|
||||||
@@ -1250,7 +1314,6 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
mmlManage: {
|
mmlManage: {
|
||||||
operationtitle: "Interface Settings",
|
|
||||||
cmdTitle: "Command Navigator",
|
cmdTitle: "Command Navigator",
|
||||||
cmdConsole: "consoles",
|
cmdConsole: "consoles",
|
||||||
cmdOpTip: "Select the item to be operated in the left command navigation!",
|
cmdOpTip: "Select the item to be operated in the left command navigation!",
|
||||||
@@ -1263,10 +1326,14 @@ export default {
|
|||||||
requireIpv6: "{display} Not a legitimate IPV6 address.",
|
requireIpv6: "{display} Not a legitimate IPV6 address.",
|
||||||
requireEnum: "{display} is not a reasonable enumeration value.",
|
requireEnum: "{display} is not a reasonable enumeration value.",
|
||||||
requireBool: "{display} is not a reasonable boolean value.",
|
requireBool: "{display} is not a reasonable boolean value.",
|
||||||
clearForm: "Clear Forms",
|
cmdQuickEntry: "Command Quick Entry",
|
||||||
clearLog: "Clearing logs",
|
cmdParamPanel: "Parameter Panel",
|
||||||
|
clearForm: "Reset",
|
||||||
|
clearLog: "Clear Logs",
|
||||||
exec: "Execute",
|
exec: "Execute",
|
||||||
cmdAwait: "Waiting for a command to be sent",
|
cmdAwait: "Waiting for a command to be sent",
|
||||||
|
uploadFileTip: 'Are you sure you want to upload the file?',
|
||||||
|
uploadFileOk: 'File Upload Successful',
|
||||||
omcOperate:{
|
omcOperate:{
|
||||||
noOMC: "No OMC network elements",
|
noOMC: "No OMC network elements",
|
||||||
},
|
},
|
||||||
@@ -1274,6 +1341,7 @@ export default {
|
|||||||
noUDM: "No UDM network elements",
|
noUDM: "No UDM network elements",
|
||||||
},
|
},
|
||||||
mmlSet: {
|
mmlSet: {
|
||||||
|
operationtitle: "Interface Settings",
|
||||||
saveText: "Save Settings",
|
saveText: "Save Settings",
|
||||||
ipadd: "Listening to IP addresses",
|
ipadd: "Listening to IP addresses",
|
||||||
ipaddPlease: "Please enter the listening IP address",
|
ipaddPlease: "Please enter the listening IP address",
|
||||||
@@ -1283,5 +1351,12 @@ export default {
|
|||||||
noChange: "No change in interface settings",
|
noChange: "No change in interface settings",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
tool: {
|
||||||
|
help: {
|
||||||
|
download: "Download",
|
||||||
|
pdfViewer: "In-browser preview",
|
||||||
|
pdfViewerErr: "Sorry, your browser does not support PDF preview!",
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export default {
|
|||||||
errorFields: '请正确填写 {num} 处必填信息!',
|
errorFields: '请正确填写 {num} 处必填信息!',
|
||||||
tablePaginationTotal: '总共 {total} 条',
|
tablePaginationTotal: '总共 {total} 条',
|
||||||
noData: "暂无数据",
|
noData: "暂无数据",
|
||||||
zebraL:'表格斑马纹',
|
zebra:'表格斑马纹',
|
||||||
ok: '确定',
|
ok: '确定',
|
||||||
cancel: '取消',
|
cancel: '取消',
|
||||||
close: '关闭',
|
close: '关闭',
|
||||||
@@ -36,6 +36,8 @@ export default {
|
|||||||
searchBarText: '搜索栏',
|
searchBarText: '搜索栏',
|
||||||
tableStripedText: '表格斑马纹',
|
tableStripedText: '表格斑马纹',
|
||||||
reloadText: '刷新',
|
reloadText: '刷新',
|
||||||
|
columnSetText: '列设置',
|
||||||
|
columnSetTitle: '列展示/排序',
|
||||||
sizeText: '密度',
|
sizeText: '密度',
|
||||||
size: {
|
size: {
|
||||||
default: '默认',
|
default: '默认',
|
||||||
@@ -124,6 +126,11 @@ export default {
|
|||||||
// 静态路由
|
// 静态路由
|
||||||
router: {
|
router: {
|
||||||
index: "主页",
|
index: "主页",
|
||||||
|
login: "登录",
|
||||||
|
register: '注册',
|
||||||
|
page403: '没有访问权限',
|
||||||
|
page404: '找不到匹配页面',
|
||||||
|
helpDoc: '系统使用文档',
|
||||||
account: {
|
account: {
|
||||||
index: "个人中心",
|
index: "个人中心",
|
||||||
profile: "个人信息",
|
profile: "个人信息",
|
||||||
@@ -151,7 +158,12 @@ export default {
|
|||||||
|
|
||||||
// 布局
|
// 布局
|
||||||
loayouts: {
|
loayouts: {
|
||||||
|
basic: {
|
||||||
|
officialUrl: '官网',
|
||||||
|
helpDoc: '使用手册',
|
||||||
|
},
|
||||||
rightContent: {
|
rightContent: {
|
||||||
|
helpDoc: "系统使用文档",
|
||||||
fullscreen: "全屏显示",
|
fullscreen: "全屏显示",
|
||||||
logout: "退出登录",
|
logout: "退出登录",
|
||||||
profile: "个人中心",
|
profile: "个人中心",
|
||||||
@@ -323,6 +335,7 @@ export default {
|
|||||||
mac:'网元物理地址',
|
mac:'网元物理地址',
|
||||||
macTip:'能够定位网元的物理地址(MAC)',
|
macTip:'能够定位网元的物理地址(MAC)',
|
||||||
port:'端口',
|
port:'端口',
|
||||||
|
portTip:'最大范围0~65535',
|
||||||
pvflag:'网元虚拟化标识',
|
pvflag:'网元虚拟化标识',
|
||||||
pnf:'物理网元',
|
pnf:'物理网元',
|
||||||
vnf:'虚拟网元',
|
vnf:'虚拟网元',
|
||||||
@@ -386,7 +399,7 @@ export default {
|
|||||||
backVersions:'回退前版本',
|
backVersions:'回退前版本',
|
||||||
status:'状态',
|
status:'状态',
|
||||||
letUpTime:'激活时间',
|
letUpTime:'激活时间',
|
||||||
creatTime:'创建时间',
|
createTime:'创建时间',
|
||||||
onlyAble:'只支持上传文件格式 {fileText}',
|
onlyAble:'只支持上传文件格式 {fileText}',
|
||||||
nullData:'暂无网元列表数据',
|
nullData:'暂无网元列表数据',
|
||||||
},
|
},
|
||||||
@@ -429,6 +442,8 @@ export default {
|
|||||||
addSure:'确认提交新增 Index :【{value}】 的记录吗?',
|
addSure:'确认提交新增 Index :【{value}】 的记录吗?',
|
||||||
},
|
},
|
||||||
configParamForm: {
|
configParamForm: {
|
||||||
|
treeTitle: "配置导航",
|
||||||
|
treeSelectTip: "左侧配置导航中选择配置项信息!",
|
||||||
neType: "网元类型",
|
neType: "网元类型",
|
||||||
neTypePleace: "请选择网元类型",
|
neTypePleace: "请选择网元类型",
|
||||||
noConfigData: "暂无配置项数据",
|
noConfigData: "暂无配置项数据",
|
||||||
@@ -456,58 +471,92 @@ export default {
|
|||||||
auth: {
|
auth: {
|
||||||
authInfo:'鉴权信息',
|
authInfo:'鉴权信息',
|
||||||
neTypePlease: '查询网元类型',
|
neTypePlease: '查询网元类型',
|
||||||
neType: 'UDM网元类型',
|
neType: 'UDM网元对象',
|
||||||
export: '导出',
|
export: '导出',
|
||||||
exportConfirm: '确认导出全部鉴权用户数据吗?',
|
exportConfirm: '确认导出全部鉴权用户数据吗?',
|
||||||
import: '导入',
|
import: '导入',
|
||||||
loadDataConfirm: '确认要重新加载数据吗?',
|
loadDataConfirm: '确认要重新加载数据吗?',
|
||||||
loadData: '更新数据',
|
loadData: '加载数据',
|
||||||
loadDataTip: '成功获取更新数据:{num}条,系统内部进行数据更新,请勿重复点击获取更新!!!',
|
loadDataTip: '成功获取加载数据:{num}条,系统内部正在进行数据更新。加载结束后可点击重置刷新数据列表,请勿重复点击获取更新!!!',
|
||||||
num: '放号数',
|
startIMSI: '起始IMSI',
|
||||||
batchAddText: '批量新增',
|
batchAddText: '批量新增',
|
||||||
batchDelText: '批量删除',
|
batchDelText: '批量删除',
|
||||||
delNum:'删除个数',
|
numAdd: '放号个数',
|
||||||
imsiTip:' SUPI=MCC+MNC+MSIN MCC=移动国家号码, 由三位数字组成 MNC=移动网络号,由两位数字组成 MSIN=移动客户识别码,采用等长10位数字构成',
|
numDel:'删除个数',
|
||||||
delSure:'确认删除IMSI编号为: {imsi} 的用户嘛?',
|
imsiTip: 'IMSI=MCC+MNC+MSIN',
|
||||||
noListData:'暂无网元列表数据',
|
imsiTip1: 'MCC=移动国家号码, 由三位数字组成',
|
||||||
|
imsiTip2: 'MNC=移动网络号,由两位数字组成',
|
||||||
|
imsiTip3: 'MSIN=移动客户识别码,采用等长10位数字构成',
|
||||||
|
amfTip: '鉴权管理域,参数最大长度为 4',
|
||||||
|
algoIndexTip: '算法索引,介于0到15之间',
|
||||||
|
kiTip: '用户签权密钥信息,最大长度为32',
|
||||||
|
opcTip: '鉴权秘钥,OPC是由Ki和OP经过计算得来的,OP为运营商的根秘钥,ki是鉴权秘钥,最大长度为32',
|
||||||
|
delSure:'确认删除IMSI编号为: {imsi} 的用户吗?',
|
||||||
},
|
},
|
||||||
sub: {
|
sub: {
|
||||||
subInfo:'签约信息',
|
subInfo:'签约信息',
|
||||||
neTypePlease: '查询网元类型',
|
|
||||||
neType: 'UDM网元类型',
|
neType: 'UDM网元类型',
|
||||||
export: '导出',
|
export: '导出',
|
||||||
exportConfirm: '确认导出全部签约用户数据吗?',
|
exportConfirm: '确认导出全部签约用户数据吗?',
|
||||||
import: '导入',
|
import: '导入',
|
||||||
loadDataConfirm: '确认要重新加载数据吗?',
|
loadDataConfirm: '确认要重新加载数据吗?',
|
||||||
loadData: '更新数据',
|
loadData: '加载数据',
|
||||||
loadDataTip: '成功获取更新数据:{num}条,系统内部进行数据更新,请勿重复点击获取更新!!!',
|
loadDataTip: '成功获取加载数据:{num}条,系统内部正在进行数据更新。加载结束后可点击重置刷新数据列表,请勿重复点击获取更新!!!',
|
||||||
num: '删除个数',
|
numAdd: '放号个数',
|
||||||
|
numDel: '删除个数',
|
||||||
batchAddText: '批量新增',
|
batchAddText: '批量新增',
|
||||||
batchDelText: '批量删除',
|
batchDelText: '批量删除',
|
||||||
|
enable:'开启',
|
||||||
|
disable:'关闭',
|
||||||
startIMSI: '起始IMSI',
|
startIMSI: '起始IMSI',
|
||||||
msisdnTip:'参数最大长度{msg}',
|
imsiTip: 'IMSI=MCC+MNC+MSIN',
|
||||||
arfbTip:'限制区域模板,在模板指定的限制区域中,UE 不允许与网络通信',
|
imsiTip1: 'MCC=移动国家号码, 由三位数字组成',
|
||||||
sarTip:'服务区域限制模板,定义允许的区域,UE在这些区域中可以和网络通信;定义不允许的区,UE和网络在这些区域中,不允许发起Service Request 或 SM信令来获取用户服务',
|
imsiTip2: 'MNC=移动网络号,由两位数字组成',
|
||||||
micoTip:'签约的MICO业务标志位',
|
imsiTip3: 'MSIN=移动客户识别码,采用等长10位数字构成',
|
||||||
rfspTip:'RFSP 索引,在 NG-RAN中,特定RRM配置的索引,参数介于0到127之间',
|
msisdnTip: '参数最大长度 {num}',
|
||||||
epsFlagTip:'是否开启4G EPS 服务,0=不开启,1=开启',
|
inputTip: '参数最大长度为 {num}',
|
||||||
contextIdTip:'签约APN 上下文ID,必须从APN Context list 中选择',
|
arfbTip: '限制区域模板,在模板指定的限制区域中,UE 不允许与网络通信',
|
||||||
staticIpTip:'指定手机用户上网时使用的静态IP地址,为"-"时表示使用动态IP地址',
|
sarTip: '服务区域限制模板,定义允许的区域,UE 在这些区域中可以和网络通信;定义不允许的区,UE 和网络在这些区域中,不允许发起Service Request 或 SM 信令来获取用户服务',
|
||||||
epsOdbTip:'ODB(Operator-Determined Barring)运营商决定的闭锁,即用户接入EPS网络的业务能力由运营商决定.选中 ---对应服务被允许 未选 --- 对应服务被禁止',
|
micoTip: '签约的 MICO 业务标志位',
|
||||||
hplmnOdbTip:'HPLMN-ODB归属运营商决定的闭锁,即用户接入EPS网络的业务能力由用户归宿运营商决定.选中 --- 对应服务被允许 未选 -- 对应服务被禁止',
|
rfspTip:'RFSP 索引,在 NG-RAN 中,特定 RRM 配置的索引,参数介于0到127之间',
|
||||||
|
ueTypeTip: '运营商定义的用户 UE Usage Type,整型,参数介于0到127之间',
|
||||||
|
epsFlagTip: '是否开启4G EPS 服务',
|
||||||
|
contextIdTip: '签约APN 上下文ID,必须从APN Context list 中选择。',
|
||||||
|
apnContextTip: '手机可用的APN列表,最多六个,在HSS中定义。',
|
||||||
|
staticIpTip: '指定手机用户上网时使用的静态IP地址,为"-"时表示使用动态IP地址',
|
||||||
|
epsOdbTip: 'ODB(Operator-Determined Barring)运营商决定的闭锁,即用户接入EPS网络的业务能力由运营商决定.选中 ---对应服务被允许 未选 --- 对应服务被禁止',
|
||||||
|
hplmnOdbTip: 'HPLMN-ODB归属运营商决定的闭锁,即用户接入EPS网络的业务能力由用户归宿运营商决定.选中 --- 对应服务被允许 未选 -- 对应服务被禁止',
|
||||||
ardTip:'接入控制标志(Access-Restriction-Data),可用于区分2G/3G/LTE用户,便于为2G/3G/LTE网络共存时,对不同类型用户进行区分服务',
|
ardTip:'接入控制标志(Access-Restriction-Data),可用于区分2G/3G/LTE用户,便于为2G/3G/LTE网络共存时,对不同类型用户进行区分服务',
|
||||||
},
|
},
|
||||||
|
pcf: {
|
||||||
|
neType: 'PCF网元对象',
|
||||||
|
export: '导出',
|
||||||
|
exportConfirm: '确认导出全部用户策略控制信息数据吗?',
|
||||||
|
import: '导入',
|
||||||
|
addTitle: '新增策略控制信息',
|
||||||
|
updateTitle: '{imsi} 策略控制信息',
|
||||||
|
startIMSI: '起始IMSI',
|
||||||
|
batchAddText: '批量新增',
|
||||||
|
batchDelText: '批量删除',
|
||||||
|
batchUpdateText: '批量更新',
|
||||||
|
batchNum: '批量个数',
|
||||||
|
imsiTip: 'IMSI=MCC+MNC+MSIN',
|
||||||
|
imsiTip1: 'MCC=移动国家号码, 由三位数字组成',
|
||||||
|
imsiTip2: 'MNC=移动网络号,由两位数字组成',
|
||||||
|
imsiTip3: 'MSIN=移动客户识别码,采用等长10位数字构成',
|
||||||
|
delSure:'确认删除IMSI编号为: {imsi} 的用户吗?',
|
||||||
|
},
|
||||||
base5G: {
|
base5G: {
|
||||||
neTypePlease: '查询网元类型',
|
neType: 'AMF网元对象',
|
||||||
neType: 'AMF网元类型',
|
},
|
||||||
|
n3iwf: {
|
||||||
|
neType: 'N3IWF网元对象',
|
||||||
},
|
},
|
||||||
ue: {
|
ue: {
|
||||||
neTypePlease: '查询网元类型',
|
neType: 'SMF网元对象',
|
||||||
neType: 'SMF网元类型',
|
|
||||||
},
|
},
|
||||||
ims: {
|
ims: {
|
||||||
neTypePlease: '查询网元类型',
|
neType: 'IMS网元对象',
|
||||||
neType: 'IMS网元类型',
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
perfManage: {
|
perfManage: {
|
||||||
@@ -535,6 +584,15 @@ export default {
|
|||||||
stopSure:'确认挂起编号为 【{id}】 的任务?',
|
stopSure:'确认挂起编号为 【{id}】 的任务?',
|
||||||
letUpWarning:'禁止激活已激活的任务',
|
letUpWarning:'禁止激活已激活的任务',
|
||||||
stopWarning:'禁止挂起未激活的测量任务',
|
stopWarning:'禁止挂起未激活的测量任务',
|
||||||
|
weekPlan:'周计划',
|
||||||
|
monthPlan:'月计划',
|
||||||
|
one:'星期一',
|
||||||
|
two:'星期二',
|
||||||
|
three:'星期三',
|
||||||
|
four:'星期四',
|
||||||
|
five:'星期五',
|
||||||
|
six:'星期六',
|
||||||
|
seven:'星期天',
|
||||||
},
|
},
|
||||||
perfThreshold:{
|
perfThreshold:{
|
||||||
thresholdValue:'门限值',
|
thresholdValue:'门限值',
|
||||||
@@ -569,7 +627,14 @@ export default {
|
|||||||
enTitle:'黄金指标项',
|
enTitle:'黄金指标项',
|
||||||
value:'值',
|
value:'值',
|
||||||
startTime:'开始时间',
|
startTime:'开始时间',
|
||||||
endTime:'结束时间'
|
endTime:'结束时间',
|
||||||
|
particle:'颗粒度',
|
||||||
|
timeFrame:'时间范围',
|
||||||
|
nullTip:'此时间范围内没有统计数据',
|
||||||
|
kpiTitle:'KPI统计图表',
|
||||||
|
allData:'完整统计数据',
|
||||||
|
makeLine:'统计图',
|
||||||
|
time:'时间',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
traceManage: {
|
traceManage: {
|
||||||
@@ -677,17 +742,6 @@ export default {
|
|||||||
mySelf: '个性化设置',
|
mySelf: '个性化设置',
|
||||||
exportAll: '导出全部',
|
exportAll: '导出全部',
|
||||||
disPlayFilfter: '显示过滤',
|
disPlayFilfter: '显示过滤',
|
||||||
autoConfirm: '自动确认配置',
|
|
||||||
critical:'严重告警',
|
|
||||||
major:'主要告警',
|
|
||||||
minor:'次要告警',
|
|
||||||
warning:'警告告警',
|
|
||||||
eventAlarm:'事件告警',
|
|
||||||
communicationAlarm:'通信告警',
|
|
||||||
equipmentAlarm:'设备告警',
|
|
||||||
processingFailure:'处理错误告警',
|
|
||||||
environmentalAlarm:'环境告警',
|
|
||||||
qualityOfServiceAlarm:'服务质量告警',
|
|
||||||
alarmId:'告警唯一标识',
|
alarmId:'告警唯一标识',
|
||||||
alarmTitle:'告警名称',
|
alarmTitle:'告警名称',
|
||||||
clearUser:'告警清除用户',
|
clearUser:'告警清除用户',
|
||||||
@@ -723,7 +777,7 @@ export default {
|
|||||||
exportSure:'确认是否导出全部历史告警信息?',
|
exportSure:'确认是否导出全部历史告警信息?',
|
||||||
},
|
},
|
||||||
faultSetting:{
|
faultSetting:{
|
||||||
interfaceType:'告警前转接口类型',
|
interfaceType:'类型',
|
||||||
email:'Email',
|
email:'Email',
|
||||||
sms:'SMS',
|
sms:'SMS',
|
||||||
save:'保存设置',
|
save:'保存设置',
|
||||||
@@ -803,7 +857,6 @@ export default {
|
|||||||
online:{
|
online:{
|
||||||
mettingId:'会话编号',
|
mettingId:'会话编号',
|
||||||
account:'登录账号',
|
account:'登录账号',
|
||||||
class:'所属部门',
|
|
||||||
host:'登录主机',
|
host:'登录主机',
|
||||||
loginDes:'登录地点',
|
loginDes:'登录地点',
|
||||||
os:'操作系统',
|
os:'操作系统',
|
||||||
@@ -859,10 +912,6 @@ export default {
|
|||||||
cronExpressionTip1: "示例说明:每20秒执行任务",
|
cronExpressionTip1: "示例说明:每20秒执行任务",
|
||||||
cronExpressionNew: "生成表达式",
|
cronExpressionNew: "生成表达式",
|
||||||
status: "状态",
|
status: "状态",
|
||||||
status0: "关闭",
|
|
||||||
status1: "开启",
|
|
||||||
status00: "暂停",
|
|
||||||
status01: "正常",
|
|
||||||
statusChange: "确定要{text} {num} 任务吗?",
|
statusChange: "确定要{text} {num} 任务吗?",
|
||||||
saveLog: "记录日志",
|
saveLog: "记录日志",
|
||||||
tipRowErr: "任务记录存在错误",
|
tipRowErr: "任务记录存在错误",
|
||||||
@@ -1023,8 +1072,9 @@ export default {
|
|||||||
saveSuccess: '提交保存成功',
|
saveSuccess: '提交保存成功',
|
||||||
revert: '还原',
|
revert: '还原',
|
||||||
revertSuccess: '还原成功',
|
revertSuccess: '还原成功',
|
||||||
uploadFormat: '只支持上传图片格式({format})',
|
uploadFile: '上传文件',
|
||||||
uploadSize: '图片文件大小必须小于 {size}MB',
|
uploadFormat: '只支持上传文件格式({format})',
|
||||||
|
uploadSize: '文件大小必须小于 {size}MB',
|
||||||
uploadSuccess: '文件上传成功,提交保存生效',
|
uploadSuccess: '文件上传成功,提交保存生效',
|
||||||
sysLogo: '系统LOGO',
|
sysLogo: '系统LOGO',
|
||||||
sysLogoBrand: '全图',
|
sysLogoBrand: '全图',
|
||||||
@@ -1038,11 +1088,9 @@ export default {
|
|||||||
sysLogoInstruction3: '以LOGO+系统名称的形式展示到系统LOGO区域。',
|
sysLogoInstruction3: '以LOGO+系统名称的形式展示到系统LOGO区域。',
|
||||||
sysLogoInstruction4: 'LOGO尺寸比例大小',
|
sysLogoInstruction4: 'LOGO尺寸比例大小',
|
||||||
sysName: '系统名称',
|
sysName: '系统名称',
|
||||||
sysNamePlease: '请输入系统名称',
|
|
||||||
sysNameLimitation: '系统名称限制',
|
sysNameLimitation: '系统名称限制',
|
||||||
sysNameTipContent: '确认要提交当前变更的系统名称吗?',
|
sysNameTipContent: '确认要提交当前变更的系统名称吗?',
|
||||||
sysCopyright: '版权声明',
|
sysCopyright: '版权声明',
|
||||||
sysCopyrightPlease: '请输入版权声明',
|
|
||||||
sysCopyrightLimitation: '版权声明限制',
|
sysCopyrightLimitation: '版权声明限制',
|
||||||
sysCopyrightTipContent: '确认要提交当前变更的版权声明吗?',
|
sysCopyrightTipContent: '确认要提交当前变更的版权声明吗?',
|
||||||
sysLoginBg: '登录界面背景',
|
sysLoginBg: '登录界面背景',
|
||||||
@@ -1054,6 +1102,22 @@ export default {
|
|||||||
sysLoginBgInstruction: '系统登录界面背景样式如预览区域所示,请以实际显示为准',
|
sysLoginBgInstruction: '系统登录界面背景样式如预览区域所示,请以实际显示为准',
|
||||||
sysLoginBgInstruction1: '请将选择合适的图片进行进行上传。',
|
sysLoginBgInstruction1: '请将选择合适的图片进行进行上传。',
|
||||||
sysLoginBgInstruction2: '通过点击《还原》按钮,将背景图还原到系统初始默认的背景。',
|
sysLoginBgInstruction2: '通过点击《还原》按钮,将背景图还原到系统初始默认的背景。',
|
||||||
|
sysHelpDoc: '系统使用文档',
|
||||||
|
sysHelpDocTipContentUpload: '确认要上传系统使用文档吗?',
|
||||||
|
sysHelpDocTipContent: '确认要提交当前【{lang}】变更的系统使用文档吗?',
|
||||||
|
sysHelpDocOpen: '文档查阅',
|
||||||
|
sysHelpDocInstruction: '系统功能及使用说明,PDF文档手册',
|
||||||
|
sysOfficialUrl: '官网链接',
|
||||||
|
sysOfficialUrlErrTip: '请填写有效的链接地址 http(s)://',
|
||||||
|
sysOfficialUrlTipContent: '确认要提交当前变更的官网地址吗?',
|
||||||
|
sysOfficialUrlNo: '无链接地址',
|
||||||
|
sysOfficialUrlOpen: '打开官网',
|
||||||
|
sysOfficialUrlInstruction: '官网链接地址',
|
||||||
|
sysOfficialUrlInstruction1: '开头,如需隐藏不跳转填写',
|
||||||
|
i18n: "国际化切换",
|
||||||
|
i18nOpen: "显示切换",
|
||||||
|
i18nDefault: "默认语言",
|
||||||
|
i18nInstruction: '是否显示国际化切换,设置系统默认语言',
|
||||||
},
|
},
|
||||||
role:{
|
role:{
|
||||||
allScopeOptions:'全部数据权限',
|
allScopeOptions:'全部数据权限',
|
||||||
@@ -1206,7 +1270,7 @@ export default {
|
|||||||
pathTip:`访问的路由地址,如:user、/auth 1. 如网络地址需内部访问 则以 http(s):// 开头菜单行为(根节点):当前窗口打开 菜单行为,(非根节点):内嵌窗口.2. 如网络地址需外部访问则将内部地址选项设为否菜单行为:打开新标签3. 如内嵌子页面需要隐藏页面则将显示状态选项设为隐藏地址拼接以内嵌路由地址`,
|
pathTip:`访问的路由地址,如:user、/auth 1. 如网络地址需内部访问 则以 http(s):// 开头菜单行为(根节点):当前窗口打开 菜单行为,(非根节点):内嵌窗口.2. 如网络地址需外部访问则将内部地址选项设为否菜单行为:打开新标签3. 如内嵌子页面需要隐藏页面则将显示状态选项设为隐藏地址拼接以内嵌路由地址`,
|
||||||
sonPage:'子页面地址',
|
sonPage:'子页面地址',
|
||||||
componentTip:' 页面组件目录 views 访问的组件路径,如:system/user/index 注意:不带 .vue 文件后缀路由地址是网络地址可填入链接',
|
componentTip:' 页面组件目录 views 访问的组件路径,如:system/user/index 注意:不带 .vue 文件后缀路由地址是网络地址可填入链接',
|
||||||
perms:`权限标识示例:monitor:server:query 后端控制器中使用权限标识,如:@PreAuthorize({ hasPermissions: ['monitor:server:query'] }) 前端vue页面中使用权限标识,如:v-perms:has="['monitor:server:query']"`
|
perms:`权限标识示例:monitor:server:query 后端控制器中使用权限标识,如:['monitor:server:query'] 前端vue页面中使用权限标识,如:v-perms:has="['monitor:server:query']"`
|
||||||
},
|
},
|
||||||
dict:{
|
dict:{
|
||||||
dictInfo:'字典类型信息',
|
dictInfo:'字典类型信息',
|
||||||
@@ -1262,10 +1326,14 @@ export default {
|
|||||||
requireIpv6: "{display} 不是合法的IPV6地址",
|
requireIpv6: "{display} 不是合法的IPV6地址",
|
||||||
requireEnum: "{display} 不是合理的枚举值",
|
requireEnum: "{display} 不是合理的枚举值",
|
||||||
requireBool: "{display} 不是合理的布尔类型的值",
|
requireBool: "{display} 不是合理的布尔类型的值",
|
||||||
clearForm: "清除表单",
|
cmdQuickEntry: "命令快速输入",
|
||||||
|
cmdParamPanel: "参数面板",
|
||||||
|
clearForm: "重置",
|
||||||
clearLog: "清除日志",
|
clearLog: "清除日志",
|
||||||
exec: "执行",
|
exec: "执行",
|
||||||
cmdAwait: "等待发送命令",
|
cmdAwait: "等待发送命令",
|
||||||
|
uploadFileTip: '确认要上传文件吗?',
|
||||||
|
uploadFileOk: '文件上传成功',
|
||||||
omcOperate:{
|
omcOperate:{
|
||||||
noOMC: "暂无OMC网元",
|
noOMC: "暂无OMC网元",
|
||||||
},
|
},
|
||||||
@@ -1283,5 +1351,12 @@ export default {
|
|||||||
noChange: "接口设置无变更",
|
noChange: "接口设置无变更",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
tool: {
|
||||||
|
help: {
|
||||||
|
download: "下载",
|
||||||
|
pdfViewer: "浏览器内预览",
|
||||||
|
pdfViewerErr: "很抱歉,您的浏览器不支持 PDF 预览!",
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ import {
|
|||||||
WaterMark,
|
WaterMark,
|
||||||
getMenuData,
|
getMenuData,
|
||||||
clearMenuItem,
|
clearMenuItem,
|
||||||
} from '@ant-design-vue/pro-layout';
|
MenuDataItem,
|
||||||
|
} from 'antdv-pro-layout';
|
||||||
import RightContent from './components/RightContent.vue';
|
import RightContent from './components/RightContent.vue';
|
||||||
import Tabs from './components/Tabs.vue';
|
import Tabs from './components/Tabs.vue';
|
||||||
import { scriptUrl } from '@/assets/js/icon_font_8d5l8fzk5b87iudi';
|
import { scriptUrl } from '@/assets/js/icon_font_8d5l8fzk5b87iudi';
|
||||||
@@ -22,7 +23,8 @@ import { getServerTime } from '@/api';
|
|||||||
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
||||||
import { onMounted } from 'vue';
|
import { onMounted } from 'vue';
|
||||||
import { parseDateToStr } from '@/utils/date-utils';
|
import { parseDateToStr } from '@/utils/date-utils';
|
||||||
const { t } = useI18n();
|
import { parseUrlPath } from '@/plugins/file-static-url';
|
||||||
|
const { t, currentLocale } = useI18n();
|
||||||
const routerStore = useRouterStore();
|
const routerStore = useRouterStore();
|
||||||
const tabsStore = useTabsStore();
|
const tabsStore = useTabsStore();
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
@@ -85,7 +87,7 @@ const breadcrumb = computed(() => {
|
|||||||
.map(item => {
|
.map(item => {
|
||||||
return {
|
return {
|
||||||
path: item.path,
|
path: item.path,
|
||||||
breadcrumbName: fnLocale(item.meta.title || '-'),
|
breadcrumbName: fnLocale(item),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -120,10 +122,51 @@ function fnComponentSetName(component: any, to: any) {
|
|||||||
// 清空导航栏标签
|
// 清空导航栏标签
|
||||||
tabsStore.clear();
|
tabsStore.clear();
|
||||||
|
|
||||||
|
// LOGO地址
|
||||||
|
const logoUrl = computed(() => {
|
||||||
|
let url =
|
||||||
|
appStore.logoType === 'brand'
|
||||||
|
? parseUrlPath(appStore.filePathBrand)
|
||||||
|
: parseUrlPath(appStore.filePathIcon);
|
||||||
|
|
||||||
|
if (url.indexOf('{language}') === -1) {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
// 语言参数替换
|
||||||
|
const local = currentLocale.value;
|
||||||
|
const lang = local.split('_')[0];
|
||||||
|
return url.replace('{language}', lang);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 系统使用手册地址
|
||||||
|
const helpDocUrl = computed(() => {
|
||||||
|
let url = parseUrlPath(appStore.helpDoc);
|
||||||
|
|
||||||
|
if (url.indexOf('{language}') === -1) {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
// 语言参数替换
|
||||||
|
const local = currentLocale.value;
|
||||||
|
const lang = local.split('_')[0];
|
||||||
|
return url.replace('{language}', lang);
|
||||||
|
});
|
||||||
|
|
||||||
|
/**系统使用手册跳转 */
|
||||||
|
function fnClickHelpDoc(language?: string) {
|
||||||
|
const routeData = router.resolve({ name: 'HelpDoc' });
|
||||||
|
let href = routeData.href;
|
||||||
|
if (language) {
|
||||||
|
href = `${routeData.href}?language=${language}`;
|
||||||
|
}
|
||||||
|
window.open(href, '_blank');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 国际化翻译转换
|
* 国际化翻译转换
|
||||||
*/
|
*/
|
||||||
function fnLocale(title: string) {
|
function fnLocale(m: MenuDataItem) {
|
||||||
|
if (!m.meta) return;
|
||||||
|
let title = m.meta?.title ?? '';
|
||||||
if (title.indexOf('router.') !== -1) {
|
if (title.indexOf('router.') !== -1) {
|
||||||
title = t(title);
|
title = t(title);
|
||||||
}
|
}
|
||||||
@@ -132,52 +175,50 @@ function fnLocale(title: string) {
|
|||||||
|
|
||||||
//
|
//
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
// fnGetServerTime();
|
fnGetServerTime();
|
||||||
useAlarmStore().fnGetActiveAlarmInfo();
|
useAlarmStore().fnGetActiveAlarmInfo();
|
||||||
});
|
});
|
||||||
|
|
||||||
// ==== 服务器时间显示 start
|
// ==== 服务器时间显示 start
|
||||||
// let serverTime = reactive({
|
let serverTime = reactive({
|
||||||
// timestamp: 0,
|
timestamp: 0,
|
||||||
// zone: '', // 时区 UTC
|
zone: 'UTC', // 时区 UTC
|
||||||
// str: '', // 年月日时分秒
|
interval: 0 as any, // 定时器
|
||||||
// interval: 0 as any, // 定时器
|
});
|
||||||
// });
|
|
||||||
|
|
||||||
// // 获取服务器时间
|
// 获取服务器时间
|
||||||
// function fnGetServerTime() {
|
function fnGetServerTime() {
|
||||||
// getServerTime().then(res => {
|
getServerTime().then(res => {
|
||||||
// if (res.code === RESULT_CODE_SUCCESS && res.data) {
|
if (res.code === RESULT_CODE_SUCCESS && res.data) {
|
||||||
// // 时间戳
|
const serverTimeDom = document.getElementById('serverTimeDom');
|
||||||
// serverTime.timestamp = parseInt(res.data.timestamp);
|
// 时间戳
|
||||||
// serverTime.interval = setInterval(() => {
|
serverTime.timestamp = parseInt(res.data.timestamp);
|
||||||
// serverTime.timestamp += 1000;
|
serverTime.interval = setInterval(() => {
|
||||||
// serverTime.str = parseDateToStr(serverTime.timestamp);
|
serverTime.timestamp += 1000;
|
||||||
// }, 1000);
|
// serverTimeStr.value = parseDateToStr(serverTime.timestamp);
|
||||||
|
// 用DOM直接修改
|
||||||
|
if (serverTimeDom) {
|
||||||
|
serverTimeDom.innerText = parseDateToStr(serverTime.timestamp);
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
|
|
||||||
// // 时区
|
// 时区
|
||||||
// const offsetHours = res.data.timeZone / 3600;
|
const offsetHours = res.data.timeZone / 3600;
|
||||||
// if (offsetHours === 0) {
|
serverTime.zone = `UTC ${offsetHours}`;
|
||||||
// serverTime.zone = 'UTC';
|
}
|
||||||
// } else if (offsetHours > 0) {
|
});
|
||||||
// serverTime.zone = `UTC +${offsetHours}`;
|
}
|
||||||
// } else {
|
|
||||||
// serverTime.zone = `UTC ${offsetHours}`;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
// 监听可视改变
|
// 监听可视改变
|
||||||
document.addEventListener('visibilitychange', function () {
|
document.addEventListener('visibilitychange', function () {
|
||||||
if (document.visibilityState == 'hidden') {
|
if (document.visibilityState == 'hidden') {
|
||||||
//切离该页面时执行
|
//切离该页面时执行
|
||||||
// clearInterval(serverTime.interval);
|
clearInterval(serverTime.interval);
|
||||||
}
|
}
|
||||||
if (document.visibilityState == 'visible') {
|
if (document.visibilityState == 'visible') {
|
||||||
//切换到该页面时执行
|
//切换到该页面时执行
|
||||||
// clearInterval(serverTime.interval);
|
clearInterval(serverTime.interval);
|
||||||
// fnGetServerTime();
|
fnGetServerTime();
|
||||||
useAlarmStore().fnGetActiveAlarmInfo();
|
useAlarmStore().fnGetActiveAlarmInfo();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -191,7 +232,7 @@ document.addEventListener('visibilitychange', function () {
|
|||||||
v-model:selectedKeys="layoutState.selectedKeys"
|
v-model:selectedKeys="layoutState.selectedKeys"
|
||||||
v-model:openKeys="layoutState.openKeys"
|
v-model:openKeys="layoutState.openKeys"
|
||||||
:menu-data="menuData"
|
:menu-data="menuData"
|
||||||
:breadcrumb="{ routes: breadcrumb }"
|
:breadcrumb="{ routes: breadcrumb } as any"
|
||||||
disable-content-margin
|
disable-content-margin
|
||||||
v-bind="proConfig"
|
v-bind="proConfig"
|
||||||
:iconfont-url="scriptUrl"
|
:iconfont-url="scriptUrl"
|
||||||
@@ -209,7 +250,7 @@ document.addEventListener('visibilitychange', function () {
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
class="logo-icon"
|
class="logo-icon"
|
||||||
:src="appStore.getLOGOIcon"
|
:src="logoUrl"
|
||||||
:alt="appStore.appName"
|
:alt="appStore.appName"
|
||||||
:title="appStore.appName"
|
:title="appStore.appName"
|
||||||
/>
|
/>
|
||||||
@@ -220,7 +261,7 @@ document.addEventListener('visibilitychange', function () {
|
|||||||
<template v-if="appStore.logoType === 'brand'">
|
<template v-if="appStore.logoType === 'brand'">
|
||||||
<img
|
<img
|
||||||
class="logo-brand"
|
class="logo-brand"
|
||||||
:src="appStore.getLOGOBrand"
|
:src="logoUrl"
|
||||||
:alt="appStore.appName"
|
:alt="appStore.appName"
|
||||||
:title="appStore.appName"
|
:title="appStore.appName"
|
||||||
/>
|
/>
|
||||||
@@ -270,16 +311,25 @@ document.addEventListener('visibilitychange', function () {
|
|||||||
<!--插槽-内容底部-->
|
<!--插槽-内容底部-->
|
||||||
<template #footerRender="{ width }">
|
<template #footerRender="{ width }">
|
||||||
<footer class="footer">
|
<footer class="footer">
|
||||||
|
|
||||||
<div class="footer-fixed" :style="{ width }">
|
<div class="footer-fixed" :style="{ width }">
|
||||||
<div>
|
<div>
|
||||||
<span>{{ appStore.copyright }}</span>
|
<span>{{ appStore.copyright }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<a-space direction="horizontal" :size="8">
|
||||||
<span class="footer-time">
|
<span id="serverTimeDom"></span>
|
||||||
<!-- {{ serverTime.str }} {{ serverTime.zone }} -->
|
<a-button
|
||||||
</span>
|
type="link"
|
||||||
</div>
|
:href="appStore.officialUrl"
|
||||||
|
target="_blank"
|
||||||
|
size="small"
|
||||||
|
v-if="appStore.officialUrl !== '#'"
|
||||||
|
>
|
||||||
|
{{ t('loayouts.basic.officialUrl') }}
|
||||||
|
</a-button>
|
||||||
|
<a-button type="link" size="small" @click="fnClickHelpDoc()">
|
||||||
|
{{ t('loayouts.basic.helpDoc') }}
|
||||||
|
</a-button>
|
||||||
|
</a-space>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
</template>
|
</template>
|
||||||
@@ -315,8 +365,7 @@ document.addEventListener('visibilitychange', function () {
|
|||||||
z-index: 16;
|
z-index: 16;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
width: auto;
|
width: auto;
|
||||||
margin-top: 48px;
|
margin-top: 52px;
|
||||||
padding: 4px 16px;
|
|
||||||
&-fixed {
|
&-fixed {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
@@ -332,7 +381,7 @@ document.addEventListener('visibilitychange', function () {
|
|||||||
transition: background 0.3s, width 0.2s;
|
transition: background 0.3s, width 0.2s;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-time {
|
& #serverTimeDom {
|
||||||
color: #00000085;
|
color: #00000085;
|
||||||
transition: all 0.3s;
|
transition: all 0.3s;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
|
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import { toggle, isFullscreen } from '@/utils/fullscreen-utils';
|
import { useFullscreen } from '@vueuse/core';
|
||||||
import useI18n from '@/hooks/useI18n';
|
import useI18n from '@/hooks/useI18n';
|
||||||
|
import useAppStore from '@/store/modules/app';
|
||||||
import useUserStore from '@/store/modules/user';
|
import useUserStore from '@/store/modules/user';
|
||||||
import useAlarmStore from '@/store/modules/alarm';
|
import useAlarmStore from '@/store/modules/alarm';
|
||||||
const { t, changeLocale } = useI18n();
|
import { sessionGet } from '@/utils/cache-session-utils';
|
||||||
|
const { isFullscreen, toggle } = useFullscreen();
|
||||||
|
const { t, changeLocale, optionsLocale } = useI18n();
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
|
const appStore = useAppStore();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
/**头像展开项点击 */
|
/**头像展开项点击 */
|
||||||
@@ -29,6 +33,16 @@ function fnClickAlarm() {
|
|||||||
router.push({ path: '/faultManage/active-alarm' });
|
router.push({ path: '/faultManage/active-alarm' });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**系统使用手册跳转 */
|
||||||
|
function fnClickHelpDoc(language?: string) {
|
||||||
|
const routeData = router.resolve({ name: 'HelpDoc' });
|
||||||
|
let href = routeData.href;
|
||||||
|
if (language) {
|
||||||
|
href = `${routeData.href}?language=${language}`;
|
||||||
|
}
|
||||||
|
window.open(href, '_blank');
|
||||||
|
}
|
||||||
|
|
||||||
/**改变多语言 */
|
/**改变多语言 */
|
||||||
function fnChangeLocale(e: any) {
|
function fnChangeLocale(e: any) {
|
||||||
changeLocale(e.key);
|
changeLocale(e.key);
|
||||||
@@ -49,25 +63,39 @@ function fnChangeLocale(e: any) {
|
|||||||
</template>
|
</template>
|
||||||
</a-button>
|
</a-button>
|
||||||
|
|
||||||
<a-tooltip>
|
<a-tooltip placement="bottom">
|
||||||
|
<template #title>{{ t('loayouts.rightContent.helpDoc') }}</template>
|
||||||
|
<a-button type="text" @click="fnClickHelpDoc()">
|
||||||
|
<template #icon>
|
||||||
|
<QuestionCircleOutlined />
|
||||||
|
</template>
|
||||||
|
</a-button>
|
||||||
|
</a-tooltip>
|
||||||
|
|
||||||
|
<a-tooltip placement="bottom">
|
||||||
<template #title>{{ t('loayouts.rightContent.fullscreen') }}</template>
|
<template #title>{{ t('loayouts.rightContent.fullscreen') }}</template>
|
||||||
<a-button type="text" @click="toggle">
|
<a-button type="text" @click="toggle">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<FullscreenExitOutlined v-if="isFullscreen()" />
|
<FullscreenExitOutlined v-if="isFullscreen" />
|
||||||
<FullscreenOutlined v-else />
|
<FullscreenOutlined v-else />
|
||||||
</template>
|
</template>
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
|
|
||||||
<a-dropdown :trigger="['click', 'hover']">
|
<a-dropdown
|
||||||
|
placement="bottom"
|
||||||
|
:trigger="['click', 'hover']"
|
||||||
|
v-if="appStore.i18nOpen"
|
||||||
|
>
|
||||||
<a-button size="small" type="default">
|
<a-button size="small" type="default">
|
||||||
{{ t('i18n') }}
|
{{ t('i18n') }}
|
||||||
<DownOutlined />
|
<DownOutlined />
|
||||||
</a-button>
|
</a-button>
|
||||||
<template #overlay>
|
<template #overlay>
|
||||||
<a-menu @click="fnChangeLocale">
|
<a-menu @click="fnChangeLocale">
|
||||||
<a-menu-item key="zh_CN">中文</a-menu-item>
|
<a-menu-item v-for="opt in optionsLocale" :key="opt.value">
|
||||||
<a-menu-item key="en_US">English</a-menu-item>
|
{{ opt.label }}
|
||||||
|
</a-menu-item>
|
||||||
</a-menu>
|
</a-menu>
|
||||||
</template>
|
</template>
|
||||||
</a-dropdown>
|
</a-dropdown>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import App from './App.vue';
|
|||||||
import router from './router';
|
import router from './router';
|
||||||
import directive from './directive';
|
import directive from './directive';
|
||||||
import i18n from './i18n';
|
import i18n from './i18n';
|
||||||
import '@ant-design-vue/pro-layout/dist/style.css';
|
import 'antdv-pro-layout/dist/style.css';
|
||||||
import 'ant-design-vue/dist/antd.variable.min.css';
|
import 'ant-design-vue/dist/antd.variable.min.css';
|
||||||
|
|
||||||
const app = createApp(App);
|
const app = createApp(App);
|
||||||
|
|||||||
21
src/plugins/file-static-url.ts
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import { sessionGet } from '@/utils/cache-session-utils';
|
||||||
|
import { validHttp } from '@/utils/regular-utils';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析资源文件绝对路径 http
|
||||||
|
* @param path 服务端资源文件
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export function parseUrlPath(path: string) {
|
||||||
|
if (!path || path === '#') {
|
||||||
|
return '#';
|
||||||
|
}
|
||||||
|
if (validHttp(path)) {
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
// 兼容旧前端可改配置文件
|
||||||
|
const baseUrl = import.meta.env.PROD
|
||||||
|
? sessionGet('baseUrl') || import.meta.env.VITE_API_BASE_URL
|
||||||
|
: import.meta.env.VITE_API_BASE_URL;
|
||||||
|
return `${baseUrl}${path}`;
|
||||||
|
}
|
||||||
@@ -82,6 +82,9 @@ type OptionsType = {
|
|||||||
signal?: AbortSignal;
|
signal?: AbortSignal;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 多语言处理
|
||||||
|
export const language = localGet(CACHE_LOCAL_I18N) || 'en_US';
|
||||||
|
|
||||||
// 兼容旧前端可改配置文件
|
// 兼容旧前端可改配置文件
|
||||||
const baseUrl = import.meta.env.PROD
|
const baseUrl = import.meta.env.PROD
|
||||||
? sessionGet('baseUrl') || import.meta.env.VITE_API_BASE_URL
|
? sessionGet('baseUrl') || import.meta.env.VITE_API_BASE_URL
|
||||||
@@ -90,7 +93,7 @@ const baseUrl = import.meta.env.PROD
|
|||||||
/**默认请求参数 */
|
/**默认请求参数 */
|
||||||
const FATCH_OPTIONS: OptionsType = {
|
const FATCH_OPTIONS: OptionsType = {
|
||||||
baseUrl: baseUrl,
|
baseUrl: baseUrl,
|
||||||
timeout: 30_000,
|
timeout: 10_000,
|
||||||
url: '',
|
url: '',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
headers: {
|
headers: {
|
||||||
@@ -121,11 +124,7 @@ function beforeRequest(options: OptionsType): OptionsType | Promise<any> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 客户端接受语言
|
// 客户端接受语言
|
||||||
Reflect.set(
|
Reflect.set(options.headers, 'Accept-Language', `${language};q=0.9`);
|
||||||
options.headers,
|
|
||||||
'Accept-Language',
|
|
||||||
`${localGet(CACHE_LOCAL_I18N) || 'en_US'};q=0.9`
|
|
||||||
);
|
|
||||||
|
|
||||||
// 是否需要设置 token
|
// 是否需要设置 token
|
||||||
const token = getToken();
|
const token = getToken();
|
||||||
@@ -153,7 +152,7 @@ function beforeRequest(options: OptionsType): OptionsType | Promise<any> {
|
|||||||
requestObj.data === data &&
|
requestObj.data === data &&
|
||||||
requestObj.time - time < interval
|
requestObj.time - time < interval
|
||||||
) {
|
) {
|
||||||
const message = RESULT_MSG_URL_RESUBMIT;
|
const message = RESULT_MSG_URL_RESUBMIT[language];
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
code: RESULT_CODE_ERROR,
|
code: RESULT_CODE_ERROR,
|
||||||
msg: message,
|
msg: message,
|
||||||
@@ -204,14 +203,14 @@ function interceptorResponse(res: ResultType): ResultType | Promise<any> {
|
|||||||
if (!Reflect.has(res, 'code')) {
|
if (!Reflect.has(res, 'code')) {
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
code: RESULT_CODE_SUCCESS,
|
code: RESULT_CODE_SUCCESS,
|
||||||
msg: RESULT_MSG_SUCCESS,
|
msg: RESULT_MSG_SUCCESS[language],
|
||||||
data: res,
|
data: res,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (Reflect.has(res, 'error')) {
|
if (Reflect.has(res, 'error')) {
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
code: RESULT_CODE_ERROR,
|
code: RESULT_CODE_ERROR,
|
||||||
msg: RESULT_MSG_ERROR,
|
msg: RESULT_MSG_ERROR[language],
|
||||||
data: res.error,
|
data: res.error,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -291,7 +290,7 @@ export async function request(options: OptionsType): Promise<ResultType> {
|
|||||||
: await res.arrayBuffer();
|
: await res.arrayBuffer();
|
||||||
return {
|
return {
|
||||||
code: RESULT_CODE_SUCCESS,
|
code: RESULT_CODE_SUCCESS,
|
||||||
msg: RESULT_MSG_SUCCESS,
|
msg: RESULT_MSG_SUCCESS[language],
|
||||||
data: data,
|
data: data,
|
||||||
status: res.status,
|
status: res.status,
|
||||||
headers: res.headers,
|
headers: res.headers,
|
||||||
@@ -299,7 +298,7 @@ export async function request(options: OptionsType): Promise<ResultType> {
|
|||||||
default:
|
default:
|
||||||
return {
|
return {
|
||||||
code: RESULT_CODE_ERROR,
|
code: RESULT_CODE_ERROR,
|
||||||
msg: RESULT_MSG_NOT_TYPE,
|
msg: RESULT_MSG_NOT_TYPE[language],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
@@ -307,7 +306,7 @@ export async function request(options: OptionsType): Promise<ResultType> {
|
|||||||
if (error.name === 'AbortError') {
|
if (error.name === 'AbortError') {
|
||||||
return {
|
return {
|
||||||
code: RESULT_CODE_ERROR,
|
code: RESULT_CODE_ERROR,
|
||||||
msg: RESULT_MSG_TIMEOUT,
|
msg: RESULT_MSG_TIMEOUT[language],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
throw error;
|
throw error;
|
||||||
@@ -326,21 +325,21 @@ function stateCode(res: Response) {
|
|||||||
if (res.status === 500) {
|
if (res.status === 500) {
|
||||||
return {
|
return {
|
||||||
code: RESULT_CODE_ERROR,
|
code: RESULT_CODE_ERROR,
|
||||||
msg: RESULT_MSG_SERVER_ERROR,
|
msg: RESULT_MSG_SERVER_ERROR[language],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
// 上传文件成功无内容返回
|
// 上传文件成功无内容返回
|
||||||
if (res.status === 204 && res.statusText === 'No Content') {
|
if (res.status === 204 && res.statusText === 'No Content') {
|
||||||
return {
|
return {
|
||||||
code: RESULT_CODE_SUCCESS,
|
code: RESULT_CODE_SUCCESS,
|
||||||
msg: RESULT_MSG_SUCCESS,
|
msg: RESULT_MSG_SUCCESS[language],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
// 地址找不到
|
// 地址找不到
|
||||||
if (res.status === 404 || res.status === 405) {
|
if (res.status === 404 || res.status === 405) {
|
||||||
return {
|
return {
|
||||||
code: RESULT_CODE_ERROR,
|
code: RESULT_CODE_ERROR,
|
||||||
msg: RESULT_MSG_URL_NOTFOUND,
|
msg: RESULT_MSG_URL_NOTFOUND[language],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
// 身份授权
|
// 身份授权
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import useRouterStore from '@/store/modules/router';
|
|||||||
// NProgress Configuration
|
// NProgress Configuration
|
||||||
NProgress.configure({ showSpinner: false });
|
NProgress.configure({ showSpinner: false });
|
||||||
|
|
||||||
// import { MetaRecord, MenuDataItem } from '@ant-design-vue/pro-layout';
|
// import { MetaRecord, MenuDataItem } from 'antdv-pro-layout';
|
||||||
// mate数据类型 MetaRecord
|
// mate数据类型 MetaRecord
|
||||||
// 根据/路径构建菜单列表,列表项类型 MenuDataItem
|
// 根据/路径构建菜单列表,列表项类型 MenuDataItem
|
||||||
// https://github.com/vueComponent/pro-components/blob/a19279f3a28190bf11e8c36f316c92dbd3387a6d/packages/pro-layout/src/typings.ts#L16
|
// https://github.com/vueComponent/pro-components/blob/a19279f3a28190bf11e8c36f316c92dbd3387a6d/packages/pro-layout/src/typings.ts#L16
|
||||||
@@ -66,18 +66,27 @@ const constantRoutes: RouteRecordRaw[] = [
|
|||||||
{
|
{
|
||||||
path: '/login',
|
path: '/login',
|
||||||
name: 'Login',
|
name: 'Login',
|
||||||
|
meta: { title: 'router.login' },
|
||||||
component: () => import('@/views/login.vue'),
|
component: () => import('@/views/login.vue'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/register',
|
path: '/register',
|
||||||
name: 'Register',
|
name: 'Register',
|
||||||
|
meta: { title: 'router.register' },
|
||||||
component: () => import('@/views/register.vue'),
|
component: () => import('@/views/register.vue'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/403',
|
path: '/403',
|
||||||
name: 'NotPermission',
|
name: 'NotPermission',
|
||||||
|
meta: { title: 'router.page403' },
|
||||||
component: () => import('@/views/error/403.vue'),
|
component: () => import('@/views/error/403.vue'),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/help',
|
||||||
|
name: 'HelpDoc',
|
||||||
|
meta: { title: 'router.helpDoc' },
|
||||||
|
component: () => import('@/views/tool/help/index.vue'),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/redirect',
|
path: '/redirect',
|
||||||
name: 'Redirect',
|
name: 'Redirect',
|
||||||
@@ -91,6 +100,7 @@ const constantRoutes: RouteRecordRaw[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/:pathMatch(.*)*',
|
path: '/:pathMatch(.*)*',
|
||||||
|
meta: { title: 'router.page404' },
|
||||||
component: () => import('@/views/error/404.vue'),
|
component: () => import('@/views/error/404.vue'),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
@@ -118,21 +128,22 @@ const router = createRouter({
|
|||||||
/**全局路由-后置守卫 */
|
/**全局路由-后置守卫 */
|
||||||
router.afterEach((to, from, failure) => {
|
router.afterEach((to, from, failure) => {
|
||||||
NProgress.done();
|
NProgress.done();
|
||||||
|
const title = to.meta?.title
|
||||||
// 设置标题
|
// 设置标题
|
||||||
if (to.meta?.title) {
|
if (!failure && title) {
|
||||||
useAppStore().setTitle(to.meta.title);
|
useAppStore().setTitle(to.meta.title);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/**无Token可访问页面地址白名单 */
|
/**无Token可访问页面地址白名单 */
|
||||||
const WHITE_LIST: string[] = ['/login', '/auth-redirect', '/bind', '/register'];
|
const WHITE_LIST: string[] = ['/login', '/auth-redirect', '/help', '/register'];
|
||||||
|
|
||||||
/**全局路由-前置守卫 */
|
/**全局路由-前置守卫 */
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach((to, from, next) => {
|
||||||
NProgress.start();
|
NProgress.start();
|
||||||
const token = getToken();
|
const token = getToken();
|
||||||
// 获取系统配置信息
|
// 获取系统配置信息
|
||||||
const appStore = useAppStore();
|
const appStore =useAppStore()
|
||||||
if (!appStore.loginBackground) {
|
if (!appStore.loginBackground) {
|
||||||
appStore.fnSysConf();
|
appStore.fnSysConf();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
import { getSysConf } from '@/api';
|
import { getSysConf } from '@/api';
|
||||||
import defaultLOGOIcon from '@/assets/logo_icon.png';
|
import { CACHE_LOCAL_I18N } from '@/constants/cache-keys-constants';
|
||||||
import defaultLOGOBrand from '@/assets/logo_brand.png';
|
|
||||||
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
||||||
import { validHttp } from '@/utils/regular-utils';
|
import { parseUrlPath } from '@/plugins/file-static-url';
|
||||||
|
import { localGet, localSet } from '@/utils/cache-local-utils';
|
||||||
import { defineStore } from 'pinia';
|
import { defineStore } from 'pinia';
|
||||||
import { sessionGet } from '@/utils/cache-session-utils';
|
|
||||||
|
|
||||||
/**应用参数类型 */
|
/**应用参数类型 */
|
||||||
type AppStore = {
|
type AppStore = {
|
||||||
@@ -14,6 +13,7 @@ type AppStore = {
|
|||||||
appCode: string;
|
appCode: string;
|
||||||
/**应用版本 */
|
/**应用版本 */
|
||||||
appVersion: string;
|
appVersion: string;
|
||||||
|
|
||||||
/**应用版权声明 */
|
/**应用版权声明 */
|
||||||
copyright: string;
|
copyright: string;
|
||||||
/**LOGO显示类型 */
|
/**LOGO显示类型 */
|
||||||
@@ -25,6 +25,14 @@ type AppStore = {
|
|||||||
registerUser: boolean;
|
registerUser: boolean;
|
||||||
/**登录界面背景 */
|
/**登录界面背景 */
|
||||||
loginBackground: string;
|
loginBackground: string;
|
||||||
|
/**系统使用手册 */
|
||||||
|
helpDoc: string;
|
||||||
|
/**官方网址 */
|
||||||
|
officialUrl: string;
|
||||||
|
/**国际化切换 */
|
||||||
|
i18nOpen: boolean;
|
||||||
|
/**国际化默认语言 */
|
||||||
|
i18nDefault: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const useAppStore = defineStore('app', {
|
const useAppStore = defineStore('app', {
|
||||||
@@ -32,76 +40,23 @@ const useAppStore = defineStore('app', {
|
|||||||
appName: import.meta.env.VITE_APP_NAME,
|
appName: import.meta.env.VITE_APP_NAME,
|
||||||
appCode: import.meta.env.VITE_APP_CODE,
|
appCode: import.meta.env.VITE_APP_CODE,
|
||||||
appVersion: import.meta.env.VITE_APP_VERSION,
|
appVersion: import.meta.env.VITE_APP_VERSION,
|
||||||
copyright: 'Copyright ©2023 For AGrandTech',
|
|
||||||
|
copyright: `Copyright ©2023 For ${import.meta.env.VITE_APP_NAME}`,
|
||||||
logoType: 'icon',
|
logoType: 'icon',
|
||||||
filePathIcon: '',
|
filePathIcon: '',
|
||||||
filePathBrand: '',
|
filePathBrand: '',
|
||||||
registerUser: false,
|
registerUser: false,
|
||||||
loginBackground: '',
|
loginBackground: '',
|
||||||
|
helpDoc: '',
|
||||||
|
officialUrl: '',
|
||||||
|
i18nOpen: true,
|
||||||
|
i18nDefault: 'en_US',
|
||||||
}),
|
}),
|
||||||
getters: {
|
getters: {},
|
||||||
/**
|
|
||||||
* 获取正确LOGO地址-icon
|
|
||||||
* @param state 内部属性不用传入
|
|
||||||
* @returns LOGO地址url
|
|
||||||
*/
|
|
||||||
getLOGOIcon(state) {
|
|
||||||
const path = state.filePathIcon;
|
|
||||||
if (!path) {
|
|
||||||
return defaultLOGOIcon;
|
|
||||||
}
|
|
||||||
if (validHttp(path)) {
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
// 兼容旧前端可改配置文件
|
|
||||||
const baseUrl = import.meta.env.PROD
|
|
||||||
? sessionGet('baseUrl') || import.meta.env.VITE_API_BASE_URL
|
|
||||||
: import.meta.env.VITE_API_BASE_URL;
|
|
||||||
return `${baseUrl}${path}`;
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* 获取正确LOGO地址-brand
|
|
||||||
* @param state 内部属性不用传入
|
|
||||||
* @returns LOGO地址url
|
|
||||||
*/
|
|
||||||
getLOGOBrand(state) {
|
|
||||||
const path = state.filePathBrand;
|
|
||||||
if (!path) {
|
|
||||||
return defaultLOGOBrand;
|
|
||||||
}
|
|
||||||
if (validHttp(path)) {
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
// 兼容旧前端可改配置文件
|
|
||||||
const baseUrl = import.meta.env.PROD
|
|
||||||
? sessionGet('baseUrl') || import.meta.env.VITE_API_BASE_URL
|
|
||||||
: import.meta.env.VITE_API_BASE_URL;
|
|
||||||
return `${baseUrl}${path}`;
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* 获取正确登录背景地址
|
|
||||||
* @param state 内部属性不用传入
|
|
||||||
* @returns 背景地址url
|
|
||||||
*/
|
|
||||||
getLoginBackground(state) {
|
|
||||||
const path = state.loginBackground;
|
|
||||||
if (!path || path === '#') {
|
|
||||||
return '#';
|
|
||||||
}
|
|
||||||
if (validHttp(path)) {
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
// 兼容旧前端可改配置文件
|
|
||||||
const baseUrl = import.meta.env.PROD
|
|
||||||
? sessionGet('baseUrl') || import.meta.env.VITE_API_BASE_URL
|
|
||||||
: import.meta.env.VITE_API_BASE_URL;
|
|
||||||
return `${baseUrl}${path}`;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
actions: {
|
actions: {
|
||||||
/**设置网页标题 */
|
/**设置网页标题 */
|
||||||
setTitle(title?: string) {
|
setTitle(title?: string) {
|
||||||
if (title) {
|
if (title && title.indexOf('router.') === -1) {
|
||||||
document.title = `${title} - ${this.appName}`;
|
document.title = `${title} - ${this.appName}`;
|
||||||
} else {
|
} else {
|
||||||
document.title = this.appName;
|
document.title = this.appName;
|
||||||
@@ -111,39 +66,39 @@ const useAppStore = defineStore('app', {
|
|||||||
setCopyright(text: string) {
|
setCopyright(text: string) {
|
||||||
this.copyright = text;
|
this.copyright = text;
|
||||||
},
|
},
|
||||||
/**设置LOGO */
|
|
||||||
setLOGO(type: 'brand' | 'icon', filePath: string) {
|
|
||||||
this.logoType = type;
|
|
||||||
if (type === 'brand') {
|
|
||||||
this.filePathBrand = filePath;
|
|
||||||
}
|
|
||||||
if (type === 'icon') {
|
|
||||||
this.filePathIcon = filePath;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 获取系统配置信息
|
// 获取系统配置信息
|
||||||
async fnSysConf() {
|
async fnSysConf() {
|
||||||
const res = await getSysConf();
|
const res = await getSysConf();
|
||||||
if (res.code === RESULT_CODE_SUCCESS && res.data) {
|
if (res.code === RESULT_CODE_SUCCESS && res.data) {
|
||||||
if (res.data.title) {
|
this.appName = res.data.title;
|
||||||
this.appName = res.data.title;
|
this.copyright = res.data.copyright;
|
||||||
}
|
this.logoType = res.data.logoType;
|
||||||
if (res.data.copyright) {
|
|
||||||
this.copyright = res.data.copyright;
|
|
||||||
}
|
|
||||||
this.filePathIcon = res.data.filePathIcon;
|
this.filePathIcon = res.data.filePathIcon;
|
||||||
this.filePathBrand = res.data.filePathBrand;
|
this.filePathBrand = res.data.filePathBrand;
|
||||||
if (res.data.logoType) {
|
// 修改html内容-小图当作favicon.ico
|
||||||
this.logoType = res.data.logoType;
|
if (this.logoType) {
|
||||||
// 修改html内容-小图当作favicon.ico
|
|
||||||
const iconDom = document.querySelector("link[rel~='icon']");
|
const iconDom = document.querySelector("link[rel~='icon']");
|
||||||
if (iconDom) {
|
if (iconDom) {
|
||||||
iconDom.setAttribute('href', this.getLOGOIcon);
|
let url = parseUrlPath(this.filePathIcon);
|
||||||
|
// 语言参数替换
|
||||||
|
if (url.indexOf('{language}') !== -1) {
|
||||||
|
const local = localGet(CACHE_LOCAL_I18N) || 'en_US';
|
||||||
|
const lang = local.split('_')[0];
|
||||||
|
url = url.replace('{language}', lang);
|
||||||
|
}
|
||||||
|
iconDom.setAttribute('href', url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.registerUser = res.data.registerUser === 'true';
|
this.registerUser = res.data.registerUser === 'true';
|
||||||
if (res.data.loginBackground) {
|
this.loginBackground = res.data.loginBackground;
|
||||||
this.loginBackground = res.data.loginBackground;
|
this.helpDoc = res.data.helpDoc;
|
||||||
|
this.officialUrl = res.data.officialUrl;
|
||||||
|
this.i18nOpen = res.data.i18nOpen === 'true';
|
||||||
|
this.i18nDefault = res.data.i18nDefault;
|
||||||
|
// 切换禁用时,设置默认语言
|
||||||
|
const localI18n = localGet(CACHE_LOCAL_I18N);
|
||||||
|
if (localI18n == null || (!this.i18nOpen && this.i18nDefault)) {
|
||||||
|
localSet(CACHE_LOCAL_I18N, this.i18nDefault);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
|
|||||||
2
src/typings/router.d.ts
vendored
@@ -1,5 +1,5 @@
|
|||||||
import 'vue-router';
|
import 'vue-router';
|
||||||
import { MetaRecord, MenuDataItem } from '@ant-design-vue/pro-layout';
|
import { MetaRecord, MenuDataItem } from 'antdv-pro-layout';
|
||||||
|
|
||||||
declare module 'vue-router' {
|
declare module 'vue-router' {
|
||||||
interface RouteMeta extends MetaRecord {
|
interface RouteMeta extends MetaRecord {
|
||||||
|
|||||||
2
src/typings/vite-env.d.ts
vendored
@@ -6,3 +6,5 @@ declare module '*.vue' {
|
|||||||
const component: DefineComponent<{}, {}, any>;
|
const component: DefineComponent<{}, {}, any>;
|
||||||
export default component;
|
export default component;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
declare module 'vue3-smooth-dnd';
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ export const xlsxUrl = `${
|
|||||||
* console.log(res)
|
* console.log(res)
|
||||||
* });
|
* });
|
||||||
*/
|
*/
|
||||||
export async function readLoalXlsx(id: string): Promise<Record<string, any>[]> {
|
export async function readLoalXlsx(lang:string,id: string): Promise<Record<string, any>[]> {
|
||||||
let result = await fetch(`${xlsxUrl}/${id}.xlsx`);
|
let result = await fetch(`${xlsxUrl}/${lang}/${id}.xlsx`);
|
||||||
let fileBuffer = await result.arrayBuffer();
|
let fileBuffer = await result.arrayBuffer();
|
||||||
// 判断是否xlsx文件
|
// 判断是否xlsx文件
|
||||||
const data = new Uint8Array(fileBuffer);
|
const data = new Uint8Array(fileBuffer);
|
||||||
@@ -30,7 +30,7 @@ export async function readLoalXlsx(id: string): Promise<Record<string, any>[]> {
|
|||||||
data[2] === 0x03 &&
|
data[2] === 0x03 &&
|
||||||
data[3] === 0x04;
|
data[3] === 0x04;
|
||||||
if (!isXlsxFile) {
|
if (!isXlsxFile) {
|
||||||
result = await fetch(`${xlsxUrl}/all.xlsx`);
|
result = await fetch(`${xlsxUrl}/${lang}/all.xlsx`);
|
||||||
fileBuffer = await result.arrayBuffer();
|
fileBuffer = await result.arrayBuffer();
|
||||||
}
|
}
|
||||||
return readSheet(fileBuffer, 0);
|
return readSheet(fileBuffer, 0);
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
/**进入全屏 */
|
|
||||||
function enterFullscreen() {
|
|
||||||
const element = document.documentElement;
|
|
||||||
|
|
||||||
if (element.requestFullscreen) {
|
|
||||||
element.requestFullscreen();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**退出全屏 */
|
|
||||||
function exitFullscreen() {
|
|
||||||
if (document.exitFullscreen) {
|
|
||||||
document.exitFullscreen();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**是否全屏 */
|
|
||||||
export function isFullscreen() {
|
|
||||||
return !!document.fullscreenElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**变更 */
|
|
||||||
export function toggle() {
|
|
||||||
return isFullscreen() ? exitFullscreen() : enterFullscreen();
|
|
||||||
}
|
|
||||||
@@ -1,12 +1,16 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { PageContainer } from '@ant-design-vue/pro-layout';
|
import { PageContainer } from 'antdv-pro-layout';
|
||||||
import { message } from 'ant-design-vue/lib';
|
import { message } from 'ant-design-vue/lib';
|
||||||
import { getUserProfile } from '@/api/profile';
|
import { getUserProfile } from '@/api/profile';
|
||||||
import { reactive, ref, onMounted } from 'vue';
|
import { reactive, ref, onMounted } from 'vue';
|
||||||
import { parseDateToStr } from '@/utils/date-utils';
|
import { parseDateToStr } from '@/utils/date-utils';
|
||||||
import useUserStore from '@/store/modules/user';
|
import useUserStore from '@/store/modules/user';
|
||||||
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
|
import useAppStore from '@/store/modules/app';
|
||||||
import useI18n from '@/hooks/useI18n';
|
import useI18n from '@/hooks/useI18n';
|
||||||
|
const appStore = useAppStore();
|
||||||
|
const route = useRoute();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
/**加载状态 */
|
/**加载状态 */
|
||||||
@@ -71,7 +75,19 @@ function fnGetProfile() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际化翻译转换
|
||||||
|
*/
|
||||||
|
function fnLocale() {
|
||||||
|
let title = route.meta.title as string;
|
||||||
|
if (title.indexOf('router.') !== -1) {
|
||||||
|
title = t(title);
|
||||||
|
}
|
||||||
|
appStore.setTitle(title);
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
fnLocale();
|
||||||
// 获取信息
|
// 获取信息
|
||||||
fnGetProfile();
|
fnGetProfile();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,14 +1,36 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { onActivated, ref } from 'vue';
|
||||||
import { PageContainer } from '@ant-design-vue/pro-layout';
|
import { PageContainer } from 'antdv-pro-layout';
|
||||||
import BaseInfo from './components/base-info.vue';
|
import BaseInfo from './components/base-info.vue';
|
||||||
import ResetPasswd from './components/reset-passwd.vue';
|
import ResetPasswd from './components/reset-passwd.vue';
|
||||||
import StyleLayout from './components/style-layout.vue';
|
import StyleLayout from './components/style-layout.vue';
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
|
import useAppStore from '@/store/modules/app';
|
||||||
import useI18n from '@/hooks/useI18n';
|
import useI18n from '@/hooks/useI18n';
|
||||||
|
const appStore = useAppStore();
|
||||||
|
const route = useRoute();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
/**Tab标签激活 */
|
/**Tab标签激活 */
|
||||||
let activeKey = ref<string>('base-info');
|
let activeKey = ref<string>('base-info');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际化翻译转换
|
||||||
|
*/
|
||||||
|
function fnLocale() {
|
||||||
|
let title = route.meta.title as string;
|
||||||
|
if (title.indexOf('router.') !== -1) {
|
||||||
|
title = t(title);
|
||||||
|
}
|
||||||
|
appStore.setTitle(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
onActivated(() => {
|
||||||
|
// 调用时机为首次挂载
|
||||||
|
// 以及每次从缓存中被重新插入时
|
||||||
|
fnLocale();
|
||||||
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -18,10 +40,16 @@ let activeKey = ref<string>('base-info');
|
|||||||
<a-tab-pane key="base-info" :tab="t('views.account.settings.baseInfo')">
|
<a-tab-pane key="base-info" :tab="t('views.account.settings.baseInfo')">
|
||||||
<BaseInfo></BaseInfo>
|
<BaseInfo></BaseInfo>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="reset-passwd" :tab="t('views.account.settings.resetPasswd')">
|
<a-tab-pane
|
||||||
|
key="reset-passwd"
|
||||||
|
:tab="t('views.account.settings.resetPasswd')"
|
||||||
|
>
|
||||||
<ResetPasswd></ResetPasswd>
|
<ResetPasswd></ResetPasswd>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="style-layout" :tab="t('views.account.settings.styleLayout')">
|
<a-tab-pane
|
||||||
|
key="style-layout"
|
||||||
|
:tab="t('views.account.settings.styleLayout')"
|
||||||
|
>
|
||||||
<StyleLayout></StyleLayout>
|
<StyleLayout></StyleLayout>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, ref, onMounted, toRaw } from 'vue';
|
import { reactive, ref, onMounted, toRaw } from 'vue';
|
||||||
import { PageContainer } from '@ant-design-vue/pro-layout';
|
import { PageContainer } from 'antdv-pro-layout';
|
||||||
import { Form, message, Modal } from 'ant-design-vue/lib';
|
import { Form, message, Modal } from 'ant-design-vue/lib';
|
||||||
import { SizeType } from 'ant-design-vue/lib/config-provider';
|
import { SizeType } from 'ant-design-vue/lib/config-provider';
|
||||||
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
|
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, ref, onMounted } from 'vue';
|
import { reactive, ref, onMounted } from 'vue';
|
||||||
import { PageContainer } from '@ant-design-vue/pro-layout';
|
import { PageContainer } from 'antdv-pro-layout';
|
||||||
import { Modal, message } from 'ant-design-vue/lib';
|
import { Modal, message } from 'ant-design-vue/lib';
|
||||||
import useI18n from '@/hooks/useI18n';
|
import useI18n from '@/hooks/useI18n';
|
||||||
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
||||||
@@ -44,6 +44,11 @@ let tabState: TabStateType = reactive({
|
|||||||
|
|
||||||
/**tab标签栏标签点击监听 */
|
/**tab标签栏标签点击监听 */
|
||||||
function fnTabActiveTopTag(key: string | number) {
|
function fnTabActiveTopTag(key: string | number) {
|
||||||
|
if (tableState.loading) return;
|
||||||
|
tableState.listData = [];
|
||||||
|
tableState.listColumns = [];
|
||||||
|
tableState.arrayData = [];
|
||||||
|
tableState.arrayColumns = [];
|
||||||
tableState.loading = true;
|
tableState.loading = true;
|
||||||
if (key !== '#') {
|
if (key !== '#') {
|
||||||
tabState.tabActiveTopTag = key as string;
|
tabState.tabActiveTopTag = key as string;
|
||||||
@@ -68,7 +73,7 @@ function fnTabActiveTopTag(key: string | number) {
|
|||||||
tableState.arrayColumns.push({
|
tableState.arrayColumns.push({
|
||||||
title: t('common.operate'),
|
title: t('common.operate'),
|
||||||
key: 'index',
|
key: 'index',
|
||||||
align: 'left',
|
align: 'center',
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
width: 5,
|
width: 5,
|
||||||
});
|
});
|
||||||
@@ -81,11 +86,9 @@ function fnTabActiveTopTag(key: string | number) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
tableState.arrayNewIndex = -1;
|
|
||||||
tableState.editRecord = {};
|
|
||||||
tableState.arrayChildNewIndex = -1;
|
|
||||||
tableState.arrayChildEditRecord = {};
|
|
||||||
tableState.loading = false;
|
tableState.loading = false;
|
||||||
|
listEditClose();
|
||||||
|
arrayEditClose();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,6 +273,7 @@ function arrayEditClose() {
|
|||||||
tableState.arrayData.pop();
|
tableState.arrayData.pop();
|
||||||
}
|
}
|
||||||
tableState.editRecord = {};
|
tableState.editRecord = {};
|
||||||
|
arrayChildEditClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**多列表编辑确认 */
|
/**多列表编辑确认 */
|
||||||
@@ -597,7 +601,7 @@ function arrayChildExpand(key: Record<string, any>, row: Record<string, any>) {
|
|||||||
tableState.arrayChildColumns.push({
|
tableState.arrayChildColumns.push({
|
||||||
title: t('common.operate'),
|
title: t('common.operate'),
|
||||||
key: 'index',
|
key: 'index',
|
||||||
align: 'left',
|
align: 'center',
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
width: 5,
|
width: 5,
|
||||||
});
|
});
|
||||||
@@ -1071,9 +1075,12 @@ onMounted(() => {
|
|||||||
);
|
);
|
||||||
// 默认选择AMF
|
// 默认选择AMF
|
||||||
const item = neCascaderOtions.value.find(s => s.value === 'AMF');
|
const item = neCascaderOtions.value.find(s => s.value === 'AMF');
|
||||||
if (item) {
|
if (item && item.children) {
|
||||||
const info = item.children[0];
|
const info = item.children[0];
|
||||||
neTypeSelect.value = [info.neType, info.neId];
|
neTypeSelect.value = [info.neType, info.neId];
|
||||||
|
} else {
|
||||||
|
const info = neCascaderOtions.value[0].children[0];
|
||||||
|
neTypeSelect.value = [info.neType, info.neId];
|
||||||
}
|
}
|
||||||
fnGetParamConfigTopTab();
|
fnGetParamConfigTopTab();
|
||||||
}
|
}
|
||||||
@@ -1192,19 +1199,9 @@ onMounted(() => {
|
|||||||
"
|
"
|
||||||
class="editable-cell__input-wrapper"
|
class="editable-cell__input-wrapper"
|
||||||
>
|
>
|
||||||
<a-input
|
|
||||||
v-if="
|
|
||||||
['string', 'ipv6', 'ipv4', 'regex'].includes(
|
|
||||||
record['type']
|
|
||||||
)
|
|
||||||
"
|
|
||||||
v-model:value="tableState.editRecord['value']"
|
|
||||||
></a-input>
|
|
||||||
<a-input-number
|
<a-input-number
|
||||||
v-else-if="record['type'] === 'int'"
|
v-if="record['type'] === 'int'"
|
||||||
v-model:value="tableState.editRecord['value']"
|
v-model:value="tableState.editRecord['value']"
|
||||||
:min="0"
|
|
||||||
:max="65535"
|
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
></a-input-number>
|
></a-input-number>
|
||||||
<a-switch
|
<a-switch
|
||||||
@@ -1227,7 +1224,10 @@ onMounted(() => {
|
|||||||
{{ k }}
|
{{ k }}
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
|
<a-input
|
||||||
|
v-else
|
||||||
|
v-model:value="tableState.editRecord['value']"
|
||||||
|
></a-input>
|
||||||
<a-space :size="16" align="center">
|
<a-space :size="16" align="center">
|
||||||
<a-popconfirm
|
<a-popconfirm
|
||||||
:title="t('views.configManage.configParam.editSure')"
|
:title="t('views.configManage.configParam.editSure')"
|
||||||
@@ -1251,7 +1251,10 @@ onMounted(() => {
|
|||||||
</a-space>
|
</a-space>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="editable-cell__text-wrapper">
|
<div v-else class="editable-cell__text-wrapper">
|
||||||
{{ `${text}` || ' ' }}
|
<template v-if="record['type'] === 'enum'">
|
||||||
|
{{ JSON.parse(record['filter'])[text] }}
|
||||||
|
</template>
|
||||||
|
<template v-else>{{ `${text}` || ' ' }}</template>
|
||||||
<EditOutlined
|
<EditOutlined
|
||||||
class="editable-cell__icon"
|
class="editable-cell__icon"
|
||||||
v-if="record.access !== 'read'"
|
v-if="record.access !== 'read'"
|
||||||
@@ -1370,24 +1373,11 @@ onMounted(() => {
|
|||||||
"
|
"
|
||||||
class="editable-cell__input-wrapper"
|
class="editable-cell__input-wrapper"
|
||||||
>
|
>
|
||||||
<a-input
|
|
||||||
v-if="
|
|
||||||
['string', 'ipv6', 'ipv4', 'regex'].includes(
|
|
||||||
text['type']
|
|
||||||
)
|
|
||||||
"
|
|
||||||
v-model:value="
|
|
||||||
tableState.editRecord[text.name]['value']
|
|
||||||
"
|
|
||||||
style="width: 100%"
|
|
||||||
></a-input>
|
|
||||||
<a-input-number
|
<a-input-number
|
||||||
v-else-if="text['type'] === 'int'"
|
v-if="text['type'] === 'int'"
|
||||||
v-model:value="
|
v-model:value="
|
||||||
tableState.editRecord[text.name]['value']
|
tableState.editRecord[text.name]['value']
|
||||||
"
|
"
|
||||||
:min="0"
|
|
||||||
:max="65535"
|
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
></a-input-number>
|
></a-input-number>
|
||||||
<a-switch
|
<a-switch
|
||||||
@@ -1413,18 +1403,34 @@ onMounted(() => {
|
|||||||
{{ k }}
|
{{ k }}
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
|
<a-input
|
||||||
|
v-else
|
||||||
|
v-model:value="
|
||||||
|
tableState.editRecord[text.name]['value']
|
||||||
|
"
|
||||||
|
style="width: 100%"
|
||||||
|
></a-input>
|
||||||
</div>
|
</div>
|
||||||
<a-button
|
<template v-else-if="text.array">
|
||||||
type="link"
|
<a-button
|
||||||
size="small"
|
type="link"
|
||||||
@click.prevent="arrayChildExpand(record['index'], text)"
|
size="small"
|
||||||
v-else-if="Array.isArray(text.array)"
|
@click.prevent="arrayChildExpand(record['index'], text)"
|
||||||
>
|
>
|
||||||
{{ t('common.viewText') }}
|
{{ t('views.configManage.configParamForm.arrayMore') }}
|
||||||
|
</a-button>
|
||||||
</a-button>
|
<!--特殊字段拓展显示-->
|
||||||
|
<span v-if="text.name === 'dnnList'">
|
||||||
|
({{ text.value.map((s: any) => s.dnn).join() }})
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
<div v-else class="editable-cell__text-wrapper">
|
<div v-else class="editable-cell__text-wrapper">
|
||||||
{{ `${text.value}` }}
|
<template v-if="text['type'] === 'enum'">
|
||||||
|
{{ JSON.parse(text['filter'])[text.value] }}
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
{{ `${text.value}` || ' ' }}
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
@@ -1465,17 +1471,19 @@ onMounted(() => {
|
|||||||
"
|
"
|
||||||
>
|
>
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
<template #title>{{t('views.configManage.configParam.post')}}</template>
|
<template #title>{{
|
||||||
|
t('views.configManage.configParam.post')
|
||||||
|
}}</template>
|
||||||
<a-popconfirm
|
<a-popconfirm
|
||||||
v-if="
|
v-if="
|
||||||
tableState.arrayChildNewIndex ===
|
tableState.arrayChildNewIndex ===
|
||||||
text[column.key]?.value
|
text[column.key]?.value
|
||||||
"
|
"
|
||||||
:title="
|
:title="
|
||||||
t('views.configManage.configParam.addSure', {
|
t('views.configManage.configParam.addSure', {
|
||||||
value: text[column.key]?.value,
|
value: text[column.key]?.value,
|
||||||
})
|
})
|
||||||
"
|
"
|
||||||
placement="left"
|
placement="left"
|
||||||
@confirm="arrayChildAddOk()"
|
@confirm="arrayChildAddOk()"
|
||||||
>
|
>
|
||||||
@@ -1484,10 +1492,10 @@ onMounted(() => {
|
|||||||
<a-popconfirm
|
<a-popconfirm
|
||||||
v-else
|
v-else
|
||||||
:title="
|
:title="
|
||||||
t('views.configManage.configParam.arraryEdit', {
|
t('views.configManage.configParam.arraryEdit', {
|
||||||
value: text[column.key]?.value,
|
value: text[column.key]?.value,
|
||||||
})
|
})
|
||||||
"
|
"
|
||||||
placement="left"
|
placement="left"
|
||||||
@confirm="arrayChildEditOk()"
|
@confirm="arrayChildEditOk()"
|
||||||
>
|
>
|
||||||
@@ -1548,28 +1556,13 @@ onMounted(() => {
|
|||||||
"
|
"
|
||||||
class="editable-cell__input-wrapper"
|
class="editable-cell__input-wrapper"
|
||||||
>
|
>
|
||||||
<a-input
|
|
||||||
v-if="
|
|
||||||
['string', 'ipv6', 'ipv4', 'regex'].includes(
|
|
||||||
text['type']
|
|
||||||
)
|
|
||||||
"
|
|
||||||
v-model:value="
|
|
||||||
tableState.arrayChildEditRecord[text.name][
|
|
||||||
'value'
|
|
||||||
]
|
|
||||||
"
|
|
||||||
style="width: 100%"
|
|
||||||
></a-input>
|
|
||||||
<a-input-number
|
<a-input-number
|
||||||
v-else-if="text['type'] === 'int'"
|
v-if="text['type'] === 'int'"
|
||||||
v-model:value="
|
v-model:value="
|
||||||
tableState.arrayChildEditRecord[text.name][
|
tableState.arrayChildEditRecord[text.name][
|
||||||
'value'
|
'value'
|
||||||
]
|
]
|
||||||
"
|
"
|
||||||
:min="0"
|
|
||||||
:max="65535"
|
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
></a-input-number>
|
></a-input-number>
|
||||||
<a-switch
|
<a-switch
|
||||||
@@ -1600,6 +1593,15 @@ onMounted(() => {
|
|||||||
{{ k }}
|
{{ k }}
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
|
<a-input
|
||||||
|
v-else
|
||||||
|
v-model:value="
|
||||||
|
tableState.arrayChildEditRecord[text.name][
|
||||||
|
'value'
|
||||||
|
]
|
||||||
|
"
|
||||||
|
style="width: 100%"
|
||||||
|
></a-input>
|
||||||
</div>
|
</div>
|
||||||
<a-button
|
<a-button
|
||||||
type="link"
|
type="link"
|
||||||
@@ -1609,10 +1611,15 @@ onMounted(() => {
|
|||||||
"
|
"
|
||||||
v-else-if="Array.isArray(text.array)"
|
v-else-if="Array.isArray(text.array)"
|
||||||
>
|
>
|
||||||
{{ t('common.viewText') }}
|
{{ t('common.viewText') }}
|
||||||
</a-button>
|
</a-button>
|
||||||
<div v-else class="editable-cell__text-wrapper">
|
<div v-else class="editable-cell__text-wrapper">
|
||||||
{{ `${text.value}` }}
|
<template v-if="text['type'] === 'enum'">
|
||||||
|
{{ JSON.parse(text['filter'])[text.value] }}
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
{{ `${text.value}` || ' ' }}
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, ref, onMounted } from 'vue';
|
import { reactive, ref, onMounted } from 'vue';
|
||||||
import { PageContainer } from '@ant-design-vue/pro-layout';
|
import { PageContainer } from 'antdv-pro-layout';
|
||||||
import { message } from 'ant-design-vue/lib';
|
import { message } from 'ant-design-vue/lib';
|
||||||
import useI18n from '@/hooks/useI18n';
|
import useI18n from '@/hooks/useI18n';
|
||||||
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
||||||
@@ -40,7 +40,7 @@ type TabStateType = {
|
|||||||
|
|
||||||
/**tab标签栏属性 */
|
/**tab标签栏属性 */
|
||||||
let tabState: TabStateType = reactive({
|
let tabState: TabStateType = reactive({
|
||||||
tabPosition: 'left',
|
tabPosition: 'top',
|
||||||
tabNames: [],
|
tabNames: [],
|
||||||
tabActiveTopTag: '',
|
tabActiveTopTag: '',
|
||||||
tabType: 'list',
|
tabType: 'list',
|
||||||
@@ -61,32 +61,28 @@ function fnTabActiveTopTag(key: string | number) {
|
|||||||
const neType = neTypeSelect.value[0];
|
const neType = neTypeSelect.value[0];
|
||||||
const neId = neTypeSelect.value[1];
|
const neId = neTypeSelect.value[1];
|
||||||
const topTag = tabState.tabActiveTopTag;
|
const topTag = tabState.tabActiveTopTag;
|
||||||
getParamConfigInfoForm(neType, topTag, neId)
|
getParamConfigInfoForm(neType, topTag, neId).then(res => {
|
||||||
.then(res => {
|
if (res.code === RESULT_CODE_SUCCESS && res.data.type) {
|
||||||
console.log(res);
|
tabState.tabActiveTopTag = topTag; // 激活当前数据项
|
||||||
if (res.code === RESULT_CODE_SUCCESS && res.data.type) {
|
tabState.loading = false;
|
||||||
tabState.loading = false;
|
tabState.tabType = res.data.type;
|
||||||
tabState.tabType = res.data.type;
|
if (res.data.type === 'list') {
|
||||||
if (res.data.type === 'list') {
|
listState.data = res.data.data;
|
||||||
listState.data = res.data.data;
|
listEditClose();
|
||||||
listEditClose();
|
|
||||||
}
|
|
||||||
if (res.data.type === 'array') {
|
|
||||||
arrayState.data = res.data.data;
|
|
||||||
arrayState.dataRule = res.data.dataRule;
|
|
||||||
arrayState.collapseActiveKey = [];
|
|
||||||
arrayEditClose();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
message.warning({
|
|
||||||
content: t('common.noData'),
|
|
||||||
duration: 3,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
})
|
if (res.data.type === 'array') {
|
||||||
.catch(err => {
|
arrayState.data = res.data.data;
|
||||||
console.log(err);
|
arrayState.dataRule = res.data.dataRule;
|
||||||
});
|
arrayState.collapseActiveKey = [];
|
||||||
|
arrayEditClose();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
message.warning({
|
||||||
|
content: t('common.noData'),
|
||||||
|
duration: 3,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**查询配置Tag标签 */
|
/**查询配置Tag标签 */
|
||||||
@@ -243,7 +239,6 @@ let arrayState: ArrayStateType = reactive({
|
|||||||
|
|
||||||
/**多列表编辑 */
|
/**多列表编辑 */
|
||||||
function arrayEdit(item: Record<string, any>, index: number) {
|
function arrayEdit(item: Record<string, any>, index: number) {
|
||||||
console.log(item, index);
|
|
||||||
const row: Record<string, any> = {};
|
const row: Record<string, any> = {};
|
||||||
for (const v of item.record) {
|
for (const v of item.record) {
|
||||||
row[v.name] = Object.assign({}, v);
|
row[v.name] = Object.assign({}, v);
|
||||||
@@ -506,7 +501,7 @@ function arrayChildExpand(key: number | string, row: Record<string, any>) {
|
|||||||
arrayChildState.dataRule = {
|
arrayChildState.dataRule = {
|
||||||
title: `Index-0`,
|
title: `Index-0`,
|
||||||
key: 0,
|
key: 0,
|
||||||
record: [ruleArr],
|
record: ruleArr,
|
||||||
};
|
};
|
||||||
|
|
||||||
arrayChildState.loc = `${loc}/${from['name']}`;
|
arrayChildState.loc = `${loc}/${from['name']}`;
|
||||||
@@ -525,7 +520,6 @@ function arrayChildExpandClose() {
|
|||||||
|
|
||||||
/**多列表嵌套行编辑 */
|
/**多列表嵌套行编辑 */
|
||||||
function arrayChildEdit(item: Record<string, any>, index: number) {
|
function arrayChildEdit(item: Record<string, any>, index: number) {
|
||||||
console.log(item, index);
|
|
||||||
const row: Record<string, any> = {};
|
const row: Record<string, any> = {};
|
||||||
for (const v of item.record) {
|
for (const v of item.record) {
|
||||||
row[v.name] = Object.assign({}, v);
|
row[v.name] = Object.assign({}, v);
|
||||||
@@ -826,7 +820,7 @@ function ruleVerification(row: Record<string, any>): (string | boolean)[] {
|
|||||||
if (valueInt < minInt || valueInt > maxInt) {
|
if (valueInt < minInt || valueInt > maxInt) {
|
||||||
return [
|
return [
|
||||||
false,
|
false,
|
||||||
t('views.configParam.configParamForm.requireInt', {
|
t('views.configManage.configParamForm.requireInt', {
|
||||||
display,
|
display,
|
||||||
filter,
|
filter,
|
||||||
}),
|
}),
|
||||||
@@ -838,7 +832,7 @@ function ruleVerification(row: Record<string, any>): (string | boolean)[] {
|
|||||||
if (!regExpIPv4.test(value)) {
|
if (!regExpIPv4.test(value)) {
|
||||||
return [
|
return [
|
||||||
false,
|
false,
|
||||||
t('views.configParam.configParamForm.requireIpv4', { display }),
|
t('views.configManage.configParamForm.requireIpv4', { display }),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -846,7 +840,7 @@ function ruleVerification(row: Record<string, any>): (string | boolean)[] {
|
|||||||
if (!regExpIPv6.test(value)) {
|
if (!regExpIPv6.test(value)) {
|
||||||
return [
|
return [
|
||||||
false,
|
false,
|
||||||
t('views.configParam.configParamForm.requireIpv6', { display }),
|
t('views.configManage.configParamForm.requireIpv6', { display }),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -862,7 +856,7 @@ function ruleVerification(row: Record<string, any>): (string | boolean)[] {
|
|||||||
if (!Object.keys(filterJson).includes(`${value}`)) {
|
if (!Object.keys(filterJson).includes(`${value}`)) {
|
||||||
return [
|
return [
|
||||||
false,
|
false,
|
||||||
t('views.configParam.configParamForm.requireEnum', { display }),
|
t('views.configManage.configParamForm.requireEnum', { display }),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -879,7 +873,7 @@ function ruleVerification(row: Record<string, any>): (string | boolean)[] {
|
|||||||
if (!Object.values(filterJson).includes(`${value}`)) {
|
if (!Object.values(filterJson).includes(`${value}`)) {
|
||||||
return [
|
return [
|
||||||
false,
|
false,
|
||||||
t('views.configParam.configParamForm.requireBool', { display }),
|
t('views.configManage.configParamForm.requireBool', { display }),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -894,7 +888,9 @@ function ruleVerification(row: Record<string, any>): (string | boolean)[] {
|
|||||||
if (!rule.test(value)) {
|
if (!rule.test(value)) {
|
||||||
return [
|
return [
|
||||||
false,
|
false,
|
||||||
t('views.configParam.configParamForm.requireString', { display }),
|
t('views.configManage.configParamForm.requireString', {
|
||||||
|
display,
|
||||||
|
}),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -910,7 +906,9 @@ function ruleVerification(row: Record<string, any>): (string | boolean)[] {
|
|||||||
if (!regex.test(value)) {
|
if (!regex.test(value)) {
|
||||||
return [
|
return [
|
||||||
false,
|
false,
|
||||||
t('views.configParam.configParamForm.requireString', { display }),
|
t('views.configManage.configParamForm.requireString', {
|
||||||
|
display,
|
||||||
|
}),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -922,7 +920,7 @@ function ruleVerification(row: Record<string, any>): (string | boolean)[] {
|
|||||||
default:
|
default:
|
||||||
return [
|
return [
|
||||||
false,
|
false,
|
||||||
t('views.configParam.configParamForm.requireUn', { display }),
|
t('views.configManage.configParamForm.requireUn', { display }),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@@ -997,10 +995,13 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
// 默认选择AMF
|
// 默认选择AMF
|
||||||
const item = neCascaderOtions.value.find(s => s.value === 'UPF');
|
const item = neCascaderOtions.value.find(s => s.value === 'AMF');
|
||||||
if (item) {
|
if (item && item.children) {
|
||||||
const info = item.children[0];
|
const info = item.children[0];
|
||||||
neTypeSelect.value = [info.neType, info.neId];
|
neTypeSelect.value = [info.neType, info.neId];
|
||||||
|
} else {
|
||||||
|
const info = neCascaderOtions.value[0].children[0];
|
||||||
|
neTypeSelect.value = [info.neType, info.neId];
|
||||||
}
|
}
|
||||||
fnGetParamConfigTopTab();
|
fnGetParamConfigTopTab();
|
||||||
}
|
}
|
||||||
@@ -1095,19 +1096,9 @@ onMounted(() => {
|
|||||||
"
|
"
|
||||||
class="editable-cell__input-wrapper"
|
class="editable-cell__input-wrapper"
|
||||||
>
|
>
|
||||||
<a-input
|
|
||||||
v-if="
|
|
||||||
['string', 'ipv6', 'ipv4', 'regex'].includes(
|
|
||||||
record['type']
|
|
||||||
)
|
|
||||||
"
|
|
||||||
v-model:value="listState.editRecord['value']"
|
|
||||||
></a-input>
|
|
||||||
<a-input-number
|
<a-input-number
|
||||||
v-else-if="record['type'] === 'int'"
|
v-if="record['type'] === 'int'"
|
||||||
v-model:value="listState.editRecord['value']"
|
v-model:value="listState.editRecord['value']"
|
||||||
:min="0"
|
|
||||||
:max="65535"
|
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
></a-input-number>
|
></a-input-number>
|
||||||
<a-switch
|
<a-switch
|
||||||
@@ -1130,6 +1121,10 @@ onMounted(() => {
|
|||||||
{{ k }}
|
{{ k }}
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
|
<a-input
|
||||||
|
v-else
|
||||||
|
v-model:value="listState.editRecord['value']"
|
||||||
|
></a-input>
|
||||||
<a-space
|
<a-space
|
||||||
:size="16"
|
:size="16"
|
||||||
align="center"
|
align="center"
|
||||||
@@ -1286,6 +1281,7 @@ onMounted(() => {
|
|||||||
:label="item.display"
|
:label="item.display"
|
||||||
:name="item.name"
|
:name="item.name"
|
||||||
:required="item.optional === 'false'"
|
:required="item.optional === 'false'"
|
||||||
|
style="margin-bottom: 2px"
|
||||||
>
|
>
|
||||||
<a-tooltip placement="topLeft">
|
<a-tooltip placement="topLeft">
|
||||||
<template #title v-if="item.comment">
|
<template #title v-if="item.comment">
|
||||||
@@ -1300,24 +1296,11 @@ onMounted(() => {
|
|||||||
arrayState.editRecord[item.name] !== undefined
|
arrayState.editRecord[item.name] !== undefined
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<a-input
|
|
||||||
v-if="
|
|
||||||
['string', 'ipv6', 'ipv4', 'regex'].includes(
|
|
||||||
item['type']
|
|
||||||
)
|
|
||||||
"
|
|
||||||
v-model:value="
|
|
||||||
arrayState.editRecord[item.name]['value']
|
|
||||||
"
|
|
||||||
:disabled="item.name === 'index'"
|
|
||||||
></a-input>
|
|
||||||
<a-input-number
|
<a-input-number
|
||||||
v-else-if="item['type'] === 'int'"
|
v-if="item['type'] === 'int'"
|
||||||
v-model:value="
|
v-model:value="
|
||||||
arrayState.editRecord[item.name]['value']
|
arrayState.editRecord[item.name]['value']
|
||||||
"
|
"
|
||||||
:min="0"
|
|
||||||
:max="65535"
|
|
||||||
:disabled="item.name === 'index'"
|
:disabled="item.name === 'index'"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
></a-input-number>
|
></a-input-number>
|
||||||
@@ -1345,6 +1328,13 @@ onMounted(() => {
|
|||||||
{{ k }}
|
{{ k }}
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
|
<a-input
|
||||||
|
v-else
|
||||||
|
v-model:value="
|
||||||
|
arrayState.editRecord[item.name]['value']
|
||||||
|
"
|
||||||
|
:disabled="item.name === 'index'"
|
||||||
|
></a-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a-button
|
<a-button
|
||||||
@@ -1363,7 +1353,12 @@ onMounted(() => {
|
|||||||
</a-button>
|
</a-button>
|
||||||
|
|
||||||
<div v-else>
|
<div v-else>
|
||||||
{{ `${item.value}` || ' ' }}
|
<template v-if="item['type'] === 'enum'">
|
||||||
|
{{ JSON.parse(item['filter'])[item.value] }}
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
{{ `${item.value}` || ' ' }}
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
@@ -1493,6 +1488,7 @@ onMounted(() => {
|
|||||||
:label="item.display"
|
:label="item.display"
|
||||||
:name="item.name"
|
:name="item.name"
|
||||||
:required="item.optional === 'false'"
|
:required="item.optional === 'false'"
|
||||||
|
style="margin-bottom: 2px"
|
||||||
>
|
>
|
||||||
<a-tooltip placement="topLeft">
|
<a-tooltip placement="topLeft">
|
||||||
<template #title v-if="item.comment">
|
<template #title v-if="item.comment">
|
||||||
@@ -1509,31 +1505,13 @@ onMounted(() => {
|
|||||||
] !== undefined
|
] !== undefined
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<a-input
|
|
||||||
v-if="
|
|
||||||
[
|
|
||||||
'string',
|
|
||||||
'ipv6',
|
|
||||||
'ipv4',
|
|
||||||
'regex',
|
|
||||||
].includes(item['type'])
|
|
||||||
"
|
|
||||||
v-model:value="
|
|
||||||
arrayChildState.editRecord[item.name][
|
|
||||||
'value'
|
|
||||||
]
|
|
||||||
"
|
|
||||||
:disabled="item.name === 'index'"
|
|
||||||
></a-input>
|
|
||||||
<a-input-number
|
<a-input-number
|
||||||
v-else-if="item['type'] === 'int'"
|
v-if="item['type'] === 'int'"
|
||||||
v-model:value="
|
v-model:value="
|
||||||
arrayChildState.editRecord[item.name][
|
arrayChildState.editRecord[item.name][
|
||||||
'value'
|
'value'
|
||||||
]
|
]
|
||||||
"
|
"
|
||||||
:min="0"
|
|
||||||
:max="65535"
|
|
||||||
:disabled="item.name === 'index'"
|
:disabled="item.name === 'index'"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
></a-input-number>
|
></a-input-number>
|
||||||
@@ -1571,6 +1549,15 @@ onMounted(() => {
|
|||||||
{{ k }}
|
{{ k }}
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
|
<a-input
|
||||||
|
v-else
|
||||||
|
v-model:value="
|
||||||
|
arrayChildState.editRecord[item.name][
|
||||||
|
'value'
|
||||||
|
]
|
||||||
|
"
|
||||||
|
:disabled="item.name === 'index'"
|
||||||
|
></a-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a-button
|
<a-button
|
||||||
@@ -1588,7 +1575,14 @@ onMounted(() => {
|
|||||||
</a-button>
|
</a-button>
|
||||||
|
|
||||||
<div v-else>
|
<div v-else>
|
||||||
{{ `${item.value || ' '}` }}
|
<template v-if="item['type'] === 'enum'">
|
||||||
|
{{
|
||||||
|
JSON.parse(item['filter'])[item.value]
|
||||||
|
}}
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
{{ `${item.value}` || ' ' }}
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
@@ -1610,7 +1604,7 @@ onMounted(() => {
|
|||||||
<!-- 新增框或修改框 -->
|
<!-- 新增框或修改框 -->
|
||||||
<a-modal
|
<a-modal
|
||||||
width="800px"
|
width="800px"
|
||||||
:body-style="{ maxHeight: '650px', 'overflow-y': 'scroll' }"
|
:body-style="{ maxHeight: '650px', 'overflow-y': 'auto' }"
|
||||||
:keyboard="false"
|
:keyboard="false"
|
||||||
:mask-closable="false"
|
:mask-closable="false"
|
||||||
:visible="modalState.visibleByAdd"
|
:visible="modalState.visibleByAdd"
|
||||||
@@ -1625,12 +1619,15 @@ onMounted(() => {
|
|||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
:validate-on-rule-change="false"
|
:validate-on-rule-change="false"
|
||||||
:validateTrigger="[]"
|
:validateTrigger="[]"
|
||||||
|
:label-col="{ span: 6 }"
|
||||||
|
:labelWrap="true"
|
||||||
>
|
>
|
||||||
<a-form-item
|
<a-form-item
|
||||||
v-for="item in modalState.data"
|
v-for="item in modalState.data"
|
||||||
:label="item.display"
|
:label="item.display"
|
||||||
:name="item.name"
|
:name="item.name"
|
||||||
:required="item.optional === 'false'"
|
:required="item.optional === 'false'"
|
||||||
|
style="margin-bottom: 2px"
|
||||||
>
|
>
|
||||||
<a-tooltip placement="topLeft">
|
<a-tooltip placement="topLeft">
|
||||||
<template #title v-if="item.comment">
|
<template #title v-if="item.comment">
|
||||||
@@ -1643,18 +1640,9 @@ onMounted(() => {
|
|||||||
modalState.from[item.name] !== undefined
|
modalState.from[item.name] !== undefined
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<a-input
|
|
||||||
v-if="
|
|
||||||
['string', 'ipv6', 'ipv4', 'regex'].includes(item['type'])
|
|
||||||
"
|
|
||||||
v-model:value="modalState.from[item.name]['value']"
|
|
||||||
:disabled="item.name === 'index'"
|
|
||||||
></a-input>
|
|
||||||
<a-input-number
|
<a-input-number
|
||||||
v-else-if="item['type'] === 'int'"
|
v-if="item['type'] === 'int'"
|
||||||
v-model:value="modalState.from[item.name]['value']"
|
v-model:value="modalState.from[item.name]['value']"
|
||||||
:min="0"
|
|
||||||
:max="65535"
|
|
||||||
:disabled="item.name === 'index'"
|
:disabled="item.name === 'index'"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
></a-input-number>
|
></a-input-number>
|
||||||
@@ -1678,6 +1666,11 @@ onMounted(() => {
|
|||||||
{{ k }}
|
{{ k }}
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
|
<a-input
|
||||||
|
v-else
|
||||||
|
v-model:value="modalState.from[item.name]['value']"
|
||||||
|
:disabled="item.name === 'index'"
|
||||||
|
></a-input>
|
||||||
</div>
|
</div>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
{{ `${item.value || ' '}` }}
|
{{ `${item.value || ' '}` }}
|
||||||
|
|||||||
1755
src/views/configManage/configParamTree/index.vue
Normal file
1547
src/views/configManage/configParamTreeTable/index.vue
Normal file
@@ -1,6 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, onMounted, toRaw } from 'vue';
|
import { reactive, onMounted, toRaw } from 'vue';
|
||||||
import { PageContainer } from '@ant-design-vue/pro-layout';
|
import { PageContainer } from 'antdv-pro-layout';
|
||||||
import { Form, message } from 'ant-design-vue/lib';
|
import { Form, message } from 'ant-design-vue/lib';
|
||||||
import { SizeType } from 'ant-design-vue/lib/config-provider';
|
import { SizeType } from 'ant-design-vue/lib/config-provider';
|
||||||
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
|
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, onMounted, toRaw } from 'vue';
|
import { reactive, onMounted, toRaw } from 'vue';
|
||||||
import { PageContainer } from '@ant-design-vue/pro-layout';
|
import { PageContainer } from 'antdv-pro-layout';
|
||||||
import { message, Modal, Form } from 'ant-design-vue/lib';
|
import { message, Modal, Form } from 'ant-design-vue/lib';
|
||||||
import { SizeType } from 'ant-design-vue/lib/config-provider';
|
import { SizeType } from 'ant-design-vue/lib/config-provider';
|
||||||
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
|
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
|
||||||
@@ -449,10 +449,6 @@ function fnModalCancel() {
|
|||||||
* @param row 网元编号ID
|
* @param row 网元编号ID
|
||||||
*/
|
*/
|
||||||
function fnRecordDelete(row: Record<string, any>) {
|
function fnRecordDelete(row: Record<string, any>) {
|
||||||
message.success({
|
|
||||||
content: t('common.msgSuccess', { msg: t('common.deleteText') }),
|
|
||||||
duration: 2,
|
|
||||||
});
|
|
||||||
Modal.confirm({
|
Modal.confirm({
|
||||||
title: t('common.tipTitle'),
|
title: t('common.tipTitle'),
|
||||||
content: t('views.configManage.neManage.delSure', { msg: row.neName }),
|
content: t('views.configManage.neManage.delSure', { msg: row.neName }),
|
||||||
@@ -904,7 +900,10 @@ onMounted(() => {
|
|||||||
<pause-outlined />
|
<pause-outlined />
|
||||||
{{ t('views.configManage.neManage.stop') }}
|
{{ t('views.configManage.neManage.stop') }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="reload" v-if="!['OMC','PCF','IMS'].includes(record.neType)">
|
<a-menu-item
|
||||||
|
key="reload"
|
||||||
|
v-if="!['OMC', 'PCF', 'IMS', 'MME'].includes(record.neType)"
|
||||||
|
>
|
||||||
<SyncOutlined />
|
<SyncOutlined />
|
||||||
{{ t('views.configManage.neManage.reload') }}
|
{{ t('views.configManage.neManage.reload') }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
@@ -1030,7 +1029,9 @@ onMounted(() => {
|
|||||||
<a-input v-model:value="modalState.from.port" allow-clear>
|
<a-input v-model:value="modalState.from.port" allow-clear>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<a-tooltip placement="topLeft">
|
<a-tooltip placement="topLeft">
|
||||||
<template #title> <div>最大范围0~65535</div> </template>
|
<template #title>
|
||||||
|
<div>{{ t('views.configManage.neManage.portTip') }}</div>
|
||||||
|
</template>
|
||||||
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
|
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, onMounted, toRaw } from 'vue';
|
import { reactive, onMounted, toRaw } from 'vue';
|
||||||
import { PageContainer } from '@ant-design-vue/pro-layout';
|
import { PageContainer } from 'antdv-pro-layout';
|
||||||
import { Form, message, Modal } from 'ant-design-vue/lib';
|
import { Form, message, Modal } from 'ant-design-vue/lib';
|
||||||
import { SizeType } from 'ant-design-vue/lib/config-provider';
|
import { SizeType } from 'ant-design-vue/lib/config-provider';
|
||||||
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
|
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
|
||||||
@@ -448,7 +448,7 @@ const modalStateFrom = Form.useForm(
|
|||||||
],
|
],
|
||||||
comment: [
|
comment: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: false,
|
||||||
message: t('views.configManage.softwareManage.updateCommentPlease'),
|
message: t('views.configManage.softwareManage.updateCommentPlease'),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@@ -529,10 +529,19 @@ function fnBeforeUploadFile(file: FileType) {
|
|||||||
const fileName = file.name;
|
const fileName = file.name;
|
||||||
const suff = fileName.substring(fileName.lastIndexOf('.'));
|
const suff = fileName.substring(fileName.lastIndexOf('.'));
|
||||||
if (!['.deb', '.rpm'].includes(suff)) {
|
if (!['.deb', '.rpm'].includes(suff)) {
|
||||||
message.error(t('views.configManage.softwareManage.onlyAble',{fileText:'(.deb、.rpm)'}), 3);
|
message.error(
|
||||||
|
t('views.configManage.softwareManage.onlyAble', {
|
||||||
|
fileText: '(.deb、.rpm)',
|
||||||
|
}),
|
||||||
|
3
|
||||||
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
// 根据给定的软件名取版本号 ims-r2.2312.8_u18.deb
|
||||||
|
const nameArr = fileName.split('.')
|
||||||
|
if(nameArr.length > 3) {
|
||||||
|
modalState.from.version = nameArr[1]
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -552,7 +561,10 @@ function fnBeforeUploadCms(file: FileType) {
|
|||||||
const fileName = file.name;
|
const fileName = file.name;
|
||||||
const suff = fileName.substring(fileName.lastIndexOf('.'));
|
const suff = fileName.substring(fileName.lastIndexOf('.'));
|
||||||
if (!['.cms'].includes(suff)) {
|
if (!['.cms'].includes(suff)) {
|
||||||
message.error(t('views.configManage.softwareManage.onlyAble',{fileText:'(.cms)'}), 3);
|
message.error(
|
||||||
|
t('views.configManage.softwareManage.onlyAble', { fileText: '(.cms)' }),
|
||||||
|
3
|
||||||
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,8 +1,27 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useRouter } from 'vue-router';
|
import { onMounted } from 'vue';
|
||||||
|
import { useRouter, useRoute } from 'vue-router';
|
||||||
import useI18n from '@/hooks/useI18n';
|
import useI18n from '@/hooks/useI18n';
|
||||||
|
import useAppStore from '@/store/modules/app';
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
const route = useRoute();
|
||||||
|
const appStore = useAppStore();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际化翻译转换
|
||||||
|
*/
|
||||||
|
function fnLocale() {
|
||||||
|
let title = route.meta.title as string;
|
||||||
|
if (title.indexOf('router.') !== -1) {
|
||||||
|
title = t(title);
|
||||||
|
}
|
||||||
|
appStore.setTitle(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
fnLocale();
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|||||||
@@ -1,6 +1,26 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { onMounted } from 'vue';
|
||||||
|
import { useRouter, useRoute } from 'vue-router';
|
||||||
import useI18n from '@/hooks/useI18n';
|
import useI18n from '@/hooks/useI18n';
|
||||||
|
import useAppStore from '@/store/modules/app';
|
||||||
|
const route = useRoute();
|
||||||
|
const appStore = useAppStore();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际化翻译转换
|
||||||
|
*/
|
||||||
|
function fnLocale() {
|
||||||
|
let title = route.meta.title as string;
|
||||||
|
if (title.indexOf('router.') !== -1) {
|
||||||
|
title = t(title);
|
||||||
|
}
|
||||||
|
appStore.setTitle(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
fnLocale();
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, ref, onMounted, toRaw } from 'vue';
|
import { reactive, ref, onMounted, toRaw } from 'vue';
|
||||||
import { PageContainer } from '@ant-design-vue/pro-layout';
|
import { PageContainer } from 'antdv-pro-layout';
|
||||||
import { message, Modal } from 'ant-design-vue/lib';
|
import { message, Modal } from 'ant-design-vue/lib';
|
||||||
import { SizeType } from 'ant-design-vue/lib/config-provider';
|
import { SizeType } from 'ant-design-vue/lib/config-provider';
|
||||||
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
|
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
|
||||||
import { ColumnsType } from 'ant-design-vue/lib/table';
|
import { ColumnsType } from 'ant-design-vue/lib/table';
|
||||||
import useUserStore from '@/store/modules/user';
|
|
||||||
import {
|
import {
|
||||||
listAct,
|
listAct,
|
||||||
updateConfirm,
|
updateConfirm,
|
||||||
@@ -17,11 +16,30 @@ import {
|
|||||||
exportAll,
|
exportAll,
|
||||||
} from '@/api/faultManage/actAlarm';
|
} from '@/api/faultManage/actAlarm';
|
||||||
import useI18n from '@/hooks/useI18n';
|
import useI18n from '@/hooks/useI18n';
|
||||||
|
import useDictStore from '@/store/modules/dict';
|
||||||
import saveAs from 'file-saver';
|
import saveAs from 'file-saver';
|
||||||
import { writeSheet } from '@/utils/execl-utils';
|
import { writeSheet } from '@/utils/execl-utils';
|
||||||
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
||||||
import { readLoalXlsx } from '@/utils/execl-utils';
|
import { readLoalXlsx } from '@/utils/execl-utils';
|
||||||
const { t } = useI18n();
|
const { getDict } = useDictStore();
|
||||||
|
const { t,currentLocale } = useI18n();
|
||||||
|
|
||||||
|
/**字典数据 */
|
||||||
|
let dict: {
|
||||||
|
/**活动告警类型 */
|
||||||
|
activeAlarmType: DictType[];
|
||||||
|
/**告警清除类型 */
|
||||||
|
activeClearType: DictType[];
|
||||||
|
/**告警清除类型 */
|
||||||
|
activeAckState: DictType[];
|
||||||
|
/**原始严重程度 */
|
||||||
|
activeAlarmSeverity: DictType[];
|
||||||
|
} = reactive({
|
||||||
|
activeAlarmType: [],
|
||||||
|
activeClearType: [],
|
||||||
|
activeAckState: [],
|
||||||
|
activeAlarmSeverity: [],
|
||||||
|
});
|
||||||
|
|
||||||
/**记录开始结束时间 */
|
/**记录开始结束时间 */
|
||||||
let queryRangePicker = ref<[string, string]>(['', '']);
|
let queryRangePicker = ref<[string, string]>(['', '']);
|
||||||
@@ -37,15 +55,15 @@ let queryParams = reactive({
|
|||||||
/**告警编号 */
|
/**告警编号 */
|
||||||
alarmCode: '',
|
alarmCode: '',
|
||||||
/**告警级别 */
|
/**告警级别 */
|
||||||
origSeverity: '',
|
origSeverity: undefined,
|
||||||
beginTime: '',
|
beginTime: '',
|
||||||
endTime: '',
|
endTime: '',
|
||||||
/**告警产生时间 */
|
/**告警产生时间 */
|
||||||
eventTime: (queryRangePicker.value = ['', '']),
|
eventTime: '',
|
||||||
/**虚拟化标识 */
|
/**虚拟化标识 */
|
||||||
pvFlag: '',
|
pvFlag: undefined,
|
||||||
/**告警类型 */
|
/**告警类型 */
|
||||||
alarmType: '',
|
alarmType: undefined,
|
||||||
/**当前页数 */
|
/**当前页数 */
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
/**每页条数 */
|
/**每页条数 */
|
||||||
@@ -64,13 +82,13 @@ function fnQueryReset() {
|
|||||||
/**告警编号 */
|
/**告警编号 */
|
||||||
alarmCode: '',
|
alarmCode: '',
|
||||||
/**告警级别 */
|
/**告警级别 */
|
||||||
origSeverity: '',
|
origSeverity: undefined,
|
||||||
/**告警产生时间 */
|
/**告警产生时间 */
|
||||||
eventTime: (queryRangePicker.value = ['', '']),
|
eventTime: '',
|
||||||
/**虚拟化标识 */
|
/**虚拟化标识 */
|
||||||
pvFlag: '',
|
pvFlag: undefined,
|
||||||
/**告警类型 */
|
/**告警类型 */
|
||||||
alarmType: '',
|
alarmType: undefined,
|
||||||
/**当前页数 */
|
/**当前页数 */
|
||||||
});
|
});
|
||||||
tablePagination.current = 1;
|
tablePagination.current = 1;
|
||||||
@@ -122,19 +140,19 @@ let tableColumns: ColumnsType = [
|
|||||||
title: t('views.faultManage.activeAlarm.alarmId'),
|
title: t('views.faultManage.activeAlarm.alarmId'),
|
||||||
dataIndex: 'alarmId',
|
dataIndex: 'alarmId',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 8,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.neId'),
|
title: t('views.faultManage.activeAlarm.neId'),
|
||||||
dataIndex: 'neId',
|
dataIndex: 'neId',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 8,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.neName'),
|
title: t('views.faultManage.activeAlarm.neName'),
|
||||||
dataIndex: 'neName',
|
dataIndex: 'neName',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 8,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.neType'),
|
title: t('views.faultManage.activeAlarm.neType'),
|
||||||
@@ -157,7 +175,7 @@ let tableColumns: ColumnsType = [
|
|||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.alarmTitle'),
|
title: t('views.faultManage.activeAlarm.alarmTitle'),
|
||||||
dataIndex: 'alarmTitle',
|
dataIndex: 'alarmTitle',
|
||||||
align: 'center',
|
align: 'left',
|
||||||
width: 5,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -165,25 +183,13 @@ let tableColumns: ColumnsType = [
|
|||||||
dataIndex: 'eventTime',
|
dataIndex: 'eventTime',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
sorter: (a: any, b: any) => 1,
|
sorter: (a: any, b: any) => 1,
|
||||||
width: 8,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.alarmType'),
|
title: t('views.faultManage.activeAlarm.alarmType'),
|
||||||
dataIndex: 'alarmType',
|
dataIndex: 'alarmType',
|
||||||
align: 'center',
|
key: 'alarmType',
|
||||||
customRender(opt) {
|
align: 'left',
|
||||||
let levelName: any = {
|
|
||||||
CommunicationAlarm: '通信告警',
|
|
||||||
EquipmentAlarm: '设备告警',
|
|
||||||
ProcessingFailure: '处理错误告警',
|
|
||||||
EnvironmentalAlarm: '环境告警',
|
|
||||||
QualityOfServiceAlarm: '服务质量告警',
|
|
||||||
};
|
|
||||||
if (levelName[opt.value]) {
|
|
||||||
return levelName[opt.value];
|
|
||||||
}
|
|
||||||
return opt.value;
|
|
||||||
},
|
|
||||||
width: 5,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -195,46 +201,27 @@ let tableColumns: ColumnsType = [
|
|||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.clearUser'),
|
title: t('views.faultManage.activeAlarm.clearUser'),
|
||||||
dataIndex: 'clearUser',
|
dataIndex: 'clearUser',
|
||||||
align: 'center',
|
align: 'left',
|
||||||
width: 10,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.clearType'),
|
title: t('views.faultManage.activeAlarm.clearType'),
|
||||||
dataIndex: 'clearType',
|
dataIndex: 'clearType',
|
||||||
align: 'center',
|
key: 'clearType',
|
||||||
customRender(opt) {
|
align: 'left',
|
||||||
let clearType: any = {
|
|
||||||
0: '未清除',
|
|
||||||
1: '自动清除',
|
|
||||||
2: '手动清除',
|
|
||||||
};
|
|
||||||
if (clearType[opt.value]) {
|
|
||||||
return clearType[opt.value];
|
|
||||||
}
|
|
||||||
return opt.value;
|
|
||||||
},
|
|
||||||
width: 5,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.ackState'),
|
title: t('views.faultManage.activeAlarm.ackState'),
|
||||||
dataIndex: 'ackState',
|
dataIndex: 'ackState',
|
||||||
align: 'center',
|
key: 'ackState',
|
||||||
customRender(opt) {
|
align: 'left',
|
||||||
let ackState: any = {
|
|
||||||
0: '未确认',
|
|
||||||
1: '已确认',
|
|
||||||
};
|
|
||||||
if (ackState[opt.value]) {
|
|
||||||
return ackState[opt.value];
|
|
||||||
}
|
|
||||||
return opt.value;
|
|
||||||
},
|
|
||||||
width: 5,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.ackUser'),
|
title: t('views.faultManage.activeAlarm.ackUser'),
|
||||||
dataIndex: 'ackUser',
|
dataIndex: 'ackUser',
|
||||||
align: 'center',
|
align: 'left',
|
||||||
width: 5,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -246,68 +233,68 @@ let tableColumns: ColumnsType = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
// //监听点击的是升序还是降序,还是取消排序
|
|
||||||
// const change= (pagination, filters, sorter) => {console.log(sorter)}
|
|
||||||
|
|
||||||
/**帮助文档表格字段列 */
|
/**帮助文档表格字段列 */
|
||||||
let alarmTableColumns: ColumnsType = [
|
let alarmTableColumns: ColumnsType = [
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.alarmTitle'),
|
title: t('views.faultManage.activeAlarm.alarmTitle'),
|
||||||
dataIndex: '告警名称',
|
dataIndex: 'alarmName',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 3,
|
width: 3,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.locationInfo'),
|
title: t('views.faultManage.activeAlarm.locationInfo'),
|
||||||
dataIndex: '告警定位信息',
|
dataIndex: 'alarmInfo',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 5,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.addInfo'),
|
title: t('views.faultManage.activeAlarm.addInfo'),
|
||||||
dataIndex: '告警帮助信息',
|
dataIndex:'helpInfo',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 8,
|
width: 8,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.alarmType'),
|
title: t('views.faultManage.activeAlarm.alarmType'),
|
||||||
dataIndex: '告警类型',
|
dataIndex: 'alarmType',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 5,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.origLevel'),
|
title: t('views.faultManage.activeAlarm.origLevel'),
|
||||||
dataIndex: '告警级别',
|
dataIndex: 'alarmLevel',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 3,
|
width: 3,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.alarmCode'),
|
title: t('views.faultManage.activeAlarm.alarmCode'),
|
||||||
dataIndex: '告警编号',
|
dataIndex: 'alarmCode',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 3,
|
width: 3,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.specificProblem'),
|
title: t('views.faultManage.activeAlarm.specificProblem'),
|
||||||
dataIndex: '告警问题原因',
|
dataIndex: 'cause',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 5,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.clearType'),
|
title: t('views.faultManage.activeAlarm.clearType'),
|
||||||
dataIndex: '清除类型',
|
dataIndex: 'clearType',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 3,
|
width: 3,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.realTitle'),
|
title: t('views.faultManage.activeAlarm.realTitle'),
|
||||||
dataIndex: '英文标题',
|
dataIndex: 'enTitle',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 5,
|
width: 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('views.faultManage.activeAlarm.objectNf'),
|
title: t('views.faultManage.activeAlarm.objectNf'),
|
||||||
dataIndex: '适用网元',
|
dataIndex:'objNf',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 2,
|
width: 2,
|
||||||
},
|
},
|
||||||
@@ -346,52 +333,6 @@ function fnTableSize({ key }: MenuInfo) {
|
|||||||
tableState.size = key as SizeType;
|
tableState.size = key as SizeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**表格所需option */
|
|
||||||
const actAlarmOption = reactive({
|
|
||||||
pvFlag: [
|
|
||||||
{ label: 'PNF', value: 'PNF' },
|
|
||||||
{ label: 'VNF', value: 'VNF' },
|
|
||||||
],
|
|
||||||
alarmType: [
|
|
||||||
{
|
|
||||||
label: t('views.faultManage.activeAlarm.communicationAlarm'),
|
|
||||||
value: 'CommunicationAlarm',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: t('views.faultManage.activeAlarm.equipmentAlarm'),
|
|
||||||
value: 'EquipmentAlarm',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: t('views.faultManage.activeAlarm.processingFailure'),
|
|
||||||
value: 'ProcessingFailure',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: t('views.faultManage.activeAlarm.environmentalAlarm'),
|
|
||||||
value: 'EnvironmentalAlarm',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: t('views.faultManage.activeAlarm.qualityOfServiceAlarm'),
|
|
||||||
value: 'QualityOfServiceAlarm',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
origSeverity: [
|
|
||||||
{ label: t('views.faultManage.activeAlarm.critical'), value: 'Critical' },
|
|
||||||
{ label: t('views.faultManage.activeAlarm.major'), value: 'Major' },
|
|
||||||
{ label: t('views.faultManage.activeAlarm.minor'), value: 'Minor' },
|
|
||||||
{ label: t('views.faultManage.activeAlarm.warning'), value: 'Warning' },
|
|
||||||
{ label: t('views.faultManage.activeAlarm.eventAlarm'), value: 'Event' },
|
|
||||||
],
|
|
||||||
clearType: [
|
|
||||||
{ label: '告警未清除', value: 0 },
|
|
||||||
{ label: '自动清除', value: 1 },
|
|
||||||
{ label: '手动清除', value: 2 },
|
|
||||||
],
|
|
||||||
ackState: [
|
|
||||||
{ label: '未确认', value: 0 },
|
|
||||||
{ label: '已确认', value: 1 },
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
/**对话框对象信息状态类型 */
|
/**对话框对象信息状态类型 */
|
||||||
type ModalStateType = {
|
type ModalStateType = {
|
||||||
/**详情框是否显示 */
|
/**详情框是否显示 */
|
||||||
@@ -400,6 +341,8 @@ type ModalStateType = {
|
|||||||
visibleByEdit: boolean;
|
visibleByEdit: boolean;
|
||||||
/**显示过滤设置是否显示 */
|
/**显示过滤设置是否显示 */
|
||||||
visibleByShowSet: boolean;
|
visibleByShowSet: boolean;
|
||||||
|
/**告警帮助文档是否显示 */
|
||||||
|
helpShowView: boolean;
|
||||||
/**个性化设置置是否显示 */
|
/**个性化设置置是否显示 */
|
||||||
visibleByMyselfSet: boolean;
|
visibleByMyselfSet: boolean;
|
||||||
/**标题 */
|
/**标题 */
|
||||||
@@ -408,8 +351,6 @@ type ModalStateType = {
|
|||||||
from: Record<string, any>;
|
from: Record<string, any>;
|
||||||
/**表单数据 */
|
/**表单数据 */
|
||||||
showSetFrom: Record<string, any>;
|
showSetFrom: Record<string, any>;
|
||||||
// /**表单数据 */
|
|
||||||
// myselfSetFrom: Record<string, any>;
|
|
||||||
/**确定按钮 loading */
|
/**确定按钮 loading */
|
||||||
confirmLoading: boolean;
|
confirmLoading: boolean;
|
||||||
};
|
};
|
||||||
@@ -419,6 +360,7 @@ let modalState: ModalStateType = reactive({
|
|||||||
visibleByView: false,
|
visibleByView: false,
|
||||||
visibleByEdit: false,
|
visibleByEdit: false,
|
||||||
visibleByShowSet: false,
|
visibleByShowSet: false,
|
||||||
|
helpShowView: false,
|
||||||
visibleByMyselfSet: false,
|
visibleByMyselfSet: false,
|
||||||
title: '全部信息',
|
title: '全部信息',
|
||||||
from: {
|
from: {
|
||||||
@@ -466,26 +408,25 @@ let modalState: ModalStateType = reactive({
|
|||||||
*/
|
*/
|
||||||
function fnModalVisibleByVive(row: Record<string, any>) {
|
function fnModalVisibleByVive(row: Record<string, any>) {
|
||||||
modalState.from = Object.assign(modalState.from, row);
|
modalState.from = Object.assign(modalState.from, row);
|
||||||
modalState.title = t('views.faultManage.activeAlarm.viewIdInfo',{alarmId:row.alarmId});
|
modalState.from.clearType = `${modalState.from.clearType}`;
|
||||||
|
modalState.from.ackState = `${modalState.from.ackState}`;
|
||||||
|
modalState.title = t('views.faultManage.activeAlarm.viewIdInfo', {
|
||||||
|
alarmId: row.alarmId,
|
||||||
|
});
|
||||||
modalState.visibleByView = true;
|
modalState.visibleByView = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**告警帮助文档抽屉 初始设置 */
|
|
||||||
const visible = ref(false);
|
|
||||||
const closeDrawer = () => {
|
|
||||||
visible.value = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**抽屉 告警帮助文档详细信息 */
|
|
||||||
|
/** 告警帮助文档详细信息 */
|
||||||
function fnModalVisibleBy(code: string) {
|
function fnModalVisibleBy(code: string) {
|
||||||
readLoalXlsx(code)
|
modalState.helpShowView = false;
|
||||||
|
const lang=currentLocale.value.split('_')[0];
|
||||||
|
modalState.title=t('views.faultManage.activeAlarm.helpFile');
|
||||||
|
readLoalXlsx(lang,code)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
if (!res.length) {
|
|
||||||
visible.value = false;
|
|
||||||
}
|
|
||||||
alarmTableState.data = res;
|
alarmTableState.data = res;
|
||||||
visible.value = true;
|
modalState.helpShowView = true;
|
||||||
|
|
||||||
tableState.loading = false;
|
tableState.loading = false;
|
||||||
})
|
})
|
||||||
.catch(error => console.error(error));
|
.catch(error => console.error(error));
|
||||||
@@ -672,7 +613,7 @@ function fnShowSet() {
|
|||||||
? JSON.parse(res.data.data[0]['config'][0].value_json)
|
? JSON.parse(res.data.data[0]['config'][0].value_json)
|
||||||
: {};
|
: {};
|
||||||
modalState.showSetFrom = Object.assign(modalState.showSetFrom, realJson);
|
modalState.showSetFrom = Object.assign(modalState.showSetFrom, realJson);
|
||||||
modalState.title = t('views.faultManage.activeAlarm.showSet');
|
modalState.title = t('views.faultManage.activeAlarm.showSet');
|
||||||
modalState.visibleByShowSet = true;
|
modalState.visibleByShowSet = true;
|
||||||
} else {
|
} else {
|
||||||
message.error(t('common.getInfoFail'), 2);
|
message.error(t('common.getInfoFail'), 2);
|
||||||
@@ -693,7 +634,7 @@ function fnExportAll() {
|
|||||||
exportAll(queryParams).then(res => {
|
exportAll(queryParams).then(res => {
|
||||||
if (res.code === RESULT_CODE_SUCCESS) {
|
if (res.code === RESULT_CODE_SUCCESS) {
|
||||||
message.success({
|
message.success({
|
||||||
content: t('common.msgSuccess', { msg: t('common.export') }),
|
content: t('common.msgSuccess', { msg: t('common.export') }),
|
||||||
key,
|
key,
|
||||||
duration: 3,
|
duration: 3,
|
||||||
});
|
});
|
||||||
@@ -711,6 +652,7 @@ function fnExportAll() {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对话框弹出关闭执行函数
|
* 对话框弹出关闭执行函数
|
||||||
* 进行表达规则校验
|
* 进行表达规则校验
|
||||||
@@ -719,13 +661,14 @@ function fnModalCancel() {
|
|||||||
modalState.visibleByEdit = false;
|
modalState.visibleByEdit = false;
|
||||||
modalState.visibleByView = false;
|
modalState.visibleByView = false;
|
||||||
modalState.visibleByShowSet = false;
|
modalState.visibleByShowSet = false;
|
||||||
|
modalState.helpShowView=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**查询列表, pageNum初始页数 */
|
/**查询列表, pageNum初始页数 */
|
||||||
function fnGetList(pageNum?: number) {
|
function fnGetList(pageNum?: number) {
|
||||||
if (tableState.loading) return;
|
if (tableState.loading) return;
|
||||||
tableState.loading = true;
|
tableState.loading = true;
|
||||||
if(pageNum){
|
if (pageNum) {
|
||||||
queryParams.pageNum = pageNum;
|
queryParams.pageNum = pageNum;
|
||||||
}
|
}
|
||||||
if (!queryRangePicker.value) {
|
if (!queryRangePicker.value) {
|
||||||
@@ -757,8 +700,27 @@ function fnGetList(pageNum?: number) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const profile = useUserStore().profile;
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
// 初始字典数据
|
||||||
|
Promise.allSettled([
|
||||||
|
getDict('active_alarm_type'),
|
||||||
|
getDict('active_clear_type'),
|
||||||
|
getDict('active_ack_state'),
|
||||||
|
getDict('active_alarm_severity'),
|
||||||
|
]).then(resArr => {
|
||||||
|
if (resArr[0].status === 'fulfilled') {
|
||||||
|
dict.activeAlarmType = resArr[0].value;
|
||||||
|
}
|
||||||
|
if (resArr[1].status === 'fulfilled') {
|
||||||
|
dict.activeClearType = resArr[1].value;
|
||||||
|
}
|
||||||
|
if (resArr[2].status === 'fulfilled') {
|
||||||
|
dict.activeAckState = resArr[2].value;
|
||||||
|
}
|
||||||
|
if (resArr[3].status === 'fulfilled') {
|
||||||
|
dict.activeAlarmSeverity = resArr[3].value;
|
||||||
|
}
|
||||||
|
});
|
||||||
fnGetList();
|
fnGetList();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@@ -774,21 +736,11 @@ onMounted(() => {
|
|||||||
<a-form :model="queryParams" name="queryParams" layout="horizontal">
|
<a-form :model="queryParams" name="queryParams" layout="horizontal">
|
||||||
<a-row :gutter="16">
|
<a-row :gutter="16">
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
<!-- <a-form-item :label="t('views.neUser.ue.neType')" name="neId ">
|
|
||||||
<a-select
|
|
||||||
v-model:value="queryParams.neId"
|
|
||||||
:options="neOtions"
|
|
||||||
:placeholder="t('views.neUser.ue.neTypePlease')"
|
|
||||||
/>
|
|
||||||
</a-form-item> -->
|
|
||||||
<a-form-item
|
<a-form-item
|
||||||
:label="t('views.faultManage.activeAlarm.neType')"
|
:label="t('views.faultManage.activeAlarm.neType')"
|
||||||
name="ne_type"
|
name="ne_type"
|
||||||
>
|
>
|
||||||
<a-input
|
<a-input v-model:value="queryParams.neType" allow-clear></a-input>
|
||||||
v-model:value="queryParams.neType"
|
|
||||||
allow-clear
|
|
||||||
></a-input>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
@@ -796,10 +748,7 @@ onMounted(() => {
|
|||||||
:label="t('views.faultManage.activeAlarm.neName')"
|
:label="t('views.faultManage.activeAlarm.neName')"
|
||||||
name="ne_name"
|
name="ne_name"
|
||||||
>
|
>
|
||||||
<a-input
|
<a-input v-model:value="queryParams.neName" allow-clear></a-input>
|
||||||
v-model:value="queryParams.neName"
|
|
||||||
allow-clear
|
|
||||||
></a-input>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
@@ -807,10 +756,7 @@ onMounted(() => {
|
|||||||
:label="t('views.faultManage.activeAlarm.neId')"
|
:label="t('views.faultManage.activeAlarm.neId')"
|
||||||
name="ne_id"
|
name="ne_id"
|
||||||
>
|
>
|
||||||
<a-input
|
<a-input v-model:value="queryParams.neId" allow-clear></a-input>
|
||||||
v-model:value="queryParams.neId"
|
|
||||||
allow-clear
|
|
||||||
></a-input>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|
||||||
@@ -848,10 +794,9 @@ onMounted(() => {
|
|||||||
>
|
>
|
||||||
<a-select
|
<a-select
|
||||||
v-model:value="queryParams.origSeverity"
|
v-model:value="queryParams.origSeverity"
|
||||||
placeholder="Select alarm Type"
|
:placeholder="t('common.selectPlease')"
|
||||||
show-search
|
|
||||||
allow-clear
|
allow-clear
|
||||||
:options="actAlarmOption.origSeverity"
|
:options="dict.activeAlarmSeverity"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -878,13 +823,12 @@ onMounted(() => {
|
|||||||
>
|
>
|
||||||
<a-select
|
<a-select
|
||||||
v-model:value="queryParams.pvFlag"
|
v-model:value="queryParams.pvFlag"
|
||||||
placeholder="Select a person"
|
:placeholder="t('common.selectPlease')"
|
||||||
show-search
|
:options="[
|
||||||
:options="actAlarmOption.pvFlag"
|
{ label: 'PNF', value: 'PNF' },
|
||||||
|
{ label: 'VNF', value: 'VNF' },
|
||||||
|
]"
|
||||||
/>
|
/>
|
||||||
<!-- <a-select-option value="'PNF'">PNF</a-select-option>
|
|
||||||
<a-select-option value="'VNF'">VNF</a-select-option>
|
|
||||||
</a-select> -->
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
@@ -894,9 +838,8 @@ onMounted(() => {
|
|||||||
>
|
>
|
||||||
<a-select
|
<a-select
|
||||||
v-model:value="queryParams.alarmType"
|
v-model:value="queryParams.alarmType"
|
||||||
placeholder="Select alarm Type"
|
:placeholder="t('common.selectPlease')"
|
||||||
show-search
|
:options="dict.activeAlarmType"
|
||||||
:options="actAlarmOption.alarmType"
|
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -979,15 +922,15 @@ onMounted(() => {
|
|||||||
:selected-keys="[tableState.size as string]"
|
:selected-keys="[tableState.size as string]"
|
||||||
@click="fnTableSize"
|
@click="fnTableSize"
|
||||||
>
|
>
|
||||||
<a-menu-item key="default">{{
|
<a-menu-item key="default">
|
||||||
t('common.size.default')
|
{{ t('common.size.default') }}
|
||||||
}}</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="middle">{{
|
<a-menu-item key="middle">
|
||||||
t('common.size.middle')
|
{{ t('common.size.middle') }}
|
||||||
}}</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="small">{{
|
<a-menu-item key="small">
|
||||||
t('common.size.small')
|
{{ t('common.size.small') }}
|
||||||
}}</a-menu-item>
|
</a-menu-item>
|
||||||
</a-menu>
|
</a-menu>
|
||||||
</template>
|
</template>
|
||||||
</a-dropdown>
|
</a-dropdown>
|
||||||
@@ -995,27 +938,6 @@ onMounted(() => {
|
|||||||
</a-space>
|
</a-space>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<div>
|
|
||||||
<a-drawer
|
|
||||||
:visible="visible"
|
|
||||||
@close="closeDrawer"
|
|
||||||
:height="700"
|
|
||||||
placement="bottom"
|
|
||||||
>
|
|
||||||
<a-table
|
|
||||||
class="table"
|
|
||||||
row-key="id"
|
|
||||||
:columns="alarmTableColumns"
|
|
||||||
:loading="alarmTableState.loading"
|
|
||||||
:data-source="alarmTableState.data"
|
|
||||||
:size="alarmTableState.size"
|
|
||||||
:pagination="false"
|
|
||||||
:scroll="{ x: 2000, y: 560 }"
|
|
||||||
>
|
|
||||||
</a-table>
|
|
||||||
</a-drawer>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 表格列表 -->
|
<!-- 表格列表 -->
|
||||||
<a-table
|
<a-table
|
||||||
class="table"
|
class="table"
|
||||||
@@ -1030,13 +952,29 @@ onMounted(() => {
|
|||||||
onChange: onSelectChange,
|
onChange: onSelectChange,
|
||||||
}"
|
}"
|
||||||
:pagination="tablePagination"
|
:pagination="tablePagination"
|
||||||
:scroll="{ x: 2000, y: 400 }"
|
:scroll="{ x: 2500, y: 400 }"
|
||||||
>
|
>
|
||||||
<template #bodyCell="{ column, record }">
|
<template #bodyCell="{ column, record }">
|
||||||
<template v-if="column.key === 'origSeverity'">
|
<template v-if="column.key === 'origSeverity'">
|
||||||
<a-tag :color="profile.color[record.origSeverity.toLowerCase()]">{{
|
<DictTag
|
||||||
record.origSeverity
|
:options="dict.activeAlarmSeverity"
|
||||||
}}</a-tag>
|
:value="record.origSeverity"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template v-if="column.key === 'alarmType'">
|
||||||
|
<DictTag
|
||||||
|
:options="dict.activeAlarmType"
|
||||||
|
:value="record.alarmType"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template v-if="column.key === 'clearType'">
|
||||||
|
<DictTag
|
||||||
|
:options="dict.activeClearType"
|
||||||
|
:value="record.clearType"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template v-if="column.key === 'ackState'">
|
||||||
|
<DictTag :options="dict.activeAckState" :value="record.ackState" />
|
||||||
</template>
|
</template>
|
||||||
<template v-if="column.key === 'alarm_id'">
|
<template v-if="column.key === 'alarm_id'">
|
||||||
<a-space :size="8" align="center">
|
<a-space :size="8" align="center">
|
||||||
@@ -1050,7 +988,9 @@ onMounted(() => {
|
|||||||
</a-button>
|
</a-button>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
<template #title>{{ t('views.faultManage.activeAlarm.helpFile') }}</template>
|
<template #title>
|
||||||
|
{{ t('views.faultManage.activeAlarm.helpFile') }}
|
||||||
|
</template>
|
||||||
<a-button
|
<a-button
|
||||||
type="link"
|
type="link"
|
||||||
@click.prevent="fnModalVisibleBy(record.alarmCode)"
|
@click.prevent="fnModalVisibleBy(record.alarmCode)"
|
||||||
@@ -1066,6 +1006,32 @@ onMounted(() => {
|
|||||||
</a-table>
|
</a-table>
|
||||||
</a-card>
|
</a-card>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 帮助文档 -->
|
||||||
|
<a-modal
|
||||||
|
width="100%"
|
||||||
|
wrap-class-name="full-modal"
|
||||||
|
:keyboard="false"
|
||||||
|
:mask-closable="false"
|
||||||
|
:visible="modalState.helpShowView"
|
||||||
|
:title="modalState.title"
|
||||||
|
:confirm-loading="modalState.confirmLoading"
|
||||||
|
:footer="null"
|
||||||
|
@cancel="fnModalCancel"
|
||||||
|
>
|
||||||
|
<a-table
|
||||||
|
class="table"
|
||||||
|
row-key="id"
|
||||||
|
:columns="alarmTableColumns"
|
||||||
|
:loading="alarmTableState.loading"
|
||||||
|
:data-source="alarmTableState.data"
|
||||||
|
:size="alarmTableState.size"
|
||||||
|
:pagination="false"
|
||||||
|
:scroll="{ x: 1700, y: 560 }"
|
||||||
|
>
|
||||||
|
</a-table>
|
||||||
|
</a-modal>
|
||||||
|
|
||||||
<!-- 详情框 -->
|
<!-- 详情框 -->
|
||||||
<a-modal
|
<a-modal
|
||||||
width="800px"
|
width="800px"
|
||||||
@@ -1218,7 +1184,7 @@ onMounted(() => {
|
|||||||
<a-select
|
<a-select
|
||||||
v-model:value="modalState.from.alarmType"
|
v-model:value="modalState.from.alarmType"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:options="actAlarmOption.alarmType"
|
:options="dict.activeAlarmType"
|
||||||
disabled
|
disabled
|
||||||
>
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
@@ -1288,7 +1254,7 @@ onMounted(() => {
|
|||||||
<a-select
|
<a-select
|
||||||
v-model:value="modalState.from.origSeverity"
|
v-model:value="modalState.from.origSeverity"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:options="actAlarmOption.origSeverity"
|
:options="dict.activeAlarmSeverity"
|
||||||
disabled
|
disabled
|
||||||
>
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
@@ -1337,7 +1303,7 @@ onMounted(() => {
|
|||||||
<a-select
|
<a-select
|
||||||
v-model:value="modalState.from.clearType"
|
v-model:value="modalState.from.clearType"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:options="actAlarmOption.clearType"
|
:options="dict.activeClearType"
|
||||||
disabled
|
disabled
|
||||||
>
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
@@ -1380,7 +1346,7 @@ onMounted(() => {
|
|||||||
<a-select
|
<a-select
|
||||||
v-model:value="modalState.from.ackState"
|
v-model:value="modalState.from.ackState"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:options="actAlarmOption.ackState"
|
:options="dict.activeAckState"
|
||||||
disabled
|
disabled
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@@ -1452,7 +1418,10 @@ onMounted(() => {
|
|||||||
v-model:value="modalState.showSetFrom.pv_flag"
|
v-model:value="modalState.showSetFrom.pv_flag"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
allow-clear
|
allow-clear
|
||||||
:options="actAlarmOption.pvFlag"
|
:options="[
|
||||||
|
{ label: 'PNF', value: 'PNF' },
|
||||||
|
{ label: 'VNF', value: 'VNF' },
|
||||||
|
]"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -1465,7 +1434,7 @@ onMounted(() => {
|
|||||||
v-model:value="modalState.showSetFrom.alarm_type"
|
v-model:value="modalState.showSetFrom.alarm_type"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
allow-clear
|
allow-clear
|
||||||
:options="actAlarmOption.alarmType"
|
:options="dict.activeAlarmType"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -1480,7 +1449,7 @@ onMounted(() => {
|
|||||||
v-model:value="modalState.showSetFrom.orig_severity"
|
v-model:value="modalState.showSetFrom.orig_severity"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
allow-clear
|
allow-clear
|
||||||
:options="actAlarmOption.origSeverity"
|
:options="dict.activeAlarmSeverity"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -1547,7 +1516,10 @@ onMounted(() => {
|
|||||||
v-model:value="modalState.showSetFrom.pv_flag"
|
v-model:value="modalState.showSetFrom.pv_flag"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
allow-clear
|
allow-clear
|
||||||
:options="actAlarmOption.pvFlag"
|
:options="[
|
||||||
|
{ label: 'PNF', value: 'PNF' },
|
||||||
|
{ label: 'VNF', value: 'VNF' },
|
||||||
|
]"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -1560,7 +1532,7 @@ onMounted(() => {
|
|||||||
v-model:value="modalState.showSetFrom.alarm_type"
|
v-model:value="modalState.showSetFrom.alarm_type"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
allow-clear
|
allow-clear
|
||||||
:options="actAlarmOption.alarmType"
|
:options="dict.activeAlarmType"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -1575,7 +1547,7 @@ onMounted(() => {
|
|||||||
v-model:value="modalState.showSetFrom.orig_severity"
|
v-model:value="modalState.showSetFrom.orig_severity"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
allow-clear
|
allow-clear
|
||||||
:options="actAlarmOption.origSeverity"
|
:options="dict.activeAlarmSeverity"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -1601,4 +1573,20 @@ onMounted(() => {
|
|||||||
.table :deep(.ant-pagination) {
|
.table :deep(.ant-pagination) {
|
||||||
padding: 0 24px;
|
padding: 0 24px;
|
||||||
}
|
}
|
||||||
|
.full-modal {
|
||||||
|
.ant-modal {
|
||||||
|
max-width: 100%;
|
||||||
|
top: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.ant-modal-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: calc(100vh);
|
||||||
|
}
|
||||||
|
.ant-modal-body {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||