taskAssignment.jsx 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584
  1. import React from "react";
  2. import $ from "jquery/src/ajax";
  3. import "@/manageCenter/financialManage/distribute/public.less";
  4. import { Button, Form, Input, Select, Spin, Table, message, Modal, Tabs, Tag, Tooltip } from "antd";
  5. import Assign from "@/manageCenter/publicComponent/assign";
  6. import ResolutionDetail from "@/resolutionDetail"
  7. import OrderDetail from "../../order/orderNew/changeComponent/orderDetail";
  8. import OrderRiZi from "@/orderRiZi.jsx";
  9. import {
  10. getProcessStatus,
  11. getLiquidationStatus,
  12. getApprovedState,
  13. splitUrl,
  14. getProjectName,
  15. getboutique,
  16. ShowModal
  17. } from "@/tools";
  18. import ShowModalDiv from "@/showModal.jsx";
  19. import ResolutionPro from "./resolutionPro"
  20. import { ChooseList } from "../../order/orderNew/chooseList";
  21. import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
  22. import NewEditProject from "../../../common/projectOperation/newEditProject";
  23. import OrderItemStatus from "../../../common/orderItemStatus";
  24. import EnterpriseNameChange from "../../../common/enterpriseNameChange";
  25. import Cascaders from "../../../common/cascaders";
  26. const FormItem = Form.Item;
  27. const { TabPane } = Tabs
  28. const Task = React.createClass({
  29. loadData(pageNo) {
  30. this.state.data = [];
  31. this.setState({
  32. loading: true,
  33. });
  34. $.ajax({
  35. method: "get",
  36. dataType: "json",
  37. crossDomain: false,
  38. url: globalConfig.context + "/api/admin/orderProject/orderTaskList",
  39. data: {
  40. pageNo: pageNo || 1,
  41. pageSize: this.state.pagination.pageSize,
  42. specially: 1, //经理
  43. name: this.state.nameSearch, //客户名称
  44. orderNo: this.state.orderNoSearch, //订单编号
  45. taskId: this.state.taskNoSearch, //任务编号
  46. deps: this.state.departmenttSearch, //订单部门
  47. taskStatus: this.state.taskStatus, //任务状态
  48. adminName: this.state.adminName, //任务受理人
  49. },
  50. success: function (data) {
  51. ShowModal(this);
  52. let theArr = [];
  53. if (!data.data || !data.data.list) {
  54. if (data.error && data.error.length) {
  55. message.warning(data.error[0].message);
  56. }
  57. } else {
  58. for (let i = 0; i < data.data.list.length; i++) {
  59. let thisdata = data.data.list[i];
  60. if (thisdata.splitList) {
  61. thisdata.splitList.forEach((item) => {
  62. item.key = item.id;
  63. });
  64. }
  65. theArr.push({
  66. key: thisdata.id,
  67. orderNo: thisdata.orderNo, //订单编号
  68. id: thisdata.id, //任务ID
  69. taskName: thisdata.taskName, //名称
  70. cname: thisdata.cname, //项目品类
  71. receiverName: thisdata.receiverName, //受理人
  72. projectStatus: thisdata.projectStatus, //项目状态
  73. taskStatus: thisdata.taskStatus, //任务状态
  74. taskDate: thisdata.taskDate, //分配时间
  75. commodityQuantity: thisdata.commodityQuantity, //数量
  76. userName: thisdata.userName, //用户名
  77. depName: thisdata.depName, //部门名称
  78. splitStatus: thisdata.splitStatus, //拆分状态
  79. splitList: thisdata.splitList,
  80. patentTypeName: thisdata.patentTypeName,
  81. });
  82. }
  83. }
  84. this.state.pagination.current = data.data.pageNo;
  85. this.state.pagination.total = data.data.totalCount;
  86. if (data.data && data.data.list && !data.data.list.length) {
  87. this.state.pagination.current = 0;
  88. this.state.pagination.total = 0;
  89. }
  90. this.setState({
  91. dataSource: theArr,
  92. page: data.data.pageNo,
  93. pagination: this.state.pagination,
  94. });
  95. }.bind(this),
  96. }).always(
  97. function () {
  98. this.setState({
  99. loading: false,
  100. });
  101. }.bind(this)
  102. );
  103. },
  104. getInitialState() {
  105. return {
  106. orderData: [],
  107. orderNo: "",
  108. jiedian: [],
  109. jiedianNew: [],
  110. declarationBatch: 1,
  111. dataInfor: {},
  112. activeKey: "1",
  113. searchMore: true,
  114. assignVisible: false,
  115. releaseDate: [],
  116. roleName: "",
  117. boHuivisible: false,
  118. departmentArr: [],
  119. selectedRowKeys: [],
  120. selectedRows: [],
  121. paginations: false,
  122. loading: false,
  123. pagination: {
  124. defaultCurrent: 1,
  125. defaultPageSize: 10,
  126. showQuickJumper: true,
  127. pageSize: 10,
  128. onChange: function (page) {
  129. this.loadData(page);
  130. }.bind(this),
  131. showTotal: function (total) {
  132. return "共" + total + "条数据";
  133. },
  134. },
  135. columns: [
  136. {
  137. title: "编号",
  138. dataIndex: "id",
  139. key: "id",
  140. },
  141. {
  142. title: "项目名称",
  143. dataIndex: "taskName",
  144. key: "taskName",
  145. render: (text, record) => {
  146. return <span>{text}<span style={{ color: "red" }}>{record.patentTypeName}</span></span>
  147. }
  148. },
  149. {
  150. title: "订单编号",
  151. dataIndex: "orderNo",
  152. key: "orderNo",
  153. },
  154. {
  155. title: "业务类别",
  156. dataIndex: "cname",
  157. key: "cname",
  158. },
  159. {
  160. title: "客户名称",
  161. dataIndex: "userName",
  162. key: "userName",
  163. render: text => {
  164. return (
  165. <Tooltip title={text}>
  166. <div
  167. // style={{
  168. // maxWidth: '150px',
  169. // overflow: 'hidden',
  170. // textOverflow: "ellipsis",
  171. // whiteSpace: 'nowrap',
  172. // }}
  173. >{text}</div>
  174. </Tooltip>
  175. )
  176. }
  177. },
  178. {
  179. title: "项目状态",
  180. dataIndex: "projectStatus",
  181. key: "projectStatus",
  182. render: (text) => {
  183. return getProjectName(text);
  184. },
  185. },
  186. {
  187. title: "分配时间",
  188. dataIndex: "taskDate",
  189. key: "taskDate",
  190. },
  191. {
  192. title: "任务数量",
  193. dataIndex: "commodityQuantity",
  194. key: "commodityQuantity",
  195. render: (text, record) => {
  196. if (record.splitStatus == 1) {
  197. return (
  198. <span>
  199. {text}{" "}
  200. <Tag color="#108ee9" style={{ float: "right" }}>
  201. 已拆
  202. </Tag>
  203. </span>
  204. );
  205. } else {
  206. return text;
  207. }
  208. },
  209. },
  210. {
  211. title: "订单部门",
  212. dataIndex: "depName",
  213. key: "depName",
  214. },
  215. {
  216. title: "操作",
  217. dataIndex: "caozuo",
  218. key: "caouzo",
  219. render: (text, record) => {
  220. return (
  221. <div>
  222. <Button
  223. type="primary"
  224. style={{ margin: "0 10px" }}
  225. disabled={record.splitStatus == 1 ? true : false}
  226. onClick={(e) => {
  227. e.stopPropagation(), this.evaluate(record, "咨询师经理");
  228. }}
  229. >
  230. 转交
  231. </Button>
  232. <Button
  233. type="primary"
  234. style={{ margin: "0 10px" }}
  235. disabled={record.splitStatus == 1 ? true : false}
  236. onClick={(e) => {
  237. e.stopPropagation(), this.evaluate(record, "咨询师");
  238. }}
  239. >
  240. 分配任务
  241. </Button>
  242. {record.splitStatus == 0 ? (
  243. <Button
  244. type="primary"
  245. style={{ margin: "0 10px" }}
  246. onClick={(e) => {
  247. e.stopPropagation();
  248. this.setState({
  249. resolutionVisible: true,
  250. resolutionName: record.taskName,
  251. resolutionNumber: record.commodityQuantity,
  252. resolutionId: record.id,
  253. });
  254. }}
  255. >
  256. 拆分项目
  257. </Button>
  258. ) : (
  259. ""
  260. )}
  261. </div>
  262. );
  263. },
  264. },
  265. ],
  266. dataSource: [],
  267. resolutionVisible: false,
  268. searchTime: [],
  269. columnsX: [
  270. {
  271. title: "业务项目名称",
  272. dataIndex: "commodityName",
  273. key: "commodityName",
  274. render: (text, record) => {
  275. return <span>
  276. {text}<span style={{ color: "red" }}>{record.patentTypeName}</span>{"-" + record.id}
  277. <div>
  278. {record.cSort == 6 && record.projectType == 1 && <span>(含{record.htMember == 1 ? '高新会员&' : ''}{record.additionalDeduction == 1 ? '加计扣除&' : ''}{record.rdAwardsubsidy == 1 ? '研发奖补' : ''})</span>}
  279. {record.cSort == 6 && ([0, 3].indexOf(record.projectType) > -1) && <span>(仅提供单边会员服务)</span>}
  280. {record.cSort == 6 && record.projectType == 2 && <span>(仅填报表,仅咨询,不出备查资料)</span>}
  281. {record.cSort == 3 && <span>{record.technologyProjectType==0?'(简易项目)':record.technologyProjectType==1?'(市区级)':record.technologyProjectType==2?'(省级)':record.technologyProjectType==3?'(国家级)':''}</span>}
  282. {record.cSort == 8 ? (record.type != 2 && record.patentType == 1) ? <span>(变更)</span> : <span>{record.ordinaryRisk == 0 ? '(普通申请)' : record.ordinaryRisk == 1 ? '(风险代理)' : ''}</span> : ""}
  283. {record.type == 2 && <span>({record.days == 0 ? '普通' : record.days == 1 ? '加急' : ''}{record.scheme == 0 ? '&无方案' : record.scheme == 1 ? '&有方案' : ''})</span>}
  284. </div>
  285. </span>
  286. }
  287. },
  288. {
  289. title: "项目类别",
  290. dataIndex: "cname",
  291. key: "cname",
  292. },
  293. {
  294. title: "项目数量",
  295. dataIndex: "commodityQuantity",
  296. key: "commodityQuantity",
  297. render: (text, record) => {
  298. if (record.splitStatus == 1) {
  299. return (
  300. <span>
  301. {text}{" "}
  302. {/* <Tag
  303. color="#108ee9"
  304. onClick={(e) => {
  305. e.stopPropagation();
  306. this.showRes(record);
  307. }}
  308. >
  309. 已拆
  310. </Tag> */}
  311. </span>
  312. );
  313. } else {
  314. return text;
  315. }
  316. },
  317. },
  318. {
  319. title: "金额(万元)",
  320. dataIndex: "commodityPrice",
  321. key: "commodityPrice",
  322. },
  323. {
  324. title: "负责人",
  325. dataIndex: "contacts",
  326. key: "contacts",
  327. },
  328. {
  329. title: "负责人电话",
  330. dataIndex: "contactsMobile",
  331. key: "contactsMobile",
  332. },
  333. {
  334. title: "主要项目",
  335. dataIndex: "main",
  336. key: "main",
  337. render: (text) => {
  338. return text ? "是" : "否";
  339. },
  340. },
  341. {
  342. title: "总年限",
  343. dataIndex: "yearSum",
  344. key: "yearSum",
  345. render: (text, record) => {
  346. return (
  347. <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
  348. );
  349. }
  350. },
  351. {
  352. title: "年限",
  353. dataIndex: "serviceLife",
  354. key: "serviceLife",
  355. render: (text, record) => {
  356. return (
  357. <div>{!!text && JSON.parse(text).toString()}</div>
  358. );
  359. }
  360. },
  361. {
  362. title: "本次派单",
  363. dataIndex: "serviceYear",
  364. key: "serviceYear",
  365. render: (text, record) => {
  366. return (
  367. <div>{!text ? "" : text}</div>
  368. );
  369. }
  370. },
  371. {
  372. title: "项目说明",
  373. dataIndex: "taskComment",
  374. key: "taskComment",
  375. render: (text) => {
  376. return (
  377. <Tooltip title={text}>
  378. <div
  379. style={{
  380. width: 100,
  381. overflow: "hidden",
  382. whiteSpace: "nowrap",
  383. textOverflow: "ellipsis",
  384. }}
  385. >{text}</div>
  386. </Tooltip>
  387. )
  388. },
  389. },
  390. ],
  391. dataSourceX: [],
  392. resVisible: false,
  393. };
  394. },
  395. /* 分派 */
  396. evaluate(record, nub) {
  397. this.state.assignData = record;
  398. this.setState(
  399. {
  400. nub,
  401. },
  402. () => {
  403. this.setState({
  404. assignVisible: true,
  405. });
  406. }
  407. );
  408. },
  409. componentWillMount() {
  410. // this.departmentList();
  411. this.loadData();
  412. },
  413. tableRowClick(record) {
  414. this.state.RowData = record;
  415. this.setState({
  416. visible: true,
  417. });
  418. this.xiangqing(record.orderNo);
  419. this.xiangmu(record.orderNo);
  420. },
  421. // 拆分详细
  422. showRes(record) {
  423. this.setState({
  424. resVisible: true,
  425. resRecord: record,
  426. });
  427. },
  428. resCancel() {
  429. this.setState({
  430. resVisible: false,
  431. });
  432. },
  433. //订单详情
  434. xiangqing(orderNos) {
  435. $.ajax({
  436. method: "get",
  437. dataType: "json",
  438. crossDomain: false,
  439. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  440. data: {
  441. orderNo: orderNos,
  442. },
  443. success: function (data) {
  444. if (data.error.length || data.data.list == "") {
  445. if (data.error && data.error.length) {
  446. message.warning(data.error[0].message);
  447. }
  448. } else {
  449. let thisdata = data.data;
  450. this.setState({
  451. orderUid: thisdata.uid,
  452. orderNo: thisdata.orderNo, //订单编号
  453. contractNo: thisdata.contractNo, //合同编号
  454. userName: thisdata.userName, //客户名称
  455. signDate: thisdata.signDate, //签单时间
  456. examineName: thisdata.examineName,
  457. processStatus: thisdata.processStatus, //流程状态
  458. liquidationStatus: thisdata.liquidationStatus, //结算状态
  459. contacts: thisdata.contacts, //企业联系人
  460. contactMobile: thisdata.contactMobile, //联系人电话
  461. legalPerson: thisdata.legalPerson, //法人
  462. legalPersonTel: thisdata.legalPersonTel, //法人电话
  463. firstAmount: thisdata.firstAmount, //签单金额
  464. totalAmount: thisdata.totalAmount, //首付金额
  465. approval: thisdata.approval, //特批状态
  466. settlementAmount: thisdata.settlementAmount, //已收款项
  467. orderRemarks: thisdata.orderRemarks, //订单留言
  468. orgCodeUrl: thisdata.contractPictureUrl
  469. ? splitUrl(
  470. thisdata.contractPictureUrl,
  471. ",",
  472. globalConfig.avatarHost + "/upload"
  473. )
  474. : [], //图片地址
  475. salesmanName: thisdata.salesmanName, //营销员名称
  476. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  477. financeName: thisdata.financeName, //财务名称
  478. financeMobile: thisdata.financeMobile, //财务电话
  479. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  480. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  481. nowFinance: thisdata.nowFinance, //财务名称
  482. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  483. depName: thisdata.depName, //订单部门
  484. deleteSign: thisdata.deleteSign,
  485. });
  486. }
  487. }.bind(this),
  488. }).always(
  489. function () {
  490. this.setState({
  491. loading: false,
  492. });
  493. }.bind(this)
  494. );
  495. },
  496. //项目列表
  497. xiangmu(orderNos) {
  498. $.ajax({
  499. method: "get",
  500. dataType: "json",
  501. crossDomain: false,
  502. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  503. data: {
  504. orderNo: orderNos,
  505. },
  506. success: function (data) {
  507. let theArr = [];
  508. if (data.error.length || data.data.list == "") {
  509. if (data.error && data.error.length) {
  510. message.warning(data.error[0].message);
  511. }
  512. } else {
  513. for (let i = 0; i < data.data.length; i++) {
  514. let thisdata = data.data[i];
  515. thisdata.key = i;
  516. theArr.push(thisdata);
  517. }
  518. }
  519. this.setState({
  520. dataSourceX: theArr,
  521. });
  522. }.bind(this),
  523. }).always(
  524. function () {
  525. this.setState({
  526. loading: false,
  527. });
  528. }.bind(this)
  529. );
  530. },
  531. //关闭详情
  532. visitCancel() {
  533. this.setState({
  534. visible: false,
  535. activeKey: "1",
  536. });
  537. this.loadData(this.state.page);
  538. },
  539. visitOk() {
  540. this.setState({
  541. visible: false,
  542. });
  543. this.loadData(this.state.page);
  544. },
  545. closeDesc(e, s) {
  546. this.state.showDesc = e;
  547. if (s) {
  548. this.loadData(this.state.page);
  549. }
  550. },
  551. closeAssign(e, s) {
  552. this.state.roleName = "";
  553. this.state.assignVisible = e;
  554. if (s) {
  555. this.loadData(this.state.page);
  556. }
  557. },
  558. nextCancel() {
  559. this.setState({
  560. addnextVisible: false,
  561. displayFees: "none",
  562. officialCost: "", //是否有官费
  563. costReduction: "", //是否有费减
  564. });
  565. },
  566. //点击打卡项目详情
  567. tableRowClickX(record) {
  568. if (record.type == "1") {
  569. this.setState({
  570. displayFees: "block",
  571. costReduction: record.costReduction,
  572. officialCost: record.officialCost,
  573. });
  574. } else {
  575. this.setState({
  576. displayFees: "none",
  577. });
  578. }
  579. this.setState({
  580. jid: record.id, //项目ID
  581. kid: record.commodityId, //商品ID
  582. commodityName: record.commodityName, //金额
  583. commodityPrice: record.commodityPrice, //金额
  584. commodityQuantity: record.commodityQuantity, //数量
  585. taskComment: record.taskComment, //备注
  586. main: record.main.toString(), //是否为主要
  587. addnextVisible: true,
  588. dataInfor: record,
  589. addState: 0,
  590. });
  591. },
  592. search() {
  593. this.loadData();
  594. },
  595. reset() {
  596. this.state.nameSearch = "";
  597. this.state.releaseDate = [];
  598. this.state.orderNoSearch = "";
  599. this.state.taskNoSearch = "";
  600. this.state.departmenttSearch = undefined;
  601. this.state.distribution = undefined;
  602. this.Cascaders.empty();
  603. this.loadData();
  604. },
  605. searchSwitch() {
  606. this.setState({
  607. searchMore: !this.state.searchMore,
  608. });
  609. },
  610. //部门
  611. departmentList() {
  612. this.setState({
  613. loading: true,
  614. });
  615. $.ajax({
  616. method: "get",
  617. dataType: "json",
  618. crossDomain: false,
  619. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  620. data: {},
  621. success: function (data) {
  622. let thedata = data.data;
  623. let theArr = [];
  624. if (!thedata) {
  625. if (data.error && data.error.length) {
  626. message.warning(data.error[0].message);
  627. }
  628. thedata = {};
  629. } else {
  630. thedata.map(function (item, index) {
  631. theArr.push({
  632. key: index,
  633. name: item.name,
  634. id: item.id,
  635. });
  636. });
  637. }
  638. this.setState({
  639. departmentArr: theArr,
  640. });
  641. }.bind(this),
  642. }).always(
  643. function () {
  644. this.setState({
  645. loading: false,
  646. });
  647. }.bind(this)
  648. );
  649. },
  650. resolutionCancel() {
  651. this.setState({
  652. resolutionVisible: false,
  653. });
  654. },
  655. rizhi() {
  656. this.setState({
  657. loading: true,
  658. });
  659. $.ajax({
  660. method: "get",
  661. dataType: "json",
  662. crossDomain: false,
  663. url: "/api/admin/newOrder/selectOrderLog",
  664. data: {
  665. orderNo: this.state.orderNo,
  666. },
  667. success: function (data) {
  668. let theArr = [];
  669. let thisData = data.data;
  670. if (!thisData.length) {
  671. if (data.error && data.error.length) {
  672. message.warning(data.error[0].message);
  673. }
  674. thisData = {};
  675. } else {
  676. for (let i = 0; i < data.data.length; i++) {
  677. let thisdata = data.data[i];
  678. theArr.push({
  679. processName: thisdata.processName,
  680. adminName: thisdata.adminName,
  681. createDate: thisdata.createDate,
  682. remarks: thisdata.remarks,
  683. });
  684. }
  685. }
  686. this.setState({
  687. dataSourceY: theArr,
  688. });
  689. }.bind(this),
  690. }).always(
  691. function () {
  692. this.setState({
  693. loading: false,
  694. });
  695. }.bind(this)
  696. );
  697. },
  698. closeOrderLog() {
  699. this.setState({
  700. avisible: false,
  701. });
  702. },
  703. getOrderLog() {
  704. this.setState({
  705. avisible: true,
  706. });
  707. this.rizhi();
  708. },
  709. orderChange(key) {
  710. this.setState({
  711. activeKey: key,
  712. });
  713. if (key == 2) {
  714. this.orderDetailData(this.state.orderNo);
  715. this.xiangmu(this.state.orderNo);
  716. this.jiedian(this.state.orderNo);
  717. this.jiedianNew(this.state.orderNo);
  718. }
  719. },
  720. //节点列表
  721. jiedian(orderNos) {
  722. $.ajax({
  723. method: "get",
  724. dataType: "json",
  725. crossDomain: false,
  726. url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
  727. data: {
  728. orderNo: orderNos,
  729. },
  730. success: function (data) {
  731. let theArr = [];
  732. let thisData = [];
  733. if (data.error.length || data.data.list == "") {
  734. if (data.error && data.error.length) {
  735. message.warning(data.error[0].message);
  736. }
  737. } else {
  738. for (let i = 0; i < data.data.length; i++) {
  739. thisData = data.data[i];
  740. theArr.push({
  741. key: i,
  742. dunSubject: thisData.dunSubject
  743. ? thisData.dunSubject.toString()
  744. : "", //催款科目
  745. id: thisData.id, //节点Id
  746. money: thisData.money, //催款金额
  747. dunStatus: thisData.dunStatus, //催款状态
  748. });
  749. }
  750. this.setState({
  751. jiedian: theArr,
  752. });
  753. }
  754. }.bind(this),
  755. });
  756. },
  757. jiedianNew(orderNos) {
  758. $.ajax({
  759. method: "get",
  760. dataType: "json",
  761. crossDomain: false,
  762. url:
  763. globalConfig.context + "/api/admin/newOrderDun/selectListNewOrderDun",
  764. data: {
  765. orderNo: orderNos,
  766. },
  767. success: function (data) {
  768. if (data.error && data.error.length) {
  769. message.warning(data.error[0].message);
  770. } else {
  771. let theArr = [];
  772. let thisData = [];
  773. let arr = data.data || [];
  774. let totalCui = 0;
  775. for (let i = 0; i < arr.length; i++) {
  776. thisData = arr[i];
  777. totalCui += +thisData.money;
  778. theArr.push({
  779. key: i,
  780. dunSubject: thisData.dunSubject
  781. ? thisData.dunSubject.toString()
  782. : "", //催款科目
  783. id: thisData.id, //节点Id
  784. money: thisData.money, //催款金额
  785. // orderNo: record ? record.orderNo : this.props.datauser.orderNo,
  786. commodityName: thisData.commodityName,
  787. projectType: thisData.projectType,
  788. dunTypeName: thisData.dunTypeName,
  789. status: thisData.status,
  790. waitDay: thisData.waitDay,
  791. effectiveCount: thisData.effectiveCount,
  792. startDate: thisData.startDate,
  793. dunType: thisData.dunType,
  794. appropriationRatio: thisData.appropriationRatio,
  795. customizeName: thisData.customizeName,
  796. customizeTimes: thisData.customizeTimes,
  797. });
  798. }
  799. if (!totalCui) {
  800. totalCui = 0;
  801. }
  802. totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6);
  803. this.setState({
  804. jiedianNew: theArr,
  805. totalCui,
  806. });
  807. }
  808. }.bind(this),
  809. }).always(
  810. function () {
  811. this.setState({
  812. loading: false,
  813. });
  814. }.bind(this)
  815. );
  816. },
  817. orderDetailData(orderNos) {
  818. this.setState({
  819. loading: true,
  820. });
  821. $.ajax({
  822. method: "get",
  823. dataType: "json",
  824. crossDomain: false,
  825. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  826. data: {
  827. orderNo: orderNos,
  828. },
  829. success: function (data) {
  830. if (data.error.length || data.data.list == "") {
  831. if (data.error && data.error.length) {
  832. message.warning(data.error[0].message);
  833. this.setState({
  834. loading: false,
  835. });
  836. }
  837. } else {
  838. let thisdata = data.data;
  839. this.setState({
  840. orderUid: thisdata.uid,
  841. loading: false,
  842. userName: thisdata.userName,
  843. primaryOrderNo: thisdata.primaryOrder,
  844. additionalOrder: thisdata.additionalOrder,
  845. contractNo: thisdata.contractNo,
  846. orderData: thisdata,
  847. isAddition: thisdata.additionalOrder ? true : false,
  848. contractPictureUrl: thisdata.contractPictureUrl
  849. ? splitUrl(
  850. thisdata.contractPictureUrl,
  851. ",",
  852. globalConfig.avatarHost + "/upload"
  853. )
  854. : [],
  855. deleteSign: thisdata.deleteSign,
  856. });
  857. }
  858. }.bind(this),
  859. });
  860. },
  861. changeList(arr) {
  862. const newArr = [];
  863. this.state.columns.forEach(item => {
  864. arr.forEach(val => {
  865. if (val === item.title) {
  866. newArr.push(item);
  867. }
  868. });
  869. });
  870. this.setState({
  871. changeList: newArr
  872. });
  873. },
  874. // 可展开颜色不同
  875. addRowColor(record) {
  876. if (!!record.splitList && record.splitList.length > 0) {
  877. return 'light'
  878. } else {
  879. return 'dark'
  880. }
  881. },
  882. render() {
  883. const expandedRowRender = (e) => {
  884. const data = e.splitList;
  885. let columns = [];
  886. if (e.splitList instanceof Array && e.splitList.length) {
  887. columns = [
  888. {
  889. title: "编号",
  890. dataIndex: "splitSuper",
  891. key: "splitSuper",
  892. render: (text, record) => {
  893. return text + "-" + record.splitId;
  894. },
  895. },
  896. {
  897. title: "项目名称",
  898. dataIndex: "taskName",
  899. key: "taskName",
  900. render: (text, record) => {
  901. return <span>{text}<span style={{ color: "red" }}>{record.patentTypeName}</span></span>
  902. }
  903. },
  904. {
  905. title: "订单编号",
  906. dataIndex: "orderNo",
  907. key: "orderNo",
  908. },
  909. {
  910. title: "业务类别",
  911. dataIndex: "cname",
  912. key: "cname",
  913. },
  914. {
  915. title: "客户名称",
  916. dataIndex: "userName",
  917. key: "userName",
  918. render: text => {
  919. return (
  920. <Tooltip title={text}>
  921. <div
  922. // style={{
  923. // maxWidth: '150px',
  924. // overflow: 'hidden',
  925. // textOverflow: "ellipsis",
  926. // whiteSpace: 'nowrap',
  927. // }}
  928. >{text}</div>
  929. </Tooltip>
  930. )
  931. }
  932. },
  933. {
  934. title: "项目状态",
  935. dataIndex: "projectStatus",
  936. key: "projectStatus",
  937. render: (text) => {
  938. return getProjectName(text);
  939. },
  940. },
  941. {
  942. title: "分配时间",
  943. dataIndex: "taskDate",
  944. key: "taskDate",
  945. },
  946. {
  947. title: "任务数量",
  948. dataIndex: "commodityQuantity",
  949. key: "commodityQuantity",
  950. },
  951. {
  952. title: "订单部门",
  953. dataIndex: "depName",
  954. key: "depName",
  955. },
  956. {
  957. title: "拆分操作人",
  958. dataIndex: "splitAname",
  959. key: "splitAname",
  960. },
  961. {
  962. title: "项目负责人",
  963. dataIndex: "receiverName",
  964. key: "receiverName",
  965. },
  966. {
  967. title: "拆分时间",
  968. dataIndex: "splitTimes",
  969. key: "splitTimes",
  970. },
  971. {
  972. title: "操作",
  973. dataIndex: "caozuo",
  974. key: "caouzo",
  975. render: (text, record) => {
  976. return (
  977. <div>
  978. <Button
  979. type="primary"
  980. style={{ margin: "0 10px" }}
  981. disabled={record.distributeSign == 1 ? true : false}
  982. onClick={(e) => {
  983. e.stopPropagation(), this.evaluate(record, "咨询师经理");
  984. }}
  985. >
  986. 转交
  987. </Button>
  988. <Button
  989. type="primary"
  990. style={{ margin: "0 10px" }}
  991. disabled={record.distributeSign == 1 ? true : false}
  992. onClick={(e) => {
  993. e.stopPropagation(), this.evaluate(record, "咨询师");
  994. }}
  995. >
  996. 分配任务
  997. </Button>
  998. </div>
  999. );
  1000. },
  1001. },
  1002. ];
  1003. return (
  1004. <Table
  1005. columns={columns}
  1006. dataSource={data}
  1007. pagination={false}
  1008. onRowClick={this.tableRowClick.bind(this)}
  1009. />
  1010. );
  1011. } else {
  1012. columns = [];
  1013. return (
  1014. <p style={{ fontWeight: "bold", color: "red", textAlign: "center" }}>
  1015. 此项目暂未拆分
  1016. </p>
  1017. );
  1018. }
  1019. };
  1020. const expandedRowRenderVip = (e) => {
  1021. const data = e.splitList;
  1022. let columns = [];
  1023. if (data instanceof Array && data.length) {
  1024. if (e.cSort == 6) {
  1025. columns = [
  1026. {
  1027. title: "负责人",
  1028. dataIndex: "receiverName",
  1029. key: "receiverName",
  1030. },
  1031. {
  1032. title: "负责人电话",
  1033. dataIndex: "receiverMobile",
  1034. key: "receiverMobile",
  1035. },
  1036. {
  1037. title: "会员负责人",
  1038. dataIndex: "projectMemberName",
  1039. key: "projectMemberName",
  1040. },
  1041. {
  1042. title: "项目状态",
  1043. dataIndex: "projectStatus",
  1044. key: "projectStatus",
  1045. render: (text) => {
  1046. return getProjectName(text);
  1047. },
  1048. },
  1049. {
  1050. title: "本次派单",
  1051. dataIndex: "serviceYear",
  1052. key: "serviceYear",
  1053. },
  1054. {
  1055. title: "项目说明",
  1056. dataIndex: "taskComment",
  1057. key: "taskComment",
  1058. render: (text) => {
  1059. return (
  1060. <Tooltip title={text}>
  1061. <div
  1062. // style={{
  1063. // width: 100,
  1064. // overflow: "hidden",
  1065. // whiteSpace: "nowrap",
  1066. // textOverflow: "ellipsis",
  1067. // }}
  1068. >{text}</div>
  1069. </Tooltip>
  1070. )
  1071. },
  1072. },
  1073. ];
  1074. } else {
  1075. columns = [
  1076. {
  1077. title: "子项目名称",
  1078. dataIndex: "taskName",
  1079. key: "taskName"
  1080. },
  1081. {
  1082. title: "子项目数量",
  1083. dataIndex: "commodityQuantity",
  1084. key: "commodityQuantity"
  1085. },
  1086. {
  1087. title: "拆分操作人",
  1088. dataIndex: "splitAname",
  1089. key: "splitAname"
  1090. },
  1091. {
  1092. title: "项目负责人",
  1093. dataIndex: "receiverName",
  1094. key: "receiverName"
  1095. },
  1096. {
  1097. title: "拆分时间",
  1098. dataIndex: "splitTimes",
  1099. key: "splitTimes"
  1100. }
  1101. ]
  1102. }
  1103. return (
  1104. <Table
  1105. columns={columns}
  1106. dataSource={data}
  1107. pagination={false}
  1108. />
  1109. );
  1110. } else {
  1111. columns = [];
  1112. return (
  1113. <p
  1114. style={{ fontWeight: "bold", color: "red", textAlign: "center" }}
  1115. >
  1116. {e.cSort == 6 ? "暂无派单" : "此项目暂未拆分"}
  1117. </p>
  1118. );
  1119. }
  1120. };
  1121. const rowSelection = {
  1122. selectedRowKeys: this.state.selectedRowKeys,
  1123. onChange: (selectedRowKeys, selectedRows) => {
  1124. this.setState({
  1125. selectedRows: selectedRows.slice(-1),
  1126. selectedRowKeys: selectedRowKeys.slice(-1),
  1127. });
  1128. },
  1129. };
  1130. const formItemLayout = {
  1131. labelCol: { span: 8 },
  1132. wrapperCol: { span: 14 },
  1133. };
  1134. let departmentArr = this.state.departmentArr || [];
  1135. return (
  1136. <div className="user-content">
  1137. {this.state.resVisible ? (
  1138. <ResolutionDetail
  1139. cancel={this.resCancel}
  1140. detail={this.state.resRecord}
  1141. visible={this.state.resVisible}
  1142. id={this.state.resRecord.orderNo}
  1143. />
  1144. ) : (
  1145. ""
  1146. )}
  1147. <ResolutionPro
  1148. resolutionVisible={this.state.resolutionVisible}
  1149. number={this.state.resolutionNumber}
  1150. name={this.state.resolutionName}
  1151. cancel={this.resolutionCancel}
  1152. id={this.state.resolutionId}
  1153. loadData={this.loadData}
  1154. />
  1155. <ShowModalDiv ShowModal={this.state.showModal} onClose={() => { this.setState({ showModal: false }) }} />
  1156. <div className="content-title" style={{ marginBottom: 10 }}>
  1157. <span style={{ fontWeight: 900, fontSize: 16 }}>任务派单</span>
  1158. </div>
  1159. <Tabs defaultActiveKey="1" onChange={this.callback} className="test">
  1160. <TabPane tab="搜索" key="1">
  1161. <div className="user-search">
  1162. <Input
  1163. placeholder="订单编号"
  1164. value={this.state.orderNoSearch}
  1165. onChange={(e) => {
  1166. this.setState({ orderNoSearch: e.target.value });
  1167. }}
  1168. />
  1169. <Input
  1170. placeholder="客户名称"
  1171. value={this.state.nameSearch}
  1172. style={{ marginLeft: 10 }}
  1173. onChange={(e) => {
  1174. this.setState({ nameSearch: e.target.value });
  1175. }}
  1176. />
  1177. <Input
  1178. placeholder="任务编号"
  1179. value={this.state.taskNoSearch}
  1180. onChange={(e) => {
  1181. this.setState({ taskNoSearch: e.target.value });
  1182. }}
  1183. />
  1184. <Cascaders
  1185. ref={ref => this.Cascaders = ref}
  1186. placeholder="选择部门"
  1187. height={28}
  1188. onSel={(e) => {
  1189. this.setState({
  1190. departmenttSearch: JSON.stringify(e)
  1191. })
  1192. }}
  1193. />
  1194. {/* <Select
  1195. placeholder="选择部门"
  1196. style={{ width: 200, marginRight: "10px" }}
  1197. value={this.state.departmenttSearch}
  1198. onChange={(e) => {
  1199. this.setState({ departmenttSearch: e });
  1200. }}
  1201. >
  1202. {departmentArr.map(function (item) {
  1203. return (
  1204. <Select.Option key={item.id}>{item.name}</Select.Option>
  1205. );
  1206. })}
  1207. </Select> */}
  1208. <Button type="primary" onClick={this.search}>
  1209. 搜索
  1210. </Button>
  1211. <Button onClick={this.reset}>重置</Button>
  1212. {/* <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
  1213. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  1214. <span>订单时间 :</span>
  1215. <RangePicker
  1216. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  1217. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  1218. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  1219. </div> */}
  1220. </div>
  1221. </TabPane>
  1222. <TabPane tab="更改表格显示数据" key="2">
  1223. <div style={{ marginLeft: 10 }}>
  1224. <ChooseList
  1225. columns={this.state.columns}
  1226. changeFn={this.changeList}
  1227. changeList={this.state.changeList}
  1228. top={55}
  1229. margin={11}
  1230. />
  1231. </div>
  1232. </TabPane>
  1233. </Tabs>
  1234. <div className="patent-table">
  1235. <Spin spinning={this.state.loading}>
  1236. <Table
  1237. columns={
  1238. this.state.changeList
  1239. ? this.state.changeList
  1240. : this.state.columns
  1241. }
  1242. dataSource={this.state.dataSource}
  1243. expandedRowRender={expandedRowRender}
  1244. // rowSelection={rowSelection}
  1245. pagination={this.state.pagination}
  1246. onRowClick={this.tableRowClick.bind(this)}
  1247. bordered
  1248. size="small"
  1249. />
  1250. </Spin>
  1251. </div>
  1252. <Assign
  1253. title="任务"
  1254. selApi={"/api/admin/orderProject/projectDistribution"}
  1255. data={this.state.assignData}
  1256. showDesc={this.state.assignVisible}
  1257. closeDesc={this.closeAssign.bind(this)}
  1258. fenpaiData={8}
  1259. type={this.state.nub == "咨询师经理" ? 1 : 2}
  1260. // 判断是转交按钮还是分配任务按钮
  1261. // chooseBtn={this.state.nub == "咨询师经理" ? true : false}
  1262. roleName={this.state.nub}
  1263. requestMethod={"post"}
  1264. />
  1265. <Modal
  1266. className="customeDetails"
  1267. footer=""
  1268. title=""
  1269. width="1200px"
  1270. visible={this.state.visible}
  1271. onOk={this.visitOk}
  1272. onCancel={this.visitCancel}
  1273. >
  1274. <Tabs activeKey={this.state.activeKey} onChange={this.orderChange} tabBarExtraContent={
  1275. <div style={{ fontWeight: 'bold', paddingRight: '15px' }}>
  1276. <OrderItemStatus deleteSign={this.state.deleteSign} />
  1277. </div>
  1278. }>
  1279. <TabPane tab="任务详情" key="1">
  1280. <Form
  1281. layout="horizontal"
  1282. onSubmit={this.handleSubmit}
  1283. id="demand-form"
  1284. style={{ paddingBottom: "40px" }}
  1285. >
  1286. <Spin spinning={this.state.loading}>
  1287. <div className="clearfix">
  1288. <FormItem
  1289. className="half-item"
  1290. {...formItemLayout}
  1291. label="订单编号"
  1292. >
  1293. <span>{this.state.orderNo}</span>
  1294. </FormItem>
  1295. <FormItem
  1296. className="half-item"
  1297. {...formItemLayout}
  1298. label="合同编号"
  1299. >
  1300. <span>{this.state.contractNo}</span>
  1301. </FormItem>
  1302. <FormItem
  1303. className="half-item"
  1304. {...formItemLayout}
  1305. label="客户名称"
  1306. >
  1307. <span>{this.state.userName}</span>
  1308. <EnterpriseNameChange
  1309. type='journal'
  1310. style={{ marginLeft: 10 }}
  1311. enterpriseId={this.state.orderUid} />
  1312. </FormItem>
  1313. <FormItem
  1314. className="half-item"
  1315. {...formItemLayout}
  1316. label="合同签订时间"
  1317. >
  1318. <span>{this.state.signDate}</span>
  1319. </FormItem>
  1320. <FormItem
  1321. className="half-item"
  1322. {...formItemLayout}
  1323. label="流程状态"
  1324. >
  1325. <span>{getProcessStatus(this.state.processStatus, this.state.examineName, this.state.approval)}</span>
  1326. </FormItem>
  1327. <FormItem
  1328. className="half-item"
  1329. {...formItemLayout}
  1330. label="结算状态"
  1331. >
  1332. <span>
  1333. {getLiquidationStatus(this.state.liquidationStatus)}
  1334. </span>
  1335. </FormItem>
  1336. <FormItem
  1337. className="half-item"
  1338. {...formItemLayout}
  1339. label="企业联系人"
  1340. >
  1341. <span>{this.state.contacts}</span>
  1342. </FormItem>
  1343. <FormItem
  1344. className="half-item"
  1345. {...formItemLayout}
  1346. label="联系人电话"
  1347. >
  1348. <span>{this.state.contactMobile}</span>
  1349. </FormItem>
  1350. <FormItem
  1351. className="half-item"
  1352. {...formItemLayout}
  1353. label="企业法人"
  1354. >
  1355. <span>{this.state.legalPerson}</span>
  1356. </FormItem>
  1357. <FormItem
  1358. className="half-item"
  1359. {...formItemLayout}
  1360. label="法人电话"
  1361. >
  1362. <span>{this.state.legalPersonTel}</span>
  1363. </FormItem>
  1364. <FormItem
  1365. className="half-item"
  1366. {...formItemLayout}
  1367. label="签单金额(万元)"
  1368. >
  1369. <span>{this.state.totalAmount}</span>
  1370. </FormItem>
  1371. <FormItem
  1372. className="half-item"
  1373. {...formItemLayout}
  1374. label="首付金额(万元)"
  1375. >
  1376. <span>{this.state.firstAmount}</span>
  1377. </FormItem>
  1378. <FormItem
  1379. className="half-item"
  1380. {...formItemLayout}
  1381. label="特批立项"
  1382. >
  1383. <span>{getApprovedState(this.state.approval)}</span>
  1384. </FormItem>
  1385. <FormItem
  1386. className="half-item"
  1387. {...formItemLayout}
  1388. label="已收款项(万元)"
  1389. >
  1390. <span>{this.state.settlementAmount}</span>
  1391. </FormItem>
  1392. <div className="clearfix">
  1393. <FormItem
  1394. labelCol={{ span: 4 }}
  1395. wrapperCol={{ span: 16 }}
  1396. label="订单留言"
  1397. >
  1398. <p style={{ width: 500, wordWrap: "break-word" }}>
  1399. {this.state.orderRemarks}
  1400. </p>
  1401. </FormItem>
  1402. </div>
  1403. <div className="clearfix">
  1404. <FormItem
  1405. className="half-item"
  1406. {...formItemLayout}
  1407. label="订单负责人"
  1408. >
  1409. <span>{this.state.salesmanName}</span>
  1410. </FormItem>
  1411. <FormItem
  1412. className="half-item"
  1413. {...formItemLayout}
  1414. label="订单负责人电话"
  1415. >
  1416. <span>{this.state.salesmanMobile}</span>
  1417. </FormItem>
  1418. <FormItem
  1419. className="half-item"
  1420. {...formItemLayout}
  1421. label="订单部门"
  1422. >
  1423. <span>{this.state.depName}</span>
  1424. </FormItem>
  1425. </div>
  1426. <div className="clearfix">
  1427. <FormItem
  1428. className="half-item"
  1429. {...formItemLayout}
  1430. label="当前财务负责人"
  1431. >
  1432. <span>{this.state.nowFinance}</span>
  1433. </FormItem>
  1434. <FormItem
  1435. className="half-item"
  1436. {...formItemLayout}
  1437. label="当前财务负责人电话"
  1438. >
  1439. <span>{this.state.nowFinanceMobile}</span>
  1440. </FormItem>
  1441. </div>
  1442. <div className="clearfix">
  1443. <FormItem
  1444. className="half-item"
  1445. {...formItemLayout}
  1446. style={{ opacity: ".5" }}
  1447. label="原订单负责人"
  1448. >
  1449. <span>{this.state.oldSalesmanName}</span>
  1450. </FormItem>
  1451. <FormItem
  1452. className="half-item"
  1453. {...formItemLayout}
  1454. style={{ opacity: ".5" }}
  1455. label="原订单负责人电话"
  1456. >
  1457. <span>{this.state.oldSalesmanMobile}</span>
  1458. </FormItem>
  1459. </div>
  1460. <div className="clearfix">
  1461. <FormItem
  1462. className="half-item"
  1463. {...formItemLayout}
  1464. style={{ opacity: ".5" }}
  1465. label="实际财务操作人"
  1466. >
  1467. <span>{this.state.financeName}</span>
  1468. </FormItem>
  1469. <FormItem
  1470. className="half-item"
  1471. {...formItemLayout}
  1472. style={{ opacity: ".5" }}
  1473. label="实际财务操作人电话"
  1474. >
  1475. <span>{this.state.financeMobile}</span>
  1476. </FormItem>
  1477. </div>
  1478. <div className="clearfix">
  1479. <FormItem
  1480. className="half-item"
  1481. {...formItemLayout}
  1482. label="订单留言"
  1483. >
  1484. <span>{this.state.orderRemarks}</span>
  1485. </FormItem>
  1486. <FormItem
  1487. className="half-item"
  1488. {...formItemLayout}
  1489. label=""
  1490. >
  1491. <Button onClick={this.getOrderLog}>查看订单日志</Button>
  1492. </FormItem>
  1493. </div>
  1494. <OrderRiZi
  1495. dataSourcerizhi={this.state.dataSourceY}
  1496. closeOrderLog={this.closeOrderLog}
  1497. visible={this.state.avisible}
  1498. loading={this.state.loading}
  1499. />
  1500. <div>
  1501. <span style={{ marginLeft: "50px", fontSize: "20px" }}>
  1502. 项目业务
  1503. </span>
  1504. {this.state.processStatus == 0 ? (
  1505. <Button
  1506. type="primary"
  1507. onClick={this.addDetailed}
  1508. style={{
  1509. float: "right",
  1510. marginRight: "50px",
  1511. marginBottom: "15px",
  1512. }}
  1513. >
  1514. 添加项目明细
  1515. </Button>
  1516. ) : (
  1517. ""
  1518. )}
  1519. </div>
  1520. <div className="patent-table">
  1521. <Spin spinning={this.state.loading}>
  1522. <Table
  1523. columns={this.state.columnsX}
  1524. dataSource={this.state.dataSourceX}
  1525. pagination={this.state.paginations}
  1526. onRowClick={this.tableRowClickX}
  1527. expandedRowRender={expandedRowRenderVip}
  1528. rowClassName={this.addRowColor}
  1529. bordered
  1530. size="small"
  1531. />
  1532. </Spin>
  1533. </div>
  1534. </div>
  1535. </Spin>
  1536. </Form>
  1537. </TabPane>
  1538. <TabPane tab="订单详情" key="2">
  1539. {
  1540. this.state.activeKey == 2 &&
  1541. <Spin spinning={this.state.loading}>
  1542. <OrderDetail
  1543. orderUid={this.state.orderUid}
  1544. orderData={this.state.orderData}
  1545. getOrderLog={this.getOrderLog}
  1546. dataSourceX={this.state.dataSourceX}
  1547. contactList={this.state.jiedian}
  1548. orderNo={this.state.orderNo}
  1549. totalCui={this.state.totalCui}
  1550. contactListNew={this.state.jiedianNew}
  1551. pictureUrl={this.state.contractPictureUrl}
  1552. />
  1553. </Spin>
  1554. }
  1555. </TabPane>
  1556. </Tabs>
  1557. </Modal>
  1558. {/* {this.state.addnextVisible && <ProjectDetailsReadOnly
  1559. infor={this.state.dataInfor}
  1560. visible={this.state.addnextVisible}
  1561. onCancel={this.nextCancel}
  1562. />} */}
  1563. {
  1564. // 项目业务详情
  1565. this.state.addnextVisible &&
  1566. <NewEditProject
  1567. readOnly={true}
  1568. visible={this.state.addnextVisible}
  1569. dataInfor={this.state.dataInfor}
  1570. onCancel={this.nextCancel}
  1571. />
  1572. }
  1573. </div>
  1574. );
  1575. },
  1576. });
  1577. export default Task;