projectOverview.js 52 KB

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