Commit cc73a66b authored by wuhao's avatar wuhao 🎯

asder

parent 9c8a6218
......@@ -123,14 +123,12 @@ export default [
component: '@/pages/index',
routes: [
{
path: '/cgx/cgxpt',
name: '南京智能制造装备产业促进会产供需平台',
component: '@/pages/index',
path: 'http://www.jsiea.com/cgx/#/welcome',
},
{
path: '/cgx/lim',
name: '江苏省智能装备产业联盟数控机床产供需平台',
component: '@/pages/index',
path: 'http://njime.cn/cgx/#/welcome',
},
],
},
......
......@@ -80,6 +80,18 @@ body,
background-size: 400% 400%;
animation: bgmove 20s linear 0s infinite alternate forwards;
}
.bglightc {
background-image: linear-gradient(
145deg,
#bee9ff 0%,
#99dbff 25%,
#ffc4f1 50%,
#99dbff 75%,
#bee9ff 100%
);
background-size: 400% 400%;
animation: bgmove 20s linear 0s infinite alternate forwards;
}
@keyframes bgmove {
0% {
......@@ -969,3 +981,31 @@ body,
}
}
}
.olik {
> div {
overflow-x: hidden;
margin-right: -15px !important;
margin-bottom: -15px !important;
}
> div:last-child {
right: 17px !important;
opacity: 0.8 !important;
display: block !important;
}
}
.ant-modal-confirm-content {
margin-left: 0 !important;
margin-top: 1rem !important;
}
.submit {
* {
font-size: 0.6rem;
}
b {
color: #f74249;
}
label {
display: block;
margin-bottom: 0.6rem;
}
}
import React, { useState, useRef, useMemo, useEffect } from 'react';
import styles from './index.less';
import { Menu, Grid, Drawer, Tooltip, Row, Col } from 'antd';
import {
Menu,
Grid,
Drawer,
Tooltip,
Row,
Col,
Input,
Modal,
message,
} from 'antd';
import { history, Helmet } from 'umi';
import routes from '../../routes';
import {
......@@ -11,13 +21,14 @@ import {
} from '@ant-design/icons';
import { Scrollbars } from 'react-custom-scrollbars';
import Footer from './footer';
import { doFetch } from '@/utils/doFetch';
const { useBreakpoint } = Grid;
const colc = { xs: 24, sm: 24, md: 12, lg: 12, xl: 12, xxl: 12 },
col = { xs: 24, sm: 24, md: 10, lg: 10, xl: 10, xxl: 10 },
const col = { xs: 24, sm: 24, md: 12, lg: 5, xl: 5, xxl: 5 },
cola = { xs: 24, sm: 24, md: 24, lg: 4, xl: 4, xxl: 4 },
cold = { xs: 24, sm: 24, md: 8, lg: 8, xl: 8, xxl: 8 },
colds = { xs: 24, sm: 24, md: 12, lg: 8, xl: 8, xxl: 8 },
colds = { xs: 24, sm: 24, md: 24, lg: 16, xl: 16, xxl: 16 },
cols = { xs: 24, sm: 24, md: 14, lg: 14, xl: 14, xxl: 14 };
const mapTree = (org) => {
......@@ -43,8 +54,12 @@ const MenuRender = ({ arrs, mode, activeKey }) => {
mode={mode ?? 'horizontal'}
activeKey={activeKey}
items={arrs}
onClick={({ item, key, keyPath, domEvent }) => {
history.push(key);
onClick={({ items, key, keyPath, domEvent }) => {
if (key.includes('http')) {
window.open(key);
} else {
history.push(key);
}
}}
/>
);
......@@ -54,6 +69,10 @@ function Layout({ children, location }) {
const [collspan, setcollspan] = useState(false);
const scrollRef = useRef();
const screens = useBreakpoint();
const [vals, setvals] = useState({});
const [colls, setcolls] = useState(false);
const [changes, setchanges] = useState(false);
const arrs = useMemo(() => {
let arr = [];
routes.map((org) => {
......@@ -72,6 +91,29 @@ function Layout({ children, location }) {
});
}, [location.pathname]);
function setval(key, val) {
setvals((s) => ({
...s,
[key]: val,
}));
}
const styled = useMemo(() => {
if (changes) {
return {
width: '100%',
};
} else {
return {
position: 'fixed',
bottom: 0,
left: 0,
width: '100%',
zIndex: 222,
};
}
}, [changes]);
return (
<div className={styles.container}>
<Helmet encodeSpecialCharacters={false}>
......@@ -116,7 +158,33 @@ function Layout({ children, location }) {
}}
/>
<Tooltip title="产品演示" placement="bottom">
<PlayCircleFilled style={{ fontSize: 20, color: '#000000' }} />
<PlayCircleFilled
style={{ fontSize: 20, color: '#000000' }}
onClick={async () => {
let res = await doFetch({
url: '/video/detail',
params: {},
});
Modal.info({
title: '产品演示',
width: '66vw',
content: (
<video
src={res?.data?.data?.videoUrl}
style={{ width: '100%' }}
controls
autoPlay
/>
),
okButtonProps: {
style: {
display: 'none',
},
},
maskClosable: true,
});
}}
/>
</Tooltip>
</div>
) : (
......@@ -134,6 +202,27 @@ function Layout({ children, location }) {
color: '#fff',
cursor: 'pointer',
}}
onClick={async () => {
let res = await doFetch({ url: '/video/detail', params: {} });
Modal.info({
title: '产品演示',
width: '66vw',
content: (
<video
src={res?.data?.data?.videoUrl}
style={{ width: '100%' }}
controls
autoPlay
/>
),
okButtonProps: {
style: {
display: 'none',
},
},
maskClosable: true,
});
}}
>
<PlayCircleFilled
style={{ fontSize: 20, color: '#ffffff', marginRight: 6 }}
......@@ -145,26 +234,203 @@ function Layout({ children, location }) {
</div>
</header>
<Scrollbars
thumbMinSize={10}
thumbMinSize={100}
autoHide
style={{
width: '100%',
height: 'calc(100vh - 80px)',
height: 'calc( 100vh - 80px )',
overflowX: 'hidden',
position: 'relative',
}}
hideTracksWhenNotNeeded={true}
hideTracksWhenNotNeeded
ref={scrollRef}
className="olik"
onScroll={(e) => {
let divheight = document.getElementById('webFooter').clientHeight;
if (
e.target.scrollTop <
e.target.firstChild.clientHeight - divheight
) {
setchanges(false);
} else {
setchanges(true);
}
}}
>
<div className="content">{children}</div>
<div className={styles.navbar}>
<Row>
<Col {...cold}>
<PhoneFilled />
<div className={styles.navbar} style={styled}>
{colls && (
<Row
style={{
width: '100%',
marginBottom: '1rem',
}}
className="submit"
gutter={36}
>
<Col {...col} style={{ margin: '0.3rem 0' }}>
<label htmlFor="contact">
<b>*</b> 联系人
</label>
<Input
name="contact"
value={vals.contact}
onChange={(e) => {
setval('contact', e.target.value);
}}
/>
</Col>
<Col {...col} style={{ margin: '0.3rem 0' }}>
<label htmlFor="telephone">
<b>*</b> 联系方式
</label>
<Input
name="telephone"
value={vals.telephone}
onChange={(e) => {
setval('telephone', e.target.value);
}}
/>
</Col>
<Col {...col} style={{ margin: '0.3rem 0' }}>
<label htmlFor="companyName">
<b>*</b> 公司名称
</label>
<Input
name="companyName"
value={vals.companyName}
onChange={(e) => {
setval('companyName', e.target.value);
}}
/>
</Col>
<Col {...col} style={{ margin: '0.3rem 0' }}>
<label htmlFor="trade">所属行业(选填)</label>
<Input
name="trade"
value={vals.trade}
onChange={(e) => {
setval('trade', e.target.value);
}}
/>
</Col>
<Col
{...cola}
style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'flex-end',
margin: '0.3rem 0',
}}
>
<div
className={`${styles.diybtn} bglightc`}
style={{
color: '#ffffff',
textShadow: '0px 0px 2px #999999',
}}
onClick={() => {
if (!vals.contact || !vals.telephone || !vals.companyName) {
message.warn('请填写必填项!');
return;
}
doFetch({
url: '/customerAdvice/add',
params: { ...vals },
}).then((res) => {
if (res.code == '0000') {
message.success(
'我们已收到您的申请,稍后将有专员联系您...',
);
}
});
}}
>
提交
</div>
</Col>
</Row>
)}
<Row
gutter={36}
style={{
width: '100%',
}}
>
<Col
{...cola}
className="center"
style={{ fontSize: '0.8rem', margin: '0.3rem 0' }}
>
<div
className="center"
style={{
marginRight: 18,
border: '1px solid rgba(1, 92, 172, 1)',
color: 'rgba(1, 92, 172, 1)',
width: '1.5rem',
height: '1.5rem',
borderRadius: '50%',
}}
>
<PhoneFilled rotate={90} />
</div>
025-86111901
</Col>
<Col
{...colds}
className="center"
style={{
fontSize: '0.8rem',
cursor: 'pointer',
margin: '0.3rem 0',
}}
onClick={() => {
Modal.info({
title: '添加微信',
content: (
<img
src={require('@/assets/qrcode.png')}
style={{ width: '100%' }}
/>
),
okButtonProps: {
style: { display: 'none' },
},
maskClosable: true,
});
}}
>
<div
className="center"
style={{
marginRight: 18,
color: 'rgba(1, 92, 172, 1)',
backgroundColor: 'rgba(69, 176, 53, 1)',
width: '1.5rem',
height: '1.5rem',
borderRadius: '50%',
}}
>
<WechatFilled style={{ color: '#FFFFFF' }} />
</div>
微信咨询
</Col>
<Col {...cold}>
<WechatFilled />
<Col
{...cola}
className="center"
style={{ fontSize: '0.8rem', margin: '0.3rem 0' }}
>
<div
className={styles.diybtn}
onClick={() => {
setcolls(!colls);
}}
>
{!colls ? '免费体验' : '取消'}
</div>
</Col>
<Col {...cold}></Col>
</Row>
</div>
<Footer></Footer>
......
......@@ -80,3 +80,22 @@
}
}
}
.navbar {
padding: 1rem !important;
border-top: 1px solid #f0f0f0 !important;
background-color: #ffffff;
}
.diybtn {
font-size: 0.8rem !important;
letter-spacing: 2px;
width: 6rem;
height: 2rem;
background-color: aliceblue;
border-radius: 6rem;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
color: #000000;
}
import styles from './index.less';
import { Link, useModel } from 'umi';
import { Link, history } from 'umi';
import React, { useState, useEffect, useRef } from 'react';
import { Carousel, Button, Row, Col, Card, Tooltip, Grid } from 'antd';
import { doFetch } from '@/utils/doFetch';
......@@ -38,32 +38,32 @@ const production = {
{
title: 'MES智能制造管理系统',
desc: '南高智能制造管理系统(MES) 是应用于生产制造车间的生产信息化管理系统。',
detail: '',
detail: '/factory/typea/mes',
},
{
title: 'WMS智能仓储管理系统',
desc: '南高智能仓储管理系统(WMS)是应用于仓储作业管理的仓储信息化管理系统。',
detail: '',
detail: '/factory/typea/wms',
},
{
title: 'EMS设备运维管理系统',
desc: '设备管理系统提供公有云、私有云两种部署方式,可为企业提供定制化开发服务,投入少、见效快。 ',
detail: '',
detail: '/factory/typea/ems',
},
{
title: 'IOT数据采集系统',
desc: '组合各种物联网硬件采集多种数据,通过南高工业互联网平台,可上实现数据监测和设备控制。',
detail: '',
detail: '/factory/typea/iot',
},
{
title: 'PLM产品生命周期管理系统',
desc: '依托领先产品技术及解决方案,为企业提供了一整套全方位的数字化产品生命周期管理平台。',
detail: '',
detail: '/factory/typea/plm',
},
{
title: 'PDM产品数据管理系统',
desc: '南高智能仓储管理系统(WMS)是应用于仓储作业管理的仓储信息化管理系统。',
detail: '',
detail: '/factory/typea/pdm',
},
],
l: [
......@@ -304,7 +304,15 @@ function IndexPage({ route }) {
<div className="textcontainer">
<h2>{item.title}</h2>
<p className="twoline">{item.desc}</p>
<Button className="btn">查看详情</Button>
<Button
className="btn"
size="large"
onClick={() => {
history.push(item.detail);
}}
>
查看详情
</Button>
</div>
</div>
);
......@@ -348,6 +356,9 @@ function IndexPage({ route }) {
ghost
style={{ margin: '0 auto', display: 'block' }}
size="large"
onClick={() => {
history.push('/about/insert');
}}
>
查看详情
</Button>
......@@ -421,6 +432,9 @@ function IndexPage({ route }) {
ghost
style={{ margin: '0 auto', display: 'block' }}
size="large"
onClick={() => {
history.push('/together');
}}
>
查看详情
</Button>
......@@ -472,6 +486,14 @@ function IndexPage({ route }) {
></div>
}
hoverable
onClick={() => {
history.push({
pathname: '/about/newsdetail',
query: {
id: zixun?.data[0]?.id,
},
});
}}
>
<Meta
title={
......@@ -533,6 +555,14 @@ function IndexPage({ route }) {
className="secitem"
key={it.id}
style={{ marginBottom: '1rem' }}
onClick={() => {
history.push({
pathname: '/about/newsdetail',
query: {
id: it?.id,
},
});
}}
>
<div
className="spread"
......
......@@ -67,13 +67,23 @@ function Together() {
作为“江苏省智能装备产业联盟”和“南京市智能制造装备产业促进会”的秘书长单位,南高智能一直积极地推动并联合与产业相关的政府部门、科研院所、优秀企业代表等,致力于建立真正全连接的产业生态,将拥有智能制造共同理念的参与者联合起来,成为未来整个智能制造产业生态建设的驱动者和践行者。
</p>
<div className="centerl">
<Card hoverable>
<Card
hoverable
onClick={() => {
window.open('http://www.jsiea.com/');
}}
>
<img src={require(`@/assets/icon1.png`)} alt="" />
<span style={{ fontSize: '0.6rem', marginTop: 12 }}>
江苏省智能装备产业联盟
</span>
</Card>
<Card hoverable>
<Card
hoverable
onClick={() => {
window.open('http://njime.cn/');
}}
>
<img src={require(`@/assets/icon2.png`)} alt="" />
<span style={{ fontSize: '0.6rem', marginTop: 12 }}>
南京市智能制造装备产业促进会
......
......@@ -106,7 +106,6 @@ request.interceptors.response.use(async (response, options) => {
message.warn(data?.msg);
if (data?.code == '0001' && window.location.href.indexOf('login') == -1) {
localStorage.clear();
history.replace('/user/login');
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment