individualCustomer.jsx 95 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278
  1. import React from 'react';
  2. import { Radio, Icon, Button, Cascader,Input, Select, Tabs,Spin,Popconfirm, Popover,Table, Switch, message, DatePicker, Modal, Upload,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 { citySelect,provinceList,areaSelect} from '../../../NewDicProvinceList';
  8. const { Column, ColumnGroup } = Table;
  9. const TabPane = Tabs.TabPane;
  10. import CustomerDetail from './myClientDesc.jsx';
  11. import {socialAttribute,newFollow,lvl,currentMember,cityArr, customerStatus,intentionalService,sex} from '../../../dataDic.js';
  12. import {getCompanyIntention,beforeUploadFile,getWhether,getcityArr,getcustomerStatue,getfllowSituationOn,getCertification,getcustomerTyp,getLvl,getCurrentMember,getprovince} from '../../../tools.js';
  13. const data = [{
  14. id: '1',
  15. name: '长沙科技1',
  16. contacts: '午安行',
  17. contactMobile: '321312311',
  18. expert:'0',
  19. serviceCertification:'0',
  20. userCertification:'0',
  21. locationProvince:'广州',
  22. }, {
  23. id: '2',
  24. name: '上海科技',
  25. contacts: '老王',
  26. contactMobile: '231321311',
  27. expert:'1',
  28. serviceCertification:'1',
  29. userCertification:'0',
  30. locationProvince:'湖南-湘潭',
  31. Province:'1',
  32. city:'38',
  33. eare:'500',
  34. }, {
  35. id: '3',
  36. name: '广州科技',
  37. contacts: '老李',
  38. contactMobile: '1123213123',
  39. expert:'1',
  40. serviceCertification:'0',
  41. userCertification:'1',
  42. locationProvince:'北京',
  43. Province:'6',
  44. city:'24',
  45. eare:'12',
  46. }
  47. ];
  48. //图片组件
  49. const PicturesWall = React.createClass({
  50. getInitialState() {
  51. return {
  52. previewVisible: false,
  53. previewImage: '',
  54. fileList: [],
  55. }
  56. },
  57. handleCancel() {
  58. this.setState({ previewVisible: false })
  59. },
  60. handlePreview(file) {
  61. this.setState({
  62. previewImage: file.url || file.thumbUrl,
  63. previewVisible: true,
  64. });
  65. },
  66. handleChange(info) {
  67. let fileList = info.fileList;
  68. this.setState({ fileList });
  69. this.props.fileList(fileList);
  70. },
  71. componentWillReceiveProps(nextProps) {
  72. this.state.fileList = nextProps.pictureUrl;
  73. },
  74. render() {
  75. const { previewVisible, previewImage, fileList } = this.state;
  76. const uploadButton = (
  77. <div>
  78. <Icon type="plus" />
  79. <div className="ant-upload-text">点击上传</div>
  80. </div>
  81. );
  82. return (
  83. <div style={{display:"inline-block"}}>
  84. <Upload
  85. action={globalConfig.context + "/api/admin/customer/attachmentUpload"}
  86. data={{ 'sign': this.props.pictureSign }}
  87. listType="picture-card"
  88. fileList={fileList}
  89. onPreview={this.handlePreview}
  90. onChange={this.handleChange} >
  91. {fileList.length >= 5 ? null : uploadButton}
  92. </Upload>
  93. <Modal maskClosable={false} visible={previewVisible} footer={null} onCancel={this.handleCancel}>
  94. <img alt="example" style={{ width: '100%' }} src={previewImage} />
  95. </Modal>
  96. </div>
  97. );
  98. }
  99. });
  100. const IndividualCustomer= Form.create()(React.createClass({
  101. loadData(pageNo, apiUrl) {
  102. this.state.data = [];
  103. this.setState({
  104. loading: true
  105. });
  106. $.ajax({
  107. method: "post",
  108. dataType: "json",
  109. crossDomain: false,
  110. url:globalConfig.context + '/api/admin/customer/listPrivateOrganizationCustomer',
  111. data: {
  112. pageNo: pageNo || 1,
  113. pageSize: this.state.pagination.pageSize,
  114. type: this.state.typeSearch, //名称1
  115. name:this.state.nameSearch,
  116. province:this.state.addressSearch?this.state.addressSearch[0].value:this.state.provinceSearch,
  117. city: this.state.addressSearch?this.state.addressSearch[1].value:'',
  118. //area: this.state.addressSearch?this.state.addressSearch[2].value:'',
  119. status:this.state.statusSearch,
  120. industry:this.state.industrySearch,
  121. serviceCertification:this.state.serviceCertificationSearch,
  122. userCertification: this.state.userCertificationSearch,
  123. currentMemberStatus:this.state.currentMemberStatusSearch,
  124. lvl:this.state.lvlSearch,
  125. listed:this.state.listedSearch, //是否上市
  126. highTechZone:this.state.highTechZoneSearch, //是否高新
  127. startDate: this.state.releaseDate[0],
  128. endDate: this.state.releaseDate[1],
  129. },
  130. success: function (data) {
  131. let theArr = [];
  132. if (data.error.length || data.data.list=="") {
  133. if (data.error && data.error.length) {
  134. message.warning(data.error[0].message);
  135. };
  136. } else {
  137. for (let i = 0; i < data.data.list.length; i++) {
  138. let thisdata = data.data.list[i];
  139. theArr.push({
  140. key: i,
  141. id: thisdata.uid,
  142. type:thisdata.type,
  143. name:thisdata.name,
  144. status:thisdata.status,
  145. contacts:thisdata.contacts,
  146. contactMobile:thisdata.contactMobile,
  147. industry:thisdata.industry,
  148. createTime:thisdata.createTime,
  149. serviceCertification:thisdata.serviceCertification,
  150. userCertification:thisdata.userCertification,
  151. lvl:thisdata.lvl,
  152. currentMemberStatus:thisdata.currentMemberStatus,
  153. international:thisdata.international,
  154. listed:thisdata.listed,
  155. highTechZone:thisdata.highTechZone,
  156. locationProvince:thisdata.province+'-'+thisdata.city+'-'+thisdata.area
  157. });
  158. };
  159. this.state.pagination.current = data.data.pageNo;
  160. this.state.pagination.total = data.data.totalCount;
  161. };
  162. this.setState({
  163. dataSource: theArr,
  164. pagination: this.state.pagination
  165. });
  166. }.bind(this),
  167. }).always(function () {
  168. this.setState({
  169. loading: false
  170. });
  171. }.bind(this));
  172. },
  173. //点击出现函数
  174. setModal2VisibleOk(e) {
  175. this.setState({
  176. modal2Visible:true
  177. });
  178. },
  179. //点击消失函数
  180. setModal2Visiblecancel(e) {
  181. this.setState({
  182. modal2Visible:false
  183. });
  184. },
  185. getPictureUrl(e) {
  186. this.setState({pictureUrl: e });
  187. },
  188. handleOk(e){
  189. this.setState({
  190. visible: false,
  191. });
  192. },
  193. handleCancel(e){
  194. this.setState({
  195. visible: false,
  196. });
  197. },
  198. getInitialState() {
  199. return {
  200. orgCodeUrl:[],
  201. companyLogoUrl:[],
  202. visible: false ,
  203. searchMore: true,
  204. releaseDate: [],
  205. releaseDate: [],
  206. selectedRowKeys: [],
  207. selectedRowKey: [],
  208. selectedRows: [],
  209. loading: false,
  210. pagination: {
  211. defaultCurrent: 1,
  212. defaultPageSize: 10,
  213. showQuickJumper: true,
  214. pageSize: 10,
  215. onChange: function (page) {
  216. this.loadData(page);
  217. }.bind(this),
  218. showTotal: function (total) {
  219. return '共' + total + '条数据';
  220. }
  221. },
  222. //业务意向列表
  223. intentionList:[{
  224. title: '高新',
  225. dataIndex: 'name',
  226. render: (text, record, index) => {
  227. return <Select value={record.name} onChange={(e) => { record.name=e; this.setState({ data: this.state.data }); }}>
  228. <Select.Option value="0" >否</Select.Option>
  229. <Select.Option value="1" >是</Select.Option>
  230. </Select>
  231. }
  232. },{
  233. title: '最新进度',
  234. dataIndex: 'mobile2',
  235. key: 'mobile2',
  236. render: (text, record, index) => {
  237. return <Select value={record.mobile2} onChange={(e) => { record.mobile2 = e; this.setState({ data: this.state.data }); }}>
  238. {
  239. newFollow.map(function (item) {
  240. return <Select.Option key={item.value} >{item.key}</Select.Option>
  241. })
  242. }
  243. </Select>
  244. }
  245. },{
  246. title: '最新状态',
  247. dataIndex: 'mobile3',
  248. key: 'mobile3',
  249. render: (text, record, index) => {
  250. return <Select value={record.mobile3} onChange={(e) => { record.mobile3 = e; this.setState({ data: this.state.data }); }}>
  251. {
  252. customerStatus.map(function (item) {
  253. return <Select.Option key={item.value} >{item.key}</Select.Option>
  254. })
  255. }
  256. </Select>
  257. }
  258. },{
  259. title: '跟进说明',
  260. dataIndex: 'mobile4',
  261. key: 'mobile4',
  262. render: (text, record, index) => {
  263. return <Input value={record.mobile4}
  264. onChange={(e) => { record.mobile4 = e.target.value; this.setState({ data: this.state.data }); }}
  265. style={{width:'120px'}}/>
  266. }
  267. },{
  268. title: '操作',
  269. dataIndex: 'rrr',
  270. key: 'rrr',
  271. render: (text, record, index) => {
  272. return <div>
  273. <Button type="primary" onClick={(e)=>{this.intentionModify(record)}} style={{marginRight:'10px'}}>保存</Button>
  274. <Popconfirm title="是否删除?" onConfirm={(e)=>{this.intentionDelet(record)}} okText="删除" cancelText="不删除">
  275. <Button style={{marginRight:'10px',color:'#ffffff',background:'#f00',border:'none'}}>删除</Button>
  276. </Popconfirm>
  277. </div>
  278. }
  279. }
  280. ],
  281. businessIntentionList:[{
  282. title: '意向时间',
  283. dataIndex: 'name',
  284. key: 'name'
  285. },{
  286. title: '客户名称',
  287. dataIndex: 'mobile2',
  288. key: 'mobile2'
  289. },{
  290. title: '业务名',
  291. dataIndex: 'mobile3',
  292. key: 'mobile3'
  293. }
  294. ,{
  295. title: '营销员',
  296. dataIndex: 'mobile4',
  297. key: 'mobile4'
  298. },{
  299. title: '业务意向进度',
  300. dataIndex: 'mobile5',
  301. key: 'mobile5'
  302. },{
  303. title: '客户状态',
  304. dataIndex: 'mobile6',
  305. key: 'mobile6'
  306. },{
  307. title: '操作',
  308. dataIndex: 'ooo',
  309. key: 'ooo',
  310. render:(text,record) =>{return (<Button onClick={(e)=>{this.businessIntentionDetails(record)}}>查看</Button>)}
  311. }
  312. ],
  313. businessFollowList:[{
  314. title: '跟进时间',
  315. dataIndex: 'name',
  316. key: 'name'
  317. },{
  318. title: '营销员',
  319. dataIndex: 'mobile2',
  320. key: 'mobile2'
  321. },{
  322. title: '业务意向进度',
  323. dataIndex: 'mobile3',
  324. key: 'mobile3'
  325. }
  326. ,{
  327. title: '客户状态',
  328. dataIndex: 'mobile4',
  329. key: 'mobile4'
  330. },{
  331. title: '拜访方式',
  332. dataIndex: 'mobile5',
  333. key: 'mobile5'
  334. },{
  335. title: '联系人',
  336. dataIndex: 'mobile6',
  337. key: 'mobile6'
  338. },{
  339. title: '联系电话',
  340. dataIndex: 'mobile7',
  341. key: 'mobile7'
  342. },{
  343. title: '操作',
  344. dataIndex: 'ooo',
  345. key: 'ooo',
  346. render:(text,record) =>{return (<Button onClick={(e)=>{this.businessFollowDetails(record)}}>查看</Button>)}
  347. }
  348. ],
  349. visitsList:[{
  350. title: '拜访时间',
  351. dataIndex: 'name',
  352. key: 'name'
  353. },{
  354. title: '客户名称',
  355. dataIndex: 'mobile2',
  356. key: 'mobile2'
  357. },{
  358. title: '拜访方式',
  359. dataIndex: 'mobile3',
  360. key: 'mobile3'
  361. }
  362. ,{
  363. title: '联系人',
  364. dataIndex: 'mobile4',
  365. key: 'mobile4'
  366. },{
  367. title: '联系电话',
  368. dataIndex: 'mobile5',
  369. key: 'mobile5'
  370. },{
  371. title: '拜访人',
  372. dataIndex: 'mobile6',
  373. key: 'mobile6'
  374. },{
  375. title: '拜访说明',
  376. dataIndex: 'mobile7',
  377. key: 'mobile7'
  378. },{
  379. title: '操作',
  380. dataIndex: 'ttt',
  381. key: 'ttt',
  382. render: (text, record, index) => {
  383. return <div>
  384. <Button type="primary" onClick={(e)=>{this.visitModify(record)}} style={{marginRight:'10px'}}>修改</Button>
  385. <Popconfirm title="是否删除?" onConfirm={(e)=>{this.visitDelet(record)}} okText="删除" cancelText="不删除">
  386. <Button style={{marginRight:'10px',color:'#ffffff',background:'#f00',border:'none'}}>删除</Button>
  387. </Popconfirm>
  388. </div>
  389. }
  390. }
  391. ],
  392. ContactsList:[{
  393. title: '姓名',
  394. dataIndex: 'name',
  395. key: 'name',
  396. render: (text, record, index) => {
  397. return <Input value={record.name} onChange={(e) => { record.name = e.target.value; this.setState({ data: this.state.data }); }} style={{width:'80px'}}/>
  398. }
  399. },{
  400. title: '联系人部门',
  401. dataIndex: 'mobile1',
  402. key: 'mobile1',
  403. render: (text, record, index) => {
  404. return <Input value={record.name} onChange={(e) => { record.name = e.target.value; this.setState({ data: this.state.data }); }} style={{width:'80px'}}/>
  405. }
  406. },{
  407. title: '联系人职务',
  408. dataIndex: 'mobile2',
  409. key: 'mobile2',
  410. render: (text, record, index) => {
  411. return <Input value={record.name} onChange={(e) => { record.name = e.target.value; this.setState({ data: this.state.data }); }} style={{width:'80px'}}/>
  412. }
  413. },{
  414. title: '手机号码',
  415. dataIndex: 'mobile3',
  416. key: 'mobile3',
  417. render: (text, record, index) => {
  418. return <Input value={record.name} onChange={(e) => { record.name = e.target.value; this.setState({ data: this.state.data }); }} style={{width:'80px'}}/>
  419. }
  420. },{
  421. title: '固定电话',
  422. dataIndex: 'mobile4',
  423. key: 'mobile4',
  424. render: (text, record, index) => {
  425. return <Input value={record.name} onChange={(e) => { record.name = e.target.value; this.setState({ data: this.state.data }); }} style={{width:'80px'}}/>
  426. }
  427. },{
  428. title: '联系人QQ',
  429. dataIndex: 'mobile5',
  430. key: 'mobile5',
  431. render: (text, record, index) => {
  432. return <Input value={record.name} onChange={(e) => { record.name = e.target.value; this.setState({ data: this.state.data }); }} style={{width:'80px'}}/>
  433. }
  434. },{
  435. title: '电子邮箱',
  436. dataIndex: 'mobile6',
  437. key: 'mobile6',
  438. render: (text, record, index) => {
  439. return <Input value={record.name} onChange={(e) => { record.name = e.target.value; this.setState({ data: this.state.data }); }} style={{width:'80px'}}/>
  440. }
  441. },{
  442. title: '营销员',
  443. dataIndex: 'mobile7',
  444. key: 'mobile7',
  445. render: (text, record, index) => {
  446. return <Input value={record.name} onChange={(e) => { record.name = e.target.value; this.setState({ data: this.state.data }); }} style={{width:'80px'}}/>
  447. }
  448. },{
  449. title: '备注',
  450. dataIndex: 'mobile8',
  451. key: 'mobile8',
  452. render: (text, record, index) => {
  453. return <Input value={record.name} onChange={(e) => { record.name = e.target.value; this.setState({ data: this.state.data }); }} style={{width:'80px'}}/>
  454. }
  455. },{
  456. title: '操作',
  457. dataIndex: 'dels',
  458. key: 'dels',
  459. render: (text, record, index) => {
  460. return <div>
  461. <Popconfirm title="是否删除?" onConfirm={(e)=>{this.confirmDelet(record)}} okText="删除" cancelText="不删除">
  462. <Button style={{marginRight:'10px',color:'#ffffff',background:'#f00',border:'none'}}>删除</Button>
  463. </Popconfirm>
  464. <Button type="primary" onClick={(e)=>{this.ContactsListSave(record)}}>保存</Button>
  465. </div>
  466. }
  467. }
  468. ],
  469. columnsman:[{
  470. title: '姓名',
  471. dataIndex: 'name',
  472. key: 'name'
  473. },{
  474. title: '手机号码',
  475. dataIndex: 'mobile',
  476. key: 'mobile'
  477. }
  478. ],
  479. columns: [
  480. {
  481. title: '客户名称',
  482. dataIndex: 'name',
  483. key: 'name',
  484. }, {
  485. title: '客户类型',
  486. dataIndex: 'type',
  487. key: 'type',
  488. render: text => { return getcustomerTyp(text) }
  489. }, {
  490. title: '地区',
  491. dataIndex: 'locationProvince',
  492. key: 'locationProvince',
  493. }, {
  494. title: '联系人',
  495. dataIndex: 'contacts',
  496. key: 'contacts',
  497. },
  498. {
  499. title: '联系电话',
  500. dataIndex: 'contactMobile',
  501. key:'contactMobile',
  502. },
  503. {
  504. title: '行业',
  505. dataIndex: 'industry',
  506. key: 'industry',
  507. //render: text => { return getcustomerStatue(text) }
  508. },
  509. {
  510. title: '创建时间',
  511. dataIndex: 'createTime',
  512. key: 'createTime',
  513. },
  514. {
  515. title: '业务认证',
  516. dataIndex: 'serviceCertification',
  517. key: 'serviceCertification',
  518. render: text => { return getCertification(text) }
  519. },
  520. {
  521. title: '实名认证',
  522. dataIndex: 'userCertification',
  523. key: 'userCertification',
  524. render: text => { return getCertification(text) }
  525. },
  526. {
  527. title: '是否高新',
  528. dataIndex: 'highTechZone',
  529. key: 'highTechZone',
  530. render: text => { return getWhether(text) }
  531. },{
  532. title: '是否上市',
  533. dataIndex: 'listed',
  534. key: 'listed',
  535. render: text => { return getWhether(text) }
  536. },
  537. {
  538. title: '是否国际',
  539. dataIndex: 'international',
  540. key: 'international',
  541. render: text => { return getWhether(text) }
  542. },
  543. {
  544. title: '会员等级',
  545. dataIndex: 'lvl',
  546. key: 'lvl',
  547. render:text => {return getLvl(text)}
  548. },
  549. {
  550. title: '会员状态',
  551. dataIndex: 'currentMemberStatus',
  552. key: 'currentMemberStatus',
  553. render:text => {return getCurrentMember(text)}
  554. },
  555. {
  556. title: '操作',
  557. dataIndex: 'abc',
  558. key: 'abc',
  559. render: (text, record, index) => {
  560. return <div>
  561. <Button onClick={(e) =>{ e.stopPropagation(), this.visit(record) }} type="primary">拜访</Button>
  562. </div>
  563. }
  564. }
  565. ],
  566. dataSource: [],
  567. searchTime: [,]
  568. };
  569. },
  570. //更多操作
  571. ModalOperation(){
  572. this.setState({
  573. visible: true,
  574. });
  575. },
  576. //拜访
  577. visit(e){
  578. this.setState({
  579. visitModul:true
  580. })
  581. console.log(e)
  582. },
  583. //列表删除功能
  584. delectRow() {
  585. let deletedIds;
  586. for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
  587. let rowItem = this.state.selectedRows[idx];
  588. if (rowItem.id) {
  589. deletedIds=rowItem.id;
  590. };
  591. };
  592. this.setState({
  593. selectedRowKeys: [],
  594. });
  595. $.ajax({
  596. method: "get",
  597. dataType: "json",
  598. crossDomain: false,
  599. url: globalConfig.context + "/api/admin/customer/deleteCustomer",
  600. data: {
  601. id: deletedIds,//删除的ID
  602. }
  603. }).done(function (data) {
  604. if (!data.error.length) {
  605. message.success('删除成功!');
  606. this.setState({
  607. loading: false,
  608. });
  609. } else {
  610. message.warning(data.error[0].message);
  611. };
  612. this.loadData();
  613. }.bind(this));
  614. },
  615. //指定转交人的点击函数
  616. showModa(){
  617. this.setState({
  618. visible: true,
  619. });
  620. this.setState({
  621. selectedRowKey:[],
  622. });
  623. this.setState({
  624. selectedRowKeys:this.state.selectedRowKeys,
  625. });
  626. let changeIds;
  627. let adminName;
  628. let customerStatus;
  629. let companyIntention;
  630. let followSituation;
  631. for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
  632. let rowItem = this.state.selectedRows[idx];
  633. if (rowItem.id) {
  634. changeIds=rowItem.id;
  635. adminName=rowItem.adminName;
  636. customerStatus=rowItem.customerStatus;
  637. companyIntention=rowItem.companyIntention;
  638. followSituation=rowItem.followSituation;
  639. };
  640. };
  641. $.ajax({
  642. method: "post",
  643. dataType: "json",
  644. crossDomain: false,
  645. url: globalConfig.context + "/api/admin/customer/findAdmin",
  646. data: {
  647. id: changeIds,//这一行数据的ID
  648. beforeCompanyIntention:companyIntention,//意向服务
  649. beforeCustomerStatus:customerStatus,//客户状态
  650. beforeFollowSituation:followSituation,//最新跟进状态
  651. beforeAdminName:adminName,//跟进人
  652. }
  653. }).done(function (data) {
  654. if (data.error && data.error.length) {
  655. message.warning(data.error[0].message);
  656. } else {
  657. let theAssigne = [];
  658. if (!data.data) {
  659. if (data.error && data.error.length) {
  660. message.warning(data.error[0].message);
  661. };
  662. } else {
  663. for (let i = 0; i < data.data.length; i++) {
  664. let thisdata = data.data[i];
  665. //处理数据 进行循环
  666. theAssigne.push({
  667. name: thisdata.name,
  668. id: thisdata.id,
  669. ids: thisdata.cid,
  670. mobile:thisdata.mobile,
  671. adminName: thisdata.beforeAdminName,
  672. customerStatus: thisdata.beforeCustomerStatus,
  673. companyIntention: thisdata.beforeCompanyIntention,
  674. followSituation: thisdata.beforeFollowSituation,
  675. });
  676. };
  677. };
  678. this.setState({
  679. dataman: theAssigne,
  680. paginations:false
  681. });
  682. }
  683. }.bind(this));
  684. },
  685. //选择了指定人之后的保存点击函数,需要修改函数
  686. changeAssigner() {
  687. this.setState({
  688. visible: false,
  689. });
  690. this.setState({
  691. selectedRowKeys:[],
  692. });
  693. let datt=this.state.selectedRow;
  694. $.ajax({
  695. method: "post",
  696. dataType: "json",
  697. crossDomain: false,
  698. url: globalConfig.context + "/api/admin/customer/transferCustomer",
  699. data: {
  700. id: datt[0].ids,//这一行数据的ID
  701. aid:datt[0].id,//指定转交人的ID
  702. beforeAdminName:datt[0].adminName,//之前的跟进人
  703. adminName:datt[0].name,//转交的跟进人
  704. }
  705. }).done(function (data) {
  706. if (!data.error.length) {
  707. message.success('转交成功!');
  708. this.setState({
  709. loading: false,
  710. });
  711. } else {
  712. message.warning(data.error[0].message);
  713. };
  714. this.loadData();
  715. }.bind(this));
  716. },
  717. //转为公共客户
  718. changeRow() {
  719. let deletedIds;
  720. let adminName;
  721. for (let idx = 0; idx < this.state.selectedRows.length; idx++) {
  722. let rowItem = this.state.selectedRows[idx];
  723. if (rowItem.id) {
  724. deletedIds=rowItem.id;
  725. adminName=rowItem.adminName;
  726. };
  727. };
  728. this.setState({
  729. selectedRowKeys: [],
  730. });
  731. $.ajax({
  732. method: "get",
  733. dataType: "json",
  734. crossDomain: false,
  735. url: globalConfig.context + "/api/admin/customer/transferToPublic",
  736. data: {
  737. id: deletedIds,
  738. beforeAdminName:adminName,
  739. }
  740. }).done(function (data) {
  741. if (!data.error.length) {
  742. message.success('已转为公共客户!');
  743. this.setState({
  744. loading: false,
  745. });
  746. } else {
  747. message.warning(data.error[0].message);
  748. };
  749. this.loadData();
  750. }.bind(this));
  751. },
  752. getOrgCodeUrl(e) {
  753. this.setState({ orgCodeUrl: e });
  754. },
  755. getCompanyLogoUrl(e) {
  756. this.setState({ companyLogoUrl: e });
  757. },
  758. componentWillMount() {
  759. //城市
  760. let Province = [];
  761. provinceList.map(function (item) {
  762. var id=item.id.toString()
  763. Province.push(
  764. <Select.Option value={id} key={item.name}>{item.name}</Select.Option>
  765. )
  766. });
  767. //意向服务
  768. let intentionalArr = [];
  769. intentionalService.map(function (item) {
  770. intentionalArr.push(
  771. <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
  772. )
  773. });
  774. //会员等级
  775. let lvlArr = [];
  776. lvl.map(function (item) {
  777. lvlArr.push(
  778. <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
  779. )
  780. });
  781. //会员状态customerStatus
  782. let currentMemberArr = [];
  783. currentMember.map(function (item) {
  784. currentMemberArr.push(
  785. <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
  786. )
  787. });
  788. //客户状态
  789. let customerStatusArr = [];
  790. customerStatus.map(function (item) {
  791. customerStatusArr.push(
  792. <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
  793. )
  794. });
  795. this.state.Provinces = Province;
  796. this.state.intentionalOption = intentionalArr;
  797. this.state.lvlArrOption = lvlArr;
  798. this.state.currentMemberArrOption = currentMemberArr;
  799. this.state.customerStatusArrOption = customerStatusArr;
  800. this.loadData();
  801. },
  802. addClick() {
  803. this.state.RowData={};
  804. this.setState({
  805. showDesc: true,
  806. });
  807. },
  808. newmodal(e,s){
  809. this.state.modal5Visible = e;
  810. },
  811. closeDesc(e, s) {
  812. this.state.showDesc = e;
  813. if (s) {
  814. this.loadData();
  815. };
  816. },
  817. search() {
  818. this.loadData();
  819. },
  820. reset() {
  821. this.state.typeSearch=undefined; //名称1
  822. this.state.nameSearch='';
  823. this.state.provinceSearch=undefined;
  824. this.state.citySearch=undefined;
  825. this.state.statusSearch=undefined;
  826. this.state.contactsSearch=undefined;
  827. this.state.contactMobileSearch=undefined;
  828. this.state.industrySearch=undefined;
  829. this.state.serviceCertificationSearch=undefined;
  830. this.state.userCertificationSearch=undefined;
  831. this.state.currentMemberStatusSearch=undefined;
  832. this.state.lvlSearch=undefined;
  833. this.state.listedSearch=undefined;
  834. this.state.highTechZoneSearch=undefined;
  835. this.state.releaseDate[0]=undefined;
  836. this.state.releaseDate[1]=undefined;
  837. this.loadData();
  838. },
  839. searchSwitch() {
  840. this.setState({
  841. searchMore: !this.state.searchMore
  842. });
  843. },
  844. //详情保存函数
  845. detailsSubmint(){
  846. this.setState({
  847. modal5Visible:false,
  848. })
  849. },
  850. //整行点击
  851. tableRowClick(record, index) {
  852. this.state.RowData = record;
  853. console.log(record)
  854. this.detailsModalOk(record);
  855. this.setState({
  856. selectedRowKeys:[],
  857. rowId:record.id,
  858. })
  859. },
  860. //基本信息提交
  861. newSubmit(e){
  862. e.preventDefault();
  863. this.state.data=[];
  864. this.setState({
  865. selectedRowKeys: [],
  866. });
  867. this.props.form.validateFields((err, values) => {
  868. let theorgCodeUrl = [];
  869. if (this.state.orgCodeUrl.length) {
  870. let picArr = [];
  871. this.state.orgCodeUrl.map(function (item) {
  872. picArr.push(item.response.data);
  873. });
  874. theorgCodeUrl = picArr.join(",");
  875. };
  876. let thecompanyLogoUrl = [];
  877. if (this.state.companyLogoUrl.length) {
  878. let picArr = [];
  879. this.state.companyLogoUrl.map(function (item) {
  880. picArr.push(item.response.data);
  881. });
  882. thecompanyLogoUrl = picArr.join(",");
  883. };
  884. if (!err) {
  885. this.setState({
  886. loading: true
  887. });
  888. $.ajax({
  889. method: "post",
  890. dataType: "json",
  891. url:globalConfig.context + '/api/admin/customer/updateOrganizationCustomer',
  892. data: {
  893. id:this.state.InformationId,
  894. uid: this.state.InformationUid,
  895. societyTag:values.societyTag,
  896. introduction:values.introduction,
  897. unitName:this.state.unitName,
  898. industry:this.state.industry,
  899. locationProvince:values.ProvinceCity?values.ProvinceCity[0]:'',//省-
  900. locationCity:values.ProvinceCity?values.ProvinceCity[1]:'',//市
  901. locationArea:values.ProvinceCity?values.ProvinceCity[2]:'',//区
  902. postalAddress:values.postalAddress,
  903. contactsFixedTel:values.contactsFixedTel,
  904. contactsFax:values.contactsFax,
  905. registeredCapital:values.registeredCapital,
  906. enterpriseScale:values.enterpriseScale,
  907. legalPerson:values.legalPerson,
  908. legalPersonIdCard:values.legalPersonIdCard,
  909. legalPersonTel:values.legalPersonTel,
  910. legalPersonEmail:values.legalPersonEmail,
  911. highTechZone:this.state.highTechZone,
  912. listed:this.state.listed,
  913. orgCode:values.orgCode,
  914. businessScope:values.businessScope,
  915. introduction:values.introduction,
  916. companyLogoUrl:thecompanyLogoUrl,
  917. orgCodeUrl:theorgCodeUrl,
  918. }
  919. }).done(function (data) {
  920. this.setState({
  921. loading: false
  922. });
  923. if (!data.error.length) {
  924. message.success('保存成功!');
  925. this.detailsModal()
  926. } else {
  927. message.warning(data.error[0].message);
  928. }
  929. }.bind(this));
  930. }
  931. })
  932. },
  933. //点击整行查看详情
  934. //查看基本详情基本信息
  935. loadInformation(record){
  936. this.RowClick;
  937. $.ajax({
  938. method: "get",
  939. dataType: "json",
  940. crossDomain: false,
  941. url: globalConfig.context + '/api/admin/customer/findOrganizationCustomerDetail',
  942. data: {
  943. uid: record
  944. },
  945. success: function (data) {
  946. let thisData = data.data;
  947. if (!thisData) {
  948. if (data.error && data.error.length) {
  949. message.warning(data.error[0].message);
  950. };
  951. thisData = {};
  952. };
  953. let ProvinceCityArr=[];
  954. let ProvinceS=getprovince(thisData.locationProvince);
  955. let citys=getprovince(thisData.locationCity);
  956. let Areas=getprovince(thisData.locationArea);
  957. console.log(getprovince(800))
  958. ProvinceCityArr.push(ProvinceS,citys,Areas)
  959. console.log(ProvinceCityArr)
  960. this.setState({
  961. InformationId:thisData.id,
  962. InformationUid:thisData.uid,
  963. unitName:thisData.unitName,
  964. listed:thisData.listed,
  965. highTechZone:thisData.highTechZone,
  966. orgCodeUrl: thisData.orgCodeUrl ? splitUrl(thisData.orgCodeUrl, ',', globalConfig.avatarHost + '/upload') : [],
  967. companyLogoUrl: thisData.companyLogoUrl ? splitUrl(thisData.companyLogoUrl, ',', globalConfig.avatarHost + '/upload') : [],
  968. dataInformation:thisData,
  969. ProvinceCity:ProvinceCityArr,
  970. industry:(thisData.industry).toString(),
  971. });
  972. }.bind(this),
  973. }).always(function () {
  974. this.setState({
  975. loading: false
  976. });
  977. }.bind(this));
  978. },
  979. detailsModalOk(e) {
  980. this.setState({ modal5Visible:true });//需要一个请求数据
  981. this.loadInformation(e.id)
  982. },
  983. //点击消失函数
  984. detailsModal(e) {
  985. this.setState({
  986. modal5Visible:false
  987. });
  988. },
  989. //拜访modul函数
  990. visitOk(e) {
  991. this.setState({
  992. visitModul:false
  993. });
  994. },
  995. visitCancel(e) {
  996. this.setState({
  997. visitModul:false
  998. });
  999. },
  1000. //拜访保存函数
  1001. visitSubmit(){
  1002. this.setState({
  1003. visitModul:false,
  1004. })
  1005. },
  1006. //tab中列表点击修改拜访详情
  1007. visitModify(e){
  1008. this.setState({
  1009. visitModul:true,
  1010. })
  1011. console.log(e)
  1012. this.getNewWoman(e);
  1013. },
  1014. //拜访记录删除
  1015. visitDelet(e){
  1016. console.log(e)
  1017. },
  1018. //顶部搜索省份函数
  1019. onChange(value, selectedOptions) {
  1020. this.setState({
  1021. addressSearch:selectedOptions
  1022. });
  1023. },
  1024. //修改密码Modul
  1025. modifyPassworld(){
  1026. this.setState({
  1027. passworldModul:true
  1028. });
  1029. },
  1030. passworldOk(e) {
  1031. this.setState({
  1032. passworldModul:false
  1033. });
  1034. },
  1035. passworldCancel(e) {
  1036. this.setState({
  1037. passworldModul:false
  1038. });
  1039. },
  1040. //修改密码保存
  1041. passworldSubmit(e){
  1042. e.preventDefault();
  1043. this.passworldCancel()
  1044. },
  1045. //新增联系人
  1046. addcontactModulOK(){
  1047. this.setState({
  1048. addcontactModul:false
  1049. });
  1050. },
  1051. addcontactModulcancel(){
  1052. this.setState({
  1053. addcontactModul:false
  1054. });
  1055. },
  1056. //点击新增详情
  1057. newContacts(){
  1058. this.setState({
  1059. addcontactModul:true
  1060. });
  1061. },
  1062. //新增联系人保存函数
  1063. submitcontactman(e){
  1064. e.preventDafault();
  1065. },
  1066. //获取联系人下拉框
  1067. getNewWoman(ids) {
  1068. console.log(ids);
  1069. this.state.data = []
  1070. $.ajax({
  1071. method: "post",
  1072. dataType: "json",
  1073. crossDomain: false,
  1074. url: globalConfig.context + "/api/admin/customer/findCustomerUserList",
  1075. data:{
  1076. id:ids.id,
  1077. // uid:ids.uid,
  1078. },
  1079. success: function (data) {
  1080. let theArr = [];
  1081. let thedata=data.data;
  1082. if (!thedata) {
  1083. if (data.error && data.error.length) {
  1084. message.warning(data.error[0].message);
  1085. };
  1086. thedata = {};
  1087. };
  1088. thedata.map(function (item,index) {
  1089. theArr.push(<Select.Option value={index}>{item.name}</Select.Option>)
  1090. });
  1091. this.setState({
  1092. orderStatusOption: theArr,
  1093. });
  1094. }.bind(this),
  1095. }).always(function () {
  1096. this.setState({
  1097. loading: false
  1098. });
  1099. }.bind(this));
  1100. },
  1101. //意向服务列表修改保存
  1102. intentionModify(e){
  1103. console.log(e)
  1104. },
  1105. //意向服务列表单个删除
  1106. intentionDelet(e){
  1107. console.log(e)
  1108. },
  1109. //tab5意向业务
  1110. //意向业务查看列表单个详情
  1111. businessIntentionDetails(e){
  1112. this.setState({
  1113. businessModul:true
  1114. })
  1115. },
  1116. businessIntentionOk(){
  1117. this.setState({
  1118. businessModul:false
  1119. })
  1120. },
  1121. businessIntentionCancel(){
  1122. this.setState({
  1123. businessModul:false
  1124. })
  1125. },
  1126. //业务跟进查看跟多
  1127. businessFollowDetails(e){
  1128. this.setState({
  1129. businessFollowModul:true
  1130. })
  1131. },
  1132. businessFollowOk(e){
  1133. this.setState({
  1134. businessFollowModul:false
  1135. })
  1136. },
  1137. businessFollowCancel(e){
  1138. this.setState({
  1139. businessFollowModul:false
  1140. })
  1141. },
  1142. //详情tab切换数据处理
  1143. callback(e){
  1144. if(e==1){
  1145. this.loadInformation(this.state.rowId)
  1146. }
  1147. if(e==2){
  1148. //this.rescordlist(this.state.rowId)
  1149. }
  1150. if(e==3){
  1151. //this.Detailload(this.state.rowId)
  1152. }
  1153. if(e==4){
  1154. // this.historyList(this.state.rowId)
  1155. }
  1156. if(e==5){
  1157. // this.findCustomerHistory(this.state.rowId)
  1158. // this.historyList(this.state.rowId)
  1159. }
  1160. if(e==6){
  1161. // this.findCustomerHistory(this.state.rowId)
  1162. // this.historyList(this.state.rowId)
  1163. }
  1164. if(e==7){
  1165. // this.findCustomerHistory(this.state.rowId)
  1166. // this.historyList(this.state.rowId)
  1167. }
  1168. if(e==8){
  1169. // this.findCustomerHistory(this.state.rowId)
  1170. // this.historyList(this.state.rowId)
  1171. }
  1172. if(e==9){
  1173. // this.findCustomerHistory(this.state.rowId)
  1174. // this.historyList(this.state.rowId)
  1175. }
  1176. },
  1177. //账户信息保存
  1178. accountSave(){
  1179. this.detailsModal()
  1180. },
  1181. //列表详情tab2联系人新建
  1182. addContact(){
  1183. // this.state.data.push({
  1184. // name: '',
  1185. // });
  1186. //
  1187. // this.setState({
  1188. // data: this.state.data
  1189. // })
  1190. },
  1191. //删除
  1192. confirmDelet(e){
  1193. console.log(e)
  1194. },
  1195. //保存
  1196. ContactsListSave(e){
  1197. console.log(e)
  1198. },
  1199. //
  1200. componentWillReceiveProps(nextProps) {
  1201. if (!this.props.visible && nextProps.visible) {
  1202. if (nextProps.data && nextProps.data.id) {
  1203. this.loadData(nextProps.data.id, nextProps.detailApiUrl);
  1204. };
  1205. this.state.data = {};
  1206. this.state.companyLogoUrl = [];
  1207. this.state.orgCodeUrl = [];
  1208. };
  1209. },
  1210. render() {
  1211. const FormItem = Form.Item
  1212. const rowSelection = {
  1213. selectedRowKeys: this.state.selectedRowKeys,
  1214. onChange: (selectedRowKeys, selectedRows) => {
  1215. this.setState({
  1216. selectedRows: selectedRows.slice(-1),
  1217. selectedRowKeys: selectedRowKeys.slice(-1)
  1218. });
  1219. },
  1220. onSelect: (recordt, selected, selectedRows) => {
  1221. this.setState({
  1222. recordt:recordt.id
  1223. })
  1224. },
  1225. };
  1226. const rowSelections = {
  1227. selectedRowKeys: this.state.selectedRowKey,
  1228. onChange: (selectedRowKey, selectedRow) => {
  1229. this.setState({
  1230. selectedRow: selectedRow.slice(-1),
  1231. selectedRowKey: selectedRowKey.slice(-1)
  1232. });
  1233. },
  1234. onSelect: (records, selected, selectedRow) => {
  1235. this.setState({
  1236. selectedRow: selectedRow.slice(-1),
  1237. records:records.id,
  1238. })
  1239. },
  1240. };
  1241. const hasSelected = this.state.selectedRowKeys.length > 0;
  1242. const { RangePicker } = DatePicker;
  1243. const { getFieldDecorator } = this.props.form;
  1244. const formItemLayout = {
  1245. labelCol: { span: 8 },
  1246. wrapperCol: { span: 14 },
  1247. };
  1248. //const theDatak = this.state.datak || {};
  1249. const theInformation=this.state.dataInformation || {}
  1250. const contactsOption="";
  1251. const formItemLayput = {
  1252. labelCol: { span: 10 },
  1253. wrapperCol: { span: 14 },
  1254. };
  1255. return (
  1256. <div className="user-content" >
  1257. <div className="content-title">
  1258. <span>我的客户</span>
  1259. </div>
  1260. <div className="user-search">
  1261. <Input placeholder="公司名称"
  1262. value={this.state.nameSearch}
  1263. onChange={(e) => { this.setState({ nameSearch: e.target.value }); }} />
  1264. <Select placeholder="省"
  1265. style={{ width: 80 }}
  1266. value={this.state.provinceSearch}
  1267. onChange={(e) => {this.setState({ provinceSearch: e});}}>
  1268. {this.state.Provinces}
  1269. </Select>
  1270. <span style={{marginRight:'10px'}}>
  1271. {getFieldDecorator('addressSearch', {
  1272. initialValue: this.state.addressSearch
  1273. })(
  1274. <Cascader options={citySelect()} placeholder="详细地址" onChange={this.onChange}/>
  1275. )}
  1276. </span>
  1277. <Button type="primary" onClick={this.search}>搜索</Button>
  1278. <Button onClick={this.reset}>重置</Button>
  1279. <Button disabled onClick={() => { window.open(globalConfig.context + '/api/admin/achievement/downloadTemplate?sign=achievement_template') }}>下载批量导入模板</Button>
  1280. <Upload
  1281. name="file"
  1282. action={globalConfig.context + "/api/admin/customer/uploadExcel"}
  1283. beforeUpload={beforeUploadFile}
  1284. showUploadList={false}
  1285. onChange={(info) => {
  1286. if (info.file.status !== 'uploading') {
  1287. console.log(info.file, info.fileList);
  1288. }
  1289. if (info.file.status === 'done') {
  1290. if (!info.file.response.error.length) {
  1291. message.success(`${info.file.name} 文件上传成功!`);
  1292. this.loadData();
  1293. } else {
  1294. message.warning(info.file.response.error[0].message);
  1295. return;
  1296. };
  1297. } else if (info.file.status === 'error') {
  1298. message.error(`${info.file.name} 文件上传失败。`);
  1299. };
  1300. }} >
  1301. <Button>上传批量内容</Button>
  1302. </Upload>
  1303. <Button style={{ background: "#ea0862", border: "none", color: "#fff",marginRight:'10px' ,marginLeft:'10px'}}
  1304. disabled={!hasSelected}
  1305. onClick={this.delectRow}>删除<Icon type="minus" />
  1306. </Button>
  1307. <Button type="primary" onClick={this.showModa} disabled={!hasSelected}>指定转交人</Button>
  1308. <Modal
  1309. footer=''
  1310. title="选择指定人"
  1311. visible={this.state.visible}
  1312. onOk={this.handleOk}
  1313. onCancel={this.handleCancel}
  1314. >
  1315. <Spin spinning={this.state.loading}>
  1316. <Table
  1317. scroll={{y:'350px'}}
  1318. pagination={this.state.paginations}
  1319. columns={this.state.columnsman}
  1320. rowSelection={rowSelections}
  1321. dataSource={this.state.dataman}
  1322. />
  1323. <FormItem wrapperCol={{ span: 12, offset: 12 }} style={{marginTop:'15px'}}>
  1324. <Button className="set-submit" type="primary" htmlType="submit" id="change_keep" style={{marginLeft:"50px"}} onClick={this.changeAssigner }>保存</Button>
  1325. <Button className="set-submit" type="ghost" onClick={this.handleCancel } style={{marginLeft:"30px"}} id='change_rem'>取消</Button>
  1326. </FormItem>
  1327. </Spin>
  1328. </Modal>
  1329. <Button style={{ background: "#3fcf9e", border: "none", color: "#fff" }}
  1330. disabled={!hasSelected}
  1331. onClick={this.changeRow}>转为公共客户<Icon /></Button>
  1332. <Button style={{marginRight:'10px',background: "#595a5c", border: "none",color: "#fff" }}
  1333. disabled={!hasSelected}
  1334. onClick={this.delectRow}>锁定
  1335. </Button>
  1336. <Button style={{marginRight:'10px',background: "#11a2c6", border: "none",color: "#fff" }}
  1337. disabled={!hasSelected}
  1338. onClick={this.delectRow}>激活
  1339. </Button>
  1340. <span style={{marginLeft:'10px',marginRight:'20px'}}>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
  1341. <Button type="primary" className="addButton" onClick={this.addClick}>新增客户<Icon type="plus" /></Button>
  1342. <div className='clearfix' style={{marginTop:'5px'}}>
  1343. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  1344. <RangePicker
  1345. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  1346. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  1347. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  1348. <Select placeholder="客户类型" style={{ width: 100 }}
  1349. value={this.state.typeSearch }
  1350. onChange={(e) => { this.setState({ typeSearch : e }) }}>
  1351. <Select.Option value="0" >个人客户</Select.Option>
  1352. <Select.Option value="1" >单位客户</Select.Option>
  1353. </Select>
  1354. <Select placeholder="客户状态"
  1355. style={{ width: 100 }}
  1356. value={this.state.statusSearch}
  1357. onChange={(e) => { this.setState({ statusSearch: e }) }}>
  1358. {this.state.customerStatusArrOption}
  1359. </Select>
  1360. <Select placeholder="行业"
  1361. style={{ width: 100 }}
  1362. value={this.state.industrySearch}
  1363. onChange={(e) => { this.setState({ industrySearch: e }) }}>
  1364. {this.state.intentionalOption}
  1365. </Select>
  1366. <span>认证:</span>
  1367. <Select placeholder="业务认证"
  1368. style={{ width: 100 }}
  1369. value={this.state.serviceCertificationSearch}
  1370. onChange={(e) => { this.setState({ serviceCertificationSearch: e }) }}>
  1371. <Select.Option value="0" >未认证</Select.Option>
  1372. <Select.Option value="1" >已认证</Select.Option>
  1373. </Select>
  1374. <Select placeholder="实名认证"
  1375. style={{ width: 100 }}
  1376. value={this.state.userCertificationSearch}
  1377. onChange={(e) => { this.setState({ userCertificationSearch: e }) }}>
  1378. <Select.Option value="0" >未认证</Select.Option>
  1379. <Select.Option value="1" >已认证</Select.Option>
  1380. </Select>
  1381. <span>国际:</span>
  1382. <Select placeholder="国际"
  1383. style={{ width: 100 }}
  1384. value={this.state.internationalSearch}
  1385. onChange={(e) => { this.setState({ internationalSearch: e }) }}>
  1386. <Select.Option value="0" >否</Select.Option>
  1387. <Select.Option value="1" >是</Select.Option>
  1388. </Select>
  1389. <span>高新:</span>
  1390. <Select placeholder="高新"
  1391. style={{ width: 100 }}
  1392. value={this.state.highTechZoneSearch}
  1393. onChange={(e) => { this.setState({ highTechZoneSearch: e }) }}>
  1394. <Select.Option value="0" >否</Select.Option>
  1395. <Select.Option value="1" >是</Select.Option>
  1396. </Select>
  1397. <span>上市:</span>
  1398. <Select placeholder="上市"
  1399. style={{ width: 100 }}
  1400. value={this.state.listedSearch}
  1401. onChange={(e) => { this.setState({ listedSearch: e }) }}>
  1402. <Select.Option value="0" >否</Select.Option>
  1403. <Select.Option value="1" >是</Select.Option>
  1404. </Select>
  1405. <span>会员:</span>
  1406. <Select placeholder="会员等级"
  1407. style={{ width: 100 }}
  1408. value={this.state.lvlSearch}
  1409. onChange={(e) => { this.setState({ lvlSearch: e }) }}>
  1410. {this.state.lvlArrOption}
  1411. </Select>
  1412. <Select placeholder="会员状态"
  1413. style={{ width: 100 }}
  1414. value={this.state.currentMemberStatusSearch}
  1415. onChange={(e) => { this.setState({ currentMemberStatusSearch: e }) }}>
  1416. {this.state.currentMemberArrOption}
  1417. </Select>
  1418. </div>
  1419. </div>
  1420. </div>
  1421. <div className="patent-table">
  1422. <Spin spinning={this.state.loading}>
  1423. <Table columns={this.state.columns}
  1424. dataSource={data}
  1425. rowSelection={rowSelection}
  1426. pagination={this.state.pagination}
  1427. onRowClick={this.tableRowClick}
  1428. />
  1429. </Spin>
  1430. </div>
  1431. <CustomerDetail
  1432. data={this.state.RowData}
  1433. showDesc={this.state.showDesc}
  1434. closeDesc={this.closeDesc}
  1435. newmodal={this.newmodal}
  1436. />
  1437. <Modal
  1438. className="customeDetails"
  1439. title="单位客户详情"
  1440. width='1200px'
  1441. visible={this.state.modal5Visible}
  1442. onOk={this.detailsModal}
  1443. onCancel={this.detailsModal}
  1444. footer=''
  1445. >
  1446. <Tabs defaultActiveKey="1" onChange={this.callback}>
  1447. <TabPane tab="基本信息" key="1">
  1448. <Form horizontal onSubmit={this.newSubmit} id="demand-form">
  1449. <Spin spinning={this.state.loading}>
  1450. <div className="clearfix" style={{paddingLeft:'60px'}}>
  1451. <FormItem className="half-item"
  1452. labelCol={{ span: 4 }}
  1453. wrapperCol={{ span: 18 }}
  1454. label="客户名称"
  1455. >
  1456. <span>{theInformation.unitName}</span>
  1457. </FormItem>
  1458. </div>
  1459. <div className="clearfix" style={{paddingLeft:'60px'}}>
  1460. <FormItem className="half-item"
  1461. labelCol={{ span: 4 }}
  1462. wrapperCol={{ span: 18 }}
  1463. label="行业"
  1464. >
  1465. <Select placeholder="选择行业" value={this.state.industry} onChange={(e) => {
  1466. this.setState({industry:e})}}>
  1467. {
  1468. intentionalService.map(function (item) {
  1469. return <Select.Option key={item.value} >{item.key}</Select.Option>
  1470. })
  1471. }
  1472. </Select>
  1473. </FormItem>
  1474. <FormItem className="half-item"
  1475. labelCol={{ span: 4 }}
  1476. wrapperCol={{ span: 18 }}
  1477. label="社会属性"
  1478. >
  1479. {getFieldDecorator('societyTag', {
  1480. initialValue: theInformation.societyTag
  1481. })(
  1482. <Select placeholder="客户社会属性" >
  1483. {
  1484. socialAttribute.map(function (item) {
  1485. return <Select.Option key={item.value} >{item.key}</Select.Option>
  1486. })
  1487. }
  1488. </Select>
  1489. )}
  1490. </FormItem>
  1491. <FormItem className="half-item"
  1492. labelCol={{ span: 4 }}
  1493. wrapperCol={{ span: 18 }}
  1494. label="省-市-区"
  1495. >
  1496. {getFieldDecorator('ProvinceCity', {
  1497. initialValue: this.state.ProvinceCity
  1498. })(
  1499. <Cascader options={areaSelect()} placeholder="省-市-区" />
  1500. )}
  1501. </FormItem>
  1502. <FormItem className="half-item"
  1503. labelCol={{ span: 4 }}
  1504. wrapperCol={{ span: 18 }}
  1505. label="通信地址"
  1506. >
  1507. {getFieldDecorator('postalAddress', {
  1508. initialValue: theInformation.postalAddress
  1509. })(
  1510. <Input placeholder="客户通信地址"/>
  1511. )}
  1512. </FormItem>
  1513. <FormItem className="half-item"
  1514. labelCol={{ span: 4 }}
  1515. wrapperCol={{ span: 18 }}
  1516. label="固定电话"
  1517. >
  1518. {getFieldDecorator('contactsFixedTel', {
  1519. initialValue: theInformation.contactsFixedTel
  1520. })(
  1521. <Input placeholder="客户固定电话"/>
  1522. )}
  1523. </FormItem>
  1524. <FormItem className="half-item"
  1525. labelCol={{ span: 4 }}
  1526. wrapperCol={{ span: 18 }}
  1527. label="客户传真"
  1528. >
  1529. {getFieldDecorator('contactsFax', {
  1530. initialValue: theInformation.contactsFax
  1531. })(
  1532. <Input placeholder="客户传真"/>
  1533. )}
  1534. </FormItem>
  1535. <FormItem className="half-item"
  1536. labelCol={{ span: 4 }}
  1537. wrapperCol={{ span: 18 }}
  1538. label="注册资本"
  1539. >
  1540. {getFieldDecorator('registeredCapital', {
  1541. initialValue: theInformation.registeredCapital
  1542. })(
  1543. <Input placeholder="注册资本"/>
  1544. )}
  1545. </FormItem>
  1546. <FormItem className="half-item"
  1547. labelCol={{ span: 4 }}
  1548. wrapperCol={{ span: 18 }}
  1549. label="单位规模"
  1550. >
  1551. {getFieldDecorator('enterpriseScale', {
  1552. initialValue: theInformation.enterpriseScale
  1553. })(
  1554. <Input placeholder="单位规模"/>
  1555. )}
  1556. </FormItem>
  1557. <FormItem className="half-item"
  1558. labelCol={{ span: 4 }}
  1559. wrapperCol={{ span: 18 }}
  1560. label="法人名称"
  1561. >
  1562. {getFieldDecorator('legalPerson', {
  1563. initialValue: theInformation.legalPerson
  1564. })(
  1565. <Input placeholder="法人名称"/>
  1566. )}
  1567. </FormItem>
  1568. <FormItem className="half-item"
  1569. labelCol={{ span: 4 }}
  1570. wrapperCol={{ span: 18 }}
  1571. label="身份证号码"
  1572. >
  1573. {getFieldDecorator('legalPersonIdCard', {
  1574. initialValue: theInformation.legalPersonIdCard
  1575. })(
  1576. <Input placeholder="法人身份证号码"/>
  1577. )}
  1578. </FormItem>
  1579. <FormItem className="half-item"
  1580. labelCol={{ span: 4 }}
  1581. wrapperCol={{ span: 18 }}
  1582. label="法人电话"
  1583. >
  1584. {getFieldDecorator('legalPersonTel', {
  1585. initialValue: theInformation.legalPersonTel
  1586. })(
  1587. <Input placeholder="法人电话"/>
  1588. )}
  1589. </FormItem>
  1590. <FormItem className="half-item"
  1591. labelCol={{ span: 4 }}
  1592. wrapperCol={{ span: 18 }}
  1593. label="电子邮箱"
  1594. >
  1595. {getFieldDecorator('legalPersonEmail', {
  1596. initialValue: theInformation.legalPersonEmail
  1597. })(
  1598. <Input placeholder="法人电子邮箱"/>
  1599. )}
  1600. </FormItem>
  1601. <FormItem className="half-item"
  1602. labelCol={{ span: 4 }}
  1603. wrapperCol={{ span: 18 }}
  1604. label="高新"
  1605. >
  1606. <Radio.Group value={this.state.highTechZone} onChange={(e) => {
  1607. this.setState({highTechZone:e.target.value})
  1608. }}>
  1609. <Radio value={0}>否</Radio>
  1610. <Radio value={1}>是</Radio>
  1611. </Radio.Group>
  1612. </FormItem>
  1613. <FormItem className="half-item"
  1614. labelCol={{ span: 4 }}
  1615. wrapperCol={{ span: 18 }}
  1616. label="上市"
  1617. >
  1618. <Radio.Group value={this.state.listed} onChange={(e) => {
  1619. this.setState({listed:e.target.value })
  1620. }}>
  1621. <Radio value={0}>否</Radio>
  1622. <Radio value={1}>是</Radio>
  1623. </Radio.Group>
  1624. </FormItem>
  1625. <FormItem className="half-item"
  1626. labelCol={{ span: 4 }}
  1627. wrapperCol={{ span: 18 }}
  1628. label="机构代码"
  1629. >
  1630. {getFieldDecorator('orgCode', {
  1631. initialValue: theInformation.orgCode
  1632. })(
  1633. <Input placeholder="社会同意机构代码"/>
  1634. )}
  1635. </FormItem>
  1636. <div className="clearfix pictures">
  1637. <FormItem
  1638. labelCol={{ span: 4 }}
  1639. wrapperCol={{ span: 18 }}
  1640. label="机构证(PIC)" >
  1641. <PicturesWall
  1642. pictureSign="customer_sys_file"
  1643. fileList={this.getOrgCodeUrl}
  1644. pictureUrl={this.state.orgCodeUrl} />
  1645. <p>图片建议:图片要清晰。</p>
  1646. </FormItem>
  1647. <FormItem
  1648. labelCol={{ span: 4 }}
  1649. wrapperCol={{ span: 18 }}
  1650. label="单位logo" >
  1651. <PicturesWall
  1652. pictureSign="customer_sys_file"
  1653. fileList={this.getCompanyLogoUrl}
  1654. pictureUrl={this.state.companyLogoUrl} />
  1655. <p>图片建议:图片要清晰。</p>
  1656. </FormItem>
  1657. </div>
  1658. <div className="clearfix">
  1659. <FormItem
  1660. labelCol={{ span: 2 }}
  1661. wrapperCol={{ span: 18 }}
  1662. label="业务范围" >
  1663. {getFieldDecorator('businessScope', {
  1664. initialValue: theInformation.businessScope
  1665. })(
  1666. <Input type="textarea" rows={4} />
  1667. )}
  1668. </FormItem>
  1669. <FormItem
  1670. labelCol={{ span: 2 }}
  1671. wrapperCol={{ span: 18 }}
  1672. label="单位简介" >
  1673. {getFieldDecorator('introduction', {
  1674. initialValue: theInformation.introduction
  1675. })(
  1676. <Input type="textarea" rows={4} />
  1677. )}
  1678. </FormItem>
  1679. </div>
  1680. <Button className="set-submit" type="primary" htmlType="submit" style={{marginLeft:'90px',marginBottom:'30px'}}>保存</Button>
  1681. <Button className="set-submit" type="ghost" onClick={this.detailsModal}>取消</Button>
  1682. </div>
  1683. </Spin>
  1684. </Form>
  1685. </TabPane>
  1686. <TabPane tab="联系人信息" key="2">
  1687. <div className="clearfix" >
  1688. <Button className="ContactsList" type="primary" onClick={this.addContact}>新增</Button>
  1689. </div>
  1690. <div className="clearfix">
  1691. <Spin spinning={this.state.loading}>
  1692. <Table
  1693. pagination={this.state.paginations}
  1694. columns={this.state.ContactsList}
  1695. dataSource={data}
  1696. />
  1697. </Spin>
  1698. </div>
  1699. </TabPane>
  1700. <TabPane tab="账户信息" key="3">
  1701. <div className="clearfix">
  1702. <Form horizontal id="demand-form">
  1703. <Spin spinning={this.state.loading}>
  1704. <FormItem className="half-item"
  1705. {...formItemLayout}
  1706. label="注册手机号" >
  1707. <Input value={this.state.companyNamet1} onChange={(e) => { this.setState({ companyNamet1: e.target.value }); }} style={{width:'200px',marginRight:'50px'}}/>
  1708. <Button onClick={this.modifyPassworld}>修改密码</Button>
  1709. </FormItem>
  1710. <FormItem className="half-item"
  1711. {...formItemLayout}
  1712. label="注册用户名" >
  1713. <Input value={this.state.companyNamet2} onChange={(e) => { this.setState({ companyNamet2: e.target.value }); }} />
  1714. </FormItem>
  1715. <FormItem className="half-item"
  1716. {...formItemLayout}
  1717. label="注册邮箱" >
  1718. <Input value={this.state.companyNamet3} onChange={(e) => { this.setState({ companyNamet3: e.target.value }); }} />
  1719. </FormItem>
  1720. <FormItem className="half-item"
  1721. {...formItemLayout}
  1722. label="客户来源" >
  1723. <span>{this.state.laiyuan}</span>
  1724. </FormItem>
  1725. <FormItem className="half-item"
  1726. {...formItemLayout}
  1727. label="客户类型" >
  1728. <span>{this.state.leixing}</span>
  1729. </FormItem>
  1730. <FormItem className="half-item"
  1731. {...formItemLayout}
  1732. label="创建时间" >
  1733. <span>{this.state.time}</span>
  1734. </FormItem>
  1735. <FormItem className="half-item"
  1736. {...formItemLayout}
  1737. label="客户状态"
  1738. >
  1739. <Select placeholder="客户状态" value={this.state.companyNamet4} onChange={(e) => { this.setState({ companyNamet4: e }); }} >
  1740. {
  1741. customerStatus.map(function (item) {
  1742. return <Select.Option key={item.value} >{item.key}</Select.Option>
  1743. })
  1744. }
  1745. </Select>
  1746. </FormItem>
  1747. <div className="clearfix">
  1748. <FormItem className="half-item"
  1749. {...formItemLayout}
  1750. label="国际"
  1751. >
  1752. <Radio.Group value={this.state.searchType} onChange={(e) => {
  1753. this.setState({ searchType: e.target.value })
  1754. }}>
  1755. <Radio value={0}>否</Radio>
  1756. <Radio value={1}>是</Radio>
  1757. </Radio.Group>
  1758. </FormItem>
  1759. <FormItem className="half-item"
  1760. {...formItemLayout}
  1761. label="会员"
  1762. >
  1763. <Radio.Group value={this.state.searchType1} onChange={(e) => {
  1764. this.setState({ searchType1: e.target.value })
  1765. }}>
  1766. <Radio value={0}>否</Radio>
  1767. <Radio value={1}>是</Radio>
  1768. </Radio.Group>
  1769. </FormItem>
  1770. <FormItem className="half-item"
  1771. {...formItemLayout}
  1772. label="会员等级"
  1773. >
  1774. <Select placeholder="客户状态" value={this.state.companyNamet4} onChange={(e) => { this.setState({ companyNamet4: e }); }} >
  1775. {
  1776. lvl.map(function (item) {
  1777. return <Select.Option key={item.value} >{item.key}</Select.Option>
  1778. })
  1779. }
  1780. </Select>
  1781. </FormItem>
  1782. <FormItem className="half-item"
  1783. {...formItemLayout}
  1784. label="会员状态"
  1785. >
  1786. <Select placeholder="会员状态" value={this.state.companyNamet6} onChange={(e) => { this.setState({ companyNamet6: e }); }} >
  1787. {
  1788. currentMember.map(function (item) {
  1789. return <Select.Option key={item.value} >{item.key}</Select.Option>
  1790. })
  1791. }
  1792. </Select>
  1793. </FormItem>
  1794. </div>
  1795. <FormItem className="half-item"
  1796. {...formItemLayout}
  1797. label="业务认证"
  1798. >
  1799. <Radio.Group value={this.state.searchType12} onChange={(e) => {
  1800. this.setState({ searchType12: e.target.value })
  1801. }}>
  1802. <Radio value={0}>未认证</Radio>
  1803. <Radio value={1}>已认证</Radio>
  1804. </Radio.Group>
  1805. </FormItem>
  1806. <FormItem className="half-item"
  1807. {...formItemLayout}
  1808. label="实名认证"
  1809. >
  1810. <Radio.Group value={this.state.searchType11} onChange={(e) => {
  1811. this.setState({ searchType11: e.target.value })
  1812. }}>
  1813. <Radio value={0}>未认证</Radio>
  1814. <Radio value={1}>已认证</Radio>
  1815. </Radio.Group>
  1816. </FormItem>
  1817. <div className="clearfix">
  1818. <Button className='saveBtn' type="primary" onClick={this.accountSave}>保存</Button>
  1819. <Button type="ghost" onClick={this.detailsModal}>取消</Button>
  1820. </div>
  1821. </Spin>
  1822. </Form>
  1823. </div>
  1824. </TabPane>
  1825. <TabPane tab="客户拜访" key="4">
  1826. <div className="clearfix">
  1827. <Spin spinning={this.state.loading}>
  1828. <Table
  1829. pagination={this.state.paginations}
  1830. columns={this.state.visitsList}
  1831. dataSource={data}
  1832. />
  1833. </Spin>
  1834. </div>
  1835. </TabPane>
  1836. <TabPane tab="业务意向" key="5">
  1837. <div className="clearfix">
  1838. <Spin spinning={this.state.loading}>
  1839. <Table
  1840. pagination={this.state.paginations}
  1841. columns={this.state.businessIntentionList}
  1842. dataSource={data}
  1843. />
  1844. </Spin>
  1845. </div>
  1846. </TabPane>
  1847. <TabPane tab="业务订单" key="6">
  1848. </TabPane>
  1849. <TabPane tab="技术需求" key="7">
  1850. </TabPane>
  1851. <TabPane tab="技术成果" key="8">
  1852. </TabPane>
  1853. <TabPane tab="技术专家" key="9">
  1854. </TabPane>
  1855. </Tabs>
  1856. </Modal>
  1857. <Modal
  1858. className="customeDetails"
  1859. footer=''
  1860. title="拜访详情"
  1861. width='1000px'
  1862. visible={this.state.visitModul}
  1863. onOk={this.visitOk}
  1864. onCancel={this.visitCancel}
  1865. >
  1866. <Form horizontal id="demand-form" onSubmit={this.passworldSubmit}>
  1867. <Spin spinning={this.state.loading}>
  1868. <div className="clearfix">
  1869. <FormItem className="half-item"
  1870. {...formItemLayout}
  1871. label="拜访方式" >
  1872. <Radio.Group value={this.state.styles} onChange={(e) => {
  1873. this.setState({ styles: e.target.value })
  1874. }}>
  1875. <Radio value={0}>外出</Radio>
  1876. <Radio value={1}>电话</Radio>
  1877. <Radio value={2}>QQ</Radio>
  1878. <Radio value={3}>微信</Radio>
  1879. <Radio value={4}>邮箱</Radio>
  1880. </Radio.Group>
  1881. </FormItem>
  1882. <FormItem className="half-item"
  1883. {...formItemLayout}
  1884. >
  1885. <Button type="primary" onClick={this.newContacts} style={{marginLeft:'100px'}}>添加新联系人</Button>
  1886. </FormItem>
  1887. <div className="clearfix">
  1888. <FormItem className="half-item"
  1889. {...formItemLayout}
  1890. label="客户名称"
  1891. >
  1892. <Input type="text" value={this.state.names}
  1893. onChange={(e) => { this.setState({ names: e.target.value }); }} />
  1894. </FormItem>
  1895. <FormItem className="half-item"
  1896. {...formItemLayout}
  1897. label="联系人"
  1898. >
  1899. <Select placeholder="选择联系人" style={{ width: 140 }}
  1900. value={this.state.lastName}
  1901. onChange={this.hundleName}>
  1902. {this.state.orderStatusOption}
  1903. </Select>
  1904. </FormItem>
  1905. <FormItem className="half-item"
  1906. {...formItemLayout}
  1907. label="拜访人"
  1908. >
  1909. <span>{this.state.baifangren}</span>
  1910. </FormItem>
  1911. <FormItem className="half-item"
  1912. {...formItemLayout}
  1913. label="拜访时间"
  1914. >
  1915. <span>{this.state.baifangren}</span>
  1916. </FormItem>
  1917. <FormItem className="half-item"
  1918. {...formItemLayout}
  1919. label="联系电话"
  1920. >
  1921. <span>{this.state.baifangren}</span>
  1922. </FormItem>
  1923. </div>
  1924. <div className="clearfix">
  1925. <FormItem
  1926. labelCol={{ span: 4 }}
  1927. wrapperCol={{ span: 16 }}
  1928. label="拜访备注" >
  1929. {getFieldDecorator('introduction', {
  1930. initialValue: theInformation.introduction
  1931. })(
  1932. <Input type="textarea" rows={4} />
  1933. )}
  1934. </FormItem>
  1935. </div>
  1936. <div className="clearfix">
  1937. <div style={{fontSize:'18px',marginLeft:'100px',marginTop:'15px',marginBottom:'10px'}}>业务意向<Button onClick={this.addBusiness} style={{marginLeft:'420px',background:'green',color:'#ffffff'}}>添加新业务</Button></div>
  1938. <div className="clearfix" style={{paddingLeft:'50px',paddingRight:'50px'}}>
  1939. <Spin spinning={this.state.loading}>
  1940. <Table
  1941. pagination={this.state.paginations}
  1942. columns={this.state.intentionList}
  1943. dataSource={data}
  1944. />
  1945. </Spin>
  1946. </div>
  1947. </div>
  1948. </div>
  1949. <Button type="primary" size="large" htmlType="submit" style={{margin:'15px 15px 20px 95px'}}>保存</Button>
  1950. <Button size="large" onClick={this.visitCancel}>取消</Button>
  1951. </Spin>
  1952. </Form>
  1953. </Modal>
  1954. <Modal
  1955. footer=''
  1956. title="修改密码"
  1957. width='600px'
  1958. visible={this.state.passworldModul}
  1959. onOk={this.passworldOk}
  1960. onCancel={this.passworldCancel}
  1961. >
  1962. <div className="clearfix">
  1963. <Form horizontal id="demand-form" onSubmit={this.passworldSubmit}>
  1964. <Spin spinning={this.state.loading}>
  1965. <div className="clearfix">
  1966. <FormItem className="half-item"
  1967. {...formItemLayout}
  1968. label="原密码" >
  1969. <Input type="password" value={this.state.companyNamet1} onChange={(e) => { this.setState({ companyNamet1: e.target.value }); }} required="required" />
  1970. </FormItem>
  1971. </div>
  1972. <div className="clearfix">
  1973. <FormItem className="half-item"
  1974. {...formItemLayout}
  1975. label="新密码" >
  1976. <Input type="password" value={this.state.companyName1} onChange={(e) => { this.setState({ companyName1: e.target.value }); }} required="required" />
  1977. </FormItem>
  1978. </div>
  1979. <div className="clearfix">
  1980. <FormItem className="half-item"
  1981. {...formItemLayout}
  1982. label="确认密码" >
  1983. <Input type="password" value={this.state.companyNam1} onChange={(e) => { this.setState({ companyNam1: e.target.value }); }} required="required" />
  1984. </FormItem>
  1985. </div>
  1986. <Button type="primary" size="large" htmlType="submit" style={{margin:'15px 15px 20px 95px'}}>保存</Button>
  1987. <Button size="large" onClick={this.passworldCancel}>取消</Button>
  1988. </Spin>
  1989. </Form>
  1990. </div>
  1991. </Modal>
  1992. <Modal
  1993. footer=''
  1994. width='800px'
  1995. title="新增联系人"
  1996. visible={this.state.addcontactModul}
  1997. onOk={this.addcontactModulOK}
  1998. onCancel={this.addcontactModulcancel}
  1999. >
  2000. <Form horizontal onSubmit={this.submitcontactman} id="demand-form">
  2001. <Spin spinning={this.state.loading}>
  2002. <Row>
  2003. <FormItem
  2004. labelCol={{ span: 4 }}
  2005. wrapperCol={{ span: 14 }}
  2006. label="是否是主要联系人:" style={{marginRight:'10px'}}>
  2007. <Radio.Group value={this.state.hotst} onChange={(e) => {
  2008. this.setState({ hotst: e.target.value })
  2009. }}>
  2010. <Radio value={0}>是</Radio>
  2011. <Radio value={1}>否</Radio>
  2012. </Radio.Group>
  2013. </FormItem>
  2014. <FormItem
  2015. labelCol={{ span: 4 }}
  2016. wrapperCol={{ span: 14 }}
  2017. label="性别:" style={{marginRight:'10px',marginTop: '-15px'}}>
  2018. <Radio.Group value={this.state.hott} onChange={(e) => {
  2019. this.setState({ hott: e.target.value })
  2020. }}>
  2021. <Radio value={0}>男</Radio>
  2022. <Radio value={1}>女</Radio>
  2023. </Radio.Group>
  2024. </FormItem>
  2025. </Row>
  2026. <Row style={{ paddingLeft:'50px' }}>
  2027. <Col span={2}>姓名:</Col>
  2028. <Col span={8}>
  2029. <Input value={this.state.paymentIdt} required="required"
  2030. onChange={(e) => { this.setState({ paymentIdt: e.target.value }) }} />
  2031. </Col>
  2032. <Col span={2} style={{ marginLeft: '50px' }}>QQ号:</Col>
  2033. <Col span={8}>
  2034. <Input value={this.state.entIdt}
  2035. onChange={(e) => { this.setState({ entIdt: e.target.value }) }} />
  2036. </Col>
  2037. </Row>
  2038. <Row style={{ marginTop: '20px',paddingLeft:'50px' }}>
  2039. <Col span={2}>手机号:</Col>
  2040. <Col span={8}>
  2041. <Input value={this.state.payt} required="required"
  2042. onChange={(e) => { this.setState({ payt: e.target.value }) }} />
  2043. </Col>
  2044. <Col span={2} style={{ marginLeft: '50px' }}>座机号:</Col>
  2045. <Col span={8}>
  2046. <Input value={this.state.paymt}
  2047. onChange={(e) => { this.setState({ paymt: e.target.value }) }} />
  2048. </Col>
  2049. </Row>
  2050. <Row style={{ marginTop: '20px' ,paddingLeft:'50px'}}>
  2051. <Col span={2}>部门:</Col>
  2052. <Col span={8}>
  2053. <Input value={this.state.paytIdtt}
  2054. onChange={(e) => { this.setState({ paytIdtt: e.target.value }) }} />
  2055. </Col>
  2056. <Col span={2} style={{ marginLeft: '50px' }}>职位:</Col>
  2057. <Col span={8}>
  2058. <Input value={this.state.paentIdt}
  2059. onChange={(e) => { this.setState({ paentIdt: e.target.value }) }} />
  2060. </Col>
  2061. </Row>
  2062. <Row style={{ marginTop: '20px',paddingLeft:'50px' }}>
  2063. <Col span={2}>微信号:</Col>
  2064. <Col span={8}>
  2065. <Input value={this.state.payIdt}
  2066. onChange={(e) => { this.setState({ payIdt: e.target.value }) }} />
  2067. </Col>
  2068. <Col span={2} style={{ marginLeft: '50px' }}>邮箱:</Col>
  2069. <Col span={8}>
  2070. <Input value={this.state.emailst}
  2071. onChange={(e) => { this.setState({ emailst: e.target.value }) }} />
  2072. </Col>
  2073. </Row>
  2074. <Row style={{ marginTop: '20px',paddingLeft:'50px' ,marginBottom:'50px'}}>
  2075. <Button className="set-submit" type="primary" htmlType="submit" id="change_keep" style={{marginLeft:'60px'}}>保存</Button>
  2076. <Button className="set-submit" type="ghost" onClick={this.addcontactModulcancel} id='change_rem'>取消</Button>
  2077. </Row>
  2078. </Spin>
  2079. </Form>
  2080. </Modal>
  2081. <Modal
  2082. footer=''
  2083. title="业务意向详情"
  2084. width='600px'
  2085. visible={this.state.businessModul}
  2086. onOk={this.businessIntentionOk}
  2087. onCancel={this.businessIntentionCancel}
  2088. >
  2089. <div className="clearfix">
  2090. <Form horizontal id="demand-form" onSubmit={this.passworldSubmit}>
  2091. <Spin spinning={this.state.loading}>
  2092. <div className="clearfix">
  2093. <FormItem className="half-item"
  2094. {...formItemLayout}
  2095. label="意向业务名称" >
  2096. <span>{this.state.a}</span>
  2097. </FormItem>
  2098. <FormItem className="half-item"
  2099. {...formItemLayout}
  2100. label="意向时间" >
  2101. <span>{this.state.a1}</span>
  2102. </FormItem>
  2103. <FormItem className="half-item"
  2104. {...formItemLayout}
  2105. label="客户名称" >
  2106. <span>{this.state.a}</span>
  2107. </FormItem>
  2108. <FormItem className="half-item"
  2109. {...formItemLayout}
  2110. label="营销员" >
  2111. <span>{this.state.a}</span>
  2112. </FormItem>
  2113. <FormItem className="half-item"
  2114. {...formItemLayout}
  2115. label="意向业务进度" >
  2116. <span>{this.state.a}</span>
  2117. </FormItem>
  2118. <FormItem className="half-item"
  2119. {...formItemLayout}
  2120. label="业务客户状态" >
  2121. <span>{this.state.a}</span>
  2122. </FormItem>
  2123. </div>
  2124. <div className="clearfix">
  2125. <FormItem className="half-item"
  2126. {...formItemLayout}
  2127. label="业务意向说明" >
  2128. <span>{this.state.a}</span>
  2129. </FormItem>
  2130. </div>
  2131. <div className="clearfix">
  2132. <div>业务跟进</div>
  2133. <div className="clearfix">
  2134. <Spin spinning={this.state.loading}>
  2135. <Table
  2136. pagination={this.state.paginations}
  2137. columns={this.state.businessFollowList}
  2138. dataSource={data}
  2139. />
  2140. </Spin>
  2141. </div>
  2142. </div>
  2143. </Spin>
  2144. </Form>
  2145. </div>
  2146. </Modal>
  2147. <Modal
  2148. footer=''
  2149. title="业务跟进详情"
  2150. width='600px'
  2151. visible={this.state.businessFollowModul}
  2152. onOk={this.businessFollowOk}
  2153. onCancel={this.businessFollowCancel}
  2154. >
  2155. <div className="clearfix">
  2156. <Form horizontal id="demand-form" onSubmit={this.passworldSubmit}>
  2157. <Spin spinning={this.state.loading}>
  2158. <div className="clearfix">
  2159. <FormItem className="half-item"
  2160. {...formItemLayout}
  2161. label="意向业务名称" >
  2162. <span>{this.state.a}</span>
  2163. </FormItem>
  2164. <FormItem className="half-item"
  2165. {...formItemLayout}
  2166. label="意向时间" >
  2167. <span>{this.state.a1}</span>
  2168. </FormItem>
  2169. <FormItem className="half-item"
  2170. {...formItemLayout}
  2171. label="客户名称" >
  2172. <span>{this.state.a}</span>
  2173. </FormItem>
  2174. <FormItem className="half-item"
  2175. {...formItemLayout}
  2176. label="营销员" >
  2177. <span>{this.state.a}</span>
  2178. </FormItem>
  2179. <FormItem className="half-item"
  2180. {...formItemLayout}
  2181. label="意向业务进度" >
  2182. <span>{this.state.a}</span>
  2183. </FormItem>
  2184. <FormItem className="half-item"
  2185. {...formItemLayout}
  2186. label="业务客户状态" >
  2187. <span>{this.state.a}</span>
  2188. </FormItem>
  2189. </div>
  2190. <div className="clearfix">
  2191. <FormItem className="half-item"
  2192. {...formItemLayout}
  2193. label="业务意向说明" >
  2194. <span>{this.state.a}</span>
  2195. </FormItem>
  2196. </div>
  2197. <div className="clearfix">
  2198. <div>拜访情况</div>
  2199. <FormItem className="half-item"
  2200. {...formItemLayout}
  2201. label="拜访方式" >
  2202. <span>{this.state.a}</span>
  2203. </FormItem>
  2204. <FormItem className="half-item"
  2205. {...formItemLayout}
  2206. label="联系人" >
  2207. <span>{this.state.a}</span>
  2208. </FormItem>
  2209. <FormItem className="half-item"
  2210. {...formItemLayout}
  2211. label="联系电话" >
  2212. <span>{this.state.a}</span>
  2213. </FormItem>
  2214. <FormItem className="half-item"
  2215. {...formItemLayout}
  2216. label="拜访时间" >
  2217. <span>{this.state.a}</span>
  2218. </FormItem>
  2219. <FormItem className="half-item"
  2220. {...formItemLayout}
  2221. label="拜访人" >
  2222. <span>{this.state.a}</span>
  2223. </FormItem>
  2224. <div className="clearfix">
  2225. <FormItem className="half-item"
  2226. {...formItemLayout}
  2227. label="拜访备注" >
  2228. <span>{this.state.a}</span>
  2229. </FormItem>
  2230. </div>
  2231. </div>
  2232. </Spin>
  2233. </Form>
  2234. </div>
  2235. </Modal>
  2236. </div >
  2237. );
  2238. }
  2239. }));
  2240. export default IndividualCustomer;