Explorar el Código

feat: 修复部分细节, 更改了部分页面的路由跳转逻辑

YuJing hace 1 mes
padre
commit
f47a2ddb1c

+ 1 - 1
commons/basic/src/main/ets/components/DiaLogComp/DiaLogComp.ets

@@ -59,7 +59,7 @@ export struct DiaLogComp {
         Text(this.param.message)
           .fontSize(15)
           .lineHeight(18)
-          .fontColor('#C1C1C1')
+          .fontColor('#ff706b6b')
           .margin({ bottom: 18 })
           .textAlign(TextAlign.Center)
       }

+ 2 - 2
commons/basic/src/main/ets/utils/arkts/utils/YTRouter.ets

@@ -158,8 +158,8 @@ class YTRouter extends NavPathStack {
   }
 
   // 添加地址页面
-  router2IncreaseAddressPage(){
-    this.pushPathByName('IncreaseAddressPage', null)
+  router2IncreaseAddressPage(status: number, callBack?: Callback<PopInfo>){
+    this.pushPathByName('IncreaseAddressPage', status, callBack)
   }
 
   // 预约还书页面

+ 2 - 1
features/feature/src/main/ets/components/AddressComp.ets

@@ -1,4 +1,5 @@
 import { DiaLogSheetControl, YTAvoid, yTRouter } from 'basic';
+import { AddressAddPageState } from '../model/EnumState';
 import { CustomTextStyle } from '../style/CustomTextStyle';
 import { AddressItemComp } from './AddressItemComp';
 import { buttonComp } from './BuilderIndex';
@@ -14,7 +15,7 @@ export struct AddressComp{
 
   // 前往添加地址页面
   IncreaseAddressPage(){
-    yTRouter.router2IncreaseAddressPage()
+    yTRouter.router2IncreaseAddressPage(AddressAddPageState.ADD)
   }
 
   build() {

+ 1 - 0
features/feature/src/main/ets/components/AddressItemComp.ets

@@ -66,5 +66,6 @@ export struct AddressItemComp {
     .borderRadius(this.needBorder ? 8 : 0)
     .border(this.needBorder ? {width: 2, color: '#FF000000'} : null)
     .padding({left: 16, right: 16, top: 18, bottom: 18})
+    .onClick(() => { this.click() })
   }
 }

+ 12 - 0
features/feature/src/main/ets/model/OrderStatus.ets → features/feature/src/main/ets/model/EnumState.ets

@@ -37,6 +37,18 @@ export enum OrderStatus {
 }
 
 
+/**
+ * 地址添加页面状态枚举
+ */
+export enum AddressAddPageState {
+  /** 新增地址 */
+  ADD,
+  /** 修改地址 */
+  EDIT,
+  /** 添加并使用 */
+  ADD_AND_USE,
+}
+
 
 
 

+ 6 - 1
features/feature/src/main/ets/pages/Address/AddressManagementPage.ets

@@ -1,6 +1,7 @@
 import { RouterPage, YTAvoid, YTHeader, yTRouter } from 'basic'
 import { AddressItemComp } from '../../components/AddressItemComp'
 import { buttonComp } from '../../components/BuilderIndex'
+import { AddressAddPageState } from '../../model/EnumState'
 import { CustomTextStyle } from '../../style/CustomTextStyle'
 
 @ComponentV2
@@ -9,7 +10,11 @@ struct AddressManagementPage {
   @Local safeBottom: number = AppStorage.get(YTAvoid.SAFE_BOTTOM_KEY) as number
 
   editAddress(index?: number){
-    yTRouter.router2IncreaseAddressPage()
+    if(index){
+      yTRouter.router2IncreaseAddressPage(AddressAddPageState.EDIT)
+    } else {
+      yTRouter.router2IncreaseAddressPage(AddressAddPageState.ADD)
+    }
   }
 
   build() {

+ 31 - 8
features/feature/src/main/ets/pages/Address/IncreaseAddressPage.ets

@@ -1,12 +1,12 @@
 import { BasicType, DiaLogSheetControl, YTAvoid, YTHeader, yTRouter } from 'basic'
 import { buttonComp } from '../../components/BuilderIndex'
 import { ChooseAddress } from '../../components/chooseAddress'
+import { AddressAddPageState } from '../../model/EnumState'
 import { CustomTextStyle } from '../../style/CustomTextStyle'
 
 @ComponentV2
 struct IncreaseAddressPage {
-  @Param @Require index?: number
-  @Param originIsUse: boolean = false
+  @Param pageState: AddressAddPageState = AddressAddPageState.ADD
 
   @Local safeBottom: number = AppStorage.get(YTAvoid.SAFE_BOTTOM_KEY) as number
   // 是否设置为默认地址
@@ -34,17 +34,32 @@ struct IncreaseAddressPage {
   }
 
   // 保存地址
-  saveAddress() {}
+  saveAddress() {
+
+  }
 
   // 设置为默认地址
   setDefaultAddress() {
     this.isDefaultAddress = !this.isDefaultAddress
   }
 
+  // 删除地址
+  deleteAddress() {
+    yTRouter.router2CenterDialog({
+      param: { text: '提示', message: '是否删除地址' }
+    }, (info) => {
+      let ans = info.result as number
+      if(ans == 1) {
+        // todo 执行删除的逻辑
+        yTRouter.pop()
+      }
+    })
+  }
+
   build() {
     NavDestination() {
       Column() {
-        YTHeader({ defaultStyle: { title: this.index ? '编辑地址' : '增添地址' }, bgc: Color.White })
+        YTHeader({ defaultStyle: { title: this.pageState == AddressAddPageState.EDIT ? '编辑地址' : '增添地址' }, bgc: Color.White })
 
         Column({space: 16}){
           Column(){
@@ -112,13 +127,21 @@ struct IncreaseAddressPage {
         .layoutWeight(1)
         .padding({left: 16, right: 16, top: 22})
 
-        Row(){
-          buttonComp(this.originIsUse ? '保存并使用' : '保存地址', '100%', 10,
+        Column({space: 16}){
+          if(this.pageState == AddressAddPageState.EDIT) {
+            Text('删除地址')
+              .attributeModifier(new CustomTextStyle({size: 16, weight: 500, color: '#ff7c7a7a'}))
+              .onClick(() => { this.deleteAddress() })
+          }
+
+          buttonComp(this.pageState == AddressAddPageState.ADD_AND_USE ? '保存并使用' : '保存地址',
+            '100%', 10,
             new CustomTextStyle({size: 18, weight: 500}),
             () =>{ this.saveAddress() })
         }
         .width('100%')
         .backgroundColor(Color.White)
+        .alignItems(HorizontalAlign.Center)
         .padding({left: 16, right: 16, top: 10, bottom: this.safeBottom})
       }
       .width('100%')
@@ -136,6 +159,6 @@ struct IncreaseAddressPage {
 }
 
 @Builder
-function IncreaseAddressBuilder(_: string, index?: number) {
-  IncreaseAddressPage({index: index})
+function IncreaseAddressBuilder(_: string, state?: AddressAddPageState) {
+  IncreaseAddressPage({pageState: state})
 }

+ 11 - 2
features/feature/src/main/ets/pages/BookList/BookItemDetailPage.ets

@@ -44,16 +44,18 @@ struct BookItemDetailPage {
                 Column(){
                   Text(){
                     Span('借阅价 ')
-                    Span(`0.1`)
+                    Span(this.vm.book.rentPerDay)
                       .fontSize(24)
                     Span(' 元/天')
                   }.attributeModifier(new CustomTextStyle({size: 14, weight: 500}))
 
-                  Text(`市场售价:¥${this.vm.book.marketPrice}`)
+                  Text(`市场售价:¥${Number(this.vm.book.marketPrice).toFixed(2)}`)
                     .borderRadius(9)
                     .backgroundColor(Color.White)
                     .padding({left: 10, right: 10, top: 2, bottom: 2})
                 }
+                .width("100%")
+                .alignItems(HorizontalAlign.Start)
 
                 Column({space: 3}){
                   Image($r('[basic].media.icon_book'))
@@ -246,6 +248,13 @@ struct BookItemDetailPage {
             .backgroundColor('#FECF2F')
             .padding({top: 10, bottom: 10})
             .justifyContent(FlexAlign.Center)
+            .onClick(() => {
+              if(index == 0) {
+                this.vm.addToBag()
+              } else {
+                this.vm.borrow()
+              }
+            })
           })
         }
         .shadow({ color: '#f1f1f1', radius: 5, offsetY: -5})

+ 11 - 1
features/feature/src/main/ets/pages/Order/OrderDetailPage.ets

@@ -4,6 +4,7 @@ import { AddressComp } from '../../components/AddressComp'
 import { AddressItemComp } from '../../components/AddressItemComp'
 import { buttonComp } from '../../components/BuilderIndex'
 import { Address } from '../../model/Address'
+import { AddressAddPageState } from '../../model/EnumState'
 import { OrderValidationData } from '../../model/OrderModelIndex'
 import { CustomTextStyle } from '../../style/CustomTextStyle'
 
@@ -38,6 +39,15 @@ struct OrderDetailPage {
 
   // 打开选择地址弹窗
   openAddressDialog() {
+    if(true){
+      yTRouter.router2IncreaseAddressPage(AddressAddPageState.ADD_AND_USE, (info) => {
+        let ans = info.result
+        console.log(`ans = ${JSON.stringify(ans)}`)
+      })
+      return
+    }
+
+
     // todo 有 地址数据 打开弹窗, 没有进入地址管理页面添加页面添加地址
     let control: DiaLogSheetControl = new DiaLogSheetControl(this.getUIContext())
     yTRouter.router2BottomDialog({
@@ -54,7 +64,7 @@ struct OrderDetailPage {
     }
     // yTRouter.router2BorrowAnsPage()
 
-    this.orderValidation.orderPrice = this.totalPrice
+    this.orderValidation.orderPrice = Number.parseFloat(this.totalPrice.toFixed(2))
     this.orderValidation.remark = this.remark
     OrderApi.checkOrder(this.orderValidation)
   }

+ 1 - 1
features/feature/src/main/ets/pages/Order/OrderManagementPage.ets

@@ -1,6 +1,6 @@
 import { RouterPage, YTHeader, yTRouter } from 'basic';
 import { buttonComp } from '../../components/BuilderIndex';
-import { OrderStatus } from '../../model/OrderStatus';
+import { OrderStatus } from '../../model/EnumState';
 import { CustomTextStyle } from '../../style/CustomTextStyle';
 import { OrderManagementViewModel } from '../viewModel/OrderManagementViewModel';
 

+ 20 - 2
features/feature/src/main/ets/pages/viewModel/BookItemDetailViewModel.ets

@@ -1,5 +1,7 @@
-import { BookItem, YTAvoid } from "basic";
+import { BookItem, IBestToast, YTAvoid } from "basic";
 import { webview } from "@kit.ArkWeb";
+import { bookListApi } from "../../apis/BookListApi";
+import { OrderApi } from "../../apis/OrderApi";
 
 @ObservedV2
 export class BookItemDetailViewModel{
@@ -10,7 +12,23 @@ export class BookItemDetailViewModel{
   @Trace webHeight: Length = '300'
 
   webController: WebviewController = new webview.WebviewController()
+
   constructor(book: BookItem) {
-    this.book = book;
+    this.book = new BookItem(book);
+  }
+
+  // 立刻借阅
+  borrow() {
+    // todo 逻辑相对比较复杂,在 view 中处理完成后再 copy 过来
+  }
+
+  // 加入书包
+  async addToBag() {
+    if(this.book.schoolbagFlag == '1') {
+      IBestToast.show('已加入书包')
+      return
+    }
+    await OrderApi.addBookToBag(this.book.id!)
+    this.book.schoolbagFlag = '1'
   }
 }

+ 2 - 3
features/feature/src/main/ets/view/ThirdView.ets

@@ -1,4 +1,4 @@
-import { BookItem } from 'basic';
+import { BookItem, yTRouter } from 'basic';
 import { tagItemComp } from '../components/BuilderIndex';
 import { CustomTextStyle } from '../style/CustomTextStyle';
 import { ThirdViewModel } from './viewModel/ThirdViewModel';
@@ -219,8 +219,7 @@ export struct ThirdView {
               .alignItems(HorizontalAlign.Start)
             }
             .onClick(() => {
-              // todo 暂时注释
-              // yTRouter.router2BookItemDetailPage()
+              yTRouter.router2BookItemDetailPage(item)
             })
           }
           .width("100%")