projectOverview.js 54 KB

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