taskQuery.jsx 70 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113
  1. import React from 'react';
  2. import $ from 'jquery';
  3. import '@/manageCenter/financialManage/distribute/public.less';
  4. import {
  5. Button,
  6. Form,
  7. Input,
  8. Select,
  9. Upload,
  10. Spin,
  11. Table,
  12. message,
  13. Modal,
  14. Tabs,
  15. Tag
  16. } from "antd";
  17. import Assign from '@/manageCenter/publicComponent/assign';
  18. import ResolutionDetail from "@/resolutionDetail";
  19. import OrderDetail from "../../order/orderNew/changeComponent/orderDetail";
  20. import OrderRiZi from "@/orderRiZi.jsx";
  21. import './table.less';
  22. import {
  23. getProcessStatus,
  24. getApproval,
  25. getTaskStatus,
  26. getLiquidationStatus,
  27. splitUrl,
  28. getProjectStatus,
  29. getboutique,
  30. getprovince,
  31. ShowModal
  32. } from "@/tools";
  33. const FormItem =Form.Item;
  34. const {TabPane} = Tabs
  35. import ShowModalDiv from "@/showModal.jsx";
  36. const Task = React.createClass({
  37. loadData(pageNo) {
  38. this.state.data = [];
  39. this.setState({
  40. page: pageNo,
  41. loading: true,
  42. });
  43. $.ajax({
  44. method: "get",
  45. dataType: "json",
  46. crossDomain: false,
  47. url: globalConfig.context + "/api/admin/orderProject/selectTaskList",
  48. data: {
  49. pageNo: pageNo || this.state.page || 1,
  50. pageSize: this.state.pagination.pageSize,
  51. specially: 1, //经理
  52. name: this.state.nameSearch, //客户名称
  53. orderNo: this.state.orderNoSearch, //订单编号
  54. depId: this.state.departmenttSearch, //订单部门
  55. taskId: this.state.taskNoSearch, //任务编号
  56. adminName: this.state.adminName, //任务受理人
  57. },
  58. success: function (data) {
  59. ShowModal(this);
  60. let theArr = [];
  61. if (!data.data || !data.data.list) {
  62. if (data.error && data.error.length) {
  63. message.warning(data.error[0].message);
  64. }
  65. } else {
  66. for (let i = 0; i < data.data.list.length; i++) {
  67. let thisdata = data.data.list[i];
  68. theArr.push({
  69. key: i,
  70. orderNo: thisdata.orderNo, //订单编号
  71. id: thisdata.id, //任务ID
  72. taskName: thisdata.taskName, //名称
  73. cname: thisdata.cname, //项目品类
  74. projectStatus: thisdata.projectStatus, //项目状态
  75. taskStatus: thisdata.taskStatus, //任务状态
  76. taskDate: thisdata.taskDate, //分配时间
  77. commodityQuantity: thisdata.commodityQuantity, //软著数量
  78. alreadyNumber: thisdata.alreadyNumber, //下证数量
  79. userName:
  80. thisdata.taskName.substring(0, 5) === "软件著作权"
  81. ? thisdata.userName +
  82. "(" +
  83. thisdata.commodityQuantity.toString() +
  84. "/" +
  85. thisdata.alreadyNumber +
  86. ")"
  87. : thisdata.userName, //用户名
  88. depName: thisdata.depName, //部门名称
  89. receiverName: thisdata.receiverName, //任务责任人
  90. splitStatus: thisdata.splitStatus, //是否为子项目 2是 1主项目
  91. splitSuper: thisdata.splitSuper,
  92. splitId: thisdata.splitId,
  93. });
  94. }
  95. }
  96. this.state.pagination.current = data.data.pageNo;
  97. this.state.pagination.total = data.data.totalCount;
  98. if (data.data && data.data.list && !data.data.list.length) {
  99. this.state.pagination.current = 0;
  100. this.state.pagination.total = 0;
  101. }
  102. this.setState({
  103. dataSource: theArr,
  104. pagination: this.state.pagination,
  105. });
  106. }.bind(this),
  107. }).always(
  108. function () {
  109. this.setState({
  110. loading: false,
  111. });
  112. }.bind(this)
  113. );
  114. },
  115. getInitialState() {
  116. return {
  117. orderData: [],
  118. orderNo: "",
  119. jiedian: [],
  120. jiedianNew: [],
  121. activeKey: "1",
  122. searchMore: true,
  123. assignVisible: false,
  124. releaseDate: [],
  125. roleName: "",
  126. testFlag: true,
  127. departmentArr: [],
  128. boHuivisible: false,
  129. selectedRowKeys: [],
  130. selectedRows: [],
  131. paginations: false,
  132. loading: false,
  133. pagination: {
  134. defaultCurrent: 1,
  135. defaultPageSize: 10,
  136. showQuickJumper: true,
  137. pageSize: 10,
  138. onChange: function (page) {
  139. this.loadData(page);
  140. }.bind(this),
  141. showTotal: function (total) {
  142. return "共" + total + "条数据";
  143. },
  144. },
  145. columns: [
  146. {
  147. title: "项目编号",
  148. dataIndex: "id",
  149. key: "id",
  150. render: (text, record) => {
  151. if (record.splitStatus == 2) {
  152. return <span>{record.splitSuper + "-" + record.splitId}</span>;
  153. } else {
  154. return text;
  155. }
  156. },
  157. },
  158. {
  159. title: "任务名称",
  160. dataIndex: "taskName",
  161. key: "taskName",
  162. className: "taskName",
  163. },
  164. {
  165. title: "订单编号",
  166. dataIndex: "orderNo",
  167. key: "orderNo",
  168. },
  169. {
  170. title: "业务类别",
  171. dataIndex: "cname",
  172. key: "cname",
  173. },
  174. {
  175. title: "客户名称",
  176. dataIndex: "userName",
  177. key: "userName",
  178. className: "userName",
  179. },
  180. {
  181. title: "任务状态",
  182. dataIndex: "taskStatus",
  183. key: "taskStatus",
  184. render: (text) => {
  185. return getTaskStatus(text);
  186. },
  187. },
  188. {
  189. title: "项目状态",
  190. dataIndex: "projectStatus",
  191. key: "projectStatus",
  192. render: (text) => {
  193. return getProjectStatus(text);
  194. },
  195. },
  196. {
  197. title: "分配时间",
  198. dataIndex: "taskDate",
  199. key: "taskDate",
  200. },
  201. {
  202. title: "任务数量",
  203. dataIndex: "commodityQuantity",
  204. key: "commodityQuantity",
  205. },
  206. {
  207. title: "任务责任人",
  208. dataIndex: "receiverName",
  209. key: "receiverName",
  210. },
  211. {
  212. title: "订单部门",
  213. dataIndex: "depName",
  214. key: "depName",
  215. },
  216. ],
  217. dataSource: [],
  218. searchTime: [],
  219. columnsX: [
  220. {
  221. title: "业务项目名称",
  222. dataIndex: "commodityName",
  223. key: "commodityName",
  224. },
  225. {
  226. title: "项目类别",
  227. dataIndex: "cname",
  228. key: "cname",
  229. },
  230. {
  231. title: "项目数量",
  232. dataIndex: "commodityQuantity",
  233. key: "commodityQuantity",
  234. render: (text, record) => {
  235. if (record.splitStatus == 1) {
  236. return (
  237. <span>
  238. {text}{" "}
  239. <Tag
  240. color="#108ee9"
  241. onClick={(e) => {
  242. e.stopPropagation();
  243. this.showRes(record);
  244. }}
  245. >
  246. 已拆
  247. </Tag>
  248. </span>
  249. );
  250. } else {
  251. return text;
  252. }
  253. },
  254. },
  255. {
  256. title: "金额(万元)",
  257. dataIndex: "commodityPrice",
  258. key: "commodityPrice",
  259. },
  260. {
  261. title: "负责人",
  262. dataIndex: "contacts",
  263. key: "contacts",
  264. },
  265. {
  266. title: "负责人电话",
  267. dataIndex: "contactsMobile",
  268. key: "contactsMobile",
  269. },
  270. {
  271. title: "主要项目",
  272. dataIndex: "main",
  273. key: "main",
  274. render: (text) => {
  275. return text ? "是" : "否";
  276. },
  277. },
  278. {
  279. title: "项目说明",
  280. dataIndex: "taskComment",
  281. key: "taskComment",
  282. render: (text) => {
  283. return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
  284. },
  285. },
  286. ],
  287. columnsA: [
  288. {
  289. title: "流程",
  290. dataIndex: "content",
  291. key: "content",
  292. align: "center",
  293. },
  294. {
  295. title: "操作人",
  296. dataIndex: "aName",
  297. key: "aName",
  298. align: "center",
  299. },
  300. {
  301. title: "时间",
  302. dataIndex: "createTimes",
  303. key: "createTimes",
  304. align: "center",
  305. },
  306. ],
  307. dataSourceX: [],
  308. dataSourceA: [],
  309. ContactsLists: [
  310. {
  311. title: "批次",
  312. dataIndex: "num",
  313. key: "num",
  314. },
  315. {
  316. title: "下证时间",
  317. dataIndex: "licenceTimes",
  318. key: "licenceTimes",
  319. },
  320. {
  321. title: "下证数量",
  322. dataIndex: "alreadyNumber",
  323. key: "alreadyNumber",
  324. },
  325. {
  326. title: "未下证数量",
  327. dataIndex: "notCount",
  328. key: "notCount",
  329. },
  330. ],
  331. };
  332. },
  333. /* 分派 */
  334. evaluate(record, nub) {
  335. this.state.assignData = record;
  336. this.setState({
  337. nub,
  338. assignVisible: true,
  339. });
  340. },
  341. componentDidMount() {
  342. this.setColor();
  343. },
  344. componentWillMount() {
  345. this.departmentList();
  346. this.loadData();
  347. },
  348. tableRowClick(record) {
  349. let str = record.taskName;
  350. let test = str.indexOf("会员")
  351. if(test == -1) {
  352. this.setState({
  353. isHuiyuan: false
  354. })
  355. }else {
  356. this.setState({
  357. isHuiyuan: true
  358. })
  359. }
  360. this.state.RowData = record;
  361. if (record.taskName.substring(0, 5) === "软件著作权") {
  362. this.setState({
  363. speVisible: true,
  364. id: record.id,
  365. splitStatus: record.splitStatus,
  366. splitSuper: record.splitSuper,
  367. splitId: record.splitId,
  368. dataArr: record,
  369. commodityQuantity: record.commodityQuantity,
  370. });
  371. } else {
  372. this.setState({
  373. visible: true,
  374. splitStatus: record.splitStatus,
  375. splitSuper: record.splitSuper,
  376. splitId: record.splitId,
  377. });
  378. }
  379. this.xiangqing(record.id, record.taskName);
  380. this.xiangqings(record.orderNo);
  381. this.xiangmu(record.orderNo);
  382. this.loaduserss(record);
  383. },
  384. // 拆分详细
  385. showRes(record) {
  386. this.setState({
  387. resVisible: true,
  388. resRecord: record,
  389. });
  390. },
  391. resCancel() {
  392. this.setState({
  393. resVisible: false,
  394. });
  395. },
  396. //订单详情
  397. xiangqing(id) {
  398. $.ajax({
  399. method: "get",
  400. dataType: "json",
  401. crossDomain: false,
  402. url: globalConfig.context + "/api/admin/orderProject/orderTaskDetail",
  403. data: {
  404. id: id,
  405. },
  406. success: function (data) {
  407. if (data.error.length || data.data.list == "") {
  408. if (data.error && data.error.length) {
  409. message.warning(data.error[0].message);
  410. }
  411. } else {
  412. let thisdata = data.data;
  413. this.setState({
  414. id: thisdata.id, //ID
  415. orderNo: thisdata.orderNo, //订单编号
  416. userName: thisdata.userName, //客户名称
  417. taskName: thisdata.taskName, //任务名称
  418. cname: thisdata.cname, //项目品类
  419. contractNo: thisdata.contractNo, //合同编号
  420. projectStatus: thisdata.projectStatus, //项目状态
  421. taskStatus: thisdata.taskStatus, //任务状态
  422. taskDate: thisdata.taskDate, //分配时间
  423. taskComment: thisdata.taskComment, //说明
  424. attachmentUrl: thisdata.attachmentUrl
  425. ? splitUrl(
  426. thisdata.attachmentUrl,
  427. ",",
  428. globalConfig.avatarHost + "/upload"
  429. )
  430. : [], //图片地址
  431. salesmanName: thisdata.salesmanName, //订单负责人
  432. startDate: thisdata.startDate, //启动日期
  433. endDate: thisdata.endDate, //结束日期
  434. acceptDate: thisdata.acceptDate, //受理日期
  435. reviewDate: thisdata.reviewDate, //评审日期
  436. publicityDate: thisdata.publicityDate, //公示日期
  437. licenceDate: thisdata.licenceDate, //发证日期
  438. contacts: thisdata.contacts, //联系人
  439. contactMobile: thisdata.contactMobile, //联系人电话
  440. legalPerson: thisdata.legalPerson, //法人
  441. legalPersonTel: thisdata.legalPersonTel, //法人电话
  442. certificateNumber: thisdata.certificateNumber, //证书编号
  443. status: thisdata.status, //状态
  444. formRetrieve: thisdata.formRetrieve, //满意度表格
  445. taskRefund: thisdata.taskRefund, //退单
  446. refundContent: thisdata.refundContent, //退单信息
  447. retrieveContent: thisdata.retrieveContent, //回收信息
  448. arrivalMoney: thisdata.arrivalMoney, //是否到款
  449. setUpAmount: thisdata.setUpAmount, //立项金额
  450. declareUser: thisdata.declareUser, //账号
  451. declarePwd: thisdata.declarePwd, //密码
  452. depName: thisdata.depName, //订单部门
  453. outsourceName: thisdata.outsourceName, //外包公司名称
  454. outsourcePrice: thisdata.outsourcePrice, //外包价格
  455. declarationBatch: thisdata.declarationBatch,
  456. });
  457. }
  458. }.bind(this),
  459. }).always(
  460. function () {
  461. this.setState({
  462. loading: false,
  463. });
  464. }.bind(this)
  465. );
  466. },
  467. //订单详情
  468. xiangqings(orderNos) {
  469. $.ajax({
  470. method: "get",
  471. dataType: "json",
  472. crossDomain: false,
  473. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  474. data: {
  475. orderNo: orderNos,
  476. },
  477. success: function (data) {
  478. let thisdata = data.data;
  479. let ProvinceCityArr = [];
  480. let ProvinceS = thisdata.locationProvince; //省
  481. let citys = thisdata.locationCity; //市
  482. let Areas = thisdata.locationArea; //区
  483. ProvinceCityArr.push(ProvinceS, citys, Areas);
  484. if (data.error.length || data.data.list == "") {
  485. if (data.error && data.error.length) {
  486. message.warning(data.error[0].message);
  487. }
  488. } else {
  489. this.setState({
  490. processStatus: thisdata.processStatus, //流程状态
  491. liquidationStatus: thisdata.liquidationStatus, //结算状态
  492. approval: thisdata.approval, //特批状态
  493. orderRemarks: thisdata.orderRemarks, //订单留言
  494. salesmanName: thisdata.salesmanName, //营销员名称
  495. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  496. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  497. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  498. financeName: thisdata.financeName, //财务名称
  499. financeMobile: thisdata.financeMobile, //财务电话
  500. nowFinance: thisdata.nowFinance, //财务名称
  501. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  502. depName: thisdata.depName, //订单部门
  503. locationProvince: thisdata.locationProvince,
  504. locationCity: thisdata.locationCity,
  505. locationArea: thisdata.locationArea,
  506. ProvinceCity: ProvinceCityArr,
  507. postalAddress: thisdata.postalAddress, //详细地址
  508. outsource: thisdata.outsource,
  509. });
  510. }
  511. }.bind(this),
  512. }).always(
  513. function () {
  514. this.setState({
  515. loading: false,
  516. });
  517. }.bind(this)
  518. );
  519. },
  520. //查看下证信息
  521. loaduserss(record) {
  522. $.ajax({
  523. method: "get",
  524. dataType: "json",
  525. crossDomain: false,
  526. url: globalConfig.context + "/api/admin/orderProject/selectTaskProgress",
  527. data: {
  528. tid: record.id,
  529. },
  530. success: function (data) {
  531. let theArr = [];
  532. let thisData = [];
  533. if (!thisData) {
  534. if (data.error && data.error.length) {
  535. message.warning(data.error[0].message);
  536. }
  537. thisData = {};
  538. } else {
  539. for (let i = 0; i < data.data.length; i++) {
  540. thisData = data.data[i];
  541. theArr.push({
  542. num: i + 1,
  543. key: i,
  544. id: thisData.id, //编号
  545. alreadyNumber: thisData.alreadyNumber, //下证数
  546. licenceTimes: thisData.licenceTimes, //下证时间
  547. notCount: thisData.notCount, //未下证数
  548. flag: true,
  549. });
  550. }
  551. this.setState({
  552. contactList: theArr,
  553. });
  554. }
  555. }.bind(this),
  556. }).always(
  557. function () {
  558. this.setState({
  559. loading: false,
  560. });
  561. }.bind(this)
  562. );
  563. },
  564. //项目列表
  565. xiangmu(orderNos) {
  566. this.setState({
  567. loading: true,
  568. });
  569. $.ajax({
  570. method: "get",
  571. dataType: "json",
  572. crossDomain: false,
  573. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  574. data: {
  575. orderNo: orderNos,
  576. },
  577. success: function (data) {
  578. let theArr = [];
  579. if (data.error.length || data.data.list == "") {
  580. if (data.error && data.error.length) {
  581. message.warning(data.error[0].message);
  582. }
  583. } else {
  584. for (let i = 0; i < data.data.length; i++) {
  585. let thisdata = data.data[i];
  586. theArr.push({
  587. key: i,
  588. id: thisdata.id,
  589. orderNo: thisdata.orderNo, //订单编号
  590. commodityId: thisdata.commodityId, //项目ID
  591. commodityName: thisdata.commodityName, //项目名称
  592. cname: thisdata.cname, //项目类别
  593. commodityPrice: thisdata.commodityPrice, //项目价格
  594. commodityQuantity: thisdata.commodityQuantity, //项目数量
  595. main: thisdata.main, //是否为主要任务
  596. taskComment: thisdata.taskComment, //任务说明
  597. contacts: thisdata.contacts, //联系人
  598. contactsMobile: thisdata.contactsMobile, //联系人电话
  599. taskStatus: thisdata.taskStatus, //是否分配
  600. splitStatus: thisdata.splitStatus, //是否为子项目 2是 1主项目
  601. splitSuper: thisdata.splitSuper,
  602. splitId: thisdata.splitId,
  603. });
  604. }
  605. }
  606. this.setState({
  607. dataSourceX: theArr,
  608. });
  609. }.bind(this),
  610. }).always(
  611. function () {
  612. this.setState({
  613. loading: false,
  614. });
  615. }.bind(this)
  616. );
  617. },
  618. caozuorizhi() {
  619. this.setState({
  620. visibleA: true,
  621. });
  622. $.ajax({
  623. method: "get",
  624. dataType: "json",
  625. crossDomain: false,
  626. url: globalConfig.context + "/api/admin/orderProject/TaskLogList",
  627. data: {
  628. id: this.state.id,
  629. },
  630. success: function (data) {
  631. let theArr = [];
  632. if (data.error.length || data.data.list == "") {
  633. if (data.error && data.error.length) {
  634. message.warning(data.error[0].message);
  635. }
  636. } else {
  637. for (let i = 0; i < data.data.length; i++) {
  638. let thisdata = data.data[i];
  639. theArr.push({
  640. key: i,
  641. id: thisdata.id, //日志ID
  642. content: thisdata.content, //流程
  643. taskId: thisdata.taskId, //任务ID
  644. aName: thisdata.aName, //负责人
  645. createTimes: thisdata.createTimes, //时间
  646. });
  647. }
  648. }
  649. this.setState({
  650. dataSourceA: theArr,
  651. });
  652. }.bind(this),
  653. }).always(
  654. function () {
  655. this.setState({
  656. loading: false,
  657. });
  658. }.bind(this)
  659. );
  660. },
  661. //关闭操作工时
  662. visitCancelA() {
  663. this.setState({
  664. visibleA: false,
  665. });
  666. },
  667. //关闭详情
  668. visitCancel() {
  669. this.setState({
  670. visible: false,
  671. speVisible: false,
  672. activeKey: "1",
  673. });
  674. this.reset();
  675. },
  676. visitOk() {
  677. this.setState({
  678. visible: false,
  679. });
  680. this.reset();
  681. },
  682. setColor() {
  683. $(".userName span").after(
  684. "(<span class='ruanzhu'>软著数</span>/<span class='xiazheng'>下证数</span>)"
  685. );
  686. },
  687. closeDesc(e, s) {
  688. this.state.showDesc = e;
  689. if (s) {
  690. this.loadData(this.state.page);
  691. }
  692. },
  693. closeAssign(e, s) {
  694. this.state.roleName = "";
  695. this.state.assignVisible = e;
  696. if (s) {
  697. this.loadData(this.state.page);
  698. }
  699. },
  700. nextCancel() {
  701. this.setState({
  702. addnextVisible: false,
  703. });
  704. },
  705. //点击打卡项目详情
  706. tableRowClickX(record) {
  707. this.setState({
  708. jid: record.id, //项目ID
  709. kid: record.commodityId, //商品ID
  710. commodityName: record.commodityName, //金额
  711. commodityPrice: record.commodityPrice, //金额
  712. commodityQuantity: record.commodityQuantity, //数量
  713. taskComment: record.taskComment, //备注
  714. main: record.main.toString(), //是否为主要
  715. addnextVisible: true,
  716. addState: 0,
  717. });
  718. },
  719. search() {
  720. this.loadData();
  721. },
  722. orderChange(key) {
  723. this.setState({
  724. activeKey: key,
  725. });
  726. if (key == 2) {
  727. this.orderDetailData(this.state.orderNo);
  728. this.xiangmu(this.state.orderNo);
  729. this.jiedian(this.state.orderNo);
  730. this.jiedianNew(this.state.orderNo);
  731. }
  732. },
  733. //节点列表
  734. jiedian(orderNos) {
  735. $.ajax({
  736. method: "get",
  737. dataType: "json",
  738. crossDomain: false,
  739. url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
  740. data: {
  741. orderNo: orderNos,
  742. },
  743. success: function (data) {
  744. let theArr = [];
  745. let thisData = [];
  746. if (data.error.length || data.data.list == "") {
  747. if (data.error && data.error.length) {
  748. message.warning(data.error[0].message);
  749. }
  750. } else {
  751. for (let i = 0; i < data.data.length; i++) {
  752. thisData = data.data[i];
  753. theArr.push({
  754. key: i,
  755. dunSubject: thisData.dunSubject
  756. ? thisData.dunSubject.toString()
  757. : "", //催款科目
  758. id: thisData.id, //节点Id
  759. money: thisData.money, //催款金额
  760. dunStatus: thisData.dunStatus, //催款状态
  761. });
  762. }
  763. this.setState({
  764. jiedian: theArr,
  765. });
  766. }
  767. }.bind(this),
  768. });
  769. },
  770. jiedianNew(orderNos) {
  771. $.ajax({
  772. method: "get",
  773. dataType: "json",
  774. crossDomain: false,
  775. url:
  776. globalConfig.context + "/api/admin/newOrderDun/selectListNewOrderDun",
  777. data: {
  778. orderNo: orderNos,
  779. },
  780. success: function (data) {
  781. if (data.error && data.error.length) {
  782. message.warning(data.error[0].message);
  783. } else {
  784. let theArr = [];
  785. let thisData = [];
  786. let arr = data.data || [];
  787. let totalCui = 0;
  788. for (let i = 0; i < arr.length; i++) {
  789. thisData = arr[i];
  790. totalCui += +thisData.money;
  791. theArr.push({
  792. key: i,
  793. dunSubject: thisData.dunSubject
  794. ? thisData.dunSubject.toString()
  795. : "", //催款科目
  796. id: thisData.id, //节点Id
  797. money: thisData.money, //催款金额
  798. // orderNo: record ? record.orderNo : this.props.datauser.orderNo,
  799. commodityName: thisData.commodityName,
  800. projectType: thisData.projectType,
  801. dunTypeName: thisData.dunTypeName,
  802. status: thisData.status,
  803. waitDay: thisData.waitDay,
  804. effectiveCount: thisData.effectiveCount,
  805. startDate: thisData.startDate,
  806. dunType: thisData.dunType,
  807. appropriationRatio: thisData.appropriationRatio,
  808. customizeName: thisData.customizeName,
  809. customizeTimes: thisData.customizeTimes,
  810. });
  811. }
  812. if (!totalCui) {
  813. totalCui = 0;
  814. }
  815. totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6);
  816. this.setState({
  817. jiedianNew: theArr,
  818. totalCui,
  819. });
  820. }
  821. }.bind(this),
  822. }).always(
  823. function () {
  824. this.setState({
  825. loading: false,
  826. });
  827. }.bind(this)
  828. );
  829. },
  830. orderDetailData(orderNos) {
  831. this.setState({
  832. loading: true,
  833. });
  834. $.ajax({
  835. method: "get",
  836. dataType: "json",
  837. crossDomain: false,
  838. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  839. data: {
  840. orderNo: orderNos,
  841. },
  842. success: function (data) {
  843. if (data.error.length || data.data.list == "") {
  844. if (data.error && data.error.length) {
  845. message.warning(data.error[0].message);
  846. this.setState({
  847. loading: false,
  848. });
  849. }
  850. } else {
  851. let thisdata = data.data;
  852. this.setState({
  853. loading: false,
  854. userName: thisdata.userName,
  855. primaryOrderNo: thisdata.primaryOrder,
  856. additionalOrder: thisdata.additionalOrder,
  857. contractNo: thisdata.contractNo,
  858. orderData: thisdata,
  859. isAddition: thisdata.additionalOrder ? true : false,
  860. contractPictureUrl: thisdata.contractPictureUrl
  861. ? splitUrl(
  862. thisdata.contractPictureUrl,
  863. ",",
  864. globalConfig.avatarHost + "/upload"
  865. )
  866. : [],
  867. });
  868. }
  869. }.bind(this),
  870. });
  871. },
  872. reset() {
  873. this.state.nameSearch = "";
  874. this.state.releaseDate = [];
  875. this.state.orderNoSearch = "";
  876. this.state.taskNoSearch = "";
  877. this.state.departmenttSearch = undefined;
  878. this.loadData(this.state.page);
  879. },
  880. searchSwitch() {
  881. this.setState({
  882. searchMore: !this.state.searchMore,
  883. });
  884. },
  885. //部门
  886. departmentList() {
  887. this.setState({
  888. loading: true,
  889. });
  890. $.ajax({
  891. method: "get",
  892. dataType: "json",
  893. crossDomain: false,
  894. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  895. data: {},
  896. success: function (data) {
  897. let thedata = data.data;
  898. let theArr = [];
  899. if (!thedata) {
  900. if (data.error && data.error.length) {
  901. message.warning(data.error[0].message);
  902. }
  903. thedata = {};
  904. } else {
  905. thedata.map(function (item, index) {
  906. theArr.push({
  907. key: index,
  908. name: item.name,
  909. id: item.id,
  910. });
  911. });
  912. }
  913. this.setState({
  914. departmentArr: theArr,
  915. });
  916. }.bind(this),
  917. }).always(
  918. function () {
  919. this.setState({
  920. loading: false,
  921. });
  922. }.bind(this)
  923. );
  924. },
  925. rizhi() {
  926. this.setState({
  927. loading: true,
  928. });
  929. $.ajax({
  930. method: "get",
  931. dataType: "json",
  932. crossDomain: false,
  933. url: "/api/admin/newOrder/selectOrderLog",
  934. data: {
  935. orderNo: this.state.orderNo,
  936. },
  937. success: function (data) {
  938. let theArr = [];
  939. let thisData = data.data;
  940. if (!thisData.length) {
  941. if (data.error && data.error.length) {
  942. message.warning(data.error[0].message);
  943. }
  944. thisData = {};
  945. } else {
  946. for (let i = 0; i < data.data.length; i++) {
  947. let thisdata = data.data[i];
  948. theArr.push({
  949. processName: thisdata.processName,
  950. adminName: thisdata.adminName,
  951. createDate: thisdata.createDate,
  952. remarks: thisdata.remarks,
  953. });
  954. }
  955. }
  956. this.setState({
  957. dataSourceY: theArr,
  958. });
  959. }.bind(this),
  960. }).always(
  961. function () {
  962. this.setState({
  963. loading: false,
  964. });
  965. }.bind(this)
  966. );
  967. },
  968. closeOrderLog() {
  969. this.setState({
  970. avisible: false,
  971. });
  972. },
  973. getOrderLog() {
  974. this.setState({
  975. avisible: true,
  976. });
  977. this.rizhi();
  978. },
  979. render() {
  980. const utils = {
  981. getSatisfaction: function (num) {
  982. switch (num) {
  983. case 0:
  984. return "未收回";
  985. case 1:
  986. return "已收回";
  987. default:
  988. return "其它";
  989. }
  990. },
  991. getChargeback: function (num) {
  992. switch (num) {
  993. case 0:
  994. return "已完成";
  995. case 1:
  996. return "未完成";
  997. default:
  998. return "其它";
  999. }
  1000. },
  1001. };
  1002. const formItemLayout = {
  1003. labelCol: { span: 8 },
  1004. wrapperCol: { span: 14 },
  1005. };
  1006. let departmentArr = this.state.departmentArr || [];
  1007. return (
  1008. <div className="user-content">
  1009. <ShowModalDiv ShowModal={this.state.showModal} />
  1010. <div className="content-title">
  1011. <span>任务查询</span>
  1012. </div>
  1013. <Tabs defaultActiveKey="1" onChange={this.callback} className="test">
  1014. <TabPane tab="搜索" key="1">
  1015. <div className="user-search" style={{ marginLeft: 10 }}>
  1016. <Input
  1017. placeholder="客户名称"
  1018. style={{ width: 150 }}
  1019. value={this.state.nameSearch}
  1020. onChange={(e) => {
  1021. this.setState({ nameSearch: e.target.value });
  1022. }}
  1023. />
  1024. <Input
  1025. placeholder="订单编号"
  1026. value={this.state.orderNoSearch}
  1027. onChange={(e) => {
  1028. this.setState({ orderNoSearch: e.target.value });
  1029. }}
  1030. />
  1031. <Input
  1032. placeholder="任务编号"
  1033. value={this.state.taskNoSearch}
  1034. onChange={(e) => {
  1035. this.setState({ taskNoSearch: e.target.value });
  1036. }}
  1037. />
  1038. <Select
  1039. placeholder="选择部门"
  1040. style={{ width: 150, marginRight: "10px" }}
  1041. value={this.state.departmenttSearch}
  1042. onChange={(e) => {
  1043. this.setState({ departmenttSearch: e });
  1044. }}
  1045. >
  1046. {departmentArr.map(function (item) {
  1047. return (
  1048. <Select.Option key={item.id}>{item.name}</Select.Option>
  1049. );
  1050. })}
  1051. </Select>
  1052. <Button type="primary" onClick={this.search}>
  1053. 搜索
  1054. </Button>
  1055. <Button onClick={this.reset}>重置</Button>
  1056. {/* <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
  1057. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  1058. <span>订单时间 :</span>
  1059. <RangePicker
  1060. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  1061. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  1062. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  1063. </div> */}
  1064. </div>
  1065. </TabPane>
  1066. </Tabs>
  1067. <div className="patent-table">
  1068. <Spin spinning={this.state.loading}>
  1069. <Table
  1070. bordered
  1071. size="small"
  1072. columns={this.state.columns}
  1073. dataSource={this.state.dataSource}
  1074. onHeaderRow={(column) => {
  1075. console.log(column.index);
  1076. }}
  1077. pagination={this.state.pagination}
  1078. onRowClick={this.tableRowClick.bind(this)}
  1079. />
  1080. </Spin>
  1081. </div>
  1082. <Assign
  1083. title="任务"
  1084. selApi={"/api/admin/orderProject/projectDistribution"}
  1085. data={this.state.assignData}
  1086. showDesc={this.state.assignVisible}
  1087. closeDesc={this.closeAssign.bind(this)}
  1088. fenpaiData={8}
  1089. specially={0}
  1090. roleName={this.state.nub}
  1091. />
  1092. <Modal
  1093. className="customeDetails"
  1094. footer=""
  1095. title=""
  1096. width="900px"
  1097. visible={this.state.visible}
  1098. onOk={this.visitOk}
  1099. onCancel={this.visitCancel}
  1100. >
  1101. <Tabs activeKey={this.state.activeKey} onChange={this.orderChange}>
  1102. <TabPane tab="项目概况" key="1">
  1103. <Form
  1104. layout="horizontal"
  1105. onSubmit={this.handleSubmit}
  1106. id="demand-form"
  1107. style={{ paddingBottom: "00px" }}
  1108. >
  1109. <Spin spinning={this.state.loading}>
  1110. <div className="clearfix">
  1111. <div className="clearfix">
  1112. <FormItem
  1113. className="half-item"
  1114. {...formItemLayout}
  1115. label="当前项目情况"
  1116. >
  1117. <span>{this.state.status ? "暂停" : "开启"}</span>
  1118. <Button
  1119. type="primary"
  1120. size="small"
  1121. style={{ marginTop: "5px", position: "absolute" }}
  1122. onClick={this.caozuorizhi}
  1123. >
  1124. 操作日志
  1125. </Button>
  1126. </FormItem>
  1127. <FormItem
  1128. className="half-item"
  1129. {...formItemLayout}
  1130. label="合同编号"
  1131. >
  1132. <span>{this.state.contractNo}</span>
  1133. </FormItem>
  1134. </div>
  1135. <div className="clearfix">
  1136. <FormItem
  1137. className="half-item"
  1138. {...formItemLayout}
  1139. label="项目状态"
  1140. >
  1141. <span>
  1142. {getProjectStatus(this.state.projectStatus)}
  1143. </span>
  1144. </FormItem>
  1145. <FormItem
  1146. className="half-item"
  1147. {...formItemLayout}
  1148. label="是否特批"
  1149. >
  1150. <span>{getApproval(this.state.approval)}</span>
  1151. </FormItem>
  1152. <FormItem
  1153. className="half-item"
  1154. {...formItemLayout}
  1155. label="结算状态"
  1156. >
  1157. <span>
  1158. {getLiquidationStatus(this.state.liquidationStatus)}
  1159. </span>
  1160. </FormItem>
  1161. <FormItem
  1162. className="half-item"
  1163. {...formItemLayout}
  1164. label="流程状态"
  1165. >
  1166. <span>
  1167. {getProcessStatus(this.state.processStatus)}
  1168. </span>
  1169. </FormItem>
  1170. <FormItem
  1171. className="half-item"
  1172. {...formItemLayout}
  1173. label="订单编号"
  1174. >
  1175. <span>{this.state.orderNo}</span>
  1176. </FormItem>
  1177. <FormItem
  1178. className="half-item"
  1179. {...formItemLayout}
  1180. label="是否外包"
  1181. >
  1182. <span>{this.state.outsource == 0 ? "否" : "是"}</span>
  1183. </FormItem>
  1184. </div>
  1185. <div className="clearfix">
  1186. <FormItem
  1187. className="half-item"
  1188. {...formItemLayout}
  1189. label="满意度表格"
  1190. >
  1191. <span>
  1192. {utils.getSatisfaction(this.state.formRetrieve)}
  1193. </span>
  1194. </FormItem>
  1195. <FormItem
  1196. className="half-item"
  1197. {...formItemLayout}
  1198. label="退单"
  1199. >
  1200. <span>
  1201. {utils.getChargeback(this.state.taskRefund)}
  1202. </span>
  1203. </FormItem>
  1204. </div>
  1205. <div className="clearfix">
  1206. {
  1207. <FormItem
  1208. className="half-item"
  1209. {...formItemLayout}
  1210. label="(满意度)备注"
  1211. >
  1212. <span>{this.state.retrieveContent}</span>
  1213. </FormItem>
  1214. }
  1215. {
  1216. <FormItem
  1217. className="half-item"
  1218. {...formItemLayout}
  1219. label="(退单)备注"
  1220. >
  1221. <span>{this.state.refundContent}</span>
  1222. </FormItem>
  1223. }
  1224. </div>
  1225. <div className="clearfix">
  1226. <h3 className="sub-title">任务信息</h3>
  1227. <FormItem
  1228. className="half-item"
  1229. {...formItemLayout}
  1230. label="任务编号"
  1231. >
  1232. <span>
  1233. {this.state.splitStatus == 2
  1234. ? this.state.splitSuper + "-" + this.state.splitId
  1235. : this.state.id}
  1236. </span>
  1237. </FormItem>
  1238. <FormItem
  1239. className="half-item"
  1240. {...formItemLayout}
  1241. label="任务名称"
  1242. >
  1243. <span>{this.state.taskName}</span>
  1244. </FormItem>
  1245. <FormItem
  1246. className="half-item"
  1247. {...formItemLayout}
  1248. label="任务状态"
  1249. >
  1250. <span>{getTaskStatus(this.state.taskStatus)}</span>
  1251. </FormItem>
  1252. <FormItem
  1253. className="half-item"
  1254. {...formItemLayout}
  1255. label="任务类别"
  1256. >
  1257. <span>{this.state.cname}</span>
  1258. </FormItem>
  1259. <FormItem
  1260. className="half-item"
  1261. {...formItemLayout}
  1262. label="证书编号"
  1263. >
  1264. <span>{this.state.certificateNumber}</span>
  1265. </FormItem>
  1266. </div>
  1267. {/*{this.state.outsource === 1 ? (*/}
  1268. {/* <div className="clearfix">*/}
  1269. {/* <h3 className="sub-title">外包信息</h3>*/}
  1270. {/* <FormItem*/}
  1271. {/* className="half-item"*/}
  1272. {/* {...formItemLayout}*/}
  1273. {/* label="外包公司"*/}
  1274. {/* >*/}
  1275. {/* <span>{this.state.outsourceName}</span>*/}
  1276. {/* </FormItem>*/}
  1277. {/* <FormItem*/}
  1278. {/* className="half-item"*/}
  1279. {/* {...formItemLayout}*/}
  1280. {/* label="外包成本(万元)"*/}
  1281. {/* >*/}
  1282. {/* <span>{this.state.outsourcePrice}</span>*/}
  1283. {/* </FormItem>*/}
  1284. {/* </div>*/}
  1285. {/*) : (*/}
  1286. {/* ""*/}
  1287. {/*)}*/}
  1288. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1289. <div className="clearfix">
  1290. <h3 className="sub-title">联系信息</h3>
  1291. <FormItem
  1292. className="half-item"
  1293. {...formItemLayout}
  1294. label="客户名称"
  1295. >
  1296. <span>{this.state.userName}</span>
  1297. </FormItem>
  1298. <FormItem
  1299. className="half-item"
  1300. {...formItemLayout}
  1301. label="企业法人"
  1302. >
  1303. <span>{this.state.legalPerson}</span>
  1304. </FormItem>
  1305. <FormItem
  1306. className="half-item"
  1307. {...formItemLayout}
  1308. label="法人电话"
  1309. >
  1310. <span>{this.state.legalPersonTel}</span>
  1311. </FormItem>
  1312. <FormItem
  1313. className="half-item"
  1314. {...formItemLayout}
  1315. label="客户联系人"
  1316. >
  1317. <span>{this.state.contacts}</span>
  1318. </FormItem>
  1319. <FormItem
  1320. className="half-item"
  1321. {...formItemLayout}
  1322. label="联系人电话"
  1323. >
  1324. <span>{this.state.contactMobile}</span>
  1325. </FormItem>
  1326. <FormItem
  1327. className="half-item"
  1328. {...formItemLayout}
  1329. label="企业地址"
  1330. >
  1331. <span>
  1332. {getprovince(this.state.locationProvince)}/
  1333. {getprovince(this.state.locationCity)}/
  1334. {getprovince(this.state.locationArea)}
  1335. </span>
  1336. </FormItem>
  1337. <FormItem
  1338. className="half-item"
  1339. {...formItemLayout}
  1340. label=""
  1341. ></FormItem>
  1342. <FormItem className="half-item" {...formItemLayout}>
  1343. <span style={{ paddingLeft: "12em" }}>
  1344. {this.state.postalAddress}
  1345. </span>
  1346. </FormItem>
  1347. </div>
  1348. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1349. <div className="clearfix">
  1350. <h3 className="sub-title">订单负责人信息</h3>
  1351. <FormItem
  1352. className="half-item"
  1353. {...formItemLayout}
  1354. label="负责人"
  1355. >
  1356. <span>
  1357. {this.state.salesmanName +
  1358. "(" +
  1359. this.state.depName +
  1360. ")"}
  1361. </span>
  1362. </FormItem>
  1363. <FormItem
  1364. className="half-item"
  1365. {...formItemLayout}
  1366. label="负责人电话"
  1367. >
  1368. <span>{this.state.salesmanMobile}</span>
  1369. </FormItem>
  1370. <FormItem
  1371. className="half-item"
  1372. {...formItemLayout}
  1373. label="当前财务负责人"
  1374. >
  1375. <span>{this.state.nowFinance}</span>
  1376. </FormItem>
  1377. <FormItem
  1378. className="half-item"
  1379. {...formItemLayout}
  1380. label="当前财务负责人电话"
  1381. >
  1382. <span>{this.state.nowFinanceMobile}</span>
  1383. </FormItem>
  1384. <FormItem
  1385. className="half-item"
  1386. {...formItemLayout}
  1387. style={{ opacity: ".5" }}
  1388. label="原负责人"
  1389. >
  1390. <span>{this.state.oldSalesmanName}</span>
  1391. </FormItem>
  1392. <FormItem
  1393. className="half-item"
  1394. {...formItemLayout}
  1395. style={{ opacity: ".5" }}
  1396. label="原负责人电话"
  1397. >
  1398. <span>{this.state.oldSalesmanMobile}</span>
  1399. </FormItem>
  1400. <FormItem
  1401. className="half-item"
  1402. {...formItemLayout}
  1403. style={{ opacity: ".5" }}
  1404. label="实际财务操作人"
  1405. >
  1406. <span>{this.state.financeName}</span>
  1407. </FormItem>
  1408. <FormItem
  1409. className="half-item"
  1410. {...formItemLayout}
  1411. style={{ opacity: ".5" }}
  1412. label="实际财务操作人电话"
  1413. >
  1414. <span>{this.state.financeMobile}</span>
  1415. </FormItem>
  1416. <FormItem
  1417. className="half-item"
  1418. {...formItemLayout}
  1419. label="订单留言"
  1420. >
  1421. <span>{this.state.orderRemarks}</span>
  1422. </FormItem>
  1423. <FormItem
  1424. className="half-item"
  1425. {...formItemLayout}
  1426. label=""
  1427. >
  1428. <Button onClick={this.getOrderLog}>查看订单日志</Button>
  1429. </FormItem>
  1430. <OrderRiZi
  1431. dataSourcerizhi={this.state.dataSourceY}
  1432. closeOrderLog={this.closeOrderLog}
  1433. visible={this.state.avisible}
  1434. loading={this.state.loading}
  1435. />
  1436. </div>
  1437. <div className="clearfix">
  1438. <h3 className="sub-title">申报系统账户信息</h3>
  1439. {/*<span style={{color:'red'}}>注:仅技术部可见</span>*/}
  1440. <FormItem
  1441. className="half-item"
  1442. {...formItemLayout}
  1443. label="用户名"
  1444. >
  1445. <span>{this.state.declareUser}</span>
  1446. </FormItem>
  1447. <FormItem
  1448. className="half-item"
  1449. {...formItemLayout}
  1450. label="密码"
  1451. >
  1452. <span>{this.state.declarePwd}</span>
  1453. </FormItem>
  1454. </div>
  1455. <div className="clearfix">
  1456. <h3 className="sub-title">项目申报进度</h3>
  1457. <FormItem
  1458. className="half-item"
  1459. {...formItemLayout}
  1460. label="申报批次"
  1461. >
  1462. <span>{this.state.declarationBatch}</span>
  1463. </FormItem>
  1464. <FormItem
  1465. className="half-item"
  1466. {...formItemLayout}
  1467. label="启动时间"
  1468. >
  1469. <span>{this.state.startDate}</span>
  1470. </FormItem>
  1471. <FormItem
  1472. className="half-item"
  1473. {...formItemLayout}
  1474. label="完成时间"
  1475. >
  1476. <span>{this.state.endDate}</span>
  1477. </FormItem>
  1478. <FormItem
  1479. className="half-item"
  1480. {...formItemLayout}
  1481. label="受理时间"
  1482. >
  1483. <span>{this.state.acceptDate}</span>
  1484. </FormItem>
  1485. <FormItem
  1486. className="half-item"
  1487. {...formItemLayout}
  1488. label="评审时间"
  1489. >
  1490. <span>{this.state.reviewDate}</span>
  1491. </FormItem>
  1492. <FormItem
  1493. className="half-item"
  1494. {...formItemLayout}
  1495. label="公示时间"
  1496. >
  1497. <span>{this.state.publicityDate}</span>
  1498. </FormItem>
  1499. <FormItem
  1500. className="half-item"
  1501. {...formItemLayout}
  1502. label="发证时间"
  1503. >
  1504. <span>{this.state.licenceDate}</span>
  1505. </FormItem>
  1506. <FormItem
  1507. className="half-item"
  1508. {...formItemLayout}
  1509. label="立项金额(万元)"
  1510. >
  1511. <span>{this.state.setUpAmount}</span>
  1512. </FormItem>
  1513. <FormItem
  1514. className="half-item"
  1515. {...formItemLayout}
  1516. label="是否到款"
  1517. >
  1518. <span>
  1519. {this.state.arrivalMoney ? "已到企业" : "未到企业"}
  1520. </span>
  1521. </FormItem>
  1522. </div>
  1523. <div className="clearfix">
  1524. <FormItem
  1525. labelCol={{ span: 3 }}
  1526. wrapperCol={{ span: 18 }}
  1527. label="附件"
  1528. >
  1529. <Upload
  1530. className="demandDetailShow-upload"
  1531. listType="picture-card"
  1532. fileList={this.state.attachmentUrl}
  1533. onPreview={(file) => {
  1534. this.setState({
  1535. previewImage: file.url || file.thumbUrl,
  1536. previewVisible: true,
  1537. });
  1538. }}
  1539. ></Upload>
  1540. <Modal
  1541. maskClosable={false}
  1542. footer={null}
  1543. visible={this.state.previewVisible}
  1544. onCancel={() => {
  1545. this.setState({ previewVisible: false });
  1546. }}
  1547. >
  1548. <img
  1549. alt=""
  1550. style={{ width: "100%" }}
  1551. src={this.state.previewImage || ""}
  1552. />
  1553. </Modal>
  1554. </FormItem>
  1555. </div>
  1556. <div className="clearfix">
  1557. <FormItem
  1558. labelCol={{ span: 3 }}
  1559. wrapperCol={{ span: 16 }}
  1560. label="备注"
  1561. >
  1562. <span>{this.state.taskComment}</span>
  1563. </FormItem>
  1564. </div>
  1565. <div>
  1566. <h3 className="sub-title">项目业务</h3>
  1567. {this.state.processStatus == 0 ? (
  1568. <Button
  1569. type="primary"
  1570. onClick={this.addDetailed}
  1571. style={{
  1572. float: "right",
  1573. marginRight: "50px",
  1574. marginBottom: "15px",
  1575. }}
  1576. >
  1577. 添加项目明细
  1578. </Button>
  1579. ) : (
  1580. ""
  1581. )}
  1582. </div>
  1583. <div className="patent-table">
  1584. <Spin spinning={this.state.loading}>
  1585. <Table
  1586. columns={this.state.columnsX}
  1587. dataSource={this.state.dataSourceX}
  1588. pagination={this.state.paginations}
  1589. onRowClick={this.tableRowClickX}
  1590. bordered
  1591. size="small"
  1592. />
  1593. </Spin>
  1594. </div>
  1595. </div>
  1596. </Spin>
  1597. </Form>
  1598. </TabPane>
  1599. {!this.props.isZxs || (this.state.isHuiyuan && this.props.isZxs) ? (
  1600. <TabPane tab="订单详情" key="2">
  1601. <Spin spinning={this.state.loading}>
  1602. <OrderDetail
  1603. orderData={this.state.orderData}
  1604. getOrderLog={this.getOrderLog}
  1605. dataSourceX={this.state.dataSourceX}
  1606. contactList={this.state.jiedian}
  1607. orderNo={this.state.orderNo}
  1608. totalCui={this.state.totalCui}
  1609. contactListNew={this.state.jiedianNew}
  1610. pictureUrl={this.state.contractPictureUrl}
  1611. />
  1612. </Spin>
  1613. </TabPane>
  1614. ) : (
  1615. ""
  1616. )}
  1617. </Tabs>
  1618. </Modal>
  1619. <Modal
  1620. maskClosable={false}
  1621. visible={this.state.addnextVisible}
  1622. onOk={this.nextCancel}
  1623. onCancel={this.nextCancel}
  1624. width="900px"
  1625. title="项目任务详情"
  1626. footer=""
  1627. className="admin-desc-content"
  1628. >
  1629. <Form layout="horizontal" onSubmit={this.nextSubmit} id="demand-form">
  1630. <Spin spinning={this.state.loading}>
  1631. <div className="clearfix">
  1632. <FormItem
  1633. className="half-item"
  1634. {...formItemLayout}
  1635. label="项目名称"
  1636. >
  1637. <span>{this.state.commodityName}</span>
  1638. </FormItem>
  1639. <FormItem
  1640. className="half-item"
  1641. {...formItemLayout}
  1642. label="项目数量"
  1643. >
  1644. <span>{this.state.commodityQuantity}</span>
  1645. </FormItem>
  1646. <FormItem
  1647. className="half-item"
  1648. {...formItemLayout}
  1649. label="金额(万元)"
  1650. >
  1651. <span>{this.state.commodityPrice}</span>
  1652. </FormItem>
  1653. <FormItem
  1654. className="half-item"
  1655. {...formItemLayout}
  1656. label="主要项目"
  1657. >
  1658. <span>{getboutique(this.state.main)}</span>
  1659. </FormItem>
  1660. <div className="clearfix">
  1661. <FormItem
  1662. labelCol={{ span: 4 }}
  1663. wrapperCol={{ span: 16 }}
  1664. label="服务说明"
  1665. >
  1666. <span>{this.state.taskComment}</span>
  1667. </FormItem>
  1668. </div>
  1669. </div>
  1670. </Spin>
  1671. </Form>
  1672. </Modal>
  1673. <Modal
  1674. width="800px"
  1675. title="操作日志"
  1676. footer=""
  1677. className="admin-desc-content"
  1678. >
  1679. <div className="patent-table patent-table-center">
  1680. <Spin spinning={this.state.loading}>
  1681. <Table columns={this.state.columnsY} bordered size="small" />
  1682. </Spin>
  1683. </div>
  1684. </Modal>
  1685. <Modal
  1686. maskClosable={false}
  1687. visible={this.state.speVisible}
  1688. onOk={this.visitOk}
  1689. onCancel={this.visitCancel}
  1690. width="900px"
  1691. title=""
  1692. footer=""
  1693. className="admin-desc-content"
  1694. >
  1695. <Tabs activeKey={this.state.activeKey} onChange={this.orderChange}>
  1696. <TabPane tab="项目概况" key="1">
  1697. <div className="clearfix">
  1698. <FormItem
  1699. className="half-item"
  1700. {...formItemLayout}
  1701. label="当前项目情况"
  1702. >
  1703. <span>{this.state.status ? "暂停" : "开启"}</span>
  1704. <Button
  1705. type="primary"
  1706. size="small"
  1707. style={{ marginTop: "5px", position: "absolute" }}
  1708. onClick={this.caozuorizhi}
  1709. >
  1710. 操作日志
  1711. </Button>
  1712. </FormItem>
  1713. <FormItem
  1714. className="half-item"
  1715. {...formItemLayout}
  1716. label="合同编号"
  1717. >
  1718. <span>{this.state.contractNo}</span>
  1719. </FormItem>
  1720. </div>
  1721. <div className="clearfix">
  1722. <FormItem
  1723. className="half-item"
  1724. {...formItemLayout}
  1725. label="项目状态"
  1726. >
  1727. <span>{getProjectStatus(this.state.projectStatus)}</span>
  1728. </FormItem>
  1729. <FormItem
  1730. className="half-item"
  1731. {...formItemLayout}
  1732. label="是否特批"
  1733. >
  1734. <span>{getApproval(this.state.approval)}</span>
  1735. </FormItem>
  1736. <FormItem
  1737. className="half-item"
  1738. {...formItemLayout}
  1739. label="结算状态"
  1740. >
  1741. <span>
  1742. {getLiquidationStatus(this.state.liquidationStatus)}
  1743. </span>
  1744. </FormItem>
  1745. <FormItem
  1746. className="half-item"
  1747. {...formItemLayout}
  1748. label="流程状态"
  1749. >
  1750. <span>{getProcessStatus(this.state.processStatus)}</span>
  1751. </FormItem>
  1752. <FormItem
  1753. className="half-item"
  1754. {...formItemLayout}
  1755. label="订单编号"
  1756. >
  1757. <span>{this.state.orderNo}</span>
  1758. </FormItem>
  1759. </div>
  1760. <div className="clearfix">
  1761. <FormItem
  1762. className="half-item"
  1763. {...formItemLayout}
  1764. label="满意度表格"
  1765. >
  1766. <span>{utils.getSatisfaction(this.state.formRetrieve)}</span>
  1767. </FormItem>
  1768. <FormItem
  1769. className="half-item"
  1770. {...formItemLayout}
  1771. label="退单"
  1772. >
  1773. <span>{utils.getChargeback(this.state.taskRefund)}</span>
  1774. </FormItem>
  1775. </div>
  1776. <div className="clearfix">
  1777. {
  1778. <FormItem
  1779. className="half-item"
  1780. {...formItemLayout}
  1781. label="(满意度)备注"
  1782. >
  1783. <span>{this.state.retrieveContent}</span>
  1784. </FormItem>
  1785. }
  1786. {
  1787. <FormItem
  1788. className="half-item"
  1789. {...formItemLayout}
  1790. label="(退单)备注"
  1791. >
  1792. <span>{this.state.refundContent}</span>
  1793. </FormItem>
  1794. }
  1795. </div>
  1796. <div className="clearfix">
  1797. <h3 className="sub-title">任务信息</h3>
  1798. <FormItem
  1799. className="half-item"
  1800. {...formItemLayout}
  1801. label="任务编号"
  1802. >
  1803. <span>
  1804. {this.state.splitStatus == 2
  1805. ? this.state.splitSuper + "-" + this.state.splitId
  1806. : this.state.id}
  1807. </span>
  1808. </FormItem>
  1809. <FormItem
  1810. className="half-item"
  1811. {...formItemLayout}
  1812. label="任务名称"
  1813. >
  1814. <span>{this.state.taskName}</span>
  1815. </FormItem>
  1816. <FormItem
  1817. className="half-item"
  1818. {...formItemLayout}
  1819. label="任务状态"
  1820. >
  1821. <span>{getTaskStatus(this.state.taskStatus)}</span>
  1822. </FormItem>
  1823. <FormItem
  1824. className="half-item"
  1825. {...formItemLayout}
  1826. label="任务类别"
  1827. >
  1828. <span>{this.state.cname}</span>
  1829. </FormItem>
  1830. <FormItem
  1831. className="half-item"
  1832. {...formItemLayout}
  1833. label="证书编号"
  1834. >
  1835. <span>{this.state.certificateNumber}</span>
  1836. </FormItem>
  1837. </div>
  1838. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1839. <div className="clearfix">
  1840. <h3 className="sub-title">联系信息</h3>
  1841. <FormItem
  1842. className="half-item"
  1843. {...formItemLayout}
  1844. label="客户名称"
  1845. >
  1846. <span>{this.state.userName}</span>
  1847. </FormItem>
  1848. <FormItem
  1849. className="half-item"
  1850. {...formItemLayout}
  1851. label="企业法人"
  1852. >
  1853. <span>{this.state.legalPerson}</span>
  1854. </FormItem>
  1855. <FormItem
  1856. className="half-item"
  1857. {...formItemLayout}
  1858. label="法人电话"
  1859. >
  1860. <span>{this.state.legalPersonTel}</span>
  1861. </FormItem>
  1862. <FormItem
  1863. className="half-item"
  1864. {...formItemLayout}
  1865. label="客户联系人"
  1866. >
  1867. <span>{this.state.contacts}</span>
  1868. </FormItem>
  1869. <FormItem
  1870. className="half-item"
  1871. {...formItemLayout}
  1872. label="联系人电话"
  1873. >
  1874. <span>{this.state.contactMobile}</span>
  1875. </FormItem>
  1876. <FormItem
  1877. className="half-item"
  1878. {...formItemLayout}
  1879. label="企业地址"
  1880. >
  1881. <span>
  1882. {getprovince(this.state.locationProvince)}/
  1883. {getprovince(this.state.locationCity)}/
  1884. {getprovince(this.state.locationArea)}
  1885. </span>
  1886. </FormItem>
  1887. <FormItem
  1888. className="half-item"
  1889. {...formItemLayout}
  1890. label=""
  1891. ></FormItem>
  1892. <FormItem className="half-item" {...formItemLayout} label="">
  1893. <span style={{ paddingLeft: "12em" }}>
  1894. {this.state.postalAddress}
  1895. </span>
  1896. </FormItem>
  1897. </div>
  1898. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  1899. <div className="clearfix">
  1900. <h3 className="sub-title">订单负责人信息</h3>
  1901. <FormItem
  1902. className="half-item"
  1903. {...formItemLayout}
  1904. label="负责人"
  1905. >
  1906. <span>
  1907. {this.state.salesmanName + "(" + this.state.depName + ")"}
  1908. </span>
  1909. </FormItem>
  1910. <FormItem
  1911. className="half-item"
  1912. {...formItemLayout}
  1913. label="负责人电话"
  1914. >
  1915. <span>{this.state.salesmanMobile}</span>
  1916. </FormItem>
  1917. <FormItem
  1918. className="half-item"
  1919. {...formItemLayout}
  1920. label="财务负责人"
  1921. >
  1922. <span>{this.state.financeName}</span>
  1923. </FormItem>
  1924. <FormItem
  1925. className="half-item"
  1926. {...formItemLayout}
  1927. label="财务负责人电话"
  1928. >
  1929. <span>{this.state.financeMobile}</span>
  1930. </FormItem>
  1931. </div>
  1932. <div className="clearfix" style={{ marginTop: "10px" }}>
  1933. <FormItem
  1934. labelCol={{ span: 3 }}
  1935. wrapperCol={{ span: 18 }}
  1936. label="附件"
  1937. >
  1938. <Upload
  1939. className="demandDetailShow-upload"
  1940. listType="picture-card"
  1941. fileList={this.state.attachmentUrl}
  1942. onPreview={(file) => {
  1943. this.setState({
  1944. previewImage: file.url || file.thumbUrl,
  1945. previewVisible: true,
  1946. });
  1947. }}
  1948. ></Upload>
  1949. <Modal
  1950. maskClosable={false}
  1951. footer={null}
  1952. visible={this.state.previewVisible}
  1953. onCancel={() => {
  1954. this.setState({ previewVisible: false });
  1955. }}
  1956. >
  1957. <img
  1958. alt=""
  1959. style={{ width: "100%" }}
  1960. src={this.state.previewImage || ""}
  1961. />
  1962. </Modal>
  1963. </FormItem>
  1964. </div>
  1965. <div className="clearfix">
  1966. <FormItem
  1967. labelCol={{ span: 3 }}
  1968. wrapperCol={{ span: 16 }}
  1969. label="备注"
  1970. >
  1971. <span>{this.state.taskComment}</span>
  1972. </FormItem>
  1973. </div>
  1974. <div className="clearfix">
  1975. <FormItem
  1976. labelCol={{ span: 3 }}
  1977. wrapperCol={{ span: 16 }}
  1978. label="订单留言"
  1979. >
  1980. <span>{this.state.orderRemarks}</span>
  1981. </FormItem>
  1982. </div>
  1983. <div className="clearfix">
  1984. <FormItem
  1985. labelCol={{ span: 3 }}
  1986. wrapperCol={{ span: 16 }}
  1987. label=""
  1988. >
  1989. <Button
  1990. style={{ marginLeft: 500 }}
  1991. onClick={this.getOrderLog}
  1992. >
  1993. 查看订单日志
  1994. </Button>
  1995. </FormItem>
  1996. </div>
  1997. <OrderRiZi
  1998. dataSourcerizhi={this.state.dataSourceY}
  1999. closeOrderLog={this.closeOrderLog}
  2000. visible={this.state.avisible}
  2001. loading={this.state.loading}
  2002. />
  2003. <div className="clearfix">
  2004. <h3 className="sub-title">项目申报进度</h3>
  2005. <FormItem
  2006. className="half-item"
  2007. {...formItemLayout}
  2008. label="申报批次"
  2009. >
  2010. <span>{this.state.declarationBatch}</span>
  2011. </FormItem>
  2012. <FormItem
  2013. className="half-item"
  2014. {...formItemLayout}
  2015. label="启动时间"
  2016. >
  2017. <span>{this.state.startDate}</span>
  2018. </FormItem>
  2019. <FormItem
  2020. className="half-item"
  2021. {...formItemLayout}
  2022. label="软著派单数量"
  2023. >
  2024. <span>{this.state.commodityQuantity}</span>
  2025. </FormItem>
  2026. <div className="patent-table patent-table-center">
  2027. <Spin spinning={this.state.loading}>
  2028. <Table
  2029. columns={this.state.ContactsLists}
  2030. dataSource={this.state.contactList}
  2031. pagination={false}
  2032. bordered
  2033. size="small"
  2034. />
  2035. </Spin>
  2036. </div>
  2037. </div>
  2038. <div className="clearfix">
  2039. <h3 className="sub-title">项目业务</h3>
  2040. <div className="patent-table">
  2041. <Spin spinning={this.state.loading}>
  2042. <Table
  2043. columns={this.state.columnsX}
  2044. dataSource={this.state.dataSourceX}
  2045. pagination={this.state.paginations}
  2046. onRowClick={this.tableRowClickX}
  2047. bordered
  2048. size="small"
  2049. />
  2050. </Spin>
  2051. </div>
  2052. </div>
  2053. </TabPane>
  2054. {!this.props.isZxs || (this.state.isHuiyuan && this.props.isZxs) ? (
  2055. <TabPane tab="订单详情" key="2">
  2056. <Spin spinning={this.state.loading}>
  2057. <OrderDetail
  2058. orderData={this.state.orderData}
  2059. getOrderLog={this.getOrderLog}
  2060. dataSourceX={this.state.dataSourceX}
  2061. contactList={this.state.jiedian}
  2062. orderNo={this.state.orderNo}
  2063. totalCui={this.state.totalCui}
  2064. contactListNew={this.state.jiedianNew}
  2065. pictureUrl={this.state.contractPictureUrl}
  2066. />
  2067. </Spin>
  2068. </TabPane>
  2069. ) : (
  2070. ""
  2071. )}
  2072. </Tabs>
  2073. </Modal>
  2074. <Modal
  2075. width="800px"
  2076. visible={this.state.visibleA}
  2077. onCancel={this.visitCancelA}
  2078. title="操作日志"
  2079. footer=""
  2080. className="admin-desc-content"
  2081. >
  2082. <div className="patent-table patent-table-center">
  2083. <Spin spinning={this.state.loading}>
  2084. <Table
  2085. columns={this.state.columnsA}
  2086. dataSource={this.state.dataSourceA}
  2087. pagination={false}
  2088. bordered
  2089. size="small"
  2090. />
  2091. </Spin>
  2092. </div>
  2093. </Modal>
  2094. {this.state.resVisible ? (
  2095. <ResolutionDetail
  2096. cancel={this.resCancel}
  2097. detail={this.state.resRecord}
  2098. visible={this.state.resVisible}
  2099. id={this.state.resRecord.orderNo}
  2100. />
  2101. ) : (
  2102. ""
  2103. )}
  2104. </div>
  2105. );
  2106. },
  2107. });
  2108. export default Task;