Merge branch 'main-v2' into lichang

This commit is contained in:
TsMask
2025-06-16 19:41:00 +08:00
5 changed files with 145 additions and 34 deletions

View File

@@ -11,7 +11,7 @@ VITE_APP_NAME = "Core Network OMC"
VITE_APP_CODE = "OMC" VITE_APP_CODE = "OMC"
# 应用版本 # 应用版本
VITE_APP_VERSION = "2.250607" VITE_APP_VERSION = "2.250613"
# 接口基础URL地址-不带/后缀 # 接口基础URL地址-不带/后缀
VITE_API_BASE_URL = "/omc-api" VITE_API_BASE_URL = "/omc-api"

View File

@@ -11,7 +11,7 @@ VITE_APP_NAME = "Core Network OMC"
VITE_APP_CODE = "OMC" VITE_APP_CODE = "OMC"
# 应用版本 # 应用版本
VITE_APP_VERSION = "2.250607" VITE_APP_VERSION = "2.250613"
# 接口基础URL地址-不带/后缀 # 接口基础URL地址-不带/后缀
VITE_API_BASE_URL = "/omc-api" VITE_API_BASE_URL = "/omc-api"

View File

@@ -1,5 +1,17 @@
# 版本发布日志 # 版本发布日志
## 2.2506.2-20250613
- 修复 数值控件属性maxlength拼写错误
- 修复 空格内容无法编辑,提示信息显示方向
- 优化 抓包文件目录列表显示文件大小
## 2.2506.1-20250607
- 优化 请求响应码常量,身份信息更换逻辑优化
- 修复 更新tcpdump路径从/tmp到/usr/local以符合新目录结构
## 2.2505.4-20250530 ## 2.2505.4-20250530
- 优化 网元参数配置修改tooltip位置为bottomLeft防止遮挡 - 优化 网元参数配置修改tooltip位置为bottomLeft防止遮挡

View File

@@ -26,7 +26,8 @@ import useNeStore from '@/store/modules/ne';
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';
import { saveAs } from 'file-saver'; import { saveAs } from 'file-saver';
import { uploadFileToNE } from '@/api/tool/file'; import { uploadFile } from '@/api/tool/file';
import { getNeViewFile } from '@/api/tool/neFile';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeStore(); const neListStore = useNeStore();
/**网元参数 */ /**网元参数 */
@@ -489,15 +490,27 @@ function fnModalUploadImportUpload(file: File) {
} }
const hide = message.loading(t('common.loading'), 0); const hide = message.loading(t('common.loading'), 0);
uploadImportState.loading = true; uploadImportState.loading = true;
uploadFileToNE('UDM', neID, file, 5) // 上传文件
let formData = new FormData();
formData.append('file', file);
formData.append('subPath', 'import');
uploadFile(formData)
.then(res => { .then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
return importUDMVOIP({ return res.data.filePath;
neId: neID, } else {
uploadPath: res.data, uploadImportState.msg = res.msg;
}); uploadImportState.loading = false;
return '';
} }
return res; })
.then((filePath: string) => {
if (!filePath) return;
// 文件导入
return importUDMVOIP({
neId: neID,
uploadPath: filePath,
});
}) })
.then(res => { .then(res => {
if (!res) return; if (!res) return;
@@ -517,6 +530,33 @@ function fnModalUploadImportUpload(file: File) {
}); });
} }
/**对话框表格信息导入失败原因 */
function fnModalUploadImportFailReason() {
const neId = queryParams.neId;
if (!neId) return;
const hide = message.loading(t('common.loading'), 0);
getNeViewFile({
neType: 'UDM',
neId: neId,
path: '/tmp',
fileName: 'import_imsuser_err_records.txt',
})
.then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success(t('common.operateOk'), 3);
const blob = new Blob([res.data], {
type: 'text/plain',
});
saveAs(blob, `import_udmvoip_err_records_${Date.now()}.txt`);
} else {
message.error(`${res.msg}`, 3);
}
})
.finally(() => {
hide();
});
}
/**对话框表格信息导入模板 */ /**对话框表格信息导入模板 */
function fnModalDownloadImportTemplate() { function fnModalDownloadImportTemplate() {
const hide = message.loading(t('common.loading'), 0); const hide = message.loading(t('common.loading'), 0);
@@ -554,7 +594,7 @@ onMounted(() => {
if (neOtions.value.length > 0) { if (neOtions.value.length > 0) {
queryParams.neId = neOtions.value[0].value; queryParams.neId = neOtions.value[0].value;
} }
// 获取列表数据 // 获取列表数据
fnGetList(); fnGetList();
}); });
@@ -868,14 +908,13 @@ onMounted(() => {
name="username" name="username"
v-bind="modalStateFrom.validateInfos.username" v-bind="modalStateFrom.validateInfos.username"
> >
<a-input-number <a-input
v-model:value="modalState.from.username" v-model:value="modalState.from.username"
style="width: 100%" style="width: 100%"
:min="4"
:maxlength="16" :maxlength="16"
:placeholder="t('views.neData.udmVOIP.username')" :placeholder="t('views.neData.udmVOIP.username')"
> >
</a-input-number> </a-input>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.neData.udmVOIP.password')" :label="t('views.neData.udmVOIP.password')"
@@ -917,13 +956,23 @@ onMounted(() => {
</a-button> </a-button>
</a-col> </a-col>
</a-row> </a-row>
<a-textarea <a-alert
:disabled="true" :message="uploadImportState.msg"
:hidden="!uploadImportState.msg" :type="uploadImportState.hasFail ? 'warning' : 'info'"
:value="uploadImportState.msg" v-show="uploadImportState.msg.length > 0"
:auto-size="{ minRows: 2, maxRows: 8 }" >
style="background-color: transparent; color: rgba(0, 0, 0, 0.85)" <template #action>
/> <a-button
size="small"
type="link"
danger
@click="fnModalUploadImportFailReason"
v-if="uploadImportState.hasFail"
>
{{ t('views.neUser.auth.importFail') }}
</a-button>
</template>
</a-alert>
</template> </template>
</UploadModal> </UploadModal>
</PageContainer> </PageContainer>

View File

@@ -16,7 +16,8 @@ import useNeStore from '@/store/modules/ne';
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';
import { saveAs } from 'file-saver'; import { saveAs } from 'file-saver';
import { uploadFileToNE } from '@/api/tool/file'; import { uploadFile } from '@/api/tool/file';
import { getNeViewFile } from '@/api/tool/neFile';
import { import {
addUDMVolteIMS, addUDMVolteIMS,
batchAddUDMVolteIMS, batchAddUDMVolteIMS,
@@ -541,15 +542,27 @@ function fnModalUploadImportUpload(file: File) {
} }
const hide = message.loading(t('common.loading'), 0); const hide = message.loading(t('common.loading'), 0);
uploadImportState.loading = true; uploadImportState.loading = true;
uploadFileToNE('UDM', neID, file, 5) // 上传文件
let formData = new FormData();
formData.append('file', file);
formData.append('subPath', 'import');
uploadFile(formData)
.then(res => { .then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
return importUDMVolteIMS({ return res.data.filePath;
neId: neID, } else {
uploadPath: res.data, uploadImportState.msg = res.msg;
}); uploadImportState.loading = false;
return '';
} }
return res; })
.then((filePath: string) => {
if (!filePath) return;
// 文件导入
return importUDMVolteIMS({
neId: neID,
uploadPath: filePath,
});
}) })
.then(res => { .then(res => {
if (!res) return; if (!res) return;
@@ -569,6 +582,33 @@ function fnModalUploadImportUpload(file: File) {
}); });
} }
/**对话框表格信息导入失败原因 */
function fnModalUploadImportFailReason() {
const neId = queryParams.neId;
if (!neId) return;
const hide = message.loading(t('common.loading'), 0);
getNeViewFile({
neType: 'UDM',
neId: neId,
path: '/tmp',
fileName: 'import_imsuser_err_records.txt',
})
.then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success(t('common.operateOk'), 3);
const blob = new Blob([res.data], {
type: 'text/plain',
});
saveAs(blob, `import_udmvolte_err_records_${Date.now()}.txt`);
} else {
message.error(`${res.msg}`, 3);
}
})
.finally(() => {
hide();
});
}
/**对话框表格信息导入模板 */ /**对话框表格信息导入模板 */
function fnModalDownloadImportTemplate() { function fnModalDownloadImportTemplate() {
const hide = message.loading(t('common.loading'), 0); const hide = message.loading(t('common.loading'), 0);
@@ -1089,13 +1129,23 @@ onMounted(() => {
</a-button> </a-button>
</a-col> </a-col>
</a-row> </a-row>
<a-textarea <a-alert
:disabled="true" :message="uploadImportState.msg"
:hidden="!uploadImportState.msg" :type="uploadImportState.hasFail ? 'warning' : 'info'"
:value="uploadImportState.msg" v-show="uploadImportState.msg.length > 0"
:auto-size="{ minRows: 2, maxRows: 8 }" >
style="background-color: transparent; color: rgba(0, 0, 0, 0.85)" <template #action>
/> <a-button
size="small"
type="link"
danger
@click="fnModalUploadImportFailReason"
v-if="uploadImportState.hasFail"
>
{{ t('views.neUser.auth.importFail') }}
</a-button>
</template>
</a-alert>
</template> </template>
</UploadModal> </UploadModal>
</PageContainer> </PageContainer>