signCustomer.jsx 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797
  1. import React from 'react';
  2. import {
  3. Radio,
  4. Icon,
  5. Button,
  6. AutoComplete,
  7. Cascader,
  8. Input,
  9. Select,
  10. Tabs,
  11. Spin,
  12. Popconfirm,
  13. Table,
  14. Switch,
  15. message,
  16. DatePicker,
  17. Upload,
  18. Form,
  19. Modal, Tooltip
  20. } from 'antd';
  21. import ajax from 'jquery/src/ajax/xhr.js';
  22. import $ from 'jquery/src/ajax';
  23. import moment from 'moment';
  24. import { citySelect, provinceList } from '@/NewDicProvinceList';
  25. import { socialAttribute, industry, auditStatusL, lvl, currentMember } from '@/dataDic.js';
  26. import { getSocialAttribute, beforeUploadFile, ShowModal } from "@/tools.js";
  27. import FollowDetail from './followDetail.jsx'
  28. import ShowModalDiv from "@/showModal.jsx";
  29. import ZhuanjiaoDetail from "@/zhuanjiaoDetail.jsx";
  30. import IntentionDetail from './intentionDetail/intentionDetail'
  31. import './customer.less';
  32. import { ChooseList } from "../../../order/orderNew/chooseList";
  33. import EnterpriseNameChange from "../../../../common/enterpriseNameChange";
  34. const { TabPane } = Tabs
  35. const confirm = Modal.confirm;
  36. const IntentionCustomer = Form.create()(React.createClass({
  37. loadData(pageNo, apiUrl) {
  38. this.setState({
  39. visitModul: false,
  40. loading: true,
  41. ispage: pageNo,
  42. modalVisible: false
  43. });
  44. let api = apiUrl ? apiUrl : this.props.ApiUrl;
  45. $.ajax({
  46. method: "post",
  47. dataType: "json",
  48. crossDomain: false,
  49. url: globalConfig.context + api,
  50. data: {
  51. pageNo: pageNo || 1,
  52. pageSize: this.state.pagination.pageSize,
  53. name: this.state.nameSearch,
  54. channel: this.state.channelSearch,
  55. province: !(this.state.addressSearch).length ? this.state.provinceSearch : this.state.addressSearch[0],
  56. city: !(this.state.addressSearch).length ? '' : this.state.addressSearch[1],
  57. startDate: this.state.releaseDate[0],
  58. endDate: this.state.releaseDate[1],
  59. },
  60. success: function (data) {
  61. ShowModal(this);
  62. let theArr = [];
  63. if (data.error.length || data.data.list == "") {
  64. if (data.error && data.error.length) {
  65. message.warning(data.error[0].message);
  66. };
  67. } else {
  68. for (let i = 0; i < data.data.list.length; i++) {
  69. let thisdata = data.data.list[i];
  70. let diqu = (thisdata.province == null ? "" : thisdata.province) + (thisdata.city == null ? "" : "-" + thisdata.city) + (thisdata.area == null ? "" : "-" + thisdata.area);
  71. thisdata.key = i;
  72. thisdata.id = thisdata.uid;
  73. thisdata.transferTime = thisdata.transferTime && thisdata.transferTime.split(" ")[0];
  74. thisdata.lastSignTime = thisdata.lastSignTime && thisdata.lastSignTime.split(" ")[0];
  75. thisdata.lastFollowTime = thisdata.lastFollowTime && thisdata.lastFollowTime.split(" ")[0];
  76. thisdata.locationProvince = diqu
  77. theArr.push(thisdata);
  78. };
  79. this.state.pagination.current = data.data.pageNo;
  80. this.state.pagination.total = data.data.totalCount;
  81. };
  82. if (data.data && data.data.list && !data.data.list.length) {
  83. this.state.pagination.current = 0
  84. this.state.pagination.total = 0
  85. };
  86. this.setState({
  87. dataSource: theArr,
  88. pagination: this.state.pagination,
  89. selectedRowKeys: []
  90. });
  91. }.bind(this),
  92. }).always(function () {
  93. this.setState({
  94. loading: false
  95. });
  96. }.bind(this));
  97. },
  98. getInitialState() {
  99. return {
  100. addressSearch: [],
  101. orgCodeUrl: [],
  102. companyLogoUrl: [],
  103. visible: false,
  104. searchMore: true,
  105. releaseDate: [],
  106. visitModul: false,
  107. keys: false,
  108. detailApi: "",
  109. followData: {},
  110. selectedRowKeys: [],
  111. selectedRowKey: [],
  112. selectedRows: [],
  113. loading: false,
  114. defaultActiveKey: '',
  115. modalVisible: false,
  116. pagination: {
  117. defaultCurrent: 1,
  118. defaultPageSize: 10,
  119. showQuickJumper: true,
  120. pageSize: 10,
  121. onChange: function (page) {
  122. this.loadData(page);
  123. }.bind(this),
  124. showTotal: function (total) {
  125. return "共" + total + "条数据";
  126. },
  127. },
  128. columns: [
  129. {
  130. title: "客户名称",
  131. dataIndex: "name",
  132. key: "name",
  133. width: 150,
  134. render: (text, record) => {
  135. return (
  136. <span>
  137. {record.channel === 1 ? <div style={{
  138. background: '#ef7207',
  139. color: '#FFF',
  140. padding: '1px 7px',
  141. borderRadius: '5px',
  142. fontSize: '12px',
  143. display: 'inline-block',
  144. marginRight: '10px'
  145. }}>
  146. 外联
  147. </div> : null}
  148. <Tooltip title={text}>
  149. <div style={{
  150. maxWidth: '120px',
  151. overflow: 'hidden',
  152. textOverflow: "ellipsis",
  153. whiteSpace: 'nowrap',
  154. }}>{text}</div>
  155. </Tooltip>
  156. </span>
  157. )
  158. },
  159. },
  160. {
  161. title: "统一社会信用代码",
  162. dataIndex: "orgCode",
  163. key: "orgCode",
  164. render: (text) => {
  165. return <div style={{ color: !text ? "red" : "#000000A6" }}>
  166. {!text ? "待补充" : text}
  167. </div>;
  168. },
  169. },
  170. {
  171. title: "地区",
  172. dataIndex: "locationProvince",
  173. key: "locationProvince",
  174. },
  175. {
  176. title: "最新签单日期",
  177. dataIndex: "transferTime",
  178. key: "transferTime",
  179. },
  180. // {
  181. // title: "最新跟进日期",
  182. // dataIndex: "lastFollowTime",
  183. // key: "lastFollowTime",
  184. // },
  185. // {
  186. // title: "剩余私有天数",
  187. // dataIndex: "surplusFollowTime",
  188. // key: "surplusFollowTime",
  189. // },
  190. // {
  191. // title: "剩余签单天数",
  192. // dataIndex: "surplusSignTime",
  193. // key: "surplusSignTime",
  194. // },
  195. // {
  196. // title: "联系人",
  197. // dataIndex: "contacts",
  198. // key: "contacts",
  199. // },
  200. // {
  201. // title: "联系电话",
  202. // dataIndex: "contactMobile",
  203. // key: "contactMobile",
  204. // },
  205. {
  206. title: "社会属性",
  207. dataIndex: "societyTag",
  208. key: "societyTag",
  209. render: (text) => {
  210. return getSocialAttribute(text);
  211. },
  212. },
  213. {
  214. title: "操作",
  215. dataIndex: "abc",
  216. key: "abc",
  217. render: (text, record, index) => {
  218. return (
  219. <div>
  220. <Button
  221. onClick={(e) => {
  222. const _this = this
  223. e.stopPropagation()
  224. if (!record.orgCode) {
  225. confirm({
  226. title: '您暂时不可以跟进客户',
  227. content: `请先完善"企业统一社会信用代码"`,
  228. cancelText: '取消',
  229. okText: '去完善',
  230. onOk() {
  231. _this.tableRowClick(record)
  232. },
  233. onCancel() { },
  234. });
  235. } else {
  236. this.visit(record);
  237. }
  238. }}
  239. type="primary"
  240. >
  241. 客户跟进
  242. </Button>
  243. <Button
  244. style={{ marginLeft: 10 }}
  245. onClick={(e) => {
  246. e.stopPropagation(), this.zhuanjiaoDetail(record);
  247. }}
  248. type="primary"
  249. >
  250. 转交记录
  251. </Button>
  252. <Button
  253. style={{ marginLeft: 10 }}
  254. type="primary"
  255. onClick={(e) => {
  256. e.stopPropagation();
  257. this.setState({
  258. defaultActiveKey: '6'
  259. }, () => {
  260. this.tableRowClick(record);
  261. })
  262. }}
  263. >
  264. 转交项目
  265. </Button>
  266. </div>
  267. );
  268. },
  269. },
  270. ],
  271. data: [],
  272. dataSource: [],
  273. };
  274. },
  275. zhuanjiaoDetail(record) {
  276. this.setState({
  277. zhuanjiaoVisible: true,
  278. zhuanjiaoId: record.id
  279. })
  280. },
  281. zhuanjiaoDetailCancel() {
  282. this.setState({
  283. zhuanjiaoVisible: false
  284. })
  285. },
  286. //进入新增拜访记录
  287. visit(e) {
  288. this.setState({
  289. followData: e,
  290. visitModul: true,
  291. modalVisible: false
  292. })
  293. },
  294. //列表删除功能
  295. delectRow() {
  296. let deletedIds;
  297. for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
  298. let rowItem = this.state.selectedRows[idx];
  299. if (rowItem.id) {
  300. deletedIds = rowItem.id;
  301. };
  302. };
  303. this.setState({
  304. loading: true,
  305. selectedRowKeys: [],
  306. });
  307. $.ajax({
  308. method: "get",
  309. dataType: "json",
  310. crossDomain: false,
  311. url: globalConfig.context + "/api/admin/customer/deleteCustomer",
  312. data: {
  313. uid: deletedIds, //删除的ID
  314. }
  315. }).done(function (data) {
  316. if (!data.error.length) {
  317. message.success('删除成功!');
  318. this.setState({
  319. loading: false,
  320. });
  321. } else {
  322. message.warning(data.error[0].message);
  323. };
  324. this.loadData(this.state.ispage);
  325. }.bind(this));
  326. },
  327. componentWillMount() {
  328. //城市
  329. let Province = [];
  330. provinceList.map(function (item) {
  331. var id = String(item.id)
  332. Province.push(
  333. <Select.Option value={id} key={item.name}>{item.name}</Select.Option>
  334. )
  335. });
  336. //行业
  337. let intentionalArr = [];
  338. industry.map(function (item) {
  339. intentionalArr.push(
  340. <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
  341. )
  342. });
  343. this.state.Provinces = Province;
  344. this.state.intentionalOption = intentionalArr;
  345. this.loadData();
  346. },
  347. closeDesc(e, s) {
  348. this.state.basicState = e
  349. this.state.visitModul = e;
  350. this.state.modalVisible = e;
  351. this.state.showDesc = e;
  352. this.setState({
  353. defaultActiveKey: ''
  354. })
  355. if (s) {
  356. this.loadData(this.state.ispage);
  357. };
  358. },
  359. search() {
  360. this.loadData();
  361. },
  362. reset() {
  363. this.state.nameSearch = '';
  364. this.state.addressSearch = [];
  365. this.state.provinceSearch = undefined;
  366. this.state.channelSearch = undefined;
  367. this.state.citySearch = undefined;
  368. this.state.releaseDate[0] = undefined;
  369. this.state.releaseDate[1] = undefined;
  370. this.loadData();
  371. },
  372. searchSwitch() {
  373. this.setState({
  374. visitModul: false,
  375. searchMore: !this.state.searchMore
  376. });
  377. },
  378. //整行点击
  379. tableRowClick(record) {
  380. this.state.visitModul = false;
  381. this.state.RowData = record;
  382. this.setState({
  383. // selectedRowKeys: [],
  384. modalVisible: true,
  385. basicState: true,
  386. contactState: true,
  387. modalName: record.name
  388. })
  389. },
  390. //指定转交人自动补全
  391. supervisor(e) {
  392. $.ajax({
  393. method: "get",
  394. dataType: "json",
  395. crossDomain: false,
  396. url: globalConfig.context + "/api/admin/customer/listAdminByName",
  397. data: {
  398. adminName: e
  399. },
  400. success: function (data) {
  401. let thedata = data.data;
  402. if (!thedata) {
  403. if (data.error && data.error.length) {
  404. message.warning(data.error[0].message);
  405. };
  406. thedata = {};
  407. };
  408. this.setState({
  409. customerArr: thedata,
  410. });
  411. }.bind(this),
  412. }).always(function () {
  413. this.setState({
  414. loading: false
  415. });
  416. }.bind(this));
  417. },
  418. componentWillReceiveProps(nextProps) {
  419. if (nextProps.ApiUrl != this.props.ApiUrl) {
  420. if (!this.state.searchMore) {
  421. this.state.searchMore = true
  422. }
  423. this.state.nameSearch = '';
  424. this.state.addressSearch = [];
  425. this.state.provinceSearch = undefined;
  426. this.state.channelSearch = undefined
  427. this.state.citySearch = undefined;
  428. this.state.releaseDate[0] = undefined;
  429. this.state.releaseDate[1] = undefined;
  430. this.loadData(null, nextProps.ApiUrl);
  431. };
  432. },
  433. changeList(arr) {
  434. const newArr = [];
  435. this.state.columns.forEach(item => {
  436. arr.forEach(val => {
  437. if (val === item.title) {
  438. newArr.push(item);
  439. }
  440. });
  441. });
  442. this.setState({
  443. changeList: newArr
  444. });
  445. },
  446. //上级主管输入框失去焦点是判断客户是否存在
  447. selectAuto(value, options) {
  448. this.setState({
  449. auto: value,
  450. });
  451. },
  452. //值改变时请求客户名称
  453. httpChange(e) {
  454. if (e.length >= 1) {
  455. this.supervisor(e);
  456. }
  457. this.setState({
  458. auto: e,
  459. });
  460. },
  461. showConfirm() {
  462. if (this.state.confirmLoading) {
  463. return false;
  464. }
  465. let _this = this;
  466. Modal.confirm({
  467. title: "提示",
  468. content: (
  469. <span style={{ color: "red" }}>
  470. 确定要转交以下客户吗?
  471. {
  472. this.state.selectedRows.map((value, index) => (
  473. <div key={index} style={{ marginTop: '5px', color: "#000" }}>
  474. {value.name}
  475. </div>
  476. ))
  477. }
  478. </span>
  479. ),
  480. onOk() {
  481. _this.setState({
  482. informationTransferVisible: true
  483. })
  484. },
  485. onCancel() { },
  486. });
  487. },
  488. //转交
  489. changeAssigner(infor) {
  490. if (this.state.theTypes) {
  491. this.setState({
  492. confirmLoading: true,
  493. informationTransferVisible: false
  494. })
  495. const hide = message.loading('转交中...', 0);
  496. let changeIds = '';
  497. let oldAid = '';
  498. for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
  499. let rowItem = this.state.selectedRows[idx];
  500. if (rowItem.id) {
  501. oldAid = rowItem.aid;
  502. changeIds = this.state.selectedRows.length - 1 === idx ? changeIds + rowItem.id : changeIds + rowItem.id + ',';
  503. }
  504. }
  505. $.ajax({
  506. method: "get",
  507. dataType: "json",
  508. crossDomain: false,
  509. url: globalConfig.context + "/api/admin/customer/transferToOther",
  510. data: {
  511. uid: changeIds, //这一行数据的ID
  512. aid: this.state.theTypes, //指定转交人的ID
  513. oldAid: window.adminData.uid,
  514. operatorType: 4,
  515. data: infor,
  516. },
  517. }).done(
  518. function (data) {
  519. hide();
  520. if (!data.error.length) {
  521. message.success("转交成功!");
  522. this.setState({
  523. auto: "",
  524. loading: false,
  525. selectedRowKeys: [],
  526. });
  527. } else {
  528. message.warning(data.error[0].message);
  529. }
  530. this.loadData(
  531. Math.min(
  532. this.state.ispage == undefined ? 1 : this.state.ispage,
  533. Math.ceil((this.state.pagination.total - 1) / 10)
  534. )
  535. );
  536. this.setState({
  537. confirmLoading: false
  538. })
  539. }.bind(this)
  540. );
  541. } else {
  542. message.warning("请输入转交人姓名");
  543. }
  544. },
  545. blurChange(e) {
  546. let theType = "";
  547. let contactLists = this.state.customerArr || [];
  548. if (e) {
  549. contactLists.map(function (item) {
  550. if (item.name == e.toString()) {
  551. theType = item.id;
  552. }
  553. });
  554. }
  555. this.setState({
  556. theTypes: theType,
  557. });
  558. },
  559. render() {
  560. const rowSelection = {
  561. selectedRowKeys: this.state.selectedRowKeys,
  562. onChange: (selectedRowKeys, selectedRows) => {
  563. this.setState({
  564. modalVisible: false,
  565. selectedRows: selectedRows,
  566. selectedRowKeys: selectedRowKeys
  567. });
  568. },
  569. onSelect: (recordt, selected, selectedRows) => {
  570. this.setState({
  571. modalVisible: false,
  572. recordt: recordt.id
  573. })
  574. },
  575. };
  576. const hasSelected = this.state.selectedRowKeys.length > 0;
  577. const { RangePicker } = DatePicker;
  578. const dataSources = this.state.customerArr || [];
  579. const options = dataSources.map((group) =>
  580. <Select.Option key={group.id} value={group.name}>{group.name}</Select.Option>
  581. )
  582. const intentionState = this.props.intentionState || '';
  583. return (
  584. <div className="user-content">
  585. <ShowModalDiv ShowModal={this.state.showModal} />
  586. {this.state.zhuanjiaoVisible ? (
  587. <ZhuanjiaoDetail
  588. cancel={this.zhuanjiaoDetailCancel}
  589. visible={this.state.zhuanjiaoVisible}
  590. type={1}
  591. id={this.state.zhuanjiaoId}
  592. />
  593. ) : (
  594. ""
  595. )}
  596. <div className="content-title" style={{ marginBottom: 10 }}>
  597. <span style={{ fontWeight: 900, fontSize: 16 }}>{!intentionState ? "签单客户" : "签单客户"}</span>
  598. </div>
  599. <Tabs defaultActiveKey="1" className="test">
  600. <TabPane tab="搜索" key="1">
  601. <div className="user-search">
  602. <Input
  603. placeholder="客户名称"
  604. value={this.state.nameSearch}
  605. onChange={(e) => {
  606. this.setState({ nameSearch: e.target.value });
  607. }}
  608. />
  609. <Select
  610. placeholder="是否为外联"
  611. style={{ width: 110 }}
  612. value={this.state.channelSearch}
  613. onChange={(e) => {
  614. this.setState({ channelSearch: e });
  615. }}
  616. >
  617. <Select.Option value={0}>
  618. 非外联
  619. </Select.Option>
  620. <Select.Option value={1}>
  621. 外联
  622. </Select.Option>
  623. </Select>
  624. <Select
  625. placeholder="省"
  626. style={{ width: 80 }}
  627. value={this.state.provinceSearch}
  628. onChange={(e) => {
  629. this.setState({ provinceSearch: e });
  630. }}
  631. >
  632. {this.state.Provinces}
  633. </Select>
  634. <span style={{ marginRight: "10px" }}>
  635. <Cascader
  636. options={citySelect()}
  637. value={this.state.addressSearch}
  638. placeholder="选择城市"
  639. onChange={(e, pre) => {
  640. this.setState({ addressSearch: e });
  641. }}
  642. />
  643. </span>
  644. {/* <div className="clearfix" style={{ marginTop: "5px" }}>
  645. <div
  646. className="search-more"
  647. style={this.state.searchMore ? { display: "none" } : {}}
  648. > */}
  649. <span>签单时间:</span>
  650. <RangePicker
  651. value={[
  652. this.state.releaseDate[0]
  653. ? moment(this.state.releaseDate[0])
  654. : null,
  655. this.state.releaseDate[1]
  656. ? moment(this.state.releaseDate[1])
  657. : null,
  658. ]}
  659. onChange={(data, dataString) => {
  660. this.setState({ releaseDate: dataString });
  661. }}
  662. />
  663. {/* </div>
  664. </div> */}
  665. <Button
  666. type="primary"
  667. onClick={this.search}
  668. style={{ marginLeft: 10 }}
  669. >
  670. 搜索
  671. </Button>
  672. <Button onClick={this.reset}>重置</Button>
  673. {/* {adminData.isSuperAdmin?<Popconfirm title="是否删除?" onConfirm={this.delectRow} okText="是" cancelText="否">
  674. <Button type="danger" style={{marginLeft:'10px'}}
  675. disabled={!hasSelected}
  676. >删除<Icon type="minus" />
  677. </Button>
  678. </Popconfirm>:''
  679. }*/}
  680. {/* <span style={{ marginLeft: "10px", marginRight: "20px" }}>
  681. 更多搜索
  682. <Switch
  683. checked={!this.state.searchMore}
  684. onChange={this.searchSwitch}
  685. />
  686. </span> */}
  687. </div>
  688. </TabPane>
  689. <TabPane tab="操作" key="2">
  690. <div className="user-search">
  691. <AutoComplete
  692. className="certain-category-search"
  693. dropdownClassName="certain-category-search-dropdown"
  694. dropdownMatchSelectWidth={false}
  695. style={{ width: "120px" }}
  696. dataSource={options}
  697. placeholder="输入转交人姓名"
  698. value={this.state.auto}
  699. onChange={this.httpChange}
  700. filterOption={true}
  701. onBlur={this.blurChange}
  702. onSelect={this.selectAuto}
  703. disabled={!hasSelected}
  704. >
  705. <Input />
  706. </AutoComplete>
  707. <Button
  708. type="primary"
  709. onClick={(e) => {
  710. e.stopPropagation();
  711. this.showConfirm();
  712. }}
  713. disabled={!hasSelected}
  714. style={{ marginRight: 10 }}
  715. >
  716. 转交客户
  717. </Button>
  718. <EnterpriseNameChange
  719. type='journal'
  720. disabled={!(hasSelected && this.state.selectedRows.length === 1)}
  721. style={{ marginLeft: 10 }}
  722. enterpriseId={this.state.selectedRows[0] && this.state.selectedRows[0].id} />
  723. </div>
  724. </TabPane>
  725. <TabPane tab="更改表格显示数据" key="3">
  726. <div style={{ marginLeft: 10 }}>
  727. <ChooseList
  728. columns={this.state.columns}
  729. changeFn={this.changeList}
  730. changeList={this.state.changeList}
  731. top={55}
  732. margin={11}
  733. />
  734. </div>
  735. </TabPane>
  736. </Tabs>
  737. <div className="patent-table">
  738. <Spin spinning={this.state.loading}>
  739. <Table
  740. size="middle"
  741. columns={
  742. this.state.changeList
  743. ? this.state.changeList
  744. : this.state.columns
  745. }
  746. dataSource={this.state.dataSource}
  747. rowSelection={rowSelection}
  748. pagination={this.state.pagination}
  749. onRowClick={this.tableRowClick}
  750. />
  751. </Spin>
  752. </div>
  753. <FollowDetail
  754. followData={this.state.followData}
  755. visitModul={this.state.visitModul}
  756. closeDesc={this.closeDesc}
  757. loadData={this.loadData}
  758. />
  759. <IntentionDetail
  760. detailApi={this.props.detailApi}
  761. IntentionData={this.state.RowData}
  762. loadData={this.loadData}
  763. modalVisible={this.state.modalVisible}
  764. defaultActiveKey={this.state.defaultActiveKey}
  765. name={this.state.modalName}
  766. closeDesc={this.closeDesc}
  767. basicState={this.state.basicState}
  768. contactState={this.state.contactState}
  769. />
  770. {this.state.informationTransferVisible && <Modal
  771. visible={this.state.informationTransferVisible}
  772. title="提醒"
  773. onCancel={() => {
  774. this.setState({
  775. informationTransferVisible: false
  776. })
  777. }}
  778. footer={[
  779. <Button key="1" size="large" type={"primary"} onClick={() => {
  780. this.changeAssigner(1);
  781. }}>需要</Button>,
  782. <Button key="2" size="large" type={"danger"} onClick={() => {
  783. this.changeAssigner(0);
  784. }}>不需要</Button>,
  785. ]}
  786. >
  787. 请确定,是否将客户资料一并转交!选择“需要”,系统将全部客户资料一并转交!选择“不需要”,原客户资料保存您的客户资料中,请注意客户资料的更新维护,谢谢
  788. </Modal>}
  789. </div>
  790. );
  791. }
  792. }));
  793. export default IntentionCustomer;