diff --git a/src/api/device/appIcon.ts b/src/api/device/appIcon.ts new file mode 100644 index 00000000..32a9c95b --- /dev/null +++ b/src/api/device/appIcon.ts @@ -0,0 +1,73 @@ +import request from "@/utils/request"; +import type { AppIconQuery, AppIconVO } from "./types"; + +const APP_ICON_BASE_URL = "/api/v1/app-icons"; + +const AppIconAPI = { + /** 应用图标库分页列表(不传 packageName 返回全部) */ + getPage(queryParams: AppIconQuery) { + return request>({ + url: `${APP_ICON_BASE_URL}/page`, + method: "get", + params: queryParams, + }); + }, + + /** 获取应用当前生效图标信息 */ + getCurrentIcon(packageName: string) { + return request({ + url: `${APP_ICON_BASE_URL}/${packageName}`, + method: "get", + }); + }, + + /** 获取应用图标历史版本列表(含当前,按版本倒序) */ + getHistory(packageName: string) { + return request({ + url: `${APP_ICON_BASE_URL}/${packageName}/history`, + method: "get", + }); + }, + + /** 选取历史版本并锁定 */ + lock(packageName: string, iconId: number) { + return request({ + url: `${APP_ICON_BASE_URL}/${packageName}/lock`, + method: "post", + params: { iconId }, + }); + }, + + /** 解锁当前图标 */ + unlock(packageName: string) { + return request({ + url: `${APP_ICON_BASE_URL}/${packageName}/unlock`, + method: "post", + }); + }, + + /** 上传应用图标 */ + upload(packageName: string, file: File, appName?: string) { + const formData = new FormData(); + formData.append("file", file); + if (appName) { + formData.append("appName", appName); + } + return request({ + url: `${APP_ICON_BASE_URL}/${packageName}/upload`, + method: "post", + data: formData, + headers: { "Content-Type": "multipart/form-data" }, + }); + }, + + /** 删除应用图标版本 */ + delete(packageName: string, iconId: number) { + return request({ + url: `${APP_ICON_BASE_URL}/${packageName}/${iconId}`, + method: "delete", + }); + }, +}; + +export default AppIconAPI; diff --git a/src/api/device/types.ts b/src/api/device/types.ts new file mode 100644 index 00000000..e857d52c --- /dev/null +++ b/src/api/device/types.ts @@ -0,0 +1,33 @@ +import type { BaseQueryParams } from "@/api/common"; + +/** 应用图标分页查询参数 */ +export interface AppIconQuery extends BaseQueryParams { + /** 应用包名(可选,不传则返回全部) */ + packageName?: string; +} + +/** 应用图标VO */ +export interface AppIconVO { + /** 主键ID */ + id?: number; + /** 应用包名 */ + packageName?: string; + /** 应用名称 */ + appName?: string; + /** 图标访问地址 */ + iconUrl?: string; + /** 图标文件MD5 */ + iconMd5?: string; + /** 版本号(同包名内自增) */ + version?: number; + /** 状态(1当前生效 0历史版本) */ + status?: number; + /** 是否锁定(0未锁定 1已锁定) */ + locked?: number; + /** 图标来源(device/admin) */ + source?: string; + /** 创建时间 */ + createTime?: string; + /** 更新时间 */ + updateTime?: string; +} diff --git a/src/views/devices/app-icon/index.vue b/src/views/devices/app-icon/index.vue new file mode 100644 index 00000000..ec98ff02 --- /dev/null +++ b/src/views/devices/app-icon/index.vue @@ -0,0 +1,435 @@ + + + + +