|
@@ -1,6 +1,8 @@
|
|
|
-import { RouterPage, YTHeader, yTRouter } from 'basic';
|
|
|
|
|
|
|
+import { BookItem, RouterPage, YTHeader, yTRouter } from 'basic';
|
|
|
import { buttonComp } from '../../components/BuilderIndex';
|
|
import { buttonComp } from '../../components/BuilderIndex';
|
|
|
|
|
+import { ytEmptyComp } from '../../components/ytComp/ytEmptyComp';
|
|
|
import { OrderStatus } from '../../model/EnumState';
|
|
import { OrderStatus } from '../../model/EnumState';
|
|
|
|
|
+import { OrderDetailData } from '../../model/OrderModelIndex';
|
|
|
import { CustomTextStyle } from '../../style/CustomTextStyle';
|
|
import { CustomTextStyle } from '../../style/CustomTextStyle';
|
|
|
import { OrderManagementViewModel } from '../viewModel/OrderManagementViewModel';
|
|
import { OrderManagementViewModel } from '../viewModel/OrderManagementViewModel';
|
|
|
|
|
|
|
@@ -10,7 +12,16 @@ import { OrderManagementViewModel } from '../viewModel/OrderManagementViewModel'
|
|
|
@ComponentV2
|
|
@ComponentV2
|
|
|
@RouterPage
|
|
@RouterPage
|
|
|
struct OrderManagementPage {
|
|
struct OrderManagementPage {
|
|
|
- @Param @Require vm: OrderManagementViewModel;
|
|
|
|
|
|
|
+ @Param @Require targetIndex: number;
|
|
|
|
|
+
|
|
|
|
|
+ vm: OrderManagementViewModel = new OrderManagementViewModel();
|
|
|
|
|
+ aboutToAppear(): void {
|
|
|
|
|
+ if(this.targetIndex != undefined) {
|
|
|
|
|
+ this.vm.changeCategory(this.targetIndex)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.vm.changeCategory(0)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
build() {
|
|
build() {
|
|
|
NavDestination() {
|
|
NavDestination() {
|
|
@@ -20,6 +31,9 @@ struct OrderManagementPage {
|
|
|
bgc: Color.White,
|
|
bgc: Color.White,
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 分类列表
|
|
|
|
|
+ * */
|
|
|
List({space: 22}){
|
|
List({space: 22}){
|
|
|
ForEach(this.vm.categoryList, (item: string, index) => {
|
|
ForEach(this.vm.categoryList, (item: string, index) => {
|
|
|
ListItem(){
|
|
ListItem(){
|
|
@@ -28,7 +42,9 @@ struct OrderManagementPage {
|
|
|
.zIndex(99)
|
|
.zIndex(99)
|
|
|
.width(50)
|
|
.width(50)
|
|
|
.textAlign(TextAlign.Center)
|
|
.textAlign(TextAlign.Center)
|
|
|
- .onClick(() => { this.vm.changeCategory(index) })
|
|
|
|
|
|
|
+ .onClick(() => {
|
|
|
|
|
+ this.vm.tabControl.changeIndex(index)
|
|
|
|
|
+ })
|
|
|
.fontSize(16)
|
|
.fontSize(16)
|
|
|
.fontWeight(600)
|
|
.fontWeight(600)
|
|
|
.fontColor(this.vm.categoryIndex == index ? '#FF111111' : '#FF777777')
|
|
.fontColor(this.vm.categoryIndex == index ? '#FF111111' : '#FF777777')
|
|
@@ -53,12 +69,18 @@ struct OrderManagementPage {
|
|
|
.borderRadius({bottomLeft: 16, bottomRight: 16})
|
|
.borderRadius({bottomLeft: 16, bottomRight: 16})
|
|
|
.padding({top: 10, left: 16, right: 16, bottom: 10})
|
|
.padding({top: 10, left: 16, right: 16, bottom: 10})
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 数据源
|
|
|
|
|
+ * */
|
|
|
Column(){
|
|
Column(){
|
|
|
- Tabs({controller: this.vm.tabControl, index: this.vm.categoryIndex}){
|
|
|
|
|
|
|
+ Tabs({controller: this.vm.tabControl}){
|
|
|
ForEach(this.vm.categoryList, (item: string, index) => {
|
|
ForEach(this.vm.categoryList, (item: string, index) => {
|
|
|
TabContent(){
|
|
TabContent(){
|
|
|
Refresh({refreshing: this.vm.isRefresh}){
|
|
Refresh({refreshing: this.vm.isRefresh}){
|
|
|
if((this.vm.isRefresh && this.vm.isFirst) || this.vm.categoryIndex != index) {
|
|
if((this.vm.isRefresh && this.vm.isFirst) || this.vm.categoryIndex != index) {
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 骨架列表
|
|
|
|
|
+ */
|
|
|
Column({space: 16}){
|
|
Column({space: 16}){
|
|
|
ForEach(['', '', ''], (item: string, index) => {
|
|
ForEach(['', '', ''], (item: string, index) => {
|
|
|
ListItem(){
|
|
ListItem(){
|
|
@@ -69,20 +91,31 @@ struct OrderManagementPage {
|
|
|
.justifyContent(FlexAlign.Start)
|
|
.justifyContent(FlexAlign.Start)
|
|
|
.padding({left: 15, right: 15, top: 14})
|
|
.padding({left: 15, right: 15, top: 14})
|
|
|
} else {
|
|
} else {
|
|
|
- List({space: 16}){
|
|
|
|
|
- ListItem()
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 订单组件列表
|
|
|
|
|
+ */
|
|
|
|
|
+ ytEmptyComp({
|
|
|
|
|
+ dataSource: this.vm.dataSource,
|
|
|
|
|
+ keyStr: '暂无借阅信息~',
|
|
|
|
|
+ buttonKey: "去借阅",
|
|
|
|
|
+ clickButton: () => { yTRouter.changeIndex(1) }
|
|
|
|
|
+ }){
|
|
|
|
|
+ List({space: 16}){
|
|
|
|
|
+ ListItem()
|
|
|
|
|
|
|
|
- ForEach(this.vm.dataSource, (item: string, index) => {
|
|
|
|
|
- ListItem(){
|
|
|
|
|
- OrderItemComp({orderStatus: index+1})
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ ForEach(this.vm.dataSource, (item: OrderDetailData, index) => {
|
|
|
|
|
+ ListItem(){
|
|
|
|
|
+ OrderItemComp({orderData: item})
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ .width("100%")
|
|
|
|
|
+ .height('100%')
|
|
|
|
|
+ .scrollBar(BarState.Off)
|
|
|
|
|
+ .edgeEffect(EdgeEffect.None)
|
|
|
|
|
+ .padding({left: 15, right: 15, bottom: this.vm.safeBottom})
|
|
|
|
|
+ .onReachEnd(() => { this.vm.onReachEnd() })
|
|
|
}
|
|
}
|
|
|
- .width("100%")
|
|
|
|
|
- .height('100%')
|
|
|
|
|
- .scrollBar(BarState.Off)
|
|
|
|
|
- .padding({left: 15, right: 15, bottom: this.vm.safeBottom})
|
|
|
|
|
- .onReachEnd(() => { this.vm.onReachEnd() })
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
.padding(0)
|
|
.padding(0)
|
|
@@ -96,6 +129,13 @@ struct OrderManagementPage {
|
|
|
.onChange((index: number) => {
|
|
.onChange((index: number) => {
|
|
|
this.vm.changeCategory(index)
|
|
this.vm.changeCategory(index)
|
|
|
})
|
|
})
|
|
|
|
|
+ .onAnimationStart((index: number, target: number) => {
|
|
|
|
|
+ if(index == target) return
|
|
|
|
|
+ this.vm.changeCategory(target)
|
|
|
|
|
+ })
|
|
|
|
|
+ .onAppear(() => {
|
|
|
|
|
+ this.vm.tabControl.changeIndex(this.vm.categoryIndex)
|
|
|
|
|
+ })
|
|
|
}
|
|
}
|
|
|
.width('100%')
|
|
.width('100%')
|
|
|
.layoutWeight(1)
|
|
.layoutWeight(1)
|
|
@@ -110,14 +150,20 @@ struct OrderManagementPage {
|
|
|
|
|
|
|
|
@Builder
|
|
@Builder
|
|
|
function OrderManagementBuilder(_: string, targetIndex?: number) {
|
|
function OrderManagementBuilder(_: string, targetIndex?: number) {
|
|
|
- OrderManagementPage({vm: new OrderManagementViewModel(targetIndex)})
|
|
|
|
|
|
|
+ OrderManagementPage({ targetIndex })
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+// 订单结构
|
|
|
@ComponentV2
|
|
@ComponentV2
|
|
|
struct OrderItemComp{
|
|
struct OrderItemComp{
|
|
|
- @Param orderStatus: OrderStatus = OrderStatus.PENDING_PAYMENT;
|
|
|
|
|
|
|
+ @Param @Require orderData: OrderDetailData
|
|
|
|
|
+ @Local orderStatus: OrderStatus = OrderStatus.PENDING_PAYMENT;
|
|
|
|
|
+
|
|
|
|
|
+ aboutToAppear(): void {
|
|
|
|
|
+ this.orderStatus = Number.parseInt(this.orderData.statusCode!)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
getOrderStatusDes(status: OrderStatus): string {
|
|
getOrderStatusDes(status: OrderStatus): string {
|
|
|
switch (status) {
|
|
switch (status) {
|
|
@@ -186,13 +232,14 @@ struct OrderItemComp{
|
|
|
.margin({top: 14, bottom: 16})
|
|
.margin({top: 14, bottom: 16})
|
|
|
|
|
|
|
|
List({space: 15}){
|
|
List({space: 15}){
|
|
|
- ForEach(new Array(8).fill(''), (item: string, index) => {
|
|
|
|
|
|
|
+ ForEach(this.orderData.bookList, (item: BookItem, index) => {
|
|
|
ListItem(){
|
|
ListItem(){
|
|
|
- Image($r('[basic].media.png_defaultBook'))
|
|
|
|
|
|
|
+ Image(item?.coverUrl)
|
|
|
.width(63)
|
|
.width(63)
|
|
|
.height(81)
|
|
.height(81)
|
|
|
.borderRadius(6)
|
|
.borderRadius(6)
|
|
|
.backgroundColor('#FFFECF2F')
|
|
.backgroundColor('#FFFECF2F')
|
|
|
|
|
+ .alt($r('[basic].media.png_defaultBook'))
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
}.width("100%").height(81)
|
|
}.width("100%").height(81)
|