diff --git a/README.md b/README.md index 034c063..a9c6529 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,10 @@ ## API文档 [超掌柜收银机](https://app.apifox.com/project/5827475) +账号,商户相关: +订单,支付相关: +商品,耗材相关: +系统相关: ## 项目特色 diff --git a/package.json b/package.json index fad664f..caa5836 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ "qs": "^6.14.0", "sortablejs": "^1.15.6", "vue": "^3.5.13", + "vue-clipboard3": "^2.0.0", "vue-i18n": "^11.1.0", "vue-router": "^4.5.0" }, diff --git a/src/api/account/common.ts b/src/api/account/common.ts new file mode 100644 index 0000000..babf297 --- /dev/null +++ b/src/api/account/common.ts @@ -0,0 +1,108 @@ +import request from "@/utils/request"; +const baseURL = "/account/admin/common"; + +const CommonApi = { + /** + * 上传文件 + * + * @param formData + */ + upload(formData: FormData) { + return request({ + url: `${baseURL}/upload`, + method: "post", + data: formData, + headers: { + "Content-Type": "multipart/form-data", + }, + }); + }, + /** + * 上传文件 + */ + uploadFile(file: File) { + const formData = new FormData(); + formData.append("file", file); + return request({ + url: `${baseURL}/upload`, + method: "post", + data: formData, + headers: { + "Content-Type": "multipart/form-data", + }, + }); + }, + /** + * 下载文件 + * @param url + * @param fileName + */ + download(url: string, fileName?: string) { + return request({ + url: url, + method: "get", + responseType: "blob", + }).then((res) => { + const blob = new Blob([res.data]); + const a = document.createElement("a"); + const url = window.URL.createObjectURL(blob); + a.href = url; + a.download = fileName || "下载文件"; + a.click(); + window.URL.revokeObjectURL(url); + }); + }, + /** + * 发送验证码 + */ + sms(data: smsRequest) { + return request({ + url: `${baseURL}/sms`, + method: "post", + data: data, + }); + }, +}; + +export default CommonApi; + +export interface smsRequest { + /** + * 验证码类型 + */ + type: string; + [property: string]: any; +} +/** + * 是否成功 + * + * CzgResult«Boolean» + */ +export interface smsResponse { + code?: number | null; + data?: boolean | null; + msg?: null | string; + [property: string]: any; +} + +/** + * 文件API类型声明 + */ +export interface FileInfo { + /** 文件名 */ + name: string; + /** 文件路径 */ + url: string; +} + +/** + * 文件地址 + * + * CzgResult«String» + */ +export interface uploadResponse { + code?: number | null; + data?: null | string; + msg?: null | string; + [property: string]: any; +} diff --git a/src/api/account/register.ts b/src/api/account/register.ts new file mode 100644 index 0000000..a366cd4 --- /dev/null +++ b/src/api/account/register.ts @@ -0,0 +1,141 @@ +import request from "@/utils/request"; +const baseURL = "account/admin/"; + +const RegisterApi = { + /** 获取当前用户菜单列表*/ + getList(params: getListRequest) { + return request({ + url: `${baseURL}merchantRegister`, + method: "get", + params: params, + }); + }, + /**生成激活码 */ + add(data: addRequest) { + return request({ + url: `${baseURL}merchantRegister`, + method: "post", + data: data, + }); + }, +}; + +export default RegisterApi; + +/** 请求激活码列表参数 */ +export interface getListRequest { + /** + * 结束时间 + */ + endTime?: string; + page: number; + size: number; + /** + * 开始时间 + */ + startTime?: string; + /** + * 状态 0未激活 1已激活 + */ + state?: number; + [property: string]: any; +} + +/** + * 激活码列表 + * + * CzgResult«Page«MerchantRegister»» + */ +export interface getListResponse { + code?: number | null; + data?: PageMerchantRegister; + msg?: null | string; + [property: string]: any; +} + +/** + * Page«MerchantRegister» + */ +export interface PageMerchantRegister { + /** + * 每页数据数量最大限制。 + */ + maxPageSize?: number | null; + /** + * 是否优化分页查询 COUNT 语句。 + */ + optimizeCountQuery?: boolean | null; + /** + * 当前页码。 + */ + pageNumber?: number | null; + /** + * 每页数据数量。 + */ + pageSize?: number | null; + /** + * 当前页数据。 + */ + records?: MerchantRegister[] | null; + /** + * 总页数。 + */ + totalPage?: number | null; + /** + * 总数据数量。 + */ + totalRow?: number | null; + [property: string]: any; +} + +/** + * 激活码 实体类。 + * + * MerchantRegister + */ +export interface MerchantRegister { + /** + * 激活码金额 + */ + amount?: number | null; + /** + * 创建时间 + */ + createTime?: null | string; + id?: number | null; + /** + * 激活时长(月) + */ + periodMonth?: number | null; + /** + * 激活码 + */ + registerCode?: null | string; + /** + * 店铺id + */ + shopId?: null | string; + /** + * 状态0未使用1已使用 + */ + status?: number | null; + updateTime?: null | string; + [property: string]: any; +} + +/** + * 激活码信息 + * + * MerchantRegisterDTO + */ +export interface addRequest { + /** + * 生成数量 + */ + num: number | null; + /** + * 激活时长 + */ + periodMonth: number | null; + [property: string]: any; +} diff --git a/src/api/account/role.ts b/src/api/account/role.ts new file mode 100644 index 0000000..faea2a6 --- /dev/null +++ b/src/api/account/role.ts @@ -0,0 +1,228 @@ +import request from "@/utils/request"; +const baseURL = "account/admin/role"; + +const RoleApi = { + /** 获取当前用户菜单列表*/ + getList(params: getListRequest) { + return request({ + url: `${baseURL}/list`, + method: "get", + params, + }); + }, + add(data: addRequest) { + return request({ + url: `${baseURL}`, + method: "post", + data, + }); + }, + update(data: editRequest) { + return request({ + url: `${baseURL}`, + method: "put", + data, + }); + }, + delete(data: delRequest) { + return request({ + url: `${baseURL}`, + method: "put", + data, + }); + }, +}; + +export default RoleApi; + +/** getList start*/ +export interface getListRequest { + /** + * 结束时间 + */ + endTime?: string; + /** + * 角色名称或描述 + */ + key?: string; + page: number; + size: number; + /** + * 开始时间 + */ + startTime?: string; + [property: string]: any; +} + +/** + * 分页参数 + * + * CzgResult«Page«SysRole»» + */ +export interface getListResponse { + code?: number | null; + data?: PageSysRole; + msg?: null | string; + [property: string]: any; +} + +/** + * Page«SysRole» + */ +export interface PageSysRole { + maxPageSize?: number | null; + optimizeCountQuery?: boolean | null; + pageNumber?: number | null; + pageSize?: number | null; + records?: SysRole[] | null; + totalPage?: number | null; + totalRow?: number | null; + [property: string]: any; +} + +/** + * 角色表 实体类。 + * + * SysRole + */ +export interface SysRole { + /** + * 创建日期 + */ + createTime?: null | string; + /** + * 创建者 + */ + createUserId?: number | null; + /** + * 描述 + */ + description?: null | string; + /** + * ID + */ + id?: number | null; + /** + * 角色级别 + */ + level?: number | null; + /** + * 名称 + */ + name?: null | string; + /** + * 商户id + */ + shopId?: number | null; + /** + * 更新时间 + */ + updateTime?: null | string; + /** + * 更新者 + */ + updateUserId?: number | null; + [property: string]: any; +} + +/** getList end*/ + +/** add start*/ +/** + * 角色信息 + * + * RoleAddDTO + */ +export interface addRequest { + /** + * 描述 + */ + description?: null | string; + /** + * 角色等级 + */ + level?: number | null; + /** + * 菜单id集合 + */ + menuIdList: number[] | null; + /** + * 角色名称 + */ + name: null | string; + [property: string]: any; + id?: number | null; +} +/** + * 是否成功 + * + * CzgResult«Boolean» + */ +export interface addResponse { + code?: number | null; + data?: boolean | null; + msg?: null | string; + [property: string]: any; +} +/**add end */ + +/** edit start*/ +/** + * 角色信息 + * + * RoleEditDTO + */ +export interface editRequest { + description?: null | string; + /** + * 角色id + */ + id: number | null; + /** + * 角色等级 + */ + level?: number | null; + menuIdList: number[] | null; + /** + * 角色名称 + */ + name: null | string; + [property: string]: any; +} +/** + * 是否成功 + * + * CzgResult«Boolean» + */ +export interface editResponse { + code?: number | null; + data?: boolean | null; + msg?: null | string; + [property: string]: any; +} +/** edit end */ +/** delete start*/ +/** + * 角色信息 + * + * RoleRemoveDTO + */ +export interface delRequest { + /** + * 角色id + */ + id: number | null; + [property: string]: any; +} +/** + * 是否成功 + * + * CzgResult«Boolean» + */ +export interface delResponse { + code?: number | null; + data?: boolean | null; + msg?: null | string; + [property: string]: any; +} +/** delete end */ diff --git a/src/api/config.ts b/src/api/config.ts new file mode 100644 index 0000000..5236bab --- /dev/null +++ b/src/api/config.ts @@ -0,0 +1,10 @@ +// [超掌柜收银机](https://app.apifox.com/project/5827475) +// 账号,商户相关: +// 订单,支付相关: +// 商品,耗材相关: +// 系统相关: + +export const Account_BaseUrl = "account"; +export const Order_BaseUrl = "order"; +export const Product_BaseUrl = "product"; +export const System_BaseUrl = "system"; diff --git a/src/api/login.js b/src/api/login.js deleted file mode 100644 index b2f6603..0000000 --- a/src/api/login.js +++ /dev/null @@ -1,58 +0,0 @@ -import request from "@/utils/request"; - -export function login(data) { - return request({ - url: "auth/login", - method: "post", - data, - }); -} - -export function getInfo() { - return request({ - url: "auth/info", - method: "get", - }); -} - -export function changChildShop(data) { - return request({ - url: "/api/tbShopInfo/changChildShop", - method: "post", - data, - }); -} - -export function getCodeImg(header) { - return request({ - url: "auth/code", - method: "get", - }); -} -export function getqueryChildShop(params) { - return request({ - url: "api/tbShopInfo/queryChildShop", - method: "get", - params, - }); -} - -export function logout() { - return request({ - url: "auth/logout", - method: "delete", - }); -} - -/** - * 个人中心 修改密码 - * @param {*} data - * @returns - */ -export function updatePass(data) { - return request({ - url: "/api/users/updatePass", - method: "post", - data, - }); -} diff --git a/src/api/system/user.ts b/src/api/system/user.ts index 1b4489d..fcd4c8d 100644 --- a/src/api/system/user.ts +++ b/src/api/system/user.ts @@ -230,7 +230,7 @@ export interface UserInfo { roles: string[]; /** 权限 */ - perms: string[]; + promissionList: string[]; /** 店铺id */ shopId: number; diff --git a/src/api/system/version.ts b/src/api/system/version.ts new file mode 100644 index 0000000..b5df642 --- /dev/null +++ b/src/api/system/version.ts @@ -0,0 +1,52 @@ +import request from "@/utils/request"; +import { System_BaseUrl } from "@/api/config"; +const baseURL = System_BaseUrl + "/admin/version"; + +const VersionApi = { + getList() { + return request({ + url: `${baseURL}/list`, + method: "get", + }); + }, + delete(id: string) { + return request({ + url: `${baseURL}/id`, + method: "delete", + }); + }, +}; + +export default VersionApi; + +export interface getListResponse { + /** + * 版本 id + */ + id?: string; + /** + * 是否强制升级,0:不强制更新;1:强制更新 + */ + isForce?: number; + /** + * 更新内容 + */ + message?: string; + /** + * 渠道 ,pc 桌面端, manager_app 管理端, phone_book 电话机点餐 + */ + source?: string; + /** + * 类型,0 windows,1 安卓,2 iOS + */ + type?: string; + /** + * 下载地址 + */ + url?: string; + /** + * 版本号 + */ + version?: string; + [property: string]: any; +} diff --git a/src/components/CURD/PageContent.vue b/src/components/CURD/PageContent.vue index e8a408f..174913d 100644 --- a/src/components/CURD/PageContent.vue +++ b/src/components/CURD/PageContent.vue @@ -163,7 +163,9 @@ :preview-src-list="scope.row[col.prop]" :initial-index="index" :preview-teleported="true" - :style="`width: ${col.imageWidth ?? 40}px; height: ${col.imageHeight ?? 40}px`" + :style="`width: ${col.imageWidth ?? 40}px; height: ${ + col.imageHeight ?? 40 + }px`" /> @@ -923,8 +925,10 @@ function fetchPageData(formData: IObject = {}, isRestart = false) { if (props.contentConfig.parseData) { data = props.contentConfig.parseData(data); } - pagination.total = data.total; - pageData.value = data.list; + pagination.total = !props.contentConfig.resultListKey ? data.length : data.totalRow * 1; + pageData.value = props.contentConfig.resultListKey + ? data[props.contentConfig.resultListKey] + : data; } else { pageData.value = data; } diff --git a/src/components/CURD/PageForm.vue b/src/components/CURD/PageForm.vue index 199f404..87fea8e 100644 --- a/src/components/CURD/PageForm.vue +++ b/src/components/CURD/PageForm.vue @@ -21,9 +21,16 @@ + {{ item.type }} + + + +