
回复
公司详情页面是用户查看公司详细信息的重要功能模块。以下是一个完整的公司详情页面实现,包括公司信息的展示、轮播图、标签切换和点击跳转等功能。
import { httpRequestGet } from '../Utils/HttpUtils';
import prompt from '@ohos.promptAction';
import { router } from '@kit.ArkUI';
import { CopanyDetailModel, CopanyDetailModelData } from '../model/CopanyDetailModel';
@Entry
@Component
struct Companydetails {
@State images: ImageCount[] = [
{ url: "https://www.itying.com/images/flutter/1.png", count: 1 },
{ url: "https://www.itying.com/images/flutter/2.png", count: 2 },
{ url: "https://www.itying.com/images/flutter/3.png", count: 3 },
];
@State tabs: Tabtext[] = [
{ text: "公司概况" },
{ text: "热招职位" }
];
private controller: TabsController = new TabsController();
private swipercontroller: SwiperController = new SwiperController();
private detailsurl: string = "****";
@State companyDetailModelData: CopanyDetailModelData | null | undefined = new CopanyDetailModelData();
async aboutToAppear() {
const params = router.getParams() as ParamsObj;
console.log("params id " + params.id);
let networlurl = this.detailsurl + "id=" + params.id;
httpRequestGet(networlurl).then((data) => {
let companydetailsmodel: CopanyDetailModel = JSON.parse(data.toString());
this.companyDetailModelData = companydetailsmodel.data;
});
}
Companydetails
的公司详情组件。@State
装饰器定义了images
和tabs
,用于存储轮播图的图片信息和标签信息。controller
和swipercontroller
,用于控制标签切换和轮播图。detailsurl
,用于存储获取公司详情的接口URL。aboutToAppear
生命周期函数中,获取路由传过来的公司ID,拼接接口URL,调用httpRequestGet
方法获取公司详情数据,并更新companyDetailModelData
。build() {
Column() {
RelativeContainer() {
Image($r('app.media.bossback'))
.width(20).height(20)
.alignRules({
center: { 'anchor': '__container__', 'align': VerticalAlign.Center },
left: { 'anchor': '__container__', 'align': HorizontalAlign.Start }
}).margin({ left: 5 })
.onClick(() => {
router.back();
});
Text("公司详情")
.fontSize(25)
.fontColor(Color.White)
.fontWeight(800)
.alignRules({
center: { 'anchor': '__container__', 'align': VerticalAlign.Center },
middle: { 'anchor': '__container__', 'align': HorizontalAlign.Center }
});
}.height(50)
.width("100%")
.backgroundColor(Color.Green);
Swiper(this.swipercontroller) {
ForEach(this.images, (item: ImageCount) => {
Column() {
Image(item?.url)
.objectFit(ImageFit.Fill)
.height("100%")
.width("100%")
.borderRadius(5);
}.height("100%")
.width("100%");
});
}.height("25%")
.width("100%")
.autoPlay(true)
.interval(1000)
.loop(true)
.duration(1)
.indicator(true);
Column() {
Row() {
Image(this.companyDetailModelData?.logo).width(70).height(70)
.objectFit(ImageFit.Contain).borderRadius(10).margin({ left: 10 });
Column() {
Text(this.companyDetailModelData?.name).fontSize(18).fontColor(Color.Black)
.margin({ top: 5 })
.fontWeight(FontWeight.Medium);
Text(this.companyDetailModelData?.location)
.fontSize(15).fontColor(Color.Black)
.margin({ top: 10 });
Text(`${this.companyDetailModelData?.type}·${this.companyDetailModelData?.size}·${this.companyDetailModelData?.employee}`)
.fontSize(15).fontColor(Color.Black)
.fontWeight(FontWeight.Medium)
.margin({ top: 10 });
}.justifyContent(FlexAlign.Start)
.alignItems(HorizontalAlign.Start)
.margin({ left: 10 });
}.justifyContent(FlexAlign.Start)
.height("90%")
.width("100%");
Line().width("100%").height(1).backgroundColor(Color.Black);
}.height(120)
.width("100%");
Column() {
Tabs({ barPosition: BarPosition.Start, controller: this.controller }) {
ForEach(this.tabs, (item: Tabtext, index: number) => {
if (index == 0) {
TabContent() {
this.companyOverview();
}.tabBar(item.text).align(Alignment.Top);
} else if (index == 1) {
TabContent() {
this.hotjobvacanies();
}.tabBar(item.text).align(Alignment.Top);
}
});
};
}.width("100%")
.height("100%");
}.width("100%")
.height("100%");
}
Column
和RelativeContainer
布局组件,构建公司详情页面的UI。Swiper
组件实现轮播图,展示公司图片。Column
和Row
布局组件,展示公司基本信息,包括公司logo、名称、位置、类型、规模和员工数量。Tabs
和ForEach
组件,实现标签切换功能,展示公司概况和热招职位。@Builder
private companyOverview() {
RelativeContainer() {
Row() {
Text("公司介绍:").fontSize(20).fontWeight(800).fontColor(Color.Black);
Text(this.companyDetailModelData?.inc).fontSize(15)
.margin({ left: 10, right: 10 })
.maxLines(2);
}.height("100%")
.width("100%")
.justifyContent(FlexAlign.Start);
}.margin({ left: 10, top: 7, right: 19 })
.height(60)
.width("100%")
.margin({ left: 5, right: 5 });
}
companyOverview
方法,用于构建公司概况的UI。@Builder
private hotjobvacanies() {
RelativeContainer() {
Text("敬请期待")
.fontSize(25)
.fontWeight(FontWeight.Medium)
.fontColor(Color.Black)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
});
}.width("100%")
.height(60);
}
hotjobvacanies
方法,用于构建热招职位的UI。export class CopanyDetailModel {
msg?: string = "";
code?: number = 0;
data?: CopanyDetailModelData = new CopanyDetailModelData();
}
export class CopanyDetailModelData {
id?: number = 0;
logo?: string = "";
name?: string = "";
location?: string = "";
type?: string = "";
size?: string = "";
employee?: string = "";
hot?: string = "";
count?: string = "";
inc?: string = "";
}
通过上述代码,我们实现了一个完整的公司详情页面,包括公司信息的展示、轮播图、标签切换和点击跳转等功能。用户可以通过公司详情页面查看公司的详细信息,并通过标签切换查看公司概况和热招职位。