保利威视介入前的代码提交

This commit is contained in:
XiuYun CHEN
2025-05-14 15:11:36 +08:00
parent 1a0b9e0436
commit 2c3f44b362
14 changed files with 786 additions and 200 deletions
+4
View File
@@ -1,3 +1,7 @@
export { HomePage } from './src/main/ets/pages/HomePage';
export { VideoPage } from './src/main/ets/pages/VideoPage';
export { PlayBack } from './src/main/ets/pages/PlayBack';
export { VideoMore } from './src/main/ets/pages/VideoMore'
@@ -7,6 +7,7 @@ export struct ItemComp {
item: MeetingItemModel = new MeetingItemModel({} as ItemModel)
@State timeColor:ResourceStr=$r('app.color.ee432f')
@State status:string=''
@State heightss:Length=247
aboutToAppear(): void {
this.getMeetingStatus()
}
@@ -25,45 +26,38 @@ export struct ItemComp {
{
Text().width(23).backgroundColor(this.timeColor).borderRadius(5).height('100%')
RelativeContainer(){
Column()
{
Text(this.item.title) .maxLines(2).fontSize(15).fontColor(Color.Black).textAlign(TextAlign.Start)
.textOverflow({ overflow: TextOverflow.Ellipsis }).id('title').width('100%')
RelativeContainer()
if(this.status!='')
{
Stack()
RelativeContainer()
{
Image(BasicConstant.urlHtml+this.item.liveimg).width('100%').height(162)
.objectFit(ImageFit.Fill)
if(this.status!=''&&this.status!='已结束'&&this.status!='回访中')
Stack()
{
Image($r('app.media.bofang')).width(40).height(40)
Image(BasicConstant.urlHtml+this.item.liveimg).width('100%').height(162)
.objectFit(ImageFit.Fill)
if(this.status!=''&&(this.status!='已结束'&&this.status!='回访中'))
{
Image($r('app.media.bofang')).width(40).height(40)
}
}
if(this.status!='')
{
Text(this.status) .fontSize(13).margin({top:5,right:5})
.fontColor(Color.White).padding({left:10,right:10,top:1,bottom:1})
.alignRules({
right: { anchor: "__container__", align: HorizontalAlign.End }
})
.border({ width:1, color:Color.White })
.borderRadius(30)
}
}
if(this.status!='')
{
Text(this.status) .fontSize(13).margin({top:5,right:5})
.fontColor(Color.White).padding({left:10,right:10,top:1,bottom:1})
.alignRules({
right: { anchor: "__container__", align: HorizontalAlign.End }
})
.border({ width:1, color:Color.White })
.borderRadius(30)
}
.height(162).backgroundColor(Color.Orange)
.margin({top:10,right:5}).clip(true).id('rr')
}
.height(162).backgroundColor(Color.Orange)
.margin({top:10,right:5}).clip(true).id('rr')
Row(){
Image($r('app.media.meetingtime')).width(13).height(13)
Text(this.getTime(this.item.begin_date,this.item.end_date)).fontSize(14)
@@ -75,15 +69,12 @@ export struct ItemComp {
}
.width('100%')
.margin({top:6})
}.height(247).justifyContent(FlexAlign.Center).margin({left:20,right:5})
}.height(this.heightss).justifyContent(FlexAlign.Center).margin({left:20,right:5})
}
.height('100%').clip(true)
.margin({left:20,right:5}).backgroundColor(Color.White)
Text(this.item.begin_date.substring(8,10)).width(20).height(20) .alignRules({
bottom: { anchor: "__container__", align:VerticalAlign.Center}
center: { anchor: "__container__", align:VerticalAlign.Center}
})
.margin({left:10})
.fontSize(14)
@@ -92,17 +83,16 @@ export struct ItemComp {
.backgroundColor(Color.White)
.borderRadius(20)
}.width('100%').height(247).clip(true).
}.width('100%').height(this.heightss).clip(true).
backgroundColor(Color.White).borderRadius(5)
}.backgroundColor($r('app.color.e4e4e4'))
.width('100%').padding({left:10,right:10,bottom:20}).clip(true)
.width('100%').padding({left:10,right:10}).clip(true)
}
getTime(str1:string, str2:string) {
if (str1.substring(0, 10)==(str2.substring(0, 10))) {
return str1.replaceAll("-", ".").substring(0, 10).toString();
}
@@ -146,6 +136,7 @@ return str1.replaceAll("-", ".").substring(0, 10)+"-"+str2.replaceAll("-", ".").
}
else
{
this.heightss=75
this.status=''
}
}
@@ -0,0 +1,166 @@
import { MeetingItemModel,ItemModel } from '../model/ItemModel'
import { hdHttp, HdResponse,BasicConstant } from '@itcast/basic'
import { BusinessError } from '@kit.BasicServicesKit';
import { router } from '@kit.ArkUI'
import promptAction from '@ohos.promptAction';
import { TypeuuidModel } from '../model/TypeuuidModel';
@Preview
@Component
export struct ItemCompBack {
item: MeetingItemModel = new MeetingItemModel({} as ItemModel)
@State timeColor:ResourceStr=$r('app.color.ee432f')
@State status:string=''
aboutToAppear(): void {
this.getMeetingStatus()
}
build() {
Column() {
Text().height(1).width('100%')
if(this.item.count==0)
{
Text(this.item.begin_date.substring(0, 4)
+ "年"
+ this.item.begin_date.substring(5, 7)
+ "月").fontSize(14).fontColor($r('app.color.333333')).height(35)
}
RelativeContainer()
{
Text().width(23).backgroundColor(this.timeColor).borderRadius(5).height('100%')
RelativeContainer(){
Column()
{
Text(this.item.title) .maxLines(2).fontSize(15).fontColor(Color.Black).textAlign(TextAlign.Start)
.textOverflow({ overflow: TextOverflow.Ellipsis }).id('title').width('100%')
RelativeContainer()
{
Stack()
{
Image(BasicConstant.urlHtml+this.item.liveimg).width('100%').height(162)
.objectFit(ImageFit.Fill)
Image($r('app.media.bofang')).width(40).height(40)
}
}
.height(162).backgroundColor(Color.Orange)
.margin({top:10,right:5}).clip(true).id('rr')
Row(){
Image($r('app.media.meetingtime')).width(13).height(13)
Text(this.getTime(this.item.begin_date,this.item.end_date)).fontSize(14)
.fontColor($r('app.color.999999')).margin({left:10})
Blank()
Image($r('app.media.meetinglocation')).width(15).height(15)
Text(this.item.location).fontSize(14)
.fontColor($r('app.color.999999')).margin({left:10})
}
.width('100%')
.margin({top:6})
}.height(247).justifyContent(FlexAlign.Center).margin({left:20,right:5})
}
.height('100%').clip(true)
.margin({left:20,right:5}).backgroundColor(Color.White)
Text(this.item.begin_date.substring(8,10)).width(20).height(20) .alignRules({
bottom: { anchor: "__container__", align:VerticalAlign.Center}
})
.margin({left:10})
.fontSize(14)
.fontColor(this.timeColor)
.textAlign(TextAlign.Center)
.backgroundColor(Color.White)
.borderRadius(20)
}.width('100%').height(247).clip(true).
backgroundColor(Color.White).borderRadius(5)
}.backgroundColor($r('app.color.e4e4e4'))
.width('100%').padding({left:10,right:10}).clip(true)
.onClick(() => {
this.getTypeUuidByName(this.item.title)
})
}
getTypeUuidByName(name:string)
{
hdHttp.post<string>(BasicConstant.getTypeUuidByName, {
name: name,
} as extraData).then(async (res: HdResponse<string>) => {
let json:TypeuuidModel = JSON.parse(res+'') as TypeuuidModel;
if(json.code == '1') {
if(json.type_uuid==null)
{
promptAction.showToast({ message: '该会议视频暂不支持回放' })
}
else
{
router.pushUrl({url:'pages/VideoPage/VideoMorePage',
params: { uuid: json.type_uuid ,title:this.item.title}})
}
} else {
promptAction.showToast({ message: json.message, duration: 1000 })
}
}).catch((err: BusinessError) => {
})
}
getTime(str1:string, str2:string) {
if (str1.substring(0, 10)==(str2.substring(0, 10))) {
return str1.replaceAll("-", ".").substring(0, 10).toString();
}
return str1.replaceAll("-", ".").substring(0, 10)+"-"+str2.replaceAll("-", ".").substring(0, 10)
}
getMeetingStatus()
{
if(this.item.count%4==0)
{
this.timeColor=$r('app.color.ee432f')
}
else if(this.item.count%4==1)
{
this.timeColor=$r('app.color.f9b928')
}
else if(this.item.count%4==2)
{
this.timeColor=$r('app.color.63ccc7')
}
else
{
this.timeColor=$r('app.color.99d750')
}
if('1'==this.item.status)
{
this.status='预告'
}
else if('2'==this.item.status)
{
this.status='直播中'
}
else if('3'==this.item.status)
{
this.status='已结束'
}
else if('4'==this.item.status)
{
this.status='回放中'
}
else
{
this.status=''
}
}
}
interface extraData {
name: string
}
@@ -0,0 +1,133 @@
import { ItemCompBack } from './ItemCompBack'
import { MeetingItemModel,MeetingModel,MeetingModels,ItemModel } from '../model/ItemModel'
import { HdList, HdListController,BasicConstant,hdHttp, HdResponse ,logger} from '@itcast/basic/Index'
import { promptAction, router } from '@kit.ArkUI'
import { BusinessError } from '@kit.BasicServicesKit';
import HashMap from '@ohos.util.HashMap';
@Component
export struct ListCompBack {
@Prop
@Watch('onUpdate')
year:string=''
@Prop
@Watch('onUpdate')
type:string=''
@State
list: ItemModel[] = []
controller = new HdListController()
@State
page: number = 1
@State
keyword: string = ''
// timer: number = -1
hashMap: HashMap<string, string> = new HashMap();
onUpdate() {
// console.info('Response onUpdate')
// if (this.timer) clearTimeout(this.timer)
// this.timer = setTimeout(() => {
// this.controller.reload()
this.onRefresh()
// }, 500)
}
onRefresh() {
this.page = 1
this.initData(0)
}
initData(type:number)
{
console.info('Response type'+type)
this.hashMap.clear();
this.hashMap.set('page', this.page+"")
if(this.year=='会议时间')
{
this.hashMap.set('year','')
}
else
{
this.hashMap.set('year',this.year)
}
this.hashMap.set('type',this.type)
hdHttp.httpReq<string>(BasicConstant.meetingV2Video,this.hashMap).then(async (res: HdResponse<string>) => {
logger.info('Response meetingListV2'+res);
let json:MeetingModels = JSON.parse(res+'') as MeetingModels;
if(type==0)
{
this.controller.refreshed()
}
else
{
this.controller.loaded()
}
// if(this.page==1&&json.data.list!=null&&json.data.list.length>0)
if(this.page==1)
{
this.list=[]
if(json.data!=null&&json.data.list!)
{
this.list = json.data.list
}
}
else if(this.page>1&&json.data!=null&&json.data.list!=null&&json.data.list.length>0)
{
this.list.push(...json.data.list)
}
this.getPosition()
if (this.page >= json.data.pages) {
this.controller.finished()
} else {
this.page++
}
}).catch((err: BusinessError) => {
})
}
getPosition() {
let DatasList:string[] = [];
let count = 0;
for (let i = 0; i <this.list.length; i++) {
if (!DatasList.includes(this.list[i].begin_date
.substring(0, 7))) {
DatasList.push(this.list[i].begin_date.substring(0, 7));
count = 0;
this.list[i].count=count;
} else {
count++;
this.list[i].count=count;
}
}
}
build() {
HdList({
lw: 1,
controller: this.controller,
onRefresh: () => {
this.onRefresh()
},
onLoad: () => {
this.initData(1)
}
}) {
ForEach(this.list, (item: MeetingItemModel) => {
ListItem() {
ItemCompBack({ item })
}
})
}
}
}
@@ -0,0 +1,6 @@
export interface TypeuuidModel
{
code:string;
type_uuid:string;
message:string;
}
@@ -0,0 +1,210 @@
import { HdNav } from '@itcast/basic'
import { ListCompBack } from '../components/ListCompBack'
@Entry
@Component
export struct PlayBack {
@State notselectImg: ResourceStr = $r('app.media.triangle_normal');
@State selectImg: ResourceStr = $r('app.media.triangle_green_theme');
@State yearWords:Array<string> =[]
@State typeWords:Array<string> =[]
@State timePosition:number=-1;
@State typePosition:number=-1;
@State tlistStatus:boolean=false;
@State typelistStatus:boolean=false;
@State timeText:string='会议时间';
@State typeText:string='会议类别';
@State type:string='';
onPageShow(): void {
console.log('VideoPage onPageShow!');
}
onPageHide(): void {
console.log('VideoPage onPageHide!');
}
aboutToAppear(): void {
this.getSelect()
}
build() {
Column()
{
HdNav({ title: '肝胆回放', showRightIcon: false, showLeftIcon: true})
Row() {
Blank()
.onClick(()=>{
this.tlistStatus=!this.tlistStatus
})
Row() {
if(this.timePosition!=-1)
{
Text(this.timeText).customStyle().fontColor($r('app.color.top_title'))
Image(this.selectImg).width(13).margin({left:5})
}
else {
Text(this.timeText).customStyle()
Image(this.notselectImg).width(13).margin({left:5})
}
}
.onClick(()=>{
this.tlistStatus=!this.tlistStatus
})
Blank()
.onClick(()=>{
this.tlistStatus=!this.tlistStatus
})
Text('|').customStyle()
Blank()
.onClick(()=>{
this.typelistStatus=!this.typelistStatus
})
Row() {
if(this.typePosition!=-1)
{
Text(this.typeText).customStyle().fontColor($r('app.color.top_title'))
Image(this.selectImg).width(13).margin({left:5})
}
else {
Text(this.typeText).customStyle()
Image(this.notselectImg).width(13).margin({left:5})
}
}
.onClick(()=>{
this.typelistStatus=!this.typelistStatus
})
Blank()
.onClick(()=>{
this.typelistStatus=!this.typelistStatus
})
}.width('100%').height(45)
Text().Line()
Stack({ }) {
ListCompBack({year:this.timeText,type:this.type}).padding({bottom:20}).backgroundColor($r('app.color.e4e4e4'))
if(this.tlistStatus)
{
List() {
ForEach(this.yearWords, (item: string,index:number) => {
ListItem() {
Column() {
if(this.timePosition==index)
{
Row()
{
Text(item).customStyle().height(40).fontColor($r('app.color.top_title'))
Blank()
Image($r('app.media.chose_card')).width(22).margin({right:25})
}
.width('100%')
.alignSelf(ItemAlign.Start)
Text().Line().backgroundColor($r('app.color.top_title'))
}
else
{
Text(item).customStyle().height(40).alignSelf(ItemAlign.Start)
Text().Line()
}
}.padding({left:22})
.width('100%')
.justifyContent(FlexAlign.Start)
.onClick(()=>{
this.timePosition=index
this.tlistStatus=false
this.timeText=item
})
}
}, (item: string) => JSON.stringify(item))
} .width('100%')
.height('100%').backgroundColor(Color.White)
}
if(this.typelistStatus)
{
List() {
ForEach(this.typeWords, (item: string,index:number) => {
ListItem() {
Column() {
if(this.typePosition==index)
{
Row()
{
Text(item).customStyle().height(40).fontColor($r('app.color.top_title'))
Blank()
Image($r('app.media.chose_card')).width(22).margin({right:25})
}
.width('100%')
.alignSelf(ItemAlign.Start)
Text().Line().backgroundColor($r('app.color.top_title'))
}
else
{
Text(item).customStyle().height(40).alignSelf(ItemAlign.Start)
Text().Line()
}
}.padding({left:22})
.width('100%')
.justifyContent(FlexAlign.Start)
.onClick(()=>{
this.typePosition=index
this.typelistStatus=false
this.typeText=item
if(index==4)
{
this.type='0'
}
else
{
this.type=index+1+''
}
})
}
}, (item: string) => JSON.stringify(item))
} .width('100%')
.height('100%').backgroundColor(Color.White)
}
}
}
.width('100%')
.height('100%')
.padding({bottom:50})
}
getSelect()
{
let year:number= new Date().getFullYear();
for(let i =year;i>=2016;i--){
this.yearWords.push(i+"");
}
this.typeWords.push('全国会议')
this.typeWords.push('省级会议')
this.typeWords.push('市级会议')
this.typeWords.push('国际会议')
this.typeWords.push('其他会议')
}
}
@Extend(Text)
function customStyle() {
.fontColor($r('app.color.tab_text_nor'))
.fontSize(13)
}
@Extend(Text)
function Line() {
.height(0.5).width('100%').backgroundColor($r('app.color.devider_line'))
}
@@ -0,0 +1,19 @@
@Component
export struct VideoMore {
@State message: string = 'Hello World';
build() {
Row() {
Column() {
Text(this.message)
.fontSize($r('app.float.page_text_font_size'))
.fontWeight(FontWeight.Bold)
.onClick(() => {
this.message = 'Welcome';
})
}
.width('100%')
}
.height('100%')
}
}
+21 -4
View File
@@ -1,6 +1,7 @@
import { HdNav } from '@itcast/basic'
import { ListComp } from '../components/ListComp'
import { ListComp } from '../components/ListComp'
import { router } from '@kit.ArkUI'
@Entry
@Component
export struct VideoPage {
@@ -12,6 +13,7 @@ export struct VideoPage {
@State tlistStatus:boolean=false;
@State timeText:string='会议时间';
onPageShow(): void {
console.log('VideoPage onPageShow!');
}
@@ -30,6 +32,9 @@ export struct VideoPage {
HdNav({ title: '肝胆会议', showRightIcon: false, showLeftIcon: true,showRightText:true,rightText:'扫一扫' })
Row() {
Blank()
.onClick(()=>{
this.tlistStatus=!this.tlistStatus
})
Row() {
if(this.timePosition!=-1)
{
@@ -46,6 +51,9 @@ export struct VideoPage {
this.tlistStatus=!this.tlistStatus
})
Blank()
.onClick(()=>{
this.tlistStatus=!this.tlistStatus
})
Text('|').customStyle()
Blank()
Row() {
@@ -55,15 +63,24 @@ export struct VideoPage {
Blank()
Text('|').customStyle()
Blank()
.onClick(() => {
router.pushUrl({url:'pages/VideoPage/PlayBackPage'})
})
Row() {
Text('会议直播').customStyle()
Text('会议回放').customStyle()
}
.onClick(() => {
router.pushUrl({url:'pages/VideoPage/PlayBackPage'})
})
Blank()
.onClick(() => {
router.pushUrl({url:'pages/VideoPage/PlayBackPage'})
})
}.width('100%').height(45)
Text().Line()
Stack({ }) {
ListComp()
ListComp().padding({bottom:20}).backgroundColor($r('app.color.e4e4e4'))
if(this.tlistStatus)
{
List() {
@@ -97,6 +114,7 @@ export struct VideoPage {
this.timePosition=index
this.tlistStatus=false
this.timeText=item
})
}
}, (item: string) => JSON.stringify(item))
@@ -119,7 +137,6 @@ export struct VideoPage {
let month:number= new Date().getMonth()+1;
for(let i =month;i<13;i++){
this.monthWords.push(i+"月");
}
for(let i =1;i<month;i++){
this.monthWords.push(i+"月");