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. Tooltip,
  17. Upload
  18. } from "antd";
  19. import Picture from '@/manageCenter/publicComponent/picture'
  20. import {
  21. getProcessStatus,
  22. getApproval,
  23. getTaskStatus,
  24. getLiquidationStatus,
  25. splitUrl,
  26. getProjectStatus,
  27. getboutique,
  28. getprovince,
  29. ShowModal,
  30. getRefundStatus,
  31. getProjectName
  32. } from '@/tools'
  33. import { taskStatus, projectStatus, cuiJieDian } from '@/dataDic.js'
  34. import { areaSelect } from '@/NewDicProvinceList'
  35. import '@/manageCenter/financialManage/distribute/public.less'
  36. import '@/manageCenter/financialManage/distribute/shouKuan.less'
  37. import OrderRiZi from '@/orderRiZi.jsx'
  38. import moment from "moment";
  39. import $ from "jquery";
  40. import PatentSchedule from '../../patentSchedule';
  41. import DeclarationProgress from "../../../../../common/declarationProgress";
  42. import EnterpriseNameChange from "../../../../../common/enterpriseNameChange";
  43. import ProjectOperation from "../../../../../common/projectOperation";
  44. const FormItem = Form.Item
  45. const { Option } = Select
  46. const formItemLayout = {
  47. labelCol: { span: 8 },
  48. wrapperCol: { span: 14 },
  49. }
  50. const utils = {
  51. getSatisfaction: function (num) {
  52. switch (num) {
  53. case 0:
  54. return '未收回'
  55. case 1:
  56. return '已收回'
  57. default:
  58. return '其它'
  59. }
  60. },
  61. getChargeback: function (num) {
  62. switch (num) {
  63. case 0:
  64. return '已完成'
  65. case 1:
  66. return '未完成'
  67. default:
  68. return '其它'
  69. }
  70. },
  71. }
  72. class projectOverview extends Component {
  73. constructor(props) {
  74. super(props);
  75. this.state = {
  76. timeRecordparse: {},
  77. loading: false,
  78. projectStatus: props.projectStatus,
  79. pagination: {
  80. defaultCurrent: 1,
  81. defaultPageSize: 10,
  82. showQuickJumper: true,
  83. pageSize: 10,
  84. onChange: function (page) {
  85. this.loadData(page)
  86. }.bind(this),
  87. showTotal: function (total) {
  88. return '共' + total + '条数据'
  89. },
  90. },
  91. attachmentUrl: [],
  92. paginations: false,
  93. columnsX: [
  94. {
  95. title: '业务项目名称',
  96. dataIndex: 'commodityName',
  97. key: 'commodityName',
  98. render: (text, record) => {
  99. return (
  100. <span>{text}<span style={{ color: "red" }}>{record.patentTypeName}</span></span>
  101. )
  102. }
  103. },
  104. {
  105. title: '项目类别',
  106. dataIndex: 'cname',
  107. key: 'cname',
  108. },
  109. {
  110. title: '项目数量',
  111. dataIndex: 'commodityQuantity',
  112. key: 'commodityQuantity',
  113. render: (text, record) => {
  114. if (record.splitStatus == 1) {
  115. return (
  116. <span>
  117. {text}{' '}
  118. <Tag
  119. color="#108ee9"
  120. onClick={(e) => {
  121. e.stopPropagation()
  122. this.showRes(record)
  123. }}
  124. >
  125. 已拆
  126. </Tag>
  127. </span>
  128. )
  129. } else {
  130. return text
  131. }
  132. },
  133. },
  134. {
  135. title: '金额(万元)',
  136. dataIndex: 'commodityPrice',
  137. key: 'commodityPrice',
  138. },
  139. {
  140. title: '负责人',
  141. dataIndex: 'contacts',
  142. key: 'contacts',
  143. },
  144. {
  145. title: '负责人电话',
  146. dataIndex: 'contactsMobile',
  147. key: 'contactsMobile',
  148. },
  149. {
  150. title: '主要项目',
  151. dataIndex: 'main',
  152. key: 'main',
  153. render: (text) => {
  154. return text ? '是' : '否'
  155. },
  156. },
  157. {
  158. title: "总年限",
  159. dataIndex: "yearSum",
  160. key: "yearSum",
  161. render: (text, record) => {
  162. return (
  163. <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
  164. );
  165. }
  166. },
  167. {
  168. title: "年限",
  169. dataIndex: "serviceLife",
  170. key: "serviceLife",
  171. render: (text, record) => {
  172. return (
  173. <div>{!!text && JSON.parse(text).toString()}</div>
  174. );
  175. }
  176. },
  177. {
  178. title: "本次派单",
  179. dataIndex: "serviceYear",
  180. key: "serviceYear",
  181. render: (text, record) => {
  182. return (
  183. <div>{!text ? "" : text}</div>
  184. );
  185. }
  186. },
  187. {
  188. title: '项目说明',
  189. dataIndex: 'taskComment',
  190. key: 'taskComment',
  191. render: (text) => {
  192. return (
  193. <Tooltip title={text}>
  194. <div
  195. style={{
  196. width: 100,
  197. overflow: "hidden",
  198. whiteSpace: "nowrap",
  199. textOverflow: "ellipsis",
  200. }}
  201. >{text}</div>
  202. </Tooltip>
  203. )
  204. },
  205. },
  206. ],
  207. columnsA: [
  208. {
  209. title: '流程',
  210. dataIndex: 'content',
  211. key: 'content',
  212. align: 'center',
  213. },
  214. {
  215. title: '操作人',
  216. dataIndex: 'aName',
  217. key: 'aName',
  218. align: 'center',
  219. },
  220. {
  221. title: '时间',
  222. dataIndex: 'createTimes',
  223. key: 'createTimes',
  224. align: 'center',
  225. },
  226. ],
  227. editFw: {},
  228. }
  229. this.visitCancelA = this.visitCancelA.bind(this);
  230. this.caozuorizhi = this.caozuorizhi.bind(this);
  231. this.tableRowClickX = this.tableRowClickX.bind(this);
  232. }
  233. //关闭操作工时
  234. visitCancelA() {
  235. this.setState({
  236. visibleA: false,
  237. })
  238. }
  239. componentDidMount() {
  240. this.setState({
  241. isIso: this.props.taskName.indexOf("贯标") !== -1,
  242. })
  243. this.xiangqing(this.props.tid);
  244. this.loadData();
  245. }
  246. caozuorizhi() {
  247. this.setState({
  248. visibleA: true,
  249. })
  250. $.ajax({
  251. method: 'get',
  252. dataType: 'json',
  253. crossDomain: false,
  254. url: globalConfig.context + '/api/admin/orderProject/TaskLogList',
  255. data: {
  256. id: this.state.id,
  257. },
  258. success: function (data) {
  259. let theArr = []
  260. if (data.error.length || data.data.list == '') {
  261. if (data.error && data.error.length) {
  262. message.warning(data.error[0].message)
  263. }
  264. } else {
  265. for (let i = 0; i < data.data.length; i++) {
  266. let thisdata = data.data[i]
  267. theArr.push({
  268. key: i,
  269. id: thisdata.id, //日志ID
  270. content: thisdata.content, //流程
  271. taskId: thisdata.taskId, //项目ID
  272. aName: thisdata.aName, //负责人
  273. createTimes: thisdata.createTimes, //时间
  274. })
  275. }
  276. }
  277. this.setState({
  278. dataSourceA: theArr,
  279. })
  280. }.bind(this),
  281. }).always(
  282. function () {
  283. this.setState({
  284. loading: false,
  285. })
  286. }.bind(this)
  287. )
  288. }
  289. //订单详情
  290. xiangqing(id) {
  291. $.ajax({
  292. method: 'get',
  293. dataType: 'json',
  294. crossDomain: false,
  295. url: globalConfig.context + '/api/admin/orderProject/orderTaskDetail',
  296. data: {
  297. id: id,
  298. },
  299. success: function (data) {
  300. let thisdata = data.data
  301. if (data.error.length || data.data.list == '') {
  302. if (data.error && data.error.length) {
  303. message.warning(data.error[0].message)
  304. }
  305. } else {
  306. this.setState({
  307. certificationCorporate: thisdata.certificationCorporate,//认证费公司
  308. certificationFee: thisdata.certificationFee,//认证费
  309. ifCertificationFee: thisdata.ifCertificationFee,//是否包含认证费
  310. id: thisdata.id, //ID
  311. orderNo: thisdata.orderNo, //订单编号
  312. userName: thisdata.userName, //客户名称
  313. taskName: thisdata.taskName, //项目名称
  314. cname: thisdata.cname, //项目品类
  315. contractNo: thisdata.contractNo, //合同编号
  316. projectStatus: thisdata.projectStatus.toString(), //项目状态
  317. taskStatus: thisdata.taskStatus.toString(), //项目状态
  318. taskDate: thisdata.taskDate, //分配时间
  319. taskComment: thisdata.taskComment, //说明
  320. attachmentUrl: thisdata.attachmentUrl
  321. ? splitUrl(
  322. thisdata.attachmentUrl,
  323. ',',
  324. globalConfig.avatarHost + '/upload'
  325. )
  326. : [], //图片地址
  327. salesmanName: thisdata.salesmanName, //订单负责人
  328. startDate: thisdata.startDate, //启动日期
  329. endDate: thisdata.endDate, //结束日期
  330. acceptDate: thisdata.acceptDate, //受理日期
  331. reviewDate: thisdata.reviewDate, //评审日期
  332. publicityDate: thisdata.publicityDate, //公示日期
  333. licenceDate: thisdata.licenceDate, //发证日期
  334. contacts: thisdata.contacts, //联系人
  335. contactMobile: thisdata.contactMobile, //联系人电话
  336. legalPerson: thisdata.legalPerson, //法人
  337. legalPersonTel: thisdata.legalPersonTel, //法人电话
  338. certificateNumber: thisdata.certificateNumber, //证书编号
  339. status: thisdata.status, //状态
  340. formRetrieve: thisdata.formRetrieve, //满意度表格
  341. taskRefund: thisdata.taskRefund, //退单
  342. refundContent: thisdata.refundContent, //退单信息
  343. retrieveContent: thisdata.retrieveContent, //回收信息
  344. arrivalMoney: thisdata.arrivalMoney, //是否到款
  345. setUpAmount: thisdata.setUpAmount, //立项金额
  346. declareUser: thisdata.declareUser, //账号
  347. declarePwd: thisdata.declarePwd, //密码
  348. outsourceName: thisdata.outsourceName, //外包公司
  349. outsourcePrice: thisdata.outsourcePrice, //外包价格
  350. declarationBatch: thisdata.declarationBatch,
  351. bpType: thisdata.bpType,//0 正常 1专利 2软著 3审计 4双软 5高新 6商标
  352. specialComment: thisdata.specialComment,
  353. urgentDay: thisdata.urgentDay, //有无方案
  354. ifMaterial: thisdata.ifMaterial, //加急情况
  355. spotCheckStatus: thisdata.spotCheckStatus,
  356. setUpStatus: thisdata.setUpStatus,
  357. setUpTime: thisdata.setUpTime,
  358. highTechStatus: thisdata.highTechStatus,
  359. acceptCount: thisdata.acceptCount, //受理数
  360. certificatesCount: thisdata.certificatesCount, //授权数
  361. rejectCount: thisdata.rejectCount, //驳回数
  362. commodityQuantity: thisdata.commodityQuantity, //派单项目数
  363. timeRecordparse: thisdata.timeRecord ? JSON.parse(thisdata.timeRecord) : {},
  364. })
  365. this.loadData(thisdata.orderNo);
  366. this.xiangqings(thisdata.orderNo);
  367. this.xiangmu(thisdata.orderNo)
  368. }
  369. }.bind(this),
  370. }).always(
  371. function () {
  372. this.setState({
  373. loading: false,
  374. })
  375. }.bind(this)
  376. )
  377. }
  378. loadData(pageNo) {
  379. this.state.data = []
  380. this.setState({
  381. page: pageNo,
  382. loading: true,
  383. })
  384. $.ajax({
  385. method: 'get',
  386. dataType: 'json',
  387. crossDomain: false,
  388. url: globalConfig.context + '/api/admin/orderProject/orderTaskList',
  389. data: {
  390. // pageNo: pageNo || 1,
  391. pageSize: this.state.pagination.pageSize,
  392. specially: 0, //个人
  393. name: this.state.nameSearch, //客户名称
  394. depId: this.state.departmenttSearch, //订单部门
  395. orderNo: this.state.orderNoSearch, //订单编号
  396. contractNo: this.state.contractNoSearch, //合同编号
  397. taskId: this.state.taskNoSearch, //项目编号
  398. taskStatus: this.state.taskStatuSearch, //项目状态
  399. projectStatus: this.state.projectStatusSearch, //项目状态
  400. adminName: this.state.adminName, //项目受理人
  401. approval: this.state.approvalSearch, //特批状态搜索
  402. outsourceStatus:
  403. this.state.outsourceStatusSearch >= 999
  404. ? undefined
  405. : this.state.outsourceStatusSearch, //外包状态搜索
  406. },
  407. success: function (data) {
  408. ShowModal(this)
  409. let theArr = []
  410. if (!data.data || !data.data.list) {
  411. if (data.error && data.error.length) {
  412. message.warning(data.error[0].message)
  413. }
  414. } else {
  415. for (let i = 0; i < data.data.list.length; i++) {
  416. let thisdata = data.data.list[i]
  417. theArr.push({
  418. key: i,
  419. orderNo: thisdata.orderNo, //订单编号
  420. id: thisdata.id, //项目ID
  421. taskName: thisdata.taskName, //名称
  422. cname: thisdata.cname, //项目品类
  423. receiverName: thisdata.receiverName, //受理人
  424. projectStatus: thisdata.projectStatus, //项目状态
  425. taskStatus: thisdata.taskStatus, //项目状态
  426. taskDate: thisdata.taskDate, //分配时间
  427. userName:
  428. thisdata.taskName.substring(0, 5) === '软件著作权'
  429. ? thisdata.userName +
  430. '(' +
  431. thisdata.commodityQuantity.toString() +
  432. '/' +
  433. thisdata.alreadyNumber +
  434. ')'
  435. : thisdata.userName, //用户名
  436. depName: thisdata.depName, //部门名称
  437. commodityQuantity: thisdata.commodityQuantity, //项目数量
  438. hours: thisdata.hours,
  439. contractNo: thisdata.contractNo,
  440. approval: thisdata.approval, //特批状态
  441. outsourceStatus: thisdata.outsourceStatus, //外包审核状态
  442. splitStatus: thisdata.splitStatus, //是否为子项目 2是 1主项目
  443. splitSuper: thisdata.splitSuper,
  444. splitId: thisdata.splitId,
  445. })
  446. }
  447. }
  448. this.state.pagination.current = data.data.pageNo
  449. this.state.pagination.total = data.data.totalCount
  450. if (data.data && data.data.list && !data.data.list.length) {
  451. this.state.pagination.current = 0
  452. this.state.pagination.total = 0
  453. }
  454. this.setState({
  455. dataSource: theArr,
  456. pagination: this.state.pagination,
  457. })
  458. }.bind(this),
  459. }).always(
  460. function () {
  461. this.setState({
  462. loading: false,
  463. })
  464. }.bind(this)
  465. )
  466. }
  467. //订单详情
  468. xiangqings(orderNos) {
  469. $.ajax({
  470. method: 'get',
  471. dataType: 'json',
  472. crossDomain: false,
  473. url: globalConfig.context + '/api/admin/newOrder/getOrderNewDetail',
  474. data: {
  475. orderNo: orderNos,
  476. },
  477. success: function (data) {
  478. let thisdata = data.data
  479. let ProvinceCityArr = []
  480. let ProvinceS = thisdata.locationProvince //省
  481. let citys = thisdata.locationCity //市
  482. let Areas = thisdata.locationArea //区
  483. ProvinceCityArr.push(ProvinceS, citys, Areas)
  484. if (data.error.length || data.data.list == '') {
  485. if (data.error && data.error.length) {
  486. message.warning(data.error[0].message)
  487. }
  488. } else {
  489. this.setState({
  490. orderUid: thisdata.uid,
  491. examineName: thisdata.examineName,
  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, this.state.examineName, this.state.approval)}</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;