tangweijie e8d78a1aea feat: 新增AI监控仪表盘前端页面和功能
- 新增AI监控仪表盘入口页面(DashEntry.vue)
- 新增AI监控相关API(ai-dash-entry)
- 新增导入对话框组件(ImportDialog)
- 各模块页面新增导入按钮和功能
- 优化国际化配置和路由权限

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-21 00:19:30 +08:00

107 lines
3.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import request from '@/config/axios'
/** 消费订单分页参数 */
export interface ConsumptionPageParams {
pageNo: number
pageSize: number
prisonerNo?: string
prisonerName?: string // 罪犯姓名
prisonAreaId?: number // 监区ID
prisonCellId?: number // 监室ID
type?: number // 类型1-购物 2-餐饮 3-医疗 4-通讯 5-其他
status?: number // 状态1-成功 2-失败
totalAmount?: number // 订单总金额
balance?: number // 账户余额
orderNo?: string // 订单号
tradeTime?: string[] // 交易时间范围
createTime?: string[] // 创建时间范围
}
/** 消费明细信息 */
export interface ConsumptionDetail {
id?: number // 明细ID
consumptionId?: number // 消费订单ID
goodsName: string // 商品名称
goodsCode?: string // 商品编码
goodsPrice: number // 商品单价
goodsCount: number // 商品数量
subtotal?: number // 小计金额
}
/** 消费订单信息 */
export interface Consumption {
id: number // 订单ID
prisonerId?: number // 罪犯ID
prisonerNo?: string // 罪犯编号
prisonerName?: string // 罪犯姓名
prisonAreaId?: number // 监区ID
prisonAreaName?: string // 监区名称
prisonCellId?: number // 监室ID
prisonCellName?: string // 监室名称
orderNo?: string // 订单号
type?: number // 类型1-购物 2-餐饮 3-医疗 4-通讯 5-其他
totalAmount?: number // 订单总金额
balance: number // 账户余额
tradeTime?: string // 交易时间
status?: number // 状态1-成功 2-失败
remark: string // 备注
details?: ConsumptionDetail[] // 消费明细列表
createTime?: Date // 创建时间
updateTime?: Date // 更新时间
}
// 消费订单 API
export const ConsumptionApi = {
// 查询消费订单分页
getConsumptionPage: async (params: ConsumptionPageParams) => {
return await request.get({ url: `/prison/consumption/page`, params })
},
// 查询消费订单详情
getConsumption: async (id: number) => {
return await request.get({ url: `/prison/consumption/get`, params: { id } })
},
// 新增消费订单
createConsumption: async (data: Consumption) => {
return await request.post({ url: `/prison/consumption/create`, data })
},
// 修改消费订单
updateConsumption: async (data: Consumption) => {
return await request.put({ url: `/prison/consumption/update`, data })
},
// 删除消费订单
deleteConsumption: async (id: number) => {
return await request.delete({ url: `/prison/consumption/delete`, params: { id } })
},
/** 批量删除消费订单 */
deleteConsumptionList: async (ids: number[]) => {
return await request.delete({ url: `/prison/consumption/delete-list?ids=${ids.join(',')}` })
},
// 查询消费明细列表
getConsumptionDetailList: async (consumptionId: number) => {
return await request.get({ url: `/prison/consumption/detail-list`, params: { consumptionId } })
},
// 导出消费订单 Excel
exportConsumption: async (params: ConsumptionPageParams) => {
return await request.download({ url: `/prison/consumption/export-excel`, params })
},
// 获取导入模板
getImportTemplate: async () => {
return await request.download({ url: `/prison/consumption/get-import-template` })
},
// 导入消费记录
importConsumption: async (file: File) => {
const formData = new FormData()
formData.append('file', file)
return await request.upload({ url: `/prison/consumption/import`, data: formData })
}
}