6.28 党建攻坚第二版
@ -1,10 +1,10 @@
|
||||
export default [
|
||||
{
|
||||
name: 'partyMemberTopic',
|
||||
name: '党建攻坚',
|
||||
path: '/partyMemberTopic',
|
||||
routes: [
|
||||
{//首页
|
||||
name: 'home',
|
||||
name: '首页',
|
||||
path: '/partyMemberTopic/home',
|
||||
component: './PartyMemberTopic/Home',
|
||||
},
|
||||
|
BIN
src/assets/topic/branch.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
src/assets/topic/emblem.png
Normal file
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 519 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 400 KiB After Width: | Height: | Size: 353 KiB |
@ -58,28 +58,28 @@ export default {
|
||||
'menu.bidOpening': '开标',
|
||||
'menu.bidOpening.openList': '开标列表',
|
||||
|
||||
'menu.list.ProjectDocumentation':'项目管理',
|
||||
'menu.list.ProjectInformationManagement':'项目信息管理',
|
||||
'menu.list.ProjectComplaint':'异议投诉',
|
||||
'menu.list.ProjectDocumentation': '项目管理',
|
||||
'menu.list.ProjectInformationManagement': '项目信息管理',
|
||||
'menu.list.ProjectComplaint': '异议投诉',
|
||||
// 'menu.list.packageDivided':'标段划分',
|
||||
'menu.biddingInvitation':'投标邀请',
|
||||
'menu.biddingInvitation.biddingAnnouncement':'招标公告',
|
||||
'menu.biddingInvitation.responseFormat':'应答格式',
|
||||
'menu.list.packageInformation':'标包信息',
|
||||
'menu.profile.biddingAnnouncement':'招标公告',
|
||||
'menu.list.LookingForBusinessOpportunities':'寻找商机',
|
||||
'menu.list.IParticipate':'我要参与',
|
||||
'menu.list.DownloadPurchasingDocuments':'下载招标文件',
|
||||
'menu.list.SupplierQuestionsOrObjections':'供应商质疑或异议列表',
|
||||
'menu.supplierClarificationList':'供应商澄清列表',
|
||||
'menu.clarificationOfTheBid':'标中质询澄清列表',
|
||||
'menu.challengeListInTheIndex':'标中质询列表',
|
||||
'menu.clarifyTheList':'澄清列表',
|
||||
'menu.invitationLetter':'邀请函',
|
||||
'menu.mentionDoubtReply':'项目经理提疑回复列表',
|
||||
'menu.reviewResults.manager':'评审结果-项目经理',
|
||||
'menu.reviewResults.groupLeader':'评审结果-组长',
|
||||
'menu.reviewResults.jury':'评审结果-评委',
|
||||
'menu.biddingInvitation': '投标邀请',
|
||||
'menu.biddingInvitation.biddingAnnouncement': '招标公告',
|
||||
'menu.biddingInvitation.responseFormat': '应答格式',
|
||||
'menu.list.packageInformation': '标包信息',
|
||||
'menu.profile.biddingAnnouncement': '招标公告',
|
||||
'menu.list.LookingForBusinessOpportunities': '寻找商机',
|
||||
'menu.list.IParticipate': '我要参与',
|
||||
'menu.list.DownloadPurchasingDocuments': '下载招标文件',
|
||||
'menu.list.SupplierQuestionsOrObjections': '供应商质疑或异议列表',
|
||||
'menu.supplierClarificationList': '供应商澄清列表',
|
||||
'menu.clarificationOfTheBid': '标中质询澄清列表',
|
||||
'menu.challengeListInTheIndex': '标中质询列表',
|
||||
'menu.clarifyTheList': '澄清列表',
|
||||
'menu.invitationLetter': '邀请函',
|
||||
'menu.mentionDoubtReply': '项目经理提疑回复列表',
|
||||
'menu.reviewResults.manager': '评审结果-项目经理',
|
||||
'menu.reviewResults.groupLeader': '评审结果-组长',
|
||||
'menu.reviewResults.jury': '评审结果-评委',
|
||||
|
||||
'menu.Tender': '发标',
|
||||
'menu.Tender.UploadResponse': '上传应答文件',
|
||||
@ -161,15 +161,15 @@ export default {
|
||||
'menu.Auction.AuctionLookingForInnerShot': '寻找内拍项目',
|
||||
'menu.Auction.AuctionMyLookingForInnerShot': '我参与的内拍项目',
|
||||
'menu.Auction.AuctionManagerProject': '我发起的内拍项目',
|
||||
"menu.Auction.AuctionAnnouncementData":'公告信息',
|
||||
"menu.Auction.AuctionInfoupdateManage":'公告信息2',
|
||||
"menu.Auction.AuctionAnnouncementData": '公告信息',
|
||||
"menu.Auction.AuctionInfoupdateManage": '公告信息2',
|
||||
|
||||
|
||||
//项目委托
|
||||
'menu.entrust': '项目委托管理',
|
||||
'menu.entrust.manager': '委托管理(管理员)',
|
||||
'menu.entrust.operator': '委托管理(操作员)',
|
||||
'menu.entrust.mandatoryAdministration':'项目经理的委托管理',
|
||||
'menu.entrust.mandatoryAdministration': '项目经理的委托管理',
|
||||
//招标项目
|
||||
'menu.bidManage': '招标项目管理',
|
||||
'menu.bidManage.projectManage': '项目管理',
|
||||
@ -182,13 +182,13 @@ export default {
|
||||
'menu.Calibration.ViewNotice': '查看通知书',
|
||||
'menu.BiddingDocumentsDecrypt': '投标文件查看',/*BiddingDocumentsDecrypt_pg*/
|
||||
'menu.BiddingDocumentsDecrypt.BiddingDocumentsDecrypt_pg': '投标文件查看页面',
|
||||
'menu.BidAssessmentResults':'评审结果',
|
||||
'menu.BidAssessmentResults.BidAssessmentResults_pg':'评审结果页面',
|
||||
'menu.BidPublicityResult':'结果公示',
|
||||
'menu.BidPublicityResult.BidPublicityResult_pg':'结果公示页面',
|
||||
'menu.NtkoPage':'weboffice',
|
||||
'menu.NtkoPage.NtkoPage_pg':'ntko',
|
||||
'menu.finance.RevenueRecognition':'收入确认审核(项目经理)',
|
||||
'menu.BidAssessmentResults': '评审结果',
|
||||
'menu.BidAssessmentResults.BidAssessmentResults_pg': '评审结果页面',
|
||||
'menu.BidPublicityResult': '结果公示',
|
||||
'menu.BidPublicityResult.BidPublicityResult_pg': '结果公示页面',
|
||||
'menu.NtkoPage': 'weboffice',
|
||||
'menu.NtkoPage.NtkoPage_pg': 'ntko',
|
||||
'menu.finance.RevenueRecognition': '收入确认审核(项目经理)',
|
||||
//发票管理
|
||||
'menu.Invoice': '发票管理',
|
||||
'menu.Invoice.InvoiceManager': '发票列表',
|
||||
@ -222,4 +222,6 @@ export default {
|
||||
'menu.Recruit.ProjectsInvolved': '你参与的项目',
|
||||
'menu.Recruit.Find': '寻找商机',
|
||||
'menu.Recruit.Letter': '邀请函',
|
||||
//党建攻坚
|
||||
'menu.topic.home': '党建攻坚',
|
||||
};
|
||||
|
@ -1,49 +1,30 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import '../Style/ld_style.less';
|
||||
import { Input, List, Pagination } from 'antd';
|
||||
import topic_activity_default2 from '@/assets/topic/topic_activity_default2.jpg'
|
||||
import { Input, List, Spin } from 'antd';
|
||||
import topic_activity_default from '@/assets/topic/topic_activity_default.jpg'
|
||||
import time_icon from '@/assets/topic/timeIcon.png'
|
||||
import { getGracefulList } from './service';
|
||||
import { formatTime, getImageUrl } from '../utils';
|
||||
import { getImageUrl } from '../utils';
|
||||
import { history } from 'umi';
|
||||
|
||||
const { Search } = Input;
|
||||
|
||||
const data = [
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '张三',
|
||||
position: '党委书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
|
||||
const PersonInfor: React.FC<{}> = () => {
|
||||
//graceful data
|
||||
const [gracefulList, setGracefulList] = useState<any[]>([]);
|
||||
//loading
|
||||
const [loading, setLoading] = useState<boolean>(false);
|
||||
|
||||
//get graceful
|
||||
const getGracefulData = () => {
|
||||
getGracefulList().then(async res => {
|
||||
const getGracefulData = (value: string) => {
|
||||
setLoading(true);
|
||||
getGracefulList({ param: value }).then(async res => {
|
||||
if (res?.code == 200) {
|
||||
const data = await getImageUrl(res?.data, 'image', topic_activity_default2);
|
||||
const data = await getImageUrl(res?.data, 'image', topic_activity_default);
|
||||
setGracefulList(data);
|
||||
}
|
||||
}).finally(() => {
|
||||
setLoading(false);
|
||||
})
|
||||
}
|
||||
//onclick
|
||||
@ -61,7 +42,7 @@ const PersonInfor: React.FC<{}> = () => {
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
getGracefulData();
|
||||
getGracefulData('');
|
||||
}, [])
|
||||
return (
|
||||
<div className="page-container">
|
||||
@ -71,38 +52,41 @@ const PersonInfor: React.FC<{}> = () => {
|
||||
<span onClick={() => toGoBack()}>上一页</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="search">
|
||||
<span className="text"><span>活动风采</span></span>
|
||||
<div className="search-box">
|
||||
<Search
|
||||
placeholder="输入标题"
|
||||
allowClear
|
||||
enterButton="搜索"
|
||||
style={{ width: 322 }}
|
||||
<Spin spinning={loading}>
|
||||
<div className="search">
|
||||
<span className="text"><span>活动风采</span></span>
|
||||
<div className="search-box">
|
||||
<Search
|
||||
placeholder="输入标题"
|
||||
allowClear
|
||||
enterButton="搜索"
|
||||
style={{ width: 322 }}
|
||||
onSearch={getGracefulData}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="list-content">
|
||||
<List
|
||||
itemLayout="horizontal"
|
||||
pagination={{
|
||||
size: 'small',
|
||||
showTotal: (total) => `共 ${total} 条`,
|
||||
pageSize: 10,
|
||||
}}
|
||||
dataSource={gracefulList}
|
||||
renderItem={item => (
|
||||
<List.Item>
|
||||
<div className="list-pic">
|
||||
<img src={item.imageUrl} />
|
||||
<p className="tit"><span onClick={() => clickTitle(item)}>{item.title}</span></p>
|
||||
<p className="detail">{item.secordTitle}</p>
|
||||
<span className="time"><img src={time_icon} />{item.createTime}</span>
|
||||
</div>
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="list-content">
|
||||
<List
|
||||
itemLayout="horizontal"
|
||||
pagination={{
|
||||
size: 'small',
|
||||
showTotal: (total) => `共 ${total} 条`,
|
||||
pageSize: 10,
|
||||
}}
|
||||
dataSource={gracefulList}
|
||||
renderItem={item => (
|
||||
<List.Item>
|
||||
<div className="list-pic">
|
||||
<img src={item.imageUrl} />
|
||||
<p className="tit" onClick={() => clickTitle(item)}>{item.title}</p>
|
||||
<p className="detail">{item.content}</p>
|
||||
<span className="time"><img src={time_icon} />{item.createTime}</span>
|
||||
</div>
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
</Spin>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
//活动风采列表
|
||||
export async function getGracefulList() {
|
||||
return request('/api/biz-service-ebtp-extend/v1/eventpartybranch/eventStyle/list');
|
||||
export async function getGracefulList(data: any) {
|
||||
return request('/api/biz-service-ebtp-extend/v1/eventpartybranch/eventStyle/list', {
|
||||
method: 'POST',
|
||||
data: { ...data }
|
||||
});
|
||||
}
|
@ -1,9 +1,12 @@
|
||||
import React, { useEffect } from 'react';
|
||||
import React from 'react';
|
||||
import '../Style/detailStyle.less';
|
||||
import bannerProjectPic from '@/assets/topic/bannerProjectPic.jpg'
|
||||
import { history } from 'umi'
|
||||
import { getDetailData } from '../utils';
|
||||
|
||||
const HardDetail: React.FC<{}> = () => {
|
||||
//session detailData
|
||||
const item = getDetailData();
|
||||
//to home
|
||||
const toHome = () => {
|
||||
history.push("/partyMemberTopic/home");
|
||||
@ -18,12 +21,9 @@ const HardDetail: React.FC<{}> = () => {
|
||||
<span onClick={() => toHome()}>返回首页</span>
|
||||
</div>
|
||||
<div className="contentBlock01">
|
||||
<h3>党员先锋示范队“攻坚克难”活动项目计划书</h3>
|
||||
<h3>{item?.title}</h3>
|
||||
<div className="informText01">
|
||||
<p>近期,中国联通牵头的 “新一代宽带无线移动通信网” 国家科技重大专项课题“面向工业制造的5G业务研发与试验”顺利通过工信部的结项验收。课题完成了5G网络和工业网络融合系统架构、工业场景5G网络应用指标、工业场景无线干扰和电磁兼容、工业边缘计算、融合互通、流量标识和拥塞控制等关键技术和解决方案研究,研制了面向工业设备的5G统一接入网关和CPE终端设备。</p>
|
||||
<p>课题组在中兴滨江智能制造工厂和北汽福田诸城超卡工厂搭建了5G工业互联网试验验证平台,通过了第三方测试,实现生产现场的部署应用。滨江智能制造工厂采用UPF下沉到园区的5G本地专网方案,实现了智能制造现场的单板远程维修指导、云化AGV、机器视觉检测、沉浸式远程生产监控等业务的稳定应用。福田诸城超卡工厂采用5G公网方案,通过对覆盖厂区的5G网络进行优化配置,解决了保障工业视觉检测系统的时延和可靠性要求。同时,该研究也为广域网中确定性服务能力的实现积累了经验。</p>
|
||||
<p>2021年,中国联通重磅推出CUBE-Net3.0网络创新体系研究,以打造新一代信息通信基础设施为己任,为产业互联网的发展提供高效确定的ICT融合服务。重大科技专项的研究内容作为CUBE-Net3.0体系下的重大创新工程之“面向确定性服务的定制网络研究项目”的重要组成部分,相关工作得到了未来网络党支部的大力支持。“面向确定性服务的定制网络研究项目”被列为支部的党建融合工程之一,部门负责人及支部委员密切关注课题进展,指导项目推进工作,党支部成员也积极建言献策,保障重大专项课题顺利完成结项验收。后续支部党建融合工程及项目团队将持续探索5G确定性网络关键技术,充分发挥5G高速率、低时延和大连接的能力,以打造高品质网络+业务一体化产品服务为导向,实现5G和工业应用的深度融合,助力行业用户提升生产效率,加快智能化转型步伐。</p>
|
||||
<p>值此中国共产党成立100周年之际,研究院未来网络党支部将继续秉承敬业、精益、专注、创新的工匠精神,以更加饱满的工作热情、更加敬业的工作态度、更加务实的工作作风投入到研究工作中,以实际行动推动我国制造业向智能化转型升级,推动制造业高质量发展。</p>
|
||||
<div dangerouslySetInnerHTML={{ __html: item?.content }}></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -33,6 +33,7 @@
|
||||
background-size: 100%;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
cursor: pointer;
|
||||
|
||||
.carousel-textbg {
|
||||
display: flex;
|
||||
@ -54,16 +55,15 @@
|
||||
.carousel-text-click {
|
||||
font-size: 14px;
|
||||
margin-left: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.carousel-text-click:hover {
|
||||
color: #fff;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.carousel-content:hover {
|
||||
-webkit-filter: brightness(105%);
|
||||
filter: brightness(105%);
|
||||
}
|
||||
}
|
||||
|
||||
.left-carousel .slick-dots-bottom {
|
||||
@ -151,7 +151,7 @@
|
||||
|
||||
.left-graceful {
|
||||
background: #fff;
|
||||
padding: 24px 24px 50px;
|
||||
padding: 16px 24px 50px;
|
||||
|
||||
.left-graceful-bg {
|
||||
height: 198px;
|
||||
@ -189,7 +189,7 @@
|
||||
.left-project {
|
||||
margin-top: 20px;
|
||||
background: #fff;
|
||||
padding: 24px 24px 40px;
|
||||
padding: 16px 24px 40px;
|
||||
|
||||
.left-project-content {
|
||||
display: flex;
|
||||
@ -279,7 +279,7 @@
|
||||
letter-spacing: 1px;
|
||||
|
||||
.right-display-content-percentage {
|
||||
margin-left: 12px;
|
||||
margin-left: 8px;
|
||||
|
||||
.right-display-content-percentage-increase {
|
||||
color: #28e099;
|
||||
@ -317,6 +317,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
.right-display-content-pointer {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.right-divider {
|
||||
@ -352,7 +356,7 @@
|
||||
.bottom-global {
|
||||
margin: 0px 12px 84px;
|
||||
background: #fff;
|
||||
padding: 24px 24px 28px;
|
||||
padding: 16px 24px 28px;
|
||||
|
||||
.left-card-top {
|
||||
display: flex;
|
||||
@ -468,6 +472,12 @@
|
||||
vertical-align: text-bottom;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.bottom-close-icon {
|
||||
transform: rotate(-90deg);
|
||||
vertical-align: text-bottom;
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -508,18 +518,23 @@
|
||||
border-bottom-left-radius: 8px;
|
||||
border-bottom-right-radius: 8px;
|
||||
background: #eeeeee;
|
||||
padding: 12px;
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.topic-home-modal .ant-modal-content .ant-modal-body .bottom-modal-body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
.radio-group {
|
||||
padding: 0 40px 8px;
|
||||
width: 260px;
|
||||
margin-bottom: 12px;
|
||||
|
||||
.radio-content {
|
||||
font-size: 17.16px;
|
||||
font-family: '黑体';
|
||||
color: #939393;
|
||||
margin-left: 12px;
|
||||
margin-left: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -533,11 +548,18 @@
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-top: 8px;
|
||||
width: 100%;
|
||||
|
||||
.submit-text {
|
||||
color: #939393;
|
||||
}
|
||||
|
||||
.submit-cancelbutton {
|
||||
border-radius: 8px;
|
||||
border-color: #d44026;
|
||||
color: #d44026;
|
||||
}
|
||||
|
||||
.submit-button {
|
||||
border-radius: 8px;
|
||||
background: #d44026;
|
||||
|
@ -20,8 +20,9 @@ import topic_header_img from '@/assets/topic/topic_header_img.png'
|
||||
import topic_banner_default from '@/assets/topic/topic_banner_default.jpg'
|
||||
import topic_activity_default from '@/assets/topic/topic_activity_default.jpg'
|
||||
import { getHomeActivity, getHomeBanner, getHomeContact, getHomeGraceful, getHomeProject, getHomeRight, submitAdvice } from './service';
|
||||
import { formatTime, getImageUrl } from '../utils';
|
||||
import { formatTime, getImageUrl, isEmpty, isNotEmpty } from '../utils';
|
||||
|
||||
//卡片头
|
||||
const LeftCardTop = (props: any) => {
|
||||
return (
|
||||
<>
|
||||
@ -39,7 +40,7 @@ const LeftCardTop = (props: any) => {
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
//右侧专业线标题
|
||||
const RightDisplayTitle = (props: any) => {
|
||||
return (
|
||||
<div className='right-display-title'>
|
||||
@ -47,11 +48,18 @@ const RightDisplayTitle = (props: any) => {
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
//右侧专业线内容
|
||||
const RightDisplayContent = (props: any) => {
|
||||
const displayContentClick = () => {
|
||||
if (props.index == 0) {//党员数量
|
||||
window.open("/partyMemberTopic/personInfor");
|
||||
} else if (props.index == 1) {//党支部数量
|
||||
window.open("/partyMemberTopic/partyBranch");
|
||||
}
|
||||
}
|
||||
return (
|
||||
props.data?.length > 0 ? (
|
||||
<div className='right-display-content'>
|
||||
<div className={props.index == 0 || props.index == 1 ? 'right-display-content right-display-content-pointer' : 'right-display-content'} onClick={() => displayContentClick()}>
|
||||
<img src={props.img} className='right-display-content-img' />
|
||||
<div className='right-display-content-right'>
|
||||
<div className='right-display-content-title'>
|
||||
@ -74,7 +82,7 @@ const RightDisplayContent = (props: any) => {
|
||||
) : null
|
||||
)
|
||||
}
|
||||
|
||||
//右侧图表内容
|
||||
const RightGraphContent = (props: any) => {
|
||||
const random = Math.random().toString();
|
||||
useEffect(() => {
|
||||
@ -94,7 +102,7 @@ const RightGraphContent = (props: any) => {
|
||||
data: props.data,
|
||||
label: {
|
||||
formatter: props.type != null ? `{b}\n\n{c}${props.type} {d}%` : '{b}',
|
||||
fontSize: 14,
|
||||
fontSize: '90%',
|
||||
color: '#fff',
|
||||
position: 'inner',
|
||||
},
|
||||
@ -114,7 +122,7 @@ const RightGraphContent = (props: any) => {
|
||||
<div id={random} style={{ width: '100%', height: '100%' }}></div>
|
||||
)
|
||||
}
|
||||
|
||||
//活动联系人卡片内容
|
||||
const BottomCardContent = (props: any) => {
|
||||
|
||||
return (
|
||||
@ -124,7 +132,7 @@ const BottomCardContent = (props: any) => {
|
||||
<div className='bottom-card-title'>
|
||||
<Tooltip placement="topLeft" title={`${props.data.remark} ${props.data.contactName}`}>
|
||||
<span>{props.data.contactName}</span>
|
||||
<span className='bottom-card-title-type'>({props.data.remark})</span>
|
||||
{isNotEmpty(props.data.remark) && <span className='bottom-card-title-type'>({props.data.remark})</span>}
|
||||
</Tooltip>
|
||||
|
||||
</div>
|
||||
@ -139,7 +147,7 @@ const BottomCardContent = (props: any) => {
|
||||
</Col>
|
||||
)
|
||||
}
|
||||
|
||||
//活动联系人-我要提意见Modal
|
||||
const CommentModal = (props: any) => {
|
||||
const { TextArea } = Input;
|
||||
const [modalLoading, setModalLoading] = useState<boolean>(false);
|
||||
@ -161,7 +169,7 @@ const CommentModal = (props: any) => {
|
||||
}
|
||||
|
||||
const onSubmit = async () => {
|
||||
if (textRef.current == '' || textRef.current == null) {
|
||||
if (isEmpty(textRef.current)) {
|
||||
message.info("请先输入意见内容");
|
||||
return;
|
||||
}
|
||||
@ -200,7 +208,7 @@ const CommentModal = (props: any) => {
|
||||
footer={null}
|
||||
centered
|
||||
maskStyle={{ backgroundColor: 'rgba(0, 0, 0, 0.3)' }}
|
||||
width={350}
|
||||
width={450}
|
||||
>
|
||||
<Spin spinning={modalLoading}>
|
||||
<div className='bottom-modal-body'>
|
||||
@ -213,20 +221,23 @@ const CommentModal = (props: any) => {
|
||||
</Radio.Group>
|
||||
</div>
|
||||
<TextArea
|
||||
rows={6}
|
||||
rows={11}
|
||||
className='bottom-modal-textarea'
|
||||
maxLength={50}
|
||||
allowClear
|
||||
showCount
|
||||
defaultValue={''}
|
||||
onChange={onTextChange}
|
||||
placeholder="在这里输入我要提出的意见"
|
||||
placeholder="在这里输入我要提出的意见(最多输入50字)"
|
||||
/>
|
||||
<div className='bottom-modal-submit'>
|
||||
<span className='submit-text'>提交给{props.data?.contactDepartment}的{props.data?.contactName}</span>
|
||||
<Button type='primary' className='submit-button' onClick={onSubmit}>
|
||||
提交
|
||||
</Button>
|
||||
<div>
|
||||
<Button className='submit-cancelbutton' onClick={onCancel}>
|
||||
取消
|
||||
</Button>
|
||||
<Button type='primary' className='submit-button' onClick={onSubmit}>
|
||||
提交
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Spin>
|
||||
@ -333,7 +344,7 @@ const Home: React.FC<{}> = () => {
|
||||
if (res?.code == 200) {
|
||||
const data = Object.entries(res?.data);
|
||||
if (data.length > 3) {
|
||||
setContactData(data.slice(0, 6));
|
||||
setContactData(data.slice(0, 3));
|
||||
totalContactData.current = data;
|
||||
} else {
|
||||
setContactData(data);
|
||||
@ -354,6 +365,15 @@ const Home: React.FC<{}> = () => {
|
||||
window.open("/partyMemberTopic/newsDetail");
|
||||
}
|
||||
|
||||
//other buttom onclick
|
||||
const bottomOtherClick = (param: string) => {
|
||||
if (param == '0') {
|
||||
setContactData([...totalContactData.current]);
|
||||
} else {
|
||||
setContactData([...totalContactData.current.slice(0, 3)]);
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
getBannerList();
|
||||
getGracefulList();
|
||||
@ -374,11 +394,11 @@ const Home: React.FC<{}> = () => {
|
||||
<Carousel className='left-carousel' autoplay>
|
||||
{bannerList?.length > 0 && bannerList.map(item => (
|
||||
<div key={item.id}>
|
||||
<div className='carousel-content' style={{ backgroundImage: `url(${item.imageUrl})` }}>
|
||||
<div className='carousel-content' style={{ backgroundImage: `url(${item.imageUrl})` }} onClick={() => newsDetailClick(item)}>
|
||||
<div className='carousel-textbg'>
|
||||
<div className='carousel-text'>
|
||||
<span className='carousel-text-content'>{item.imageWord}</span>
|
||||
<span className='carousel-text-click' onClick={() => newsDetailClick(item)}>⋙点击查看详情</span>
|
||||
<span className='carousel-text-click'>⋙点击查看详情</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -417,7 +437,7 @@ const Home: React.FC<{}> = () => {
|
||||
<Col span={8} key={index}>
|
||||
<div className='left-graceful-bg' style={{ backgroundImage: `url(${item.imageUrl})` }} onClick={() => newsDetailClick(item)}>
|
||||
<div className='left-graceful-textbg'>
|
||||
<span className='left-graceful-text'>{item.imageWord}</span>
|
||||
<span className='left-graceful-text'>{item.title}</span>
|
||||
</div>
|
||||
</div>
|
||||
</Col>
|
||||
@ -473,7 +493,7 @@ const Home: React.FC<{}> = () => {
|
||||
{item.dataClass}
|
||||
</div>
|
||||
<div className='right-graph-subtitle'>
|
||||
{item.dataName != null && `${item.dataName}:${item.dataValue}${item.dataType}`}
|
||||
{isNotEmpty(item.dataName) && `${item.dataName}:${item.dataValue}${item.dataType}`}
|
||||
</div>
|
||||
<div className='right-graph-content'>
|
||||
<RightGraphContent name={item.dataClass} type={item.dataType} data={item.data} />
|
||||
@ -496,11 +516,11 @@ const Home: React.FC<{}> = () => {
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
{totalContactData.current != null && (
|
||||
{contactData.length != 0 && contactData.length > 2 && (
|
||||
<div className='bottom-other'>
|
||||
<div>
|
||||
<span className='bottom-other-text'>更多</span>
|
||||
<img src={topic_other} className='bottom-other-icon' />
|
||||
<span className='bottom-other-text' onClick={() => bottomOtherClick(contactData.length > 3 ? '1' : '0')}>{contactData.length > 3 ? '收起' : '更多'}</span>
|
||||
<img src={topic_other} className={contactData.length > 3 ? 'bottom-close-icon' : 'bottom-other-icon'} />
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
@ -7,7 +7,10 @@ export async function getHomeBanner() {
|
||||
|
||||
//活动风采列表
|
||||
export async function getHomeGraceful() {
|
||||
return request('/api/biz-service-ebtp-extend/v1/eventpartybranch/eventStyle/list');
|
||||
return request('/api/biz-service-ebtp-extend/v1/eventpartybranch/eventStyle/list', {
|
||||
method: 'POST',
|
||||
data: {},
|
||||
});
|
||||
}
|
||||
|
||||
//活动宣言
|
||||
@ -17,7 +20,10 @@ export async function getHomeActivity() {
|
||||
|
||||
//攻坚克难项目
|
||||
export async function getHomeProject() {
|
||||
return request('/api/biz-service-ebtp-extend/v1/eventpartybranch/eventSubject/list');
|
||||
return request('/api/biz-service-ebtp-extend/v1/eventpartybranch/eventSubject/list', {
|
||||
method: 'POST',
|
||||
data: {},
|
||||
});
|
||||
}
|
||||
|
||||
//右侧专业线数据
|
||||
|
@ -1,11 +1,11 @@
|
||||
import React, { useEffect } from 'react';
|
||||
import React from 'react';
|
||||
import '../Style/detailStyle.less';
|
||||
import bannerPic from '@/assets/topic/bannerPic.jpg'
|
||||
import newsTempPic from '@/assets/topic/newsTempPic.jpg'
|
||||
import { formatTime, getDetailData } from '../utils';
|
||||
import { history } from 'umi';
|
||||
|
||||
const NewsDetail: React.FC<{}> = () => {
|
||||
//session detailData
|
||||
const item = getDetailData();
|
||||
//to home
|
||||
const toHome = () => {
|
||||
@ -25,9 +25,7 @@ const NewsDetail: React.FC<{}> = () => {
|
||||
<span>{formatTime(item?.createTime, 'MM-DD HH:mm')}</span>
|
||||
<div className="informText02">
|
||||
<img src={item?.imageUrl} alt="" />
|
||||
<p>2月18日,中国联通召开 2022年党建暨党风廉政建设工作会议。本次会议以习近平新时代中国特色社会主义思想为指导,全面贯彻党的十九大和十九届历次全会精神,深入落实习近平总书记在十九届中央纪委六次全会上的重要讲话及全会精神,认真领会国资委党风廉政建设和反腐败工作会议暨警示教育大会精神,开展警示教育,总结2021年党建和党风廉政建设工作,部署2022年重点任务,坚持不懈把全面从严治党向纵深推进,为在新战略起跑之年实现高质量发展提供坚强政治保证。</p>
|
||||
<p>中国联通集团公司党组书记、董事长刘烈宏出席会议并讲话。党组副书记、总经理陈忠岳主持会议并传达十九届中央纪委六次全会、2022年全国组织部长会议、全国宣传部长会议及全国统战部长会议精神。党组副书记王俊治具体部署2022年党建工作。党组成员、纪检监察组组长董群专项安排2022年党风廉政建设和反腐败工作。与会人员集体观看警示教育片。</p>
|
||||
<p>刘烈宏指出,2021年是党和国家历史上具有里程碑意义的一年,也是中国联通厘定战略、开启新程的重要一年。过去的一年,中国联通各级党组织在以习近平同志为核心的党中央坚强领导下,认真贯彻新时代党的建设总要求,不断加强党的全面领导,突出抓好党的政治建设,积极弘扬伟大建党精神,持之以恒正风肃纪反腐,纵深推进全面从严治党,党建和党风廉政建设全面加强,多项工作得到上级部委的充分肯定。切实做到了坚持以党的政治建设为统领,牢牢把握了企业改革发展的政治方向;强化党的创新理论武装,进一步筑牢了信仰之基、补足精神之钙、把稳思想之舵;筑牢基层党组织建设根基,为高质量发展保驾护航、蓄势赋能;打造高素质专业化干部人才队伍,锻造了一支敢打硬仗、善打胜仗的联通铁军;党风廉政建设和反腐败持续深入,涵养了风清气正的良好政治生态。</p>
|
||||
<div dangerouslySetInnerHTML={{ __html: item?.content }}></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,60 +1,27 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import '../Style/ld_style.less';
|
||||
import { Input, List, Pagination } from 'antd';
|
||||
import { Input, List, Spin } from 'antd';
|
||||
import { getProjectList } from './service';
|
||||
import { formatTime } from '../utils';
|
||||
import { history } from 'umi';
|
||||
|
||||
const { Search } = Input;
|
||||
|
||||
const data = [
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '张三',
|
||||
position: '党委书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
}
|
||||
];
|
||||
|
||||
const PersonInfor: React.FC<{}> = () => {
|
||||
//project data
|
||||
const [projectList, setProjectList] = useState<any[]>([]);
|
||||
//loading
|
||||
const [loading, setLoading] = useState<boolean>(false);
|
||||
|
||||
//get project
|
||||
const getProjectData = () => {
|
||||
getProjectList().then(res => {
|
||||
const getProjectData = (value: string) => {
|
||||
setLoading(true);
|
||||
getProjectList({ param: value }).then(res => {
|
||||
if (res?.code == 200) {
|
||||
setProjectList(res?.data);
|
||||
}
|
||||
}).finally(() => {
|
||||
setLoading(false);
|
||||
})
|
||||
}
|
||||
|
||||
@ -73,7 +40,7 @@ const PersonInfor: React.FC<{}> = () => {
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
getProjectData();
|
||||
getProjectData('');
|
||||
}, [])
|
||||
|
||||
return (
|
||||
@ -84,36 +51,39 @@ const PersonInfor: React.FC<{}> = () => {
|
||||
<span onClick={() => toGoBack()}>上一页</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="search">
|
||||
<span className="text"><span>攻坚克难项目</span></span>
|
||||
<div className="search-box">
|
||||
<Search
|
||||
placeholder="输入标题"
|
||||
allowClear
|
||||
enterButton="搜索"
|
||||
style={{ width: 322 }}
|
||||
<Spin spinning={loading}>
|
||||
<div className="search">
|
||||
<span className="text"><span>攻坚克难项目</span></span>
|
||||
<div className="search-box">
|
||||
<Search
|
||||
placeholder="输入标题"
|
||||
allowClear
|
||||
enterButton="搜索"
|
||||
style={{ width: 322 }}
|
||||
onSearch={getProjectData}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="list-content">
|
||||
<List
|
||||
itemLayout="horizontal"
|
||||
pagination={{
|
||||
size: 'small',
|
||||
showTotal: (total) => `共 ${total} 条`,
|
||||
pageSize: 10,
|
||||
}}
|
||||
dataSource={projectList}
|
||||
renderItem={item => (
|
||||
<List.Item>
|
||||
<div className="list-box">
|
||||
<p onClick={() => clickTitle(item)}>{item.title}</p>
|
||||
<span>{formatTime(item.createTime, 'YYYY-MM-DD')}</span>
|
||||
</div>
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="list-content">
|
||||
<List
|
||||
itemLayout="horizontal"
|
||||
pagination={{
|
||||
size: 'small',
|
||||
showTotal: (total) => `共 ${total} 条`,
|
||||
pageSize: 10,
|
||||
}}
|
||||
dataSource={projectList}
|
||||
renderItem={item => (
|
||||
<List.Item>
|
||||
<div className="list-box">
|
||||
<p onClick={() => clickTitle(item)}>{item.title}</p>
|
||||
<span>{formatTime(item.createTime, 'YYYY-MM-DD')}</span>
|
||||
</div>
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
</Spin>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
//攻坚克难项目
|
||||
export async function getProjectList() {
|
||||
return request('/api/biz-service-ebtp-extend/v1/eventpartybranch/eventSubject/list');
|
||||
export async function getProjectList(data: any) {
|
||||
return request('/api/biz-service-ebtp-extend/v1/eventpartybranch/eventSubject/list', {
|
||||
method: 'POST',
|
||||
data: { ...data },
|
||||
});
|
||||
}
|
@ -3,78 +3,11 @@ import '../Style/ld_style.less';
|
||||
import { Input, List } from 'antd';
|
||||
import { history } from 'umi'
|
||||
import { getBranchList, getMemberAndBranch } from './service';
|
||||
import person from '@/assets/topic/person.png'
|
||||
import branch from '@/assets/topic/branch.png'
|
||||
|
||||
const { Search } = Input;
|
||||
|
||||
const data = [
|
||||
{
|
||||
title: '集团党支部',
|
||||
num: 987,
|
||||
},
|
||||
{
|
||||
title: '北京分公司党支部',
|
||||
num: 127,
|
||||
},
|
||||
{
|
||||
title: '山东分公司党支部',
|
||||
num: 110,
|
||||
},
|
||||
{
|
||||
title: '吉林分公司党支部',
|
||||
num: 121,
|
||||
},
|
||||
{
|
||||
title: '辽宁分公司党支部',
|
||||
num: 130,
|
||||
},
|
||||
{
|
||||
title: '陕西分公司党支部',
|
||||
num: 105,
|
||||
},
|
||||
{
|
||||
title: '山西分公司党支部',
|
||||
num: 104,
|
||||
},
|
||||
{
|
||||
title: '湖北分公司党支部',
|
||||
num: 113,
|
||||
},
|
||||
{
|
||||
title: '湖南分公司党支部',
|
||||
num: 111,
|
||||
},
|
||||
{
|
||||
title: '江苏分公司党支部',
|
||||
num: 987,
|
||||
},
|
||||
{
|
||||
title: '河南分公司党支部',
|
||||
num: 121,
|
||||
},
|
||||
{
|
||||
title: '河北分公司党支部',
|
||||
num: 100,
|
||||
},
|
||||
{
|
||||
title: '天津分公司党支部',
|
||||
num: 86,
|
||||
},
|
||||
{
|
||||
title: '上海分公司党支部',
|
||||
num: 98,
|
||||
},
|
||||
{
|
||||
title: '安徽分公司党支部',
|
||||
num: 105,
|
||||
},
|
||||
{
|
||||
title: '江西分公司党支部',
|
||||
num: 121,
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
|
||||
const PartyBranch: React.FC<{}> = () => {
|
||||
//member number and branch number
|
||||
const [memberNumber, setMemberNumber] = useState<any>({});
|
||||
@ -97,11 +30,17 @@ const PartyBranch: React.FC<{}> = () => {
|
||||
}
|
||||
})
|
||||
}
|
||||
//search params redirect
|
||||
const onSearch = (value: string) => {
|
||||
const params = {
|
||||
param: value
|
||||
}
|
||||
history.push({ pathname: "/partyMemberTopic/personInfor", state: params });
|
||||
}
|
||||
|
||||
//onclick
|
||||
const clickCard = (data: any) => {
|
||||
sessionStorage.setItem("detailData", JSON.stringify(data));
|
||||
history.push("/partyMemberTopic/personInfor");
|
||||
history.push({ pathname: "/partyMemberTopic/personInfor", state: data });
|
||||
}
|
||||
|
||||
//to home
|
||||
@ -121,13 +60,14 @@ const PartyBranch: React.FC<{}> = () => {
|
||||
</div>
|
||||
</div>
|
||||
<div className="search">
|
||||
<span className="text"><span>党员名录</span>(当前共270条)</span>
|
||||
<span className="text"><span>党员名录</span>(当前共{memberNumber?.member}条)</span>
|
||||
<div className="search-box">
|
||||
<Search
|
||||
placeholder="输入姓名/邮箱/电话"
|
||||
allowClear
|
||||
enterButton="搜索"
|
||||
style={{ width: 322 }}
|
||||
onSearch={onSearch}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -144,9 +84,23 @@ const PartyBranch: React.FC<{}> = () => {
|
||||
<div className="wrapper" onClick={() => clickCard(item)}>
|
||||
<div className="pic-bg">{item.branchName}</div>
|
||||
<div className="mess">
|
||||
<div className="mess-left">党员数量</div>
|
||||
{/* <div className="mess-left">党员数量</div>
|
||||
<div className="mess-right">
|
||||
<span>{item.count}</span>人
|
||||
</div> */}
|
||||
<div className="mess-left">
|
||||
<span>{item.branchCount}</span>个
|
||||
<div>
|
||||
<img src={branch} />
|
||||
<span>党支部数</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mess-right">
|
||||
<span>{item.count}</span>人
|
||||
<div>
|
||||
<img src={person} />
|
||||
<span>党员数量</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,62 +1,44 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import '../Style/ld_style.less';
|
||||
import { Input, List } from 'antd';
|
||||
import { getMemberList } from './service';
|
||||
import { getDetailData } from '../utils';
|
||||
import { Input, List, Spin } from 'antd';
|
||||
import { getMemberList, memberListSearch } from './service';
|
||||
import { isNotEmpty } from '../utils';
|
||||
import emblem from '@/assets/topic/emblem.png'
|
||||
import { history } from 'umi';
|
||||
|
||||
const { Search } = Input;
|
||||
|
||||
const data = [
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '张三',
|
||||
position: '党委书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
},
|
||||
{
|
||||
title: '集团党支部',
|
||||
name: '李四',
|
||||
position: '党委副书记',
|
||||
}
|
||||
];
|
||||
|
||||
const PersonInfor: React.FC<{}> = () => {
|
||||
const PersonInfor: React.FC<{}> = (props: any) => {
|
||||
//member list
|
||||
const [memberData, setMemberData] = useState<any[]>([]);
|
||||
|
||||
//get session
|
||||
const item = getDetailData();
|
||||
//loading
|
||||
const [loading, setLoading] = useState<boolean>(false);
|
||||
//get member list
|
||||
const getMemberData = () => {
|
||||
getMemberList({ belongBranch: 4 }).then(res => {
|
||||
const getMemberData = (branchCode: string) => {
|
||||
setLoading(true);
|
||||
getMemberList({ belongBranch: branchCode }).then(res => {
|
||||
if (res?.code == 200) {
|
||||
setMemberData(res?.data);
|
||||
}
|
||||
}).finally(() => {
|
||||
setLoading(false);
|
||||
})
|
||||
}
|
||||
//search member
|
||||
const onSearch = (value: string) => {
|
||||
const params = {
|
||||
param: value
|
||||
}
|
||||
if (isNotEmpty(props.location.state?.branchCode)) {
|
||||
params['belongBranch'] = props.location.state?.branchCode;
|
||||
}
|
||||
setLoading(true);
|
||||
memberListSearch(params).then(res => {
|
||||
if (res?.code == 200) {
|
||||
setMemberData(res?.data);
|
||||
}
|
||||
}).finally(() => {
|
||||
setLoading(false);
|
||||
})
|
||||
}
|
||||
//to home
|
||||
@ -68,8 +50,13 @@ const PersonInfor: React.FC<{}> = () => {
|
||||
window.history.go(-1);
|
||||
}
|
||||
useEffect(() => {
|
||||
getMemberData();
|
||||
if (isNotEmpty(props.location.state?.branchCode)) {//有党支部
|
||||
getMemberData(props.location.state?.branchCode);
|
||||
} else {
|
||||
onSearch(props.location.state?.param);
|
||||
}
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<div className="page-container">
|
||||
<div className="top-banner">
|
||||
@ -78,39 +65,45 @@ const PersonInfor: React.FC<{}> = () => {
|
||||
<span onClick={() => toGoBack()}>上一页</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="search">
|
||||
<span className="text"><span>党员名录</span>(当前共270条)</span>
|
||||
<div className="search-box">
|
||||
<Search
|
||||
placeholder="输入姓名/邮箱/电话"
|
||||
allowClear
|
||||
enterButton="搜索"
|
||||
style={{ width: 322 }}
|
||||
<Spin spinning={loading}>
|
||||
<div className="search">
|
||||
<span className="text"><span>党员名录</span>(当前共{memberData.length}条)</span>
|
||||
<div className="search-box">
|
||||
<Search
|
||||
placeholder="输入姓名/邮箱/电话"
|
||||
allowClear
|
||||
defaultValue={props.location.state?.param}
|
||||
enterButton="搜索"
|
||||
style={{ width: 322 }}
|
||||
onSearch={onSearch}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mess-box mess-detail">
|
||||
<List
|
||||
grid={{ gutter: 16, column: 4 }}
|
||||
dataSource={memberData}
|
||||
renderItem={item => (
|
||||
<List.Item>
|
||||
<div className="wrapper">
|
||||
<div className="top-bg">
|
||||
<div className="tit">{item.branchName}</div>
|
||||
<div className="text-r">
|
||||
<img src={emblem} />{item.contactName}
|
||||
</div>
|
||||
<div className="text-r yellow">{item.job}</div>
|
||||
</div>
|
||||
<div className="mess-content">
|
||||
<div>部门:{item.contactUnit}</div>
|
||||
<div>邮箱:{item.contactEmail}</div>
|
||||
<div>电话:{item.contactMobiphone}</div>
|
||||
</div>
|
||||
</div>
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mess-box mess-detail">
|
||||
<List
|
||||
grid={{ gutter: 16, column: 4 }}
|
||||
dataSource={memberData}
|
||||
renderItem={item => (
|
||||
<List.Item>
|
||||
<div className="wrapper">
|
||||
<div className="top-bg">
|
||||
<div className="tit">{item.branchName}</div>
|
||||
<div className="text-r">{item.contactName}</div>
|
||||
<div className="text-r yellow">{item.contactUnit}</div>
|
||||
</div>
|
||||
<div className="mess">
|
||||
<div>部门:{item.contactUnit}</div>
|
||||
<div>邮箱:{item.contactEmail}</div>
|
||||
<div>电话:{item.contactMobiphone}</div>
|
||||
</div>
|
||||
</div>
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
</Spin>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -7,3 +7,11 @@ export async function getMemberList(params: any) {
|
||||
params: params
|
||||
});
|
||||
}
|
||||
|
||||
//党员列表模糊查询
|
||||
export async function memberListSearch(data: any) {
|
||||
return request('/api/biz-service-ebtp-extend/v1/eventpartybranch/partyMember/paramQuery', {
|
||||
method: 'POST',
|
||||
data: { ...data },
|
||||
});
|
||||
}
|
@ -103,6 +103,7 @@
|
||||
.contentBlock02 .informText02 img {
|
||||
display: inherit;
|
||||
margin: 10px auto;
|
||||
height: 488px;
|
||||
}
|
||||
|
||||
.contentBlock02 .informText02 p {
|
||||
|
@ -28,6 +28,10 @@
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
span:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -120,29 +124,64 @@
|
||||
.mess {
|
||||
border: 1px solid #aaaaaa;
|
||||
border-top: 0;
|
||||
padding: 24px;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
.mess-content {
|
||||
border: 1px solid #aaaaaa;
|
||||
border-top: 0;
|
||||
padding: 24px;
|
||||
}
|
||||
|
||||
.mess-left {
|
||||
display: inline-block;
|
||||
width: 50%;
|
||||
background: url("../../../assets/topic/person.png") no-repeat 30px 10px;
|
||||
font-size: 22px;
|
||||
padding-top: 56px;
|
||||
padding-left: 26px;
|
||||
font-size: 20px;
|
||||
color: #959595;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.mess-left span {
|
||||
font-size: 36px;
|
||||
color: #fd0100;
|
||||
font-weight: 600;
|
||||
color: #302f2f;
|
||||
}
|
||||
|
||||
.mess-left div {
|
||||
img {
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
span {
|
||||
font-size: 20px;
|
||||
color: #000;
|
||||
margin-left: 4px;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
.mess-right {
|
||||
display: inline-block;
|
||||
width: 50%;
|
||||
font-size: 20px;
|
||||
color: #959595;
|
||||
font-size: 24px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.mess-right span {
|
||||
font-size: 36px;
|
||||
color: #ffb119;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.mess-right div {
|
||||
img {
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
span {
|
||||
color: #ffb119;
|
||||
font-size: 70px;
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
color: #000;
|
||||
margin-left: 4px;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -177,6 +216,14 @@
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.text-r img {
|
||||
height: 18px;
|
||||
width: 18px;
|
||||
position: relative;
|
||||
top: -2px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.yellow {
|
||||
color: #ffd03f;
|
||||
font-size: 14px;
|
||||
@ -252,10 +299,13 @@
|
||||
font-size: 18px;
|
||||
color: #333;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.tit span {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tit:hover {
|
||||
.tit span:hover {
|
||||
color: #a81c0c;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
@ -39,3 +39,17 @@ export const formatTime = (time: string, format: string) => {
|
||||
export const getDetailData = () => {
|
||||
return JSON.parse(sessionStorage.getItem('detailData') as any);
|
||||
}
|
||||
/**
|
||||
* 判断是否等于空
|
||||
* @param value
|
||||
*/
|
||||
export function isEmpty(value: any) {
|
||||
return value === null || value === void 0 || value === '';
|
||||
}
|
||||
/**
|
||||
* 判断不等于空
|
||||
* @param value
|
||||
*/
|
||||
export function isNotEmpty(value: any) {
|
||||
return value !== null && value !== void 0 && value !== '';
|
||||
}
|