projectAssignment.jsx 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829
  1. import React,{Component} from 'react';
  2. import ajax from 'jquery/src/ajax/xhr.js';
  3. import $ from 'jquery/src/ajax';
  4. import moment from 'moment';
  5. import '@/manageCenter/financialManage/distribute/public.less';
  6. import { Icon, Button,Form, Input, Select, Spin, Table, Switch, message, DatePicker, Modal,Upload ,Col} from 'antd';
  7. import OrderDesc from '@/manageCenter/financialManage/orderDetail/orderDesc'
  8. import Assign from '@/manageCenter/publicComponent/assign';
  9. import {getProcessStatus,getApproval,getLiquidationStatus,getApprovedState,splitUrl,getjiedian,getboutique} from '@/tools';
  10. const PaiDan = React.createClass({
  11. loadData(pageNo) {
  12. this.state.data = [];
  13. this.setState({
  14. page:pageNo,
  15. loading: true
  16. });
  17. $.ajax({
  18. method: "get",
  19. dataType: "json",
  20. crossDomain: false,
  21. url: globalConfig.context +"/api/admin/newOrder/orderNewList",
  22. data: {
  23. pageNo: pageNo || 1,
  24. pageSize: this.state.pagination.pageSize,
  25. specially: 4,//咨询师管理列表
  26. distribution:this.state.distribution,//全部列表
  27. name: this.state.customerName,//名称
  28. depId: this.state.departmenttSearch,//订单部门
  29. orderNo: this.state.orderNoSearch,//订单编号
  30. starTime: this.state.releaseDate[0],//开始时间
  31. endTime: this.state.releaseDate[1],//结束时间
  32. },
  33. success: function (data) {
  34. let theArr = [];
  35. if (!data.data || !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,//任务ID
  45. orderNo: thisdata.orderNo,//订单编号
  46. totalAmount:thisdata.totalAmount,//签单金额
  47. processStatus:thisdata.processStatus,//流程状态
  48. liquidationStatus:thisdata.liquidationStatus,//结算状态
  49. approval:thisdata.approval,//特批状态
  50. signDate:thisdata.signDate,//签单时间
  51. userName:thisdata.userName,//客户名称
  52. salesmanName:thisdata.salesmanName,//营销员名称
  53. financeName:thisdata.financeName,//财务名称
  54. consultantName:thisdata.consultantName,//项目负责人
  55. createDate:thisdata.createDate,//下单时间
  56. settlementAmount:thisdata.settlementAmount,//已交款项
  57. depName:thisdata.depName,//部门名称
  58. });
  59. };
  60. }
  61. this.state.pagination.current = data.data.pageNo;
  62. this.state.pagination.total = data.data.totalCount;
  63. if(data.data&&data.data.list&&!data.data.list.length){
  64. this.state.pagination.current=0
  65. this.state.pagination.total=0
  66. }
  67. this.setState({
  68. dataSource: theArr,
  69. pagination: this.state.pagination
  70. });
  71. }.bind(this),
  72. }).always(function () {
  73. this.setState({
  74. loading: false
  75. });
  76. }.bind(this));
  77. },
  78. getInitialState() {
  79. return {
  80. searchMore: true,
  81. assignVisible:false,
  82. releaseDate: [],
  83. departmentArr: [],
  84. boHuivisible:false,
  85. selectedRowKeys: [],
  86. selectedRows: [],
  87. loading: false,
  88. paginations:false,
  89. pagination: {
  90. defaultCurrent: 1,
  91. defaultPageSize: 10,
  92. showQuickJumper: true,
  93. pageSize: 10,
  94. onChange: function (page) {
  95. this.loadData(page);
  96. }.bind(this),
  97. showTotal: function (total) {
  98. return '共' + total + '条数据';
  99. }
  100. },
  101. columns: [
  102. {
  103. title: '订单编号',
  104. dataIndex: 'orderNo',
  105. key: 'orderNo',
  106. },
  107. {
  108. title: '签单客户',
  109. dataIndex: 'userName',
  110. key: 'userName',
  111. }, {
  112. title: '下单时间',
  113. dataIndex: 'createDate',
  114. key: 'createDate',
  115. }, {
  116. title: '签单时间',
  117. dataIndex: 'signDate',
  118. key: 'signDate',
  119. },
  120. {
  121. title: '订单总金额(万)',
  122. dataIndex: 'totalAmount',
  123. key: 'totalAmount'
  124. },
  125. {
  126. title: '是否特批',
  127. dataIndex: 'approval',
  128. key: 'approval',
  129. render: text => { return getApproval(text)}
  130. },
  131. {
  132. title: '订单负责人',
  133. dataIndex: 'salesmanName',
  134. key: 'salesmanName'
  135. },{
  136. title: '订单部门',
  137. dataIndex: 'depName',
  138. key: 'depName'
  139. },
  140. {
  141. title: '财务负责人',
  142. dataIndex: 'financeName',
  143. key: 'financeName'
  144. },
  145. {
  146. title: '项目负责人',
  147. dataIndex: 'consultantName',
  148. key: 'consultantName'
  149. },
  150. {
  151. title: '分派状态',
  152. dataIndex: 'processStatus',
  153. key: 'processStatus',
  154. render: text => { return text==5||text==6?getProcessStatus(text):'未分配'}
  155. },
  156. {
  157. title:'操作',
  158. dataIndex: 'caozuo',
  159. key: 'caouzo',
  160. render:(text,record)=>{
  161. return <div>
  162. {record.settlementAmount==0?
  163. <Button type="primary" style={{margin:'0 10px'}} onClick={(e)=>{e.stopPropagation(),this.examNo(record)}}>驳回</Button>
  164. :''}
  165. </div>
  166. }
  167. }
  168. ],
  169. dataSource: [],
  170. searchTime: [],
  171. columnsX: [
  172. {
  173. title: '业务项目名称',
  174. dataIndex: 'commodityName',
  175. key: 'commodityName'
  176. }, {
  177. title: '项目类别',
  178. dataIndex: 'cname',
  179. key: 'cname'
  180. },{
  181. title: '项目数量',
  182. dataIndex: 'commodityQuantity',
  183. key: 'commodityQuantity'
  184. }, {
  185. title: '金额(万元)',
  186. dataIndex: 'commodityPrice',
  187. key: 'commodityPrice'
  188. }, {
  189. title: '负责人',
  190. dataIndex: 'contacts',
  191. key: 'contacts'
  192. }, {
  193. title: '负责人电话',
  194. dataIndex: 'contactsMobile',
  195. key: 'contactsMobile'
  196. }, {
  197. title: '主要项目',
  198. dataIndex: 'main',
  199. key: 'main',
  200. render:(text)=>{
  201. return (text?'是':'否')
  202. }
  203. }, {
  204. title: '项目说明',
  205. dataIndex: 'taskComment',
  206. key: 'taskComment',
  207. render:(text)=>{
  208. return (text&&text.length>8?text.substr(0,8)+'…':text)
  209. }
  210. },
  211. {
  212. title:'操作',
  213. dataIndex: 'caozuo',
  214. key: 'caouzo',
  215. render:(text,record)=>{
  216. return <div>
  217. {record.taskStatus==0?
  218. <Button type="primary" style={{margin:'0 10px'}} onClick={(e)=>{e.stopPropagation(),this.evaluate(record)}}>分配任务</Button>
  219. :''}
  220. </div>
  221. }
  222. }
  223. ],
  224. dataSourceX: [],
  225. }
  226. },
  227. /* 分派 */
  228. evaluate(record){
  229. this.state.assignData=record;
  230. this.setState({
  231. assignVisible:true
  232. })
  233. },
  234. componentWillMount() {
  235. this.departmentList();
  236. this.loadData();
  237. },
  238. tableRowClick(record, index) {
  239. this.state.RowData = record;
  240. this.setState({
  241. visible: true,
  242. });
  243. this.xiangqing(record.orderNo);
  244. this.xiangmu(record.orderNo);
  245. this.jiedian(record.orderNo);
  246. },
  247. //审核不通过
  248. examOks(){
  249. $.ajax({
  250. method: "post",
  251. dataType: "json",
  252. crossDomain: false,
  253. url: globalConfig.context +"/api/admin/newOrder/technicianBackOrder",
  254. data: {
  255. orderNo:this.state.orderNo,
  256. reason:this.state.reason,
  257. },
  258. success: function(data) {
  259. if(data.error.length || data.data == "") {
  260. if(data.error && data.error.length) {
  261. message.warning(data.error[0].message);
  262. };
  263. } else {
  264. message.success("该订单已被驳回~");
  265. this.setState({
  266. visible:false,
  267. noVisible:false,
  268. reason:'',
  269. });
  270. this.reset();
  271. };
  272. }.bind(this),
  273. }).always(function() {
  274. this.setState({
  275. loading: false
  276. });
  277. }.bind(this));
  278. },
  279. //点击拒绝
  280. examNo(record){
  281. this.setState({
  282. noVisible:true,
  283. orderNo:record.orderNo
  284. })
  285. },
  286. //关闭输入理由框
  287. noCancel(){
  288. this.setState({
  289. noVisible:false,
  290. reason:'',
  291. })
  292. },
  293. //订单详情
  294. xiangqing(orderNos) {
  295. $.ajax({
  296. method: "get",
  297. dataType: "json",
  298. crossDomain: false,
  299. url: globalConfig.context +"/api/admin/newOrder/getOrderNewDetail",
  300. data: {
  301. orderNo:orderNos
  302. },
  303. success: function(data) {
  304. let theArr = [];
  305. if(data.error.length || data.data.list == "") {
  306. if(data.error && data.error.length) {
  307. message.warning(data.error[0].message);
  308. };
  309. } else {
  310. let thisdata=data.data;
  311. this.setState({
  312. orderNo: thisdata.orderNo,//订单编号
  313. contractNo: thisdata.contractNo,//合同编号
  314. userName:thisdata.userName,//客户名称
  315. depName:thisdata.depName,//订单部门
  316. signDate:thisdata.signDate,//签单时间
  317. processStatus:thisdata.processStatus,//流程状态
  318. liquidationStatus:thisdata.liquidationStatus,//结算状态
  319. contacts:thisdata.contacts,//企业联系人
  320. contactMobile:thisdata.contactMobile,//联系人电话
  321. legalPerson:thisdata.legalPerson,//法人
  322. legalPersonTel:thisdata.legalPersonTel,//法人电话
  323. firstAmount:thisdata.firstAmount,//签单金额
  324. totalAmount:thisdata.totalAmount,//首付金额
  325. approval:thisdata.approval,//特批状态
  326. settlementAmount:thisdata.settlementAmount,//已收款项
  327. orderRemarks:thisdata.orderRemarks,//订单留言
  328. orgCodeUrl: thisdata.contractPictureUrl ? splitUrl(thisdata.contractPictureUrl, ',', globalConfig.avatarHost + '/upload') : [],//图片地址
  329. salesmanName:thisdata.salesmanName,//营销员名称
  330. salesmanMobile:thisdata.salesmanMobile,//营销员电话
  331. financeName:thisdata.financeName,//财务名称
  332. financeMobile:thisdata.financeMobile,//财务电话
  333. })
  334. };
  335. }.bind(this),
  336. }).always(function() {
  337. this.setState({
  338. loading: false
  339. });
  340. }.bind(this));
  341. },
  342. //项目列表
  343. xiangmu(orderNos) {
  344. $.ajax({
  345. method: "get",
  346. dataType: "json",
  347. crossDomain: false,
  348. url: globalConfig.context +"/api/admin/newOrder/getOrderTask",
  349. data: {
  350. orderNo:orderNos
  351. },
  352. success: function(data) {
  353. let theArr = [];
  354. if(data.error.length || data.data.list == "") {
  355. if(data.error && data.error.length) {
  356. message.warning(data.error[0].message);
  357. };
  358. } else {
  359. for (let i = 0; i < data.data.length; i++) {
  360. let thisdata = data.data[i];
  361. theArr.push({
  362. key: i,
  363. id:thisdata.id,
  364. orderNo:thisdata.orderNo,//订单编号
  365. commodityId:thisdata.commodityId,//项目ID
  366. commodityName:thisdata.commodityName,//项目名称
  367. cname:thisdata.cname,//项目类别
  368. commodityPrice:thisdata.commodityPrice,//项目价格
  369. commodityQuantity:thisdata.commodityQuantity,//项目数量
  370. main:thisdata.main,//是否为主要任务
  371. taskComment:thisdata.taskComment,//任务说明
  372. contacts:thisdata.contacts,//联系人
  373. contactsMobile:thisdata.contactsMobile,//联系人电话
  374. taskStatus:thisdata.taskStatus,//是否分配
  375. });
  376. };
  377. };
  378. this.setState({
  379. dataSourceX: theArr,
  380. });
  381. }.bind(this),
  382. }).always(function() {
  383. this.setState({
  384. loading: false
  385. });
  386. }.bind(this));
  387. },
  388. //节点列表
  389. jiedian(orderNos) {
  390. $.ajax({
  391. method: "get",
  392. dataType: "json",
  393. crossDomain: false,
  394. url: globalConfig.context +"/api/admin/newOrder/selectOrderDun",
  395. data: {
  396. orderNo:orderNos
  397. },
  398. success: function(data) {
  399. let theArr = [];
  400. let thisData=[];
  401. if(data.error.length || data.data.list == "") {
  402. if(data.error && data.error.length) {
  403. message.warning(data.error[0].message);
  404. };
  405. } else {
  406. for(let i = 0; i < data.data.length; i++) {
  407. thisData= data.data[i];
  408. theArr.push({
  409. key:i,
  410. dunSubject:thisData.dunSubject?thisData.dunSubject.toString():"",//催款科目
  411. id:thisData.id,//节点Id
  412. money:thisData.money,//催款金额
  413. dunStatus:thisData.dunStatus,//催款状态
  414. })
  415. }
  416. this.setState({
  417. contactList:theArr
  418. })
  419. };
  420. }.bind(this),
  421. }).always(function() {
  422. this.setState({
  423. loading: false
  424. });
  425. }.bind(this));
  426. },
  427. closeDesc(e, s) {
  428. console.log(this.state.page);
  429. this.state.showDesc = e;
  430. if (s) {
  431. this.loadData(this.state.page);
  432. };
  433. },
  434. closeAssign(e, s) {
  435. this.state.assignVisible = e;
  436. if (s) {
  437. this.loadData(this.state.page);
  438. this.xiangmu(this.state.orderNo);
  439. };
  440. },
  441. search() {
  442. this.loadData();
  443. },
  444. reset() {
  445. this.state.nameSearch = '';
  446. this.state.customerName='';
  447. this.state.releaseDate = [];
  448. this.state.orderNoSearch='';
  449. this.state.departmenttSearch=undefined;
  450. this.state.distribution=undefined;
  451. this.loadData(this.state.page);
  452. },
  453. nextCancel() {
  454. this.setState({
  455. addnextVisible: false
  456. })
  457. },
  458. //点击打卡项目详情
  459. tableRowClickX(record, index) {
  460. this.setState({
  461. jid:record.id,//项目ID
  462. kid:record.commodityId,//商品ID
  463. commodityName:record.commodityName,//金额
  464. commodityPrice:record.commodityPrice,//金额
  465. commodityQuantity:record.commodityQuantity,//数量
  466. taskComment:record.taskComment,//备注
  467. main:record.main.toString(),//是否为主要
  468. addnextVisible:true,
  469. addState:0,
  470. });
  471. },
  472. searchSwitch() {
  473. this.setState({
  474. searchMore: !this.state.searchMore
  475. });
  476. },
  477. //关闭详情
  478. visitCancel(e){
  479. this.setState({
  480. visible:false
  481. })
  482. this.reset();
  483. },
  484. visitOk(e){
  485. this.setState({
  486. visible:false
  487. })
  488. this.reset();
  489. },
  490. resets(){
  491. this.state.orderNo='';
  492. this.state.customerName='';
  493. this.state.departmenttSearch=undefined;
  494. this.state.releaseDate[0] = undefined;
  495. this.state.releaseDate[1] = undefined;
  496. },
  497. //部门
  498. departmentList() {
  499. this.setState({
  500. loading: true
  501. });
  502. $.ajax({
  503. method: "get",
  504. dataType: "json",
  505. crossDomain: false,
  506. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  507. data: {
  508. },
  509. success: function(data) {
  510. let thedata = data.data;
  511. let theArr = [];
  512. if(!thedata) {
  513. if(data.error && data.error.length) {
  514. message.warning(data.error[0].message);
  515. };
  516. thedata = {};
  517. } else {
  518. thedata.map(function(item, index) {
  519. theArr.push({
  520. key: index,
  521. name: item.name,
  522. id: item.id,
  523. })
  524. })
  525. }
  526. this.setState({
  527. departmentArr: theArr,
  528. })
  529. }.bind(this),
  530. }).always(function() {
  531. this.setState({
  532. loading: false
  533. });
  534. }.bind(this));
  535. },
  536. render() {
  537. const rowSelection = {
  538. selectedRowKeys: this.state.selectedRowKeys,
  539. onChange: (selectedRowKeys, selectedRows) => {
  540. this.setState({
  541. selectedRows: selectedRows.slice(-1),
  542. selectedRowKeys: selectedRowKeys.slice(-1)
  543. });
  544. }
  545. };
  546. const formItemLayout = {
  547. labelCol: { span: 8 },
  548. wrapperCol: { span: 14 },
  549. };
  550. const FormItem = Form.Item;
  551. const hasSelected = this.state.selectedRowKeys.length > 0;
  552. const { RangePicker } = DatePicker;
  553. let departmentArr = this.state.departmentArr || [];
  554. return ( <div className="user-content">
  555. <div className="content-title">
  556. <span>项目派单管理</span>
  557. </div>
  558. <div className="user-search">
  559. <Input placeholder="客户名称"
  560. value={this.state.customerName}
  561. onChange={(e) => { this.setState({ customerName: e.target.value }); }} />
  562. <Input placeholder="订单编号"
  563. value={this.state.orderNoSearch}
  564. onChange={(e) => { this.setState({ orderNoSearch: e.target.value }); }} />
  565. <Select placeholder="选择部门"
  566. style={{ width: 150 ,marginRight:'10px'}}
  567. value={this.state.departmenttSearch}
  568. onChange={(e) => { this.setState({ departmenttSearch: e }) }}>
  569. {
  570. departmentArr.map(function (item) {
  571. return <Select.Option key={item.id} >{item.name}</Select.Option>
  572. })
  573. }
  574. </Select>
  575. <Select
  576. onChange={(e)=>{this.setState({distribution:e})}}
  577. style={{width:160,marginRight:5}}
  578. placeholder="分派状态"
  579. value={this.state.distribution}>
  580. <Option value="0">未分配</Option>
  581. <Option value="1">部分分配</Option>
  582. <Option value="2">全部分配</Option>
  583. </Select>
  584. <Button type="primary" onClick={this.search}>搜索</Button>
  585. <Button onClick={this.reset}>重置</Button>
  586. <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
  587. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  588. <span>订单时间 :</span>
  589. <RangePicker
  590. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  591. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  592. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  593. </div>
  594. </div>
  595. <div className="patent-table">
  596. <Spin spinning={this.state.loading}>
  597. <Table columns={this.state.columns}
  598. dataSource={this.state.dataSource}
  599. rowSelection={rowSelection}
  600. pagination={this.state.pagination}
  601. onRowClick={this.tableRowClick.bind(this)} />
  602. </Spin>
  603. </div>
  604. <Assign
  605. title="项目"
  606. selApi="/api/admin/orderProject/projectDistribution"
  607. data={this.state.assignData}
  608. showDesc={this.state.assignVisible}
  609. closeDesc={this.closeAssign.bind(this)}
  610. fenpaiData={8}
  611. specially={1}
  612. roleName={'咨询师经理'}
  613. requestMethod={"post"}
  614. />
  615. <Modal
  616. className="customeDetails"
  617. footer=''
  618. title="订单详情"
  619. width='900px'
  620. visible={this.state.visible}
  621. onOk={this.visitOk}
  622. onCancel={this.visitCancel}
  623. >
  624. <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form" style={{paddingBottom:'40px'}} >
  625. <Spin spinning={this.state.loading}>
  626. <div className="clearfix">
  627. <FormItem className="half-item"
  628. {...formItemLayout}
  629. label="订单编号" >
  630. <span>{this.state.orderNo}</span>
  631. </FormItem>
  632. <FormItem className="half-item"
  633. {...formItemLayout}
  634. label="合同编号" >
  635. <span>{this.state.contractNo}</span>
  636. </FormItem>
  637. <FormItem className="half-item"
  638. {...formItemLayout}
  639. label="客户名称" >
  640. <span>{this.state.userName}</span>
  641. </FormItem>
  642. <FormItem className="half-item"
  643. {...formItemLayout}
  644. label="合同签订时间" >
  645. <span>{this.state.signDate}</span>
  646. </FormItem>
  647. <FormItem className="half-item"
  648. {...formItemLayout}
  649. label="流程状态" >
  650. <span>{getProcessStatus(this.state.processStatus)}</span>
  651. </FormItem>
  652. <FormItem className="half-item"
  653. {...formItemLayout}
  654. label="结算状态" >
  655. <span>{getLiquidationStatus(this.state.liquidationStatus)}</span>
  656. </FormItem>
  657. <FormItem className="half-item"
  658. {...formItemLayout}
  659. label="企业联系人" >
  660. <span>{this.state.contacts}</span>
  661. </FormItem>
  662. <FormItem className="half-item"
  663. {...formItemLayout}
  664. label="联系人电话" >
  665. <span>{this.state.contactMobile}</span>
  666. </FormItem>
  667. <FormItem className="half-item"
  668. {...formItemLayout}
  669. label="企业法人" >
  670. <span>{this.state.legalPerson}</span>
  671. </FormItem>
  672. <FormItem className="half-item"
  673. {...formItemLayout}
  674. label="法人电话" >
  675. <span>{this.state.legalPersonTel}</span>
  676. </FormItem>
  677. <FormItem className="half-item"
  678. {...formItemLayout}
  679. label="签单金额(万元)" >
  680. <span>{this.state.totalAmount}</span>
  681. </FormItem>
  682. <FormItem className="half-item"
  683. {...formItemLayout}
  684. label="首付金额(万元)" >
  685. <span>{this.state.firstAmount}</span>
  686. </FormItem>
  687. <FormItem className="half-item"
  688. {...formItemLayout}
  689. label="特批立项" >
  690. <span>{getApprovedState(this.state.approval)}</span>
  691. </FormItem>
  692. <FormItem className="half-item"
  693. {...formItemLayout}
  694. label="已收款项(万元)" >
  695. <span>{this.state.settlementAmount}</span>
  696. </FormItem>
  697. <div className='clearfix'>
  698. <FormItem
  699. labelCol={{ span: 4 }}
  700. wrapperCol={{ span: 16 }}
  701. label="订单留言" >
  702. <span>{this.state.orderRemarks}</span>
  703. </FormItem>
  704. </div>
  705. <div className='clearfix'>
  706. <FormItem className="half-item"
  707. {...formItemLayout}
  708. label="订单负责人" >
  709. <span>{this.state.salesmanName}</span>
  710. </FormItem>
  711. <FormItem className="half-item"
  712. {...formItemLayout}
  713. label="订单负责人电话" >
  714. <span>{this.state.salesmanMobile}</span>
  715. </FormItem>
  716. <FormItem className="half-item"
  717. {...formItemLayout}
  718. label="订单部门" >
  719. <span>{this.state.depName}</span>
  720. </FormItem>
  721. </div>
  722. <div className='clearfix'>
  723. <FormItem className="half-item"
  724. {...formItemLayout}
  725. label="财务负责人" >
  726. <span>{this.state.financeName}</span>
  727. </FormItem>
  728. <FormItem className="half-item"
  729. {...formItemLayout}
  730. label="财务负责人电话" >
  731. <span>{this.state.financeMobile}</span>
  732. </FormItem>
  733. </div>
  734. <div>
  735. <span style={{marginLeft:'50px',fontSize:'20px'}}>项目业务</span>
  736. {this.state.processStatus==0?<Button type='primary' onClick={this.addDetailed} style={{float:'right',marginRight:'50px',marginBottom:'15px'}}>添加项目明细</Button>:""}
  737. </div>
  738. <div className="patent-table">
  739. <Spin spinning={this.state.loading}>
  740. <Table columns={this.state.columnsX}
  741. dataSource={this.state.dataSourceX}
  742. pagination={this.state.paginations}
  743. onRowClick={this.tableRowClickX}
  744. />
  745. </Spin>
  746. </div>
  747. </div>
  748. </Spin>
  749. </Form>
  750. </Modal>
  751. <Modal maskClosable={false} visible={this.state.addnextVisible}
  752. onOk={this.nextCancel} onCancel={this.nextCancel}
  753. width='800px'
  754. title='项目任务详情'
  755. footer=''
  756. className="admin-desc-content">
  757. <Form layout="horizontal" onSubmit={this.nextSubmit} id="demand-form">
  758. <Spin spinning={this.state.loading}>
  759. <div className='clearfix'>
  760. <FormItem className="half-item"
  761. {...formItemLayout}
  762. label="项目名称" >
  763. <span>{this.state.commodityName}</span>
  764. </FormItem>
  765. <FormItem className="half-item"
  766. {...formItemLayout}
  767. label="项目数量" >
  768. <span>{this.state.commodityQuantity}</span>
  769. </FormItem>
  770. <FormItem className="half-item"
  771. {...formItemLayout}
  772. label="金额(万元)" >
  773. <span>{this.state.commodityPrice}</span>
  774. </FormItem>
  775. <FormItem className="half-item"
  776. {...formItemLayout}
  777. label="主要项目" >
  778. <span>{getboutique(this.state.main)}</span>
  779. </FormItem>
  780. <div className='clearfix'>
  781. <FormItem
  782. labelCol={{ span: 4 }}
  783. wrapperCol={{ span: 16 }}
  784. label="服务说明" >
  785. <span>{this.state.taskComment}</span>
  786. </FormItem>
  787. </div>
  788. </div>
  789. </Spin>
  790. </Form >
  791. </Modal>
  792. <Modal maskClosable={false} visible={this.state.noVisible}
  793. onOk={this.noCancel} onCancel={this.noCancel}
  794. width='400px'
  795. title={'驳回理由'}
  796. footer=''
  797. className="admin-desc-content">
  798. <Form layout="horizontal" id="demand-form">
  799. <Spin spinning={this.state.loading}>
  800. <div className='clearfix'>
  801. <FormItem
  802. labelCol={{ span: 4 }}
  803. wrapperCol={{ span: 16 }}
  804. label="拒绝理由" >
  805. <Input type="textarea" placeholder="请输入拒绝理由" rows={4} value={this.state.reason}
  806. onChange={(e)=>{this.setState({reason:e.target.value})}}/>
  807. </FormItem>
  808. </div>
  809. <div className='clearfix'>
  810. <Button className="cancel" type="primary" onClick={this.examOks} style={{marginLeft:"50px"}} htmlType="submit">确定</Button>
  811. <Button className="cancel" type="ghost" onClick={this.noCancel} style={{marginLeft:"50px"}}>取消</Button>
  812. </div>
  813. </Spin>
  814. </Form >
  815. </Modal>
  816. </div> )
  817. }
  818. })
  819. export default PaiDan;