project.jsx 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302
  1. import React from 'react'
  2. import $ from 'jquery'
  3. import {
  4. Spin,
  5. Button,
  6. Tabs,
  7. Table,
  8. message,
  9. Modal,
  10. Form,
  11. Upload,
  12. Tag,
  13. } from 'antd'
  14. import {
  15. getProcessStatus,
  16. getApproval,
  17. getTaskStatus,
  18. getLiquidationStatus,
  19. splitUrl,
  20. getProjectStatus,
  21. getboutique,
  22. getprovince,
  23. ShowModal,
  24. getRefundStatus,
  25. } from '@/tools'
  26. const FormItem = Form.Item
  27. import ResolutionDetail from '@/resolutionDetail'
  28. const { TabPane } = Tabs
  29. const project = React.createClass({
  30. getInitialState() {
  31. return {
  32. visible: false,
  33. record: this.props.record,
  34. paginations: false,
  35. columnsX: [
  36. {
  37. title: '业务项目名称',
  38. dataIndex: 'commodityName',
  39. key: 'commodityName',
  40. },
  41. {
  42. title: '项目类别',
  43. dataIndex: 'cname',
  44. key: 'cname',
  45. },
  46. {
  47. title: '项目数量',
  48. dataIndex: 'commodityQuantity',
  49. key: 'commodityQuantity',
  50. render: (text, record) => {
  51. if (record.splitStatus == 1) {
  52. return (
  53. <span>
  54. {text}{' '}
  55. <Tag
  56. color="#108ee9"
  57. onClick={(e) => {
  58. e.stopPropagation()
  59. this.showRes(record)
  60. }}
  61. >
  62. 已拆
  63. </Tag>
  64. </span>
  65. )
  66. } else {
  67. return text
  68. }
  69. },
  70. },
  71. {
  72. title: '金额(万元)',
  73. dataIndex: 'commodityPrice',
  74. key: 'commodityPrice',
  75. },
  76. {
  77. title: '负责人',
  78. dataIndex: 'contacts',
  79. key: 'contacts',
  80. },
  81. {
  82. title: '负责人电话',
  83. dataIndex: 'contactsMobile',
  84. key: 'contactsMobile',
  85. },
  86. {
  87. title: '主要项目',
  88. dataIndex: 'main',
  89. key: 'main',
  90. render: (text) => {
  91. return text ? '是' : '否'
  92. },
  93. },
  94. {
  95. title: '项目说明',
  96. dataIndex: 'taskComment',
  97. key: 'taskComment',
  98. render: (text) => {
  99. return text && text.length > 8 ? text.substr(0, 8) + '…' : text
  100. },
  101. },
  102. ],
  103. columnsA: [
  104. {
  105. title: '流程',
  106. dataIndex: 'content',
  107. key: 'content',
  108. align: 'center',
  109. },
  110. {
  111. title: '操作人',
  112. dataIndex: 'aName',
  113. key: 'aName',
  114. align: 'center',
  115. },
  116. {
  117. title: '时间',
  118. dataIndex: 'createTimes',
  119. key: 'createTimes',
  120. align: 'center',
  121. },
  122. ],
  123. resVisible: false,
  124. companyColumns: [
  125. {
  126. title: '公司',
  127. dataIndex: 'name',
  128. key: 'name',
  129. //fixed:'left',
  130. width: 160,
  131. },
  132. {
  133. title: '联系人',
  134. dataIndex: 'contacts',
  135. key: 'contacts',
  136. },
  137. {
  138. title: '联系人电话',
  139. dataIndex: 'contactsMobile',
  140. key: 'contactsMobile',
  141. },
  142. {
  143. title: '地址',
  144. dataIndex: 'companyProvinceArr',
  145. key: 'companyProvinceArr',
  146. width: 140,
  147. render: (test) => {
  148. return test[0] === null
  149. ? ''
  150. : getprovince(test[0]) +
  151. '/' +
  152. getprovince(test[1]) +
  153. '/' +
  154. getprovince(test[2])
  155. },
  156. },
  157. {
  158. title: '详细地址',
  159. dataIndex: 'address',
  160. key: 'address',
  161. },
  162. ],
  163. }
  164. },
  165. componentWillReceiveProps(nextProps) {
  166. this.setState({
  167. visible: nextProps.visible,
  168. record: nextProps.record,
  169. })
  170. if (nextProps.record) {
  171. this.xiangqing(nextProps.record.id)
  172. this.xiangqings(nextProps.record.orderNo)
  173. this.xiangmu(nextProps.record.orderNo)
  174. this.loaduserss(nextProps.record)
  175. }
  176. },
  177. // handleOk() {
  178. // this.setState({
  179. // newVisible: false
  180. // });
  181. // // window.setTimeout( () => {
  182. // // this.setState({
  183. // // newVisible: true
  184. // // });
  185. // // },)
  186. // },
  187. // 拆分详细
  188. showRes(record) {
  189. this.setState({
  190. resVisible: true,
  191. resRecord: record,
  192. })
  193. },
  194. resCancel() {
  195. this.setState({
  196. resVisible: false,
  197. })
  198. },
  199. componentDidMount() {},
  200. xiangqing(id) {
  201. this.setState({
  202. loading: true,
  203. })
  204. $.ajax({
  205. method: 'get',
  206. dataType: 'json',
  207. crossDomain: false,
  208. url: globalConfig.context + '/api/admin/orderProject/orderTaskDetail',
  209. data: {
  210. id: id,
  211. },
  212. success: function (data) {
  213. if (data.error.length || data.data.list == '') {
  214. if (data.error && data.error.length) {
  215. message.warning(data.error[0].message)
  216. }
  217. } else {
  218. let thisdata = data.data
  219. this.setState({
  220. id: thisdata.id, //ID
  221. orderNo: thisdata.orderNo, //订单编号
  222. userName: thisdata.userName, //客户名称
  223. taskName: thisdata.taskName, //任务名称
  224. cname: thisdata.cname, //项目品类
  225. contractNo: thisdata.contractNo, //合同编号
  226. projectStatus: thisdata.projectStatus, //项目状态
  227. taskStatus: thisdata.taskStatus, //任务状态
  228. taskDate: thisdata.taskDate, //分配时间
  229. taskComment: thisdata.taskComment, //说明
  230. attachmentUrl: thisdata.attachmentUrl
  231. ? splitUrl(
  232. thisdata.attachmentUrl,
  233. ',',
  234. globalConfig.avatarHost + '/upload'
  235. )
  236. : [], //图片地址
  237. salesmanName: thisdata.salesmanName, //订单负责人
  238. startDate: thisdata.startDate, //启动日期
  239. endDate: thisdata.endDate, //结束日期
  240. acceptDate: thisdata.acceptDate, //受理日期
  241. reviewDate: thisdata.reviewDate, //评审日期
  242. publicityDate: thisdata.publicityDate, //公示日期
  243. licenceDate: thisdata.licenceDate, //发证日期
  244. contacts: thisdata.contacts, //联系人
  245. contactMobile: thisdata.contactMobile, //联系人电话
  246. legalPerson: thisdata.legalPerson, //法人
  247. legalPersonTel: thisdata.legalPersonTel, //法人电话
  248. certificateNumber: thisdata.certificateNumber, //证书编号
  249. status: thisdata.status, //状态
  250. formRetrieve: thisdata.formRetrieve, //满意度表格
  251. taskRefund: thisdata.taskRefund, //退单
  252. refundContent: thisdata.refundContent, //退单信息
  253. retrieveContent: thisdata.retrieveContent, //回收信息
  254. arrivalMoney: thisdata.arrivalMoney, //是否到款
  255. setUpAmount: thisdata.setUpAmount, //立项金额
  256. declareUser: thisdata.declareUser, //账号
  257. declarePwd: thisdata.declarePwd, //密码
  258. depName: thisdata.depName, //订单部门
  259. outsourceName: thisdata.outsourceName, //外包公司名称
  260. outsourcePrice: thisdata.outsourcePrice, //外包价格
  261. declarationBatch: thisdata.declarationBatch, //外包价格
  262. })
  263. }
  264. }.bind(this),
  265. }).always(
  266. function () {
  267. this.setState({
  268. loading: false,
  269. })
  270. }.bind(this)
  271. )
  272. },
  273. //订单详情
  274. xiangqings(orderNos) {
  275. this.setState({
  276. loading: true,
  277. })
  278. $.ajax({
  279. method: 'get',
  280. dataType: 'json',
  281. crossDomain: false,
  282. url: globalConfig.context + '/api/admin/newOrder/getOrderNewDetail',
  283. data: {
  284. orderNo: orderNos,
  285. },
  286. success: function (data) {
  287. let thisdata = data.data
  288. let ProvinceCityArr = []
  289. let ProvinceS = thisdata.locationProvince //省
  290. let citys = thisdata.locationCity //市
  291. let Areas = thisdata.locationArea //区
  292. ProvinceCityArr.push(ProvinceS, citys, Areas)
  293. if (data.error.length || data.data.list == '') {
  294. if (data.error && data.error.length) {
  295. message.warning(data.error[0].message)
  296. }
  297. } else {
  298. this.setState({
  299. processStatus: thisdata.processStatus, //流程状态
  300. liquidationStatus: thisdata.liquidationStatus, //结算状态
  301. approval: thisdata.approval, //特批状态
  302. orderRemarks: thisdata.orderRemarks, //订单留言
  303. salesmanName: thisdata.salesmanName, //营销员名称
  304. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  305. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  306. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  307. financeName: thisdata.financeName, //财务名称
  308. financeMobile: thisdata.financeMobile, //财务电话
  309. nowFinance: thisdata.nowFinance, //财务名称
  310. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  311. depName: thisdata.depName, //订单部门
  312. locationProvince: thisdata.locationProvince,
  313. locationCity: thisdata.locationCity,
  314. locationArea: thisdata.locationArea,
  315. ProvinceCity: ProvinceCityArr,
  316. postalAddress: thisdata.postalAddress, //详细地址
  317. outsource: thisdata.outsource,
  318. })
  319. }
  320. }.bind(this),
  321. }).always(
  322. function () {
  323. this.setState({
  324. loading: false,
  325. })
  326. }.bind(this)
  327. )
  328. },
  329. //查看下证信息
  330. loaduserss(record) {
  331. this.setState({
  332. loading: true,
  333. })
  334. $.ajax({
  335. method: 'get',
  336. dataType: 'json',
  337. crossDomain: false,
  338. url: globalConfig.context + '/api/admin/orderProject/selectTaskProgress',
  339. data: {
  340. tid: record.id,
  341. },
  342. success: function (data) {
  343. let theArr = []
  344. let thisData = []
  345. if (!thisData) {
  346. if (data.error && data.error.length) {
  347. message.warning(data.error[0].message)
  348. }
  349. thisData = {}
  350. } else {
  351. for (let i = 0; i < data.data.length; i++) {
  352. thisData = data.data[i]
  353. theArr.push({
  354. num: i + 1,
  355. key: i,
  356. id: thisData.id, //编号
  357. alreadyNumber: thisData.alreadyNumber, //下证数
  358. licenceTimes: thisData.licenceTimes, //下证时间
  359. notCount: thisData.notCount, //未下证数
  360. flag: true,
  361. })
  362. }
  363. this.setState({
  364. contactList: theArr,
  365. })
  366. }
  367. }.bind(this),
  368. }).always(
  369. function () {
  370. this.setState({
  371. loading: false,
  372. })
  373. }.bind(this)
  374. )
  375. },
  376. //项目列表
  377. xiangmu(orderNos) {
  378. this.setState({
  379. loading: true,
  380. })
  381. $.ajax({
  382. method: 'get',
  383. dataType: 'json',
  384. crossDomain: false,
  385. url: globalConfig.context + '/api/admin/newOrder/getOrderTask',
  386. data: {
  387. orderNo: orderNos,
  388. },
  389. success: function (data) {
  390. let theArr = []
  391. if (data.error.length || data.data.list == '') {
  392. if (data.error && data.error.length) {
  393. message.warning(data.error[0].message)
  394. }
  395. } else {
  396. for (let i = 0; i < data.data.length; i++) {
  397. let thisdata = data.data[i]
  398. theArr.push({
  399. key: i,
  400. id: thisdata.id,
  401. orderNo: thisdata.orderNo, //订单编号
  402. commodityId: thisdata.commodityId, //项目ID
  403. commodityName: thisdata.commodityName, //项目名称
  404. cname: thisdata.cname, //项目类别
  405. commodityPrice: thisdata.commodityPrice, //项目价格
  406. commodityQuantity: thisdata.commodityQuantity, //项目数量
  407. main: thisdata.main, //是否为主要任务
  408. taskComment: thisdata.taskComment, //任务说明
  409. contacts: thisdata.contacts, //联系人
  410. contactsMobile: thisdata.contactsMobile, //联系人电话
  411. taskStatus: thisdata.taskStatus, //是否分配
  412. splitStatus: thisdata.splitStatus,
  413. sort: thisdata.cSort,
  414. })
  415. }
  416. }
  417. this.setState({
  418. dataSourceX: theArr,
  419. })
  420. }.bind(this),
  421. }).always(
  422. function () {
  423. this.setState({
  424. loading: false,
  425. })
  426. }.bind(this)
  427. )
  428. },
  429. tableRowClickX(record) {
  430. this.setState({
  431. jid: record.id, //项目ID
  432. kid: record.commodityId, //商品ID
  433. commodityName: record.commodityName, //金额
  434. commodityPrice: record.commodityPrice, //金额
  435. commodityQuantity: record.commodityQuantity, //数量
  436. taskComment: record.taskComment, //备注
  437. main: record.main.toString(), //是否为主要
  438. addnextVisible: true,
  439. addState: 0,
  440. })
  441. },
  442. caozuorizhi() {
  443. this.setState({
  444. loading: true,
  445. })
  446. this.setState({
  447. visibleA: true,
  448. })
  449. $.ajax({
  450. method: 'get',
  451. dataType: 'json',
  452. crossDomain: false,
  453. url: globalConfig.context + '/api/admin/orderProject/TaskLogList',
  454. data: {
  455. id: this.state.id,
  456. },
  457. success: function (data) {
  458. let theArr = []
  459. if (data.error.length || data.data.list == '') {
  460. if (data.error && data.error.length) {
  461. message.warning(data.error[0].message)
  462. }
  463. } else {
  464. for (let i = 0; i < data.data.length; i++) {
  465. let thisdata = data.data[i]
  466. theArr.push({
  467. key: i,
  468. id: thisdata.id, //日志ID
  469. content: thisdata.content, //流程
  470. taskId: thisdata.taskId, //任务ID
  471. aName: thisdata.aName, //负责人
  472. createTimes: thisdata.createTimes, //时间
  473. })
  474. }
  475. }
  476. this.setState({
  477. dataSourceA: theArr,
  478. })
  479. }.bind(this),
  480. }).always(
  481. function () {
  482. this.setState({
  483. loading: false,
  484. })
  485. }.bind(this)
  486. )
  487. }, //关闭操作工时
  488. visitCancelA() {
  489. this.setState({
  490. visibleA: false,
  491. })
  492. },
  493. waiDetail() {
  494. let url = window.location.href.substring(7)
  495. this.setState({
  496. loading: true,
  497. })
  498. $.ajax({
  499. method: 'get',
  500. dataType: 'json',
  501. crossDomain: false,
  502. url:
  503. globalConfig.context + '/api/admin/outsourceOrg/orderOutsourceDtails',
  504. data: {
  505. tid: this.props.record.id,
  506. orderNo: this.props.record.orderNo,
  507. },
  508. }).done(
  509. function (data) {
  510. this.setState({
  511. loading: false,
  512. })
  513. if (!data.error.length && data.data) {
  514. this.setState({
  515. outsourceRemarks: data.data.outsourceRemarks,
  516. remarks: data.data.remarks,
  517. companyName: data.data.companyName,
  518. amount: data.data.amount,
  519. mid: data.data.id,
  520. unitPrice: data.data.unitPrice,
  521. refundStatus: data.data.refundStatus,
  522. unitNumber: data.data.unitNumber,
  523. pictureUrl: data.data.pictureUrl
  524. ? splitUrl(
  525. data.data.pictureUrl,
  526. ',',
  527. globalConfig.avatarHost + '/upload',
  528. url
  529. )
  530. : [], //图片地址
  531. createTimes: data.data.createTimes,
  532. auditTimes: data.data.auditTimes,
  533. })
  534. } else if (data.error && data.error.length) {
  535. message.warning(data.error[0].message)
  536. } else if (!data.data) {
  537. this.setState({
  538. refundStatus: undefined,
  539. })
  540. }
  541. }.bind(this)
  542. )
  543. },
  544. //加载外包
  545. loadCompany() {
  546. this.setState({
  547. loading: true,
  548. })
  549. $.ajax({
  550. method: 'get',
  551. dataType: 'json',
  552. crossDomain: false,
  553. url: globalConfig.context + '/api/admin/outsourceOrg/selectOutsourceOrg',
  554. data: {
  555. tid: this.props.record.id,
  556. orderNo: this.props.record.orderNo,
  557. },
  558. success: function (data) {
  559. let theArr = []
  560. if (data.error.length || data.data.list == '') {
  561. if (data.error && data.error.length) {
  562. message.warning(data.error[0].message)
  563. }
  564. } else {
  565. for (let i = 0; i < data.data.length; i++) {
  566. let thisdata = data.data[i]
  567. let ProvinceCityArr = []
  568. let ProvinceS = thisdata.province //省
  569. let citys = thisdata.city //市
  570. let Areas = thisdata.area //区
  571. ProvinceCityArr.push(ProvinceS, citys, Areas)
  572. theArr.push({
  573. key: i,
  574. id: thisdata.id, //外包Id
  575. name: thisdata.name, //名称
  576. contacts: thisdata.contacts, //联系人
  577. contactsMobile: thisdata.contactsMobile, //联系人电话
  578. companyProvinceArr: ProvinceCityArr,
  579. address: thisdata.address,
  580. remarks: thisdata.remarks,
  581. })
  582. }
  583. }
  584. this.setState({
  585. companys: theArr,
  586. })
  587. }.bind(this),
  588. }).always(
  589. function () {
  590. this.setState({
  591. loading: false,
  592. })
  593. }.bind(this)
  594. )
  595. },
  596. tabChange(e) {
  597. if (e == 2) {
  598. this.waiDetail()
  599. } else if (e == 3) {
  600. this.loadCompany()
  601. }
  602. },
  603. render() {
  604. const formItemLayout = {
  605. labelCol: { span: 8 },
  606. wrapperCol: { span: 14 },
  607. }
  608. const utils = {
  609. getSatisfaction: function (num) {
  610. switch (num) {
  611. case 0:
  612. return '未收回'
  613. case 1:
  614. return '已收回'
  615. default:
  616. return '其它'
  617. }
  618. },
  619. getChargeback: function (num) {
  620. switch (num) {
  621. case 0:
  622. return '已完成'
  623. case 1:
  624. return '未完成'
  625. default:
  626. return '其它'
  627. }
  628. },
  629. }
  630. return (
  631. <Modal
  632. className="customeDetails"
  633. footer=""
  634. title=""
  635. width="900px"
  636. visible={this.state.visible}
  637. // onOk={this.visitOk}
  638. onCancel={(e) => {
  639. this.props.cancel()
  640. }}
  641. >
  642. {this.state.resVisible ? (
  643. <ResolutionDetail
  644. cancel={this.resCancel}
  645. detail={this.state.resRecord}
  646. visible={this.state.resVisible}
  647. id={this.state.resRecord.orderNo}
  648. />
  649. ) : (
  650. ''
  651. )}
  652. <Tabs defaultActiveKey="1" onChange={this.tabChange}>
  653. <TabPane tab="项目概况" key="1">
  654. <Form
  655. layout="horizontal"
  656. onSubmit={this.handleSubmit}
  657. id="demand-form"
  658. style={{ paddingBottom: '0px' }}
  659. >
  660. <Spin spinning={this.state.loading}>
  661. <div className="clearfix">
  662. <div className="clearfix">
  663. <FormItem
  664. className="half-item"
  665. {...formItemLayout}
  666. label="当前项目情况"
  667. >
  668. <span>{this.state.status ? '暂停' : '开启'}</span>
  669. <Button
  670. type="primary"
  671. size="small"
  672. style={{ marginTop: '5px', position: 'absolute' }}
  673. onClick={this.caozuorizhi}
  674. >
  675. 操作日志
  676. </Button>
  677. </FormItem>
  678. <FormItem
  679. className="half-item"
  680. {...formItemLayout}
  681. label="合同编号"
  682. >
  683. <span>{this.state.contractNo}</span>
  684. </FormItem>
  685. </div>
  686. <div className="clearfix">
  687. <FormItem
  688. className="half-item"
  689. {...formItemLayout}
  690. label="项目状态"
  691. >
  692. {/* <span>{getProcessStatus(this.state.projectStatus)}</span> */}
  693. <span>{getProjectStatus(this.state.projectStatus)}</span>
  694. </FormItem>
  695. <FormItem
  696. className="half-item"
  697. {...formItemLayout}
  698. label="是否特批"
  699. >
  700. <span>{getApproval(this.state.approval)}</span>
  701. </FormItem>
  702. <FormItem
  703. className="half-item"
  704. {...formItemLayout}
  705. label="结算状态"
  706. >
  707. <span>
  708. {getLiquidationStatus(this.state.liquidationStatus)}
  709. </span>
  710. </FormItem>
  711. <FormItem
  712. className="half-item"
  713. {...formItemLayout}
  714. label="流程状态"
  715. >
  716. <span>{getProcessStatus(this.state.processStatus)}</span>
  717. </FormItem>
  718. <FormItem
  719. className="half-item"
  720. {...formItemLayout}
  721. label="订单编号"
  722. >
  723. <span>{this.state.orderNo}</span>
  724. </FormItem>
  725. <FormItem
  726. className="half-item"
  727. {...formItemLayout}
  728. label="是否外包"
  729. >
  730. <span>{this.state.outsource == 0 ? '否' : '是'}</span>
  731. </FormItem>
  732. </div>
  733. <div className="clearfix">
  734. <FormItem
  735. className="half-item"
  736. {...formItemLayout}
  737. label="满意度表格"
  738. >
  739. <span>
  740. {utils.getSatisfaction(this.state.formRetrieve)}
  741. </span>
  742. </FormItem>
  743. <FormItem
  744. className="half-item"
  745. {...formItemLayout}
  746. label="退单"
  747. >
  748. <span>{utils.getChargeback(this.state.taskRefund)}</span>
  749. </FormItem>
  750. </div>
  751. <div className="clearfix">
  752. {
  753. <FormItem
  754. className="half-item"
  755. {...formItemLayout}
  756. label="(满意度)备注"
  757. >
  758. <span>{this.state.retrieveContent}</span>
  759. </FormItem>
  760. }
  761. {
  762. <FormItem
  763. className="half-item"
  764. {...formItemLayout}
  765. label="(退单)备注"
  766. >
  767. <span>{this.state.refundContent}</span>
  768. </FormItem>
  769. }
  770. </div>
  771. <div className="clearfix">
  772. <h3 className="sub-title">任务信息</h3>
  773. <FormItem
  774. className="half-item"
  775. {...formItemLayout}
  776. label="任务编号"
  777. >
  778. <span>{this.state.id}</span>
  779. </FormItem>
  780. <FormItem
  781. className="half-item"
  782. {...formItemLayout}
  783. label="任务名称"
  784. >
  785. <span>{this.state.taskName}</span>
  786. </FormItem>
  787. <FormItem
  788. className="half-item"
  789. {...formItemLayout}
  790. label="任务状态"
  791. >
  792. <span>{getTaskStatus(this.state.taskStatus)}</span>
  793. </FormItem>
  794. <FormItem
  795. className="half-item"
  796. {...formItemLayout}
  797. label="任务类别"
  798. >
  799. <span>{this.state.cname}</span>
  800. </FormItem>
  801. <FormItem
  802. className="half-item"
  803. {...formItemLayout}
  804. label="证书编号"
  805. >
  806. <span>{this.state.certificateNumber}</span>
  807. </FormItem>
  808. </div>
  809. {this.state.outsource === 1 ? (
  810. <div className="clearfix">
  811. <h3 className="sub-title">外包信息</h3>
  812. <FormItem
  813. className="half-item"
  814. {...formItemLayout}
  815. label="外包公司"
  816. >
  817. <span>{this.state.outsourceName}</span>
  818. </FormItem>
  819. <FormItem
  820. className="half-item"
  821. {...formItemLayout}
  822. label="外包成本(万元)"
  823. >
  824. <span>{this.state.outsourcePrice}</span>
  825. </FormItem>
  826. </div>
  827. ) : (
  828. ''
  829. )}
  830. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  831. <div className="clearfix">
  832. <h3 className="sub-title">联系信息</h3>
  833. <FormItem
  834. className="half-item"
  835. {...formItemLayout}
  836. label="客户名称"
  837. >
  838. <span>{this.state.userName}</span>
  839. </FormItem>
  840. <FormItem
  841. className="half-item"
  842. {...formItemLayout}
  843. label="企业法人"
  844. >
  845. <span>{this.state.legalPerson}</span>
  846. </FormItem>
  847. <FormItem
  848. className="half-item"
  849. {...formItemLayout}
  850. label="法人电话"
  851. >
  852. <span>{this.state.legalPersonTel}</span>
  853. </FormItem>
  854. <FormItem
  855. className="half-item"
  856. {...formItemLayout}
  857. label="客户联系人"
  858. >
  859. <span>{this.state.contacts}</span>
  860. </FormItem>
  861. <FormItem
  862. className="half-item"
  863. {...formItemLayout}
  864. label="联系人电话"
  865. >
  866. <span>{this.state.contactMobile}</span>
  867. </FormItem>
  868. <FormItem
  869. className="half-item"
  870. {...formItemLayout}
  871. label="企业地址"
  872. >
  873. <span>
  874. {getprovince(this.state.locationProvince)}/
  875. {getprovince(this.state.locationCity)}/
  876. {getprovince(this.state.locationArea)}
  877. </span>
  878. </FormItem>
  879. <FormItem
  880. className="half-item"
  881. {...formItemLayout}
  882. label=""
  883. ></FormItem>
  884. <FormItem className="half-item" {...formItemLayout}>
  885. <span style={{ paddingLeft: '12em' }}>
  886. {this.state.postalAddress}
  887. </span>
  888. </FormItem>
  889. </div>
  890. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  891. <div className="clearfix">
  892. <h3 className="sub-title">订单负责人信息</h3>
  893. <FormItem
  894. className="half-item"
  895. {...formItemLayout}
  896. label="负责人"
  897. >
  898. <span>
  899. {this.state.salesmanName +
  900. '(' +
  901. this.state.depName +
  902. ')'}
  903. </span>
  904. </FormItem>
  905. <FormItem
  906. className="half-item"
  907. {...formItemLayout}
  908. label="负责人电话"
  909. >
  910. <span>{this.state.salesmanMobile}</span>
  911. </FormItem>
  912. <FormItem
  913. className="half-item"
  914. {...formItemLayout}
  915. label="当前财务负责人"
  916. >
  917. <span>{this.state.nowFinance}</span>
  918. </FormItem>
  919. <FormItem
  920. className="half-item"
  921. {...formItemLayout}
  922. label="当前财务负责人电话"
  923. >
  924. <span>{this.state.nowFinanceMobile}</span>
  925. </FormItem>
  926. <FormItem
  927. className="half-item"
  928. {...formItemLayout}
  929. style={{ opacity: '.5' }}
  930. label="原负责人"
  931. >
  932. <span>{this.state.oldSalesmanName}</span>
  933. </FormItem>
  934. <FormItem
  935. className="half-item"
  936. {...formItemLayout}
  937. style={{ opacity: '.5' }}
  938. label="原负责人电话"
  939. >
  940. <span>{this.state.oldSalesmanMobile}</span>
  941. </FormItem>
  942. <FormItem
  943. className="half-item"
  944. {...formItemLayout}
  945. style={{ opacity: '.5' }}
  946. label="实际财务操作人"
  947. >
  948. <span>{this.state.financeName}</span>
  949. </FormItem>
  950. <FormItem
  951. className="half-item"
  952. {...formItemLayout}
  953. style={{ opacity: '.5' }}
  954. label="实际财务操作人电话"
  955. >
  956. <span>{this.state.financeMobile}</span>
  957. </FormItem>
  958. </div>
  959. <div className="clearfix">
  960. <h3 className="sub-title">申报系统账户信息</h3>
  961. {/*<span style={{color:'red'}}>注:仅技术部可见</span>*/}
  962. <FormItem
  963. className="half-item"
  964. {...formItemLayout}
  965. label="用户名"
  966. >
  967. <span>{this.state.declareUser ? '****' : ''}</span>
  968. </FormItem>
  969. <FormItem
  970. className="half-item"
  971. {...formItemLayout}
  972. label="密码"
  973. >
  974. <span>{this.state.declarePwd ? '****' : ''}</span>
  975. </FormItem>
  976. </div>
  977. <div className="clearfix">
  978. <h3 className="sub-title">项目申报进度</h3>
  979. <FormItem
  980. className="half-item"
  981. {...formItemLayout}
  982. label="申报批次"
  983. >
  984. <span>{this.state.declarationBatch}</span>
  985. </FormItem>
  986. <FormItem
  987. className="half-item"
  988. {...formItemLayout}
  989. label="启动时间"
  990. >
  991. <span>{this.state.startDate}</span>
  992. </FormItem>
  993. <FormItem
  994. className="half-item"
  995. {...formItemLayout}
  996. label="完成时间"
  997. >
  998. <span>{this.state.endDate}</span>
  999. </FormItem>
  1000. <FormItem
  1001. className="half-item"
  1002. {...formItemLayout}
  1003. label="受理时间"
  1004. >
  1005. <span>{this.state.acceptDate}</span>
  1006. </FormItem>
  1007. <FormItem
  1008. className="half-item"
  1009. {...formItemLayout}
  1010. label="评审时间"
  1011. >
  1012. <span>{this.state.reviewDate}</span>
  1013. </FormItem>
  1014. <FormItem
  1015. className="half-item"
  1016. {...formItemLayout}
  1017. label="公示时间"
  1018. >
  1019. <span>{this.state.publicityDate}</span>
  1020. </FormItem>
  1021. <FormItem
  1022. className="half-item"
  1023. {...formItemLayout}
  1024. label="发证时间"
  1025. >
  1026. <span>{this.state.licenceDate}</span>
  1027. </FormItem>
  1028. <FormItem
  1029. className="half-item"
  1030. {...formItemLayout}
  1031. label="立项金额(万元)"
  1032. >
  1033. <span>{this.state.setUpAmount}</span>
  1034. </FormItem>
  1035. <FormItem
  1036. className="half-item"
  1037. {...formItemLayout}
  1038. label="是否到款"
  1039. >
  1040. <span>
  1041. {this.state.arrivalMoney ? '已到企业' : '未到企业'}
  1042. </span>
  1043. </FormItem>
  1044. </div>
  1045. <div className="clearfix">
  1046. <FormItem
  1047. labelCol={{ span: 3 }}
  1048. wrapperCol={{ span: 18 }}
  1049. label="附件"
  1050. >
  1051. <Upload
  1052. className="demandDetailShow-upload"
  1053. listType="picture-card"
  1054. fileList={this.state.attachmentUrl}
  1055. onPreview={(file) => {
  1056. this.setState({
  1057. previewImage: file.url || file.thumbUrl,
  1058. previewVisible: true,
  1059. })
  1060. }}
  1061. ></Upload>
  1062. <Modal
  1063. maskClosable={false}
  1064. footer={null}
  1065. visible={this.state.previewVisible}
  1066. onCancel={() => {
  1067. this.setState({ previewVisible: false })
  1068. }}
  1069. >
  1070. <img
  1071. alt=""
  1072. style={{ width: '100%' }}
  1073. src={this.state.previewImage || ''}
  1074. />
  1075. </Modal>
  1076. </FormItem>
  1077. </div>
  1078. <div className="clearfix">
  1079. <FormItem
  1080. labelCol={{ span: 3 }}
  1081. wrapperCol={{ span: 16 }}
  1082. label="备注"
  1083. >
  1084. <span>{this.state.taskComment}</span>
  1085. </FormItem>
  1086. </div>
  1087. <div>
  1088. <h3 className="sub-title">项目业务</h3>
  1089. {/* {this.state.processStatus == 0 ? (
  1090. <Button
  1091. type="primary"
  1092. onClick={this.addDetailed}
  1093. style={{
  1094. float: "right",
  1095. marginRight: "50px",
  1096. marginBottom: "15px"
  1097. }}
  1098. >
  1099. 添加项目明细
  1100. </Button>
  1101. ) : (
  1102. ""
  1103. )} */}
  1104. </div>
  1105. <div className="patent-table">
  1106. <Spin spinning={this.state.loading}>
  1107. <Table
  1108. columns={this.state.columnsX}
  1109. dataSource={this.state.dataSourceX}
  1110. pagination={this.state.paginations}
  1111. onRowClick={this.tableRowClickX}
  1112. bordered
  1113. size="small"
  1114. />
  1115. </Spin>
  1116. </div>
  1117. </div>
  1118. </Spin>
  1119. </Form>
  1120. </TabPane>
  1121. {this.props.record && this.props.record.outsource == 1 ? (
  1122. <TabPane tab="外包审核信息" key="2">
  1123. <Spin spinning={this.state.loading}>
  1124. <div>
  1125. <div className="clearfix">
  1126. <FormItem
  1127. className="half-item"
  1128. {...formItemLayout}
  1129. label="外包公司"
  1130. >
  1131. <span>{this.state.companyName}</span>
  1132. </FormItem>
  1133. </div>
  1134. <div className="clearfix">
  1135. <FormItem
  1136. className="half-item"
  1137. {...formItemLayout}
  1138. label="单价(万元)"
  1139. >
  1140. <span>{this.state.unitPrice}</span>
  1141. </FormItem>
  1142. </div>
  1143. <div className="clearfix">
  1144. <FormItem
  1145. className="half-item"
  1146. {...formItemLayout}
  1147. label="数量(个)"
  1148. >
  1149. <span>{this.state.unitNumber}</span>
  1150. </FormItem>
  1151. </div>
  1152. <div className="clearfix">
  1153. <FormItem
  1154. className="half-item"
  1155. {...formItemLayout}
  1156. label="总金额(万元)"
  1157. >
  1158. <span>{this.state.amount}</span>
  1159. </FormItem>
  1160. </div>
  1161. <div className="clearfix">
  1162. <FormItem
  1163. className="half-item"
  1164. {...formItemLayout}
  1165. label="备注"
  1166. >
  1167. <span>{this.state.outsourceRemarks}</span>
  1168. </FormItem>
  1169. </div>
  1170. <div className="clearfix">
  1171. <FormItem
  1172. labelCol={{ span: 4 }}
  1173. wrapperCol={{ span: 18 }}
  1174. label="合同/协议扫描件"
  1175. >
  1176. <Upload
  1177. className="demandDetailShow-upload"
  1178. listType="picture-card"
  1179. fileList={this.state.pictureUrl}
  1180. onPreview={(file) => {
  1181. this.setState({
  1182. previewImage: file.url || file.thumbUrl,
  1183. previewVisible: true,
  1184. })
  1185. }}
  1186. ></Upload>
  1187. <Modal
  1188. maskClosable={false}
  1189. footer={null}
  1190. visible={this.state.previewVisible}
  1191. onCancel={() => {
  1192. this.setState({ previewVisible: false })
  1193. }}
  1194. >
  1195. <img
  1196. alt=""
  1197. style={{ width: '100%' }}
  1198. src={this.state.previewImage || ''}
  1199. />
  1200. </Modal>
  1201. </FormItem>
  1202. </div>
  1203. </div>
  1204. <div className="clearfix">
  1205. <hr className="division" />
  1206. <div
  1207. className="clearfix"
  1208. style={{
  1209. display: this.state.refundStatus == 0 ? 'none' : 'block',
  1210. }}
  1211. >
  1212. <FormItem
  1213. className="half-item"
  1214. {...formItemLayout}
  1215. label="审核意见"
  1216. >
  1217. <span>{this.state.remarks}</span>
  1218. </FormItem>
  1219. </div>
  1220. <div className="clearfix">
  1221. <FormItem
  1222. className="half-item"
  1223. {...formItemLayout}
  1224. label="审核结果"
  1225. >
  1226. <span>{getRefundStatus(this.state.refundStatus)}</span>
  1227. </FormItem>
  1228. </div>
  1229. <div
  1230. className="clearfix"
  1231. style={{
  1232. display: this.state.refundStatus == 0 ? 'none' : 'block',
  1233. }}
  1234. >
  1235. <FormItem
  1236. className="half-item"
  1237. {...formItemLayout}
  1238. label="审核时间"
  1239. >
  1240. <span>{this.state.auditTimes}</span>
  1241. </FormItem>
  1242. </div>
  1243. </div>
  1244. </Spin>
  1245. </TabPane>
  1246. ) : (
  1247. ''
  1248. )}
  1249. {/*{this.props.record && this.props.record.outsource == 1 ? (*/}
  1250. {/* <TabPane tab="外包公司信息" key="3">*/}
  1251. {/* <div className="patent-table" style={{ marginTop: '10px' }}>*/}
  1252. {/* <Spin spinning={this.state.loading}>*/}
  1253. {/* <Table*/}
  1254. {/* columns={this.state.companyColumns}*/}
  1255. {/* dataSource={this.state.companys}*/}
  1256. {/* scroll={{ x: 300, y: 0 }}*/}
  1257. {/* bordered*/}
  1258. {/* size="small"*/}
  1259. {/* expandedRowRender={(record) => {*/}
  1260. {/* return <p>{record.remarks}</p>*/}
  1261. {/* }}*/}
  1262. {/* pagination={false}*/}
  1263. {/* />*/}
  1264. {/* </Spin>*/}
  1265. {/* </div>*/}
  1266. {/* </TabPane>*/}
  1267. {/*) : (*/}
  1268. {/* ''*/}
  1269. {/*)}*/}
  1270. </Tabs>
  1271. <Modal
  1272. width="800px"
  1273. visible={this.state.visibleA}
  1274. onCancel={this.visitCancelA}
  1275. title="操作日志"
  1276. footer=""
  1277. className="admin-desc-content"
  1278. >
  1279. <div className="patent-table patent-table-center">
  1280. <Spin spinning={this.state.loading}>
  1281. <Table
  1282. columns={this.state.columnsA}
  1283. dataSource={this.state.dataSourceA}
  1284. pagination={false}
  1285. bordered
  1286. size="small"
  1287. />
  1288. </Spin>
  1289. </div>
  1290. </Modal>
  1291. </Modal>
  1292. )
  1293. },
  1294. })
  1295. export default project