提交 e9bcdefd 作者: 翁进城
......@@ -14,15 +14,13 @@
}
.logo {
width: 113px;
height: 35px;
width: 90px;
height: 48px;
background-image: url(./assets/logo.png);
background-size: 100% 100%;
margin-right: 40px;
}
.tabs {
width: 800px;
height: 100%;
margin-right: 58px;
:global .ant-tabs-nav {
......@@ -41,7 +39,7 @@
.ant-tabs-tab-btn {
font-size: 14px;
color: #424242;
width: 90px;
width: 100px;
text-align: center;
font-family: MicrosoftYaHei;
font-weight: bold;
......
......@@ -44,7 +44,6 @@ export default function NavHeader() {
console.log("currentHash", currentPath);
const onChange = (key: string) => {
console.log(key);
router.push(key);
};
......
......@@ -23,9 +23,14 @@ export default function Left(props: leftBoxProps) {
})}
</Box>
}
{leftWaterfallDom?.columns.map((item) => {
if (item.noFor) {
return item.element;
}
return null;
})}
{
<WaterfallBox index={boxIndex} leftcontentstyle={leftcontentstyle}>
{ <div className="left-columns">
{leftWaterfallDom?.columns.map((item) => {
if (!item.noFor && item.type === "left") {
......
components/footer/assets/logo.png

15.5 KB | W: | H:

components/footer/assets/logo.png

6.4 KB | W: | H:

components/footer/assets/logo.png
components/footer/assets/logo.png
components/footer/assets/logo.png
components/footer/assets/logo.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -12,8 +12,8 @@
}
.logo {
width: 150px;
height: 47px;
width: 90px;
height: 48px;
background: url("./assets/logo.png") no-repeat;
background-size: 100% 100%;
margin-right: 155px;
......
import React from "react";
import Layout from "~/components/layout";
import { Box } from "./styled";
import { Button } from "antd";
import { useRouter } from "next/router";
export default function FlyingDetail() {
const router = useRouter();
return (
<Layout>
<Box>
<div className="box-top">
<div className="left">科比特行业课程1111</div>
<div className="right">
<Button
type="primary"
className="btn"
onClick={() =>
router.push(`/flyingHandService/examination/${router.query.id}`)
}
>
去考试
</Button>
</div>
</div>
<div className="box-body">
<video className="body-video" src="" />
</div>
</Box>
</Layout>
);
}
import styled from "styled-components";
export default function Style() {
return <></>;
}
export const Box = styled.div`
box-sizing: border-box;
.box-top {
display: flex;
justify-content: space-between;
align-items: center;
.left {
width: 190px;
height: 25px;
font-size: 20px;
font-family: MicrosoftYaHeiUI-Bold, MicrosoftYaHeiUI;
font-weight: bold;
color: #000000;
line-height: 25px;
}
.right {
.btn {
width: 180px;
height: 50px;
background: linear-gradient(135deg, #278eff 0%, #0052da 100%);
border-radius: 6px;
font-size: 20px;
font-family: MicrosoftYaHeiUI-Bold, MicrosoftYaHeiUI;
font-weight: bold;
color: #ffffff;
&:hover {
opacity: 0.8;
}
}
}
}
.box-body {
margin-top: 20px;
width: 1200px;
height: 675px;
background: #111111;
.body-video {
width: 1200px;
height: 675px;
}
}
`;
import React from "react";
import Layout from "~/components/layout";
import { Box } from "./styled";
import { Tabs } from "antd";
import type { TabsProps } from "antd";
export default function ExaminationDateil() {
const onChange = (key: string) => {
console.log(key);
};
const items: TabsProps["items"] = [
{
key: "1",
label: `Tab 1`,
children: `Content of Tab Pane 1`,
},
{
key: "2",
label: `Tab 2`,
children: `Content of Tab Pane 2`,
},
];
return (
<Layout>
<Box>
<Tabs defaultActiveKey="1" items={items} onChange={onChange} />
</Box>
</Layout>
);
}
import styled from "styled-components";
export default function Style() {
return <></>;
}
export const Box = styled.div`
box-sizing: border-box;
`;
import React, { useEffect, useState } from "react";
import { Box } from "./styled";
import Image from "next/image";
import { Button, Select, Space, Pagination, Cascader } from "antd";
import { Button, Select, Space, Pagination, Cascader, Modal } from "antd";
import Layout from "~/components/layout";
import ContentBox from "~/components/contentBox";
import api, { Flying, SkillsType, RegionResp } from "./api";
......@@ -31,7 +31,11 @@ export default function FlyingHandService() {
const leftDom = (item: Flying) => {
return (
<div className="item" key={item.id}>
<div
className="item"
key={item.id}
onClick={() => router.push(`/flyingHandService/detail/${item.id}`)}
>
<div className="item-top">
<Image
src={`${item.videoUrl}?x-oss-process=video/snapshot,t_1000,m_fast`}
......@@ -173,6 +177,21 @@ export default function FlyingHandService() {
}
}, [router]);
//报名
const [isModalOpen, setIsModalOpen] = useState(false);
const [loading, setLoading] = useState(false);
const handleOk = () => {
setLoading(true);
setTimeout(() => {
setLoading(false);
setIsModalOpen(false);
}, 3000);
};
const handleCancel = () => {
setIsModalOpen(false);
};
return (
<Layout>
<Box>
......@@ -221,10 +240,37 @@ export default function FlyingHandService() {
/>
</Space>
</div>
<Button type="primary" className="btn">
<Button
type="primary"
className="btn"
onClick={() => setIsModalOpen(true)}
>
报名学习课程
</Button>
</div>
<Modal
wrapClassName="application"
title={<div className="title">报名学习课程</div>}
open={isModalOpen}
onCancel={handleCancel}
getContainer={false}
footer={[
<Button
style={{ width: "100%" }}
key="submit"
type="primary"
loading={loading}
onClick={handleOk}
>
立即报名
</Button>,
]}
>
<p>Some contents...</p>
<p>Some contents...</p>
<p>Some contents...</p>
</Modal>
<ContentBox
boxIndex={4}
leftcontentstyle={{
......
......@@ -135,4 +135,15 @@ export const Box = styled.div`
.pagination-page {
text-align: right;
}
.application {
.title {
text-align: center;
height: 23px;
font-size: 18px;
font-family: MicrosoftYaHeiUI-Bold, MicrosoftYaHeiUI;
font-weight: bold;
color: #000000;
line-height: 23px;
}
}
`;
......@@ -55,6 +55,7 @@ export const equipmentLeasingApi = {
export interface AppType {
id: number;
name: string;
appName: string;
createTime: string;
type: string;
......@@ -64,13 +65,14 @@ export interface IndustryType {
id: number;
industryIcon: string;
name: string;
shortName: null;
industryType: null;
shortName: string;
industryType: string;
propagate1: string;
propagate2: string;
image: string;
video: string;
type: string;
appName: string;
}
export const jobServicesApi = {
......@@ -95,8 +97,9 @@ export const mallApi = {
};
export interface SkillsType {
name: string;
type: string;
id: 1;
id: number;
skillsName: string;
}
......@@ -128,19 +131,19 @@ export interface NewsTenderType {
}
export interface ListPageNewsInfoResp {
pageNo: 1;
pageSize: 10;
pageNo: number;
pageSize: number;
list: Array<NewsPageType>;
totalCount: 0;
totalPage: 0;
totalCount: number;
totalPage: number;
}
export interface ListTenderNewsInfoResp {
pageNo: 1;
pageSize: 10;
pageNo: number;
pageSize: number;
list: Array<NewsTenderType>;
totalCount: 0;
totalPage: 0;
totalCount: number;
totalPage: number;
}
interface ListPageNewsInfoParams {
......
import React, { Component, useEffect, useState } from "react";
import { Box } from "./styled";
import api from "./api";
import icon from "./assets/icon.png";
let Map: any;
export default function MapComponent() {
const [mapItem, setMapItem] = useState(0);
......@@ -41,11 +42,27 @@ export default function MapComponent() {
const addEntiy = (AMap: any, lan: any, lon: any, dizhi: string) => {
if (!AMap) return;
// 创建 AMap.Icon 实例:
const Icon = new AMap.Icon({
size: new AMap.Size(40, 50), // 图标尺寸
image: "//webapi.amap.com/theme/v1.3/images/newpc/way_btn2.png", // Icon的图像
imageOffset: new AMap.Pixel(0, -60), // 图像相对展示区域的偏移量,适于雪碧图等
imageSize: new AMap.Size(40, 50), // 根据所设置的大小拉伸或压缩图片
});
// 将 Icon 实例添加到 marker 上:
const marker = new AMap.Marker({
map: Map,
position: [lan, lon],
position: new AMap.LngLat(lan, lon),
offset: new AMap.Pixel(-10, -10),
icon: Icon, // 添加 Icon 实例
title: dizhi,
zoom: 9,
map: Map,
});
// const marker = new AMap.Marker({
// map: Map,
// position: [lan, lon],
// title: dizhi,
// });
// //鼠标点击marker弹出自定义的信息窗体
// AMap.Event.addListener(marker, "click", function () {
// infoWindow.open(map, marker.getPosition());
......
......@@ -46,4 +46,9 @@ export const Box = styled.div`
color: #ff552d;
}
}
#container {
padding: 0px;
margin: 0px;
width: 100%;
}
`;
......@@ -22,8 +22,8 @@ export const Box = styled.div`
justify-content: center;
align-items: center;
&:not(.slick-active) > button {
width: 8px;
height: 8px;
width: 6px;
height: 6px;
border-radius: 50%;
}
& > button {
......
......@@ -7,14 +7,6 @@ import ContentBox from "~/components/contentBox";
import RotationChart from "./components/rotationChart";
import Map from "./components/map";
import tubiao from "./assets/tubiao.png";
import fuwu from "./assets/fuwu.png";
import xiaoshou from "./assets/xiaoshou.png";
import baoxian from "./assets/baoxian.png";
import peixun from "./assets/peixun.png";
import gongju from "./assets/gongju.png";
import xwbg from "./assets/xwbg.png";
const icon = [tubiao, fuwu, xiaoshou, baoxian, peixun, gongju];
import {
FilterOptionResp,
RegionResp,
......@@ -39,9 +31,7 @@ interface ColumnsType {
export default function WaterfallFlowBody() {
const router = useRouter();
const onMoreChange = (value: string) => {
console.log("更多", value);
};
const [list, setList] = useState([
"中国人寿",
"中国平安",
......@@ -82,9 +72,6 @@ export default function WaterfallFlowBody() {
"云享飞",
"科比特智教",
]);
// const [brandData,setBrandData] = useState<FilterOptionResp[]>([])
const [moreEqList, setMoreEqList] = useState<any>();
const columns = [
{
......@@ -114,8 +101,9 @@ export default function WaterfallFlowBody() {
];
const [leftDomList, setLeftDomList] = useState(
Array<{ element: JSX.Element , type?: string,}>
Array<{ element: JSX.Element; type?: string }>
);
const [rightTopDomList, setRightTopDomList] = useState<JSX.Element>();
const [rightBottomDomList, setRightBottomDomList] = useState<JSX.Element>();
......@@ -132,20 +120,21 @@ export default function WaterfallFlowBody() {
];
const { IndustryFlightSkills } = flightSkillsApi;
const flightApiTypeList = ["licenseId", "flightSkillsId"];
const { listAllIndustry, listAllAppType } = jobServicesApi;
const jobApiTypeList = ["industryId", "appTypeId"];
const onMoreChange = (
value: { value: string; label: number },
index: number,
option: []
) => {
const [item] = option.filter((item: any) => item.name === value.value);
routerPath(index, item);
};
useEffect(() => {
(async () => {
// listNewsApi.listNewsPage({ pageNo: 1, pageSize: 5 }).then((res) => {
// setRightTopDomList(rightDom(res.result?.list!));
// });
// listNewsApi.listNewTenderInfo({ pageNo: 1, pageSize: 6 }).then((res) => {
// setRightBottomDomList(rightDom2(res.result?.list!));
// });
let res1 = await Promise.all([
deviceCategory(),
deviceBrand(),
......@@ -172,7 +161,7 @@ export default function WaterfallFlowBody() {
const resValuelist2 = res2
.map((item, index) => {
return item.result?.map((it) => {
it.type = jobApiTypeList[index];
it.type = mallApiTypeList[index];
return it;
});
})
......@@ -180,7 +169,8 @@ export default function WaterfallFlowBody() {
const resValuelist3 = res3
.map((item, index) => {
return item.result?.map((it) => {
it.type = mallApiTypeList[index];
it.type = flightApiTypeList[index];
it.name = it.name || it.skillsName;
return it;
});
})
......@@ -188,7 +178,9 @@ export default function WaterfallFlowBody() {
const resValuelist4 = res4
.map((item, index) => {
return item.result?.map((it) => {
it.type = flightApiTypeList[index];
it.type = jobApiTypeList[index];
console.log(it);
it.name = it.name || it.appName;
return it;
});
})
......@@ -204,20 +196,42 @@ export default function WaterfallFlowBody() {
resValuelist2,
[],
resValuelist3,
resValuelist4.flat(),
resValuelist4,
[],
];
const listOption = JSON.parse(JSON.stringify(list)).map(
(item: string, index: number) => {
return { id: index, name: item, value: index };
}
);
const list2Option = JSON.parse(JSON.stringify(list2)).map(
(item: string, index: number) => {
return { id: index, name: item, value: index };
}
);
const optionList = [
resValuelist1,
resValuelist2,
listOption,
resValuelist3,
resValuelist4,
list2Option,
];
console.log(optionList);
setMoreEqList(res1.map((item) => item.result).flat());
setLeftDomList(
columns.map((item, index) => {
if (index < 3) {
console.log("路由跳转",index);
return { element: leftDom(item, index, listValue) , type:"left" };
return {
element: leftDom(item, index, listValue, optionList[index]),
type: "left",
};
}
console.log("路由跳转",index);
return { element: leftDom(item, index, listValue) , type:"right" };
return {
element: leftDom(item, index, listValue, optionList[index]),
type: "right",
};
})
);
......@@ -227,8 +241,6 @@ export default function WaterfallFlowBody() {
}, []);
const routerPath = (index: number, item?: AllType) => {
console.log(index);
if (item) {
router.push({
pathname: columns[index].router,
......@@ -244,26 +256,30 @@ export default function WaterfallFlowBody() {
const leftDom = (
item: ColumnsType,
index: number,
resultList: Array<Array<AllType>>
resultList: Array<Array<AllType>>,
option: []
) => {
return (
<div key={item.title} className="item">
<div className="item-title">
<div className="item-left">
{/* <div className="item-left-icon">
<Image src={icon[index]} alt="#" />
</div> */}
<div className="item-left-label">{item.title}</div>
<div className="item-left-label" onClick={() => routerPath(index)}>
{item.title}
</div>
</div>
<div>
<div key={item.title}>
<Select
className="select-box"
placeholder="筛选"
onChange={onMoreChange}
labelInValue
onChange={(value) => onMoreChange(value, index, option)}
bordered={false}
dropdownMatchSelectWidth={false}
options={moreEqList}
fieldNames={{ value: "id", label: "name" }}
options={option}
fieldNames={{
value: "name",
label: "name",
}}
/>
</div>
</div>
......@@ -307,9 +323,6 @@ export default function WaterfallFlowBody() {
);
})}
</Space>
<div className="item-bottom" onClick={() => routerPath(index)}>
全部
</div>
</div>
</div>
);
......@@ -319,12 +332,11 @@ export default function WaterfallFlowBody() {
return (
<div key={1009} className="right-box-item right-item">
<div className="title">
行业新闻
<div
className="title-label"
onClick={() => router.push("/projectInfo")}
>
&gt;
行业新闻 &gt;
</div>
</div>
<div className="body">
......@@ -350,15 +362,13 @@ export default function WaterfallFlowBody() {
const rightDom2 = (list: Array<NewsTenderType>) => {
return (
<div key={1008} className="right-box-item right-item-second">
<Image src={xwbg} alt="#" width={384} height={249} />
<div className="item-box">
<div className="title">
招标快讯
<div
className="title-label"
onClick={() => router.push("/projectInfo")}
>
&gt;
招标快讯 &gt;
</div>
</div>
<div className="body">
......@@ -369,13 +379,7 @@ export default function WaterfallFlowBody() {
<div className="label-bottom">{item.tenderPrice}</div>
</div>
<div className="item-right">
<Image
src={require("./assets/button.png")}
alt="#"
width={103}
height={22}
/>
<div className="left">{item.tenderPrice}W</div>
<div className="left">{`${item.tenderPrice}W`}</div>
<div className="right">申请合作</div>
</div>
</div>
......
import styled from "styled-components";
import button from "./assets/button.png";
import xwbg from "./assets/xwbg.png";
export default function Style() {
return <></>;
}
......@@ -37,12 +39,16 @@ export const Box = styled.div`
font-weight: bold;
color: #000000;
line-height: 32px;
&:hover {
cursor: pointer;
color: #ff552d;
}
}
}
.select-box {
background: #e0eeff;
border-radius: 2px;
border: 1px solid #aad0ff;
/* background: #e0eeff; */
/* border-radius: 2px; */
/* border: 1px solid #aad0ff; */
font-size: 12px;
width: 49px;
.ant-select-selection-placeholder {
......@@ -56,6 +62,7 @@ export const Box = styled.div`
}
.ant-select-arrow {
right: 2px;
color: #297ce0;
}
}
}
......@@ -108,10 +115,9 @@ export const Box = styled.div`
color: #000000;
line-height: 25px;
&-label {
margin-left: 10px;
cursor: pointer;
font-size: 16px;
font-weight: 400;
font-weight: 100;
&:hover {
color: #ff552d;
}
......@@ -185,11 +191,8 @@ export const Box = styled.div`
.right-item-second {
border-radius: 6px;
background-color: #fff;
position: relative;
.item-box {
position: absolute;
top: 0;
}
background: url(${xwbg.src}) no-repeat;
background-size: contain;
.title {
display: flex;
align-items: center;
......@@ -201,10 +204,9 @@ export const Box = styled.div`
color: #000000;
line-height: 25px;
&-label {
margin-left: 10px;
cursor: pointer;
font-size: 16px;
font-weight: 400;
font-weight: 100;
&:hover {
color: #ff552d;
}
......@@ -273,10 +275,13 @@ export const Box = styled.div`
text-overflow: ellipsis;
}
.item-right {
display: flex;
justify-content: space-between;
padding: 0 5px;
width: 103px;
height: 22px;
background: url(${button as unknown as string}) no-repeat;
position: relative;
background: url(${button.src}) no-repeat;
background-size: contain;
.left {
width: 35px;
height: 22px;
......@@ -285,7 +290,6 @@ export const Box = styled.div`
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ff4500;
position: absolute;
text-align: center;
left: 4px;
top: 0;
......@@ -297,10 +301,6 @@ export const Box = styled.div`
font-size: 11px;
font-family: MicrosoftYaHei;
color: #ffffff;
position: absolute;
text-align: center;
right: 3px;
top: 0;
}
}
}
......
pages/projectInfo/assets/banner.png

56.0 KB | W: | H:

pages/projectInfo/assets/banner.png

82.2 KB | W: | H:

pages/projectInfo/assets/banner.png
pages/projectInfo/assets/banner.png
pages/projectInfo/assets/banner.png
pages/projectInfo/assets/banner.png
  • 2-up
  • Swipe
  • Onion skin
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论