taskQuery.jsx 71 KB

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