taskAssignment.jsx 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599
  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, record) => {
  376. let textStr = text;
  377. return (
  378. <Tooltip title={textStr}>
  379. <div
  380. style={{
  381. width: 100,
  382. overflow: "hidden",
  383. whiteSpace: "nowrap",
  384. textOverflow: "ellipsis",
  385. }}
  386. >{textStr}</div>
  387. </Tooltip>
  388. )
  389. },
  390. },
  391. ],
  392. dataSourceX: [],
  393. resVisible: false,
  394. };
  395. },
  396. /* 分派 */
  397. evaluate(record, nub) {
  398. this.state.assignData = record;
  399. this.setState(
  400. {
  401. nub,
  402. },
  403. () => {
  404. this.setState({
  405. assignVisible: true,
  406. });
  407. }
  408. );
  409. },
  410. componentWillMount() {
  411. // this.departmentList();
  412. this.loadData();
  413. },
  414. tableRowClick(record) {
  415. this.state.RowData = record;
  416. this.setState({
  417. visible: true,
  418. });
  419. this.xiangqing(record.orderNo);
  420. this.xiangmu(record.orderNo);
  421. },
  422. // 拆分详细
  423. showRes(record) {
  424. this.setState({
  425. resVisible: true,
  426. resRecord: record,
  427. });
  428. },
  429. resCancel() {
  430. this.setState({
  431. resVisible: false,
  432. });
  433. },
  434. //订单详情
  435. xiangqing(orderNos) {
  436. $.ajax({
  437. method: "get",
  438. dataType: "json",
  439. crossDomain: false,
  440. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  441. data: {
  442. orderNo: orderNos,
  443. },
  444. success: function (data) {
  445. if (data.error.length || data.data.list == "") {
  446. if (data.error && data.error.length) {
  447. message.warning(data.error[0].message);
  448. }
  449. } else {
  450. let thisdata = data.data;
  451. this.setState({
  452. orderUid: thisdata.uid,
  453. orderNo: thisdata.orderNo, //订单编号
  454. contractNo: thisdata.contractNo, //合同编号
  455. userName: thisdata.userName, //客户名称
  456. signDate: thisdata.signDate, //签单时间
  457. examineName: thisdata.examineName,
  458. processStatus: thisdata.processStatus, //流程状态
  459. liquidationStatus: thisdata.liquidationStatus, //结算状态
  460. contacts: thisdata.contacts, //企业联系人
  461. contactMobile: thisdata.contactMobile, //联系人电话
  462. legalPerson: thisdata.legalPerson, //法人
  463. legalPersonTel: thisdata.legalPersonTel, //法人电话
  464. firstAmount: thisdata.firstAmount, //签单金额
  465. totalAmount: thisdata.totalAmount, //首付金额
  466. approval: thisdata.approval, //特批状态
  467. settlementAmount: thisdata.settlementAmount, //已收款项
  468. orderRemarks: thisdata.orderRemarks, //订单留言
  469. orgCodeUrl: thisdata.contractPictureUrl
  470. ? splitUrl(
  471. thisdata.contractPictureUrl,
  472. ",",
  473. globalConfig.avatarHost + "/upload"
  474. )
  475. : [], //图片地址
  476. salesmanName: thisdata.salesmanName, //营销员名称
  477. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  478. financeName: thisdata.financeName, //财务名称
  479. financeMobile: thisdata.financeMobile, //财务电话
  480. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  481. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  482. nowFinance: thisdata.nowFinance, //财务名称
  483. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  484. depName: thisdata.depName, //订单部门
  485. deleteSign: thisdata.deleteSign,
  486. });
  487. }
  488. }.bind(this),
  489. }).always(
  490. function () {
  491. this.setState({
  492. loading: false,
  493. });
  494. }.bind(this)
  495. );
  496. },
  497. //项目列表
  498. xiangmu(orderNos) {
  499. $.ajax({
  500. method: "get",
  501. dataType: "json",
  502. crossDomain: false,
  503. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  504. data: {
  505. orderNo: orderNos,
  506. },
  507. success: function (data) {
  508. let theArr = [];
  509. if (data.error.length || data.data.list == "") {
  510. if (data.error && data.error.length) {
  511. message.warning(data.error[0].message);
  512. }
  513. } else {
  514. for (let i = 0; i < data.data.length; i++) {
  515. let thisdata = data.data[i];
  516. thisdata.key = i;
  517. theArr.push(thisdata);
  518. }
  519. }
  520. this.setState({
  521. dataSourceX: theArr,
  522. });
  523. }.bind(this),
  524. }).always(
  525. function () {
  526. this.setState({
  527. loading: false,
  528. });
  529. }.bind(this)
  530. );
  531. },
  532. //关闭详情
  533. visitCancel() {
  534. this.setState({
  535. visible: false,
  536. activeKey: "1",
  537. });
  538. this.loadData(this.state.page);
  539. },
  540. visitOk() {
  541. this.setState({
  542. visible: false,
  543. });
  544. this.loadData(this.state.page);
  545. },
  546. closeDesc(e, s) {
  547. this.state.showDesc = e;
  548. if (s) {
  549. this.loadData(this.state.page);
  550. }
  551. },
  552. closeAssign(e, s) {
  553. this.state.roleName = "";
  554. this.state.assignVisible = e;
  555. if (s) {
  556. this.loadData(this.state.page);
  557. }
  558. },
  559. nextCancel() {
  560. this.setState({
  561. addnextVisible: false,
  562. displayFees: "none",
  563. officialCost: "", //是否有官费
  564. costReduction: "", //是否有费减
  565. });
  566. },
  567. //点击打卡项目详情
  568. tableRowClickX(record) {
  569. if (record.type == "1") {
  570. this.setState({
  571. displayFees: "block",
  572. costReduction: record.costReduction,
  573. officialCost: record.officialCost,
  574. });
  575. } else {
  576. this.setState({
  577. displayFees: "none",
  578. });
  579. }
  580. this.setState({
  581. jid: record.id, //项目ID
  582. kid: record.commodityId, //商品ID
  583. commodityName: record.commodityName, //金额
  584. commodityPrice: record.commodityPrice, //金额
  585. commodityQuantity: record.commodityQuantity, //数量
  586. taskComment: record.taskComment, //备注
  587. main: record.main.toString(), //是否为主要
  588. addnextVisible: true,
  589. dataInfor: record,
  590. addState: 0,
  591. });
  592. },
  593. search() {
  594. this.loadData();
  595. },
  596. reset() {
  597. this.state.nameSearch = "";
  598. this.state.releaseDate = [];
  599. this.state.orderNoSearch = "";
  600. this.state.taskNoSearch = "";
  601. this.state.departmenttSearch = undefined;
  602. this.state.distribution = undefined;
  603. this.Cascaders.empty();
  604. this.loadData();
  605. },
  606. searchSwitch() {
  607. this.setState({
  608. searchMore: !this.state.searchMore,
  609. });
  610. },
  611. //部门
  612. departmentList() {
  613. this.setState({
  614. loading: true,
  615. });
  616. $.ajax({
  617. method: "get",
  618. dataType: "json",
  619. crossDomain: false,
  620. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  621. data: {},
  622. success: function (data) {
  623. let thedata = data.data;
  624. let theArr = [];
  625. if (!thedata) {
  626. if (data.error && data.error.length) {
  627. message.warning(data.error[0].message);
  628. }
  629. thedata = {};
  630. } else {
  631. thedata.map(function (item, index) {
  632. theArr.push({
  633. key: index,
  634. name: item.name,
  635. id: item.id,
  636. });
  637. });
  638. }
  639. this.setState({
  640. departmentArr: theArr,
  641. });
  642. }.bind(this),
  643. }).always(
  644. function () {
  645. this.setState({
  646. loading: false,
  647. });
  648. }.bind(this)
  649. );
  650. },
  651. resolutionCancel() {
  652. this.setState({
  653. resolutionVisible: false,
  654. });
  655. },
  656. rizhi() {
  657. this.setState({
  658. loading: true,
  659. });
  660. $.ajax({
  661. method: "get",
  662. dataType: "json",
  663. crossDomain: false,
  664. url: "/api/admin/newOrder/selectOrderLog",
  665. data: {
  666. orderNo: this.state.orderNo,
  667. },
  668. success: function (data) {
  669. let theArr = [];
  670. let thisData = data.data;
  671. if (!thisData.length) {
  672. if (data.error && data.error.length) {
  673. message.warning(data.error[0].message);
  674. }
  675. thisData = {};
  676. } else {
  677. for (let i = 0; i < data.data.length; i++) {
  678. let thisdata = data.data[i];
  679. theArr.push({
  680. processName: thisdata.processName,
  681. adminName: thisdata.adminName,
  682. createDate: thisdata.createDate,
  683. remarks: thisdata.remarks,
  684. });
  685. }
  686. }
  687. this.setState({
  688. dataSourceY: theArr,
  689. });
  690. }.bind(this),
  691. }).always(
  692. function () {
  693. this.setState({
  694. loading: false,
  695. });
  696. }.bind(this)
  697. );
  698. },
  699. closeOrderLog() {
  700. this.setState({
  701. avisible: false,
  702. });
  703. },
  704. getOrderLog() {
  705. this.setState({
  706. avisible: true,
  707. });
  708. this.rizhi();
  709. },
  710. orderChange(key) {
  711. this.setState({
  712. activeKey: key,
  713. });
  714. if (key == 2) {
  715. this.orderDetailData(this.state.orderNo);
  716. this.xiangmu(this.state.orderNo);
  717. this.jiedian(this.state.orderNo);
  718. this.jiedianNew(this.state.orderNo);
  719. }
  720. },
  721. //节点列表
  722. jiedian(orderNos) {
  723. $.ajax({
  724. method: "get",
  725. dataType: "json",
  726. crossDomain: false,
  727. url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
  728. data: {
  729. orderNo: orderNos,
  730. },
  731. success: function (data) {
  732. let theArr = [];
  733. let thisData = [];
  734. if (data.error.length || data.data.list == "") {
  735. if (data.error && data.error.length) {
  736. message.warning(data.error[0].message);
  737. }
  738. } else {
  739. for (let i = 0; i < data.data.length; i++) {
  740. thisData = data.data[i];
  741. theArr.push({
  742. key: i,
  743. dunSubject: thisData.dunSubject
  744. ? thisData.dunSubject.toString()
  745. : "", //催款科目
  746. id: thisData.id, //节点Id
  747. money: thisData.money, //催款金额
  748. dunStatus: thisData.dunStatus, //催款状态
  749. });
  750. }
  751. this.setState({
  752. jiedian: theArr,
  753. });
  754. }
  755. }.bind(this),
  756. });
  757. },
  758. jiedianNew(orderNos) {
  759. $.ajax({
  760. method: "get",
  761. dataType: "json",
  762. crossDomain: false,
  763. url:
  764. globalConfig.context + "/api/admin/newOrderDun/selectListNewOrderDun",
  765. data: {
  766. orderNo: orderNos,
  767. },
  768. success: function (data) {
  769. if (data.error && data.error.length) {
  770. message.warning(data.error[0].message);
  771. } else {
  772. let theArr = [];
  773. let thisData = [];
  774. let arr = data.data || [];
  775. let totalCui = 0;
  776. for (let i = 0; i < arr.length; i++) {
  777. thisData = arr[i];
  778. totalCui += +thisData.money;
  779. theArr.push({
  780. key: i,
  781. dunSubject: thisData.dunSubject
  782. ? thisData.dunSubject.toString()
  783. : "", //催款科目
  784. id: thisData.id, //节点Id
  785. money: thisData.money, //催款金额
  786. // orderNo: record ? record.orderNo : this.props.datauser.orderNo,
  787. commodityName: thisData.commodityName,
  788. projectType: thisData.projectType,
  789. dunTypeName: thisData.dunTypeName,
  790. status: thisData.status,
  791. waitDay: thisData.waitDay,
  792. effectiveCount: thisData.effectiveCount,
  793. startDate: thisData.startDate,
  794. dunType: thisData.dunType,
  795. appropriationRatio: thisData.appropriationRatio,
  796. customizeName: thisData.customizeName,
  797. customizeTimes: thisData.customizeTimes,
  798. });
  799. }
  800. if (!totalCui) {
  801. totalCui = 0;
  802. }
  803. totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6);
  804. this.setState({
  805. jiedianNew: theArr,
  806. totalCui,
  807. });
  808. }
  809. }.bind(this),
  810. }).always(
  811. function () {
  812. this.setState({
  813. loading: false,
  814. });
  815. }.bind(this)
  816. );
  817. },
  818. orderDetailData(orderNos) {
  819. this.setState({
  820. loading: true,
  821. });
  822. $.ajax({
  823. method: "get",
  824. dataType: "json",
  825. crossDomain: false,
  826. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  827. data: {
  828. orderNo: orderNos,
  829. },
  830. success: function (data) {
  831. if (data.error.length || data.data.list == "") {
  832. if (data.error && data.error.length) {
  833. message.warning(data.error[0].message);
  834. this.setState({
  835. loading: false,
  836. });
  837. }
  838. } else {
  839. let thisdata = data.data;
  840. this.setState({
  841. orderUid: thisdata.uid,
  842. loading: false,
  843. userName: thisdata.userName,
  844. primaryOrderNo: thisdata.primaryOrder,
  845. additionalOrder: thisdata.additionalOrder,
  846. contractNo: thisdata.contractNo,
  847. orderData: thisdata,
  848. isAddition: thisdata.additionalOrder ? true : false,
  849. contractPictureUrl: thisdata.contractPictureUrl
  850. ? splitUrl(
  851. thisdata.contractPictureUrl,
  852. ",",
  853. globalConfig.avatarHost + "/upload"
  854. )
  855. : [],
  856. deleteSign: thisdata.deleteSign,
  857. });
  858. }
  859. }.bind(this),
  860. });
  861. },
  862. changeList(arr) {
  863. const newArr = [];
  864. this.state.columns.forEach(item => {
  865. arr.forEach(val => {
  866. if (val === item.title) {
  867. newArr.push(item);
  868. }
  869. });
  870. });
  871. this.setState({
  872. changeList: newArr
  873. });
  874. },
  875. // 可展开颜色不同
  876. addRowColor(record) {
  877. if (!!record.splitList && record.splitList.length > 0) {
  878. return 'light'
  879. } else {
  880. return 'dark'
  881. }
  882. },
  883. render() {
  884. const expandedRowRender = (e) => {
  885. const data = e.splitList;
  886. let columns = [];
  887. if (e.splitList instanceof Array && e.splitList.length) {
  888. columns = [
  889. {
  890. title: "编号",
  891. dataIndex: "splitSuper",
  892. key: "splitSuper",
  893. render: (text, record) => {
  894. return text + "-" + record.splitId;
  895. },
  896. },
  897. {
  898. title: "项目名称",
  899. dataIndex: "taskName",
  900. key: "taskName",
  901. render: (text, record) => {
  902. return <span>{text}<span style={{ color: "red" }}>{record.patentTypeName}</span></span>
  903. }
  904. },
  905. {
  906. title: "订单编号",
  907. dataIndex: "orderNo",
  908. key: "orderNo",
  909. },
  910. {
  911. title: "业务类别",
  912. dataIndex: "cname",
  913. key: "cname",
  914. },
  915. {
  916. title: "客户名称",
  917. dataIndex: "userName",
  918. key: "userName",
  919. render: text => {
  920. return (
  921. <Tooltip title={text}>
  922. <div
  923. // style={{
  924. // maxWidth: '150px',
  925. // overflow: 'hidden',
  926. // textOverflow: "ellipsis",
  927. // whiteSpace: 'nowrap',
  928. // }}
  929. >{text}</div>
  930. </Tooltip>
  931. )
  932. }
  933. },
  934. {
  935. title: "项目状态",
  936. dataIndex: "projectStatus",
  937. key: "projectStatus",
  938. render: (text) => {
  939. return getProjectName(text);
  940. },
  941. },
  942. {
  943. title: "分配时间",
  944. dataIndex: "taskDate",
  945. key: "taskDate",
  946. },
  947. {
  948. title: "任务数量",
  949. dataIndex: "commodityQuantity",
  950. key: "commodityQuantity",
  951. },
  952. {
  953. title: "订单部门",
  954. dataIndex: "depName",
  955. key: "depName",
  956. },
  957. {
  958. title: "拆分操作人",
  959. dataIndex: "splitAname",
  960. key: "splitAname",
  961. },
  962. {
  963. title: "项目负责人",
  964. dataIndex: "receiverName",
  965. key: "receiverName",
  966. },
  967. {
  968. title: "拆分时间",
  969. dataIndex: "splitTimes",
  970. key: "splitTimes",
  971. },
  972. {
  973. title: "操作",
  974. dataIndex: "caozuo",
  975. key: "caouzo",
  976. render: (text, record) => {
  977. return (
  978. <div>
  979. <Button
  980. type="primary"
  981. style={{ margin: "0 10px" }}
  982. disabled={record.distributeSign == 1 ? true : false}
  983. onClick={(e) => {
  984. e.stopPropagation(), this.evaluate(record, "咨询师经理");
  985. }}
  986. >
  987. 转交
  988. </Button>
  989. <Button
  990. type="primary"
  991. style={{ margin: "0 10px" }}
  992. disabled={record.distributeSign == 1 ? true : false}
  993. onClick={(e) => {
  994. e.stopPropagation(), this.evaluate(record, "咨询师");
  995. }}
  996. >
  997. 分配任务
  998. </Button>
  999. </div>
  1000. );
  1001. },
  1002. },
  1003. ];
  1004. return (
  1005. <Table
  1006. columns={columns}
  1007. dataSource={data}
  1008. pagination={false}
  1009. onRowClick={this.tableRowClick.bind(this)}
  1010. />
  1011. );
  1012. } else {
  1013. columns = [];
  1014. return (
  1015. <p style={{ fontWeight: "bold", color: "red", textAlign: "center" }}>
  1016. 此项目暂未拆分
  1017. </p>
  1018. );
  1019. }
  1020. };
  1021. const expandedRowRenderVip = (e) => {
  1022. const data = e.splitList;
  1023. let columns = [];
  1024. if (data instanceof Array && data.length) {
  1025. if (e.cSort == 6) {
  1026. columns = [
  1027. {
  1028. title: "负责人",
  1029. dataIndex: "receiverName",
  1030. key: "receiverName",
  1031. },
  1032. {
  1033. title: "负责人电话",
  1034. dataIndex: "receiverMobile",
  1035. key: "receiverMobile",
  1036. },
  1037. {
  1038. title: "会员负责人",
  1039. dataIndex: "projectMemberName",
  1040. key: "projectMemberName",
  1041. },
  1042. {
  1043. title: "项目状态",
  1044. dataIndex: "projectStatus",
  1045. key: "projectStatus",
  1046. render: (text) => {
  1047. return getProjectName(text);
  1048. },
  1049. },
  1050. {
  1051. title: "本次派单",
  1052. dataIndex: "serviceYear",
  1053. key: "serviceYear",
  1054. },
  1055. {
  1056. title: "项目说明",
  1057. dataIndex: "taskComment",
  1058. key: "taskComment",
  1059. render: (text, record) => {
  1060. let textStr = text;
  1061. let textArr = [];
  1062. if (record.htMember === 1) {
  1063. textArr.push("高新会员");
  1064. }
  1065. if (record.additionalDeduction === 1) {
  1066. textArr.push("加计扣除");
  1067. }
  1068. if (record.rdAwardsubsidy === 1) {
  1069. textArr.push("研发补助");
  1070. }
  1071. if (textArr.length) {
  1072. textStr = `${textArr.join("&")} ${!!text ? `(${text})` : ''}`
  1073. }
  1074. return (
  1075. <Tooltip title={textStr}>
  1076. <div
  1077. // style={{
  1078. // width: 100,
  1079. // overflow: "hidden",
  1080. // whiteSpace: "nowrap",
  1081. // textOverflow: "ellipsis",
  1082. // }}
  1083. >{textStr}</div>
  1084. </Tooltip>
  1085. )
  1086. },
  1087. },
  1088. ];
  1089. } else {
  1090. columns = [
  1091. {
  1092. title: "子项目名称",
  1093. dataIndex: "taskName",
  1094. key: "taskName"
  1095. },
  1096. {
  1097. title: "子项目数量",
  1098. dataIndex: "commodityQuantity",
  1099. key: "commodityQuantity"
  1100. },
  1101. {
  1102. title: "拆分操作人",
  1103. dataIndex: "splitAname",
  1104. key: "splitAname"
  1105. },
  1106. {
  1107. title: "项目负责人",
  1108. dataIndex: "receiverName",
  1109. key: "receiverName"
  1110. },
  1111. {
  1112. title: "拆分时间",
  1113. dataIndex: "splitTimes",
  1114. key: "splitTimes"
  1115. }
  1116. ]
  1117. }
  1118. return (
  1119. <Table
  1120. columns={columns}
  1121. dataSource={data}
  1122. pagination={false}
  1123. />
  1124. );
  1125. } else {
  1126. columns = [];
  1127. return (
  1128. <p
  1129. style={{ fontWeight: "bold", color: "red", textAlign: "center" }}
  1130. >
  1131. {e.cSort == 6 ? "暂无派单" : "此项目暂未拆分"}
  1132. </p>
  1133. );
  1134. }
  1135. };
  1136. const rowSelection = {
  1137. selectedRowKeys: this.state.selectedRowKeys,
  1138. onChange: (selectedRowKeys, selectedRows) => {
  1139. this.setState({
  1140. selectedRows: selectedRows.slice(-1),
  1141. selectedRowKeys: selectedRowKeys.slice(-1),
  1142. });
  1143. },
  1144. };
  1145. const formItemLayout = {
  1146. labelCol: { span: 8 },
  1147. wrapperCol: { span: 14 },
  1148. };
  1149. let departmentArr = this.state.departmentArr || [];
  1150. return (
  1151. <div className="user-content">
  1152. {this.state.resVisible ? (
  1153. <ResolutionDetail
  1154. cancel={this.resCancel}
  1155. detail={this.state.resRecord}
  1156. visible={this.state.resVisible}
  1157. id={this.state.resRecord.orderNo}
  1158. />
  1159. ) : (
  1160. ""
  1161. )}
  1162. <ResolutionPro
  1163. resolutionVisible={this.state.resolutionVisible}
  1164. number={this.state.resolutionNumber}
  1165. name={this.state.resolutionName}
  1166. cancel={this.resolutionCancel}
  1167. id={this.state.resolutionId}
  1168. loadData={this.loadData}
  1169. />
  1170. <ShowModalDiv ShowModal={this.state.showModal} onClose={() => { this.setState({ showModal: false }) }} />
  1171. <div className="content-title" style={{ marginBottom: 10 }}>
  1172. <span style={{ fontWeight: 900, fontSize: 16 }}>任务派单</span>
  1173. </div>
  1174. <Tabs defaultActiveKey="1" onChange={this.callback} className="test">
  1175. <TabPane tab="搜索" key="1">
  1176. <div className="user-search">
  1177. <Input
  1178. placeholder="订单编号"
  1179. value={this.state.orderNoSearch}
  1180. onChange={(e) => {
  1181. this.setState({ orderNoSearch: e.target.value });
  1182. }}
  1183. />
  1184. <Input
  1185. placeholder="客户名称"
  1186. value={this.state.nameSearch}
  1187. style={{ marginLeft: 10 }}
  1188. onChange={(e) => {
  1189. this.setState({ nameSearch: e.target.value });
  1190. }}
  1191. />
  1192. <Input
  1193. placeholder="任务编号"
  1194. value={this.state.taskNoSearch}
  1195. onChange={(e) => {
  1196. this.setState({ taskNoSearch: e.target.value });
  1197. }}
  1198. />
  1199. <Cascaders
  1200. ref={ref => this.Cascaders = ref}
  1201. placeholder="选择部门"
  1202. height={28}
  1203. onSel={(e) => {
  1204. this.setState({
  1205. departmenttSearch: JSON.stringify(e)
  1206. })
  1207. }}
  1208. />
  1209. {/* <Select
  1210. placeholder="选择部门"
  1211. style={{ width: 200, marginRight: "10px" }}
  1212. value={this.state.departmenttSearch}
  1213. onChange={(e) => {
  1214. this.setState({ departmenttSearch: e });
  1215. }}
  1216. >
  1217. {departmentArr.map(function (item) {
  1218. return (
  1219. <Select.Option key={item.id}>{item.name}</Select.Option>
  1220. );
  1221. })}
  1222. </Select> */}
  1223. <Button type="primary" onClick={this.search}>
  1224. 搜索
  1225. </Button>
  1226. <Button onClick={this.reset}>重置</Button>
  1227. {/* <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
  1228. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  1229. <span>订单时间 :</span>
  1230. <RangePicker
  1231. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  1232. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  1233. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  1234. </div> */}
  1235. </div>
  1236. </TabPane>
  1237. <TabPane tab="更改表格显示数据" key="2">
  1238. <div style={{ marginLeft: 10 }}>
  1239. <ChooseList
  1240. columns={this.state.columns}
  1241. changeFn={this.changeList}
  1242. changeList={this.state.changeList}
  1243. top={55}
  1244. margin={11}
  1245. />
  1246. </div>
  1247. </TabPane>
  1248. </Tabs>
  1249. <div className="patent-table">
  1250. <Spin spinning={this.state.loading}>
  1251. <Table
  1252. columns={
  1253. this.state.changeList
  1254. ? this.state.changeList
  1255. : this.state.columns
  1256. }
  1257. dataSource={this.state.dataSource}
  1258. expandedRowRender={expandedRowRender}
  1259. // rowSelection={rowSelection}
  1260. pagination={this.state.pagination}
  1261. onRowClick={this.tableRowClick.bind(this)}
  1262. bordered
  1263. size="small"
  1264. />
  1265. </Spin>
  1266. </div>
  1267. <Assign
  1268. title="任务"
  1269. selApi={"/api/admin/orderProject/projectDistribution"}
  1270. data={this.state.assignData}
  1271. showDesc={this.state.assignVisible}
  1272. closeDesc={this.closeAssign.bind(this)}
  1273. fenpaiData={8}
  1274. type={this.state.nub == "咨询师经理" ? 1 : 2}
  1275. // 判断是转交按钮还是分配任务按钮
  1276. // chooseBtn={this.state.nub == "咨询师经理" ? true : false}
  1277. roleName={this.state.nub}
  1278. requestMethod={"post"}
  1279. />
  1280. <Modal
  1281. className="customeDetails"
  1282. footer=""
  1283. title=""
  1284. width="1200px"
  1285. visible={this.state.visible}
  1286. onOk={this.visitOk}
  1287. onCancel={this.visitCancel}
  1288. >
  1289. <Tabs activeKey={this.state.activeKey} onChange={this.orderChange} tabBarExtraContent={
  1290. <div style={{ fontWeight: 'bold', paddingRight: '15px' }}>
  1291. <OrderItemStatus deleteSign={this.state.deleteSign} />
  1292. </div>
  1293. }>
  1294. <TabPane tab="任务详情" key="1">
  1295. <Form
  1296. layout="horizontal"
  1297. onSubmit={this.handleSubmit}
  1298. id="demand-form"
  1299. style={{ paddingBottom: "40px" }}
  1300. >
  1301. <Spin spinning={this.state.loading}>
  1302. <div className="clearfix">
  1303. <FormItem
  1304. className="half-item"
  1305. {...formItemLayout}
  1306. label="订单编号"
  1307. >
  1308. <span>{this.state.orderNo}</span>
  1309. </FormItem>
  1310. <FormItem
  1311. className="half-item"
  1312. {...formItemLayout}
  1313. label="合同编号"
  1314. >
  1315. <span>{this.state.contractNo}</span>
  1316. </FormItem>
  1317. <FormItem
  1318. className="half-item"
  1319. {...formItemLayout}
  1320. label="客户名称"
  1321. >
  1322. <span>{this.state.userName}</span>
  1323. <EnterpriseNameChange
  1324. type='journal'
  1325. style={{ marginLeft: 10 }}
  1326. enterpriseId={this.state.orderUid} />
  1327. </FormItem>
  1328. <FormItem
  1329. className="half-item"
  1330. {...formItemLayout}
  1331. label="合同签订时间"
  1332. >
  1333. <span>{this.state.signDate}</span>
  1334. </FormItem>
  1335. <FormItem
  1336. className="half-item"
  1337. {...formItemLayout}
  1338. label="流程状态"
  1339. >
  1340. <span>{getProcessStatus(this.state.processStatus, this.state.examineName, this.state.approval)}</span>
  1341. </FormItem>
  1342. <FormItem
  1343. className="half-item"
  1344. {...formItemLayout}
  1345. label="结算状态"
  1346. >
  1347. <span>
  1348. {getLiquidationStatus(this.state.liquidationStatus)}
  1349. </span>
  1350. </FormItem>
  1351. <FormItem
  1352. className="half-item"
  1353. {...formItemLayout}
  1354. label="企业联系人"
  1355. >
  1356. <span>{this.state.contacts}</span>
  1357. </FormItem>
  1358. <FormItem
  1359. className="half-item"
  1360. {...formItemLayout}
  1361. label="联系人电话"
  1362. >
  1363. <span>{this.state.contactMobile}</span>
  1364. </FormItem>
  1365. <FormItem
  1366. className="half-item"
  1367. {...formItemLayout}
  1368. label="企业法人"
  1369. >
  1370. <span>{this.state.legalPerson}</span>
  1371. </FormItem>
  1372. <FormItem
  1373. className="half-item"
  1374. {...formItemLayout}
  1375. label="法人电话"
  1376. >
  1377. <span>{this.state.legalPersonTel}</span>
  1378. </FormItem>
  1379. <FormItem
  1380. className="half-item"
  1381. {...formItemLayout}
  1382. label="签单金额(万元)"
  1383. >
  1384. <span>{this.state.totalAmount}</span>
  1385. </FormItem>
  1386. <FormItem
  1387. className="half-item"
  1388. {...formItemLayout}
  1389. label="首付金额(万元)"
  1390. >
  1391. <span>{this.state.firstAmount}</span>
  1392. </FormItem>
  1393. <FormItem
  1394. className="half-item"
  1395. {...formItemLayout}
  1396. label="特批立项"
  1397. >
  1398. <span>{getApprovedState(this.state.approval)}</span>
  1399. </FormItem>
  1400. <FormItem
  1401. className="half-item"
  1402. {...formItemLayout}
  1403. label="已收款项(万元)"
  1404. >
  1405. <span>{this.state.settlementAmount}</span>
  1406. </FormItem>
  1407. <div className="clearfix">
  1408. <FormItem
  1409. labelCol={{ span: 4 }}
  1410. wrapperCol={{ span: 16 }}
  1411. label="订单留言"
  1412. >
  1413. <p style={{ width: 500, wordWrap: "break-word" }}>
  1414. {this.state.orderRemarks}
  1415. </p>
  1416. </FormItem>
  1417. </div>
  1418. <div className="clearfix">
  1419. <FormItem
  1420. className="half-item"
  1421. {...formItemLayout}
  1422. label="订单负责人"
  1423. >
  1424. <span>{this.state.salesmanName}</span>
  1425. </FormItem>
  1426. <FormItem
  1427. className="half-item"
  1428. {...formItemLayout}
  1429. label="订单负责人电话"
  1430. >
  1431. <span>{this.state.salesmanMobile}</span>
  1432. </FormItem>
  1433. <FormItem
  1434. className="half-item"
  1435. {...formItemLayout}
  1436. label="订单部门"
  1437. >
  1438. <span>{this.state.depName}</span>
  1439. </FormItem>
  1440. </div>
  1441. <div className="clearfix">
  1442. <FormItem
  1443. className="half-item"
  1444. {...formItemLayout}
  1445. label="当前财务负责人"
  1446. >
  1447. <span>{this.state.nowFinance}</span>
  1448. </FormItem>
  1449. <FormItem
  1450. className="half-item"
  1451. {...formItemLayout}
  1452. label="当前财务负责人电话"
  1453. >
  1454. <span>{this.state.nowFinanceMobile}</span>
  1455. </FormItem>
  1456. </div>
  1457. <div className="clearfix">
  1458. <FormItem
  1459. className="half-item"
  1460. {...formItemLayout}
  1461. style={{ opacity: ".5" }}
  1462. label="原订单负责人"
  1463. >
  1464. <span>{this.state.oldSalesmanName}</span>
  1465. </FormItem>
  1466. <FormItem
  1467. className="half-item"
  1468. {...formItemLayout}
  1469. style={{ opacity: ".5" }}
  1470. label="原订单负责人电话"
  1471. >
  1472. <span>{this.state.oldSalesmanMobile}</span>
  1473. </FormItem>
  1474. </div>
  1475. <div className="clearfix">
  1476. <FormItem
  1477. className="half-item"
  1478. {...formItemLayout}
  1479. style={{ opacity: ".5" }}
  1480. label="实际财务操作人"
  1481. >
  1482. <span>{this.state.financeName}</span>
  1483. </FormItem>
  1484. <FormItem
  1485. className="half-item"
  1486. {...formItemLayout}
  1487. style={{ opacity: ".5" }}
  1488. label="实际财务操作人电话"
  1489. >
  1490. <span>{this.state.financeMobile}</span>
  1491. </FormItem>
  1492. </div>
  1493. <div className="clearfix">
  1494. <FormItem
  1495. className="half-item"
  1496. {...formItemLayout}
  1497. label="订单留言"
  1498. >
  1499. <span>{this.state.orderRemarks}</span>
  1500. </FormItem>
  1501. <FormItem
  1502. className="half-item"
  1503. {...formItemLayout}
  1504. label=""
  1505. >
  1506. <Button onClick={this.getOrderLog}>查看订单日志</Button>
  1507. </FormItem>
  1508. </div>
  1509. <OrderRiZi
  1510. dataSourcerizhi={this.state.dataSourceY}
  1511. closeOrderLog={this.closeOrderLog}
  1512. visible={this.state.avisible}
  1513. loading={this.state.loading}
  1514. />
  1515. <div>
  1516. <span style={{ marginLeft: "50px", fontSize: "20px" }}>
  1517. 项目业务
  1518. </span>
  1519. {this.state.processStatus == 0 ? (
  1520. <Button
  1521. type="primary"
  1522. onClick={this.addDetailed}
  1523. style={{
  1524. float: "right",
  1525. marginRight: "50px",
  1526. marginBottom: "15px",
  1527. }}
  1528. >
  1529. 添加项目明细
  1530. </Button>
  1531. ) : (
  1532. ""
  1533. )}
  1534. </div>
  1535. <div className="patent-table">
  1536. <Spin spinning={this.state.loading}>
  1537. <Table
  1538. columns={this.state.columnsX}
  1539. dataSource={this.state.dataSourceX}
  1540. pagination={this.state.paginations}
  1541. onRowClick={this.tableRowClickX}
  1542. expandedRowRender={expandedRowRenderVip}
  1543. rowClassName={this.addRowColor}
  1544. bordered
  1545. size="small"
  1546. />
  1547. </Spin>
  1548. </div>
  1549. </div>
  1550. </Spin>
  1551. </Form>
  1552. </TabPane>
  1553. <TabPane tab="订单详情" key="2">
  1554. {
  1555. this.state.activeKey == 2 &&
  1556. <Spin spinning={this.state.loading}>
  1557. <OrderDetail
  1558. orderUid={this.state.orderUid}
  1559. orderData={this.state.orderData}
  1560. getOrderLog={this.getOrderLog}
  1561. dataSourceX={this.state.dataSourceX}
  1562. contactList={this.state.jiedian}
  1563. orderNo={this.state.orderNo}
  1564. totalCui={this.state.totalCui}
  1565. contactListNew={this.state.jiedianNew}
  1566. pictureUrl={this.state.contractPictureUrl}
  1567. />
  1568. </Spin>
  1569. }
  1570. </TabPane>
  1571. </Tabs>
  1572. </Modal>
  1573. {/* {this.state.addnextVisible && <ProjectDetailsReadOnly
  1574. infor={this.state.dataInfor}
  1575. visible={this.state.addnextVisible}
  1576. onCancel={this.nextCancel}
  1577. />} */}
  1578. {
  1579. // 项目业务详情
  1580. this.state.addnextVisible &&
  1581. <NewEditProject
  1582. readOnly={true}
  1583. visible={this.state.addnextVisible}
  1584. dataInfor={this.state.dataInfor}
  1585. onCancel={this.nextCancel}
  1586. />
  1587. }
  1588. </div>
  1589. );
  1590. },
  1591. });
  1592. export default Task;