taskQuery.jsx 70 KB

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