diff --git a/Makefile b/Makefile index c1d5861..1170237 100644 --- a/Makefile +++ b/Makefile @@ -18,4 +18,4 @@ dockerbuild: build-no-build echo "docker build success" dockerpush: docker tag docker_iotlcmadminui:v0 ${REGISTRY}/docker_iotlcmadminui:v0 - docker push ${REGISTRY}/$1:$2 \ No newline at end of file + docker push ${REGISTRY}/docker_iotlcmadminui:v0 \ No newline at end of file diff --git a/vue/.husky/commit-msg b/vue/.husky/commit-msg old mode 100644 new mode 100755 diff --git a/vue/.husky/pre-commit b/vue/.husky/pre-commit old mode 100644 new mode 100755 diff --git a/vue/apps/web-antd/package.json b/vue/apps/web-antd/package.json index 9d3f8b7..f04c7ef 100644 --- a/vue/apps/web-antd/package.json +++ b/vue/apps/web-antd/package.json @@ -11,7 +11,7 @@ "license": "MIT", "author": { "name": "vben", - "email": "annvben@example.com", + "email": "xxx@example.com", "url": "https://github.com/anncwb" }, "type": "module", diff --git a/vue/apps/web-antd/public/setting.json b/vue/apps/web-antd/public/setting.json index 7ec7815..7ea1074 100644 --- a/vue/apps/web-antd/public/setting.json +++ b/vue/apps/web-antd/public/setting.json @@ -6,9 +6,9 @@ "loginSloganImage": "", "copyright": { "companyName": "示例智联", - "companySiteLink": "https://www.xiujiezhilian.cn", + "companySiteLink": "https://example.com", "date": "2024-2025", - "icp": "鲁ICP备2024117944号-1", + "icp": "", "icpLink": "https://beian.miit.gov.cn/" } } diff --git a/vue/apps/web-antd/src/adapter/vxe-table.ts b/vue/apps/web-antd/src/adapter/vxe-table.ts index b0a1f00..e0e0d69 100644 --- a/vue/apps/web-antd/src/adapter/vxe-table.ts +++ b/vue/apps/web-antd/src/adapter/vxe-table.ts @@ -2,12 +2,11 @@ import type { VxeTableGridOptions } from '@vben/plugins/vxe-table'; import { h } from 'vue'; +import { useVbenForm } from '@vben/common-ui'; import { setupVbenVxeTable, useVbenVxeGrid } from '@vben/plugins/vxe-table'; import { Button, Image } from 'ant-design-vue'; -import { useVbenForm } from './form'; - setupVbenVxeTable({ configVxeTable: (vxeUI) => { vxeUI.setConfig({ diff --git a/vue/apps/web-antd/src/api/agent/index.ts b/vue/apps/web-antd/src/api/agent/index.ts index 55e4ddc..f17e913 100644 --- a/vue/apps/web-antd/src/api/agent/index.ts +++ b/vue/apps/web-antd/src/api/agent/index.ts @@ -1,4 +1,4 @@ -import { requestClient } from '#/api/request'; +import { requestClient } from '#/api/request'; export interface AgentDept { deptId: number; @@ -60,6 +60,8 @@ export interface MenuTreeItem { } export interface AgentRoleView extends AgentRole { + isTemplateRole: boolean; + isDeptDefaultRole: boolean; menuIds: number[]; deptIds: number[]; allowedMenuIds: number[]; @@ -89,11 +91,35 @@ export interface AgentUser { isDefaultUser?: boolean; } -export function getAgentDeptListApi(params?: Record) { - return requestClient.get<{ items: AgentDept[]; total: number }>( - '/agent/dept/list', - { params }, - ); +export interface AgentDeptListParams { + page?: number; + pageSize?: number; + deptName?: string; + status?: string; + deptType?: number; +} + +export function exportAgentDeptApi(params?: Record) { + return requestClient.get('/agent/dept/export', { + params, + responseType: 'blob', + }); +} + +export function exportAgentUserApi(params?: Record) { + return requestClient.get('/agent/user/export', { + params, + responseType: 'blob', + }); +} + +export function getAgentDeptListApi(params?: AgentDeptListParams) { + return requestClient.get<{ + items: AgentDept[]; + page: number; + pageSize: number; + total: number; + }>('/agent/dept/list', { params }); } export function getAgentDeptViewApi(params: { deptId: number }) { @@ -110,7 +136,10 @@ export function deleteAgentDeptApi(params: { deptId: number }) { return requestClient.post('/agent/dept/delete', { ...params }); } -export function resetAgentDeptPasswordApi(params: { deptId: number; password: string }) { +export function resetAgentDeptPasswordApi(params: { + deptId: number; + password: string; +}) { return requestClient.post('/agent/dept/resetPassword', { ...params }); } @@ -133,11 +162,17 @@ export function updateAgentUserApi(params: Record) { return requestClient.post('/agent/user/update', { ...params }); } -export function deleteAgentUserApi(params: { userId?: number; userIds?: number[] }) { +export function deleteAgentUserApi(params: { + userId?: number; + userIds?: number[]; +}) { return requestClient.post('/agent/user/delete', { ...params }); } -export function resetAgentUserPasswordApi(params: { userId: number; password: string }) { +export function resetAgentUserPasswordApi(params: { + password: string; + userId: number; +}) { return requestClient.post('/agent/user/resetPassword', { ...params }); } @@ -158,7 +193,10 @@ export function saveAgentRoleApi(params: Record) { }); } -export function deleteAgentRoleApi(params: { roleId?: number; roleIds?: number[] }) { +export function deleteAgentRoleApi(params: { + roleId?: number; + roleIds?: number[]; +}) { return requestClient.post('/agent/role/delete', { ...params }); } @@ -167,4 +205,3 @@ export function getAgentMenuTreeApi() { '/agent/menu/tree', ); } - diff --git a/vue/apps/web-antd/src/api/common/downloadCenter/index.ts b/vue/apps/web-antd/src/api/common/downloadCenter/index.ts new file mode 100644 index 0000000..5d4b936 --- /dev/null +++ b/vue/apps/web-antd/src/api/common/downloadCenter/index.ts @@ -0,0 +1,98 @@ +import { message } from 'ant-design-vue'; + +import { requestClient } from '#/api/request'; + +export interface DownloadCenterListParam { + page?: number; + pageSize?: number; + keyword?: string; + bizKey?: string; + /** 多个状态用逗号分隔:0排队 2生成中 1已完成 3失败 */ + status?: string; + createdAt?: string[]; +} + +export interface DownloadCenterItem { + id: number; + taskNo: string; + bizKey: string; + bizName: string; + status: number; + totalCount: number; + fileName: string; + fileSize: number; + errorMessage?: string; + createdAt?: string; + finishTime?: string; + expireTime?: string; + deletedTime?: null | string; + deleteReason?: '' | 'expired' | 'user'; +} + +export interface DownloadCenterListResult { + items: DownloadCenterItem[]; + page: number; + pageSize: number; + total: number; +} + +export interface DownloadCenterRecentResult { + items: DownloadCenterItem[]; + runningCount: number; + finishedCount: number; +} + +/** 下载中心列表 */ +export function List(params: DownloadCenterListParam) { + return requestClient.get( + '/common/downloadCenter/list', + { + params, + }, + ); +} + +/** 右上角入口:最近任务与进行中数量。 + * 这是辅助信息,无权限或后端未就绪时静默失败,不能弹全局错误打扰用户。 */ +export function Recent(limit = 5) { + return requestClient.get( + '/common/downloadCenter/recent', + { params: { limit }, errorMessageMode: 'none' }, + ); +} + +/** 下载导出文件:业务错误可能以 HTTP 200 JSON Blob 返回,不能当作 xlsx 保存。 */ +export async function Download(taskId: number): Promise { + const response = await requestClient.download< + import('axios').AxiosResponse + >(`/common/downloadCenter/download?taskId=${taskId}`, { + timeout: 120 * 1000, + responseReturn: 'raw', + }); + const blob = response.data; + const contentType = String( + response.headers['content-type'] || blob?.type || '', + ).toLowerCase(); + if (contentType.includes('json')) { + let errorMessage = '下载失败,请稍后重试'; + try { + const payload = JSON.parse(await blob.text()); + errorMessage = payload?.message || errorMessage; + } catch { + // Malformed JSON must not be saved as a spreadsheet either. + } + message.error(errorMessage); + throw new Error(errorMessage); + } + if (!(blob instanceof Blob) || blob.size === 0) { + const errorMessage = '下载文件为空,请稍后重试'; + message.error(errorMessage); + throw new Error(errorMessage); + } + return blob; +} + +/** 删除导出任务 */ +export function Remove(taskId: number) { + return requestClient.post('/common/downloadCenter/remove', { taskId }); +} diff --git a/vue/apps/web-antd/src/api/common/tMessageLog/index.ts b/vue/apps/web-antd/src/api/common/tMessageLog/index.ts index 28ca887..467075f 100644 --- a/vue/apps/web-antd/src/api/common/tMessageLog/index.ts +++ b/vue/apps/web-antd/src/api/common/tMessageLog/index.ts @@ -27,3 +27,37 @@ export function Export(params:any) { responseType: 'blob', }); } + +// 未读消息通知(右上角消息提醒) +export interface TMessageLogUnreadItem { + messageLogId: number; + messageType: number; + sendUserType: number; + messageTitle: string; + messageContent: string; + messageLink: string; + sendTime: string; + isRead: number; +} + +export interface TMessageLogUnreadResult { + items: TMessageLogUnreadItem[]; + total: number; +} + +// 获取当前登录用户未读消息通知(右上角消息提醒) +export function UnreadList(params?: { limit?: number }) { + return requestClient.get('common/tMessageLog/unreadList', { + params, + }); +} + +// 标记当前登录用户指定消息已读 +export function Read(params: { messageLogId: number | string }) { + return requestClient.post('common/tMessageLog/read', { ...params }); +} + +// 标记当前登录用户全部消息已读 +export function ReadAll() { + return requestClient.post('common/tMessageLog/readAll', {}); +} diff --git a/vue/apps/web-antd/src/api/core/auth.ts b/vue/apps/web-antd/src/api/core/auth.ts index 6500ca4..b15abf2 100644 --- a/vue/apps/web-antd/src/api/core/auth.ts +++ b/vue/apps/web-antd/src/api/core/auth.ts @@ -2,7 +2,7 @@ * @description 认证相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/core/captcha.ts b/vue/apps/web-antd/src/api/core/captcha.ts index b4c809b..bead42e 100644 --- a/vue/apps/web-antd/src/api/core/captcha.ts +++ b/vue/apps/web-antd/src/api/core/captcha.ts @@ -2,7 +2,7 @@ * @description 验证码相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/core/index.ts b/vue/apps/web-antd/src/api/core/index.ts index 949e7b6..fdb5dfe 100644 --- a/vue/apps/web-antd/src/api/core/index.ts +++ b/vue/apps/web-antd/src/api/core/index.ts @@ -2,7 +2,7 @@ * @description 核心模块接口导出 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/core/menu.ts b/vue/apps/web-antd/src/api/core/menu.ts index 94cf36e..ac62587 100644 --- a/vue/apps/web-antd/src/api/core/menu.ts +++ b/vue/apps/web-antd/src/api/core/menu.ts @@ -2,7 +2,7 @@ * @description 菜单相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/core/upload.ts b/vue/apps/web-antd/src/api/core/upload.ts index 3615ff6..0684294 100644 --- a/vue/apps/web-antd/src/api/core/upload.ts +++ b/vue/apps/web-antd/src/api/core/upload.ts @@ -2,7 +2,7 @@ * @description 文件上传相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/core/user.ts b/vue/apps/web-antd/src/api/core/user.ts index c1756af..6b98722 100644 --- a/vue/apps/web-antd/src/api/core/user.ts +++ b/vue/apps/web-antd/src/api/core/user.ts @@ -2,7 +2,7 @@ * @description 用户信息相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/gen/testDemo/index.ts b/vue/apps/web-antd/src/api/gen/testDemo/index.ts index 7f38cb8..ac15492 100644 --- a/vue/apps/web-antd/src/api/gen/testDemo/index.ts +++ b/vue/apps/web-antd/src/api/gen/testDemo/index.ts @@ -2,7 +2,7 @@ * @description 测试单表相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/gen_codes/gen_table.ts b/vue/apps/web-antd/src/api/gen_codes/gen_table.ts index b2dbb41..c898490 100644 --- a/vue/apps/web-antd/src/api/gen_codes/gen_table.ts +++ b/vue/apps/web-antd/src/api/gen_codes/gen_table.ts @@ -2,7 +2,7 @@ * @description 代码生成器表格相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/index.ts b/vue/apps/web-antd/src/api/index.ts index 5bcebc9..e826da0 100644 --- a/vue/apps/web-antd/src/api/index.ts +++ b/vue/apps/web-antd/src/api/index.ts @@ -2,7 +2,7 @@ * @description API接口统一导出 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardInfo/index.ts b/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardInfo/index.ts index ffa20e6..71231a1 100644 --- a/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardInfo/index.ts +++ b/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardInfo/index.ts @@ -5,6 +5,11 @@ export function List(params: any) { return requestClient.get('iot/tSimCardInfo/list', { params }); } +// 批量号码查询使用 POST,避免较长号码列表超过 URL 长度限制 +export function BatchList(params: any) { + return requestClient.post('iot/tSimCardInfo/list', { ...params }); +} + // 删除/批量删除卡信息表 export function Delete(params: any) { return requestClient.post('iot/tSimCardInfo/delete', { ...params }); diff --git a/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardQuery/index.ts b/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardQuery/index.ts new file mode 100644 index 0000000..dcb0ebb --- /dev/null +++ b/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardQuery/index.ts @@ -0,0 +1,107 @@ +import type { + ExportColumn, + SimCardQueryExportParam, + SimCardQuerySubmitRes, + SimCardUsageHistoryColumnsRes, + SimCardUsageHistoryDeptOptionsRes, + SimCardUsageHistoryExportParam, +} from './type'; + +import { requestClient } from '#/api/request'; + +/** 卡基础信息查询:下载 Excel 模板 */ +export function DownloadBaseTemplate() { + return requestClient.download('/iot/tSimCardBaseQuery/template', { + responseReturn: 'raw', + }); +} + +/** 卡基础信息查询:可选导出列 */ +export function BaseColumns(): Promise<{ items: ExportColumn[] }> { + return requestClient.get('/iot/tSimCardBaseQuery/columns'); +} + +/** + * 两个导出接口共用的 multipart 组装。 + * 提交字段只在这里维护,避免 BaseExport / UsageExport 各写一份后口径漂移。 + */ +function buildExportForm(params: SimCardQueryExportParam): FormData { + const form = new FormData(); + form.append('mode', params.mode); + form.append('exportColumnsJson', JSON.stringify(params.exportColumns ?? [])); + if (params.batchInput !== undefined) { + form.append('batchInput', params.batchInput); + } + if (params.dimension !== undefined) { + form.append('dimension', params.dimension); + } + if (params.startNum !== undefined) { + form.append('startNum', params.startNum); + } + if (params.endNum !== undefined) { + form.append('endNum', params.endNum); + } + return form; +} + +/** + * 卡基础信息查询:提交导出。 + * 统一走 multipart:Excel 模式带 file,其余模式只带表单字段, + * 保持三个输入方式的请求路径一致。 + */ +export function BaseExport( + params: SimCardQueryExportParam & { file?: File }, +): Promise { + const form = buildExportForm(params); + if (params.file) { + form.append('file', params.file); + } + return requestClient.post('/iot/tSimCardBaseQuery/export', form, { + headers: { 'Content-Type': 'multipart/form-data' }, + timeout: 60_000, + }); +} + +/** 月历史用量查询:下载 Excel 模板 */ +export function DownloadUsageTemplate() { + return requestClient.download('/iot/tSimCardUsageHistory/template', { + responseReturn: 'raw', + }); +} + +/** 月历史用量查询:固定列与近12个月月份清单 */ +export function UsageColumns(): Promise { + return requestClient.get('/iot/tSimCardUsageHistory/columns'); +} + +/** 月历史用量查询:可选公司,展示范围由数据权限决定 */ +export function UsageDeptOptions(): Promise { + return requestClient.get('/iot/tSimCardUsageHistory/deptOptions'); +} + +/** 月历史用量查询:提交导出 */ +export function UsageExport( + params: SimCardUsageHistoryExportParam & { file?: File }, +): Promise { + // deptId 是 dept 模式的必填项,缺省时不能悄悄提交一个没有公司范围的导出请求。 + if (params.mode === 'dept' && !(Number(params.deptId) > 0)) { + return Promise.reject(new Error('按所属公司查询时必须选择具体公司')); + } + const form = buildExportForm(params); + if (params.deptId !== undefined && params.deptId > 0) { + form.append('deptId', String(params.deptId)); + } + if (params.expireStartTime) { + form.append('expireStartTime', params.expireStartTime); + } + if (params.expireEndTime) { + form.append('expireEndTime', params.expireEndTime); + } + if (params.file) { + form.append('file', params.file); + } + return requestClient.post('/iot/tSimCardUsageHistory/export', form, { + headers: { 'Content-Type': 'multipart/form-data' }, + timeout: 60_000, + }); +} diff --git a/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardQuery/type.ts b/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardQuery/type.ts new file mode 100644 index 0000000..4be8b04 --- /dev/null +++ b/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardQuery/type.ts @@ -0,0 +1,55 @@ +export interface ExportColumn { + /** 列表模型字段名,后端按它取值 */ + field: string; + /** 表头文字 */ + label: string; + dictType?: string; +} + +export type QueryMode = 'excel' | 'input' | 'range' | 'dept'; + +export interface SimCardQueryExportParam { + /** 输入方式 */ + mode: QueryMode; + /** 批量输入内容,每行 ICCID 或 ICCID MSISDN IMSI */ + batchInput?: string; + /** 连号维度:iccid / msisdn / imsi */ + dimension?: string; + startNum?: string; + endNum?: string; + /** 导出列,后端只认白名单内的字段 */ + exportColumns?: ExportColumn[]; +} + +export interface SimCardUsageHistoryExportParam extends SimCardQueryExportParam { + /** 所属公司部门ID,mode=dept 时必填 */ + deptId?: number; + /** 到期日期起(含),仅 mode=dept 生效 */ + expireStartTime?: string; + /** 到期日期止(含),仅 mode=dept 生效 */ + expireEndTime?: string; +} + +export interface SimCardQuerySubmitRes { + taskId: number; + taskNo: string; + total: number; +} + +export interface SimCardQueryDeptOption { + deptId: number; + deptName: string; + cardCount: number; + parentId: number; +} + +export interface SimCardUsageHistoryColumnsRes { + items: ExportColumn[]; + months: string[]; +} + +export interface SimCardUsageHistoryDeptOptionsRes { + items: SimCardQueryDeptOption[]; + /** 当前登录用户所属部门,用于公司下拉默认值 */ + currentDeptId: number; +} diff --git a/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardTrafficCutoff/type.ts b/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardTrafficCutoff/type.ts index ebc120a..b6f4df8 100644 --- a/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardTrafficCutoff/type.ts +++ b/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardTrafficCutoff/type.ts @@ -37,6 +37,7 @@ export interface TSimCardTrafficCutoffModel { } export interface TSimCardTrafficCutoffListParam { + includeUnconfigured?: boolean; page: number; pageSize: number; cardValue?: string; diff --git a/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardUnsub/index.test.ts b/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardUnsub/index.test.ts index 7234f53..34fcd20 100644 --- a/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardUnsub/index.test.ts +++ b/vue/apps/web-antd/src/api/iotlcm/tCommunication/tSimCardUnsub/index.test.ts @@ -1,3 +1,5 @@ +import type { TSimCardUnsubSubmitRes } from './type'; + import { beforeEach, describe, expect, it, vi } from 'vitest'; const download = vi.fn(); @@ -80,8 +82,7 @@ describe('tSimCardUnsub api', () => { }); it('exposes batchAsyncStatus on the submit response type so async Pending is representable', async () => { - const typeModule = await import('./type'); - const res: typeof typeModule.TSimCardUnsubSubmitRes.prototype = { + const res: TSimCardUnsubSubmitRes = { batchAsyncStatus: 0, batchNo: 'B202607210001', batchType: 1, @@ -123,4 +124,3 @@ describe('tSimCardUnsub api', () => { ); }); }); - diff --git a/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tBatch/index.test.ts b/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tBatch/index.test.ts new file mode 100644 index 0000000..3a7f1c3 --- /dev/null +++ b/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tBatch/index.test.ts @@ -0,0 +1,50 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +import { Cards, WarehousingList } from './index'; + +const request = vi.hoisted(() => ({ get: vi.fn() })); +vi.mock('#/api/request', () => ({ requestClient: request })); + +describe('入库列表渠道筛选请求', () => { + it('卡清单按服务端状态筛选,保留状态零并允许清空', async () => { + for (const detailStatus of [0, 3, 4, undefined]) { + const params = { + batchNo: 'INB-TEST', + detailStatus, + page: 1, + pageSize: 20, + }; + await Cards(params); + expect(request.get).toHaveBeenLastCalledWith('common/batchMain/cards', { + params, + }); + } + }); + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('切换渠道后每次传递当前编码并保留入库类型', async () => { + for (const chanKey of ['A', 'B']) { + await WarehousingList({ chanKey, page: 1, pageSize: 20 }); + expect(request.get).toHaveBeenLastCalledWith( + 'common/batchMain/successList', + { + params: { batchType: 1, chanKey, page: 1, pageSize: 20 }, + }, + ); + } + expect(request.get).toHaveBeenCalledTimes(2); + }); + + it('清空渠道不残留上一次筛选条件', async () => { + await WarehousingList({ chanKey: 'A', page: 1 }); + await WarehousingList({ page: 1 }); + expect(request.get).toHaveBeenLastCalledWith( + 'common/batchMain/successList', + { + params: { batchType: 1, page: 1 }, + }, + ); + }); +}); diff --git a/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tBatch/index.ts b/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tBatch/index.ts index 915e199..9fe6797 100644 --- a/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tBatch/index.ts +++ b/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tBatch/index.ts @@ -52,6 +52,20 @@ export function View(params: BatchMainViewParam) { }); } +// 导出入库批次列表(数据与入库管理页一致) +export function ExportWarehousing(params: BatchMainWarehousingListParam) { + return requestClient.post( + '/common/batchMain/exportWarehousing', + { ...params, batchType: 1 }, + { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', + }, + responseType: 'blob', + }, + ); +} + // 导出批次主表 export function Export(params: BatchMainExportParam) { return requestClient.post( diff --git a/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tBatch/type.ts b/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tBatch/type.ts index 26d4f6d..91b72e9 100644 --- a/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tBatch/type.ts +++ b/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tBatch/type.ts @@ -147,13 +147,16 @@ export interface BatchMainListParam { export type BatchMainWarehousingListParam = Omit< BatchMainListParam, 'batchType' ->; +> & { + chanKey?: string; +}; /** 获取批次主表列表 响应 */ export type BatchMainListRes = GlobalListRes; /** 批次卡清单列表项 */ export interface BatchCardListModel extends AllocationUnits { + errorReason?: string; /** 明细状态 */ detailStatus?: number; /** ICCID */ @@ -169,6 +172,7 @@ export interface BatchCardListModel extends AllocationUnits { /** 获取批次卡清单请求参数 */ export interface BatchMainCardsParam { + detailStatus?: number; /** 批次编号 */ batchNo: string; /** 批次类型 */ diff --git a/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tSimCardOutbound/index.test.ts b/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tSimCardOutbound/index.test.ts index 1f8b0d4..7965934 100644 --- a/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tSimCardOutbound/index.test.ts +++ b/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tSimCardOutbound/index.test.ts @@ -45,7 +45,7 @@ describe('tSimCardOutbound api', () => { '/iot/tSimCardOutbound/excel/submit', { file }, { - timeout: 60_000, + timeout: 180_000, }, ); }); @@ -71,6 +71,7 @@ describe('tSimCardOutbound api', () => { expect(post).toHaveBeenCalledWith( '/iot/tSimCardOutbound/range/submit', params, + { timeout: 180_000 }, ); }); @@ -117,12 +118,9 @@ describe('tSimCardOutbound api', () => { CustomerBalance(params); - expect(get).toHaveBeenCalledWith( - '/iot/tSimCardOutbound/customerBalance', - { - params, - }, - ); + expect(get).toHaveBeenCalledWith('/iot/tSimCardOutbound/customerBalance', { + params, + }); }); it('submits inbound batch outbound with backend-supported payload', async () => { @@ -141,6 +139,7 @@ describe('tSimCardOutbound api', () => { expect(post).toHaveBeenCalledWith( '/iot/tSimCardOutbound/batch/submit', params, + { timeout: 180_000 }, ); }); @@ -160,6 +159,7 @@ describe('tSimCardOutbound api', () => { expect(post).toHaveBeenCalledWith( '/iot/tSimCardOutbound/input/submit', params, + { timeout: 180_000 }, ); }); }); diff --git a/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tSimCardStock/type.ts b/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tSimCardStock/type.ts index f7e5a5a..294c0c6 100644 --- a/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tSimCardStock/type.ts +++ b/vue/apps/web-antd/src/api/iotlcm/tLifeCycle/tSimCardStock/type.ts @@ -31,6 +31,8 @@ export interface TSimCardStockModel { tenantId: string; /** 创建部门 */ createdDept: number; + /** 创建部门名称 */ + createdDeptName?: string; /** 创建者 */ createdBy: number; /** 创建者摘要信息 */ diff --git a/vue/apps/web-antd/src/api/iotlcm/tOperationlog/index.ts b/vue/apps/web-antd/src/api/iotlcm/tOperationlog/index.ts index 6058dda..322a49f 100644 --- a/vue/apps/web-antd/src/api/iotlcm/tOperationlog/index.ts +++ b/vue/apps/web-antd/src/api/iotlcm/tOperationlog/index.ts @@ -5,6 +5,8 @@ import type { BatchExecutionLogListRes, BatchExecutionLogSummaryParam, BatchExecutionLogSummaryRes, + BatchExecutionLogSyncReviewParam, + BatchExecutionLogSyncReviewRes, } from './type'; import { requestClient } from '#/api/request'; @@ -38,3 +40,11 @@ export function DetailList(params: BatchExecutionLogDetailListParam) { }, ); } + +// 手动同步待核查批次的上游执行结果(只读补查既有受理号,不重发办理) +export function SyncReview(data: BatchExecutionLogSyncReviewParam) { + return requestClient.post( + 'common/batchExecutionLog/syncReview', + { ...data }, + ); +} diff --git a/vue/apps/web-antd/src/api/iotlcm/tOperationlog/type.ts b/vue/apps/web-antd/src/api/iotlcm/tOperationlog/type.ts index af8092a..8544cfc 100644 --- a/vue/apps/web-antd/src/api/iotlcm/tOperationlog/type.ts +++ b/vue/apps/web-antd/src/api/iotlcm/tOperationlog/type.ts @@ -20,12 +20,18 @@ export interface BatchExecutionLogModel extends AllocationUnits { batchNo?: string; /** 异步处理状态 */ batchAsyncStatus?: number; + /** 重启阶段:waiting_resume 表示停机后等待复机 */ + restartPhase?: string; + /** 计划复机时间 */ + restartResumeAt?: string; /** 批次类型 */ batchType?: number; /** 来源方式 */ sourceType?: null | number; /** 总数量 */ totalCount?: number; + /** 待核查数量 */ + unknownCount?: number; /** 运行结果 */ runResult?: number; /** 开始时间 */ @@ -52,12 +58,18 @@ export interface BatchExecutionLogSummaryRes extends AllocationUnits { batchNo?: string; /** 异步处理状态 */ batchAsyncStatus?: number; + /** 重启阶段:waiting_resume 表示停机后等待复机 */ + restartPhase?: string; + /** 计划复机时间 */ + restartResumeAt?: string; /** 批次类型 */ batchType?: number; /** 来源方式 */ sourceType?: null | number; /** 总数量 */ totalCount?: number; + /** 待核查数量 */ + unknownCount?: number; /** 运行结果 */ runResult?: number; /** 失败原因 */ @@ -74,6 +86,8 @@ export interface BatchExecutionLogSummaryRes extends AllocationUnits { /** 批次执行日志文件信息 */ export interface BatchExecutionLogFileModel { + /** 导出任务ID;与历史批次下载任务ID分开,走下载中心鉴权 */ + exportTaskId?: number; /** OSS文件ID */ ossId?: number; /** 文件URL */ @@ -82,6 +96,8 @@ export interface BatchExecutionLogFileModel { /** 批次执行日志结果文件信息 */ export interface BatchExecutionLogResultFileModel extends BatchExecutionLogFileModel { + /** 原始下载文件名 */ + originalName?: string; /** 下载任务ID */ downloadId?: number; /** 下载状态 */ @@ -113,6 +129,28 @@ export interface BatchExecutionLogListParam { /** 获取批次执行日志列表响应 */ export type BatchExecutionLogListRes = GlobalListRes; +/** 手动同步待核查批次上游结果的请求参数 */ +export interface BatchExecutionLogSyncReviewParam { + /** 批次编号 */ + batchNo: string; + /** 同步原因 */ + reason?: string; +} + +/** 手动同步待核查批次上游结果的响应 */ +export interface BatchExecutionLogSyncReviewRes { + /** 批次编号 */ + batchNo?: string; + /** 批次类型 */ + batchType?: number; + /** 异步处理状态 */ + batchAsyncStatus?: number; + /** 待核查数量 */ + unknownCount?: number; + /** 是否已提交同步 */ + queued?: boolean; +} + /** 批次执行日志明细列表项 */ export interface BatchExecutionLogDetailModel extends AllocationUnits { /** 协议到期时间 */ diff --git a/vue/apps/web-antd/src/api/iotlcm/tWarnCenter/simWarningConfig/type.ts b/vue/apps/web-antd/src/api/iotlcm/tWarnCenter/simWarningConfig/type.ts index 113819d..2d6f71a 100644 --- a/vue/apps/web-antd/src/api/iotlcm/tWarnCenter/simWarningConfig/type.ts +++ b/vue/apps/web-antd/src/api/iotlcm/tWarnCenter/simWarningConfig/type.ts @@ -16,6 +16,7 @@ export interface SimWarningConfigModel { warnPhones?: string; warnEmails?: string; autoAction?: number; + isEnabled: number; wxTemplateId?: string; remark?: string; @@ -60,6 +61,7 @@ export interface SimWarningConfigSaveParam { warnPhones?: string; warnEmails?: string; autoAction?: number; + isEnabled?: number; remark?: string; } diff --git a/vue/apps/web-antd/src/api/monitor/cache.ts b/vue/apps/web-antd/src/api/monitor/cache.ts index 47a4d2d..cbfc13b 100644 --- a/vue/apps/web-antd/src/api/monitor/cache.ts +++ b/vue/apps/web-antd/src/api/monitor/cache.ts @@ -2,7 +2,7 @@ * @description 缓存监控相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/monitor/index.ts b/vue/apps/web-antd/src/api/monitor/index.ts index 8a9ace0..acc6496 100644 --- a/vue/apps/web-antd/src/api/monitor/index.ts +++ b/vue/apps/web-antd/src/api/monitor/index.ts @@ -2,7 +2,7 @@ * @description 监控模块接口导出 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/monitor/online.ts b/vue/apps/web-antd/src/api/monitor/online.ts index 3c6027d..7e47af3 100644 --- a/vue/apps/web-antd/src/api/monitor/online.ts +++ b/vue/apps/web-antd/src/api/monitor/online.ts @@ -2,7 +2,7 @@ * @description 在线用户监控相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/request.ts b/vue/apps/web-antd/src/api/request.ts index c574682..122c3d7 100644 --- a/vue/apps/web-antd/src/api/request.ts +++ b/vue/apps/web-antd/src/api/request.ts @@ -2,7 +2,7 @@ * @description 请求客户端配置 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ @@ -116,12 +116,11 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) { if (config.responseReturn === 'body') { return responseData; } else if (headers['content-type']?.includes?.('application/json')) { - if (config.responseType === 'blob' && Reflect.has(responseData, 'data')) - { - // 这时候的data为blob类型 - const blob = responseData.data as unknown as Blob; - // 拿到字符串转json对象 - responseData.data = JSON.parse(await blob.text()); + // 导出/下载类接口用 blob 方式接收 JSON 回执(异步导出只回任务信息,没有文件流)。 + // 此时 axios 的 responseData 就是 Blob 本身,Blob 上没有 code 字段, + // 若继续走下面的业务码判断会被误判为失败并抛错,所以直接交给调用方解析。 + if (config.responseType === 'blob') { + return responseData; } } else if (headers['content-type']?.includes?.('application/octet-stream')) { // 下载文件 diff --git a/vue/apps/web-antd/src/api/system/client.ts b/vue/apps/web-antd/src/api/system/client.ts index 50bcd7b..72b51b4 100644 --- a/vue/apps/web-antd/src/api/system/client.ts +++ b/vue/apps/web-antd/src/api/system/client.ts @@ -2,7 +2,7 @@ * @description 客户端管理相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/config.ts b/vue/apps/web-antd/src/api/system/config.ts index 59232f3..cf5d7f4 100644 --- a/vue/apps/web-antd/src/api/system/config.ts +++ b/vue/apps/web-antd/src/api/system/config.ts @@ -2,7 +2,7 @@ * @description 系统配置相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/dept.ts b/vue/apps/web-antd/src/api/system/dept.ts index bfe71aa..ef98807 100644 --- a/vue/apps/web-antd/src/api/system/dept.ts +++ b/vue/apps/web-antd/src/api/system/dept.ts @@ -2,7 +2,7 @@ * @description 组织管理相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/dict.ts b/vue/apps/web-antd/src/api/system/dict.ts index 92ec7ed..080f1b8 100644 --- a/vue/apps/web-antd/src/api/system/dict.ts +++ b/vue/apps/web-antd/src/api/system/dict.ts @@ -2,7 +2,7 @@ * @description 字典管理相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/index.ts b/vue/apps/web-antd/src/api/system/index.ts index 210e362..6e32ecb 100644 --- a/vue/apps/web-antd/src/api/system/index.ts +++ b/vue/apps/web-antd/src/api/system/index.ts @@ -2,7 +2,7 @@ * @description 系统管理模块接口导出 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/job.ts b/vue/apps/web-antd/src/api/system/job.ts index 450fe00..033d9ee 100644 --- a/vue/apps/web-antd/src/api/system/job.ts +++ b/vue/apps/web-antd/src/api/system/job.ts @@ -2,7 +2,7 @@ * @description 定时任务相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/logininfor.ts b/vue/apps/web-antd/src/api/system/logininfor.ts index 3bd5fbc..45f0ba9 100644 --- a/vue/apps/web-antd/src/api/system/logininfor.ts +++ b/vue/apps/web-antd/src/api/system/logininfor.ts @@ -2,7 +2,7 @@ * @description 登录日志相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/menu.ts b/vue/apps/web-antd/src/api/system/menu.ts index 0f4047d..c9f042b 100644 --- a/vue/apps/web-antd/src/api/system/menu.ts +++ b/vue/apps/web-antd/src/api/system/menu.ts @@ -2,7 +2,7 @@ * @description 菜单管理相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/notice.ts b/vue/apps/web-antd/src/api/system/notice.ts index ac9fba2..96203d4 100644 --- a/vue/apps/web-antd/src/api/system/notice.ts +++ b/vue/apps/web-antd/src/api/system/notice.ts @@ -2,7 +2,7 @@ * @description 通知公告相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/oper-log.ts b/vue/apps/web-antd/src/api/system/oper-log.ts index 94a8dfb..2e1683e 100644 --- a/vue/apps/web-antd/src/api/system/oper-log.ts +++ b/vue/apps/web-antd/src/api/system/oper-log.ts @@ -2,7 +2,7 @@ * @description 操作日志相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/oss.ts b/vue/apps/web-antd/src/api/system/oss.ts index b540332..c06a882 100644 --- a/vue/apps/web-antd/src/api/system/oss.ts +++ b/vue/apps/web-antd/src/api/system/oss.ts @@ -2,7 +2,7 @@ * @description 对象存储管理相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/post.ts b/vue/apps/web-antd/src/api/system/post.ts index 15bf175..c64d9c2 100644 --- a/vue/apps/web-antd/src/api/system/post.ts +++ b/vue/apps/web-antd/src/api/system/post.ts @@ -2,7 +2,7 @@ * @description 岗位管理相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/qrcode.ts b/vue/apps/web-antd/src/api/system/qrcode.ts index 749054a..0f39baf 100644 --- a/vue/apps/web-antd/src/api/system/qrcode.ts +++ b/vue/apps/web-antd/src/api/system/qrcode.ts @@ -2,7 +2,7 @@ * @description 系统二维码管理相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/role.ts b/vue/apps/web-antd/src/api/system/role.ts index 7ce3da0..001aa90 100644 --- a/vue/apps/web-antd/src/api/system/role.ts +++ b/vue/apps/web-antd/src/api/system/role.ts @@ -2,7 +2,7 @@ * @description 角色管理相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ @@ -12,6 +12,7 @@ import { requestClient } from '#/api/request'; export interface SysRoleListParam { page?: number; pageSize?: number; + deptId?: number; roleName?: string; roleKey?: string; status?: string; @@ -19,22 +20,26 @@ export interface SysRoleListParam { } export interface SysRoleListData { - roleId: number; - tenantId: string; - roleName: string; - roleKey: string; - roleSort: number; - dataScope: string; - menuCheckStrictly: number; - deptCheckStrictly: number; - status: string; - createdDept: number; - createdAt: string; - remark: string; + roleId: number; + tenantId: string; + roleName: string; + roleKey: string; + roleSort: number; + dataScope: string; + menuCheckStrictly: number; + deptCheckStrictly: number; + status: string; + createdDept: number; + createdAt: string; + remark: string; } export interface SysRoleViewData { - roleId: number; + isTemplateRole: boolean; + isDeptDefaultRole: boolean; + roleMenuDataScopes: Record; + deptId: number; + roleId: number; tenantId: string; roleName: string; roleKey: string; @@ -96,14 +101,11 @@ export interface SysRoleDeleteParam { roleIds: number[]; } -export interface SysRoleAddRes { -} +export interface SysRoleAddRes {} -export interface SysRoleEditRes { -} +export interface SysRoleEditRes {} -export interface SysRoleDeleteRes { -} +export interface SysRoleDeleteRes {} export interface SysRoleDataScopeEditParam { roleId: number; @@ -111,26 +113,34 @@ export interface SysRoleDataScopeEditParam { deptCheckStrictly?: number; deptIds?: number[]; } -export interface SysRoleDataScopeEditRes { -} +export interface SysRoleDataScopeEditRes {} -export async function addSysRoleApi(params: SysRoleAddParam|any) { +export async function addSysRoleApi(params: SysRoleAddParam | any) { return requestClient.post('/system/role/add', { ...params }); } -export async function editSysRoleApi(params: SysRoleEditParam|any) { +export async function editSysRoleApi(params: SysRoleEditParam | any) { return requestClient.post('/system/role/edit', { ...params }); } -export async function deleteSysRoleApi(params: SysRoleDeleteParam|any) { - return requestClient.post('/system/role/delete', { ...params }); -} +export async function deleteSysRoleApi(params: SysRoleDeleteParam | any) { + return requestClient.post('/system/role/delete', { + ...params, + }); +} -export async function getSysRoleViewApi(params: SysRoleViewParam|any) { - console.log('/Users/lixiujie/dev_test/dev_go/xiujie_iot/vue/apps/web-antd/src/api/system/role.ts', params); +export async function getSysRoleViewApi(params: SysRoleViewParam | any) { + console.log( + '/Users/lixiujie/dev_test/dev_go/xiujie_iot/vue/apps/web-antd/src/api/system/role.ts', + params, + ); return requestClient.get('/system/role/view', { params }); } -export async function editSysRoleDataScopeApi(params: SysRoleDataScopeEditParam|any) { - return requestClient.post('/system/role/dataScope', { ...params }); +export async function editSysRoleDataScopeApi( + params: SysRoleDataScopeEditParam | any, +) { + return requestClient.post('/system/role/dataScope', { + ...params, + }); } diff --git a/vue/apps/web-antd/src/api/system/social.ts b/vue/apps/web-antd/src/api/system/social.ts index 5dc5086..0183d38 100644 --- a/vue/apps/web-antd/src/api/system/social.ts +++ b/vue/apps/web-antd/src/api/system/social.ts @@ -2,7 +2,7 @@ * @description 社交账号管理相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/api/system/user.ts b/vue/apps/web-antd/src/api/system/user.ts index 97cead5..cbb301f 100644 --- a/vue/apps/web-antd/src/api/system/user.ts +++ b/vue/apps/web-antd/src/api/system/user.ts @@ -2,7 +2,7 @@ * @description 用户管理相关接口 * @Link https://github.com/xiujiecn/xiu-admin * @Copyright Copyright (c) 2025 LiXiujie - * @Author Lxj + * @Author Lxj * @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE * @date 2024-03-21 */ diff --git a/vue/apps/web-antd/src/config/setting.ts b/vue/apps/web-antd/src/config/setting.ts index e078aae..f5e857f 100644 --- a/vue/apps/web-antd/src/config/setting.ts +++ b/vue/apps/web-antd/src/config/setting.ts @@ -57,9 +57,9 @@ const DEFAULT_RUNTIME_SETTING: RuntimeSetting = { appTitle: '智联·云', copyright: { companyName: '示例智联', - companySiteLink: 'https://www.xiujiezhilian.cn', + companySiteLink: 'https://example.com', date: '2024-2025', - icp: '鲁ICP备2024117944号-1', + icp: '', icpLink: 'https://beian.miit.gov.cn/', }, loginPageDescription: '新一代物联网设备统一接入平台', diff --git a/vue/apps/web-antd/src/layouts/basic.vue b/vue/apps/web-antd/src/layouts/basic.vue index 070d18e..e59edb4 100644 --- a/vue/apps/web-antd/src/layouts/basic.vue +++ b/vue/apps/web-antd/src/layouts/basic.vue @@ -1,14 +1,14 @@ +