|
@@ -13,16 +13,20 @@ import {
|
|
|
Tag,
|
|
|
Tooltip,
|
|
|
} from "antd";
|
|
|
-import { ShowModal, splitUrl, getClockState } from "@/tools";
|
|
|
+import { ShowModal, getContactType } from "@/tools";
|
|
|
+import { salesList, } from "@/dataDic"
|
|
|
import { ChooseList } from "../../order/orderNew/chooseList";
|
|
|
import $ from "jquery/src/ajax";
|
|
|
import "./index.less";
|
|
|
import moment from "moment";
|
|
|
+import ChannelLog from "../../channelList/channelunit/channellog"; //转交日志
|
|
|
+import ChangeLog from "../../channelList/channelunit/changelog"; //更名日志
|
|
|
+import DetailList from "./detaillist";//客户订单列表
|
|
|
|
|
|
const { TabPane } = Tabs;
|
|
|
const { RangePicker } = DatePicker;
|
|
|
|
|
|
-class PublicSummary extends Component {
|
|
|
+class SignCustomer extends Component {
|
|
|
constructor(props) {
|
|
|
super(props);
|
|
|
this.state = {
|
|
@@ -35,99 +39,95 @@ class PublicSummary extends Component {
|
|
|
title: "客户名称",
|
|
|
dataIndex: "nickname",
|
|
|
key: "nickname",
|
|
|
- width: 150,
|
|
|
- // fixed: "left",
|
|
|
- render: (text) => {
|
|
|
+ fixed: "left",
|
|
|
+ width: 200,
|
|
|
+ render: (text, record) => {
|
|
|
return (
|
|
|
- <div>{text}</div>
|
|
|
+ <div>
|
|
|
+ {text}
|
|
|
+ {record.member == 1 && <Tag color="#1E90FF">会员</Tag>}
|
|
|
+ {record.chargeback == 1 && <Tag color="#F21212">退</Tag>}
|
|
|
+ {record.bigCustomer == 1 && <Tag color="#F21212">大客户</Tag>}
|
|
|
+ </div>
|
|
|
);
|
|
|
},
|
|
|
},
|
|
|
{
|
|
|
- title: "标签",
|
|
|
- dataIndex: "status",
|
|
|
- key: "status",
|
|
|
- width: 200,
|
|
|
- render: (text, record) => (
|
|
|
- <div style={{ display: "flex", flexDirection: "row" }}>
|
|
|
- <Tag
|
|
|
- color={["#45b97c", "#69541b", "#f47920", "#8552a1", "#228fbd"][record.type]}
|
|
|
- >
|
|
|
- {
|
|
|
- record.type === 0
|
|
|
- ? "业务公出" : record.type === 1
|
|
|
- ? "技术公出" : record.type === 2
|
|
|
- ? "行政公出" : record.type === 3
|
|
|
- ? "技术协单" : record.type === 4
|
|
|
- ? "协单助手" : ""
|
|
|
- }
|
|
|
- </Tag>
|
|
|
- <Tag color={getClockState(text).color}>
|
|
|
- {getClockState(text).title}
|
|
|
- </Tag>
|
|
|
- {record.updateStatus == 1 && <Tag color="#1E90FF">改</Tag>}
|
|
|
- </div>
|
|
|
- ),
|
|
|
- },
|
|
|
- {
|
|
|
title: "签单次数",
|
|
|
- dataIndex: "userName",
|
|
|
- key: "userName",
|
|
|
+ dataIndex: "signNumber",
|
|
|
+ key: "signNumber",
|
|
|
+ render: (text) =>
|
|
|
+ <span style={{ color: "#58A3FF", textDecoration: "underline" }}>
|
|
|
+ {text}
|
|
|
+ </span>
|
|
|
},
|
|
|
{
|
|
|
- title: "签单金额",
|
|
|
- dataIndex: "sname",
|
|
|
- key: "sname",
|
|
|
+ title: "总金额(万元)",
|
|
|
+ dataIndex: "signAmount",
|
|
|
+ key: "signAmount",
|
|
|
},
|
|
|
{
|
|
|
title: "首次签单时间",
|
|
|
- dataIndex: "createTimes",
|
|
|
- key: "createTimes",
|
|
|
+ dataIndex: "firstSigningTime",
|
|
|
+ key: "firstSigningTime",
|
|
|
},
|
|
|
{
|
|
|
title: "最新签单时间",
|
|
|
- dataIndex: "createTime",
|
|
|
- key: "createTime",
|
|
|
+ dataIndex: "lastSigningTime",
|
|
|
+ key: "lastSigningTime",
|
|
|
},
|
|
|
{
|
|
|
- title: "最新签单类型",
|
|
|
- dataIndex: "duration",
|
|
|
- key: "duration",
|
|
|
+ title: "签单类型",
|
|
|
+ dataIndex: "lastSalesType",
|
|
|
+ key: "lastSalesType",
|
|
|
+ render: (text) => (
|
|
|
+ <div>{salesList[text]}</div>
|
|
|
+ )
|
|
|
},
|
|
|
{
|
|
|
- title: "跟进人",
|
|
|
- dataIndex: "remarks",
|
|
|
- key: "remarks",
|
|
|
+ title: "归属人",
|
|
|
+ dataIndex: "name",
|
|
|
+ key: "name",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "归属部门",
|
|
|
+ dataIndex: "depName",
|
|
|
+ key: "depName",
|
|
|
},
|
|
|
{
|
|
|
- title: "跟进部门",
|
|
|
- dataIndex: "plan",
|
|
|
- key: "plan",
|
|
|
+ title: "跟进人",
|
|
|
+ dataIndex: "followAname",
|
|
|
+ key: "followAname",
|
|
|
},
|
|
|
{
|
|
|
title: "跟进方式",
|
|
|
- dataIndex: "expectedEffect",
|
|
|
- key: "expectedEffect",
|
|
|
+ dataIndex: "lastFollowType",
|
|
|
+ key: "lastFollowType",
|
|
|
+ render: (text) => (
|
|
|
+ <div>{getContactType(text)}</div>
|
|
|
+ )
|
|
|
},
|
|
|
{
|
|
|
title: "跟进说明",
|
|
|
- dataIndex: "supplement",
|
|
|
- key: "supplement",
|
|
|
+ dataIndex: "followExplain",
|
|
|
+ key: "followExplain",
|
|
|
+ width: 200,
|
|
|
},
|
|
|
{
|
|
|
title: "次数",
|
|
|
- dataIndex: "nextPlan",
|
|
|
- key: "nextPlan",
|
|
|
+ dataIndex: "followNumber",
|
|
|
+ key: "followNumber",
|
|
|
},
|
|
|
{
|
|
|
title: "最新跟进时间",
|
|
|
- dataIndex: "auditInfo",
|
|
|
- key: "auditInfo",
|
|
|
+ dataIndex: "lastFollowTime",
|
|
|
+ key: "lastFollowTime",
|
|
|
},
|
|
|
{
|
|
|
- title: "累计以前项目",
|
|
|
- dataIndex: "annexUrls",
|
|
|
- key: "annexUrls",
|
|
|
+ title: "已签项目",
|
|
|
+ dataIndex: "taskNames",
|
|
|
+ key: "taskNames",
|
|
|
+ width: "15%",
|
|
|
},
|
|
|
],
|
|
|
pagination: {
|
|
@@ -143,20 +143,21 @@ class PublicSummary extends Component {
|
|
|
},
|
|
|
},
|
|
|
dataSource: [],
|
|
|
- searchInfor: {}
|
|
|
+ searchInfor: {},
|
|
|
+ mvisible: "",
|
|
|
};
|
|
|
this.loadData = this.loadData.bind(this);
|
|
|
this.resetAll = this.resetAll.bind(this);
|
|
|
this.changeList = this.changeList.bind(this);
|
|
|
this.selectSuperId = this.selectSuperId.bind(this);
|
|
|
this.supervisor = this.supervisor.bind(this);
|
|
|
+ this.supervisor1 = this.supervisor1.bind(this);
|
|
|
this.httpChange = this.httpChange.bind(this);
|
|
|
- this.blurChange = this.blurChange.bind(this);
|
|
|
+ this.httpChange1 = this.httpChange1.bind(this);
|
|
|
this.selectAuto = this.selectAuto.bind(this);
|
|
|
- this.getCustomer = this.getCustomer.bind(this);
|
|
|
- this.selectCustomerAuto = this.selectCustomerAuto.bind(this);
|
|
|
- this.httpCustomerChange = this.httpCustomerChange.bind(this);
|
|
|
- this.blurCustomerChange = this.blurCustomerChange.bind(this);
|
|
|
+ this.selectAuto1 = this.selectAuto1.bind(this);
|
|
|
+ this.blurChange = this.blurChange.bind(this);
|
|
|
+ this.blurChange1 = this.blurChange1.bind(this);
|
|
|
this.exportExec = this.exportExec.bind(this);
|
|
|
}
|
|
|
//获取上级组织
|
|
@@ -188,7 +189,7 @@ class PublicSummary extends Component {
|
|
|
}).always(
|
|
|
function () {
|
|
|
this.setState({
|
|
|
- loading: false,
|
|
|
+ // loading: false,
|
|
|
});
|
|
|
}.bind(this)
|
|
|
);
|
|
@@ -221,13 +222,10 @@ class PublicSummary extends Component {
|
|
|
method: "get",
|
|
|
dataType: "json",
|
|
|
crossDomain: false,
|
|
|
- url: globalConfig.context + "/api/admin/release/publicReleaseDtails",
|
|
|
+ url: globalConfig.context + "/api/admin/statistis/signSummary",
|
|
|
data: datas,
|
|
|
success: function (data) {
|
|
|
ShowModal(this);
|
|
|
- this.setState({
|
|
|
- loading: false,
|
|
|
- });
|
|
|
if (data.error && data.error.length === 0) {
|
|
|
if (data.data.list) {
|
|
|
pagination.current = data.data.pageNo;
|
|
@@ -294,60 +292,62 @@ class PublicSummary extends Component {
|
|
|
}).always(function () { }.bind(this));
|
|
|
}
|
|
|
|
|
|
+ supervisor1(e) {
|
|
|
+ $.ajax({
|
|
|
+ method: "get",
|
|
|
+ dataType: "json",
|
|
|
+ crossDomain: false,
|
|
|
+ url: globalConfig.context + "/api/admin/customer/listAdminByName",
|
|
|
+ data: {
|
|
|
+ adminName: e,
|
|
|
+ status: "2",
|
|
|
+ },
|
|
|
+ success: function (data) {
|
|
|
+ if (data.error && data.error.length === 0) {
|
|
|
+ this.setState({
|
|
|
+ customerArr1: data.data,
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ message.warning(data.error[0].message);
|
|
|
+ }
|
|
|
+ }.bind(this),
|
|
|
+ }).always(function () { }.bind(this));
|
|
|
+ }
|
|
|
+
|
|
|
httpChange(e) {
|
|
|
if (e.length >= 1) {
|
|
|
this.supervisor(e);
|
|
|
}
|
|
|
this.setState({
|
|
|
- auto: e,
|
|
|
+ followAname: e,
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- selectAuto(value, options) {
|
|
|
- this.setState({
|
|
|
- auto: value,
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- httpCustomerChange(e) {
|
|
|
+ httpChange1(e) {
|
|
|
if (e.length >= 1) {
|
|
|
- this.getCustomer(e);
|
|
|
+ this.supervisor1(e);
|
|
|
}
|
|
|
this.setState({
|
|
|
- customer: e,
|
|
|
+ adminName: e,
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- selectCustomerAuto(value, options) {
|
|
|
+ selectAuto(value, options) {
|
|
|
this.setState({
|
|
|
- customer: value,
|
|
|
+ followAname: value,
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- getCustomer(e) {
|
|
|
- $.ajax({
|
|
|
- method: "get",
|
|
|
- dataType: "json",
|
|
|
- crossDomain: false,
|
|
|
- url: globalConfig.context + "/api/admin/customer/getUserByName",
|
|
|
- data: {
|
|
|
- name: e,
|
|
|
- },
|
|
|
- success: function (data) {
|
|
|
- if (data.error && data.error.length === 0) {
|
|
|
- this.setState({
|
|
|
- customerList: data.data,
|
|
|
- });
|
|
|
- } else {
|
|
|
- message.warning(data.error[0].message);
|
|
|
- }
|
|
|
- }.bind(this),
|
|
|
- }).always(function () { }.bind(this));
|
|
|
+ selectAuto1(value, options) {
|
|
|
+ this.setState({
|
|
|
+ adminName: value,
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
- blurCustomerChange(e) {
|
|
|
- let theType = "";
|
|
|
- let contactLists = this.state.customerList || [];
|
|
|
+ blurChange(e) {
|
|
|
+ const { searchInfor } = this.state
|
|
|
+ let theType = undefined;
|
|
|
+ let contactLists = this.state.customerArr || [];
|
|
|
if (e) {
|
|
|
contactLists.map(function (item) {
|
|
|
if (item.name == e.toString()) {
|
|
@@ -356,13 +356,16 @@ class PublicSummary extends Component {
|
|
|
});
|
|
|
}
|
|
|
this.setState({
|
|
|
- theCustomerTypes: theType,
|
|
|
+ searchInfor: Object.assign(searchInfor, {
|
|
|
+ followAid: theType,
|
|
|
+ }),
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- blurChange(e) {
|
|
|
- let theType = "";
|
|
|
- let contactLists = this.state.customerArr || [];
|
|
|
+ blurChange1(e) {
|
|
|
+ const { searchInfor } = this.state
|
|
|
+ let theType = undefined;
|
|
|
+ let contactLists = this.state.customerArr1 || [];
|
|
|
if (e) {
|
|
|
contactLists.map(function (item) {
|
|
|
if (item.name == e.toString()) {
|
|
@@ -371,14 +374,11 @@ class PublicSummary extends Component {
|
|
|
});
|
|
|
}
|
|
|
this.setState({
|
|
|
- theTypes: theType,
|
|
|
+ searchInfor: Object.assign(searchInfor, {
|
|
|
+ aid: theType,
|
|
|
+ }),
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
- componentWillMount() {
|
|
|
- this.loadData();
|
|
|
- this.selectSuperId();
|
|
|
- }
|
|
|
// 导出Excel
|
|
|
exportExec() {
|
|
|
this.setState({
|
|
@@ -394,7 +394,7 @@ class PublicSummary extends Component {
|
|
|
dataType: "json",
|
|
|
crossDomain: false,
|
|
|
url:
|
|
|
- globalConfig.context + "/api/admin/release/publicReleaseDtails/export",
|
|
|
+ globalConfig.context + "/api/admin/statistis/signSummary/export",
|
|
|
data,
|
|
|
success: function (data) {
|
|
|
if (data.error.length === 0) {
|
|
@@ -428,20 +428,36 @@ class PublicSummary extends Component {
|
|
|
closeDesc() {
|
|
|
this.setState({
|
|
|
mvisible: "",
|
|
|
+ showDetail: false,
|
|
|
});
|
|
|
this.loadData(this.state.pageNo);
|
|
|
}
|
|
|
+ // 点击行
|
|
|
+ tableRowClick(record) {
|
|
|
+ let rows ={};
|
|
|
+ rows["nickname"]=record.nickname
|
|
|
+ rows["uid"]=record.id
|
|
|
+ this.setState({
|
|
|
+ rowData: rows,
|
|
|
+ showDetail: true,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ componentWillMount() {
|
|
|
+ this.loadData();
|
|
|
+ this.selectSuperId();
|
|
|
+ }
|
|
|
|
|
|
render() {
|
|
|
- const { searchInfor, selectedRowKeys } = this.state
|
|
|
+ const { searchInfor, selectedRowKeys, selectedRows, showDetail, rowData } = this.state
|
|
|
const dataSources = this.state.customerArr || [];
|
|
|
const options = dataSources.map((group) => (
|
|
|
<Select.Option key={group.id} value={group.name}>
|
|
|
{group.name}
|
|
|
</Select.Option>
|
|
|
));
|
|
|
- const customerList = this.state.customerList || [];
|
|
|
- const customerOptions = customerList.map((group) => (
|
|
|
+ const dataSources1 = this.state.customerArr1 || [];
|
|
|
+ const options1 = dataSources1.map((group) => (
|
|
|
<Select.Option key={group.id} value={group.name}>
|
|
|
{group.name}
|
|
|
</Select.Option>
|
|
@@ -455,7 +471,7 @@ class PublicSummary extends Component {
|
|
|
<div>
|
|
|
<div className="user-content">
|
|
|
<div className="content-title">
|
|
|
- <span>签单客户汇总</span>
|
|
|
+ <span style={{ fontWeight: 900, fontSize: 16 }}>签单客户汇总</span>
|
|
|
</div>
|
|
|
<Tabs defaultActiveKey="1" className="test">
|
|
|
<TabPane tab="搜索" key="1">
|
|
@@ -468,18 +484,32 @@ class PublicSummary extends Component {
|
|
|
}}
|
|
|
>
|
|
|
<span style={{ marginRight: "10px" }}>
|
|
|
+ <Input
|
|
|
+ style={{ width: 160 }}
|
|
|
+ placeholder="输入客户名称"
|
|
|
+ value={searchInfor.userName}
|
|
|
+ onChange={e => {
|
|
|
+ this.setState({
|
|
|
+ searchInfor: Object.assign(searchInfor, {
|
|
|
+ userName: e.target.value,
|
|
|
+ }),
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </span>
|
|
|
+ <span style={{ marginRight: "10px" }}>
|
|
|
<AutoComplete
|
|
|
className="certain-category-search"
|
|
|
dropdownClassName="certain-category-search-dropdown"
|
|
|
dropdownMatchSelectWidth={false}
|
|
|
style={{ width: 160 }}
|
|
|
- dataSource={customerOptions}
|
|
|
- placeholder="输入客户名称"
|
|
|
- value={searchInfor.customer}
|
|
|
- onChange={this.httpCustomerChange}
|
|
|
+ dataSource={options}
|
|
|
+ placeholder="跟进人姓名"
|
|
|
+ value={this.state.followAname}
|
|
|
+ onChange={this.httpChange}
|
|
|
filterOption={true}
|
|
|
- onBlur={this.blurCustomerChange}
|
|
|
- onSelect={this.selectCustomerAuto}
|
|
|
+ onBlur={this.blurChange}
|
|
|
+ onSelect={this.selectAuto}
|
|
|
>
|
|
|
<Input />
|
|
|
</AutoComplete>
|
|
@@ -490,13 +520,13 @@ class PublicSummary extends Component {
|
|
|
dropdownClassName="certain-category-search-dropdown"
|
|
|
dropdownMatchSelectWidth={false}
|
|
|
style={{ width: 160 }}
|
|
|
- dataSource={options}
|
|
|
- placeholder="跟单人姓名"
|
|
|
- value={searchInfor.auto}
|
|
|
- onChange={this.httpChange}
|
|
|
+ dataSource={options1}
|
|
|
+ placeholder="所属人姓名"
|
|
|
+ value={this.state.adminName}
|
|
|
+ onChange={this.httpChange1}
|
|
|
filterOption={true}
|
|
|
- onBlur={this.blurChange}
|
|
|
- onSelect={this.selectAuto}
|
|
|
+ onBlur={this.blurChange1}
|
|
|
+ onSelect={this.selectAuto1}
|
|
|
>
|
|
|
<Input />
|
|
|
</AutoComplete>
|
|
@@ -505,17 +535,18 @@ class PublicSummary extends Component {
|
|
|
<Select
|
|
|
style={{ width: 160 }}
|
|
|
placeholder="会员状态"
|
|
|
- value={searchInfor.projectType}
|
|
|
+ value={searchInfor.member}
|
|
|
onChange={(e) => {
|
|
|
this.setState({
|
|
|
searchInfor: Object.assign(searchInfor, {
|
|
|
- projectType: e,
|
|
|
+ member: e,
|
|
|
}),
|
|
|
});
|
|
|
}}
|
|
|
>
|
|
|
- <Option value="1">会员</Option>
|
|
|
+ <Option value={undefined}>全部</Option>
|
|
|
<Option value="0">非会员</Option>
|
|
|
+ <Option value="1">会员</Option>
|
|
|
</Select>
|
|
|
</span>
|
|
|
|
|
@@ -532,8 +563,9 @@ class PublicSummary extends Component {
|
|
|
});
|
|
|
}}
|
|
|
>
|
|
|
- <Option value="1">有退单</Option>
|
|
|
+ <Option value={undefined}>全部</Option>
|
|
|
<Option value="0">无退单</Option>
|
|
|
+ <Option value="1">有退单</Option>
|
|
|
</Select>
|
|
|
</span>
|
|
|
|
|
@@ -541,17 +573,22 @@ class PublicSummary extends Component {
|
|
|
<Select
|
|
|
style={{ width: 160 }}
|
|
|
placeholder="选择跟进方式"
|
|
|
- value={searchInfor.followup}
|
|
|
+ value={searchInfor.lastFollowType}
|
|
|
onChange={(e) => {
|
|
|
this.setState({
|
|
|
searchInfor: Object.assign(searchInfor, {
|
|
|
- followup: e,
|
|
|
+ lastFollowType: e,
|
|
|
}),
|
|
|
});
|
|
|
}}
|
|
|
>
|
|
|
- <Option value="1">公出打卡</Option>
|
|
|
- <Option value="0">其他跟进</Option>
|
|
|
+ <Option value={undefined}>全部</Option>
|
|
|
+ <Option value="0">外出</Option>
|
|
|
+ <Option value="1">电话</Option>
|
|
|
+ <Option value="2">QQ</Option>
|
|
|
+ <Option value="3">微信</Option>
|
|
|
+ <Option value="4">邮件</Option>
|
|
|
+ <Option value="5">公出打卡</Option>
|
|
|
</Select>
|
|
|
</span>
|
|
|
|
|
@@ -559,17 +596,18 @@ class PublicSummary extends Component {
|
|
|
<Select
|
|
|
style={{ width: 160 }}
|
|
|
placeholder="是否大客户"
|
|
|
- value={searchInfor.followup}
|
|
|
+ value={searchInfor.bigCustomer}
|
|
|
onChange={(e) => {
|
|
|
this.setState({
|
|
|
searchInfor: Object.assign(searchInfor, {
|
|
|
- followup: e,
|
|
|
+ bigCustomer: e,
|
|
|
}),
|
|
|
});
|
|
|
}}
|
|
|
>
|
|
|
- <Option value="1">大客户</Option>
|
|
|
+ <Option value={undefined}>全部</Option>
|
|
|
<Option value="0">非大客户</Option>
|
|
|
+ <Option value="1">大客户</Option>
|
|
|
</Select>
|
|
|
</span>
|
|
|
|
|
@@ -577,15 +615,16 @@ class PublicSummary extends Component {
|
|
|
<Select
|
|
|
style={{ width: 160 }}
|
|
|
placeholder="签单次数"
|
|
|
- value={searchInfor.followup}
|
|
|
+ value={searchInfor.signNumber}
|
|
|
onChange={(e) => {
|
|
|
this.setState({
|
|
|
searchInfor: Object.assign(searchInfor, {
|
|
|
- followup: e,
|
|
|
+ signNumber: e,
|
|
|
}),
|
|
|
});
|
|
|
}}
|
|
|
>
|
|
|
+ <Option value={undefined}>全部</Option>
|
|
|
<Option value="1">1次</Option>
|
|
|
<Option value="2">2次</Option>
|
|
|
<Option value="3">3次</Option>
|
|
@@ -597,29 +636,32 @@ class PublicSummary extends Component {
|
|
|
<Select
|
|
|
style={{ width: 160 }}
|
|
|
placeholder="最新签单类型"
|
|
|
- value={searchInfor.followup}
|
|
|
+ value={searchInfor.lastSalesType}
|
|
|
onChange={(e) => {
|
|
|
this.setState({
|
|
|
searchInfor: Object.assign(searchInfor, {
|
|
|
- followup: e,
|
|
|
+ lastSalesType: e,
|
|
|
}),
|
|
|
});
|
|
|
}}
|
|
|
>
|
|
|
- <Option value="1">高新复购</Option>
|
|
|
- <Option value="2">其他复购</Option>
|
|
|
+ {
|
|
|
+ salesList.map((item, index) =>
|
|
|
+ <Option value={index}>{item}</Option>
|
|
|
+ )
|
|
|
+ }
|
|
|
</Select>
|
|
|
</span>
|
|
|
|
|
|
<span style={{ marginRight: "10px" }}>
|
|
|
<Select
|
|
|
- placeholder="选择跟进部门"
|
|
|
+ placeholder="选择归属部门"
|
|
|
style={{ width: 200 }}
|
|
|
- value={searchInfor.depId}
|
|
|
+ value={searchInfor.followDep}
|
|
|
onChange={(e) => {
|
|
|
this.setState({
|
|
|
searchInfor: Object.assign(searchInfor, {
|
|
|
- depId: e,
|
|
|
+ followDep: e,
|
|
|
}),
|
|
|
});
|
|
|
}}
|
|
@@ -636,16 +678,16 @@ class PublicSummary extends Component {
|
|
|
<RangePicker
|
|
|
style={{ marginRight: "10px", marginBottom: "10px" }}
|
|
|
value={[
|
|
|
- searchInfor.startDate
|
|
|
- ? moment(searchInfor.startDate)
|
|
|
+ searchInfor.lastFollowTimeStart
|
|
|
+ ? moment(searchInfor.lastFollowTimeStart)
|
|
|
: null,
|
|
|
- searchInfor.endDate ? moment(searchInfor.endDate) : null,
|
|
|
+ searchInfor.lastFollowTimeEnd ? moment(searchInfor.lastFollowTimeEnd) : null,
|
|
|
]}
|
|
|
onChange={(data, dataString) => {
|
|
|
this.setState({
|
|
|
searchInfor: Object.assign(searchInfor, {
|
|
|
- startDate: dataString[0],
|
|
|
- endDate: dataString[1],
|
|
|
+ lastFollowTimeStart: dataString[0],
|
|
|
+ lastFollowTimeEnd: dataString[1],
|
|
|
}),
|
|
|
});
|
|
|
}}
|
|
@@ -659,16 +701,16 @@ class PublicSummary extends Component {
|
|
|
<RangePicker
|
|
|
style={{ marginRight: "10px", marginBottom: "10px" }}
|
|
|
value={[
|
|
|
- searchInfor.startDate
|
|
|
- ? moment(searchInfor.startDate)
|
|
|
+ searchInfor.firstSigningTimeStart
|
|
|
+ ? moment(searchInfor.firstSigningTimeStart)
|
|
|
: null,
|
|
|
- searchInfor.endDate ? moment(searchInfor.endDate) : null,
|
|
|
+ searchInfor.firstSigningTimeEnd ? moment(searchInfor.firstSigningTimeEnd) : null,
|
|
|
]}
|
|
|
onChange={(data, dataString) => {
|
|
|
this.setState({
|
|
|
searchInfor: Object.assign(searchInfor, {
|
|
|
- startDate: dataString[0],
|
|
|
- endDate: dataString[1],
|
|
|
+ firstSigningTimeStart: dataString[0],
|
|
|
+ firstSigningTimeEnd: dataString[1],
|
|
|
}),
|
|
|
});
|
|
|
}}
|
|
@@ -682,16 +724,16 @@ class PublicSummary extends Component {
|
|
|
<RangePicker
|
|
|
style={{ marginRight: "10px", marginBottom: "10px" }}
|
|
|
value={[
|
|
|
- searchInfor.startDate
|
|
|
- ? moment(searchInfor.startDate)
|
|
|
+ searchInfor.lastSigningTimeStart
|
|
|
+ ? moment(searchInfor.lastSigningTimeStart)
|
|
|
: null,
|
|
|
- searchInfor.endDate ? moment(searchInfor.endDate) : null,
|
|
|
+ searchInfor.lastSigningTimeEnd ? moment(searchInfor.lastSigningTimeEnd) : null,
|
|
|
]}
|
|
|
onChange={(data, dataString) => {
|
|
|
this.setState({
|
|
|
searchInfor: Object.assign(searchInfor, {
|
|
|
- startDate: dataString[0],
|
|
|
- endDate: dataString[1],
|
|
|
+ lastSigningTimeStart: dataString[0],
|
|
|
+ lastSigningTimeEnd: dataString[1],
|
|
|
}),
|
|
|
});
|
|
|
}}
|
|
@@ -742,7 +784,11 @@ class PublicSummary extends Component {
|
|
|
<div style={{ float: "left" }}>
|
|
|
<Button
|
|
|
type="primary"
|
|
|
- onClick={() => { }}
|
|
|
+ onClick={() => {
|
|
|
+ this.setState({
|
|
|
+ mvisible: "changelog",
|
|
|
+ });
|
|
|
+ }}
|
|
|
style={{ margin: 10 }}
|
|
|
disabled={this.state.selectedRowKeys.length !== 1}
|
|
|
>
|
|
@@ -770,7 +816,7 @@ class PublicSummary extends Component {
|
|
|
<Table
|
|
|
bordered
|
|
|
size="middle"
|
|
|
- scroll={{ x: "120%" }}
|
|
|
+ scroll={{ x: "110%" }}
|
|
|
columns={
|
|
|
this.state.changeList
|
|
|
? this.state.changeList
|
|
@@ -779,13 +825,46 @@ class PublicSummary extends Component {
|
|
|
dataSource={this.state.dataSource}
|
|
|
pagination={this.state.pagination}
|
|
|
rowSelection={rowSelection}
|
|
|
+ onRowDoubleClick={this.tableRowClick.bind(this)}
|
|
|
/>
|
|
|
</Spin>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ {this.state.mvisible == "channellog" && (
|
|
|
+ <ChannelLog
|
|
|
+ cancel={this.closeDesc.bind(this)}
|
|
|
+ visible={this.state.mvisible}
|
|
|
+ id={selectedRows[0].id}
|
|
|
+ />
|
|
|
+ )}
|
|
|
+ {this.state.mvisible == "changelog" && (
|
|
|
+ <ChangeLog
|
|
|
+ cancel={this.closeDesc.bind(this)}
|
|
|
+ visible={this.state.mvisible}
|
|
|
+ id={selectedRows[0].id}
|
|
|
+ />
|
|
|
+ )}
|
|
|
+ {
|
|
|
+ showDetail &&
|
|
|
+ <Modal
|
|
|
+ visible={showDetail}
|
|
|
+ title={<div>
|
|
|
+ <span style={{ marginRight: 20 }}>客户订单列表</span>
|
|
|
+ <span style={{ color: "red" }}>客户名称:{rowData.nickname}</span>
|
|
|
+ </div>}
|
|
|
+ width="90%"
|
|
|
+ footer={null}
|
|
|
+ onCancel={this.closeDesc.bind(this)}
|
|
|
+ >
|
|
|
+ <DetailList
|
|
|
+ // data={Object.assign(rowData, params)}
|
|
|
+ data={rowData}
|
|
|
+ />
|
|
|
+ </Modal>
|
|
|
+ }
|
|
|
</div>
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-export default PublicSummary;
|
|
|
+export default SignCustomer;
|