123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- import React,{ Component } from 'react';
- import {Select} from "antd";
- import { provinceList} from '@/NewDicProvinceList';
- import './index.less';
- import TabelContent from '../../../../common/tabelContent'
- import DetailedList from './detailedList';
- import moment from "moment";
- class InterviewStatistics extends Component{
- constructor(props) {
- super(props);
- this.state={
- columns: [
- {
- title: "序号",
- dataIndex: "key",
- key: "key",
- },
- {
- title: "省份",
- dataIndex: "name",
- key: "name",
- },
- {
- title: "老客户面谈数",
- dataIndex: "useInterview",
- key: "useInterview",
- },
- {
- title: "老客户签单数/金额",
- dataIndex: "useQuantity",
- key: "useQuantity",
- render:(text, record)=>(
- text + '/' + record.useTotal
- )
- },
- {
- title: "老客户面谈率",
- dataIndex: "useRatio",
- key: "useRatio",
- render:(text)=>(
- parseFloat(text) * 100 + '%'
- )
- },
- {
- title: "新客户面谈数",
- dataIndex: "newInterview",
- key: "newInterview",
- },
- {
- title: "新客户签单数/金额",
- dataIndex: "newQuantity",
- key: "newQuantity",
- render:(text, record)=>(
- text + '/' + record.newTotal
- )
- },
- {
- title: "新客户面谈率",
- dataIndex: "newRatio",
- key: "newRatio",
- render:(text)=>(
- parseFloat(text) * 100 + '%'
- )
- },
- {
- title: "总面数",
- dataIndex: "totalInterview",
- key: "totalInterview",
- },
- {
- title: "总签单数/金额",
- dataIndex: "totalQuantity",
- key: "totalQuantity",
- render:(text, record)=>(
- text + '/' + record.total
- )
- },
- {
- title: "总面谈率",
- dataIndex: "totalRatio",
- key: "totalRatio",
- render:(text)=>(
- parseFloat(text) * 100 + '%'
- )
- },
- ],
- searchConfig:{}
- }
- }
- searchList(){
- let arr = [
- {
- type:'departmentSelect',
- dataKey:'depId',
- placeholder:'请选择部门'
- },
- {
- type:'select',
- dataKey:'province',
- placeholder:'请选择省份',
- selectOptionList:()=>{
- let Province = [];
- provinceList.map(function(item) {
- let id = String(item.id)
- Province.push(
- <Select.Option value={id} key={item.name}>{item.name}</Select.Option>
- )
- });
- return Province
- },
- },
- //0 总数量 1总金额 2总面谈
- {
- type:'select',
- dataKey:'sort',
- placeholder:'请选择排序',
- selectList:[
- {
- value:'0',
- label:'按总数量排序'
- },
- {
- value:'1',
- label:'按总金额排序'
- },
- {
- value:'2',
- label:'按总面谈排序'
- },
- ]
- },
- {
- type:'times',
- title:'公出时间',
- dataKey:'date',
- format: 'YYYY/MM',
- },
- ]
- return arr;
- }
- render() {
- return (
- <div className="user-content interviewStatistics">
- <div className="content-title">
- <span>
- 公出面谈表<span style={{fontSize:'10px',color:'#0f2be5',marginLeft:'10px'}}>注:通过公出打卡,同一家公司,多次面谈数只计算1次</span>
- </span>
- </div>
- <TabelContent
- searchList={this.searchList()}
- columns={this.state.columns}
- searchConfig={{
- date:moment().subtract(1, 'months').format("YYYY-MM")
- }}
- searchOperation={(value)=>{
- for(let i of Object.keys(value)){
- if(i === 'sort' || i === 'pageNo' || i === 'pageSize'){
- delete value[i]
- }
- }
- this.setState({searchConfig:value})}
- }
- tabelApi={'/api/admin/followStatisticsList'}
- exportApi={'/api/admin/followStatisticsListExport'}
- onRowClick={(row)=>{
- this.setState({
- visible: true,
- recordInfor: row,
- })
- }}
- exportExecProcessing={(data)=>{
- if(data.province){
- let arr = provinceList.filter(v=>String(v.id) === String(data.province))
- data.provinceName = arr[0].name
- }
- return data;
- }}
- dataProcessing={(data)=>{
- let theArr = [];
- for (let i = 0; i < data.data.length; i++) {
- let thisdata = data.data[i];
- thisdata.key=i + 1;
- theArr.push(thisdata);
- }
- return theArr;
- }}
- />
- {this.state.visible ? <DetailedList
- searchConfig={this.state.searchConfig}
- visible={this.state.visible}
- recordInfor={this.state.recordInfor}
- onCancel={()=>{
- this.setState({
- visible:false,
- recordInfor:{}
- })
- }}/> : null}
- </div>
- )
- }
- }
- export default InterviewStatistics;
|