wuqun 2 years ago
parent
commit
2fccfb448c
  1. 128
      web/client/src/sections/business/containers/customer/customerContactFollowup.jsx
  2. 4
      web/client/src/sections/business/containers/index.js
  3. 9
      web/client/src/sections/business/nav-item.jsx
  4. 13
      web/client/src/sections/business/routes.js

128
web/client/src/sections/business/containers/customer/customerContactFollowup.jsx

@ -0,0 +1,128 @@
import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux';
import { Select, Input, Button, Banner, Radio, Tooltip, Table } from '@douyinfe/semi-ui';
import { IconSearch } from '@douyinfe/semi-icons';
import '../../style.less'
import moment from 'moment'
const CustomerContactFollowup = (props) => {
const [downloadUrl, setDownloadUrl] = useState(null);
const [warningBanner, setWarningBanner] = useState(null);
const columns = [
{
title: '序号',
dataIndex: 'index',
render: (text, record, index) => index + 1
},
{
title: '客户名称',
dataIndex: 'department',
},
{
title: '项目名称',
dataIndex: 'salesManager',
},
{
title: '部门',
dataIndex: 'projectName',
},
{
title: '跟进人员',
dataIndex: 'customerName',
},
{
title: '跟进日期',
dataIndex: 'projectType',
},
{
title: '客户联系人',
dataIndex: 'projectState',
},
{
title: '联系方式',
dataIndex: 'projectDescribe',
},
{
title: '拜访方式',
dataIndex: 'creationTime',
},
{
title: '项目进展',
dataIndex: 'reserveProjectCycle',
}
];
const data = [];
const exportAll = () => {
}
return (
<>
<div style={{ padding: '0px 12px' }}>
<div style={{ display: 'flex' }}>
<div style={{ color: 'rgba(0,0,0,0.45)', fontSize: 14 }}>业务管理</div>
<div style={{ color: 'rgba(0,0,0,0.45)', fontSize: 14, margin: '0px 8px' }}>/</div>
<div style={{ color: 'rgba(0,0,0,0.45)', fontSize: 14 }}>客户报表</div>
<div style={{ color: '#033C9A', fontSize: 14, margin: '0px 8px' }}>/</div>
<div style={{ color: '#033C9A', fontSize: 14 }}>客户联系人对接跟进</div>
</div>
<div style={{ background: '#FFFFFF', boxShadow: '0px 0px 12px 2px rgba(220,222,224,0.2)', borderRadius: 2, padding: '20px ', marginTop: 9 }}>
<div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
<div style={{ display: 'flex', alignItems: 'baseline' }}>
<div style={{ width: 0, height: 20, borderLeft: '3px solid #0F7EFB', borderTop: '3px solid transparent', borderBottom: '3px solid transparent' }}></div>
<div style={{ fontFamily: "YouSheBiaoTiHei", fontSize: 24, color: '#033C9A', marginLeft: 8 }}>客户联系人对接跟进</div>
<div style={{ marginLeft: 6, fontSize: 12, color: '#969799', fontFamily: "DINExp", }}>CUSTOMER CONTACT FOLLOW UP</div>
</div>
</div>
{
warningBanner &&
(<Banner
type="danger"
description={warningBanner}
onClose={() => setWarningBanner(null)}
/>)}
<div style={{ display: 'flex', marginTop: 16, marginBottom: 17 }}>
<div style={{ marginLeft: 12, marginRight: 18 }}>
<Input suffix={<IconSearch />}
showClear
placeholder='请输入关键字'
style={{ width: 346 }}
// onChange={seachValueChange}
>
</Input>
</div>
<Button theme='solid' type='primary' style={{ width: 80, borderRadius: 2, height: 32, background: '#DBECFF', color: '#005ABD' }}
onClick={() => {
// dispatch(humanAffairs.getMemberList({ keywordTarget, keyword, state: typeChoose })).then((res) => {//
// if (res.success) {
// setArchivesList(res.payload.data.rows)
// }
// })
}}>查询</Button>
<Button theme='solid' type='secondary' style={{ width: 80, borderRadius: 2, marginLeft: 15 }}
onClick={exportAll}>导出全部</Button>
</div>
<div style={{ borderBottom: '1px solid #F2F3F5', marginBottom: 16 }}></div>
<Table columns={columns} dataSource={data} pagination={false} />
</div>
{
downloadUrl ? <iframe key={downloadUrl} src={downloadUrl} style={{ display: 'none' }} /> : ''
}
</div>
</>
)
}
function mapStateToProps(state) {
const { auth, global } = state;
return {
user: auth.user,
actions: global.actions,
};
}
export default connect(mapStateToProps)(CustomerContactFollowup);

4
web/client/src/sections/business/containers/index.js

@ -9,6 +9,7 @@ import InvoicingDetails from './performanceReport/invoicingDetails';
import BackMoneyDetails from './performanceReport/backMoneyDetails'; import BackMoneyDetails from './performanceReport/backMoneyDetails';
import AchievementDetails from './performanceReport/achievementDetails'; import AchievementDetails from './performanceReport/achievementDetails';
import SalesDistributionDetails from './salesReport/salesDistributionDetails'; import SalesDistributionDetails from './salesReport/salesDistributionDetails';
import CustomerContactFollowup from './customer/customerContactFollowup'
export { export {
ReserveItemsReporting, ReserveItemsReporting,
@ -19,5 +20,6 @@ export {
InvoicingDetails, InvoicingDetails,
BackMoneyDetails, BackMoneyDetails,
AchievementDetails, AchievementDetails,
SalesDistributionDetails SalesDistributionDetails,
CustomerContactFollowup
}; };

9
web/client/src/sections/business/nav-item.jsx

@ -53,6 +53,15 @@ export function getNavItem(user, dispatch) {
itemKey: 'salesDistributionDetails', itemKey: 'salesDistributionDetails',
to: '/businessManagement/salesReport/salesDistributionDetails', text: '销售人员分布明细表' to: '/businessManagement/salesReport/salesDistributionDetails', text: '销售人员分布明细表'
}] }]
},{
itemKey: 'customer',
text: '客户联系人对接跟进',
icon: <iconpark-icon style={{ width: 20, height: 20 }} name="iconcbzhongceng"></iconpark-icon>,
to: '/businessManagement/customer/contactFollowup',
items: [{
itemKey: 'customerContactFollowup',
to: '/businessManagement/customer/customerContactFollowup', text: '客户联系人对接跟进'
}]
}] }]
}, },
] ]

13
web/client/src/sections/business/routes.js

@ -1,6 +1,6 @@
import { import {
ReserveItemsReporting, ReserveItemsPeriodicStatistics, ReserveItemsDepSummary, ReserveItemsLostStatistics, ReserveItemsReporting, ReserveItemsPeriodicStatistics, ReserveItemsDepSummary, ReserveItemsLostStatistics,
ContractDetails, InvoicingDetails, BackMoneyDetails, AchievementDetails, SalesDistributionDetails ContractDetails, InvoicingDetails, BackMoneyDetails, AchievementDetails, SalesDistributionDetails, CustomerContactFollowup
} from './containers'; } from './containers';
export default [{ export default [{
@ -71,6 +71,17 @@ export default [{
component: SalesDistributionDetails, component: SalesDistributionDetails,
breadcrumb: '销售人员分布明细表' breadcrumb: '销售人员分布明细表'
}] }]
},
{
path: '/customer',
key: 'customer',
breadcrumb: '销售报表',
childRoutes: [{
path: '/customerContactFollowup',
key: 'customerContactFollowup',
component: CustomerContactFollowup,
breadcrumb: '客户联系人对接跟进'
}]
}] }]
} }
}]; }];
Loading…
Cancel
Save