OrderDetailViewModel.ets 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import { BasicType, BookItem, IBestToast, YTAvoid, yTRouter } from "basic"
  2. import { Address } from "../../model/Address"
  3. import { OrderStatus } from "../../model/EnumState"
  4. import { OrderDetailData } from "../../model/OrderModelIndex"
  5. import { OrderDetailModel } from "../../model/RouterModel"
  6. import { pasteboard } from "@kit.BasicServicesKit"
  7. @ObservedV2
  8. export class OrderDetailViewModel{
  9. @Trace safeBottom: number = AppStorage.get(YTAvoid.SAFE_BOTTOM_KEY) as number
  10. // 地址
  11. @Trace address: Address = {}
  12. // 书籍列表
  13. @Trace bookList: Array<BookItem> = []
  14. // 小计
  15. @Trace totalPrice: string = ''
  16. // 支付方式
  17. @Trace payWay: number = 0
  18. // 是否展开实付
  19. @Trace isExpand: boolean = false
  20. // 订单信息遍历
  21. @Trace forEach1: Array<BasicType> = []
  22. @Trace forEach2: Array<BasicType> = []
  23. @Trace orderInfo: OrderDetailData = {}
  24. // 订单状态
  25. @Trace status: OrderStatus
  26. // 支付方式遍历
  27. payWayList: Array<BasicType> = [
  28. { text: '微信支付', src: $r('[basic].media.icon_wx'), color: '#20BB06'},
  29. { text: '支付宝支付', src: $r('[basic].media.ali_pay'), color: '#06B4FD'},
  30. ]
  31. constructor(param: OrderDetailModel) {
  32. this.forEach1 = [
  33. { text: '租借期限', message: '30天' },
  34. { text: '租借时间', message: '快递签收日起30天' },
  35. { text: '租借价格', message: `¥${param.orderInfo.bookPrice}` },
  36. { text: '往返运费', message: `¥${param.orderInfo.postFee}` },
  37. { text: '租借期限', message: '30天' },
  38. ]
  39. this.forEach2 = [
  40. { text: '订单号', message: param.orderInfo.id, type: 'Copy' },
  41. { text: '下单时间', message: '2025-11-14 16:05', type: 'Text' },
  42. { text: '支付时间', message: '2025-11-14 16:05', type: 'Text' },
  43. { text: '支付方式', message: '2025-11-14 16:05', type: 'Text' },
  44. { text: '备注', message: param.orderInfo.remark ?? '无', type: 'Text' },
  45. ]
  46. this.address = {
  47. address: param.orderInfo.address,
  48. userName: param.orderInfo.userName,
  49. phone: param.orderInfo.phone,
  50. region: param.orderInfo.region,
  51. }
  52. this.bookList = param.orderInfo.bookList ?? []
  53. this.totalPrice = param.orderInfo.orderPrice!
  54. this.status = param.status
  55. }
  56. onCopyOrderNumber(order: string){
  57. // 1. 创建 PasteData 对象
  58. let pasteData = pasteboard.createPlainTextData(order);
  59. // 2. 获取系统剪贴板实例
  60. let systemPasteboard = pasteboard.getSystemPasteboard();
  61. // 3. 同步写入数据
  62. try {
  63. systemPasteboard.setDataSync(pasteData);
  64. console.log('写入剪贴板成功');
  65. IBestToast.show('复制成功')
  66. } catch (error) {
  67. console.error('写入失败,错误码: ' + error.code);
  68. IBestToast.show('复制失败,请重试')
  69. }
  70. }
  71. // 返回对应文案
  72. getOrderStatusText(status: OrderStatus): BasicType {
  73. switch (status) {
  74. case OrderStatus.PENDING_PAYMENT:
  75. // todo 待支付的需要完善
  76. return { text: '待支付' };
  77. case OrderStatus.BORROWING:
  78. return { text: '借阅中', message: '敬请享受阅读的快乐!阅读完成,请预约快递上门取书' };
  79. case OrderStatus.PENDING_OUTBOUND:
  80. return { text: '待出库', message: '图书正在检测消毒,尽快发货~' };
  81. case OrderStatus.PENDING_PICKUP:
  82. // todo 待取书的需要完善
  83. return { text: '待取书' };
  84. case OrderStatus.CLOSED:
  85. return { text: '订单关闭', message: '期待您的下一次借阅!' };
  86. case OrderStatus.BORROWING_COMPLETED:
  87. return { text: '借阅完成', message: '期待您的下一次借阅!' };
  88. case OrderStatus.PENDING_ACCEPTANCE:
  89. return { text: '待验收', message: '收到书后,工作人员将尽快验收入库' };
  90. case OrderStatus.PENDING_RECEIPT:
  91. // todo 待收书的需要完善
  92. return { text: '待收书' };
  93. default:
  94. return { text: '', message: '' };
  95. }
  96. }
  97. // 切换支付方式
  98. changePayWay(index: number){
  99. this.payWay = index
  100. }
  101. /** 前往联系客服 */
  102. gotoCustomerService() {}
  103. }