serviceQuery.jsx 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710
  1. import React from 'react';
  2. import {Button ,Input,Select,Spin,Table, Switch, message, DatePicker, Modal,Form ,Row,Col,TimePicker} from 'antd';
  3. import ajax from 'jquery/src/ajax/xhr.js';
  4. import $ from 'jquery/src/ajax';
  5. import moment from 'moment';
  6. import './myClient.less';
  7. import { areaSelect} from '../../../NewDicProvinceList';
  8. const { Column, ColumnGroup } = Table;
  9. import {socialAttribute,newFollow,lvl, customerStatus,intentionalService} from '../../../dataDic.js';
  10. import {getcustomerStatue,getprovince,getStatusFollow,getCompanyIntention,getfllowSituation,getContactType } from '../../../tools.js';
  11. const ServiceQuery= Form.create()(React.createClass({
  12. loadData(pageNo, apiUrl) {
  13. this.state.data = [];
  14. this.setState({
  15. loading: true
  16. });
  17. $.ajax({
  18. method: "post",
  19. dataType: "json",
  20. crossDomain: false,
  21. url:globalConfig.context + '/api/admin/customer/listAllBusiness',
  22. data: {
  23. pageNo: pageNo || 1,
  24. pageSize: this.state.pagination.pageSize,
  25. businessGlossoryId: this.state.businessIdS, //业务意向
  26. identifyName:this.state.identifyNameS,
  27. followSituation:this.state.followSituationS,
  28. customerStatus:this.state.customerStatusS,
  29. adminName: this.state.adminNameS,
  30. startDate: this.state.releaseDate[0],
  31. endDate: this.state.releaseDate[1],
  32. },
  33. success: function (data) {
  34. let theArr = [];
  35. if (data.error.length || data.data.list=="") {
  36. if (data.error && data.error.length) {
  37. message.warning(data.error[0].message);
  38. };
  39. } else {
  40. for (let i = 0; i < data.data.list.length; i++) {
  41. let thisdata = data.data.list[i];
  42. theArr.push({
  43. key: i,
  44. id: thisdata.id,
  45. businessId:thisdata.businessId,
  46. businessName:thisdata.businessName,
  47. identifyName:thisdata.identifyName,
  48. followSituation:thisdata.followSituation,
  49. customerStatus:thisdata.customerStatus,
  50. adminName:thisdata.adminName,
  51. createTime:thisdata.createTime,
  52. updateTime:thisdata.updateTime,
  53. });
  54. };
  55. this.state.pagination.current = data.data.pageNo;
  56. this.state.pagination.total = data.data.totalCount;
  57. };
  58. if(!data.data.list.length){
  59. this.state.pagination.current=0;
  60. this.state.pagination.total=0;
  61. }
  62. this.setState({
  63. dataSource: theArr,
  64. pagination: this.state.pagination,
  65. selectedRowKeys:[]
  66. });
  67. }.bind(this),
  68. }).always(function () {
  69. this.setState({
  70. loading: false
  71. });
  72. }.bind(this));
  73. },
  74. getInitialState() {
  75. return {
  76. dataSources:[],
  77. customerName:[],
  78. orgCodeUrl:[],
  79. companyLogoUrl:[],
  80. visible: false ,
  81. searchMore: true,
  82. releaseDate: [],
  83. releaseDate: [],
  84. selectedRowKeys: [],
  85. selectedRowKey: [],
  86. selectedRows: [],
  87. loading: false,
  88. pagination: {
  89. defaultCurrent: 1,
  90. defaultPageSize: 10,
  91. showQuickJumper: true,
  92. pageSize: 10,
  93. onChange: function (page) {
  94. this.loadData(page);
  95. }.bind(this),
  96. showTotal: function (total) {
  97. return '共' + total + '条数据';
  98. }
  99. },
  100. paginations: {
  101. defaultCurrent: 1,
  102. defaultPageSize: 10,
  103. showQuickJumper: true,
  104. pageSize: 10,
  105. onChange: function (page) {
  106. this.loadVisit(page);
  107. }.bind(this),
  108. showTotal: function (total) {
  109. return '共' + total + '条数据';
  110. }
  111. },
  112. businessFollowList: [
  113. {
  114. title: '跟进时间',
  115. dataIndex: 'followTime',
  116. key: 'followTime',
  117. }, {
  118. title: '营销员',
  119. dataIndex: 'adminName',
  120. key: 'adminName',
  121. }, {
  122. title: '意向进度',
  123. dataIndex: 'followSituation',
  124. key: 'followSituation',
  125. render:text=>{return getfllowSituation(text)}
  126. }, {
  127. title: '客户状态',
  128. dataIndex: 'customerStatus',
  129. key: 'customerStatus',
  130. render:text=>{return getcustomerStatue(text)}
  131. },
  132. {
  133. title: '拜访方式',
  134. dataIndex: 'contactType',
  135. key:'contactType',
  136. render:text=>{return getContactType(text)}
  137. }, {
  138. title: '联系人',
  139. dataIndex: 'contacts',
  140. key: 'contacts',
  141. },
  142. {
  143. title: '联系电话',
  144. dataIndex: 'contactMobile',
  145. key:'contactMobile',
  146. },
  147. ],
  148. columns: [
  149. {
  150. title: '业务名称',
  151. dataIndex: 'businessName',
  152. key: 'businessName',
  153. }, {
  154. title: '意向时间',
  155. dataIndex: 'createTime',
  156. key: 'createTime',
  157. }, {
  158. title: '更新时间',
  159. dataIndex: 'updateTime',
  160. key: 'updateTime',
  161. }, {
  162. title: '客户名称',
  163. dataIndex: 'identifyName',
  164. key: 'identifyName',
  165. }, {
  166. title: '营销员',
  167. dataIndex: 'adminName',
  168. key: 'adminName',
  169. },
  170. {
  171. title: '意向进度',
  172. dataIndex: 'followSituation',
  173. key:'followSituation',
  174. render: text => { return getfllowSituation(text) }
  175. },
  176. {
  177. title: '客户状态',
  178. dataIndex: 'customerStatus',
  179. key: 'customerStatus',
  180. render: text => { return getcustomerStatue(text) }
  181. },
  182. ],
  183. dataSource: [],
  184. searchTime: [,]
  185. };
  186. },
  187. componentWillMount() {
  188. //意向服务
  189. let intentionalArr = [];
  190. newFollow.map(function (item) {
  191. intentionalArr.push(
  192. <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
  193. )
  194. });
  195. //客户状态
  196. let customerStatusArr = [];
  197. customerStatus.map(function (item) {
  198. customerStatusArr.push(
  199. <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
  200. )
  201. });
  202. this.state.intentionalOption = intentionalArr;
  203. this.state.customerStatusArrOption = customerStatusArr;
  204. this.loadData();
  205. },
  206. search() {
  207. this.loadData();
  208. },
  209. reset() {
  210. this.state.businessIdS=undefined; //名称1
  211. this.state.identifyNameS='';
  212. this.state.followSituationS=undefined;
  213. this.state.customerStatusS=undefined;
  214. this.state.adminNameS='';
  215. this.state.releaseDate[0]=undefined;
  216. this.state.releaseDate[1]=undefined;
  217. this.loadData();
  218. },
  219. searchSwitch() {
  220. this.setState({
  221. searchMore: !this.state.searchMore
  222. });
  223. },
  224. //查看基本详情基本信息
  225. loadInformation(record){
  226. $.ajax({
  227. method: "get",
  228. dataType: "json",
  229. crossDomain: false,
  230. url: globalConfig.context + '/api/admin/customer/toUpdateBusiness',
  231. data: {
  232. businessId: record
  233. },
  234. success: function (data) {
  235. let thisData = data.data;
  236. if (!thisData) {
  237. if (data.error && data.error.length) {
  238. message.warning(data.error[0].message);
  239. };
  240. thisData = {};
  241. };
  242. this.setState({
  243. uids:thisData.uid,
  244. dataInformation:thisData,
  245. followSituation:thisData.followSituation,
  246. businessGlossoryId:thisData.businessGlossoryId,
  247. customerStatus:thisData.customerStatus,
  248. remarks:thisData.remarks,
  249. });
  250. }.bind(this),
  251. }).always(function () {
  252. this.loadVisit();
  253. this.setState({
  254. loading: false
  255. });
  256. }.bind(this));
  257. },
  258. detailsModalOk(e) {
  259. this.setState({ modal5Visible:adminData.isSuperAdmin?true:false });//需要一个请求数据
  260. this.loadInformation(e.businessId)
  261. },
  262. //点击消失函数
  263. detailsModal(e) {
  264. this.setState({
  265. modal5Visible:false
  266. });
  267. },
  268. businessFollowOk(){
  269. this.setState({
  270. businessFollowModul:false
  271. });
  272. },
  273. businessFollowCancel(){
  274. this.setState({
  275. businessFollowModul:false
  276. });
  277. },
  278. //进入修改时
  279. listFollowUp(e){
  280. $.ajax({
  281. method: "get",
  282. dataType: "json",
  283. crossDomain: false,
  284. url: globalConfig.context + "/api/admin/customer/toUpdateFollowOneBusiness",
  285. data:{
  286. ufbId:e.ufbId
  287. },
  288. success: function (data) {
  289. let thedata=data.data;
  290. if (!thedata) {
  291. if (data.error && data.error.length) {
  292. message.warning(data.error[0].message);
  293. };
  294. thedata = {};
  295. };
  296. this.setState({
  297. businessGlossoryId:thedata.businessGlossoryId,
  298. followSituation:thedata.followSituation,
  299. customerStatus:thedata.customerStatus,
  300. followTime:thedata.followTime,
  301. createTime:thedata.createTime,
  302. identifyName:thedata.identifyName,
  303. contactType:parseInt(thedata.contactType),
  304. result:thedata.result,
  305. remarks:thedata.remarks,
  306. adminName:thedata.adminName,
  307. contacts:thedata.contacts,
  308. contactMobile:thedata.contactMobile,
  309. ufbId:thedata.ufbId,
  310. followId:thedata.followId,
  311. });
  312. }.bind(this),
  313. }).always(function () {
  314. this.setState({
  315. ufbIds:e.ufbId,
  316. loading: false
  317. });
  318. }.bind(this));
  319. },
  320. //新建HTTP获取数据
  321. addTime(){
  322. $.ajax({
  323. method: "get",
  324. dataType: "json",
  325. crossDomain: false,
  326. url: globalConfig.context + "/api/admin/customer/toAddBusinessAndFollow",
  327. data:{
  328. },
  329. success: function (data) {
  330. let theArr = [];
  331. let thedata=data.data;
  332. if (!thedata) {
  333. if (data.error && data.error.length) {
  334. message.warning(data.error[0].message);
  335. };
  336. thedata = {};
  337. };
  338. let creatMent=thedata.createTime.substr(10,9);
  339. let createYear=thedata.createTime.substr(0,10);
  340. this.setState({
  341. createTime:thedata.createTime,
  342. creatMent:creatMent,
  343. createYear:createYear,
  344. followTime:thedata.followTime,
  345. adminName: thedata.adminName,
  346. });
  347. }.bind(this),
  348. }).always(function () {
  349. this.setState({
  350. loading: false
  351. });
  352. }.bind(this));
  353. },
  354. //获取拜访详情ajax
  355. loadVisit(pageNo) {
  356. this.setState({
  357. loading: true
  358. });
  359. $.ajax({
  360. method: "get",
  361. dataType: "json",
  362. crossDomain: false,
  363. url:globalConfig.context + '/api/admin/customer/listFollowHistory',
  364. data: {
  365. pageNo: pageNo || 1,
  366. pageSize: this.state.paginations.pageSize,
  367. uid: this.state.uids, //名称1
  368. businessGlossoryId:this.state.businessGlossoryId,
  369. },
  370. success: function (data) {
  371. let theArr = [];
  372. if (data.error.length || data.data.list=="") {
  373. if (data.error && data.error.length) {
  374. message.warning(data.error[0].message);
  375. };
  376. } else {
  377. for (let i = 0; i < data.data.list.length; i++) {
  378. let thisdata = data.data.list[i];
  379. theArr.push({
  380. followId:thisdata.followId,
  381. followTime:thisdata.followTime,
  382. identifyName:thisdata.identifyName,
  383. contacts:thisdata.contacts,
  384. contactMobile:thisdata.contactMobile,
  385. result:thisdata.result,
  386. ufbId:thisdata.ufbId,
  387. adminName:thisdata.adminName,
  388. followSituation:thisdata.followSituation,
  389. customerStatus:thisdata.customerStatus,
  390. contactType:thisdata.contactType
  391. });
  392. };
  393. this.state.paginations.current = data.data.pageNo;
  394. this.state.paginations.total = data.data.totalCount;
  395. };
  396. this.setState({
  397. visitArrList: theArr,
  398. paginations: this.state.paginations
  399. });
  400. }.bind(this),
  401. }).always(function () {
  402. this.setState({
  403. loading: false
  404. });
  405. }.bind(this));
  406. },
  407. componentWillReceiveProps(nextProps) {
  408. if (!this.props.visible && nextProps.visible) {
  409. if (nextProps.data && nextProps.data.id) {
  410. this.loadData(nextProps.data.id, nextProps.detailApiUrl);
  411. };
  412. this.state.data = {};
  413. this.state.companyLogoUrl = [];
  414. this.state.orgCodeUrl = [];
  415. };
  416. },
  417. tableRowClick(record, index) {
  418. this.state.RowData = record;
  419. this.detailsModalOk(record);
  420. this.setState({
  421. selectedRowKeys:[],
  422. rowId:record.businessId,
  423. })
  424. },
  425. followRowClick(record, index) {
  426. this.state.RowData = record;
  427. this.listFollowUp(record);
  428. this.setState({
  429. businessFollowModul: true,
  430. selectedRowKeys:[],
  431. });
  432. },
  433. render() {
  434. const FormItem = Form.Item
  435. const rowSelection = {
  436. selectedRowKeys: this.state.selectedRowKeys,
  437. onChange: (selectedRowKeys, selectedRows) => {
  438. this.setState({
  439. selectedRows: selectedRows.slice(-1),
  440. selectedRowKeys: selectedRowKeys.slice(-1)
  441. });
  442. },
  443. onSelect: (recordt, selected, selectedRows) => {
  444. this.setState({
  445. recordt:recordt.id
  446. })
  447. },
  448. };
  449. const rowSelections = {
  450. selectedRowKeys: this.state.selectedRowKey,
  451. onChange: (selectedRowKey, selectedRow) => {
  452. this.setState({
  453. selectedRow: selectedRow.slice(-1),
  454. selectedRowKey: selectedRowKey.slice(-1)
  455. });
  456. },
  457. onSelect: (records, selected, selectedRow) => {
  458. this.setState({
  459. selectedRow: selectedRow.slice(-1),
  460. records:records.id,
  461. })
  462. },
  463. };
  464. const hasSelected = this.state.selectedRowKeys.length > 0;
  465. const { RangePicker } = DatePicker;
  466. const { getFieldDecorator } = this.props.form;
  467. const formItemLayout = {
  468. labelCol: { span: 8 },
  469. wrapperCol: { span: 14 },
  470. };
  471. const theInformation=this.state.dataInformation || {}
  472. const contactsOption="";
  473. const formItemLayput = {
  474. labelCol: { span: 10 },
  475. wrapperCol: { span: 14 },
  476. };
  477. const businessIds=this.state.businessId||'';
  478. const dataSources=this.state.customerArr || [];
  479. const options = dataSources.map((group) =>
  480. <Option key={group.id} value={group.name}>{group.name}</Option>
  481. )
  482. return (
  483. <div className="user-content" >
  484. <div className="content-title">
  485. <span>我的业务</span>
  486. </div>
  487. <div className="user-search">
  488. <Input placeholder="客户名称"
  489. value={this.state.identifyNameS}
  490. onChange={(e) => { this.setState({ identifyNameS: e.target.value }); }} />
  491. <Select placeholder="服务意向" value={this.state.businessIdS} onChange={(e) => {
  492. this.setState({businessIdS:e})}} style={{width:'150px'}}>
  493. {
  494. intentionalService.map(function (item) {
  495. return <Select.Option key={item.value} >{item.key}</Select.Option>
  496. })
  497. }
  498. </Select>
  499. <Button type="primary" onClick={this.search}>搜索</Button>
  500. <Button onClick={this.reset}>重置</Button>
  501. <span style={{marginLeft:'10px',marginRight:'20px'}}>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
  502. <div className='clearfix' style={{marginTop:'5px'}}>
  503. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  504. <RangePicker
  505. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  506. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  507. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  508. <Select placeholder="客户状态"
  509. style={{ width: 150 }}
  510. value={this.state.customerStatusS}
  511. onChange={(e) => { this.setState({ customerStatusS: e }) }}>
  512. {this.state.customerStatusArrOption}
  513. </Select>
  514. <Select placeholder="业务进度"
  515. style={{ width: 150 }}
  516. value={this.state.followSituationS}
  517. onChange={(e) => { this.setState({ followSituationS: e }) }}>
  518. {this.state.intentionalOption}
  519. </Select>
  520. <Input placeholder="营销员" style={{width:'150px'}}
  521. value={this.state.adminNameS}
  522. onChange={(e) => { this.setState({ adminNameS: e.target.value }); }} />
  523. </div>
  524. </div>
  525. </div>
  526. <div className="patent-table">
  527. <Spin spinning={this.state.loading}>
  528. <Table columns={this.state.columns}
  529. dataSource={this.state.dataSource}
  530. rowSelection={rowSelection}
  531. pagination={this.state.pagination}
  532. onRowClick={this.tableRowClick}
  533. />
  534. </Spin>
  535. </div>
  536. <Modal
  537. className="customeDetails"
  538. title="我的业务意向详情"
  539. width='1000px'
  540. visible={this.state.modal5Visible}
  541. onOk={this.detailsModal}
  542. onCancel={this.detailsModal}
  543. footer=''
  544. >
  545. <Form horizontal onSubmit={this.newSubmit} id="demand-form">
  546. <Spin spinning={this.state.loading}>
  547. <div className="clearfix">
  548. <FormItem className="half-item"
  549. {...formItemLayout}
  550. label="意向名称"
  551. >
  552. <span>{getCompanyIntention(theInformation.businessGlossoryId)}</span>
  553. </FormItem>
  554. <FormItem className="half-item"
  555. {...formItemLayout}
  556. label="意向时间"
  557. >
  558. <span>{theInformation.createTime}</span>
  559. </FormItem>
  560. <FormItem className="half-item"
  561. {...formItemLayout}
  562. label="客户名称"
  563. >
  564. <span>{theInformation.identifyName}</span>
  565. </FormItem>
  566. <FormItem className="half-item"
  567. {...formItemLayout}
  568. label="营销员"
  569. >
  570. <span>{theInformation.adminName}</span>
  571. </FormItem>
  572. <FormItem className="half-item"
  573. {...formItemLayout}
  574. label="意向进度"
  575. >
  576. <span>{getfllowSituation(theInformation.followSituation)}</span>
  577. </FormItem>
  578. <FormItem className="half-item"
  579. {...formItemLayout}
  580. label="客户状态"
  581. >
  582. <span>{getcustomerStatue(theInformation.customerStatus)}</span>
  583. </FormItem>
  584. <div className="clearfix">
  585. <FormItem
  586. labelCol={{ span: 4 }}
  587. wrapperCol={{ span: 16 }}
  588. label="意向说明" >
  589. <span>{this.state.remarks}</span>
  590. </FormItem>
  591. </div>
  592. </div>
  593. <div className="clearfix">
  594. <div style={{fontSize:'18px',marginLeft:'40px',marginBottom:'20px'}}>业务跟进</div>
  595. <div className="clearfix" style={{paddingLeft:'40px',paddingRight:'40px'}}>
  596. <Spin spinning={this.state.loading}>
  597. <Table
  598. pagination={this.state.paginations}
  599. columns={this.state.businessFollowList}
  600. dataSource={this.state.visitArrList}
  601. onRowClick={this.followRowClick}
  602. />
  603. </Spin>
  604. </div>
  605. </div>
  606. </Spin>
  607. </Form>
  608. </Modal>
  609. <Modal
  610. footer=''
  611. title="业务跟进详情"
  612. width='1000px'
  613. visible={this.state.businessFollowModul}
  614. onOk={this.businessFollowOk}
  615. onCancel={this.businessFollowCancel}
  616. >
  617. <div className="clearfix">
  618. <Form horizontal id="demand-form" >
  619. <Spin spinning={this.state.loading}>
  620. <div className="clearfix">
  621. <FormItem className="half-item"
  622. {...formItemLayout}
  623. label="意向名称"
  624. >
  625. <span>{getCompanyIntention(this.state.businessGlossoryId)}</span>
  626. </FormItem>
  627. <FormItem className="half-item"
  628. {...formItemLayout}
  629. label="意向时间"
  630. >
  631. <span>{this.state.createTime}</span>
  632. </FormItem>
  633. <FormItem className="half-item"
  634. {...formItemLayout}
  635. label="客户名称"
  636. >
  637. <span>{this.state.identifyName}</span>
  638. </FormItem>
  639. <FormItem className="half-item"
  640. {...formItemLayout}
  641. label="营销员"
  642. >
  643. <span>{this.state.adminName}</span>
  644. </FormItem>
  645. <FormItem className="half-item"
  646. {...formItemLayout}
  647. label="意向进度"
  648. >
  649. <span>{getfllowSituation(this.state.followSituation)}</span>
  650. </FormItem>
  651. <FormItem className="half-item"
  652. {...formItemLayout}
  653. label="客户状态"
  654. >
  655. <span>{getcustomerStatue(this.state.customerStatus)}</span>
  656. </FormItem>
  657. <div className="clearfix">
  658. <FormItem
  659. labelCol={{ span: 4 }}
  660. wrapperCol={{ span: 16 }}
  661. label="意向说明" >
  662. <span>{this.state.remarks}</span>
  663. </FormItem>
  664. </div>
  665. <div style={{fontSize:'18px',marginLeft:'30px'}}>拜访情况</div>
  666. <FormItem className="half-item"
  667. labelCol={{ span: 8 }}
  668. wrapperCol={{ span: 16 }}
  669. label="拜访方式" >
  670. <span>{getContactType(parseInt(this.state.contactType))}</span>
  671. </FormItem>
  672. <FormItem className="half-item"
  673. {...formItemLayout}
  674. label="当前联系人"
  675. >
  676. <span>{this.state.contacts}</span>
  677. </FormItem>
  678. <FormItem className="half-item"
  679. {...formItemLayout}
  680. label="拜访人"
  681. >
  682. <span>{this.state.adminName}</span>
  683. </FormItem>
  684. <FormItem className="half-item"
  685. {...formItemLayout}
  686. label="拜访时间" >
  687. <span>{this.state.followTime}</span>
  688. </FormItem>
  689. <FormItem
  690. labelCol={{ span: 4 }}
  691. wrapperCol={{ span: 16 }}
  692. label="拜访备注" >
  693. <span>{this.state.result}</span>
  694. </FormItem>
  695. </div>
  696. </Spin>
  697. </Form>
  698. </div>
  699. </Modal>
  700. </div >
  701. );
  702. }
  703. }));
  704. export default ServiceQuery;