project.jsx 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911
  1. import React from "react";
  2. import $ from "jquery";
  3. import { Spin, Button, Tabs, Table, message, Modal, Form, Upload } from "antd";
  4. import {
  5. getProcessStatus,
  6. getApproval,
  7. getTaskStatus,
  8. getLiquidationStatus,
  9. splitUrl,
  10. getProjectStatus,
  11. getboutique,
  12. getprovince,
  13. ShowModal
  14. } from "@/tools";
  15. const FormItem = Form.Item;
  16. const project = React.createClass({
  17. getInitialState() {
  18. return {
  19. visible: false,
  20. record: this.props.record,
  21. paginations: false,
  22. columnsX: [
  23. {
  24. title: "业务项目名称",
  25. dataIndex: "commodityName",
  26. key: "commodityName"
  27. },
  28. {
  29. title: "项目类别",
  30. dataIndex: "cname",
  31. key: "cname"
  32. },
  33. {
  34. title: "项目数量",
  35. dataIndex: "commodityQuantity",
  36. key: "commodityQuantity"
  37. },
  38. {
  39. title: "金额(万元)",
  40. dataIndex: "commodityPrice",
  41. key: "commodityPrice"
  42. },
  43. {
  44. title: "负责人",
  45. dataIndex: "contacts",
  46. key: "contacts"
  47. },
  48. {
  49. title: "负责人电话",
  50. dataIndex: "contactsMobile",
  51. key: "contactsMobile"
  52. },
  53. {
  54. title: "主要项目",
  55. dataIndex: "main",
  56. key: "main",
  57. render: text => {
  58. return text ? "是" : "否";
  59. }
  60. },
  61. {
  62. title: "项目说明",
  63. dataIndex: "taskComment",
  64. key: "taskComment",
  65. render: text => {
  66. return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
  67. }
  68. }
  69. ],
  70. columnsA: [
  71. {
  72. title: '流程',
  73. dataIndex: 'content',
  74. key: 'content',
  75. align:'center'
  76. }, {
  77. title: '操作人',
  78. dataIndex: 'aName',
  79. key: 'aName',
  80. align:'center'
  81. }, {
  82. title: '时间',
  83. dataIndex: 'createTimes',
  84. key: 'createTimes',
  85. align:'center'
  86. }
  87. ],
  88. };
  89. },
  90. componentWillReceiveProps(nextProps) {
  91. console.log(nextProps.visible);
  92. this.setState({
  93. visible: nextProps.visible,
  94. record: nextProps.record
  95. });
  96. if (nextProps.record) {
  97. this.xiangqing(nextProps.record.id);
  98. this.xiangqings(nextProps.record.orderNo);
  99. this.xiangmu(nextProps.record.orderNo);
  100. this.loaduserss(nextProps.record);
  101. }
  102. },
  103. // handleOk() {
  104. // this.setState({
  105. // newVisible: false
  106. // });
  107. // // window.setTimeout( () => {
  108. // // this.setState({
  109. // // newVisible: true
  110. // // });
  111. // // },)
  112. // },
  113. componentDidMount() {},
  114. xiangqing(id) {
  115. $.ajax({
  116. method: "get",
  117. dataType: "json",
  118. crossDomain: false,
  119. url: globalConfig.context + "/api/admin/orderProject/orderTaskDetail",
  120. data: {
  121. id: id
  122. },
  123. success: function(data) {
  124. if (data.error.length || data.data.list == "") {
  125. if (data.error && data.error.length) {
  126. message.warning(data.error[0].message);
  127. }
  128. } else {
  129. let thisdata = data.data;
  130. this.setState({
  131. id: thisdata.id, //ID
  132. orderNo: thisdata.orderNo, //订单编号
  133. userName: thisdata.userName, //客户名称
  134. taskName: thisdata.taskName, //任务名称
  135. cname: thisdata.cname, //项目品类
  136. contractNo: thisdata.contractNo, //合同编号
  137. projectStatus: thisdata.projectStatus, //项目状态
  138. taskStatus: thisdata.taskStatus, //任务状态
  139. taskDate: thisdata.taskDate, //分配时间
  140. taskComment: thisdata.taskComment, //说明
  141. attachmentUrl: thisdata.attachmentUrl
  142. ? splitUrl(
  143. thisdata.attachmentUrl,
  144. ",",
  145. globalConfig.avatarHost + "/upload"
  146. )
  147. : [], //图片地址
  148. salesmanName: thisdata.salesmanName, //订单负责人
  149. startDate: thisdata.startDate, //启动日期
  150. endDate: thisdata.endDate, //结束日期
  151. acceptDate: thisdata.acceptDate, //受理日期
  152. reviewDate: thisdata.reviewDate, //评审日期
  153. publicityDate: thisdata.publicityDate, //公示日期
  154. licenceDate: thisdata.licenceDate, //发证日期
  155. contacts: thisdata.contacts, //联系人
  156. contactMobile: thisdata.contactMobile, //联系人电话
  157. legalPerson: thisdata.legalPerson, //法人
  158. legalPersonTel: thisdata.legalPersonTel, //法人电话
  159. certificateNumber: thisdata.certificateNumber, //证书编号
  160. status: thisdata.status, //状态
  161. formRetrieve: thisdata.formRetrieve, //满意度表格
  162. taskRefund: thisdata.taskRefund, //退单
  163. refundContent: thisdata.refundContent, //退单信息
  164. retrieveContent: thisdata.retrieveContent, //回收信息
  165. arrivalMoney: thisdata.arrivalMoney, //是否到款
  166. setUpAmount: thisdata.setUpAmount, //立项金额
  167. declareUser: thisdata.declareUser, //账号
  168. declarePwd: thisdata.declarePwd, //密码
  169. depName: thisdata.depName, //订单部门
  170. outsourceName: thisdata.outsourceName, //外包公司名称
  171. outsourcePrice: thisdata.outsourcePrice //外包价格
  172. });
  173. }
  174. }.bind(this)
  175. }).always(
  176. function() {
  177. this.setState({
  178. loading: false
  179. });
  180. }.bind(this)
  181. );
  182. },
  183. //订单详情
  184. xiangqings(orderNos) {
  185. $.ajax({
  186. method: "get",
  187. dataType: "json",
  188. crossDomain: false,
  189. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  190. data: {
  191. orderNo: orderNos
  192. },
  193. success: function(data) {
  194. let thisdata = data.data;
  195. let ProvinceCityArr = [];
  196. let ProvinceS = thisdata.locationProvince; //省
  197. let citys = thisdata.locationCity; //市
  198. let Areas = thisdata.locationArea; //区
  199. ProvinceCityArr.push(ProvinceS, citys, Areas);
  200. if (data.error.length || data.data.list == "") {
  201. if (data.error && data.error.length) {
  202. message.warning(data.error[0].message);
  203. }
  204. } else {
  205. this.setState({
  206. processStatus: thisdata.processStatus, //流程状态
  207. liquidationStatus: thisdata.liquidationStatus, //结算状态
  208. approval: thisdata.approval, //特批状态
  209. orderRemarks: thisdata.orderRemarks, //订单留言
  210. salesmanName: thisdata.salesmanName, //营销员名称
  211. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  212. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  213. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  214. financeName: thisdata.financeName, //财务名称
  215. financeMobile: thisdata.financeMobile, //财务电话
  216. nowFinance: thisdata.nowFinance, //财务名称
  217. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  218. depName: thisdata.depName, //订单部门
  219. locationProvince: thisdata.locationProvince,
  220. locationCity: thisdata.locationCity,
  221. locationArea: thisdata.locationArea,
  222. ProvinceCity: ProvinceCityArr,
  223. postalAddress: thisdata.postalAddress, //详细地址
  224. outsource: thisdata.outsource
  225. });
  226. }
  227. }.bind(this)
  228. }).always(
  229. function() {
  230. this.setState({
  231. loading: false
  232. });
  233. }.bind(this)
  234. );
  235. },
  236. //查看下证信息
  237. loaduserss(record) {
  238. $.ajax({
  239. method: "get",
  240. dataType: "json",
  241. crossDomain: false,
  242. url: globalConfig.context + "/api/admin/orderProject/selectTaskProgress",
  243. data: {
  244. tid: record.id
  245. },
  246. success: function(data) {
  247. let theArr = [];
  248. let thisData = [];
  249. if (!thisData) {
  250. if (data.error && data.error.length) {
  251. message.warning(data.error[0].message);
  252. }
  253. thisData = {};
  254. } else {
  255. for (let i = 0; i < data.data.length; i++) {
  256. thisData = data.data[i];
  257. theArr.push({
  258. num: i + 1,
  259. key: i,
  260. id: thisData.id, //编号
  261. alreadyNumber: thisData.alreadyNumber, //下证数
  262. licenceTimes: thisData.licenceTimes, //下证时间
  263. notCount: thisData.notCount, //未下证数
  264. flag: true
  265. });
  266. }
  267. this.setState({
  268. contactList: theArr
  269. });
  270. }
  271. }.bind(this)
  272. }).always(
  273. function() {
  274. this.setState({
  275. loading: false
  276. });
  277. }.bind(this)
  278. );
  279. },
  280. //项目列表
  281. xiangmu(orderNos) {
  282. $.ajax({
  283. method: "get",
  284. dataType: "json",
  285. crossDomain: false,
  286. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  287. data: {
  288. orderNo: orderNos
  289. },
  290. success: function(data) {
  291. let theArr = [];
  292. if (data.error.length || data.data.list == "") {
  293. if (data.error && data.error.length) {
  294. message.warning(data.error[0].message);
  295. }
  296. } else {
  297. for (let i = 0; i < data.data.length; i++) {
  298. let thisdata = data.data[i];
  299. theArr.push({
  300. key: i,
  301. id: thisdata.id,
  302. orderNo: thisdata.orderNo, //订单编号
  303. commodityId: thisdata.commodityId, //项目ID
  304. commodityName: thisdata.commodityName, //项目名称
  305. cname: thisdata.cname, //项目类别
  306. commodityPrice: thisdata.commodityPrice, //项目价格
  307. commodityQuantity: thisdata.commodityQuantity, //项目数量
  308. main: thisdata.main, //是否为主要任务
  309. taskComment: thisdata.taskComment, //任务说明
  310. contacts: thisdata.contacts, //联系人
  311. contactsMobile: thisdata.contactsMobile, //联系人电话
  312. taskStatus: thisdata.taskStatus //是否分配
  313. });
  314. }
  315. }
  316. this.setState({
  317. dataSourceX: theArr
  318. });
  319. }.bind(this)
  320. }).always(
  321. function() {
  322. this.setState({
  323. loading: false
  324. });
  325. }.bind(this)
  326. );
  327. },
  328. tableRowClickX(record) {
  329. this.setState({
  330. jid: record.id, //项目ID
  331. kid: record.commodityId, //商品ID
  332. commodityName: record.commodityName, //金额
  333. commodityPrice: record.commodityPrice, //金额
  334. commodityQuantity: record.commodityQuantity, //数量
  335. taskComment: record.taskComment, //备注
  336. main: record.main.toString(), //是否为主要
  337. addnextVisible: true,
  338. addState: 0
  339. });
  340. },
  341. caozuorizhi() {
  342. this.setState({
  343. visibleA: true
  344. });
  345. $.ajax({
  346. method: "get",
  347. dataType: "json",
  348. crossDomain: false,
  349. url: globalConfig.context + "/api/admin/orderProject/TaskLogList",
  350. data: {
  351. id: this.state.id
  352. },
  353. success: function(data) {
  354. let theArr = [];
  355. if (data.error.length || data.data.list == "") {
  356. if (data.error && data.error.length) {
  357. message.warning(data.error[0].message);
  358. }
  359. } else {
  360. for (let i = 0; i < data.data.length; i++) {
  361. let thisdata = data.data[i];
  362. theArr.push({
  363. key: i,
  364. id: thisdata.id, //日志ID
  365. content: thisdata.content, //流程
  366. taskId: thisdata.taskId, //任务ID
  367. aName: thisdata.aName, //负责人
  368. createTimes: thisdata.createTimes //时间
  369. });
  370. }
  371. }
  372. this.setState({
  373. dataSourceA: theArr
  374. });
  375. }.bind(this)
  376. }).always(
  377. function() {
  378. this.setState({
  379. loading: false
  380. });
  381. }.bind(this)
  382. );
  383. }, //关闭操作工时
  384. visitCancelA() {
  385. this.setState({
  386. visibleA: false
  387. });
  388. },
  389. render() {
  390. const formItemLayout = {
  391. labelCol: { span: 8 },
  392. wrapperCol: { span: 14 }
  393. };
  394. const utils = {
  395. getSatisfaction: function(num) {
  396. switch (num) {
  397. case 0:
  398. return "未收回";
  399. case 1:
  400. return "已收回";
  401. default:
  402. return "其它";
  403. }
  404. },
  405. getChargeback: function(num) {
  406. switch (num) {
  407. case 0:
  408. return "已完成";
  409. case 1:
  410. return "未完成";
  411. default:
  412. return "其它";
  413. }
  414. }
  415. };
  416. return (
  417. <Modal
  418. className="customeDetails"
  419. footer=""
  420. title="项目概况"
  421. width="900px"
  422. visible={this.state.visible}
  423. // onOk={this.visitOk}
  424. onCancel={e => {
  425. this.props.cancel();
  426. }}
  427. >
  428. <Form
  429. layout="horizontal"
  430. onSubmit={this.handleSubmit}
  431. id="demand-form"
  432. style={{ paddingBottom: "0px" }}
  433. >
  434. <Spin spinning={this.state.loading}>
  435. <div className="clearfix">
  436. <div className="clearfix">
  437. <FormItem
  438. className="half-item"
  439. {...formItemLayout}
  440. label="当前项目情况"
  441. >
  442. <span>{this.state.status ? "暂停" : "开启"}</span>
  443. <Button
  444. type="primary"
  445. size="small"
  446. style={{ marginTop: "5px", position: "absolute" }}
  447. onClick={this.caozuorizhi}
  448. >
  449. 操作日志
  450. </Button>
  451. </FormItem>
  452. <FormItem
  453. className="half-item"
  454. {...formItemLayout}
  455. label="合同编号"
  456. >
  457. <span>{this.state.contractNo}</span>
  458. </FormItem>
  459. </div>
  460. <div className="clearfix">
  461. <FormItem
  462. className="half-item"
  463. {...formItemLayout}
  464. label="项目状态"
  465. >
  466. {/* <span>{getProcessStatus(this.state.projectStatus)}</span> */}
  467. <span>{getProjectStatus(this.state.projectStatus)}</span>
  468. </FormItem>
  469. <FormItem
  470. className="half-item"
  471. {...formItemLayout}
  472. label="是否特批"
  473. >
  474. <span>{getApproval(this.state.approval)}</span>
  475. </FormItem>
  476. <FormItem
  477. className="half-item"
  478. {...formItemLayout}
  479. label="结算状态"
  480. >
  481. <span>
  482. {getLiquidationStatus(this.state.liquidationStatus)}
  483. </span>
  484. </FormItem>
  485. <FormItem
  486. className="half-item"
  487. {...formItemLayout}
  488. label="流程状态"
  489. >
  490. <span>{getProcessStatus(this.state.processStatus)}</span>
  491. </FormItem>
  492. <FormItem
  493. className="half-item"
  494. {...formItemLayout}
  495. label="订单编号"
  496. >
  497. <span>{this.state.orderNo}</span>
  498. </FormItem>
  499. <FormItem
  500. className="half-item"
  501. {...formItemLayout}
  502. label="是否外包"
  503. >
  504. <span>{this.state.outsource == 0 ? "否" : "是"}</span>
  505. </FormItem>
  506. </div>
  507. <div className="clearfix">
  508. <FormItem
  509. className="half-item"
  510. {...formItemLayout}
  511. label="满意度表格"
  512. >
  513. <span>{utils.getSatisfaction(this.state.formRetrieve)}</span>
  514. </FormItem>
  515. <FormItem
  516. className="half-item"
  517. {...formItemLayout}
  518. label="退单"
  519. >
  520. <span>{utils.getChargeback(this.state.taskRefund)}</span>
  521. </FormItem>
  522. </div>
  523. <div className="clearfix">
  524. {
  525. <FormItem
  526. className="half-item"
  527. {...formItemLayout}
  528. label="(满意度)备注"
  529. >
  530. <span>{this.state.retrieveContent}</span>
  531. </FormItem>
  532. }
  533. {
  534. <FormItem
  535. className="half-item"
  536. {...formItemLayout}
  537. label="(退单)备注"
  538. >
  539. <span>{this.state.refundContent}</span>
  540. </FormItem>
  541. }
  542. </div>
  543. <div className="clearfix">
  544. <h3 className="sub-title">任务信息</h3>
  545. <FormItem
  546. className="half-item"
  547. {...formItemLayout}
  548. label="任务编号"
  549. >
  550. <span>{this.state.id}</span>
  551. </FormItem>
  552. <FormItem
  553. className="half-item"
  554. {...formItemLayout}
  555. label="任务名称"
  556. >
  557. <span>{this.state.taskName}</span>
  558. </FormItem>
  559. <FormItem
  560. className="half-item"
  561. {...formItemLayout}
  562. label="任务状态"
  563. >
  564. <span>{getTaskStatus(this.state.taskStatus)}</span>
  565. </FormItem>
  566. <FormItem
  567. className="half-item"
  568. {...formItemLayout}
  569. label="任务类别"
  570. >
  571. <span>{this.state.cname}</span>
  572. </FormItem>
  573. <FormItem
  574. className="half-item"
  575. {...formItemLayout}
  576. label="证书编号"
  577. >
  578. <span>{this.state.certificateNumber}</span>
  579. </FormItem>
  580. </div>
  581. {this.state.outsource === 1 ? (
  582. <div className="clearfix">
  583. <h3 className="sub-title">外包信息</h3>
  584. <FormItem
  585. className="half-item"
  586. {...formItemLayout}
  587. label="外包公司"
  588. >
  589. <span>{this.state.outsourceName}</span>
  590. </FormItem>
  591. <FormItem
  592. className="half-item"
  593. {...formItemLayout}
  594. label="外包成本(万元)"
  595. >
  596. <span>{this.state.outsourcePrice}</span>
  597. </FormItem>
  598. </div>
  599. ) : (
  600. ""
  601. )}
  602. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  603. <div className="clearfix">
  604. <h3 className="sub-title">联系信息</h3>
  605. <FormItem
  606. className="half-item"
  607. {...formItemLayout}
  608. label="客户名称"
  609. >
  610. <span>{this.state.userName}</span>
  611. </FormItem>
  612. <FormItem
  613. className="half-item"
  614. {...formItemLayout}
  615. label="企业法人"
  616. >
  617. <span>{this.state.legalPerson}</span>
  618. </FormItem>
  619. <FormItem
  620. className="half-item"
  621. {...formItemLayout}
  622. label="法人电话"
  623. >
  624. <span>{this.state.legalPersonTel}</span>
  625. </FormItem>
  626. <FormItem
  627. className="half-item"
  628. {...formItemLayout}
  629. label="客户联系人"
  630. >
  631. <span>{this.state.contacts}</span>
  632. </FormItem>
  633. <FormItem
  634. className="half-item"
  635. {...formItemLayout}
  636. label="联系人电话"
  637. >
  638. <span>{this.state.contactMobile}</span>
  639. </FormItem>
  640. <FormItem
  641. className="half-item"
  642. {...formItemLayout}
  643. label="企业地址"
  644. >
  645. <span>
  646. {getprovince(this.state.locationProvince)}/
  647. {getprovince(this.state.locationCity)}/
  648. {getprovince(this.state.locationArea)}
  649. </span>
  650. </FormItem>
  651. <FormItem
  652. className="half-item"
  653. {...formItemLayout}
  654. label=""
  655. ></FormItem>
  656. <FormItem className="half-item" {...formItemLayout}>
  657. <span style={{ paddingLeft: "12em" }}>
  658. {this.state.postalAddress}
  659. </span>
  660. </FormItem>
  661. </div>
  662. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  663. <div className="clearfix">
  664. <h3 className="sub-title">订单负责人信息</h3>
  665. <FormItem
  666. className="half-item"
  667. {...formItemLayout}
  668. label="负责人"
  669. >
  670. <span>
  671. {this.state.salesmanName + "(" + this.state.depName + ")"}
  672. </span>
  673. </FormItem>
  674. <FormItem
  675. className="half-item"
  676. {...formItemLayout}
  677. label="负责人电话"
  678. >
  679. <span>{this.state.salesmanMobile}</span>
  680. </FormItem>
  681. <FormItem
  682. className="half-item"
  683. {...formItemLayout}
  684. label="当前财务负责人"
  685. >
  686. <span>{this.state.nowFinance}</span>
  687. </FormItem>
  688. <FormItem
  689. className="half-item"
  690. {...formItemLayout}
  691. label="当前财务负责人电话"
  692. >
  693. <span>{this.state.nowFinanceMobile}</span>
  694. </FormItem>
  695. <FormItem
  696. className="half-item"
  697. {...formItemLayout}
  698. style={{ opacity: ".5" }}
  699. label="原负责人"
  700. >
  701. <span>{this.state.oldSalesmanName}</span>
  702. </FormItem>
  703. <FormItem
  704. className="half-item"
  705. {...formItemLayout}
  706. style={{ opacity: ".5" }}
  707. label="原负责人电话"
  708. >
  709. <span>{this.state.oldSalesmanMobile}</span>
  710. </FormItem>
  711. <FormItem
  712. className="half-item"
  713. {...formItemLayout}
  714. style={{ opacity: ".5" }}
  715. label="实际财务操作人"
  716. >
  717. <span>{this.state.financeName}</span>
  718. </FormItem>
  719. <FormItem
  720. className="half-item"
  721. {...formItemLayout}
  722. style={{ opacity: ".5" }}
  723. label="实际财务操作人电话"
  724. >
  725. <span>{this.state.financeMobile}</span>
  726. </FormItem>
  727. </div>
  728. <div className="clearfix">
  729. <h3 className="sub-title">申报系统账户信息</h3>
  730. {/*<span style={{color:'red'}}>注:仅技术部可见</span>*/}
  731. <FormItem
  732. className="half-item"
  733. {...formItemLayout}
  734. label="用户名"
  735. >
  736. <span>{this.state.declareUser ? "****" : ""}</span>
  737. </FormItem>
  738. <FormItem
  739. className="half-item"
  740. {...formItemLayout}
  741. label="密码"
  742. >
  743. <span>{this.state.declarePwd ? "****" : ""}</span>
  744. </FormItem>
  745. </div>
  746. <div className="clearfix">
  747. <h3 className="sub-title">项目申报进度</h3>
  748. <FormItem
  749. className="half-item"
  750. {...formItemLayout}
  751. label="启动时间"
  752. >
  753. <span>{this.state.startDate}</span>
  754. </FormItem>
  755. <FormItem
  756. className="half-item"
  757. {...formItemLayout}
  758. label="完成时间"
  759. >
  760. <span>{this.state.endDate}</span>
  761. </FormItem>
  762. <FormItem
  763. className="half-item"
  764. {...formItemLayout}
  765. label="受理时间"
  766. >
  767. <span>{this.state.acceptDate}</span>
  768. </FormItem>
  769. <FormItem
  770. className="half-item"
  771. {...formItemLayout}
  772. label="评审时间"
  773. >
  774. <span>{this.state.reviewDate}</span>
  775. </FormItem>
  776. <FormItem
  777. className="half-item"
  778. {...formItemLayout}
  779. label="公示时间"
  780. >
  781. <span>{this.state.publicityDate}</span>
  782. </FormItem>
  783. <FormItem
  784. className="half-item"
  785. {...formItemLayout}
  786. label="发证时间"
  787. >
  788. <span>{this.state.licenceDate}</span>
  789. </FormItem>
  790. <FormItem
  791. className="half-item"
  792. {...formItemLayout}
  793. label="立项金额(万元)"
  794. >
  795. <span>{this.state.setUpAmount}</span>
  796. </FormItem>
  797. <FormItem
  798. className="half-item"
  799. {...formItemLayout}
  800. label="是否到款"
  801. >
  802. <span>
  803. {this.state.arrivalMoney ? "已到企业" : "未到企业"}
  804. </span>
  805. </FormItem>
  806. </div>
  807. <div className="clearfix">
  808. <FormItem
  809. labelCol={{ span: 3 }}
  810. wrapperCol={{ span: 18 }}
  811. label="附件"
  812. >
  813. <Upload
  814. className="demandDetailShow-upload"
  815. listType="picture-card"
  816. fileList={this.state.attachmentUrl}
  817. onPreview={file => {
  818. this.setState({
  819. previewImage: file.url || file.thumbUrl,
  820. previewVisible: true
  821. });
  822. }}
  823. ></Upload>
  824. <Modal
  825. maskClosable={false}
  826. footer={null}
  827. visible={this.state.previewVisible}
  828. onCancel={() => {
  829. this.setState({ previewVisible: false });
  830. }}
  831. >
  832. <img
  833. alt=""
  834. style={{ width: "100%" }}
  835. src={this.state.previewImage || ""}
  836. />
  837. </Modal>
  838. </FormItem>
  839. </div>
  840. <div className="clearfix">
  841. <FormItem
  842. labelCol={{ span: 3 }}
  843. wrapperCol={{ span: 16 }}
  844. label="备注"
  845. >
  846. <span>{this.state.taskComment}</span>
  847. </FormItem>
  848. </div>
  849. <div>
  850. <h3 className="sub-title">项目业务</h3>
  851. {/* {this.state.processStatus == 0 ? (
  852. <Button
  853. type="primary"
  854. onClick={this.addDetailed}
  855. style={{
  856. float: "right",
  857. marginRight: "50px",
  858. marginBottom: "15px"
  859. }}
  860. >
  861. 添加项目明细
  862. </Button>
  863. ) : (
  864. ""
  865. )} */}
  866. </div>
  867. <div className="patent-table">
  868. <Spin spinning={this.state.loading}>
  869. <Table
  870. columns={this.state.columnsX}
  871. dataSource={this.state.dataSourceX}
  872. pagination={this.state.paginations}
  873. onRowClick={this.tableRowClickX}
  874. bordered
  875. size="small"
  876. />
  877. </Spin>
  878. </div>
  879. </div>
  880. </Spin>
  881. </Form>
  882. <Modal
  883. width="800px"
  884. visible={this.state.visibleA}
  885. onCancel={this.visitCancelA}
  886. title="操作日志"
  887. footer=""
  888. className="admin-desc-content"
  889. >
  890. <div className="patent-table patent-table-center">
  891. <Spin spinning={this.state.loading}>
  892. <Table
  893. columns={this.state.columnsA}
  894. dataSource={this.state.dataSourceA}
  895. pagination={false}
  896. bordered
  897. size="small"
  898. />
  899. </Spin>
  900. </div>
  901. </Modal>
  902. </Modal>
  903. );
  904. }
  905. });
  906. export default project;