Quellcode durchsuchen

客户跟进汇总

HW vor 3 Jahren
Ursprung
Commit
7cb20c5774

+ 1 - 1
js/component/manageCenter/customer/NEW/intentionCustomer/channel.jsx

@@ -812,7 +812,7 @@ class Channel extends Component{
         ));
         const hasSelected = this.state.selectedRowKeys.length > 0;
         return (
-            <div className="user-content">
+            <div className="user-content channel">
                 <ShowModalDiv ShowModal={this.state.showModal} />
                 <div className="content-title">
                     <span>渠道客户</span>

+ 4 - 2
js/component/manageCenter/customer/NEW/intentionCustomer/channel.less

@@ -1,3 +1,5 @@
-.ant-upload-list{
-  display: none !important;
+.channel{
+  .ant-upload-list{
+    display: none !important;
+  }
 }

+ 28 - 37
js/component/manageCenter/customer/NEW/intentionCustomer/intentionDetail/detail/visit.jsx

@@ -89,17 +89,22 @@ const Visit = React.createClass({
           title: "跟进说明",
           dataIndex: "result",
           key: "result",
-          // }, {
-          // 	title: '操作',
-          // 	dataIndex: 'ttt',
-          // 	key: 'ttt',
-          // 	render: (text, record, index) => {
-          // 		return <div>
-          //                 {!record.readOnly&&<Popconfirm title="是否删除?" onConfirm={(e)=>{this.visitDelet(record)}} okText="删除" cancelText="不删除">
-          // 				    <Button style={{marginRight:'10px',color:'#ffffff',background:'#f00',border:'none'}} onClick={(e)=>{e.stopPropagation()}}>删除</Button>
-          // 				</Popconfirm>}
-          //             </div>
-          // 	}
+		  width: 150,
+		  render: (text, record) => {
+			return (
+				<Tooltip placement="topLeft" title={<div style={{wordBreak:"break-all"}}>{text}</div>}>
+					<div style={{
+						cursor:"pointer",
+						width: '150px',
+						whiteSpace: 'nowrap',
+						overflow: 'hidden',
+						textOverflow: 'ellipsis',
+					}}>
+						{text}
+					</div>
+				</Tooltip>
+			);
+		  },
         },
         {
           title: "跟进时间",
@@ -114,32 +119,18 @@ const Visit = React.createClass({
 			  return (
 				  <div>
 					  {record.guidance ?
-						  <div style={{
-							  cursor:"pointer",
-							  width: '150px',
-							  whiteSpace: 'nowrap',
-							  overflow: 'hidden',
-							  textOverflow: 'ellipsis',
-						  }}
-						  onClick={(e)=>{
-							e.stopPropagation();
-							Modal.info({
-							  title: '指导意见',
-							  content: (
-								  <div style={{
-									  wordWrap:"break-word"
-								  }}>
-									  {record.guidance}
-								  </div>
-							  ),
-							  onOk() {},
-							});
-						  }}>
-							  <span>
-								{record.guidanceName ? '('+record.guidanceName+')' : null}
-								{record.guidance}
-							  </span>
-					  </div> : (this.props.isEditGuidanceLv ? <Button
+						  <Tooltip placement="topLeft" title={<div style={{wordBreak:"break-all"}}>{(record.guidanceName ? '('+record.guidanceName+')' : '') + record.guidance}</div>}>
+							  <div style={{
+								  cursor:"pointer",
+								  width: '150px',
+								  whiteSpace: 'nowrap',
+								  overflow: 'hidden',
+								  textOverflow: 'ellipsis',
+							  }}>
+								  {record.guidanceName ? '('+record.guidanceName+')' : null}
+								  {record.guidance}
+							  </div>
+						  </Tooltip> : (this.props.isEditGuidanceLv ? <Button
 						  onClick={(e) => {
 							  e.stopPropagation();
 							  this.setState({

+ 6 - 27
js/component/manageCenter/customer/NEW/intentionCustomer/intentionDetail/detail/visitDetail.jsx

@@ -1,7 +1,7 @@
 import React from 'react'
 import $ from 'jquery/src/ajax';
 import {Modal, Form, Button, Spin, Table, Select, message, Tag, Tooltip} from 'antd';
-import {getfllowSituation,getcustomerStatue,getClockState,splitUrl} from '@/tools.js';
+import {getfllowSituation,getcustomerStatue,getClockState,splitUrl,getContactType} from '@/tools.js';
 const FormItem =Form.Item;
 import BusName from '../../followDetail/businessName.jsx';
 import ImgList from "../../../../../../common/imgList";
@@ -228,27 +228,6 @@ const VisitDetail = React.createClass({
 						});
 					}
 				};
-				if(parseInt(thedata.contactType)==0){
-					this.setState({
-						contactType:'外出'
-					})
-				}else if(parseInt(thedata.contactType)==1){
-					this.setState({
-						contactType:'电话'
-					})
-				}else if(parseInt(thedata.contactType)==2){
-					this.setState({
-						contactType:'QQ'
-					})
-				}else if(parseInt(thedata.contactType)==3){
-					this.setState({
-						contactType:'微信'
-					})
-				}else if(parseInt(thedata.contactType)==4){
-					this.setState({
-						contactType:'邮箱'
-					})
-				}
 				this.setState({
 					followIds: thedata.followId,
 					contacts: thedata.contacts,
@@ -256,7 +235,7 @@ const VisitDetail = React.createClass({
 					uid: thedata.uid,
 					data: theArr,
 					result: thedata.result,
-					// contactType: parseInt(thedata.contactType),
+					contactType:getContactType(thedata.contactType),
 					followTime:thedata.followTime
 				});
 			}.bind(this),
@@ -437,7 +416,7 @@ const VisitDetail = React.createClass({
 				visitModul: true,
 				loading: true,
 			})
-			if(nextProps.followData.contactType === "0"){
+			if(nextProps.followData.contactType === "5"){
 				this.getListPublicReleaseLog(nextProps.followData.followId);
 				this.getFollowDtails(nextProps.followData.followId);
 			}
@@ -465,7 +444,7 @@ const VisitDetail = React.createClass({
 			    			<Spin spinning={this.state.loading}>
 			    			   	<div className="clearfix">
 									{
-										!(this.state.contactType === '外出' && Object.keys(this.state.followDtails).length > 0) ?
+										!(this.state.contactType === '公出打卡' && Object.keys(this.state.followDtails).length > 0) ?
 											<div>
 												<FormItem
 													labelCol={{ span:4 }}
@@ -505,7 +484,7 @@ const VisitDetail = React.createClass({
 												</div>
 											</div> : null
 									}
-									{this.state.contactType === '外出' && Object.keys(this.state.followDtails).length > 0 ? <div>
+									{this.state.contactType === '公出打卡' && Object.keys(this.state.followDtails).length > 0 ? <div>
 										<div className="clearfix">
 											<FormItem
 												labelCol={{ span: 4 }}
@@ -543,7 +522,7 @@ const VisitDetail = React.createClass({
 											/>
 										</div>
 									</div> : null}
-									{!(this.state.contactType === '外出' && Object.keys(this.state.followDtails).length > 0) ? <div className="clearfix">
+									{!(this.state.contactType === '公出打卡' && Object.keys(this.state.followDtails).length > 0) ? <div className="clearfix">
 					                 	<div style={{fontSize:'18px',marginLeft:'100px',marginTop:'15px',marginBottom:'10px'}}>业务意向</div>
 					                 	<div className="clearfix" >
 		                    			    <Spin spinning={this.state.loading}>

+ 29 - 2
js/component/manageCenter/customer/content.jsx

@@ -394,14 +394,41 @@ class Content extends Component {
                     });
                 });
                 break;
-            //客户跟进汇总
-            case 'followUpSummary':
+            //客户跟进汇总(看所有人的)
+            case 'followUpSummaryAdmin':
                 require.ensure([], () => {
                     const FollowUpSummary = require('./managementFollow/followUpSummary/index').default;
                     this.setState({
                         component: <FollowUpSummary
                             isGuidanceLv={true}         //是否可查看指导  也用于判断是否为跟进管理页面
                             isEditGuidanceLv={false}     //是否可以编辑指导
+                            shiroType={2}
+                        />
+                    });
+                });
+                break;
+            //客户跟进汇总(只能看自己的)
+            case 'followUpSummaryOrdinary':
+                require.ensure([], () => {
+                    const FollowUpSummary = require('./managementFollow/followUpSummary/index').default;
+                    this.setState({
+                        component: <FollowUpSummary
+                            isGuidanceLv={true}         //是否可查看指导  也用于判断是否为跟进管理页面
+                            isEditGuidanceLv={false}     //是否可以编辑指导
+                            shiroType={0}
+                        />
+                    });
+                });
+                break;
+            //客户跟进汇总(既能看自己的也能看自己下级的)
+            case 'followUpSummaryManager':
+                require.ensure([], () => {
+                    const FollowUpSummary = require('./managementFollow/followUpSummary/index').default;
+                    this.setState({
+                        component: <FollowUpSummary
+                            isGuidanceLv={true}         //是否可查看指导  也用于判断是否为跟进管理页面
+                            isEditGuidanceLv={false}     //是否可以编辑指导
+                            shiroType={1}
                         />
                     });
                 });

+ 52 - 34
js/component/manageCenter/customer/managementFollow/followUpSummary/index.jsx

@@ -92,6 +92,22 @@ class FollowUpSummary extends Component{
                     title: "跟进说明",
                     dataIndex: "result",
                     key: "result",
+                    width: 150,
+                    render: (text, record) => {
+                        return (
+                            <Tooltip placement="topLeft" title={<div style={{wordBreak:"break-all"}}>{text}</div>}>
+                                <div style={{
+                                    cursor:"pointer",
+                                    width: '150px',
+                                    whiteSpace: 'nowrap',
+                                    overflow: 'hidden',
+                                    textOverflow: 'ellipsis',
+                                }}>
+                                  {text}
+                                </div>
+                            </Tooltip>
+                        );
+                    },
                 },
                 {
                     title: "跟进时间",
@@ -110,32 +126,18 @@ class FollowUpSummary extends Component{
                     width:150,
                     render: (text, record) => {
                         return (
-                            <div style={{
-                                cursor:"pointer",
-                                width: '150px',
-                                whiteSpace: 'nowrap',
-                                overflow: 'hidden',
-                                textOverflow: 'ellipsis',
-                            }}
-                                 onClick={(e)=>{
-                                     e.stopPropagation();
-                                     Modal.info({
-                                         title: '指导意见',
-                                         content: (
-                                             <div style={{
-                                                 wordWrap:"break-word"
-                                             }}>
-                                                 {record.guidance}
-                                             </div>
-                                         ),
-                                         onOk() {},
-                                     });
-                                 }}>
-							  <span>
-                                {record.guidanceName ? '('+record.guidanceName+')' : null}
-								{record.guidance}
-							  </span>
-                            </div>
+                            <Tooltip placement="topLeft" title={<div style={{wordBreak:"break-all"}}>{(record.guidanceName ? '('+record.guidanceName+')' : '') + text}</div>}>
+                                <div style={{
+                                    cursor:"pointer",
+                                    width: '150px',
+                                    whiteSpace: 'nowrap',
+                                    overflow: 'hidden',
+                                    textOverflow: 'ellipsis',
+                                }}>
+                                    {record.guidanceName ? '('+record.guidanceName+')' : null}
+                                    {text}
+                                </div>
+                            </Tooltip>
                         );
                     },
                 },
@@ -170,6 +172,7 @@ class FollowUpSummary extends Component{
             releaseDate2:[],
 
             userName:undefined,
+            followName:undefined,
             userType:undefined,
             contactType:undefined,
             depId: undefined,
@@ -202,6 +205,7 @@ class FollowUpSummary extends Component{
                 pageNo: pageNo || 1,
                 pageSize: this.state.pagination.pageSize,
                 userName:this.state.userName || undefined,
+                followName: this.state.followName || undefined,
                 userType:isNaN(parseInt(this.state.userType)) ? undefined : this.state.userType,
                 contactType: isNaN(parseInt(this.state.contactType)) ? undefined : this.state.contactType,
                 depId: this.state.depId || undefined,
@@ -211,6 +215,8 @@ class FollowUpSummary extends Component{
                 createEndTime:this.state.releaseDate1[1] ? this.state.releaseDate1[1] : undefined,
                 guidanceStartTime:this.state.releaseDate2[0] ? this.state.releaseDate2[0] : undefined,
                 guidanceEndTime:this.state.releaseDate2[1] ? this.state.releaseDate2[1] : undefined,
+
+                shiroType:this.props.shiroType
             },
             success: function (data) {
                 ShowModal(this);
@@ -264,7 +270,7 @@ class FollowUpSummary extends Component{
                     for(let i=0;i<data.data.length;i++){
                         let theData = data.data[i];
                         theArr.push(
-                            <Select.Option value={theData.id} key={theData.id}>{theData.name}</Select.Option>
+                            <Select.Option value={theData.name} key={theData.name}>{theData.name}</Select.Option>
                         );
                     }
                     this.setState({
@@ -274,11 +280,7 @@ class FollowUpSummary extends Component{
                     message.warning(data.error[0].message);
                 }
             }.bind(this),
-        }).always(function () {
-            this.setState({
-                loading: false
-            });
-        }.bind(this));
+        }).always(function () {}.bind(this));
     }
 
     //品类数据获取
@@ -339,6 +341,7 @@ class FollowUpSummary extends Component{
         let loading = message.loading('加载中...');
         let data = {
             userName:this.state.userName || undefined,
+            followName:this.state.followName || undefined,
             userType:isNaN(parseInt(this.state.userType)) ? undefined : this.state.userType,
             contactType: isNaN(parseInt(this.state.contactType)) ? undefined : this.state.contactType,
             depId:this.state.depId || undefined,
@@ -348,6 +351,8 @@ class FollowUpSummary extends Component{
             createEndTime:this.state.releaseDate1[1] ? this.state.releaseDate1[1] : undefined,
             guidanceStartTime:this.state.releaseDate2[0] ? this.state.releaseDate2[0] : undefined,
             guidanceEndTime:this.state.releaseDate2[1] ? this.state.releaseDate2[1] : undefined,
+
+            shiroType:this.props.shiroType
         };
         for (let i in data){
             if(typeof data[i] === "undefined"){
@@ -382,6 +387,7 @@ class FollowUpSummary extends Component{
     reset(){
         this.setState({
             userName:undefined,
+            followName:undefined,
             userType:undefined,
             contactType:undefined,
             depId:undefined,
@@ -415,6 +421,16 @@ class FollowUpSummary extends Component{
                                         }}
                                     />
                                 </Form.Item>
+                                <Form.Item style={{marginTop: '10px'}}>
+                                    <Input
+                                        placeholder="跟进人名称"
+                                        value={this.state.followName}
+                                        style={{ width: 150, marginRight: 10 }}
+                                        onChange={(e) => {
+                                            this.setState({ followName: e.target.value });
+                                        }}
+                                    />
+                                </Form.Item>
                                 <Form.Item>
                                     <Select
                                         placeholder="选择客户类型"
@@ -425,10 +441,12 @@ class FollowUpSummary extends Component{
                                                 this.setState({ userType: e })
                                             }}
                                     >
+                                        {/*0所有 1私有客户2 公共客户 3签单客户4渠道客户*/}
                                         <Select.Option value={0}>所有</Select.Option>
                                         <Select.Option value={1}>私有客户</Select.Option>
-                                        <Select.Option value={2}>签单客户</Select.Option>
-                                        <Select.Option value={3}>渠道客户</Select.Option>
+                                        <Select.Option value={2}>公共客户</Select.Option>
+                                        <Select.Option value={3}>签单客户</Select.Option>
+                                        <Select.Option value={4}>渠道客户</Select.Option>
                                     </Select>
                                 </Form.Item>
                                 <Form.Item>

+ 4 - 4
js/component/manageCenter/customerService/administration/customerServiceRecord.jsx

@@ -54,7 +54,7 @@ class CustomerServiceRecord extends Component{
                                     text === 3 ? '企业不打算申报/注销' :
                                         text === 4 ? '待续签,未报价(客服维护中)' :
                                             text === 5 ? '待续签,已报价(客服维护中)' :
-                                                text === 6 ? '已续签/复审、续签时间、续签项目('+record.renewalTimes+')' : ''
+                                                text === 6 ? ('已续签/复审、续签时间、续签项目' + (record.renewalTimes ? '('+record.renewalTimes+')' : '')): ''
                         return (
                             <Tooltip placement="topLeft" title={str}>
                                 <div style={{
@@ -517,8 +517,8 @@ class CustomerServiceRecord extends Component{
                                 <Input
                                     placeholder={'请输入备注'}
                                     type='textarea'
-                                    rows={3}
-                                    maxLength={64}
+                                    rows={4}
+                                    maxLength={200}
                                     style={{
                                         width:"400px"
                                     }}
@@ -527,7 +527,7 @@ class CustomerServiceRecord extends Component{
                                         this.setState({ comment: e.target.value });
                                     }}
                                 />
-                                <div style={{position:"absolute",zIndex:9999,color:'#a09f9f',bottom:'8px',right:'21px'}}>{this.state.comment.length+'/'+64}</div>
+                                <div style={{position:"absolute",zIndex:9999,color:'#a09f9f',bottom:'8px',right:'21px'}}>{this.state.comment.length+'/'+200}</div>
                             </div>
                         </div>
                     </div>

+ 1 - 1
js/component/manageCenter/customerService/administration/followUp.jsx

@@ -194,7 +194,7 @@ class FollowUp extends Component{
                                     text === 3 ? '企业不打算申报/注销' :
                                         text === 4 ? '待续签,未报价(客服维护中)' :
                                             text === 5 ? '待续签,已报价(客服维护中)' :
-                                                text === 6 ? '已续签/复审、续签时间、续签项目('+record.renewalTimes+')' : ''
+                                                text === 6 ? ('已续签/复审、续签时间、续签项目' + (record.renewalTimes ? '('+record.renewalTimes+')' : '')): ''
                         return (
                             <Tooltip placement="topLeft" title={str}>
                                 <div style={{

+ 22 - 21
js/component/manageCenter/index/content.jsx

@@ -48,29 +48,24 @@ const MessageModal = React.createClass({
             columns: [
                 {
                     title: '类型',
-                    dataIndex: 'noticeType',
-                    key: 'noticeType',
-                    render: (text, record) => {
-//                      return <div>{
-//                   		text<8?<a href='#' onClick={(e) =>{ e.stopPropagation(),this.setStore(record)}}> {record.noticeTypeName} </a >:
-//                      <span>{record.noticeTypeName}</span>
-//                          }</div>
-						//return <a href='#' onClick={(e) =>{ e.stopPropagation(),this.setStore(record)}}> {record.noticeTypeName} </a >
-                       return(<span>{record.noticeTypeName}</span>)
-                    }
+                    dataIndex: 'noticeTypeName',
+                    key: 'noticeTypeName',
+                    width: 120,
                 }, {
                     title: '时间',
                     dataIndex: 'createTimeFormattedDate',
-                    key: 'createTimeFormattedDate'
+                    key: 'createTimeFormattedDate',
+                    width: 120
                 }, {
                     title: '内容',
                     dataIndex: 'content',
                     key: 'content',
+                    width:610,
                     render: (text, record) => {
                         return(
                             <Tooltip placement="topLeft" title={text}>
                                 <div style={{
-                                    maxWidth: '687px',
+                                    width: 610,
                                     textOverflow: "ellipsis",
                                     whiteSpace: "nowrap",
                                     overflow: 'hidden',
@@ -85,17 +80,22 @@ const MessageModal = React.createClass({
                     title: "操作",
                     dataIndex: "abc",
                     key: "abc",
+                    width:150,
                     render: (text, record) => {
                         return (
-                            record.noticeType === 48 || record.noticeType === 49 ?
-                                <Button type="primary" onClick={()=>{
-                                    this.category();
-                                    record.id = record.uid;
-                                    this.setState({
-                                        followData: record,
-                                        visitModul: true,
-                                    });
-                                }}>立即跟进</Button> : null
+                            <div style={{width:150}}>
+                                {
+                                    record.noticeType === 48 || record.noticeType === 49 ?
+                                        <Button type="primary" onClick={()=>{
+                                            this.category();
+                                            record.id = record.uid;
+                                            this.setState({
+                                                followData: record,
+                                                visitModul: true,
+                                            });
+                                        }}>立即跟进</Button> : null
+                                }
+                            </div>
                         )
                     }
                 }
@@ -522,6 +522,7 @@ const MessageModal = React.createClass({
                         columns={this.state.columns}
                         dataSource={this.state.unreadData[this.state.unreadDataIndex] ? this.state.unreadData[this.state.unreadDataIndex].list : []}
                         pagination={false}
+                        scroll={{ y: 600, x: 1000 }}
                     />
                 </Spin>
               <Button