examine.jsx 86 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535
  1. import React from "react";
  2. import {
  3. Icon,
  4. Button,
  5. Input,
  6. Spin,
  7. Table,
  8. message,
  9. DatePicker,
  10. Upload,
  11. Form,
  12. Modal,
  13. Tabs,
  14. Col,
  15. Tooltip,
  16. Select,
  17. Tag
  18. } from "antd";
  19. import $ from "jquery/src/ajax";
  20. import moment from "moment";
  21. import {
  22. getLiquidationStatus,
  23. getApprovedState,
  24. getProcessStatus,
  25. splitUrl,
  26. getjiedian,
  27. getboutique,
  28. getCuikuan,
  29. getProjectStatus,
  30. moneyVerify,
  31. ShowModal
  32. } from "@/tools.js";
  33. import "./customer.less";
  34. import ShowModalDiv from "@/showModal.jsx";
  35. import ResolutionDetail from "@/resolutionDetail";
  36. import OrderRiZi from "@/orderRiZi.jsx";
  37. import ImgList from "../../../common/imgList";
  38. import { ChooseList } from "./chooseList";
  39. import { getProjectName } from "../../../tools";
  40. import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
  41. import NewEditProject from "../../../common/projectOperation/newEditProject"
  42. import OrderItemStatus from "../../../common/orderItemStatus";
  43. import EnterpriseNameChange from "../../../common/enterpriseNameChange";
  44. import OrderCoor from "./changeComponent/orderCoor";
  45. import ContentUrl from "./contentUrl";
  46. import { salesList, processStatus } from "@/dataDic.js";
  47. import FlowChart from '../../../common/flowchart'; // 流程图
  48. import Gxczx from '../../../common/orderDetail/gxczx' // 高新纯咨询合同说明详情
  49. const confirm = Modal.confirm;
  50. const { Option } = Select;
  51. //图片组件
  52. const PicturesWall = React.createClass({
  53. getInitialState() {
  54. return {
  55. previewVisible: false,
  56. previewImage: "",
  57. declarationBatch: 1,
  58. dataInfor: {},
  59. fileList: this.props.pictureUrl
  60. };
  61. },
  62. handleCancel() {
  63. this.setState({
  64. previewVisible: false
  65. });
  66. },
  67. handlePreview(file) {
  68. this.setState({
  69. previewImage: file.url || file.thumbUrl,
  70. previewVisible: true
  71. });
  72. },
  73. handleChange(info) {
  74. let fileList = info.fileList;
  75. this.setState({
  76. fileList
  77. });
  78. this.props.fileList(fileList);
  79. },
  80. componentWillReceiveProps(nextProps) {
  81. this.state.fileList = nextProps.pictureUrl;
  82. this.state.pojectApplicationUrl = undefined;
  83. },
  84. render() {
  85. const { previewVisible, previewImage, fileList } = this.state;
  86. const uploadButton = (
  87. <div>
  88. <Icon type="plus" />
  89. <div className="ant-upload-text">点击上传</div>
  90. </div>
  91. );
  92. return (
  93. <div style={{ display: "inline-block" }}>
  94. <Upload
  95. action={
  96. globalConfig.context + "/api/admin/outsourceOrg/uploadOutsourceFile"
  97. }
  98. data={{ sign: "order_outsource" }}
  99. listType="picture-card"
  100. fileList={fileList}
  101. multiple
  102. onPreview={this.handlePreview}
  103. onChange={this.handleChange}
  104. >
  105. {uploadButton}
  106. </Upload>
  107. {previewVisible ? <Modal
  108. maskClosable={false}
  109. width={"70px"}
  110. visible={previewVisible}
  111. footer={null}
  112. onCancel={this.handleCancel}
  113. >
  114. <img alt="example" style={{ width: "100%" }} src={previewImage} />
  115. </Modal> : <div />}
  116. </div>
  117. );
  118. }
  119. });
  120. const IntentionCustomer = Form.create()(
  121. React.createClass({
  122. loadData(pageNo) {
  123. this.setState({
  124. visitModul: false,
  125. loading: true,
  126. ispage: pageNo,
  127. modalVisible: false,
  128. });
  129. $.ajax({
  130. method: "get",
  131. dataType: "json",
  132. crossDomain: false,
  133. url: globalConfig.context + "/api/admin/newOrder/orderNewList",
  134. data: {
  135. pageNo: pageNo || 1,
  136. pageSize: this.state.pagination.pageSize,
  137. specially: 1, //营销管理员审核 0 个人 1 营销员管理 2 驳回 3 特批 4 咨询师管理 5部门订单查询 6客服查询 7统计签单订单 8客户订单列表 9 复审订单 10 营销经理
  138. name: this.state.customerName, //名称
  139. orderNo: this.state.orderNoSearch, //订单编号
  140. starTime: this.state.releaseDate[0], //开始时间
  141. endTime: this.state.releaseDate[1], //结束时间
  142. approval: this.state.approvalSearch, //特批状态搜索
  143. processStatus: this.state.processStatusSearch,
  144. amountStatus: this.state.amountStatus,
  145. projectType: this.state.projectType,//会员
  146. },
  147. success: function (data) {
  148. ShowModal(this);
  149. let theArr = [];
  150. if (data.error.length || data.data.list == "") {
  151. if (data.error && data.error.length) {
  152. message.warning(data.error[0].message);
  153. }
  154. } else {
  155. for (let i = 0; i < data.data.list.length; i++) {
  156. let thisdata = data.data.list[i];
  157. theArr.push({
  158. key: i,
  159. id: thisdata.id, //用户ID
  160. salesType: thisdata.salesType, //销售类型
  161. deleteSign: thisdata.deleteSign,
  162. projectType: thisdata.projectType,
  163. other: thisdata.other,
  164. contractNo: thisdata.contractNo, //合同编号
  165. orderNo: thisdata.orderNo, //订单编号
  166. totalAmount: thisdata.totalAmount, //签单金额
  167. processStatus: thisdata.processStatus, //流程状态
  168. examineName: thisdata.examineName,
  169. liquidationStatus: thisdata.liquidationStatus, //结算状态
  170. approval: thisdata.approval, //特批状态
  171. signDate: thisdata.signDate, //签单时间
  172. userName: thisdata.userName, //客户名称
  173. salesmanName: thisdata.salesmanName, //营销员名称
  174. financeName: thisdata.financeName, //财务名称
  175. createDate: thisdata.createDate, //下单时间
  176. depName: thisdata.depName,
  177. orderStatus: thisdata.orderStatus,
  178. });
  179. }
  180. this.state.pagination.total = data.data.totalCount;
  181. this.state.pagination.current = data.data.pageNo;
  182. }
  183. if (data.data && data.data.list && !data.data.list.length) {
  184. this.state.pagination.total = 0;
  185. }
  186. this.setState({
  187. dataSource: theArr,
  188. pageNo: pageNo,
  189. pagination: this.state.pagination,
  190. selectedRowKeys: [],
  191. });
  192. }.bind(this),
  193. }).always(
  194. function () {
  195. this.setState({
  196. loading: false,
  197. });
  198. }.bind(this)
  199. );
  200. },
  201. getInitialState() {
  202. return {
  203. rotateDeg: 0,
  204. page: 1,
  205. resVisible: false,
  206. releaseDate: [],
  207. selectedRowKeys: [],
  208. pictureUrl: [],
  209. attachmentUrl: [],
  210. paginations: false,
  211. activeKey: "1",
  212. confirmLoading: false,
  213. approvalSearch: undefined,
  214. processStatusSearch: undefined,
  215. aloading: false,
  216. orderNos: '',
  217. pagination: {
  218. defaultCurrent: 1,
  219. defaultPageSize: 10,
  220. showQuickJumper: true,
  221. pageSize: 10,
  222. onChange: function (page) {
  223. this.loadData(page);
  224. }.bind(this),
  225. showTotal: function (total) {
  226. return "共" + total + "条数据";
  227. },
  228. },
  229. columns: [
  230. {
  231. title: "销售类型",
  232. dataIndex: "salesType",
  233. key: "salesType",
  234. render: (text, record) => {
  235. return (
  236. <Tooltip
  237. title={salesList[text] + ((text == 3 || text == 4 || text == 5) ? (!record.other ? "" : "," + record.other) : "")}
  238. >
  239. <span>
  240. {salesList[text]}
  241. </span>
  242. </Tooltip>
  243. );
  244. },
  245. },
  246. {
  247. title: "合同编号",
  248. dataIndex: "contractNo",
  249. key: "contractNo",
  250. className: "title-table",
  251. render: (text, record) => {
  252. return (
  253. <Tooltip
  254. title={
  255. <Button
  256. type="primary"
  257. onClick={(e) => {
  258. e.stopPropagation();
  259. let input = document.getElementById("copyText");
  260. input.value = text;
  261. input.select();
  262. document.execCommand("copy");
  263. message.success("复制成功");
  264. }}
  265. >
  266. 复制
  267. </Button>
  268. }
  269. >
  270. <div>
  271. {text}
  272. <div style={{ display: "flex" }}>
  273. <OrderItemStatus deleteSign={record.deleteSign} />
  274. {
  275. record.approval == 1
  276. ? <Tag color="#faa755">特批待审</Tag> : record.approval == 2
  277. ? <Tag color="#ff0000">特批通过</Tag> : record.approval == 4
  278. ? <Tag color="#faa755">特批待审</Tag> : record.approval == 5
  279. ? <Tag color="#ff0000">特批通过</Tag> : ""
  280. }
  281. </div>
  282. </div>
  283. </Tooltip>
  284. );
  285. },
  286. },
  287. {
  288. title: "客户名称",
  289. dataIndex: "userName",
  290. key: "userName",
  291. render: (text) => {
  292. return (
  293. <Tooltip title={text}>
  294. <div style={{
  295. maxWidth: '150px',
  296. overflow: 'hidden',
  297. textOverflow: "ellipsis",
  298. whiteSpace: 'nowrap',
  299. }}>{text}</div>
  300. </Tooltip>
  301. )
  302. },
  303. },
  304. {
  305. title: "订单编号",
  306. dataIndex: "orderNo",
  307. key: "orderNo",
  308. width: 140,
  309. render: (text, record) => {
  310. return (
  311. <Tooltip
  312. title={
  313. <Button
  314. type="primary"
  315. onClick={(e) => {
  316. e.stopPropagation();
  317. let input = document.getElementById("copyText");
  318. input.value = text;
  319. input.select();
  320. document.execCommand("copy");
  321. message.success("复制成功");
  322. }}
  323. >
  324. 复制
  325. </Button>
  326. }
  327. >
  328. <div>
  329. {text}
  330. <div>
  331. {record.totalAmount >= 10 && <Tag color="#ef7207">大客户</Tag>}
  332. {record.projectType == 1 && <Tag color="rgb(22, 155, 213)">会员</Tag>}
  333. </div>
  334. </div>
  335. </Tooltip>
  336. );
  337. },
  338. },
  339. {
  340. title: "下单时间",
  341. dataIndex: "createDate",
  342. key: "createTime",
  343. },
  344. {
  345. title: "合同签订时间",
  346. dataIndex: "signDate",
  347. key: "signDate",
  348. },
  349. {
  350. title: "流程状态",
  351. dataIndex: "processStatus",
  352. key: "processStatus",
  353. render: (text, record) => {
  354. return getProcessStatus(text, record.examineName, record.approval);
  355. },
  356. },
  357. {
  358. title: "订单部门",
  359. dataIndex: "depName",
  360. key: "depName",
  361. },
  362. {
  363. title: "签单金额(万元)",
  364. dataIndex: "totalAmount",
  365. key: "totalAmount",
  366. },
  367. {
  368. title: "结算状态",
  369. dataIndex: "liquidationStatus",
  370. key: "liquidationStatus",
  371. render: (text) => {
  372. return getLiquidationStatus(text);
  373. },
  374. },
  375. {
  376. title: "是否特批",
  377. dataIndex: "approval",
  378. key: "approval",
  379. render: (text) => {
  380. return getApprovedState(text);
  381. },
  382. },
  383. {
  384. title: "订单负责人",
  385. dataIndex: "salesmanName",
  386. key: "salesmanName",
  387. },
  388. {
  389. title: "财务负责人",
  390. dataIndex: "financeName",
  391. key: "financeName",
  392. },
  393. ],
  394. data: [],
  395. dataSource: [],
  396. columnsX: [
  397. {
  398. title: "业务项目名称",
  399. dataIndex: "commodityName",
  400. key: "commodityName",
  401. render: (text, record) => {
  402. return <span>{text}<span style={{ color: "red" }}>{record.patentTypeName}</span>{"-" + record.id}</span>
  403. }
  404. },
  405. {
  406. title: "项目类别",
  407. dataIndex: "cname",
  408. key: "cname",
  409. },
  410. {
  411. title: "项目数量",
  412. dataIndex: "commodityQuantity",
  413. key: "commodityQuantity",
  414. render: (text, record) => {
  415. if (record.splitStatus == 1) {
  416. return (
  417. <span>
  418. {text}{" "}
  419. {/* <Tag
  420. color="#108ee9"
  421. onClick={(e) => {
  422. e.stopPropagation();
  423. this.showRes(record);
  424. }}
  425. >
  426. 已拆
  427. </Tag> */}
  428. </span>
  429. );
  430. } else {
  431. return text;
  432. }
  433. },
  434. },
  435. {
  436. title: "金额(万元)",
  437. dataIndex: "commodityPrice",
  438. key: "commodityPrice",
  439. },
  440. {
  441. title: "负责人",
  442. dataIndex: "contacts",
  443. key: "contacts",
  444. },
  445. {
  446. title: "负责人电话",
  447. dataIndex: "contactsMobile",
  448. key: "contactsMobile",
  449. },
  450. {
  451. title: "项目状态",
  452. dataIndex: "projectStatus",
  453. key: "projectStatus",
  454. render: (text) => {
  455. return getProjectName(text);
  456. },
  457. },
  458. {
  459. title: "主要项目",
  460. dataIndex: "main",
  461. key: "main",
  462. width: 50,
  463. render: (text) => {
  464. return text ? "是" : "否";
  465. },
  466. },
  467. {
  468. title: "总年限",
  469. dataIndex: "yearSum",
  470. key: "yearSum",
  471. render: (text, record) => {
  472. return (
  473. <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
  474. );
  475. }
  476. },
  477. {
  478. title: "年限",
  479. dataIndex: "serviceLife",
  480. key: "serviceLife",
  481. render: (text, record) => {
  482. return (
  483. <div>{!!text && JSON.parse(text).toString()}</div>
  484. );
  485. }
  486. },
  487. {
  488. title: "本次派单",
  489. dataIndex: "serviceYear",
  490. key: "serviceYear",
  491. render: (text, record) => {
  492. return (
  493. <div>{!text ? "" : text}</div>
  494. );
  495. }
  496. },
  497. {
  498. title: "项目说明",
  499. dataIndex: "taskComment",
  500. key: "taskComment",
  501. render: (text) => {
  502. return (
  503. <Tooltip title={text}>
  504. <div
  505. style={{
  506. width: 100,
  507. overflow: "hidden",
  508. whiteSpace: "nowrap",
  509. textOverflow: "ellipsis",
  510. }}
  511. >{text}</div>
  512. </Tooltip>
  513. )
  514. },
  515. },
  516. ],
  517. columnsrizhi: [
  518. {
  519. title: "流程",
  520. dataIndex: "processName",
  521. key: "processName",
  522. },
  523. {
  524. title: "操作人",
  525. dataIndex: "adminName",
  526. key: "adminName",
  527. },
  528. {
  529. title: "时间",
  530. dataIndex: "createDate",
  531. key: "createDate",
  532. },
  533. ],
  534. dataSourceX: [],
  535. ContactsListsNew: [
  536. {
  537. title: "项目名称",
  538. dataIndex: "commodityName",
  539. key: "commodityName",
  540. render: (text, record) => {
  541. return <span>{text + "-" + record.tid}</span>;
  542. },
  543. },
  544. {
  545. title: "项目分类",
  546. dataIndex: "projectType",
  547. key: "projectType",
  548. render: (text) => {
  549. let arr = this.state.dataSourceX || [];
  550. let str = "";
  551. for (let i = 0; i < arr.length; i++) {
  552. if (this.state.dataSourceX[i].sort == text) {
  553. str = this.state.dataSourceX[i].cname;
  554. return <span>{str}</span>;
  555. }
  556. }
  557. },
  558. },
  559. {
  560. title: "催款科目",
  561. dataIndex: "dunTypeName",
  562. key: "dunTypeName",
  563. render: (text, record) => {
  564. if (record.customizeName) {
  565. return text + record.customizeName;
  566. }
  567. return <span>{text}</span>;
  568. },
  569. },
  570. {
  571. title: "时间(天)",
  572. dataIndex: "waitDay",
  573. key: "waitDay",
  574. render: (text, record) => {
  575. if (record.dunTypeName) {
  576. if (record.customizeTimes) {
  577. return record.customizeTimes;
  578. }
  579. if (text == 0) {
  580. var str = "当天";
  581. } else if (!text) {
  582. var str = "";
  583. } else {
  584. var str = text + "天";
  585. }
  586. return <span>{str}</span>;
  587. }
  588. },
  589. },
  590. {
  591. title: "金额(万元)",
  592. dataIndex: "money",
  593. key: "money",
  594. render: (text, record) => {
  595. if (record.dunTypeName) {
  596. if (record.appropriationRatio) {
  597. let percent = Number(record.appropriationRatio * 100).toFixed(2);
  598. percent += "%";
  599. return <span>{percent}(拨款比例)</span>;
  600. } else {
  601. return <span>{text}</span>;
  602. }
  603. }
  604. },
  605. },
  606. {
  607. title: "服务年限",
  608. dataIndex: "startDate",
  609. key: "startDate",
  610. render: (text, record) => {
  611. if (record.dunTypeName) {
  612. return <span>{text}</span>;
  613. }
  614. },
  615. },
  616. {
  617. title: "催款状态",
  618. dataIndex: "status",
  619. key: "status",
  620. render: (text) => {
  621. return <span>{text == 1 ? "已启动" : "未启动"}</span>;
  622. },
  623. },
  624. ],
  625. ContactsLists: [
  626. {
  627. title: "催款科目",
  628. dataIndex: "dunSubject",
  629. key: "dunSubject",
  630. render: (text) => {
  631. return getjiedian(text);
  632. },
  633. },
  634. {
  635. title: "金额(万元)",
  636. visible订单详情dataIndex: "money",
  637. key: "money",
  638. },
  639. {
  640. title: "催款状态",
  641. dataIndex: "dunStatus",
  642. key: "dunStatus",
  643. render: (text) => {
  644. return getCuikuan(text);
  645. },
  646. },
  647. ],
  648. };
  649. },
  650. //页面加载函数
  651. componentWillMount() {
  652. this.loadData();
  653. },
  654. //整行点击
  655. tableRowClick(record) {
  656. this.setState({
  657. visible: true,
  658. orderStatus: record.orderStatus,
  659. id: record.id,
  660. orderNos: record.orderNo
  661. });
  662. this.xiangqing(record.orderNo);
  663. this.xiangmu(record.orderNo);
  664. this.jiedian(record.orderNo);
  665. this.jiedianNew(record.orderNo);
  666. },
  667. //点击打卡项目详情
  668. tableRowClickX(record) {
  669. if (record.type == "1") {
  670. this.setState({
  671. displayFees: "block",
  672. costReduction: record.costReduction,
  673. officialCost: record.officialCost,
  674. });
  675. } else {
  676. this.setState({
  677. displayFees: "none",
  678. });
  679. }
  680. this.setState({
  681. jid: record.id, //项目ID
  682. kid: record.commodityId, //商品ID
  683. commodityName: record.commodityName, //金额
  684. commodityPrice: record.commodityPrice, //金额
  685. commodityQuantity: record.commodityQuantity, //数量
  686. taskComment: record.taskComment, //备注
  687. main: record.main.toString(), //是否为主要
  688. addnextVisible: true,
  689. dataInfor: record,
  690. addState: 0,
  691. });
  692. },
  693. //项目详情关闭
  694. nextCancel() {
  695. this.setState({
  696. addnextVisible: false,
  697. displayFees: "none",
  698. officialCost: "", //是否有官费
  699. costReduction: "", //是否有费减
  700. });
  701. },
  702. //订单详情
  703. xiangqing(orderNos) {
  704. $.ajax({
  705. method: "get",
  706. dataType: "json",
  707. crossDomain: false,
  708. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  709. data: {
  710. orderNo: orderNos,
  711. },
  712. success: function (data) {
  713. if (data.error.length || data.data.list == "") {
  714. if (data.error && data.error.length) {
  715. message.warning(data.error[0].message);
  716. }
  717. } else {
  718. let thisdata = data.data;
  719. this.setState({
  720. orderUid: thisdata.uid,
  721. userType: thisdata.userType,//
  722. salesType: thisdata.salesType, //销售类型
  723. other: thisdata.other,
  724. orderNo: thisdata.orderNo, //订单编号
  725. contractNo: thisdata.contractNo, //合同编号
  726. userName: thisdata.userName, //客户名称
  727. signDate: thisdata.signDate, //签单时间
  728. examineName: thisdata.examineName,
  729. processStatus: thisdata.processStatus, //流程状态
  730. liquidationStatus: thisdata.liquidationStatus, //结算状态
  731. contacts: thisdata.contacts, //企业联系人
  732. contactMobile: thisdata.contactMobile, //联系人电话
  733. legalPerson: thisdata.legalPerson, //法人
  734. legalPersonTel: thisdata.legalPersonTel, //法人电话
  735. firstAmount: thisdata.firstAmount, //签单金额
  736. totalAmount: thisdata.totalAmount, //首付金额
  737. approval: thisdata.approval, //特批状态
  738. settlementAmount: thisdata.settlementAmount, //已收款项
  739. orderRemarks: thisdata.orderRemarks, //订单留言
  740. orgCodeUrl: thisdata.contractPictureUrl
  741. ? splitUrl(
  742. thisdata.contractPictureUrl,
  743. ",",
  744. globalConfig.avatarHost + "/upload"
  745. )
  746. : [], //图片地址
  747. replenishUrl: thisdata.agreementUrl
  748. ? splitUrl(
  749. thisdata.agreementUrl,
  750. ",",
  751. globalConfig.avatarHost + "/upload"
  752. )
  753. : [], //图片地址
  754. contentUrl: thisdata.serviceContent
  755. ? splitUrl(
  756. thisdata.serviceContent,
  757. ",",
  758. globalConfig.avatarHost + "/upload"
  759. )
  760. : [], //图片地址
  761. salesmanName: thisdata.salesmanName, //营销员名称
  762. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  763. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  764. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  765. financeName: thisdata.financeName, //财务名称
  766. financeMobile: thisdata.financeMobile, //财务电话
  767. nowFinance: thisdata.nowFinance, //财务名称
  768. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  769. depName: thisdata.depName,
  770. outsource: thisdata.outsource == 0 ? "否" : "是",
  771. deleteSign: thisdata.deleteSign,
  772. // 高新纯咨询合同说明
  773. knowledgeServices: thisdata.knowledgeServices, //知识产权服务
  774. auditServices: thisdata.auditServices, //审计服务
  775. addDeductionServices: thisdata.addDeductionServices, //加计扣除服务
  776. knowledgeOther: thisdata.knowledgeOther, //知识产权服务其他描述
  777. auditOther: thisdata.auditOther, //审计服务其他描述
  778. addDeductionOther: thisdata.addDeductionOther, //加计扣除服务其他描述
  779. });
  780. }
  781. }.bind(this),
  782. }).always(
  783. function () {
  784. this.setState({
  785. loading: false,
  786. });
  787. }.bind(this)
  788. );
  789. },
  790. //项目列表
  791. xiangmu(orderNos) {
  792. $.ajax({
  793. method: "get",
  794. dataType: "json",
  795. crossDomain: false,
  796. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  797. data: {
  798. orderNo: orderNos,
  799. },
  800. success: function (data) {
  801. let theArr = [];
  802. if (data.error.length || data.data.list == "") {
  803. if (data.error && data.error.length) {
  804. message.warning(data.error[0].message);
  805. }
  806. } else {
  807. for (let i = 0; i < data.data.length; i++) {
  808. let thisdata = data.data[i];
  809. thisdata.key = i;
  810. thisdata.sort = thisdata.cSort;
  811. theArr.push(thisdata);
  812. }
  813. }
  814. this.setState({
  815. dataSourceX: theArr,
  816. });
  817. }.bind(this),
  818. }).always(
  819. function () {
  820. this.setState({
  821. loading: false,
  822. });
  823. }.bind(this)
  824. );
  825. },
  826. rizhi() {
  827. this.setState({
  828. loading: true,
  829. });
  830. $.ajax({
  831. method: "get",
  832. dataType: "json",
  833. crossDomain: false,
  834. url: "/api/admin/newOrder/selectOrderLog",
  835. data: {
  836. orderNo: this.state.orderNo,
  837. },
  838. success: function (data) {
  839. let theArr = [];
  840. let thisData = data.data;
  841. if (!thisData.length) {
  842. if (data.error && data.error.length) {
  843. message.warning(data.error[0].message);
  844. }
  845. thisData = {};
  846. } else {
  847. for (let i = 0; i < data.data.length; i++) {
  848. let thisdata = data.data[i];
  849. theArr.push({
  850. processName: thisdata.processName,
  851. adminName: thisdata.adminName,
  852. createDate: thisdata.createDate,
  853. remarks: thisdata.remarks,
  854. });
  855. }
  856. }
  857. this.setState({
  858. dataSourcerizhi: theArr,
  859. });
  860. }.bind(this),
  861. }).always(
  862. function () {
  863. this.setState({
  864. loading: false,
  865. });
  866. }.bind(this)
  867. );
  868. },
  869. // 拆分详细
  870. showRes(record) {
  871. this.setState({
  872. resVisible: true,
  873. resRecord: record,
  874. });
  875. },
  876. resCancel() {
  877. this.setState({
  878. resVisible: false,
  879. });
  880. },
  881. getOrderLog() {
  882. this.setState({
  883. rizhivisible: true,
  884. });
  885. this.rizhi();
  886. },
  887. closeOrderLog() {
  888. this.setState({
  889. rizhivisible: false,
  890. });
  891. },
  892. //节点列表
  893. jiedian(orderNos) {
  894. $.ajax({
  895. method: "get",
  896. dataType: "json",
  897. crossDomain: false,
  898. url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
  899. data: {
  900. orderNo: orderNos,
  901. },
  902. success: function (data) {
  903. let theArr = [];
  904. let thisData = [];
  905. if (data.error.length || data.data.list == "") {
  906. if (data.error && data.error.length) {
  907. message.warning(data.error[0].message);
  908. }
  909. } else {
  910. for (let i = 0; i < data.data.length; i++) {
  911. thisData = data.data[i];
  912. theArr.push({
  913. key: i,
  914. dunSubject: thisData.dunSubject
  915. ? thisData.dunSubject.toString()
  916. : "", //催款科目
  917. id: thisData.id, //节点Id
  918. money: thisData.money, //催款金额
  919. dunStatus: thisData.dunStatus, //催款状态
  920. });
  921. }
  922. this.setState({
  923. contactList: theArr,
  924. });
  925. }
  926. }.bind(this),
  927. }).always(
  928. function () {
  929. this.setState({
  930. loading: false,
  931. });
  932. }.bind(this)
  933. );
  934. },
  935. //查看催款节点
  936. jiedianNew(orderNos) {
  937. $.ajax({
  938. method: "get",
  939. dataType: "json",
  940. crossDomain: false,
  941. url:
  942. globalConfig.context + "/api/admin/newOrderDun/selectListNewOrderDun",
  943. data: {
  944. orderNo: orderNos,
  945. },
  946. success: function (data) {
  947. if (data.error && data.error.length) {
  948. message.warning(data.error[0].message);
  949. } else {
  950. let theArr = [];
  951. let thisData = [];
  952. let arr = data.data || [];
  953. let totalCui = 0;
  954. for (let i = 0; i < arr.length; i++) {
  955. thisData = arr[i];
  956. totalCui += +thisData.money;
  957. theArr.push({
  958. key: i,
  959. dunSubject: thisData.dunSubject
  960. ? thisData.dunSubject.toString()
  961. : "", //催款科目
  962. id: thisData.id, //节点Id
  963. money: thisData.money, //催款金额
  964. // orderNo: record ? record.orderNo : this.props.datauser.orderNo,
  965. commodityName: thisData.commodityName,
  966. projectType: thisData.projectType,
  967. dunTypeName: thisData.dunTypeName,
  968. status: thisData.status,
  969. waitDay: thisData.waitDay,
  970. effectiveCount: thisData.effectiveCount,
  971. startDate: thisData.startDate,
  972. dunType: thisData.dunType,
  973. appropriationRatio: thisData.appropriationRatio,
  974. customizeName: thisData.customizeName,
  975. customizeTimes: thisData.customizeTimes,
  976. tid: thisData.tid,
  977. });
  978. }
  979. if (!totalCui) {
  980. totalCui = 0;
  981. }
  982. totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6);
  983. this.setState({
  984. contactListNew: theArr,
  985. totalCui,
  986. });
  987. }
  988. }.bind(this),
  989. }).always(
  990. function () {
  991. this.setState({
  992. loading: false,
  993. });
  994. }.bind(this)
  995. );
  996. },
  997. //审核通过
  998. examOk() {
  999. if (!this.state.reason) {
  1000. message.warning("请填写备注信息");
  1001. return;
  1002. }
  1003. if (!this.state.reason.replace(/\s+/g, '')) {
  1004. message.warning("请填写备注信息");
  1005. return;
  1006. }
  1007. if (this.state.flag) return;
  1008. this.setState({
  1009. flag: true,
  1010. loading: true,
  1011. });
  1012. $.ajax({
  1013. method: "post",
  1014. dataType: "json",
  1015. crossDomain: false,
  1016. url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
  1017. data: {
  1018. orderNo: this.state.orderNo,
  1019. orderStatus: 2,
  1020. reason: this.state.reason,
  1021. },
  1022. success: function (data) {
  1023. if (data.error.length || data.data.list == "") {
  1024. if (data.error && data.error.length) {
  1025. message.warning(data.error[0].message);
  1026. this.setState({
  1027. flag: false,
  1028. });
  1029. }
  1030. } else {
  1031. message.success("该订单已通过审核~");
  1032. this.setState({
  1033. visible: false,
  1034. flag: false,
  1035. agreeVisible: false,
  1036. });
  1037. this.reset();
  1038. }
  1039. }.bind(this),
  1040. }).always(
  1041. function () {
  1042. this.setState({
  1043. loading: false,
  1044. });
  1045. }.bind(this)
  1046. );
  1047. },
  1048. //通过发给外包
  1049. outsourcing() {
  1050. if (this.state.flag) return;
  1051. this.setState({
  1052. flag: true,
  1053. loading: true,
  1054. });
  1055. $.ajax({
  1056. method: "post",
  1057. dataType: "json",
  1058. crossDomain: false,
  1059. url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
  1060. data: {
  1061. orderNo: this.state.orderNo,
  1062. orderStatus: 2,
  1063. outsource: 1,
  1064. },
  1065. success: function (data) {
  1066. if (data.error.length || data.data.list == "") {
  1067. if (data.error && data.error.length) {
  1068. message.warning(data.error[0].message);
  1069. this.setState({
  1070. flag: false,
  1071. });
  1072. }
  1073. } else {
  1074. message.success("该订单已通过审核~");
  1075. this.setState({
  1076. visible: false,
  1077. flag: false,
  1078. });
  1079. this.reset();
  1080. }
  1081. }.bind(this),
  1082. }).always(
  1083. function () {
  1084. this.setState({
  1085. loading: false,
  1086. });
  1087. }.bind(this)
  1088. );
  1089. },
  1090. //审核不通过
  1091. examOks() {
  1092. if (!this.state.reason) {
  1093. message.warn("请先填写拒绝理由");
  1094. return
  1095. }
  1096. if (!this.state.reason.replace(/\s+/g, '')) {
  1097. message.warning("请先填写拒绝理由");
  1098. return;
  1099. }
  1100. this.setState({
  1101. loading: true,
  1102. });
  1103. this.setState({
  1104. aloading: true,
  1105. });
  1106. $.ajax({
  1107. method: "post",
  1108. dataType: "json",
  1109. crossDomain: false,
  1110. url: globalConfig.context + "/api/admin/newOrder/auditOrderNew",
  1111. data: {
  1112. orderNo: this.state.orderNo,
  1113. orderStatus: 3,
  1114. reason: this.state.reason,
  1115. },
  1116. success: function (data) {
  1117. if (data.error.length || data.data.list == "") {
  1118. if (data.error && data.error.length) {
  1119. message.warning(data.error[0].message);
  1120. this.setState({
  1121. aloading: false,
  1122. loading: false,
  1123. });
  1124. }
  1125. } else {
  1126. message.success("该订单已被拒绝~");
  1127. this.setState({
  1128. visible: false,
  1129. aloading: false,
  1130. noVisible: false,
  1131. reason: "",
  1132. loading: false,
  1133. });
  1134. this.reset();
  1135. }
  1136. }.bind(this),
  1137. }).always(
  1138. function () {
  1139. this.setState({
  1140. loading: false,
  1141. });
  1142. }.bind(this)
  1143. );
  1144. },
  1145. //点击拒绝
  1146. examNo() {
  1147. this.setState({
  1148. noVisible: true,
  1149. });
  1150. },
  1151. callback(key) {
  1152. let url = window.location.href.substring(7);
  1153. this.setState({
  1154. activeKey: key,
  1155. });
  1156. if (this.state.pictureUrl.length) {
  1157. let picArr = [];
  1158. this.state.pictureUrl.map(function (item) {
  1159. if (
  1160. item.response &&
  1161. item.response.data &&
  1162. item.response.data.length
  1163. ) {
  1164. picArr.push(item.response.data);
  1165. }
  1166. });
  1167. }
  1168. if (key === "2") {
  1169. this.setState({
  1170. loading: true,
  1171. });
  1172. $.ajax({
  1173. method: "get",
  1174. dataType: "json",
  1175. crossDomain: false,
  1176. url:
  1177. globalConfig.context +
  1178. "/api/admin/outsourceOrg/orderOutsourceDtails",
  1179. data: {
  1180. orderNo: this.state.orderNo,
  1181. },
  1182. success: function (data) {
  1183. if (data.data) {
  1184. let thisdata = data.data;
  1185. this.setState({
  1186. id: thisdata.id,
  1187. createTimes: thisdata.createTimes,
  1188. auditTimes: thisdata.auditTimes,
  1189. remarks: thisdata.remarks,
  1190. attachmentUrl: thisdata.attachmentUrl
  1191. ? splitUrl(
  1192. thisdata.attachmentUrl,
  1193. ",",
  1194. globalConfig.avatarHost + "/upload",
  1195. url
  1196. )
  1197. : [],
  1198. fileUrl: thisdata.attachmentUrl
  1199. ? splitUrl(
  1200. thisdata.attachmentUrl,
  1201. ",",
  1202. globalConfig.avatarHost + "/upload",
  1203. url
  1204. )
  1205. : [],
  1206. pictureUrl: thisdata.pictureUrl
  1207. ? splitUrl(
  1208. thisdata.pictureUrl,
  1209. ",",
  1210. globalConfig.avatarHost + "/upload",
  1211. url
  1212. )
  1213. : [], //图片地址
  1214. amount: thisdata.amount,
  1215. companyName: thisdata.companyName,
  1216. outsourceRemarks: thisdata.outsourceRemarks,
  1217. unitNumber: thisdata.unitNumber,
  1218. unitPrice: thisdata.unitPrice,
  1219. });
  1220. }
  1221. }.bind(this),
  1222. }).always(
  1223. function () {
  1224. this.setState({
  1225. loading: false,
  1226. });
  1227. }.bind(this)
  1228. );
  1229. }
  1230. },
  1231. getUrl(url) {
  1232. let theorgCodeUrl = [];
  1233. if (url.length) {
  1234. let picArr = [];
  1235. url.map(function (item) {
  1236. if (
  1237. item.response &&
  1238. item.response.data &&
  1239. item.response.data.length
  1240. ) {
  1241. picArr.push(item.response.data);
  1242. }
  1243. });
  1244. theorgCodeUrl = picArr.join(",");
  1245. }
  1246. return theorgCodeUrl;
  1247. },
  1248. sureOut() {
  1249. this.setState({
  1250. loading: true,
  1251. });
  1252. if (!this.state.companyName) {
  1253. message.warning("公司名称不能为空");
  1254. return;
  1255. }
  1256. if (!this.state.unitPrice) {
  1257. message.warning("单价不能为空");
  1258. return;
  1259. }
  1260. if (moneyVerify(this.state.unitPrice)) {
  1261. return;
  1262. }
  1263. if (!this.state.unitNumber) {
  1264. message.warning("数量不能为空");
  1265. return;
  1266. }
  1267. if (!this.state.amount) {
  1268. message.warning("总金额不能为空");
  1269. return;
  1270. }
  1271. if (moneyVerify(this.state.amount)) {
  1272. return;
  1273. }
  1274. if (!this.state.outsourceRemarks) {
  1275. message.warning("备注不能为空");
  1276. return;
  1277. }
  1278. if (this.state.pictureUrl.length === 0) {
  1279. message.warning("合同扫描件不能为空");
  1280. return;
  1281. }
  1282. $.ajax({
  1283. method: "POST",
  1284. dataType: "json",
  1285. crossDomain: false,
  1286. url: globalConfig.context + "/api/admin/outsourceOrg/auditOutsource",
  1287. data: {
  1288. id: this.state.id,
  1289. orderNo: this.state.orderNo,
  1290. companyName: this.state.companyName,
  1291. amount: this.state.amount,
  1292. outsourceRemarks: this.state.outsourceRemarks,
  1293. unitNumber: this.state.unitNumber,
  1294. unitPrice: this.state.unitPrice,
  1295. attachmentUrl: this.getUrl(this.state.attachmentUrl).length
  1296. ? this.getUrl(this.state.attachmentUrl)
  1297. : "",
  1298. orderStatus: 2,
  1299. pictureUrl: this.getUrl(this.state.pictureUrl).length
  1300. ? this.getUrl(this.state.pictureUrl)
  1301. : "",
  1302. },
  1303. }).done(
  1304. function (data) {
  1305. this.setState({
  1306. loading: false,
  1307. });
  1308. if (!data.error.length) {
  1309. message.success("发起成功!");
  1310. this.outReset();
  1311. this.visitCancel();
  1312. } else {
  1313. message.warning(data.error[0].message);
  1314. }
  1315. }.bind(this)
  1316. );
  1317. },
  1318. //关闭输入理由框
  1319. noCancel() {
  1320. this.setState({
  1321. noVisible: false,
  1322. aloading: false,
  1323. reason: "",
  1324. });
  1325. },
  1326. //搜索
  1327. search() {
  1328. this.setState({
  1329. //signBillVisible:false
  1330. });
  1331. this.loadData();
  1332. },
  1333. //重置
  1334. reset() {
  1335. this.setState({
  1336. signBillVisible: false,
  1337. });
  1338. this.state.orderNoSearch = "";
  1339. this.state.customerName = "";
  1340. this.state.releaseDate[0] = undefined;
  1341. this.state.releaseDate[1] = undefined;
  1342. this.state.approval = undefined;
  1343. this.state.approvalSearch = undefined;
  1344. this.state.amountStatus = undefined;
  1345. this.state.processStatusSearch = undefined;
  1346. this.state.projectType = undefined;
  1347. this.loadData(1);
  1348. },
  1349. outReset() {
  1350. this.setState({
  1351. companyName: "",
  1352. amount: "",
  1353. unitPrice: "",
  1354. unitNumber: "",
  1355. outsourceRemarks: "",
  1356. attachmentUrl: [],
  1357. pictureUrl: [],
  1358. });
  1359. },
  1360. resets() {
  1361. this.state.orderNo = "";
  1362. this.state.customerName = "";
  1363. this.state.releaseDate[0] = undefined;
  1364. this.state.releaseDate[1] = undefined;
  1365. },
  1366. getOrgCodeUrl(e) {
  1367. this.setState({ pictureUrl: e });
  1368. },
  1369. //关闭详情
  1370. visitCancel() {
  1371. this.setState(
  1372. {
  1373. visible: false,
  1374. },
  1375. () => {
  1376. this.setState({
  1377. activeKey: "1",
  1378. });
  1379. }
  1380. );
  1381. this.resets();
  1382. this.loadData(this.state.pageNo);
  1383. },
  1384. visitOk() {
  1385. this.setState({
  1386. visible: false,
  1387. });
  1388. this.resets();
  1389. },
  1390. showDeleteConfirm(fn) {
  1391. confirm({
  1392. title: <p style={{ fontSize: 16, fontWeight: 900 }}>注意</p>,
  1393. content: (
  1394. <p style={{ fontWeight: 900, color: "red" }}>
  1395. 当前订单为外包单,您确定修改为普通订单?
  1396. </p>
  1397. ),
  1398. okText: "确定",
  1399. okType: "danger",
  1400. cancelText: "取消",
  1401. onOk() {
  1402. fn();
  1403. },
  1404. onCancel() { },
  1405. });
  1406. },
  1407. downImg() {
  1408. let num = 0;
  1409. for (let i = 0; i < this.state.orgCodeUrl.length; i++) {
  1410. if (this.state.orgCodeUrl[i].url == this.state.previewImage) {
  1411. num = i;
  1412. }
  1413. }
  1414. if (num == this.state.orgCodeUrl.length - 1) {
  1415. return message.warning("已经是最后一张了哦");
  1416. }
  1417. this.state.previewImage = this.state.orgCodeUrl[num + 1].url;
  1418. this.setState({
  1419. previewImage: this.state.previewImage,
  1420. rotateDeg: 0,
  1421. });
  1422. },
  1423. upImg() {
  1424. let num = 0;
  1425. for (let i = 0; i < this.state.orgCodeUrl.length; i++) {
  1426. if (this.state.orgCodeUrl[i].url == this.state.previewImage) {
  1427. num = i;
  1428. }
  1429. }
  1430. if (num == 0) {
  1431. return message.warning("已经是第一张了哦");
  1432. }
  1433. this.state.previewImage = this.state.orgCodeUrl[num - 1].url;
  1434. this.setState({
  1435. previewImage: this.state.previewImage,
  1436. rotateDeg: 0,
  1437. });
  1438. },
  1439. rotate() {
  1440. let rotateDeg = this.state.rotateDeg + 90;
  1441. this.setState({
  1442. rotateDeg,
  1443. });
  1444. },
  1445. downImgs() {
  1446. let num = 0;
  1447. for (let i = 0; i < this.state.replenishUrl.length; i++) {
  1448. if (this.state.replenishUrl[i].url == this.state.previewImage) {
  1449. num = i;
  1450. }
  1451. }
  1452. if (num == this.state.replenishUrl.length - 1) {
  1453. return message.warning("已经是最后一张了哦");
  1454. }
  1455. this.state.previewImage = this.state.replenishUrl[num + 1].url;
  1456. this.setState({
  1457. previewImage: this.state.previewImage,
  1458. rotateDeg: 0,
  1459. });
  1460. },
  1461. upImgs() {
  1462. let num = 0;
  1463. for (let i = 0; i < this.state.replenishUrl.length; i++) {
  1464. if (this.state.replenishUrl[i].url == this.state.previewImage) {
  1465. num = i;
  1466. }
  1467. }
  1468. if (num == 0) {
  1469. return message.warning("已经是第一张了哦");
  1470. }
  1471. this.state.previewImage = this.state.replenishUrl[num - 1].url;
  1472. this.setState({
  1473. previewImage: this.state.previewImage,
  1474. rotateDeg: 0,
  1475. });
  1476. },
  1477. rotates() {
  1478. let rotateDeg = this.state.rotateDeg + 90;
  1479. this.setState({
  1480. rotateDeg,
  1481. });
  1482. },
  1483. changeList(arr) {
  1484. const newArr = [];
  1485. this.state.columns.forEach(item => {
  1486. arr.forEach(val => {
  1487. if (val === item.title) {
  1488. newArr.push(item);
  1489. }
  1490. });
  1491. });
  1492. this.setState({
  1493. changeList: newArr
  1494. });
  1495. },
  1496. // 可展开颜色不同
  1497. addRowColor(record) {
  1498. if (!!record.splitList && record.splitList.length > 0) {
  1499. return 'light'
  1500. } else {
  1501. return 'dark'
  1502. }
  1503. },
  1504. render() {
  1505. const expandedRowRenderVip = (e) => {
  1506. const data = e.splitList;
  1507. let columns = [];
  1508. if (data instanceof Array && data.length) {
  1509. if (e.cSort == 6) {
  1510. columns = [
  1511. {
  1512. title: "负责人",
  1513. dataIndex: "receiverName",
  1514. key: "receiverName",
  1515. },
  1516. {
  1517. title: "负责人电话",
  1518. dataIndex: "receiverMobile",
  1519. key: "receiverMobile",
  1520. },
  1521. {
  1522. title: "项目状态",
  1523. dataIndex: "projectStatus",
  1524. key: "projectStatus",
  1525. render: (text) => {
  1526. return getProjectName(text);
  1527. },
  1528. },
  1529. {
  1530. title: "本次派单",
  1531. dataIndex: "serviceYear",
  1532. key: "serviceYear",
  1533. },
  1534. {
  1535. title: "项目说明",
  1536. dataIndex: "taskComment",
  1537. key: "taskComment",
  1538. render: (text) => {
  1539. return (
  1540. <Tooltip title={text}>
  1541. <div
  1542. // style={{
  1543. // width: 100,
  1544. // overflow: "hidden",
  1545. // whiteSpace: "nowrap",
  1546. // textOverflow: "ellipsis",
  1547. // }}
  1548. >{text}</div>
  1549. </Tooltip>
  1550. )
  1551. },
  1552. },
  1553. ];
  1554. } else {
  1555. columns = [
  1556. {
  1557. title: "子项目名称",
  1558. dataIndex: "taskName",
  1559. key: "taskName"
  1560. },
  1561. {
  1562. title: "子项目数量",
  1563. dataIndex: "commodityQuantity",
  1564. key: "commodityQuantity"
  1565. },
  1566. {
  1567. title: "拆分操作人",
  1568. dataIndex: "splitAname",
  1569. key: "splitAname"
  1570. },
  1571. {
  1572. title: "项目负责人",
  1573. dataIndex: "receiverName",
  1574. key: "receiverName"
  1575. },
  1576. {
  1577. title: "拆分时间",
  1578. dataIndex: "splitTimes",
  1579. key: "splitTimes"
  1580. }
  1581. ]
  1582. }
  1583. return (
  1584. <Table
  1585. columns={columns}
  1586. dataSource={data}
  1587. pagination={false}
  1588. />
  1589. );
  1590. } else {
  1591. columns = [];
  1592. return (
  1593. <p
  1594. style={{ fontWeight: "bold", color: "red", textAlign: "center" }}
  1595. >
  1596. {e.cSort == 6 ? "暂无派单" : "此项目暂未拆分"}
  1597. </p>
  1598. );
  1599. }
  1600. };
  1601. const formItemLayout = {
  1602. labelCol: { span: 10 },
  1603. wrapperCol: { span: 14 },
  1604. };
  1605. const FormItem = Form.Item;
  1606. const { TabPane } = Tabs;
  1607. const { TextArea } = Input;
  1608. const { RangePicker } = DatePicker;
  1609. const cuiDataList = this.state.contactList || [];
  1610. return (
  1611. <div className="user-content">
  1612. {this.state.resVisible ? (
  1613. <ResolutionDetail
  1614. cancel={this.resCancel}
  1615. detail={this.state.resRecord}
  1616. visible={this.state.resVisible}
  1617. id={this.state.resRecord.orderNo}
  1618. />
  1619. ) : (
  1620. ""
  1621. )}
  1622. <ShowModalDiv ShowModal={this.state.showModal} />
  1623. <div className="content-title" style={{ marginBottom: 10 }}>
  1624. <span style={{ fontWeight: 900, fontSize: 16 }}>订单审核</span>
  1625. </div>
  1626. <Tabs defaultActiveKey="1" onChange={this.callback} className="test">
  1627. <TabPane tab="搜索" key="1">
  1628. <div className="user-search">
  1629. <Input
  1630. placeholder="客户名称"
  1631. style={{
  1632. width: "150px",
  1633. marginBottom: "10px",
  1634. marginLeft: 10,
  1635. }}
  1636. value={this.state.customerName}
  1637. onChange={(e) => {
  1638. this.setState({ customerName: e.target.value });
  1639. }}
  1640. />
  1641. <Input
  1642. placeholder="订单编号"
  1643. style={{ width: "150px" }}
  1644. value={this.state.orderNoSearch}
  1645. onChange={(e) => {
  1646. this.setState({ orderNoSearch: e.target.value });
  1647. }}
  1648. />
  1649. <Select
  1650. style={{ width: 120 }}
  1651. placeholder="特批状态"
  1652. value={this.state.approvalSearch}
  1653. onChange={(e) => {
  1654. this.setState({
  1655. approvalSearch: e,
  1656. });
  1657. }}
  1658. >
  1659. <Option value="0">非特批</Option>
  1660. <Option value="1">特批待审</Option>
  1661. <Option value="2">特批通过</Option>
  1662. <Option value="4">全部特批</Option>
  1663. </Select>
  1664. <Select
  1665. style={{ width: 120 }}
  1666. placeholder="签单金额"
  1667. value={this.state.amountStatus}
  1668. onChange={(e) => {
  1669. this.setState({
  1670. amountStatus: e,
  1671. });
  1672. }}
  1673. >
  1674. <Option value="0">10万元以下</Option>
  1675. <Option value="1">10~20万元</Option>
  1676. <Option value="2">20~30万元</Option>
  1677. <Option value="3">30~40万元</Option>
  1678. <Option value="4">40万元以上</Option>
  1679. </Select>
  1680. <Select
  1681. style={{ width: 120 }}
  1682. placeholder="会员状态"
  1683. value={this.state.projectType}
  1684. onChange={(e) => {
  1685. this.setState({
  1686. projectType: e,
  1687. });
  1688. }}
  1689. >
  1690. <Option value="1">会员</Option>
  1691. <Option value="0">非会员</Option>
  1692. </Select>
  1693. <Select
  1694. style={{ width: 150 }}
  1695. placeholder="流程状态"
  1696. value={this.state.processStatusSearch}
  1697. onChange={e => {
  1698. this.setState({
  1699. processStatusSearch: e
  1700. });
  1701. }}
  1702. >
  1703. <Option value="">全部</Option>
  1704. {
  1705. processStatus.map((item) =>
  1706. <Option value={item.value} key={item.value}>{item.key}</Option>
  1707. )
  1708. }
  1709. </Select>
  1710. <span style={{ marginRight: "10px" }}>下单时间 :</span>
  1711. <RangePicker
  1712. value={[
  1713. this.state.releaseDate[0]
  1714. ? moment(this.state.releaseDate[0])
  1715. : null,
  1716. this.state.releaseDate[1]
  1717. ? moment(this.state.releaseDate[1])
  1718. : null,
  1719. ]}
  1720. onChange={(data, dataString) => {
  1721. this.setState({ releaseDate: dataString });
  1722. }}
  1723. />
  1724. <Button
  1725. type="primary"
  1726. onClick={this.search}
  1727. style={{ marginLeft: "10px" }}
  1728. >
  1729. 搜索
  1730. </Button>
  1731. <Button onClick={this.reset}>重置</Button>
  1732. </div>
  1733. </TabPane>
  1734. <TabPane tab="更改表格显示数据" key="2">
  1735. <div style={{ marginLeft: 10 }}>
  1736. <ChooseList
  1737. columns={this.state.columns}
  1738. changeFn={this.changeList}
  1739. changeList={this.state.changeList}
  1740. top={55}
  1741. margin={11}
  1742. />
  1743. </div>
  1744. </TabPane>
  1745. </Tabs>
  1746. <div className="patent-table">
  1747. <Spin spinning={this.state.loading}>
  1748. <Table
  1749. columns={
  1750. this.state.changeList
  1751. ? this.state.changeList
  1752. : this.state.columns
  1753. }
  1754. dataSource={this.state.dataSource}
  1755. pagination={this.state.pagination}
  1756. onRowClick={this.tableRowClick}
  1757. bordered
  1758. size="small"
  1759. />
  1760. </Spin>
  1761. {this.state.visible &&
  1762. <Modal
  1763. maskClosable={false}
  1764. className="customeDetails"
  1765. footer=""
  1766. width="1200px"
  1767. visible={this.state.visible}
  1768. onOk={this.visitOk}
  1769. onCancel={this.visitCancel}
  1770. >
  1771. <Tabs activeKey={this.state.activeKey} onChange={this.callback}>
  1772. <TabPane tab="订单详情" key="1">
  1773. <Form
  1774. layout="horizontal"
  1775. onSubmit={this.handleSubmit}
  1776. id="demand-form"
  1777. style={{ paddingBottom: "40px" }}
  1778. >
  1779. <Spin spinning={this.state.loading}>
  1780. <div className="clearfix">
  1781. <div style={{ position: "absolute", top: '-30px', left: '92px', zIndex: 10000 }}>
  1782. <OrderItemStatus deleteSign={this.state.deleteSign} />
  1783. </div>
  1784. <FormItem
  1785. className="half-item"
  1786. {...formItemLayout}
  1787. label="订单编号"
  1788. >
  1789. <span>{this.state.orderNo}</span>
  1790. </FormItem>
  1791. <FormItem
  1792. className="half-item"
  1793. {...formItemLayout}
  1794. label="合同编号"
  1795. >
  1796. <span>{this.state.contractNo}</span>
  1797. </FormItem>
  1798. <FormItem
  1799. className="half-item"
  1800. {...formItemLayout}
  1801. label="客户名称"
  1802. >
  1803. <span>{this.state.userName}</span>
  1804. <EnterpriseNameChange
  1805. type='journal'
  1806. style={{ marginLeft: 10 }}
  1807. enterpriseId={this.state.orderUid} />
  1808. </FormItem>
  1809. <FormItem
  1810. className="half-item"
  1811. {...formItemLayout}
  1812. label="销售类型"
  1813. >
  1814. <span>
  1815. {(["私有客户-", "签单客户-"][this.state.userType] || " ") +
  1816. (salesList[this.state.salesType] || "")}
  1817. {
  1818. this.state.other != null && this.state.other != "" &&
  1819. <Tooltip title={this.state.other}>
  1820. <span>
  1821. {"(" + this.state.other.toString().slice(0, 10) + (this.state.other.toString().length > 9 ? "...)" : ")")}
  1822. </span>
  1823. </Tooltip>
  1824. }
  1825. </span>
  1826. {/* <span>{(["私有客户-", "签单客户-"][this.state.userType] || " ") +
  1827. (salesList[this.state.salesType] || "")}
  1828. </span> */}
  1829. </FormItem>
  1830. <FormItem
  1831. className="half-item"
  1832. {...formItemLayout}
  1833. label="合同签订时间"
  1834. >
  1835. <span>{this.state.signDate}</span>
  1836. </FormItem>
  1837. <FormItem
  1838. className="half-item"
  1839. {...formItemLayout}
  1840. label="流程状态"
  1841. >
  1842. <span>
  1843. {getProcessStatus(this.state.processStatus, this.state.examineName, this.state.approval)}
  1844. </span>
  1845. <FlowChart
  1846. orderNo={this.state.orderNo}
  1847. />
  1848. </FormItem>
  1849. <FormItem
  1850. className="half-item"
  1851. {...formItemLayout}
  1852. label="结算状态"
  1853. >
  1854. <span>
  1855. {getLiquidationStatus(this.state.liquidationStatus)}
  1856. </span>
  1857. </FormItem>
  1858. <FormItem
  1859. className="half-item"
  1860. {...formItemLayout}
  1861. label="企业联系人"
  1862. >
  1863. <span>{this.state.contacts}</span>
  1864. </FormItem>
  1865. <FormItem
  1866. className="half-item"
  1867. {...formItemLayout}
  1868. label="联系人电话"
  1869. >
  1870. <span>{this.state.contactMobile}</span>
  1871. </FormItem>
  1872. <FormItem
  1873. className="half-item"
  1874. {...formItemLayout}
  1875. label="企业法人"
  1876. >
  1877. <span>{this.state.legalPerson}</span>
  1878. </FormItem>
  1879. <FormItem
  1880. className="half-item"
  1881. {...formItemLayout}
  1882. label="法人电话"
  1883. >
  1884. <span>{this.state.legalPersonTel}</span>
  1885. </FormItem>
  1886. <FormItem
  1887. className="half-item"
  1888. {...formItemLayout}
  1889. label="签单金额(万元)"
  1890. >
  1891. <span>{this.state.totalAmount}</span>
  1892. </FormItem>
  1893. <FormItem
  1894. className="half-item"
  1895. {...formItemLayout}
  1896. label="首付金额(万元)"
  1897. >
  1898. <span>{this.state.firstAmount}</span>
  1899. </FormItem>
  1900. <FormItem
  1901. className="half-item"
  1902. {...formItemLayout}
  1903. label="特批立项"
  1904. >
  1905. <span>{getApprovedState(this.state.approval)}</span>
  1906. </FormItem>
  1907. <FormItem
  1908. className="half-item"
  1909. {...formItemLayout}
  1910. label="已收款项(万元)"
  1911. >
  1912. <span>{this.state.settlementAmount}</span>
  1913. </FormItem>
  1914. <FormItem
  1915. className="half-item"
  1916. {...formItemLayout}
  1917. label="订单部门"
  1918. >
  1919. <span>{this.state.depName}</span>
  1920. </FormItem>
  1921. <FormItem
  1922. className="half-item"
  1923. {...formItemLayout}
  1924. label="是否外包"
  1925. >
  1926. {this.state.outsource}
  1927. </FormItem>
  1928. <div className="clearfix">
  1929. <FormItem
  1930. labelCol={{ span: 5 }}
  1931. wrapperCol={{ span: 19 }}
  1932. label="订单留言"
  1933. >
  1934. <p style={{ width: 500, wordWrap: "break-word" }}>
  1935. {this.state.orderRemarks}
  1936. </p>
  1937. </FormItem>
  1938. </div>
  1939. <div className="clearfix">
  1940. <div>
  1941. <FormItem
  1942. labelCol={{ span: 5 }}
  1943. wrapperCol={{ span: 19 }}
  1944. label="合同扫描件"
  1945. >
  1946. <div style={{ paddingTop: '10px', paddingBottom: '10px' }}>
  1947. {this.state.orgCodeUrl && this.state.visible ? <ImgList fileList={this.state.orgCodeUrl} ItemWidth={'96px'} /> : <div />}
  1948. </div>
  1949. <Button
  1950. style={{
  1951. float: "right",
  1952. marginRight: "140px",
  1953. marginTop: "20px",
  1954. }}
  1955. onClick={this.getOrderLog}
  1956. >
  1957. 查看订单日志
  1958. </Button>
  1959. </FormItem>
  1960. {/* 高新纯咨询合同说明详情 */}
  1961. <Gxczx
  1962. knowledgeServices={this.state.knowledgeServices}
  1963. auditServices={this.state.auditServices}
  1964. addDeductionServices={this.state.addDeductionServices}
  1965. knowledgeOther={this.state.knowledgeOther}
  1966. auditOther={this.state.auditOther}
  1967. addDeductionOther={this.state.addDeductionOther}
  1968. />
  1969. <FormItem
  1970. labelCol={{ span: 5 }}
  1971. wrapperCol={{ span: 19 }}
  1972. label="补充协议"
  1973. >
  1974. <div style={{ paddingTop: '10px', paddingBottom: '10px' }}>
  1975. {this.state.replenishUrl && this.state.visible ? <ImgList domId={'examine1'} fileList={this.state.replenishUrl} ItemWidth={'96px'} /> : <div />}
  1976. </div>
  1977. </FormItem>
  1978. </div>
  1979. </div>
  1980. <ContentUrl
  1981. processStatus={2}
  1982. domId={"examineContents"}
  1983. contentUrl={this.state.contentUrl}
  1984. imgId={"examineContentsImg"}
  1985. />
  1986. <div className="clearfix">
  1987. <FormItem
  1988. className="half-item"
  1989. {...formItemLayout}
  1990. label="订单负责人"
  1991. >
  1992. <span>{this.state.salesmanName}</span>
  1993. </FormItem>
  1994. <FormItem
  1995. className="half-item"
  1996. {...formItemLayout}
  1997. label="订单负责人电话"
  1998. >
  1999. <span>{this.state.salesmanMobile}</span>
  2000. </FormItem>
  2001. </div>
  2002. <div className="clearfix">
  2003. <FormItem
  2004. className="half-item"
  2005. {...formItemLayout}
  2006. label="当前财务负责人"
  2007. >
  2008. <span>{this.state.nowFinance}</span>
  2009. </FormItem>
  2010. <FormItem
  2011. className="half-item"
  2012. {...formItemLayout}
  2013. label="当前财务负责人电话"
  2014. >
  2015. <span>{this.state.nowFinanceMobile}</span>
  2016. </FormItem>
  2017. </div>
  2018. <div className="clearfix">
  2019. <FormItem
  2020. className="half-item"
  2021. {...formItemLayout}
  2022. style={{ opacity: ".5" }}
  2023. label="原订单负责人"
  2024. >
  2025. <span>{this.state.oldSalesmanName}</span>
  2026. </FormItem>
  2027. <FormItem
  2028. className="half-item"
  2029. {...formItemLayout}
  2030. style={{ opacity: ".5" }}
  2031. label="原订单负责人电话"
  2032. >
  2033. <span>{this.state.oldSalesmanMobile}</span>
  2034. </FormItem>
  2035. </div>
  2036. <div className="clearfix">
  2037. <FormItem
  2038. className="half-item"
  2039. style={{ opacity: ".5" }}
  2040. {...formItemLayout}
  2041. label="实际财务操作人"
  2042. >
  2043. <span>{this.state.financeName}</span>
  2044. </FormItem>
  2045. <FormItem
  2046. className="half-item"
  2047. {...formItemLayout}
  2048. style={{ opacity: ".5" }}
  2049. label="实际财务操作人电话"
  2050. >
  2051. <span>{this.state.financeMobile}</span>
  2052. </FormItem>
  2053. </div>
  2054. {/* 协单人员 */}
  2055. <OrderCoor orderNo={this.state.orderNos} />
  2056. <div>
  2057. <span
  2058. style={{ marginLeft: "50px", fontSize: "20px" }}
  2059. >
  2060. 项目业务
  2061. </span>
  2062. {this.state.processStatus == 0 ? (
  2063. <Button
  2064. type="primary"
  2065. onClick={this.addDetailed}
  2066. style={{
  2067. float: "right",
  2068. marginRight: "50px",
  2069. marginBottom: "15px",
  2070. }}
  2071. >
  2072. 添加项目明细
  2073. </Button>
  2074. ) : (
  2075. ""
  2076. )}
  2077. </div>
  2078. <div className="patent-table">
  2079. <Spin spinning={this.state.loading}>
  2080. <Table
  2081. columns={this.state.columnsX}
  2082. dataSource={this.state.dataSourceX}
  2083. pagination={this.state.paginations}
  2084. onRowClick={this.tableRowClickX}
  2085. expandedRowRender={expandedRowRenderVip}
  2086. rowClassName={this.addRowColor}
  2087. bordered
  2088. size="small"
  2089. />
  2090. </Spin>
  2091. </div>
  2092. <div>
  2093. <span
  2094. style={{ marginLeft: "50px", fontSize: "20px" }}
  2095. >
  2096. 催款节点
  2097. </span>
  2098. <span
  2099. style={{
  2100. display: cuiDataList.length
  2101. ? "none"
  2102. : "inline-block",
  2103. marginLeft: 10,
  2104. color: "red",
  2105. }}
  2106. >
  2107. 金额总计(万元): {this.state.totalCui}
  2108. </span>
  2109. {this.state.processStatus == 0 ? (
  2110. <Button
  2111. type="primary"
  2112. onClick={this.addcontact}
  2113. style={{
  2114. float: "right",
  2115. marginRight: "50px",
  2116. marginBottom: "15px",
  2117. }}
  2118. >
  2119. 添加催款节点
  2120. </Button>
  2121. ) : (
  2122. ""
  2123. )}
  2124. </div>
  2125. <div className="clearfix">
  2126. <Spin spinning={this.state.loading}>
  2127. <Form layout="horizontal" id="demand-form">
  2128. <Table
  2129. pagination={false}
  2130. bordered
  2131. size="small"
  2132. columns={
  2133. cuiDataList.length
  2134. ? this.state.ContactsLists
  2135. : this.state.ContactsListsNew
  2136. }
  2137. dataSource={
  2138. cuiDataList.length
  2139. ? this.state.contactList
  2140. : this.state.contactListNew
  2141. }
  2142. />
  2143. <Col
  2144. span={24}
  2145. offset={9}
  2146. style={{ marginTop: "15px" }}
  2147. ></Col>
  2148. </Form>
  2149. </Spin>
  2150. </div>
  2151. <div
  2152. className="addSave"
  2153. style={{
  2154. marginTop: "15px",
  2155. display: "flex",
  2156. justifyContent: "center",
  2157. }}
  2158. >
  2159. <Button
  2160. type="primary"
  2161. onClick={() => {
  2162. this.setState({
  2163. agreeVisible: true,
  2164. reason: "",
  2165. });
  2166. }}
  2167. style={{ margin: "0 25px" }}
  2168. htmlType="submit"
  2169. >
  2170. 通过
  2171. </Button>
  2172. <Button
  2173. type="primary"
  2174. onClick={this.examNo}
  2175. style={{ margin: "0 25px" }}
  2176. htmlType="submit"
  2177. >
  2178. 驳回
  2179. </Button>
  2180. <Button
  2181. type="ghost"
  2182. onClick={this.visitCancel}
  2183. style={{ margin: "0 25px" }}
  2184. >
  2185. 取消
  2186. </Button>
  2187. {/*<Button className='warn-button' type="primary" onClick={this.outsourcing} style={{marginLeft:"50px"}}>通过不走总部</Button>
  2188. <p className='hint'>提示:高于总部价格,费用个人承担!</p>*/}
  2189. </div>
  2190. </div>
  2191. </Spin>
  2192. </Form>
  2193. </TabPane>
  2194. {/* <TabPane tab="外包(不走总部)" key="2">
  2195. <Spin spinning={this.state.loading}>
  2196. <div className="clearfix" style={{ marginTop: 10 }}>
  2197. <FormItem
  2198. className="half-item"
  2199. {...formItemLayout}
  2200. label={
  2201. <span>
  2202. <strong style={{ color: "#f00" }}>*</strong>外包公司
  2203. </span>
  2204. }
  2205. >
  2206. <Input
  2207. value={this.state.companyName}
  2208. onChange={(e) => {
  2209. this.setState({
  2210. companyName: e.target.value,
  2211. });
  2212. }}
  2213. placeholder="请填写外包公司名称"
  2214. />
  2215. </FormItem>
  2216. <span className="tip">如多个公司,请用间隔</span>
  2217. </div>
  2218. <div className="clearfix">
  2219. <FormItem
  2220. className="half-item"
  2221. {...formItemLayout}
  2222. label={
  2223. <span>
  2224. <strong style={{ color: "#f00" }}>*</strong>
  2225. 单价(万元)
  2226. </span>
  2227. }
  2228. >
  2229. <Input
  2230. value={this.state.unitPrice}
  2231. onChange={(e) => {
  2232. this.setState({
  2233. unitPrice: e.target.value,
  2234. });
  2235. }}
  2236. placeholder="请填写单价"
  2237. />
  2238. </FormItem>
  2239. </div>
  2240. <div className="clearfix">
  2241. <FormItem
  2242. className="half-item"
  2243. {...formItemLayout}
  2244. label={
  2245. <span>
  2246. <strong style={{ color: "#f00" }}>*</strong>数量(个)
  2247. </span>
  2248. }
  2249. >
  2250. <Input
  2251. value={this.state.unitNumber}
  2252. onChange={(e) => {
  2253. this.setState({
  2254. unitNumber: e.target.value,
  2255. });
  2256. }}
  2257. placeholder="请填写数量"
  2258. />
  2259. </FormItem>
  2260. </div>
  2261. <div className="clearfix">
  2262. <FormItem
  2263. className="half-item"
  2264. {...formItemLayout}
  2265. label={
  2266. <span>
  2267. <strong style={{ color: "#f00" }}>*</strong>
  2268. 总金额(万元)
  2269. </span>
  2270. }
  2271. >
  2272. <Input
  2273. value={this.state.amount}
  2274. onChange={(e) => {
  2275. this.setState({
  2276. amount: e.target.value,
  2277. });
  2278. }}
  2279. placeholder="请填写本次外包公司的价格"
  2280. />
  2281. </FormItem>
  2282. </div>
  2283. <div className="clearfix">
  2284. <FormItem
  2285. className="half-item"
  2286. style={{ height: "auto" }}
  2287. {...formItemLayout}
  2288. label={
  2289. <span>
  2290. <strong style={{ color: "#f00" }}>*</strong>备注
  2291. </span>
  2292. }
  2293. >
  2294. <TextArea
  2295. rows={4}
  2296. value={this.state.outsourceRemarks}
  2297. onChange={(e) => {
  2298. this.setState({
  2299. outsourceRemarks: e.target.value,
  2300. });
  2301. }}
  2302. placeholder="请输入备注"
  2303. />
  2304. </FormItem>
  2305. </div>
  2306. <p
  2307. className="tip"
  2308. style={{
  2309. paddingBottom: "12px",
  2310. width: "240px",
  2311. marginLeft: "145px",
  2312. }}
  2313. >
  2314. 首次派单项目,需上传协议,第2次起,同项目,只需写外包公司
  2315. </p>
  2316. <div className="clearfix">
  2317. <FormItem
  2318. labelCol={{ span: 4 }}
  2319. wrapperCol={{ span: 18 }}
  2320. label={
  2321. <span>
  2322. <strong style={{ color: "#f00" }}>*</strong>
  2323. 合同/协议扫描件
  2324. <span style={{ color: "#f00" }}>(外包合同)</span>
  2325. </span>
  2326. }
  2327. >
  2328. <PicturesWall
  2329. fileList={this.getOrgCodeUrl}
  2330. pictureUrl={this.state.pictureUrl}
  2331. />
  2332. <p>请上传与外包公司签订的合同协议</p>
  2333. <p>图片建议:要清晰。</p>
  2334. </FormItem>
  2335. </div>
  2336. <div className="clearfix">
  2337. <div
  2338. style={{ display: "inline-black", textAlign: "center" }}
  2339. >
  2340. <Button type="primary" onClick={this.sureOut}>
  2341. 确认发起外包,不通过总部
  2342. </Button>
  2343. <p className="tip">提示:高于总部价格,费用个人承担</p>
  2344. </div>
  2345. </div>
  2346. </Spin>
  2347. </TabPane> */}
  2348. </Tabs>
  2349. </Modal>}
  2350. {this.state.noVisible ? <Modal
  2351. maskClosable={false}
  2352. visible={this.state.noVisible}
  2353. onOk={this.handleOk}
  2354. onCancel={this.noCancel}
  2355. width="400px"
  2356. title={"拒绝理由"}
  2357. footer=""
  2358. className="admin-desc-content"
  2359. confirmLoading={this.state.confirmLoading}
  2360. >
  2361. <Form layout="horizontal" id="demand-form">
  2362. <Spin spinning={this.state.loading}>
  2363. <div className="clearfix">
  2364. <FormItem
  2365. labelCol={{ span: 4 }}
  2366. wrapperCol={{ span: 16 }}
  2367. label="拒绝理由"
  2368. >
  2369. <Input
  2370. type="textarea"
  2371. placeholder="请输入拒绝理由"
  2372. rows={4}
  2373. value={this.state.reason}
  2374. onChange={(e) => {
  2375. this.setState({ reason: e.target.value });
  2376. }}
  2377. />
  2378. </FormItem>
  2379. </div>
  2380. <div className="clearfix">
  2381. <Button
  2382. className="cancel"
  2383. type="primary"
  2384. onClick={this.examOks}
  2385. style={{ marginLeft: "50px" }}
  2386. htmlType="submit"
  2387. loading={this.state.aloading}
  2388. >
  2389. 确定
  2390. </Button>
  2391. <Button
  2392. className="cancel"
  2393. type="ghost"
  2394. onClick={this.noCancel}
  2395. style={{ marginLeft: "50px" }}
  2396. >
  2397. 取消
  2398. </Button>
  2399. </div>
  2400. </Spin>
  2401. </Form>
  2402. </Modal> : <div />}
  2403. {this.state.agreeVisible ? <Modal
  2404. maskClosable={false}
  2405. visible={this.state.agreeVisible}
  2406. onOk={(e) => {
  2407. this.setState({
  2408. agreeVisible: false,
  2409. });
  2410. }}
  2411. onCancel={(e) => {
  2412. this.setState({
  2413. agreeVisible: false,
  2414. });
  2415. }}
  2416. width="400px"
  2417. title={"同意备注"}
  2418. footer=""
  2419. className="admin-desc-content"
  2420. confirmLoading={this.state.confirmLoading}
  2421. >
  2422. <Form layout="horizontal" id="demand-form">
  2423. <Spin spinning={this.state.loading}>
  2424. <div className="clearfix">
  2425. <FormItem
  2426. labelCol={{ span: 4 }}
  2427. wrapperCol={{ span: 16 }}
  2428. label="同意理由"
  2429. >
  2430. <Input
  2431. type="textarea"
  2432. placeholder="请输入同意理由"
  2433. rows={4}
  2434. value={this.state.reason}
  2435. onChange={(e) => {
  2436. this.setState({ reason: e.target.value });
  2437. }}
  2438. />
  2439. </FormItem>
  2440. </div>
  2441. <div className="clearfix">
  2442. <Button
  2443. className="cancel"
  2444. type="primary"
  2445. onClick={(e) => {
  2446. if (this.state.outsource == "是") {
  2447. this.showDeleteConfirm(this.examOk);
  2448. } else {
  2449. this.examOk();
  2450. }
  2451. }}
  2452. style={{ marginLeft: "50px" }}
  2453. htmlType="submit"
  2454. loading={this.state.aloading}
  2455. >
  2456. 确定
  2457. </Button>
  2458. <Button
  2459. className="cancel"
  2460. type="ghost"
  2461. onClick={(e) => {
  2462. this.setState({
  2463. agreeVisible: false,
  2464. });
  2465. }}
  2466. style={{ marginLeft: "50px" }}
  2467. >
  2468. 取消
  2469. </Button>
  2470. </div>
  2471. </Spin>
  2472. </Form>
  2473. </Modal> : <div />}
  2474. {/* <Modal
  2475. visible={this.state.rizhivisible}
  2476. className="admin-desc-content"
  2477. width="800px"
  2478. maskClosable={false}
  2479. title="订单日志"
  2480. footer={null}
  2481. onCancel={this.closeOrderLog}
  2482. >
  2483. <div className="patent-table">
  2484. <Spin spinning={this.state.loading}>
  2485. <Table
  2486. columns={this.state.columnsrizhi}
  2487. dataSource={this.state.dataSourcerizhi}
  2488. pagination={false}
  2489. />
  2490. </Spin>
  2491. </div>
  2492. </Modal> */}
  2493. <OrderRiZi
  2494. dataSourcerizhi={this.state.dataSourcerizhi}
  2495. closeOrderLog={this.closeOrderLog}
  2496. visible={this.state.rizhivisible}
  2497. loading={this.state.loading}
  2498. />
  2499. </div>
  2500. <textarea id="copyText" style={{ opacity: 0 }} />
  2501. {this.state.addnextVisible &&
  2502. <NewEditProject
  2503. readOnly={this.state.dataInfor && Object.keys(this.state.dataInfor).length > 0 && this.state.processStatus !== 0}
  2504. orderNo={this.state.orderNo}
  2505. visible={this.state.addnextVisible}
  2506. dataInfor={this.state.dataInfor}
  2507. onCancel={this.nextCancel}
  2508. />
  2509. // <ProjectDetailsReadOnly
  2510. // infor={this.state.dataInfor}
  2511. // visible={this.state.addnextVisible}
  2512. // onCancel={this.nextCancel}
  2513. // />
  2514. }
  2515. </div>
  2516. );
  2517. },
  2518. })
  2519. );
  2520. export default IntentionCustomer;