合并公告的修改

This commit is contained in:
何童崇 2021-09-26 10:53:20 +08:00
commit 4dc1c4c814
10 changed files with 388 additions and 178 deletions

47
package-lock.json generated
View File

@ -261,6 +261,7 @@
"version": "0.13.9",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
"integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
<<<<<<< HEAD
}
}
},
@ -277,6 +278,8 @@
"version": "0.13.9",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
"integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
=======
>>>>>>> 01f71bca87fac88ba9ad56c16260521c47f4ca6c
}
}
},
@ -3936,11 +3939,14 @@
"version": "2.6.12",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
<<<<<<< HEAD
},
"core-js-pure": {
"version": "3.16.4",
"resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.4.tgz",
"integrity": "sha512-bY1K3/1Jy9D8Jd12eoeVahNXHLfHFb4TXWI8SQ4y8bImR9qDPmGITBAfmcffTkgUvbJn87r8dILOTWW5kZzkgA=="
=======
>>>>>>> 01f71bca87fac88ba9ad56c16260521c47f4ca6c
},
"core-util-is": {
"version": "1.0.2",
@ -4023,6 +4029,7 @@
"object-assign": "^4.1.1"
}
},
<<<<<<< HEAD
"cross-env": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
@ -4075,6 +4082,8 @@
}
}
},
=======
>>>>>>> 01f71bca87fac88ba9ad56c16260521c47f4ca6c
"cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
@ -16302,6 +16311,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
<<<<<<< HEAD
"dev": true,
"requires": {
"emoji-regex": "^7.0.1",
@ -16330,6 +16340,36 @@
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"dev": true,
"requires": {
=======
"dev": true,
"requires": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^5.1.0"
}
},
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
}
},
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
},
"wrap-ansi": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"dev": true,
"requires": {
>>>>>>> 01f71bca87fac88ba9ad56c16260521c47f4ca6c
"ansi-styles": "^3.2.0",
"string-width": "^3.0.0",
"strip-ansi": "^5.0.0"
@ -19205,15 +19245,22 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
<<<<<<< HEAD
"dev": true,
"optional": true
=======
"dev": true
>>>>>>> 01f71bca87fac88ba9ad56c16260521c47f4ca6c
},
"is-glob": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
"dev": true,
<<<<<<< HEAD
"optional": true,
=======
>>>>>>> 01f71bca87fac88ba9ad56c16260521c47f4ca6c
"requires": {
"is-extglob": "^2.1.1"
}

View File

@ -276,12 +276,14 @@ class Index extends Component {
<div className="ProjectListIndex">
<div className="list-left">
<ul className="list-l-Menu">
<li className="MenuTitle"><i className="iconfont icon-bianchengyuyan color-grey-9 font-15 mr5"></i>
语言</li>
<li className="MenuTitle" onClick={() => {this.getType();this.changeType(undefined, this.state.typeList);}}>
<span><i className="iconfont icon-bianchengyuyan color-grey-9 font-15 mr5"></i>
语言</span></li>
<div className="list-affix">{typeList}</div>
</ul>
<ul className="list-l-Menu">
<li className="MenuTitle"><i className="iconfont icon-xiangmuleibie color-grey-9 font-15 mr5"></i></li>
<li className="MenuTitle" onClick={() => {this.getCategory();this.changeCategory(undefined, this.state.categoryList);}}>
<span><i className="iconfont icon-xiangmuleibie color-grey-9 font-15 mr5"></i></span></li>
<div className="list-affix">{categoryList}</div>
</ul>
</div>

View File

@ -168,7 +168,7 @@ form{
background-color: #fff;
.list-affix{
min-height: 20px;
max-height: 180px;
max-height: 240px;
overflow-y: auto;
}
& li{
@ -210,7 +210,7 @@ form{
width: 6px;
content: '';
height: 33px;
background: #4CACFF;
background: #1484EF;
}
.MenuTitle{
font-size: 16px;
@ -220,6 +220,21 @@ form{
line-height: 62px;
border-bottom: 1px solid #E0E0E0;
font-weight: 400;
span{
display: block;
width: 50%;
height: 100%;
cursor: pointer;
}
span:hover{
color: #1484EF;
.iconfont{
color: #1484EF !important;
}
}
}
.ant-menu-inline{
border:none;

View File

@ -1,22 +1,18 @@
import { notification } from 'antd';
import { notification,message } from 'antd';
import axios from 'axios';
import cookie from 'react-cookies';
let actionUrl = '';
if (window.location.href.indexOf(':3007') > -1) {
actionUrl="https://taskapi.osredm.com"; //测试环境
// actionUrl = 'http://117.50.100.12:8008';
// actionUrl='http://192.168.31.74:8081'; //万佳后台
} else if (window.location.href.indexOf('117.50.100.12') > -1 ) {
actionUrl = "http://117.50.100.12:8008"; //测试环境
axios.defaults.withCredentials = true;
} else if (window.location.href.indexOf('noticeweb.osredm') > -1) {
actionUrl = "https://taskapi.osredm.com"; //测试环境
axios.defaults.withCredentials = true;
} else if (window.location.href.indexOf('forge.osredm') > -1) {
actionUrl = "https://info.osredm.com"; //生产环境
axios.defaults.withCredentials = true;
if (window.location.href.indexOf('localhost') > -1) {
actionUrl='https://taskapi.osredm.com';
// actionUrl='http://192.168.31.47:8081';
}else if(window.location.href.indexOf('192.168.31.48') > -1){
actionUrl='https://taskapi.osredm.com';
}else if(window.location.href.indexOf('noticeweb.osredm') > -1){
actionUrl="https://taskapi.osredm.com";
}else if(window.location.href.indexOf('forge.osredm.com')>-1){
actionUrl="https://info.osredm.com";
}
export const httpUrl = actionUrl;
@ -67,6 +63,13 @@ service.interceptors.response.use(
});
return Promise.reject('error');
}
if (res.status === 403) {
notification.open({
message: "提示",
description: res.data.message || '无权限',
});
return Promise.reject('error');
}
if (res.status === 40001) {
notification.open({
message: "提示",
@ -85,10 +88,30 @@ service.interceptors.response.use(
},
error => {
console.log(error);
notification.open({
message: "提示",
description: error.message,
});
let res = error.response||{};
if (res.status === 400) {
notification.open({
message: "提示",
description: res.data.message || '操作失败',
});
return Promise.reject('error');
}
if (res.status === 401) {
notification.open({
message: "提示",
description: res.data.message || '登录信息已过期',
});
return Promise.reject('error');
}
if (res.status === 403) {
notification.open({
message: "提示",
description: res.data.message || '无权限!',
});
window.location.href="/403";
return Promise.reject('error');
}
return Promise.reject(error);
}
);

View File

@ -37,3 +37,13 @@ export async function getNoticeDetail(id) {
}
}
//新增加密公告申请人
export function addReader(data) {
return fetch({
url: '/api/request_contact_reader_info/',
method: 'post',
data: data
});
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 168 KiB

View File

@ -1,77 +1,163 @@
import React, { useEffect, useState } from 'react';
import { Icon, } from 'antd';
import React, { useEffect, useState, useCallback } from 'react';
import { Button, Icon, Form, Modal, Input } from 'antd';
import { Link } from "react-router-dom";
import { getNoticeDetail } from '../api';
import { getNoticeDetail, addReader } from '../api';
import { noticeType } from '../static';
import './index.scss';
const noticeTypeArr = [];
for (const item of noticeType) {
noticeTypeArr[item.code]=item.name;
noticeTypeArr[item.code] = item.name;
}
export default ({ match, history, showNotification }) => {
export default Form.create()(({ match, history, showNotification, form }) => {
const { getFieldDecorator, validateFields, setFieldsValue } = form;
const [reload, setReload] = useState(0);
const [noticeData, setNoticeData] = useState({});
const [visible, setVisible] = useState(false);
const [readerName,setReaderName]=useState('');
const id = match.params.noticeId;
useEffect(() => {
id && getNoticeDetail(id).then(data => {
if(data){
data.publishDate=data.publishDate.split(' ')[0];
data.createdAt=data.createdAt.split(' ')[0];
data.closingDate=data.closingDate.split(' ')[0];
if (data) {
data.publishDate = data.publishDate.split(' ')[0];
data.createdAt = data.createdAt.split(' ')[0];
data.closingDate = data.closingDate.split(' ')[0];
}
setNoticeData(data || {});
})
}, [id]);
}, [id, reload]);
// form
const helper = useCallback(
(label, name, rules, widget) => (
<Form.Item label={label}>
{getFieldDecorator(name, { rules, validateFirst: true ,getValueFromEvent: e=>e.target.value.replace(/(^\s*)|(\s*$)/g, "") })(widget)}
</Form.Item>
),
[]
);
function pushInfo() {
validateFields((err, values) => {
if (!err) {
addReader({
...values,
annId: noticeData.id,
}).then(res => {
if (res.message === "success") {
setVisible(false);
setReload(Math.random());
} else {
res && Modal.error({ content: res.message });
}
})
}
});
}
return (
<React.Fragment>
<div className="centerbox notice-detail">
<div className="head-navigation">
<Link to="/">首页<span className="greater">&nbsp;&gt;&nbsp;</span></Link>
<Link to="/notice">公告<span className="greater">&nbsp;&gt;&nbsp;</span></Link>
<span>公告详情</span>
</div>
<div className="center-content">
{/* <div className="notice-center-content"> */}
<div className="notice-title">
{noticeData.title}
</div>
<div className="notice-detail-content">
<div className="center-author">
<p key={0}>公告类型{noticeTypeArr[noticeData.type]}</p>
{noticeData.publisher && <p key={1}>发布单位{noticeData.publisher}</p>}
<p key={2}>发布时间{noticeData.publishDate || noticeData.createdAt}</p>
<p key={3}>截止时间{noticeData.closingDate}</p>
<p key={4}>浏览{noticeData.visits || 0}</p>
</div>
<div className="content-text">
<div className="notice-content-title"><Icon type="caret-right" />公告主要内容</div>
<div className="editor-w-text" dangerouslySetInnerHTML={{ __html: noticeData.text }}>
</div>
</div>
{
noticeData.fileDownloadPath &&
<React.Fragment>
<div className="notice-content-title"><Icon type="caret-right" />公告附件</div>
<p className="notice-content-download" >
<span onClick={() => { window.open( noticeData.fileDownloadPath) }}>
<i className="iconfont icon-fujian color-green font-14 mr3"></i>{noticeData.fileName}
</span>
<span className="link" onClick={() => { window.open( noticeData.fileDownloadPath) }}>下载</span>
</p>
</React.Fragment>
}
</div>
</div>
<div className="centerbox notice-detail">
<div className="head-navigation">
<Link to="/">首页<span className="greater">&nbsp;&gt;&nbsp;</span></Link>
<Link to="/notice">公告<span className="greater">&nbsp;&gt;&nbsp;</span></Link>
<span>公告详情</span>
</div>
</React.Fragment>
<div className="center-content">
{/* <div className="notice-center-content"> */}
<div className="notice-title">
{noticeData.title}
</div>
<div className="notice-detail-content">
<div className="center-author">
<p key={0}>公告类型{noticeTypeArr[noticeData.type]}</p>
{noticeData.publisher && <p key={1}>发布单位{noticeData.publisher}</p>}
<p key={2}>发布时间{noticeData.publishDate || noticeData.createdAt}</p>
<p key={3}>截止时间{noticeData.closingDate}</p>
<p key={4}>浏览{noticeData.visits || 0}</p>
</div>
<div className="content-text">
<div className="notice-content-title"><Icon type="caret-right" />公告主要内容</div>
<div className="editor-w-text" dangerouslySetInnerHTML={{ __html: noticeData.text }}>
</div>
</div>
{
noticeData.contactInfo ? <React.Fragment>
<div className="notice-content-title"><Icon type="caret-right" />联系方式</div>
<div className="content-secret" dangerouslySetInnerHTML={{ __html: noticeData.contactInfo && noticeData.contactInfo.replace(/\n/g, '</br>') }}>
</div>
{
noticeData.blockedView && <Button type="primary" onClick={() => { setVisible(true) }}>申请查看加密内容</Button>
}
</React.Fragment> : ''
}
{
noticeData.fileDownloadPath &&
<React.Fragment>
<div className="notice-content-title"><Icon type="caret-right" />公告附件</div>
<p className="notice-content-download" >
<span onClick={() => { window.open(noticeData.fileDownloadPath) }}>
<i className="iconfont icon-fujian color-green font-14 mr3"></i>{noticeData.fileName}
</span>
<span className="link" onClick={() => { window.open(noticeData.fileDownloadPath) }}>下载</span>
</p>
</React.Fragment>
}
</div>
</div>
<Modal
title="提交信息"
visible={visible}
onOk={pushInfo}
onCancel={() => { setVisible(false) }}
className="form-edit-modal"
>
{
helper('用户姓名',
'readerName',
[{ required: true, message: "请输入用户姓名" }, { max: 50, message: '不能超过50字符' }],
<Input
placeholder="请输入用户姓名"
/>
)
}
{
helper('公司名称',
'companyName',
[{ required: true, message: "请输入公司名称" }, { max: 100, message: '不能超过100字符' }],
<Input
placeholder="请输入公司名称"
/>
)
}
{
helper('联系方式',
'contactInfo',
[{ required: true, message: "请输入联系方式" }, { max: 100, message: '不能超过100字符' }],
<Input
placeholder="请输入联系方式"
/>
)
}
</Modal>
</div>
)
}
)

View File

@ -56,6 +56,10 @@
min-height: 30vh;
}
.content-secret{
min-height: 2em;
}
.notice-content-title {
margin: 0.5rem 0;
font-size: 1rem;
@ -66,6 +70,7 @@
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2rem !important;
padding: 0 1rem;
background: #f9f9f9;
span:hover{
@ -73,3 +78,25 @@
color: #1890ff;
}
}
.form-edit-modal {
.ant-form-item{
display: flex;
}
.ant-form-item-label{
min-width: 5rem;
}
.ant-form-item-control-wrapper{
width: 75%;
display: inline-block;
}
.ant-input-number{
width: 50%;
}
.ant-modal-footer{
border-top: 0;
text-align: center;
}
}

View File

@ -1,21 +1,14 @@
import React, { useEffect, useState } from 'react';
import classNames from 'classnames';
import { Menu, Pagination, Icon, Input } from 'antd';
import { Link } from "react-router-dom";
import { Pagination, Icon, Input } from 'antd';
import ItemList from '../components/itemList';
import Nodata from '../../../forge/Nodata';
import Loading from "../../../Loading";
// import { AbandonSvg, AllSvg, ChangeSvg, CallSvg, CheckSvg } from '../svg';
import noticePng from '../image/banner.png';
import { getNoticeList } from '../api';
import './index.scss';
const Search = Input.Search;
// const { SubMenu } = Menu;
// const defaultColor = '#848684';
// const activeColor = '#ffffff';
// const svgColor = '#1890ff';
export default (props) => {
@ -101,6 +94,7 @@ export default (props) => {
function sortNav() {
return <div className="notice-sort-nav">
<Search
size="large"
maxLength={20}
style={{ width: "56%" }}
placeholder="输入标题关键字不能超过20字符"
@ -114,27 +108,6 @@ export default (props) => {
</div>
}
// function onOpenChange(e) {
// if(e.length===2){
// if(e[1]==='sub1'){
// setTab('0');
// }else{
// setTab('7');
// }
// }else{
// if(e[0]==='sub1'){
// setTab('0');
// } else if (e[0] == 'sub2') {
// setTab('7');
// } else {
// setTab('8');
// }
// }
// setCurPage(1);
// setTitle('');
// setOrderBy('publishDateDesc');
// }
function handleClick(e) {
setTab(e.key);
setCurPage(1);
@ -142,6 +115,15 @@ export default (props) => {
setOrderBy('publishDateDesc');
}
function click(e){
console.log("aa");
console.log(e);
setTab(e);
setCurPage(1);
setTitle('');
setOrderBy('publishDateDesc');
}
function cont(param, titleStr, key, svgStr) {
return <React.Fragment>
<div className="item-head-title">
@ -252,33 +234,24 @@ export default (props) => {
<React.Fragment>
<img alt="图片加载失败" src={noticePng} width="100%"></img>
<div className="centerbox notice-list clearfix">
<div className="head-navigation">
{/* <div className="head-navigation">
<Link to="/">首页<span className="greater">&nbsp;&gt;&nbsp;</span></Link>
<span>公告</span>
</div>
</div> */}
<div className="body">
<div className="navigationMenu">
<Menu
onClick={handleClick}
// style={{width: 216 }}
mode="inline"
// onOpenChange={onOpenChange}
// defaultSelectedKeys={['4']}
// defaultOpenKeys={['sub1']}
>
<Menu.Item key="0" id={tab === '0' ? "menu-selected" : "menu"}><span className="itemClass"><i className="iconfont icon-xiangmugonggao"></i>项目公告</span></Menu.Item>
{/* <SubMenu id={tab === '0' ? "menu-selected" : "menu"} key="sub1" title={<span className="itemClass"><i className="iconfont icon-xiangmugonggao"></i><span className="subMenuspan">项目公告</span></span>} > */}
<Menu.Item key="4" id={tab === '4' ? "menu-selected" : "menu"}><span className="itemClass"><i className="iconfont icon-zhaobiaogonggao" style={{ marginLeft: '1.2em' }}></i>招标公告</span></Menu.Item>
<Menu.Item key="1" id={tab === '1' ? "menu-selected" : "menu"}><span className="itemClass"><i className="iconfont icon-gengzhenggonggao" style={{ marginLeft: '1.2em' }}></i>更正公告</span></Menu.Item>
<Menu.Item key="2" id={tab === '2' ? "menu-selected" : "menu"}><span className="itemClass"><i className="iconfont icon-zhongbiaogonggao" style={{ marginLeft: '1.2em' }}></i>中标公告</span></Menu.Item>
<Menu.Item key="3" id={tab === '3' ? "menu-selected" : "menu"}><span className="itemClass"><i className="iconfont icon-feibiaogonggao" style={{ marginLeft: '1.2em' }}></i>废标公告</span></Menu.Item>
{/* </SubMenu> */}
<Menu.Item key="7" id={tab === '7' ? "menu-selected" : "menu"}><span className="itemClass"><i className="iconfont icon-chengguo"></i>成果转化</span></Menu.Item>
{/* <SubMenu id={tab === '7' ? "menu-selected" : "menu"} key="sub2" title={<span className="itemClass"><i className="iconfont icon-chengguo"></i><span className="subMenuspan">成果转化</span></span>}> */}
<Menu.Item key="5" id={tab === '5' ? "menu-selected" : "menu"}><span className="itemClass"><i className="iconfont icon-jishuzichan" style={{ marginLeft: '1.2em' }}></i>技术资产</span></Menu.Item>
<Menu.Item key="6" id={tab === '6' ? "menu-selected" : "menu"}><span className="itemClass"><i className="iconfont icon-chengjiaogonggao" style={{ marginLeft: '1.2em' }}></i>成交公告</span></Menu.Item>
{/* </SubMenu> */}
</Menu>
<ul className="menu-ul">
<li className="MenuTitle" onClick={()=>click('0')}><span><i className="iconfont icon-xiangmugonggao"></i>项目公告</span></li>
<li className={tab === '4' ? "active" : ""} onClick={()=>click('4')}><span>招标公告</span></li>
<li className={tab === '1' ? "active" : ""} onClick={()=>click('1')}><span>更正公告</span></li>
<li className={tab === '2' ? "active" : ""} onClick={()=>click('2')}><span>中标公告</span></li>
<li className={tab === '3' ? "active" : ""} onClick={()=>click('3')}><span>废标公告</span></li>
</ul>
<ul className="menu-ul">
<li className="MenuTitle" onClick={()=>click('7')}><span><i className="iconfont icon-chengguo"></i>成果转化</span></li>
<li className={tab === '5' ? "active" : ""} onClick={()=>click('5')}><span>技术资产</span></li>
<li className={tab === '6' ? "active" : ""} onClick={()=>click('6')}><span>成交公告</span></li>
</ul>
</div>
<div className="notice-center-content">
{sortNav()}

View File

@ -39,8 +39,11 @@
.notice-sort-nav{
display: flex;
justify-content: space-between;
padding: .625rem 1rem .5rem;
background: #f5f5f5;
padding: .3rem 2rem 1.5rem;
margin: 0px -1.25rem;
// border: 1px solid;
border-bottom: 1px solid #E0E0E0;
// background: #f5f5f5;
}
.notice-center-content{
@ -68,7 +71,6 @@
}
}
.ant-input-group-addon{
border: 0 !important;
}
@ -100,10 +102,11 @@
.body{
display: flex;
justify-content: space-between;
margin-top: -20px;
.navigationMenu{
margin-right: 24px;
width: 15.4em;
margin-right: 20px;
width: 20.8em;
caret-color: rgba(0, 0, 0, 0);
}
@ -112,50 +115,74 @@
}
}
#menu-selected{
background-color: #1890FF;
color: #fff;
.subMenuspan{
color: #fff;
.menu-ul{
background-color: white;
margin-bottom: 12px;
border-radius:2px;
.MenuTitle{
border-bottom: 1px solid #E0E0E0;
span{
display: block;
width: 50%;
height: 100%;
cursor: pointer;
border-bottom: 0px solid;
i{
color: #afaaae;
}
}
span:hover{
color: #1484EF;
.iconfont{
color: #1484EF !important;
}
}
}
li{
padding:0px 0px 0px 20px;
position: relative;
height: 62px;
line-height: 62px;
font-size: 16px;
color: #333;
span{
display: block;
height: 62px;
cursor: pointer;
border-bottom: 1px solid #eee;
}
&:last-child > span{
border-bottom: none;
}
}
li:hover{
background: #fafafa;
}
.active{
background-color: #fafafa;
& ::before{
position: absolute;
left: 0px;
top: 15px;
width: 6px;
content: '';
height: 30px;
background: #1484EF;
}
}
& i{
margin-right: 5px;
}
}
// #menu-selected>div>.itemClass>.iconfont{
// color: #fff;
// }
#menu-selected>.itemClass>.iconfont{
color: #fff;
}
#menu-selected .ant-menu-submenu-arrow::after,#menu-selected .ant-menu-submenu-arrow::before,#menu-selected .ant-menu-submenu-arrow:after,#menu-selected .ant-menu-submenu-arrow:before{
background: #fff;
}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected{
background-color: #fff;
color: #595959;
}
.ant-menu-item-active{
color: #1890FF;
}
.ant-menu-submenu-selected{
color: #595959;
}
.itemClass{
display: flex;
align-items: center;
font-size: 18px;
.iconfont{
margin-right:.75em;
color: #1890FF;
}
}
.ant-menu-vertical .ant-menu-item, .ant-menu-vertical-left .ant-menu-item, .ant-menu-vertical-right .ant-menu-item, .ant-menu-inline .ant-menu-item, .ant-menu-vertical .ant-menu-submenu-title, .ant-menu-vertical-left .ant-menu-submenu-title, .ant-menu-vertical-right .ant-menu-submenu-title, .ant-menu-inline .ant-menu-submenu-title{
margin-top: 0px;
margin-bottom: 0px;
.ant-input-group-addon .ant-btn-lg {
height: 40px;
}