diff --git a/commons/basic/Index.ets b/commons/basic/Index.ets index 5ae6c38..652da84 100644 --- a/commons/basic/Index.ets +++ b/commons/basic/Index.ets @@ -44,4 +44,8 @@ export { PositionSelectedSheet } from './src/main/ets/Views/PositionSelectedShee export { SpecialitySelectedSheet } from './src/main/ets/Views/SpecialitySelectedSheet' +export { EmptyViewComp } from './src/main/ets/Views/EmptyViewComp' +export { HdLoadingDialog } from './src/main/ets/components/HdLoadingDialog' + +export { EditUserDataItem } from './src/main/ets/Views/EditUserDataItem' diff --git a/commons/basic/src/main/ets/Views/EmptyViewComp.ets b/commons/basic/src/main/ets/Views/EmptyViewComp.ets new file mode 100644 index 0000000..4d36300 --- /dev/null +++ b/commons/basic/src/main/ets/Views/EmptyViewComp.ets @@ -0,0 +1,26 @@ +@Preview +@Component +export struct EmptyViewComp { + @Prop promptText: string = '暂无数据' // 默认提示文字 + @Prop imageSrc: ResourceStr = $r('app.media.zanwushuju') // 默认图片 + @Prop isVisibility:boolean = false; + + build() { + Stack({ alignContent: Alignment.Center }) { + Column() { + Image(this.imageSrc) + .width(100) + .height(120) + Text(this.promptText) + .fontSize(16) + .fontColor(Color.Gray) + } + .width('100%') + .height('100%') + .justifyContent(FlexAlign.Center) + } + .width('100%') + .height('100%') + .visibility(this.isVisibility?Visibility.Visible:Visibility.Hidden) + } +} diff --git a/commons/basic/src/main/ets/components/HdGrid.ets b/commons/basic/src/main/ets/components/HdGrid.ets index df4ade4..b4840ff 100644 --- a/commons/basic/src/main/ets/components/HdGrid.ets +++ b/commons/basic/src/main/ets/components/HdGrid.ets @@ -74,6 +74,14 @@ export struct HdGrid { this.listContent() this.loadMoreBuilder() } + .edgeEffect(EdgeEffect.Spring, { alwaysEnabled: true })//边缘弹性 + .onReachStart(()=>{ + if (this.loading || this.refreshing || this.finished) { + return; + } + this.loading = true + this.onLoad() + }) .columnsTemplate('1fr 1fr') .columnsGap(10) .rowsGap(10) diff --git a/commons/basic/src/main/ets/components/HdLoadingDialog.ets b/commons/basic/src/main/ets/components/HdLoadingDialog.ets new file mode 100644 index 0000000..ebaa230 --- /dev/null +++ b/commons/basic/src/main/ets/components/HdLoadingDialog.ets @@ -0,0 +1,25 @@ +@CustomDialog +export struct HdLoadingDialog { + @State + message: string = '' + controller: CustomDialogController + + build() { + Column({ space: 10 }) { + LoadingProgress() + .width(48) + .height(48) + .color('#ffffff') + if (this.message) { + Text(this.message) + .fontSize(14) + .fontColor('#ffffff') + } + } + .justifyContent(FlexAlign.Center) + .width(120) + .height(120) + .backgroundColor('rgba(0,0,0,0.6)') + .borderRadius(16) + } +} \ No newline at end of file diff --git a/commons/basic/src/main/resources/base/media/zanwushuju.png b/commons/basic/src/main/resources/base/media/zanwushuju.png new file mode 100644 index 0000000..3e28f2b Binary files /dev/null and b/commons/basic/src/main/resources/base/media/zanwushuju.png differ diff --git a/features/Home/src/main/ets/components/ListComp.ets b/features/Home/src/main/ets/components/ListComp.ets index 45f21ab..7799621 100644 --- a/features/Home/src/main/ets/components/ListComp.ets +++ b/features/Home/src/main/ets/components/ListComp.ets @@ -3,7 +3,7 @@ import { MeetingItemModel,MeetingModel,MeetingModels,ItemModel } from '../model/ import { HdList, HdListController,BasicConstant,hdHttp, HdResponse ,logger} from '@itcast/basic/Index' import { promptAction, router } from '@kit.ArkUI' import { BusinessError } from '@kit.BasicServicesKit'; - +import { HdLoadingDialog } from '@itcast/basic' import HashMap from '@ohos.util.HashMap'; @@ -22,6 +22,12 @@ export struct ListComp { timer: number = -1 hashMap: HashMap = new HashMap(); + dialog: CustomDialogController = new CustomDialogController({ + builder: HdLoadingDialog({ message: '加载中...' }), + customStyle: true, + alignment: DialogAlignment.Center + }) + onUpdate() { if (this.timer) clearTimeout(this.timer) this.timer = setTimeout(() => { @@ -38,12 +44,13 @@ export struct ListComp { initData(type:number) { + this.dialog.open() this.hashMap.clear(); this.hashMap.set('page', this.page+"") hdHttp.httpReq(BasicConstant.meetingListV2,this.hashMap).then(async (res: HdResponse) => { logger.info('Response meetingListV2'+res); let json:MeetingModels = JSON.parse(res+'') as MeetingModels; - + this.dialog.close(); if(type==0) { this.controller.refreshed() @@ -68,8 +75,7 @@ export struct ListComp { } }).catch((err: BusinessError) => { - - + this.dialog.close(); }) } getPosition() { diff --git a/features/Home/src/main/ets/components/ListCompBack.ets b/features/Home/src/main/ets/components/ListCompBack.ets index 2bfa9ec..ffa2889 100644 --- a/features/Home/src/main/ets/components/ListCompBack.ets +++ b/features/Home/src/main/ets/components/ListCompBack.ets @@ -3,12 +3,14 @@ import { MeetingItemModel,MeetingModel,MeetingModels,ItemModel } from '../model/ import { HdList, HdListController,BasicConstant,hdHttp, HdResponse ,logger} from '@itcast/basic/Index' import { promptAction, router } from '@kit.ArkUI' import { BusinessError } from '@kit.BasicServicesKit'; - +import { EmptyViewComp,HdLoadingDialog } from '@itcast/basic' import HashMap from '@ohos.util.HashMap'; @Component export struct ListCompBack { + @State isEmptyViewVisible: boolean = false; // 控制显隐的状态变量 + @Prop @Watch('onUpdate') year:string='' @@ -25,6 +27,12 @@ export struct ListCompBack { // timer: number = -1 hashMap: HashMap = new HashMap(); + dialog: CustomDialogController = new CustomDialogController({ + builder: HdLoadingDialog({ message: '加载中...' }), + customStyle: true, + alignment: DialogAlignment.Center + }) + onUpdate() { // console.info('Response onUpdate') // if (this.timer) clearTimeout(this.timer) @@ -43,6 +51,7 @@ export struct ListCompBack { initData(type:number) { + this.dialog.open() console.info('Response type'+type) this.hashMap.clear(); this.hashMap.set('page', this.page+"") @@ -59,7 +68,7 @@ export struct ListCompBack { hdHttp.httpReq(BasicConstant.meetingV2Video,this.hashMap).then(async (res: HdResponse) => { logger.info('Response meetingListV2'+res); let json:MeetingModels = JSON.parse(res+'') as MeetingModels; - + this.dialog.close(); if(type==0) { this.controller.refreshed() @@ -88,10 +97,18 @@ export struct ListCompBack { } else { this.page++ } - + if (this.list.length > 0) { + this.isEmptyViewVisible = false; + } else { + this.isEmptyViewVisible = true; + } }).catch((err: BusinessError) => { - - + this.dialog.close(); + if (this.list.length > 0) { + this.isEmptyViewVisible = false; + } else { + this.isEmptyViewVisible = true; + } }) } getPosition() { @@ -111,23 +128,25 @@ export struct ListCompBack { } build() { - HdList({ - lw: 1, - controller: this.controller, - onRefresh: () => { - this.onRefresh() - }, - onLoad: () => { - this.initData(1) - - } - }) { - ForEach(this.list, (item: MeetingItemModel) => { - ListItem() { - ItemCompBack({ item }) + if (this.isEmptyViewVisible){ + EmptyViewComp({promptText:'暂无回放',isVisibility:this.isEmptyViewVisible}) + .width('100%') + .height('100%') + } else { + HdList({ + lw: 1, + controller: this.controller, + onRefresh: () => { + this.onRefresh() + }, + onLoad: () => { + this.initData(1) } - }) + }) { + ForEach(this.list, (item: MeetingItemModel) => { + ListItem() { ItemCompBack({ item }) } + }) + } } - } } \ No newline at end of file diff --git a/features/Home/src/main/ets/components/ListCompPast.ets b/features/Home/src/main/ets/components/ListCompPast.ets index 8718220..204e300 100644 --- a/features/Home/src/main/ets/components/ListCompPast.ets +++ b/features/Home/src/main/ets/components/ListCompPast.ets @@ -3,7 +3,7 @@ import { MeetingItemModel,MeetingModel,MeetingModels,ItemModel } from '../model/ import { HdList, HdListController,BasicConstant,hdHttp, HdResponse ,logger} from '@itcast/basic/Index' import { promptAction, router } from '@kit.ArkUI' import { BusinessError } from '@kit.BasicServicesKit'; - +import { HdLoadingDialog } from '@itcast/basic' import HashMap from '@ohos.util.HashMap'; @@ -25,6 +25,13 @@ export struct ListCompPast { // timer: number = -1 hashMap: HashMap = new HashMap(); + + dialog: CustomDialogController = new CustomDialogController({ + builder: HdLoadingDialog({ message: '加载中...' }), + customStyle: true, + alignment: DialogAlignment.Center + }) + onUpdate() { // console.info('Response onUpdate') // if (this.timer) clearTimeout(this.timer) @@ -43,6 +50,7 @@ export struct ListCompPast { initData(type:number) { + this.dialog.open() console.info('Response type'+type) this.hashMap.clear(); this.hashMap.set('page', this.page+"") @@ -64,7 +72,7 @@ export struct ListCompPast { } this.hashMap.set('title','') hdHttp.httpReq(BasicConstant.meetingHistoryList,this.hashMap).then(async (res: HdResponse) => { - + this.dialog.close() let json:MeetingModels = JSON.parse(res+'') as MeetingModels; if(type==0) @@ -97,7 +105,7 @@ export struct ListCompPast { } }).catch((err: BusinessError) => { - + this.dialog.close() }) } diff --git a/features/Home/src/main/ets/components/ListCompVideo.ets b/features/Home/src/main/ets/components/ListCompVideo.ets index b63359e..6195b58 100644 --- a/features/Home/src/main/ets/components/ListCompVideo.ets +++ b/features/Home/src/main/ets/components/ListCompVideo.ets @@ -3,12 +3,14 @@ import { VideoMoreModel,VideoMore } from '../model/VideoMoreModel' import { HdGrid, HdListController,BasicConstant,hdHttp, HdResponse ,logger} from '@itcast/basic/Index' import { promptAction, router } from '@kit.ArkUI' import { BusinessError } from '@kit.BasicServicesKit'; - +import { HdLoadingDialog,EmptyViewComp } from '@itcast/basic' import HashMap from '@ohos.util.HashMap'; @Component export struct ListCompVideo { + @State isEmptyViewVisible: boolean = false; // 控制显隐的状态变量 + @Prop type_uuid:string='' @State @@ -20,23 +22,31 @@ export struct ListCompVideo { keyword: string = '' hashMap: HashMap = new HashMap(); + dialog: CustomDialogController = new CustomDialogController({ + builder: HdLoadingDialog({ message: '加载中...' }), + customStyle: true, + alignment: DialogAlignment.Center + }) + // aboutToAppear(): void { + // this.onRefresh(); + // } onRefresh() { this.page = 1 this.initData(0) - } initData(type:number) { + this.dialog.open() this.hashMap.clear(); this.hashMap.set('page', this.page+"") this.hashMap.set('typeUuid', this.type_uuid) hdHttp.httpReq(BasicConstant.videoByTypeNew,this.hashMap).then(async (res: HdResponse) => { logger.info('Response videoByTypeNew'+res); let json:VideoMoreModel = JSON.parse(res+'') as VideoMoreModel; - + this.dialog.close() if(type==0) { this.controller.refreshed() @@ -59,31 +69,43 @@ export struct ListCompVideo { } else { this.page++ } - + if (this.list.length>0) { + this.isEmptyViewVisible = false; + } else { + this.isEmptyViewVisible = true; + } }).catch((err: BusinessError) => { - - + this.dialog.close() + if (this.list.length>0) { + this.isEmptyViewVisible = false; + } else { + this.isEmptyViewVisible = true; + } }) } build() { - HdGrid({ - lw: 1, - controller: this.controller, - onRefresh: () => { - this.onRefresh() - }, - onLoad: () => { - this.initData(1) - - } - }) { - ForEach(this.list, (items: VideoMore) => { - GridItem() { - ItemCompVideo({ item:items }) + if (this.isEmptyViewVisible){ + EmptyViewComp({promptText:'暂无数据',isVisibility:this.isEmptyViewVisible}) + .width('100%') + .height('100%') + } else { + HdGrid({ + lw: 1, + controller: this.controller, + onRefresh: () => { + this.onRefresh() + }, + onLoad: () => { + this.initData(1) } - }) + }) { + ForEach(this.list, (items: VideoMore) => { + GridItem() { + ItemCompVideo({ item:items }) + } + }) + } } - } } \ No newline at end of file diff --git a/features/mypage/src/main/ets/view/EditUserDataComp.ets b/features/mypage/src/main/ets/view/EditUserDataComp.ets index e7682a9..86f92db 100644 --- a/features/mypage/src/main/ets/view/EditUserDataComp.ets +++ b/features/mypage/src/main/ets/view/EditUserDataComp.ets @@ -1,15 +1,8 @@ -import { hdHttp, HdResponse,BasicConstant,ExpertData, authStore, ChangeUtil } from '@itcast/basic' -import HashMap from '@ohos.util.HashMap' +import { hdHttp, HdResponse,BasicConstant,ExpertData, authStore, ChangeUtil,EditUserDataItem,PhotoActionSheet,DatePickerDialog,OfficeSelectedSheet,PositionSelectedSheet,SpecialitySelectedSheet } from '@itcast/basic' import { BusinessError } from '@kit.BasicServicesKit'; import { promptAction, router } from '@kit.ArkUI' -import { EditUserDataItem } from '@itcast/basic/src/main/ets/Views/EditUserDataItem' -import { PhotoActionSheet } from '@itcast/basic/src/main/ets/Views/PhotoActionSheet' -import { DatePickerDialog } from '@itcast/basic/src/main/ets/Views//DatePickerDialog' -import { OfficeSelectedSheet } from '@itcast/basic/src/main/ets/Views//OfficeSelectedSheet' -import { PositionSelectedSheet } from '@itcast/basic/src/main/ets/Views//PositionSelectedSheet' -import { SpecialitySelectedSheet } from '@itcast/basic/src/main/ets/Views//SpecialitySelectedSheet' -import { http } from '@kit.NetworkKit'; import { rcp } from '@kit.RemoteCommunicationKit'; + interface extraData { uuid: string } diff --git a/features/register/src/main/resources/base/media/icon_xiongpai_ws.png b/features/register/src/main/resources/base/media/icon_xiongpai_ws.png new file mode 100644 index 0000000..278f990 Binary files /dev/null and b/features/register/src/main/resources/base/media/icon_xiongpai_ws.png differ