projectOverview.js 56 KB

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