taskQuery.jsx 71 KB

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