projectOverview.js 54 KB

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