examine.jsx 84 KB

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