import { BasicType, BookItem, IBestToast, YTAvoid, yTRouter } from "basic" import { Address } from "../../model/Address" import { OrderStatus } from "../../model/EnumState" import { OrderDetailData } from "../../model/OrderModelIndex" import { OrderDetailModel } from "../../model/RouterModel" import { pasteboard } from "@kit.BasicServicesKit" @ObservedV2 export class OrderDetailViewModel{ @Trace safeBottom: number = AppStorage.get(YTAvoid.SAFE_BOTTOM_KEY) as number // 地址 @Trace address: Address = {} // 书籍列表 @Trace bookList: Array = [] // 小计 @Trace totalPrice: string = '' // 支付方式 @Trace payWay: number = 0 // 是否展开实付 @Trace isExpand: boolean = false // 订单信息遍历 @Trace forEach1: Array = [] @Trace forEach2: Array = [] @Trace orderInfo: OrderDetailData = {} // 订单状态 @Trace status: OrderStatus // 支付方式遍历 payWayList: Array = [ { text: '微信支付', src: $r('[basic].media.icon_wx'), color: '#20BB06'}, { text: '支付宝支付', src: $r('[basic].media.ali_pay'), color: '#06B4FD'}, ] constructor(param: OrderDetailModel) { this.forEach1 = [ { text: '租借期限', message: '30天' }, { text: '租借时间', message: '快递签收日起30天' }, { text: '租借价格', message: `¥${param.orderInfo.bookPrice}` }, { text: '往返运费', message: `¥${param.orderInfo.postFee}` }, { text: '租借期限', message: '30天' }, ] this.forEach2 = [ { text: '订单号', message: param.orderInfo.id, type: 'Copy' }, { text: '下单时间', message: '2025-11-14 16:05', type: 'Text' }, { text: '支付时间', message: '2025-11-14 16:05', type: 'Text' }, { text: '支付方式', message: '2025-11-14 16:05', type: 'Text' }, { text: '备注', message: param.orderInfo.remark ?? '无', type: 'Text' }, ] this.address = { address: param.orderInfo.address, userName: param.orderInfo.userName, phone: param.orderInfo.phone, region: param.orderInfo.region, } this.bookList = param.orderInfo.bookList ?? [] this.totalPrice = param.orderInfo.orderPrice! this.status = param.status } onCopyOrderNumber(order: string){ // 1. 创建 PasteData 对象 let pasteData = pasteboard.createPlainTextData(order); // 2. 获取系统剪贴板实例 let systemPasteboard = pasteboard.getSystemPasteboard(); // 3. 同步写入数据 try { systemPasteboard.setDataSync(pasteData); console.log('写入剪贴板成功'); IBestToast.show('复制成功') } catch (error) { console.error('写入失败,错误码: ' + error.code); IBestToast.show('复制失败,请重试') } } // 返回对应文案 getOrderStatusText(status: OrderStatus): BasicType { switch (status) { case OrderStatus.PENDING_PAYMENT: // todo 待支付的需要完善 return { text: '待支付' }; case OrderStatus.BORROWING: return { text: '借阅中', message: '敬请享受阅读的快乐!阅读完成,请预约快递上门取书' }; case OrderStatus.PENDING_OUTBOUND: return { text: '待出库', message: '图书正在检测消毒,尽快发货~' }; case OrderStatus.PENDING_PICKUP: // todo 待取书的需要完善 return { text: '待取书' }; case OrderStatus.CLOSED: return { text: '订单关闭', message: '期待您的下一次借阅!' }; case OrderStatus.BORROWING_COMPLETED: return { text: '借阅完成', message: '期待您的下一次借阅!' }; case OrderStatus.PENDING_ACCEPTANCE: return { text: '待验收', message: '收到书后,工作人员将尽快验收入库' }; case OrderStatus.PENDING_RECEIPT: // todo 待收书的需要完善 return { text: '待收书' }; default: return { text: '', message: '' }; } } // 切换支付方式 changePayWay(index: number){ this.payWay = index } /** 前往联系客服 */ gotoCustomerService() {} }