diff --git a/.env.development b/.env.development index 61ac088..5da1377 100644 --- a/.env.development +++ b/.env.development @@ -11,15 +11,15 @@ ENV = 'development' # VITE_ADMIN_PROXY_PATH = http://123.157.250.162:8089/api/ # 测试线上 # VITE_ADMIN_PROXY_PATH = http://123.156.230.15:8089/api/ # 测试线上-过期 # VITE_ADMIN_PROXY_PATH = http://localhost:9999/ -# VITE_ADMIN_PROXY_PATH = https://dzc-test-1.fy.takin.cc # 邓-本地 -VITE_ADMIN_PROXY_PATH = https://www.pjzhhq.cn/api # 正式环境线上 +VITE_ADMIN_PROXY_PATH = https://dzc-test-1.fy.takin.cc # 邓-本地 +# VITE_ADMIN_PROXY_PATH = https://www.pjzhhq.cn/api # 正式环境线上 # 图片访问基础地址 # VITE_IMAGE_BASE_PATH = http://123.157.250.162:8089/api/ # 测试线上 # VITE_IMAGE_BASE_PATH = http://123.156.230.15:8089/api/ # 测试线上-过期 # VITE_IMAGE_BASE_PATH = http://localhost:9999 -# VITE_IMAGE_BASE_PATH = https://dzc-test-1.fy.takin.cc # 邓-本地 -VITE_IMAGE_BASE_PATH = https://www.pjzhhq.cn/api # 正式环境线上 +VITE_IMAGE_BASE_PATH = https://dzc-test-1.fy.takin.cc # 邓-本地 +# VITE_IMAGE_BASE_PATH = https://www.pjzhhq.cn/api # 正式环境线上 # 代码生成服务地址 VITE_GEN_PROXY_PATH = http://192.168.110.156:5003 diff --git a/.gitignore b/.gitignore index 30119dd..66c5276 100644 --- a/.gitignore +++ b/.gitignore @@ -45,4 +45,10 @@ coverage/ # 缓存文件 .cache/ -.parcel-cache/ \ No newline at end of file +.parcel-cache/ + +# AI 工具辅助目录 +.v2c/ +.video_agent/ +.mimosa/ +.zcode/ \ No newline at end of file diff --git a/src/api/hard/hard-invoice.ts b/src/api/hard/hard-invoice.ts index 7a9b8dc..1891790 100644 --- a/src/api/hard/hard-invoice.ts +++ b/src/api/hard/hard-invoice.ts @@ -1,10 +1,28 @@ import request from "/@/utils/request" -export function print(query?: Object) { +export function print(data?: Object) { return request({ url: "/hard/hard-invoice/print", - method: "get", - params: query, + method: "post", + data, + }) +} + +/** 失败任务按原打印序号重试。 */ +export function retry(data?: Object) { + return request({ + url: "/hard/hard-invoice/retry", + method: "post", + data, + }) +} + +/** 已打印兑换券创建下一打印序号并记录人工原因。 */ +export function reprint(data?: Object) { + return request({ + url: "/hard/hard-invoice/reprint", + method: "post", + data, }) } diff --git a/src/api/hard/hard-order.ts b/src/api/hard/hard-order.ts index df3be9b..2f627a8 100644 --- a/src/api/hard/hard-order.ts +++ b/src/api/hard/hard-order.ts @@ -1,5 +1,111 @@ import request from "/@/utils/request" +/** 订单详情中的单张识别证据,字段来自 HardOrderEvidenceImageVo。 */ +export interface HardOrderEvidenceImage { + /** 服务端证据主键。 */ + id: string | number + /** 证据类型稳定编码。 */ + evidenceType: "FACE_RECOGNITION" | "MENU_RECOGNITION" | string + /** 图片角色稳定编码。 */ + evidenceRole: "FACE_REFERENCE" | "FACE_LIVE" | "MENU_LIVE" | string + /** 图片角色中文名称。 */ + evidenceRoleName?: string + /** 同一角色下从零开始的图片序号。 */ + sequenceNo: number + /** 终端采集时间。 */ + capturedAt?: string + /** 人脸识别相似度快照。 */ + similarity?: number | string + /** 产生证据的设备主键。 */ + hardId?: string | number + /** 证据文件访问地址。 */ + imageUrl?: string + /** 证据状态稳定编码。 */ + status: "PENDING" | "AVAILABLE" | "UNAVAILABLE" | string + /** 永久缺失或复制失败原因。 */ + failureReason?: string +} + +/** 外卖订单的期望送达配置;非外卖或历史订单未记录时为空。 */ +export interface HardTakeOutAppointment { + /** 送达方式稳定编码:IMMEDIATE 表示立即送,SCHEDULED 表示预约时段。 */ + expectDeliveryType?: "IMMEDIATE" | "SCHEDULED" | string + /** 预约送达日期,仅预约时段模式使用。 */ + expectDeliveryDate?: string + /** 预约时段开始时间。 */ + expectDeliveryStart?: string + /** 预约时段结束时间。 */ + expectDeliveryEnd?: string + /** 立即送模式下计算出的预计送达时间点。 */ + expectArriveTime?: string +} + +/** 当前页面使用的订单详情扩展字段。 */ +export interface HardOrderDetail { + /** 订单主键。 */ + id: string | number + /** 设备名称。 */ + hardName?: string + /** 订单详情才返回的长期识别证据。 */ + evidenceImages?: HardOrderEvidenceImage[] + /** 外卖订单详情关联的期望送达配置。 */ + takeOutAppt?: HardTakeOutAppointment + /** 兼容订单详情其余历史字段。 */ + [key: string]: unknown +} + +/** 订单列表统计查询条件;字段与订单分页筛选保持一致。 */ +export type HardOrderStatisticsQuery = Record + +/** 订单按餐段汇总的统计,金额单位均为分。 */ +export interface HardOrderMealStatistics { + /** 餐段字典编码;历史订单未记录时为空。 */ + hourType?: string | null + /** 订单数。 */ + orderCount?: number + /** 购物车商品份数。 */ + productCount?: number + /** 商品总价。 */ + totalPrice?: number + /** 额外支付。 */ + extraPrice?: number + /** 配送费。 */ + deliveryPrice?: number + /** 实际支付。 */ + payPrice?: number + /** 已退款金额。 */ + refundPrice?: number + /** 订单实际金额,即实际支付减已退款。 */ + actualPrice?: number +} + +/** 订单统计通用汇总,金额单位均为分。 */ +export interface HardOrderStatisticsSummary { + orderCount?: number + productCount?: number + totalPrice?: number + extraPrice?: number + deliveryPrice?: number + payPrice?: number + refundPrice?: number + actualPrice?: number + meals?: HardOrderMealStatistics[] +} + +/** 订单按预计使用日期拆分的统计。 */ +export interface HardOrderDailyStatistics extends HardOrderStatisticsSummary { + date?: string +} + +/** 订单统计接口统一响应。 */ +export interface HardOrderStatisticsResponse { + data: { + total?: HardOrderStatisticsSummary + daily?: HardOrderDailyStatistics[] + } + msg?: string +} + /** * 离线订单手动支付 */ diff --git a/src/api/hard/hard-printer.ts b/src/api/hard/hard-printer.ts new file mode 100644 index 0000000..626babd --- /dev/null +++ b/src/api/hard/hard-printer.ts @@ -0,0 +1,62 @@ +import request from "/@/utils/request" + +/** 后端 Long/雪花主键在浏览器中必须以字符串传递,避免 Number 精度丢失。 */ +export type HardwareId = string + +/** 业务终端与无屏 USB 打印机资产的绑定详情。 */ +export interface HardPrinterBinding { + id?: HardwareId + sourceHardId: HardwareId + printerHardId: HardwareId + sourceHardName?: string + sourceHardType?: string + printerHardName?: string + printerConfig?: HardPrinterConfig +} + +/** 尔印 USB 打印机配置。VID/PID 尚未由业务终端回填时允许为空。 */ +export interface HardPrinterConfig { + id?: HardwareId + printerHardId: HardwareId + printerModel?: string + usbVendorId?: number + usbProductId?: number + paperWidth?: number + autoCut?: string + imageMode?: string +} + +/** 查询来源业务终端当前绑定的打印机资产。 */ +export function getBinding(hardId: HardwareId) { + return request({ url: `/hard/hard-printer/binding/${hardId}`, method: "get" }) +} + +/** 查询同商户同部门可绑定的空闲打印机资产。 */ +export function listAvailable(sourceHardId: HardwareId) { + return request({ url: "/hard/hard-printer/available", method: "get", params: { sourceHardId } }) +} + +/** 查询指定商户下已完成打印机绑定的业务终端。 */ +export function listBoundSources(merchantId: HardwareId) { + return request({ url: "/hard/hard-printer/sources", method: "get", params: { merchantId } }) +} + +/** 建立来源业务终端与 EY_PRINT 的一对一绑定。 */ +export function bind(data: { sourceHardId: HardwareId; printerHardId: HardwareId }) { + return request({ url: "/hard/hard-printer/binding", method: "post", data }) +} + +/** 解除来源业务终端绑定。 */ +export function unbind(sourceHardId: HardwareId) { + return request({ url: `/hard/hard-printer/binding/${sourceHardId}`, method: "delete" }) +} + +/** 查询无屏 USB 打印机资产配置。 */ +export function getConfig(printerHardId: HardwareId) { + return request({ url: `/hard/hard-printer/config/${printerHardId}`, method: "get" }) +} + +/** 保存无屏 USB 打印机资产配置。 */ +export function saveConfig(data: HardPrinterConfig) { + return request({ url: "/hard/hard-printer/config", method: "put", data }) +} diff --git a/src/api/hard/hard-terminal-log-file.ts b/src/api/hard/hard-terminal-log-file.ts new file mode 100644 index 0000000..caeea97 --- /dev/null +++ b/src/api/hard/hard-terminal-log-file.ts @@ -0,0 +1,98 @@ +import request from "/@/utils/request" + +export interface TerminalLogQuery { + current?: number + size?: number + hardId?: string | number + hardName?: string + uniqueCode?: string + merchantId?: string | number + deptId?: string | number + logDateStart?: string + logDateEnd?: string + uploadTimeStart?: string + uploadTimeEnd?: string +} + +export interface TerminalLogDevice { + hardId: string | number + hardName: string + uniqueCode: string + hardType?: string + merchantId?: string | number + deptId?: string | number + fileCount: number + latestUploadTime?: string +} + +export interface TerminalLogTreeNode { + key: string + label: string + relativePath: string + directory: boolean + fileId?: string | number + fileSize?: number + logDate?: string + uploadTime?: string + children?: TerminalLogTreeNode[] +} + +export interface TerminalLogPreview { + id: string | number + originalName: string + relativePath: string + content: string + lineCount: number + fileSize: number + truncated: boolean +} + +export function fetchList(query?: Object) { + return request({ + url: "/hard/hardTerminalLogFile/page", + method: "get", + params: query, + }) +} + +export function fetchDevicePage(query?: TerminalLogQuery) { + return request({ + url: "/hard/hardTerminalLogFile/device-page", + method: "get", + params: query, + }) +} + +export function fetchFileTree(query: TerminalLogQuery) { + return request({ + url: "/hard/hardTerminalLogFile/file-tree", + method: "get", + params: query, + }) +} + +export function fetchPreview(id: string | number) { + return request({ + url: `/hard/hardTerminalLogFile/${id}/preview`, + method: "get", + }) +} + +export function pullTerminalLog(hardId: string | number) { + return request({ + url: `/hard/hardTerminalLogFile/pull/${hardId}`, + method: "post", + }) +} + +export function downloadUrl(id: string | number) { + return `/hard/hardTerminalLogFile/${id}/download` +} + +export function downloadFile(id: string | number) { + return request({ + url: downloadUrl(id), + method: "get", + responseType: "blob", + }) +} diff --git a/src/api/hard/hard-xfj-log.ts b/src/api/hard/hard-xfj-log.ts new file mode 100644 index 0000000..a2e772e --- /dev/null +++ b/src/api/hard/hard-xfj-log.ts @@ -0,0 +1,40 @@ +import request from "/@/utils/request" + +export function fetchList(query?: Object) { + return request({ + url: "/hard/xfj-log/page", + method: "get", + params: query, + }) +} + +export function addObj(obj?: Object) { + return request({ + url: "/hard/xfj-log", + method: "post", + data: obj, + }) +} + +export function getObj(id?: string) { + return request({ + url: "/hard/xfj-log/" + id, + method: "get", + }) +} + +export function delObjs(ids?: Object) { + return request({ + url: "/hard/xfj-log", + method: "delete", + data: ids, + }) +} + +export function putObj(obj?: Object) { + return request({ + url: "/hard/xfj-log", + method: "put", + data: obj, + }) +} diff --git a/src/api/wallet/wallet-transaction.ts b/src/api/wallet/wallet-transaction.ts index 007514c..08a8859 100644 --- a/src/api/wallet/wallet-transaction.ts +++ b/src/api/wallet/wallet-transaction.ts @@ -1,5 +1,54 @@ import request from "/@/utils/request" +/** + * 流水备注的前后端统一字符上限,与 wallet_transaction.remark 字段长度保持一致。 + */ +export const WALLET_TRANSACTION_REMARK_MAX_LENGTH = 256 + +/** + * 钱包流水备注修改参数,只允许提交流水编号和备注。 + */ +export interface WalletTransactionRemarkParams { + /** 需要修改的钱包流水编号。 */ + id: string | number + /** 新备注;空字符串表示清除原备注。 */ + remark?: string +} + +/** + * 钱包流水信息修改参数,只允许提交流水编号、触发部门和创建时间。 + */ +export interface WalletTransactionUpdateInfoParams { + /** 需要修改的钱包流水编号。 */ + id: string | number + /** 流水触发事件归属的新部门编号。 */ + deptId: string | number + /** 流水新的创建时间,格式为 yyyy-MM-dd HH:mm:ss;用于更正流水归属统计周期。 */ + createTime: string +} + +/** + * 修改单笔钱包流水备注 + */ +export function updateRemark(data: WalletTransactionRemarkParams) { + return request({ + url: "/wallet/wallet-transaction/update-remark", + method: "put", + data, + }) +} + +/** + * 修改单笔钱包流水的归属部门和创建时间 + */ +export function updateInfo(data: WalletTransactionUpdateInfoParams) { + return request({ + url: "/wallet/wallet-transaction/update-info", + method: "put", + data, + }) +} + /** * 各自食堂退还记录 */ diff --git a/src/components/DraggableDepTree/index.vue b/src/components/DraggableDepTree/index.vue index c406799..ae0e629 100644 --- a/src/components/DraggableDepTree/index.vue +++ b/src/components/DraggableDepTree/index.vue @@ -1,25 +1,24 @@