approveds.jsx 101 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236
  1. import React from 'react';
  2. import {
  3. Icon,
  4. Button,
  5. Input,
  6. Select,
  7. Spin,
  8. Table,
  9. message,
  10. DatePicker,
  11. Upload,
  12. Form,
  13. Modal,
  14. Col,
  15. Tag,
  16. Tabs, Tooltip
  17. } from "antd";
  18. import $ from 'jquery/src/ajax';
  19. import ResolutionDetail from "@/resolutionDetail";
  20. import ReactToPrint from "react-to-print";
  21. import moment from 'moment';
  22. import {
  23. getLiquidationStatus,
  24. getApprovedState,
  25. getProcessStatus,
  26. splitUrl,
  27. getjiedian,
  28. getboutique,
  29. getCuikuan,
  30. ShowModal,
  31. getApproval,
  32. getTaskStatus,
  33. getProjectStatus,
  34. getNewOrderStatus,
  35. getInvoiceStatus
  36. } from "@/tools.js";
  37. import './customer.less';
  38. import { ChooseList } from "../orderNew/chooseList";
  39. import ShowModalDiv from "@/showModal.jsx";
  40. import Project from "../../../../component/project";
  41. import ImgList from "../../../common/imgList";
  42. import { getProjectName } from "../../../tools";
  43. import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
  44. import NewEditProject from "../../../common/projectOperation/newEditProject";
  45. import DepartmentList from "../../../common/departmentList";
  46. import OrderItemStatus from "../../../common/orderItemStatus";
  47. import EnterpriseNameChange from "../../../common/enterpriseNameChange";
  48. import OrderCoor from './changeComponent/orderCoor';
  49. import ContentUrl from './contentUrl';
  50. import LogPopup from "../../../common/logPopup";
  51. import Cascaders from "../../../common/cascaders";
  52. const { TabPane } = Tabs;
  53. const { TextArea } = Input;
  54. //图片组件
  55. const PicturesWall = React.createClass({
  56. getInitialState() {
  57. return {
  58. previewVisible: false,
  59. previewImage: '',
  60. fileList: [],
  61. }
  62. },
  63. handleCancel() {
  64. this.setState({
  65. previewVisible: false
  66. })
  67. },
  68. handlePreview(file) {
  69. this.setState({
  70. previewImage: file.url || file.thumbUrl,
  71. previewVisible: true,
  72. });
  73. },
  74. handleChange(info) {
  75. let fileList = info.fileList;
  76. this.setState({
  77. fileList
  78. });
  79. this.props.fileList(fileList);
  80. },
  81. componentWillReceiveProps(nextProps) {
  82. this.state.fileList = nextProps.pictureUrl;
  83. this.state.pojectApplicationUrl = undefined;
  84. },
  85. render() {
  86. const {
  87. fileList
  88. } = this.state;
  89. return (
  90. <div style={{ display: "inline-block" }}>
  91. <ImgList
  92. domId={this.props.domId}
  93. fileList={fileList}
  94. />
  95. </div>
  96. );
  97. }
  98. });
  99. const IntentionCustomer = Form.create()(
  100. React.createClass({
  101. loadData(pageNo, pageSize) {
  102. this.setState({
  103. visitModul: false,
  104. loading: true,
  105. ispage: pageNo,
  106. modalVisible: false,
  107. });
  108. $.ajax({
  109. method: "get",
  110. dataType: "json",
  111. crossDomain: false,
  112. url: globalConfig.context + "/api/admin/newOrder/orderNewList",
  113. data: {
  114. pageNo: pageNo || 1,
  115. pageSize: pageSize || this.state.pagination.pageSize,
  116. specially: 3, //审核列表
  117. name: this.state.nameSearch, //名称
  118. orderNo: this.state.orderNoSearch, //订单编号
  119. contractNo: this.state.contractNoSearch, //合同编号
  120. deps: this.state.departmenttList, //订单部门
  121. starTime: this.state.releaseDate[0], //开始时间
  122. endTime: this.state.releaseDate[1], //结束时间
  123. approval: this.state.approvalSearch ? this.state.approvalSearch : 0, //审批状态
  124. liquidationStatus: this.state.liquidationStatusSearch, //结算状态
  125. },
  126. success: function (data) {
  127. ShowModal(this);
  128. let theArr = [];
  129. if (data.error.length || data.data.list == "") {
  130. if (data.error && data.error.length) {
  131. message.warning(data.error[0].message);
  132. }
  133. } else {
  134. for (let i = 0; i < data.data.list.length; i++) {
  135. let thisdata = data.data.list[i];
  136. theArr.push({
  137. key: thisdata.orderNo,
  138. orderNo: thisdata.orderNo,
  139. orderType: thisdata.orderType,
  140. orderStatus: thisdata.orderStatus,
  141. salesmanName: thisdata.salesmanName,
  142. processStatus: thisdata.processStatus,
  143. liquidationStatus: thisdata.liquidationStatus,
  144. approval: thisdata.approval,
  145. settlementAmount: thisdata.settlementAmount,
  146. signDate: thisdata.signDate,
  147. companyId: thisdata.companyId,
  148. companyName: thisdata.companyName,
  149. buyerId: thisdata.buyerId,
  150. userName: thisdata.userName,
  151. contractNo: thisdata.contractNo,
  152. createDate: thisdata.createDate,
  153. depName: thisdata.depName,
  154. invoiceAmount: thisdata.invoiceAmount,
  155. totalAmount: thisdata.totalAmount,
  156. financeName: thisdata.financeName,
  157. });
  158. }
  159. this.state.pagination.total = data.data.totalCount;
  160. }
  161. if (data.data && data.data.list && !data.data.list.length) {
  162. this.state.pagination.total = 0;
  163. }
  164. this.setState({
  165. dataSource: theArr,
  166. pageNo: pageNo,
  167. pagination: this.state.pagination,
  168. selectedRowKeys: [],
  169. });
  170. }.bind(this),
  171. }).always(
  172. function () {
  173. this.setState({
  174. loading: false,
  175. });
  176. }.bind(this)
  177. );
  178. },
  179. getInitialState() {
  180. return {
  181. page: 1,
  182. declarationBatch: 1,
  183. orderNos: '',
  184. dataInfor: {},
  185. releaseDate: [],
  186. selectedRowKeys: [],
  187. rotateDeg: 0,
  188. orgCodeUrl: [],
  189. approvalSearch: "1",
  190. paginations: false,
  191. pagination: {
  192. defaultCurrent: 1,
  193. defaultPageSize: 10,
  194. showQuickJumper: true,
  195. pageSize: 10,
  196. onChange: function (page) {
  197. this.loadData(page);
  198. }.bind(this),
  199. showTotal: function (total) {
  200. return "共" + total + "条数据";
  201. },
  202. },
  203. columnsDate: [
  204. {
  205. title: "编号",
  206. dataIndex: "id",
  207. key: "id",
  208. },
  209. {
  210. title: "订单编号",
  211. dataIndex: "orderno",
  212. key: "orderno",
  213. },
  214. {
  215. title: "开票金额(万元)",
  216. dataIndex: "amount",
  217. key: "amount",
  218. },
  219. {
  220. title: "申请时间",
  221. dataIndex: "createTime",
  222. key: "createTime",
  223. },
  224. {
  225. title: "开票状态",
  226. dataIndex: "status",
  227. key: "status",
  228. render: (text, record) => {
  229. return <div>{getInvoiceStatus(text, record)} <LogPopup id={record.id} /></div>;
  230. },
  231. },
  232. ],
  233. columns: [
  234. {
  235. title: "合同编号",
  236. dataIndex: "contractNo",
  237. key: "contractNo",
  238. className: "title-table",
  239. },
  240. {
  241. title: "订单编号",
  242. dataIndex: "orderNo",
  243. key: "orderNo",
  244. className: "title-table",
  245. // fixed: "left"
  246. },
  247. {
  248. title: "特批状态",
  249. dataIndex: "approval",
  250. key: "approval",
  251. className: "title-table",
  252. render: (text) => {
  253. return <Tag color="#f50">{getApproval(text)}</Tag>;
  254. // if (text == 1) {
  255. // return <Tag color="#f50">{getApproval(text)}</Tag>;
  256. // }
  257. // return getApproval(text);
  258. },
  259. },
  260. {
  261. title: "客户名称",
  262. dataIndex: "userName",
  263. key: "userName",
  264. className: "title-table",
  265. render: text => {
  266. return (
  267. <Tooltip title={text}>
  268. <div style={{
  269. maxWidth: '150px',
  270. overflow: 'hidden',
  271. textOverflow: "ellipsis",
  272. whiteSpace: 'nowrap',
  273. }}>{text}</div>
  274. </Tooltip>
  275. )
  276. }
  277. },
  278. {
  279. title: "订单部门",
  280. dataIndex: "depName",
  281. key: "depName",
  282. className: "title-table",
  283. },
  284. {
  285. title: "订单负责人",
  286. dataIndex: "salesmanName",
  287. key: "salesmanName",
  288. className: "title-table",
  289. },
  290. {
  291. title: "财务负责人",
  292. dataIndex: "financeName",
  293. key: "financeName",
  294. className: "title-table",
  295. },
  296. {
  297. title: "签单日期",
  298. dataIndex: "signDate",
  299. key: "signDate",
  300. className: "title-table",
  301. },
  302. {
  303. title: "下单日期",
  304. dataIndex: "createDate",
  305. key: "createDate",
  306. className: "title-table",
  307. },
  308. {
  309. title: "签单金额(万元)",
  310. dataIndex: "totalAmount",
  311. key: "totalAmount",
  312. className: "title-table",
  313. },
  314. {
  315. title: "开票金额(万元)",
  316. dataIndex: "invoiceAmount",
  317. key: "invoiceAmount",
  318. className: "title-table",
  319. },
  320. {
  321. title: "已收款(万元)",
  322. dataIndex: "settlementAmount",
  323. key: "settlementAmount",
  324. className: "title-table",
  325. },
  326. {
  327. title: "结算状态",
  328. dataIndex: "liquidationStatus",
  329. key: "liquidationStatus",
  330. className: "title-table",
  331. render: (text) => {
  332. return getLiquidationStatus(text);
  333. },
  334. },
  335. {
  336. title: "流程状态",
  337. dataIndex: "processStatus",
  338. key: "processStatus",
  339. className: "title-table",
  340. render: (text, record) => {
  341. return getProcessStatus(text, record.examineName, record.approval);
  342. },
  343. },
  344. ],
  345. data: [],
  346. dataSource: [],
  347. columnsX: [
  348. {
  349. title: "业务项目名称",
  350. dataIndex: "commodityName",
  351. key: "commodityName",
  352. render: (text, record) => {
  353. return <span>{text}<span style={{ color: "red" }}>{record.patentTypeName}</span>{"-" + record.id}</span>
  354. }
  355. },
  356. {
  357. title: "项目类别",
  358. dataIndex: "cname",
  359. key: "cname",
  360. },
  361. {
  362. title: "项目数量",
  363. dataIndex: "commodityQuantity",
  364. key: "commodityQuantity",
  365. render: (text, record) => {
  366. if (record.splitStatus == 1) {
  367. return (
  368. <span>
  369. {text}{" "}
  370. {/* <Tag
  371. color="#108ee9"
  372. onClick={(e) => {
  373. e.stopPropagation();
  374. this.showRes(record);
  375. }}
  376. >
  377. 已拆
  378. </Tag> */}
  379. </span>
  380. );
  381. } else {
  382. return text;
  383. }
  384. },
  385. },
  386. {
  387. title: "金额(万元)",
  388. dataIndex: "commodityPrice",
  389. key: "commodityPrice",
  390. },
  391. {
  392. title: "负责人",
  393. dataIndex: "contacts",
  394. key: "contacts",
  395. },
  396. {
  397. title: "负责人电话",
  398. dataIndex: "contactsMobile",
  399. key: "contactsMobile",
  400. },
  401. {
  402. title: "主要项目",
  403. dataIndex: "main",
  404. key: "main",
  405. render: (text) => {
  406. return text ? "是" : "否";
  407. },
  408. },
  409. {
  410. title: "项目说明",
  411. dataIndex: "taskComment",
  412. key: "taskComment",
  413. render: (text) => {
  414. return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
  415. },
  416. },
  417. ],
  418. columnsrizhi: [
  419. {
  420. title: "流程",
  421. dataIndex: "processName",
  422. key: "processName",
  423. },
  424. {
  425. title: "操作人",
  426. dataIndex: "adminName",
  427. key: "adminName",
  428. },
  429. {
  430. title: "时间",
  431. dataIndex: "createDate",
  432. key: "createDate",
  433. },
  434. {
  435. title: "备注",
  436. dataIndex: "remarks",
  437. key: "remarks",
  438. },
  439. ],
  440. dataSourceX: [],
  441. ContactsListsNew: [
  442. {
  443. title: "项目名称",
  444. dataIndex: "commodityName",
  445. key: "commodityName",
  446. render: (text, record) => {
  447. return <span>{text + "-" + record.tid}</span>;
  448. },
  449. },
  450. {
  451. title: "项目分类",
  452. dataIndex: "projectType",
  453. key: "projectType",
  454. render: (text) => {
  455. let arr = this.state.dataSourceX || [];
  456. let str = "";
  457. for (let i = 0; i < arr.length; i++) {
  458. if (this.state.dataSourceX[i].sort == text) {
  459. str = this.state.dataSourceX[i].cname;
  460. return <span>{str}</span>;
  461. }
  462. }
  463. },
  464. },
  465. {
  466. title: "催款科目",
  467. dataIndex: "dunTypeName",
  468. key: "dunTypeName",
  469. render: (text, record) => {
  470. if (record.customizeName) {
  471. return text + record.customizeName;
  472. }
  473. return <span>{text}</span>;
  474. },
  475. },
  476. {
  477. title: "时间(天)",
  478. dataIndex: "waitDay",
  479. key: "waitDay",
  480. render: (text, record) => {
  481. if (record.dunTypeName) {
  482. if (record.customizeTimes) {
  483. return record.customizeTimes;
  484. }
  485. return <span>{text}</span>;
  486. }
  487. },
  488. },
  489. {
  490. title: "金额(万元)",
  491. dataIndex: "money",
  492. key: "money",
  493. render: (text, record) => {
  494. if (record.dunTypeName) {
  495. if (record.appropriationRatio) {
  496. let percent = Number(record.appropriationRatio * 100).toFixed(2);
  497. percent += "%";
  498. return <span>{percent}(拨款比例)</span>;
  499. } else {
  500. return <span>{text}</span>;
  501. }
  502. }
  503. },
  504. },
  505. {
  506. title: "服务年限",
  507. dataIndex: "startDate",
  508. key: "startDate",
  509. render: (text, record) => {
  510. if (record.dunTypeName) {
  511. return <span>{text}</span>;
  512. }
  513. },
  514. },
  515. {
  516. title: "催款状态",
  517. dataIndex: "status",
  518. key: "status",
  519. render: (text) => {
  520. return <span>{text == 1 ? "已启动" : "未启动"}</span>;
  521. },
  522. },
  523. ],
  524. ContactsLists: [
  525. {
  526. title: "催款科目",
  527. dataIndex: "dunSubject",
  528. key: "dunSubject",
  529. render: (text) => {
  530. return getjiedian(text);
  531. },
  532. },
  533. {
  534. title: "金额(万元)",
  535. dataIndex: "money",
  536. key: "money",
  537. },
  538. {
  539. title: "催款状态",
  540. dataIndex: "dunStatus",
  541. key: "dunStatus",
  542. render: (text) => {
  543. return getCuikuan(text);
  544. },
  545. },
  546. ],
  547. waterlistDate: [
  548. {
  549. title: "订单编号",
  550. dataIndex: "orderNo",
  551. key: "orderNo",
  552. },
  553. {
  554. title: "平台流水号",
  555. dataIndex: "billNo",
  556. key: "billNo",
  557. // fixed: "left"
  558. },
  559. {
  560. title: "收款金额(万元)",
  561. dataIndex: "transactionAmount",
  562. key: "transactionAmount",
  563. },
  564. {
  565. title: "收款方",
  566. dataIndex: "payeeName",
  567. key: "payeeName",
  568. },
  569. {
  570. title: "付款方",
  571. dataIndex: "payerName",
  572. key: "payerName",
  573. },
  574. {
  575. title: "流水科目",
  576. dataIndex: "transactionSubject",
  577. key: "transactionSubject",
  578. render: (text) => {
  579. return getTransactionProject(text);
  580. },
  581. },
  582. {
  583. title: "收款类型",
  584. dataIndex: "type",
  585. key: "type",
  586. },
  587. {
  588. title: "财务流水时间",
  589. dataIndex: "financialPayTimes",
  590. key: "financialPayTimes",
  591. },
  592. {
  593. title: "财务流水号",
  594. dataIndex: "financialPayNo",
  595. key: "financialPayNo",
  596. },
  597. {
  598. title: "订单负责人",
  599. dataIndex: "saleName",
  600. key: "saleName",
  601. },
  602. {
  603. title: "创建时间",
  604. dataIndex: "createTimes",
  605. key: "createTimes",
  606. },
  607. ],
  608. timeColumns: [
  609. {
  610. title: "合同编号",
  611. dataIndex: "contractNo",
  612. key: "contractNo",
  613. },
  614. {
  615. title: "订单编号",
  616. dataIndex: "orderNo",
  617. key: "orderNo",
  618. },
  619. {
  620. title: "客户名称",
  621. dataIndex: "userName",
  622. key: "userName",
  623. render: text => {
  624. return (
  625. <Tooltip title={text}>
  626. <div style={{
  627. maxWidth: '150px',
  628. overflow: 'hidden',
  629. textOverflow: "ellipsis",
  630. whiteSpace: 'nowrap',
  631. }}>{text}</div>
  632. </Tooltip>
  633. )
  634. }
  635. },
  636. {
  637. title: "订单部门",
  638. dataIndex: "depName",
  639. key: "depName",
  640. },
  641. {
  642. title: "订单负责人",
  643. dataIndex: "salesmanName",
  644. key: "salesmanName",
  645. },
  646. {
  647. title: "项目类别",
  648. dataIndex: "cname",
  649. key: "cname",
  650. },
  651. {
  652. title: "项目编号",
  653. dataIndex: "id",
  654. key: "id",
  655. },
  656. {
  657. title: "项目名称",
  658. dataIndex: "taskName",
  659. key: "taskName",
  660. },
  661. {
  662. title: "项目负责人",
  663. dataIndex: "receiverName",
  664. key: "receiverName",
  665. },
  666. {
  667. title: "项目价格(万元)",
  668. dataIndex: "commodityPrice",
  669. key: "commodityPrice",
  670. },
  671. {
  672. title: "数量(个)",
  673. dataIndex: "commodityQuantity",
  674. key: "commodityQuantity",
  675. },
  676. {
  677. title: "任务状态",
  678. dataIndex: "taskStatus",
  679. key: "taskStatus",
  680. render: (text) => {
  681. return getTaskStatus(text);
  682. },
  683. },
  684. {
  685. title: "项目状态",
  686. dataIndex: "projectStatus",
  687. key: "projectStatus",
  688. render: (text) => {
  689. return getProjectName(text);
  690. },
  691. },
  692. {
  693. title: "工时",
  694. dataIndex: "hours",
  695. key: "hours",
  696. },
  697. {
  698. title: "是否外包",
  699. dataIndex: "outsource",
  700. key: "outsource",
  701. render: (text) => {
  702. if (text == 0) {
  703. return "否";
  704. } else if (text == 1) {
  705. return "是";
  706. }
  707. },
  708. },
  709. {
  710. title: "签单日期",
  711. dataIndex: "signTime",
  712. key: "signTime",
  713. },
  714. {
  715. title: "派单日期",
  716. dataIndex: "creteTime",
  717. key: "creteTime",
  718. },
  719. {
  720. title: "分配时间",
  721. dataIndex: "taskDistributionTime",
  722. key: "taskDistributionTime",
  723. },
  724. {
  725. title: "完成时间",
  726. dataIndex: "taskEndTime",
  727. key: "taskEndTime",
  728. },
  729. ],
  730. resVisible: false,
  731. cuiColumns: [
  732. {
  733. title: "序号",
  734. dataIndex: "key",
  735. key: "key",
  736. },
  737. {
  738. title: "合同编号",
  739. dataIndex: "contractNo",
  740. key: "contractNo",
  741. },
  742. {
  743. title: "订单编号",
  744. dataIndex: "orderNo",
  745. key: "orderNo",
  746. },
  747. {
  748. title: "客户名称",
  749. dataIndex: "userName",
  750. key: "userName",
  751. render: text => {
  752. return (
  753. <Tooltip title={text}>
  754. <div style={{
  755. maxWidth: '150px',
  756. overflow: 'hidden',
  757. textOverflow: "ellipsis",
  758. whiteSpace: 'nowrap',
  759. }}>{text}</div>
  760. </Tooltip>
  761. )
  762. }
  763. },
  764. {
  765. title: "订单负责人",
  766. dataIndex: "salesmanName",
  767. key: "salesmanName",
  768. },
  769. {
  770. title: "订单部门",
  771. dataIndex: "depName",
  772. key: "depName",
  773. },
  774. {
  775. title: "订单状态",
  776. dataIndex: "orderStatus",
  777. key: "orderStatus",
  778. render: (text) => {
  779. return getNewOrderStatus(text);
  780. },
  781. },
  782. {
  783. title: "项目状态",
  784. dataIndex: "projectStatus",
  785. key: "projectStatus",
  786. render: (text) => {
  787. return getProjectName(text);
  788. },
  789. },
  790. {
  791. title: "签单金额",
  792. dataIndex: "totalAmount",
  793. key: "totalAmount",
  794. },
  795. {
  796. title: "结算状态",
  797. dataIndex: "liquidationStatus",
  798. key: "liquidationStatus",
  799. render: (text) => {
  800. return getLiquidationStatus(text);
  801. },
  802. },
  803. {
  804. title: "已收款",
  805. dataIndex: "settlementAmount",
  806. key: "settlementAmount",
  807. },
  808. {
  809. title: "应收款",
  810. dataIndex: "accountsReceivable",
  811. key: "accountsReceivable",
  812. },
  813. {
  814. title: "催收科目",
  815. dataIndex: "dunSubject",
  816. key: "dunSubject",
  817. // render: text => {
  818. // return getjiedian(text);
  819. // }
  820. },
  821. {
  822. title: "催款状态",
  823. dataIndex: "dunStatus",
  824. key: "dunStatus",
  825. },
  826. {
  827. title: "催收启动时间",
  828. dataIndex: "startDate",
  829. key: "startDate",
  830. },
  831. ],
  832. proColumns: [
  833. {
  834. title: "序号",
  835. dataIndex: "key",
  836. key: "key",
  837. },
  838. {
  839. title: "合同编号",
  840. dataIndex: "contractNo",
  841. key: "contractNo",
  842. },
  843. {
  844. title: "订单编号",
  845. dataIndex: "orderNo",
  846. key: "orderNo",
  847. },
  848. // {
  849. // title: "项目编号",
  850. // dataIndex: "id",
  851. // key: "id"
  852. // },
  853. {
  854. title: "客户名称",
  855. dataIndex: "userName",
  856. key: "userName",
  857. render: text => {
  858. return (
  859. <Tooltip title={text}>
  860. <div style={{
  861. maxWidth: '150px',
  862. overflow: 'hidden',
  863. textOverflow: "ellipsis",
  864. whiteSpace: 'nowrap',
  865. }}>{text}</div>
  866. </Tooltip>
  867. )
  868. }
  869. },
  870. {
  871. title: "订单负责人",
  872. dataIndex: "salesmanName",
  873. key: "salesmanName",
  874. },
  875. {
  876. title: "是否主项目",
  877. dataIndex: "main",
  878. key: "main",
  879. render: (text) => {
  880. return text == 0 ? "否" : "是";
  881. },
  882. },
  883. {
  884. title: "项目类别",
  885. dataIndex: "cname",
  886. key: "cname",
  887. },
  888. {
  889. title: "项目名称",
  890. dataIndex: "commodityName",
  891. key: "commodityName",
  892. },
  893. {
  894. title: "项目数量",
  895. dataIndex: "commodityQuantity",
  896. key: "commodityQuantity",
  897. render: (text, record) => {
  898. if (record.splitStatus == 1) {
  899. return (
  900. <span>
  901. {text}{" "}
  902. <Tag
  903. color="#108ee9"
  904. onClick={(e) => {
  905. e.stopPropagation();
  906. this.showRes(record);
  907. }}
  908. >
  909. 已拆
  910. </Tag>
  911. </span>
  912. );
  913. } else {
  914. return text;
  915. }
  916. },
  917. },
  918. {
  919. title: "服务市价",
  920. dataIndex: "commodityPrice",
  921. key: "commodityPrice",
  922. },
  923. {
  924. title: "证书编号",
  925. dataIndex: "certificateNumber",
  926. key: "certificateNumber",
  927. },
  928. {
  929. title: "项目状态",
  930. dataIndex: "projectStatus",
  931. key: "projectStatus",
  932. render: (text) => {
  933. return getProjectName(text);
  934. },
  935. },
  936. {
  937. title: "项目说明",
  938. dataIndex: "taskComment",
  939. key: "taskComment",
  940. },
  941. // {
  942. // title: "外包(内部)公司",
  943. // dataIndex: "outsourceName",
  944. // key: "outsourceName",
  945. // },
  946. // {
  947. // title: "外包(内部)价格",
  948. // dataIndex: "outsourcePrice",
  949. // key: "outsourcePrice",
  950. // },
  951. ],
  952. };
  953. },
  954. //页面加载函数
  955. componentWillMount() {
  956. this.loadData();
  957. },
  958. //整行点击
  959. tableRowClick(record) {
  960. this.setState({
  961. visible: true,
  962. orderNos: record.orderNo
  963. });
  964. this.xiangqing(record.orderNo);
  965. this.xiangmu(record.orderNo);
  966. this.jiedian(record.orderNo);
  967. this.jiedianNew(record.orderNo);
  968. },
  969. //点击打卡项目详情
  970. tableRowClickX(record) {
  971. // console.log(record);
  972. this.setState({
  973. jid: record.id, //项目ID
  974. kid: record.commodityId, //商品ID
  975. commodityName: record.commodityName, //金额
  976. commodityPrice: record.commodityPrice, //金额
  977. commodityQuantity: record.commodityQuantity, //数量
  978. taskComment: record.taskComment, //备注
  979. main: record.main.toString(), //是否为主要
  980. addnextVisible: true,
  981. dataInfor: record,
  982. addState: 0,
  983. });
  984. },
  985. //项目详情关闭
  986. nextCancel() {
  987. this.setState({
  988. addnextVisible: false,
  989. });
  990. },
  991. //订单详情
  992. xiangqing(orderNos) {
  993. $.ajax({
  994. method: "get",
  995. dataType: "json",
  996. crossDomain: false,
  997. url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
  998. data: {
  999. orderNo: orderNos,
  1000. },
  1001. success: function (data) {
  1002. if (data.error.length || data.data.list == "") {
  1003. if (data.error && data.error.length) {
  1004. message.warning(data.error[0].message);
  1005. }
  1006. } else {
  1007. let thisdata = data.data;
  1008. this.setState({
  1009. orderUid: thisdata.uid,
  1010. orderNo: thisdata.orderNo, //订单编号
  1011. contractNo: thisdata.contractNo, //合同编号
  1012. userName: thisdata.userName, //客户名称
  1013. signDate: thisdata.signDate, //签单时间
  1014. examineName: thisdata.examineName,
  1015. processStatus: thisdata.processStatus, //流程状态
  1016. liquidationStatus: thisdata.liquidationStatus, //结算状态
  1017. contacts: thisdata.contacts, //企业联系人
  1018. contactMobile: thisdata.contactMobile, //联系人电话
  1019. legalPerson: thisdata.legalPerson, //法人
  1020. legalPersonTel: thisdata.legalPersonTel, //法人电话
  1021. firstAmount: thisdata.firstAmount, //签单金额
  1022. totalAmount: thisdata.totalAmount, //首付金额
  1023. approval: thisdata.approval, //特批状态
  1024. settlementAmount: thisdata.settlementAmount, //已收款项
  1025. orderRemarks: thisdata.orderRemarks, //订单留言
  1026. orgCodeUrl: thisdata.contractPictureUrl
  1027. ? splitUrl(
  1028. thisdata.contractPictureUrl,
  1029. ",",
  1030. globalConfig.avatarHost + "/upload"
  1031. )
  1032. : [], //图片地址
  1033. replenishUrl: thisdata.agreementUrl
  1034. ? splitUrl(
  1035. thisdata.agreementUrl,
  1036. ",",
  1037. globalConfig.avatarHost + "/upload"
  1038. )
  1039. : [],
  1040. contentUrl: thisdata.serviceContent
  1041. ? splitUrl(
  1042. thisdata.serviceContent,
  1043. ",",
  1044. globalConfig.avatarHost + "/upload"
  1045. )
  1046. : [], //图片地址
  1047. salesmanName: thisdata.salesmanName, //营销员名称
  1048. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  1049. financeName: thisdata.financeName, //财务名称
  1050. financeMobile: thisdata.financeMobile, //财务电话
  1051. outsource: thisdata.outsource == 0 ? "否" : "是",
  1052. deleteSign: thisdata.deleteSign,
  1053. });
  1054. }
  1055. }.bind(this),
  1056. }).always(
  1057. function () {
  1058. this.setState({
  1059. loading: false,
  1060. });
  1061. }.bind(this)
  1062. );
  1063. },
  1064. //项目列表
  1065. xiangmu(orderNos) {
  1066. $.ajax({
  1067. method: "get",
  1068. dataType: "json",
  1069. crossDomain: false,
  1070. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  1071. data: {
  1072. orderNo: orderNos,
  1073. },
  1074. success: function (data) {
  1075. let theArr = [];
  1076. if (data.error.length || data.data.list == "") {
  1077. if (data.error && data.error.length) {
  1078. message.warning(data.error[0].message);
  1079. }
  1080. } else {
  1081. for (let i = 0; i < data.data.length; i++) {
  1082. let thisdata = data.data[i];
  1083. thisdata.key = i;
  1084. theArr.push(thisdata);
  1085. }
  1086. }
  1087. this.setState({
  1088. dataSourceX: theArr,
  1089. });
  1090. }.bind(this),
  1091. }).always(
  1092. function () {
  1093. this.setState({
  1094. loading: false,
  1095. });
  1096. }.bind(this)
  1097. );
  1098. },
  1099. rizhi() {
  1100. // console.log(this.state.orderNo);
  1101. this.setState({
  1102. loading: true,
  1103. });
  1104. $.ajax({
  1105. method: "get",
  1106. dataType: "json",
  1107. crossDomain: false,
  1108. url: "/api/admin/newOrder/selectOrderLog",
  1109. data: {
  1110. orderNo: this.state.orderNo,
  1111. },
  1112. success: function (data) {
  1113. let theArr = [];
  1114. let thisData = data.data;
  1115. if (thisData && !thisData.length) {
  1116. if (data.error && data.error.length) {
  1117. message.warning(data.error[0].message);
  1118. }
  1119. thisData = {};
  1120. } else {
  1121. for (let i = 0; i < data.data.length; i++) {
  1122. let thisdata = data.data[i];
  1123. theArr.push({
  1124. processName: thisdata.processName,
  1125. adminName: thisdata.adminName,
  1126. createDate: thisdata.createDate,
  1127. remarks: thisdata.remarks,
  1128. });
  1129. }
  1130. }
  1131. this.setState({
  1132. dataSourcerizhi: theArr,
  1133. });
  1134. }.bind(this),
  1135. }).always(
  1136. function () {
  1137. this.setState({
  1138. loading: false,
  1139. });
  1140. }.bind(this)
  1141. );
  1142. },
  1143. //查看订单日志
  1144. getOrderLog() {
  1145. this.setState({
  1146. rizhivisible: true,
  1147. });
  1148. this.rizhi();
  1149. },
  1150. closeOrderLog() {
  1151. this.setState({
  1152. rizhivisible: false,
  1153. });
  1154. },
  1155. //节点列表
  1156. jiedian(orderNos) {
  1157. $.ajax({
  1158. method: "get",
  1159. dataType: "json",
  1160. crossDomain: false,
  1161. url: globalConfig.context + "/api/admin/newOrder/selectOrderDun",
  1162. data: {
  1163. orderNo: orderNos,
  1164. },
  1165. success: function (data) {
  1166. let theArr = [];
  1167. let thisData = [];
  1168. if (data.error.length || data.data.list == "") {
  1169. if (data.error && data.error.length) {
  1170. message.warning(data.error[0].message);
  1171. }
  1172. } else {
  1173. for (let i = 0; i < data.data.length; i++) {
  1174. thisData = data.data[i];
  1175. theArr.push({
  1176. key: i,
  1177. dunSubject: thisData.dunSubject
  1178. ? thisData.dunSubject.toString()
  1179. : "", //催款科目
  1180. id: thisData.id, //节点Id
  1181. money: thisData.money, //催款金额
  1182. dunStatus: thisData.dunStatus, //催款状态
  1183. });
  1184. }
  1185. this.setState({
  1186. contactList: theArr,
  1187. });
  1188. }
  1189. }.bind(this),
  1190. }).always(
  1191. function () {
  1192. this.setState({
  1193. loading: false,
  1194. });
  1195. }.bind(this)
  1196. );
  1197. },
  1198. //查看催款节点
  1199. jiedianNew(orderNos) {
  1200. $.ajax({
  1201. method: "get",
  1202. dataType: "json",
  1203. crossDomain: false,
  1204. url:
  1205. globalConfig.context + "/api/admin/newOrderDun/selectListNewOrderDun",
  1206. data: {
  1207. orderNo: orderNos,
  1208. },
  1209. success: function (data) {
  1210. if (data.error && data.error.length) {
  1211. message.warning(data.error[0].message);
  1212. } else {
  1213. let theArr = [];
  1214. let thisData = [];
  1215. let arr = data.data || [];
  1216. let totalCui = 0;
  1217. for (let i = 0; i < arr.length; i++) {
  1218. thisData = arr[i];
  1219. totalCui += +thisData.money;
  1220. theArr.push({
  1221. key: i,
  1222. dunSubject: thisData.dunSubject
  1223. ? thisData.dunSubject.toString()
  1224. : "", //催款科目
  1225. id: thisData.id, //节点Id
  1226. money: thisData.money, //催款金额
  1227. // orderNo: record ? record.orderNo : this.props.datauser.orderNo,
  1228. commodityName: thisData.commodityName,
  1229. projectType: thisData.projectType,
  1230. dunTypeName: thisData.dunTypeName,
  1231. status: thisData.status,
  1232. waitDay: thisData.waitDay,
  1233. effectiveCount: thisData.effectiveCount,
  1234. startDate: thisData.startDate,
  1235. dunType: thisData.dunType,
  1236. appropriationRatio: thisData.appropriationRatio,
  1237. customizeName: thisData.customizeName,
  1238. customizeTimes: thisData.customizeTimes,
  1239. tid: thisData.tid,
  1240. });
  1241. }
  1242. if (!totalCui) {
  1243. totalCui = 0;
  1244. }
  1245. totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6);
  1246. this.setState({
  1247. contactListNew: theArr,
  1248. totalCui,
  1249. });
  1250. }
  1251. }.bind(this),
  1252. }).always(
  1253. function () {
  1254. this.setState({
  1255. loading: false,
  1256. });
  1257. }.bind(this)
  1258. );
  1259. },
  1260. //审核通过
  1261. examOk() {
  1262. if (!this.state.reason) {
  1263. message.warning("请填写备注");
  1264. return;
  1265. }
  1266. if (!this.state.reason.replace(/\s+/g, '')) {
  1267. message.warning("请填写备注");
  1268. return;
  1269. }
  1270. this.setState({
  1271. loading: true,
  1272. });
  1273. $.ajax({
  1274. method: "post",
  1275. dataType: "json",
  1276. crossDomain: false,
  1277. url: globalConfig.context + "/api/admin/newOrder/approvalOrder",
  1278. data: {
  1279. orderNo: this.state.orderNo,
  1280. confirm: 2,
  1281. reason: this.state.reason,
  1282. },
  1283. success: function (data) {
  1284. if (data.error.length || data.data.list == "") {
  1285. if (data.error && data.error.length) {
  1286. message.warning(data.error[0].message);
  1287. }
  1288. } else {
  1289. message.success("该特批订单已通过审核~");
  1290. this.setState({
  1291. visible: false,
  1292. });
  1293. this.passCancel();
  1294. this.reset();
  1295. }
  1296. }.bind(this),
  1297. }).always(
  1298. function () {
  1299. this.setState({
  1300. loading: false,
  1301. });
  1302. }.bind(this)
  1303. );
  1304. },
  1305. //审核不通过
  1306. examOks() {
  1307. if (!this.state.reason) {
  1308. message.warning("请填写备注");
  1309. return;
  1310. }
  1311. if (!this.state.reason.replace(/\s+/g, '')) {
  1312. message.warning("请填写备注");
  1313. return;
  1314. }
  1315. this.setState({
  1316. loading: true,
  1317. });
  1318. $.ajax({
  1319. method: "post",
  1320. dataType: "json",
  1321. crossDomain: false,
  1322. url: globalConfig.context + "/api/admin/newOrder/approvalOrder",
  1323. data: {
  1324. orderNo: this.state.orderNo,
  1325. confirm: 3,
  1326. reason: this.state.reason,
  1327. },
  1328. success: function (data) {
  1329. if (data.error.length || data.data.list == "") {
  1330. if (data.error && data.error.length) {
  1331. message.warning(data.error[0].message);
  1332. }
  1333. } else {
  1334. message.success("该特批订单已被驳回~");
  1335. this.setState({
  1336. visible: false,
  1337. noVisible: false,
  1338. reason: "",
  1339. });
  1340. this.loadData();
  1341. this.resets();
  1342. }
  1343. }.bind(this),
  1344. }).always(
  1345. function () {
  1346. this.setState({
  1347. loading: false,
  1348. });
  1349. }.bind(this)
  1350. );
  1351. },
  1352. //点击拒绝
  1353. examNo() {
  1354. this.setState({
  1355. noVisible: true,
  1356. });
  1357. },
  1358. //关闭输入理由框
  1359. noCancel() {
  1360. this.setState({
  1361. noVisible: false,
  1362. reason: "",
  1363. });
  1364. },
  1365. //搜索
  1366. search() {
  1367. this.setState({
  1368. //signBillVisible:false
  1369. });
  1370. this.loadData();
  1371. },
  1372. //重置
  1373. reset() {
  1374. this.setState({
  1375. signBillVisible: false,
  1376. });
  1377. this.state.orderNoSearch = undefined;
  1378. this.state.contractNoSearch = undefined;
  1379. this.state.nameSearch = undefined;
  1380. this.state.liquidationStatusSearch = [];
  1381. this.state.departmenttList = undefined;
  1382. this.state.releaseDate[0] = undefined;
  1383. this.state.releaseDate[1] = undefined;
  1384. this.state.approvalSearch = "1";
  1385. this.Cascaders.empty();
  1386. this.loadData();
  1387. },
  1388. resets() {
  1389. this.state.orderNo = "";
  1390. this.state.customerName = "";
  1391. this.state.departmenttSearch = undefined;
  1392. this.state.releaseDate[0] = undefined;
  1393. this.state.releaseDate[1] = undefined;
  1394. },
  1395. getOrgCodeUrl(e) {
  1396. this.setState({ orgCodeUrl: e });
  1397. },
  1398. getReplenishUrl(e) {
  1399. this.setState({ replenishUrl: e });
  1400. },
  1401. downImg() {
  1402. let num = 0;
  1403. for (let i = 0; i < this.state.orgCodeUrl.length; i++) {
  1404. if (this.state.orgCodeUrl[i].url == this.state.previewImage) {
  1405. num = i;
  1406. }
  1407. }
  1408. if (num == this.state.orgCodeUrl.length - 1) {
  1409. return message.warning("已经是最后一张了哦");
  1410. }
  1411. this.state.previewImage = this.state.orgCodeUrl[num + 1].url;
  1412. this.setState({
  1413. previewImage: this.state.previewImage,
  1414. rotateDeg: 0,
  1415. });
  1416. },
  1417. upImg() {
  1418. let num = 0;
  1419. for (let i = 0; i < this.state.orgCodeUrl.length; i++) {
  1420. if (this.state.orgCodeUrl[i].url == this.state.previewImage) {
  1421. num = i;
  1422. }
  1423. }
  1424. if (num == 0) {
  1425. return message.warning("已经是第一张了哦");
  1426. }
  1427. this.state.previewImage = this.state.orgCodeUrl[num - 1].url;
  1428. this.setState({
  1429. previewImage: this.state.previewImage,
  1430. rotateDeg: 0,
  1431. });
  1432. },
  1433. rotate() {
  1434. let rotateDeg = this.state.rotateDeg + 90;
  1435. this.setState({
  1436. rotateDeg,
  1437. });
  1438. },
  1439. downImgs() {
  1440. let num = 0;
  1441. for (let i = 0; i < this.state.replenishUrl.length; i++) {
  1442. if (this.state.replenishUrl[i].url == this.state.previewImage) {
  1443. num = i;
  1444. }
  1445. }
  1446. if (num == this.state.replenishUrl.length - 1) {
  1447. return message.warning("已经是最后一张了哦");
  1448. }
  1449. this.state.previewImage = this.state.replenishUrl[num + 1].url;
  1450. this.setState({
  1451. previewImage: this.state.previewImage,
  1452. rotateDeg: 0,
  1453. });
  1454. },
  1455. upImgs() {
  1456. let num = 0;
  1457. for (let i = 0; i < this.state.replenishUrl.length; i++) {
  1458. if (this.state.replenishUrl[i].url == this.state.previewImage) {
  1459. num = i;
  1460. }
  1461. }
  1462. if (num == 0) {
  1463. return message.warning("已经是第一张了哦");
  1464. }
  1465. this.state.previewImage = this.state.replenishUrl[num - 1].url;
  1466. this.setState({
  1467. previewImage: this.state.previewImage,
  1468. rotateDeg: 0,
  1469. });
  1470. },
  1471. rotates() {
  1472. let rotateDeg = this.state.rotateDeg + 90;
  1473. this.setState({
  1474. rotateDeg,
  1475. });
  1476. },
  1477. changeList(arr) {
  1478. const newArr = [];
  1479. this.state.columns.forEach((item) => {
  1480. arr.forEach((val) => {
  1481. if (val === item.title) {
  1482. newArr.push(item);
  1483. }
  1484. });
  1485. });
  1486. this.setState({
  1487. changeList: newArr,
  1488. });
  1489. },
  1490. //关闭详情
  1491. visitCancel() {
  1492. this.setState({
  1493. visible: false,
  1494. });
  1495. this.resets();
  1496. },
  1497. visitOk() {
  1498. this.setState({
  1499. visible: false,
  1500. });
  1501. this.resets();
  1502. },
  1503. waterData() {
  1504. this.state.data = [];
  1505. this.setState({
  1506. loading: true,
  1507. });
  1508. $.ajax({
  1509. method: "get",
  1510. dataType: "json",
  1511. crossDomain: false,
  1512. url: globalConfig.context + "/api/admin/financial/myBillList",
  1513. data: {
  1514. orderNo: this.state.selectedRowKeys[0],
  1515. pageSize: 9999999,
  1516. whoType: 1,
  1517. },
  1518. success: function (data) {
  1519. let theArr = [];
  1520. let waterSum = 0;
  1521. if (!data.data || !data.data.list) {
  1522. if (data.error && data.error.length) {
  1523. message.warning(data.error[0].message);
  1524. }
  1525. } else {
  1526. for (let i = 0; i < data.data.list.length; i++) {
  1527. let thisdata = data.data.list[i];
  1528. waterSum += parseFloat(thisdata.transactionAmount);
  1529. theArr.push({
  1530. key: i,
  1531. orderNo: thisdata.orderNo,
  1532. billNo: thisdata.billNo,
  1533. transactionAmount: thisdata.transactionAmount,
  1534. payeeName: thisdata.payeeName,
  1535. payerName: thisdata.payerName,
  1536. transactionSubject: thisdata.transactionSubject,
  1537. transactionChannel: thisdata.transactionChannel,
  1538. financialPayTimes: thisdata.financialPayTimes,
  1539. financialPayNo: thisdata.financialPayNo,
  1540. createrName: thisdata.createrName,
  1541. saleName: thisdata.saleName,
  1542. createTimes: thisdata.createTimes,
  1543. type: thisdata.type == 0 ? "手工" : "批量",
  1544. });
  1545. }
  1546. }
  1547. this.setState({
  1548. waterData: theArr,
  1549. waterSum: (Math.round(waterSum * 1000000) / 1000000).toFixed(6),
  1550. });
  1551. }.bind(this),
  1552. }).always(
  1553. function () {
  1554. this.setState({
  1555. loading: false,
  1556. });
  1557. }.bind(this)
  1558. );
  1559. },
  1560. waterCanl() {
  1561. this.setState({
  1562. cvisible: false,
  1563. });
  1564. },
  1565. // 拆分详细
  1566. showRes(record) {
  1567. this.setState({
  1568. resVisible: true,
  1569. resRecord: record,
  1570. });
  1571. },
  1572. resCancel() {
  1573. this.setState({
  1574. resVisible: false,
  1575. });
  1576. },
  1577. exportKaip() {
  1578. window.location.href =
  1579. globalConfig.context +
  1580. "/api/admin/receivables/exportInvoice?" +
  1581. `orderNo=${this.state.selectedRowKeys}`;
  1582. },
  1583. exportAll() {
  1584. message.config({
  1585. duration: 20,
  1586. });
  1587. let loading = message.loading("下载中...");
  1588. this.setState({
  1589. exportPendingLoading: true,
  1590. });
  1591. let data = {
  1592. orderNo: this.state.orderNoSearch,
  1593. buyerName: this.state.nameSearch,
  1594. deps: this.state.departmenttList,
  1595. contractNo: this.state.contractNoSearch,
  1596. processStatus: this.state.processStatusSearch,
  1597. };
  1598. $.ajax({
  1599. method: "get",
  1600. dataType: "json",
  1601. crossDomain: false,
  1602. url: "/api/admin/receivables/exportReceivables",
  1603. data,
  1604. success: function (data) {
  1605. if (data.error.length === 0) {
  1606. this.download(data.data);
  1607. } else {
  1608. message.warning(data.error[0].message);
  1609. }
  1610. }.bind(this),
  1611. }).always(
  1612. function () {
  1613. loading();
  1614. this.setState({
  1615. exportPendingLoading: false,
  1616. });
  1617. }.bind(this)
  1618. )
  1619. // window.location.href =
  1620. // globalConfig.context +
  1621. // "/api/admin/receivables/exportReceivables?" +
  1622. // `orderNo=${
  1623. // this.state.orderNoSearch ? this.state.orderNoSearch : ""
  1624. // }&buyerName=${
  1625. // this.state.nameSearch ? this.state.nameSearch : ""
  1626. // }&departmentId=${
  1627. // this.state.departmenttList ? this.state.departmenttList : ""
  1628. // }&contractNo=${
  1629. // this.state.contractNoSearch ? this.state.contractNoSearch : ""
  1630. // }&processStatus=${this.state.processStatusSearch}`;
  1631. },
  1632. // 下载
  1633. download(fileName) {
  1634. window.location.href =
  1635. globalConfig.context + "/open/download?fileName=" + fileName;
  1636. },
  1637. exportWater() {
  1638. window.location.href =
  1639. globalConfig.context +
  1640. "/api/admin/receivables/exportMyBill?" +
  1641. `orderNo=${this.state.selectedRowKeys}&whoType=1`;
  1642. },
  1643. timeData() {
  1644. this.setState({
  1645. loading: true,
  1646. });
  1647. $.ajax({
  1648. method: "get",
  1649. dataType: "json",
  1650. crossDomain: false,
  1651. url: globalConfig.context + "/api/admin/orderProject/taskHoursList",
  1652. data: {
  1653. orderNo: this.state.selectedRowKeys[0],
  1654. pageSize: 9999999,
  1655. },
  1656. success: function (data) {
  1657. let theArr = [];
  1658. if (!data.data || !data.data.list) {
  1659. if (data.error && data.error.length) {
  1660. message.warning(data.error[0].message);
  1661. }
  1662. } else {
  1663. for (let i = 0; i < data.data.list.length; i++) {
  1664. let thisdata = data.data.list[i];
  1665. theArr.push({
  1666. key: i + 1,
  1667. id: thisdata.id, //ID
  1668. orderNo: thisdata.orderNo, //订单编号
  1669. taskName: thisdata.taskName, //任务名称
  1670. userName: thisdata.userName, //客户名称
  1671. cname: thisdata.cname, //项目品类
  1672. taskStatus: thisdata.taskStatus, //任务状态
  1673. receiverName: thisdata.receiverName, //负责人
  1674. hours: thisdata.hours, //任务工时
  1675. depName: thisdata.depName, //派单公司
  1676. contractNo: thisdata.contractNo,
  1677. signTime: thisdata.signTime,
  1678. creteTime: thisdata.creteTime,
  1679. projectStatus: thisdata.projectStatus,
  1680. commodityPrice: thisdata.commodityPrice, //价格
  1681. commodityQuantity: thisdata.commodityQuantity, //数量
  1682. salesmanName: thisdata.salesmanName, //订单负责人
  1683. taskDistributionTime: thisdata.taskDistributionTime,
  1684. taskEndTime: thisdata.taskEndTime,
  1685. outsource: thisdata.outsource,
  1686. });
  1687. }
  1688. }
  1689. this.setState({
  1690. timeDataList: theArr,
  1691. });
  1692. }.bind(this),
  1693. }).always(
  1694. function () {
  1695. this.setState({
  1696. loading: false,
  1697. });
  1698. }.bind(this)
  1699. );
  1700. },
  1701. exportTime() {
  1702. const data = {
  1703. orderNo: this.state.selectedRowKeys[0],
  1704. pageSize: 9999999,
  1705. };
  1706. window.location.href =
  1707. globalConfig.context +
  1708. "/api/admin/orderProject/exportMyTaskList?" +
  1709. $.param(data);
  1710. },
  1711. exportPro() {
  1712. const data = {
  1713. orderNo: this.state.selectedRowKeys[0],
  1714. };
  1715. window.location.href =
  1716. globalConfig.context +
  1717. "/api/admin/newOrder/exportOrderTaskData?" +
  1718. $.param(data);
  1719. },
  1720. exportCui() {
  1721. var data = {
  1722. orderNo: this.state.selectedRowKeys[0]
  1723. ? this.state.selectedRowKeys[0]
  1724. : undefined, //订单编号
  1725. // specially: 1,
  1726. pageSize: 9999999,
  1727. };
  1728. window.location.href =
  1729. globalConfig.context +
  1730. "/api/admin/newOrder/exportOrderDunData?" +
  1731. $.param(data);
  1732. },
  1733. cuiData() {
  1734. this.setState({
  1735. loading: true,
  1736. });
  1737. $.ajax({
  1738. method: "get",
  1739. dataType: "json",
  1740. crossDomain: false,
  1741. url: globalConfig.context + "/api/admin/newOrder/dunOrderNewList",
  1742. data: {
  1743. orderNo: this.state.selectedRowKeys[0],
  1744. pageSize: 9999999,
  1745. },
  1746. success: function (data) {
  1747. let theArr = [];
  1748. if (!data.data || !data.data.list) {
  1749. if (data.error && data.error.length) {
  1750. message.warning(data.error[0].message);
  1751. }
  1752. } else {
  1753. for (let i = 0; i < data.data.list.length; i++) {
  1754. let thisdata = data.data.list[i];
  1755. theArr.push({
  1756. key: i + 1,
  1757. orderNo: thisdata.orderNo,
  1758. contractNo: thisdata.contractNo,
  1759. userName: thisdata.userName,
  1760. buyerName: thisdata.buyerName,
  1761. departmentName: thisdata.departmentName,
  1762. salesmanName: thisdata.salesmanName,
  1763. depName: thisdata.depName,
  1764. orderStatus: thisdata.orderStatus,
  1765. projectStatus: thisdata.projectStatus,
  1766. totalAmount: thisdata.totalAmount,
  1767. liquidationStatus: thisdata.liquidationStatus,
  1768. settlementAmount: thisdata.settlementAmount,
  1769. accountsReceivable: thisdata.accountsReceivable,
  1770. dunSubject: thisdata.dunSubject,
  1771. startDate: thisdata.startDate,
  1772. taskStatus: thisdata.taskStatus,
  1773. cname: thisdata.cname,
  1774. id: thisdata.id,
  1775. taskName: thisdata.taskName,
  1776. hours: thisdata.hours,
  1777. taskDistributionTime: thisdata.taskDistributionTime,
  1778. taskEndTime: thisdata.taskEndTime,
  1779. dunStatus: thisdata.dunStatus == 0 ? "未触发" : "已触发",
  1780. });
  1781. }
  1782. }
  1783. this.setState({
  1784. cuiDataList: theArr,
  1785. });
  1786. }.bind(this),
  1787. }).always(
  1788. function () {
  1789. this.setState({
  1790. loading: false,
  1791. });
  1792. }.bind(this)
  1793. );
  1794. },
  1795. proData() {
  1796. this.setState({
  1797. loading: true,
  1798. });
  1799. $.ajax({
  1800. method: "get",
  1801. dataType: "json",
  1802. crossDomain: false,
  1803. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  1804. data: {
  1805. orderNo: this.state.selectedRowKeys[0],
  1806. pageSize: 9999999,
  1807. },
  1808. success: function (data) {
  1809. let theArr = [];
  1810. let totalWaibao = 0;
  1811. if (!data.data) {
  1812. if (data.error && data.error.length) {
  1813. message.warning(data.error[0].message);
  1814. }
  1815. } else {
  1816. for (let i = 0; i < data.data.length; i++) {
  1817. let thisdata = data.data[i];
  1818. totalWaibao += thisdata.outsourcePrice;
  1819. thisdata.key = i + 1;
  1820. theArr.push(thisdata);
  1821. }
  1822. }
  1823. totalWaibao = (Math.round(totalWaibao * 1000000) / 1000000).toFixed(6);
  1824. this.setState({
  1825. proDataList: theArr,
  1826. totalWaibao,
  1827. });
  1828. }.bind(this),
  1829. }).always(
  1830. function () {
  1831. this.setState({
  1832. loading: false,
  1833. });
  1834. }.bind(this)
  1835. );
  1836. },
  1837. inRecordCanl() {
  1838. this.setState({
  1839. bvisible: false,
  1840. });
  1841. },
  1842. inRecordData() {
  1843. this.setState({
  1844. loading: true,
  1845. });
  1846. $.ajax({
  1847. method: "get",
  1848. dataType: "json",
  1849. crossDomain: false,
  1850. url:
  1851. globalConfig.context +
  1852. "/api/admin/orderInvoice/salesmanOrderInvoiceList",
  1853. data: {
  1854. orderNo: this.state.selectedRowKeys[0],
  1855. pageSize: 9999999,
  1856. },
  1857. success: function (data) {
  1858. let theArr = [];
  1859. let sum = 0;
  1860. if (!data.data) {
  1861. if (data.error && data.error.length) {
  1862. message.warning(data.error[0].message);
  1863. }
  1864. } else {
  1865. for (let i = 0; i < data.data.list.length; i++) {
  1866. let thisdata = data.data.list[i];
  1867. sum += parseFloat(thisdata.amount);
  1868. theArr.push({
  1869. id: thisdata.id,
  1870. orderno: thisdata.orderno, //订单编号
  1871. amount: thisdata.amount, //签单金额
  1872. createTime: thisdata.createTime, //流程状态
  1873. status: thisdata.status, //结算状态
  1874. rejectReason: thisdata.rejectReason,
  1875. approval: thisdata.approval,//0非特批 1待审核 2审核通过
  1876. examineName: thisdata.examineName,
  1877. });
  1878. }
  1879. }
  1880. this.setState({
  1881. recordData: theArr,
  1882. sum: sum.toFixed(6),
  1883. });
  1884. }.bind(this),
  1885. }).done(
  1886. function () {
  1887. this.setState({
  1888. loading: false,
  1889. });
  1890. }.bind(this)
  1891. );
  1892. },
  1893. // 通过弹出备注框
  1894. pass() {
  1895. this.setState({
  1896. reason: "",
  1897. passVisible: true,
  1898. });
  1899. },
  1900. passCancel() {
  1901. this.setState({
  1902. reason: "",
  1903. passVisible: false,
  1904. });
  1905. },
  1906. printAll() {
  1907. this.setState({
  1908. dvisible: true,
  1909. });
  1910. this.loadData(1, 9999999);
  1911. },
  1912. // 可展开颜色不同
  1913. addRowColor(record) {
  1914. if (!!record.splitList && record.splitList.length > 0) {
  1915. return 'light'
  1916. } else {
  1917. return 'dark'
  1918. }
  1919. },
  1920. render() {
  1921. const expandedRowRenderVip = (e) => {
  1922. const data = e.splitList;
  1923. let columns = [];
  1924. if (data instanceof Array && data.length) {
  1925. if (e.cSort == 6) {
  1926. columns = [
  1927. {
  1928. title: "负责人",
  1929. dataIndex: "receiverName",
  1930. key: "receiverName",
  1931. },
  1932. {
  1933. title: "负责人电话",
  1934. dataIndex: "receiverMobile",
  1935. key: "receiverMobile",
  1936. },
  1937. {
  1938. title: "项目状态",
  1939. dataIndex: "projectStatus",
  1940. key: "projectStatus",
  1941. render: (text) => {
  1942. return getProjectName(text);
  1943. },
  1944. },
  1945. {
  1946. title: "本次派单",
  1947. dataIndex: "serviceYear",
  1948. key: "serviceYear",
  1949. },
  1950. {
  1951. title: "项目说明",
  1952. dataIndex: "taskComment",
  1953. key: "taskComment",
  1954. render: (text) => {
  1955. return (
  1956. <Tooltip title={text}>
  1957. <div
  1958. // style={{
  1959. // width: 100,
  1960. // overflow: "hidden",
  1961. // whiteSpace: "nowrap",
  1962. // textOverflow: "ellipsis",
  1963. // }}
  1964. >{text}</div>
  1965. </Tooltip>
  1966. )
  1967. },
  1968. },
  1969. ];
  1970. } else {
  1971. columns = [
  1972. {
  1973. title: "子项目名称",
  1974. dataIndex: "taskName",
  1975. key: "taskName"
  1976. },
  1977. {
  1978. title: "子项目数量",
  1979. dataIndex: "commodityQuantity",
  1980. key: "commodityQuantity"
  1981. },
  1982. {
  1983. title: "拆分操作人",
  1984. dataIndex: "splitAname",
  1985. key: "splitAname"
  1986. },
  1987. {
  1988. title: "项目负责人",
  1989. dataIndex: "receiverName",
  1990. key: "receiverName"
  1991. },
  1992. {
  1993. title: "拆分时间",
  1994. dataIndex: "splitTimes",
  1995. key: "splitTimes"
  1996. }
  1997. ]
  1998. }
  1999. return (
  2000. <Table
  2001. columns={columns}
  2002. dataSource={data}
  2003. pagination={false}
  2004. />
  2005. );
  2006. } else {
  2007. columns = [];
  2008. return (
  2009. <p
  2010. style={{ fontWeight: "bold", color: "red", textAlign: "center" }}
  2011. >
  2012. {e.cSort == 6 ? "暂无派单" : "此项目暂未拆分"}
  2013. </p>
  2014. );
  2015. }
  2016. };
  2017. const formItemLayout = {
  2018. labelCol: { span: 8 },
  2019. wrapperCol: { span: 14 },
  2020. };
  2021. const FormItem = Form.Item;
  2022. const { RangePicker } = DatePicker;
  2023. const cuiDataList = this.state.contactList || [];
  2024. const rowSelection = {
  2025. selectedRowKeys: this.state.selectedRowKeys,
  2026. onChange: (selectedRowKeys, selectedRows) => {
  2027. this.setState({
  2028. modalVisible: false,
  2029. selectedRows: selectedRows.slice(-1),
  2030. selectedRowKeys: selectedRowKeys.slice(-1),
  2031. });
  2032. },
  2033. onSelect: (recordt) => {
  2034. this.setState({
  2035. modalVisible: false,
  2036. recordt: recordt.id,
  2037. });
  2038. },
  2039. };
  2040. return (
  2041. <div className="user-content">
  2042. {this.state.resVisible ? (
  2043. <ResolutionDetail
  2044. cancel={this.resCancel}
  2045. detail={this.state.resRecord}
  2046. visible={this.state.resVisible}
  2047. id={this.state.resRecord.orderNo}
  2048. />
  2049. ) : (
  2050. ""
  2051. )}
  2052. <ShowModalDiv ShowModal={this.state.showModal} />
  2053. <div className="content-title" style={{ marginBottom: 10 }}>
  2054. <span style={{ fontWeight: 900, fontSize: 16 }}>特批订单审核</span>
  2055. </div>
  2056. <Tabs defaultActiveKey="2" onChange={this.callback} className="test">
  2057. <TabPane tab="更改表格显示数据" key="1">
  2058. <div style={{ marginLeft: 10 }}>
  2059. <ChooseList
  2060. columns={this.state.columns}
  2061. changeFn={this.changeList}
  2062. changeList={this.state.changeList}
  2063. top={55}
  2064. margin={11}
  2065. />
  2066. </div>
  2067. </TabPane>
  2068. <TabPane tab="搜索" key="2">
  2069. <div className="user-search" style={{ marginLeft: 10 }}>
  2070. <Input
  2071. placeholder="订单编号"
  2072. value={this.state.orderNoSearch}
  2073. onChange={(e) => {
  2074. this.setState({ orderNoSearch: e.target.value });
  2075. }}
  2076. />
  2077. <Input
  2078. placeholder="客户名称"
  2079. value={this.state.nameSearch}
  2080. onChange={(e) => {
  2081. this.setState({ nameSearch: e.target.value });
  2082. }}
  2083. />
  2084. <Cascaders
  2085. ref={node => this.Cascaders = node}
  2086. placeholder="订单部门"
  2087. id="id"
  2088. name="name"
  2089. children="list"
  2090. height={28}
  2091. onSel={(e) => {
  2092. this.setState({
  2093. departmenttList: JSON.stringify(e),
  2094. });
  2095. }}
  2096. />
  2097. {/* <DepartmentList
  2098. value={this.state.departmenttList}
  2099. onChange={e => {
  2100. this.setState({ departmenttList: e });
  2101. }} /> */}
  2102. <Input
  2103. placeholder="合同编号"
  2104. value={this.state.contractNoSearch}
  2105. onChange={(e) => {
  2106. this.setState({
  2107. contractNoSearch: e.target.value,
  2108. });
  2109. }}
  2110. />
  2111. <Select
  2112. placeholder="特批状态"
  2113. onChange={(e) => {
  2114. this.setState({ approvalSearch: e });
  2115. }}
  2116. style={{ width: 160, marginRight: 5 }}
  2117. value={this.state.approvalSearch}
  2118. >
  2119. <Option value="1">特批待审核</Option>
  2120. <Option value="2">特批(通过以及驳回)</Option>
  2121. </Select>
  2122. <Select
  2123. placeholder="结算状态"
  2124. onChange={(e) => {
  2125. this.setState({ liquidationStatusSearch: e });
  2126. }}
  2127. style={{ width: 160, marginRight: 5 }}
  2128. value={this.state.liquidationStatusSearch}
  2129. >
  2130. <Option value="0">首付待付清</Option>
  2131. <Option value="1">尾款待付清</Option>
  2132. <Option value="2">已付清</Option>
  2133. </Select>
  2134. <span style={{}}>下单日期:</span>
  2135. <RangePicker
  2136. value={[
  2137. this.state.releaseDate[0]
  2138. ? moment(this.state.releaseDate[0])
  2139. : null,
  2140. this.state.releaseDate[1]
  2141. ? moment(this.state.releaseDate[1])
  2142. : null,
  2143. ]}
  2144. onChange={(data, dataString) => {
  2145. this.setState({ releaseDate: dataString });
  2146. }}
  2147. />
  2148. <Button
  2149. type="primary"
  2150. onClick={this.search}
  2151. style={{ marginLeft: 10 }}
  2152. disabled={this.state.loadingA ? true : false}
  2153. >
  2154. 搜索
  2155. </Button>
  2156. <Button onClick={this.reset}>重置</Button>
  2157. </div>
  2158. </TabPane>
  2159. <TabPane tab="打印" key="3">
  2160. <Button
  2161. type="primary"
  2162. style={{ margin: "11px 0px 10px 10px" }}
  2163. onClick={this.printAll}
  2164. disabled={!this.state.dataSource.length}
  2165. >
  2166. 打印所有列表信息
  2167. </Button>
  2168. <Button
  2169. type="primary"
  2170. disabled={this.state.selectedRowKeys.length != 1}
  2171. style={{ margin: "11px 0px 10px 10px" }}
  2172. onClick={() => {
  2173. this.inRecordData();
  2174. this.setState({
  2175. bvisible: true,
  2176. });
  2177. }}
  2178. >
  2179. 打印开票详情
  2180. </Button>
  2181. <Button
  2182. type="primary"
  2183. disabled={this.state.selectedRowKeys.length != 1}
  2184. style={{ margin: "11px 0px 10px 10px" }}
  2185. onClick={() => {
  2186. this.waterData();
  2187. this.setState({
  2188. cvisible: true,
  2189. });
  2190. }}
  2191. >
  2192. 打印收款流水
  2193. </Button>
  2194. <Button
  2195. type="primary"
  2196. disabled={this.state.selectedRowKeys.length != 1}
  2197. style={{ margin: "11px 0px 10px 10px" }}
  2198. onClick={() => {
  2199. this.timeData();
  2200. this.setState({
  2201. timeVisible: true,
  2202. });
  2203. }}
  2204. >
  2205. 打印工时信息
  2206. </Button>
  2207. <Button
  2208. type="primary"
  2209. disabled={this.state.selectedRowKeys.length != 1}
  2210. style={{ margin: "11px 0px 10px 10px" }}
  2211. onClick={() => {
  2212. this.cuiData();
  2213. this.setState({
  2214. cuiVisible: true,
  2215. });
  2216. }}
  2217. >
  2218. 打印催款信息
  2219. </Button>
  2220. <Button
  2221. type="primary"
  2222. disabled={this.state.selectedRowKeys.length != 1}
  2223. style={{ margin: "11px 0px 10px 10px" }}
  2224. onClick={() => {
  2225. this.proData();
  2226. this.setState({
  2227. proVisible: true,
  2228. });
  2229. }}
  2230. >
  2231. 打印项目信息
  2232. </Button>
  2233. </TabPane>
  2234. <TabPane tab="导出Excel" key="4">
  2235. {/* <Button
  2236. type="primary"
  2237. style={{ margin: "11px 0px 10px 10px" }}
  2238. onClick={this.exportAll}
  2239. >
  2240. 导出当前列表
  2241. </Button> */}
  2242. <Button
  2243. type="primary"
  2244. disabled={this.state.selectedRowKeys.length != 1}
  2245. style={{ margin: "11px 0px 10px 10px" }}
  2246. onClick={this.exportKaip}
  2247. >
  2248. 导出所选开票详情
  2249. </Button>
  2250. <Button
  2251. type="primary"
  2252. disabled={this.state.selectedRowKeys.length != 1}
  2253. style={{ margin: "11px 0px 10px 10px" }}
  2254. onClick={this.exportWater}
  2255. >
  2256. 导出所选收款详情流水
  2257. </Button>
  2258. <Button
  2259. type="primary"
  2260. disabled={this.state.selectedRowKeys.length != 1}
  2261. style={{ margin: "11px 0px 10px 10px" }}
  2262. onClick={this.exportTime}
  2263. >
  2264. 导出所选工时信息
  2265. </Button>
  2266. <Button
  2267. type="primary"
  2268. disabled={this.state.selectedRowKeys.length != 1}
  2269. style={{ margin: "11px 0px 10px 10px" }}
  2270. onClick={this.exportCui}
  2271. >
  2272. 导出催款信息
  2273. </Button>
  2274. <Button
  2275. type="primary"
  2276. disabled={this.state.selectedRowKeys.length != 1}
  2277. style={{ margin: "11px 0px 10px 10px" }}
  2278. onClick={this.exportPro}
  2279. >
  2280. 导出项目详情
  2281. </Button>
  2282. </TabPane>
  2283. <TabPane tab="查看" key="5">
  2284. <Button
  2285. type="primary"
  2286. disabled={this.state.selectedRowKeys.length != 1}
  2287. style={{ margin: "11px 0px 10px 10px" }}
  2288. onClick={() => {
  2289. this.inRecordData();
  2290. this.setState({
  2291. bvisible: true,
  2292. });
  2293. }}
  2294. >
  2295. 查看开票详情
  2296. </Button>
  2297. <Button
  2298. type="primary"
  2299. disabled={this.state.selectedRowKeys.length != 1}
  2300. style={{ margin: "11px 0px 10px 10px" }}
  2301. onClick={() => {
  2302. this.waterData();
  2303. this.setState({
  2304. cvisible: true,
  2305. });
  2306. }}
  2307. >
  2308. 详情收款流水
  2309. </Button>
  2310. <Button
  2311. type="primary"
  2312. disabled={this.state.selectedRowKeys.length != 1}
  2313. style={{ margin: "11px 0px 10px 10px" }}
  2314. onClick={() => {
  2315. this.timeData();
  2316. this.setState({
  2317. timeVisible: true,
  2318. });
  2319. }}
  2320. >
  2321. 工时信息
  2322. </Button>
  2323. <Button
  2324. type="primary"
  2325. disabled={this.state.selectedRowKeys.length != 1}
  2326. style={{ margin: "11px 0px 10px 10px" }}
  2327. onClick={() => {
  2328. this.cuiData();
  2329. this.setState({
  2330. cuiVisible: true,
  2331. });
  2332. }}
  2333. >
  2334. 催款信息
  2335. </Button>
  2336. <Button
  2337. type="primary"
  2338. disabled={this.state.selectedRowKeys.length != 1}
  2339. style={{ margin: "11px 0px 10px 10px" }}
  2340. onClick={() => {
  2341. this.proData();
  2342. this.setState({
  2343. proVisible: true,
  2344. });
  2345. }}
  2346. >
  2347. 项目信息
  2348. </Button>
  2349. </TabPane>
  2350. {/* <TabPane tab="批量操作" key="6">
  2351. <Button
  2352. type="primary"
  2353. disabled={this.state.selectedRowKeys.length == 0}
  2354. style={{ margin: "0px 0px 10px 10px" }}
  2355. onClick={e => {
  2356. e.stopPropagation(),
  2357. this.evaluateY(this.state.selectedRowKeys, "财务专员");
  2358. }}
  2359. >
  2360. 转交
  2361. </Button>
  2362. </TabPane> */}
  2363. </Tabs>
  2364. <div className="user-search">
  2365. <div className="patent-table">
  2366. <Spin spinning={this.state.loading}>
  2367. <Table
  2368. columns={
  2369. this.state.changeList == undefined
  2370. ? this.state.columns
  2371. : this.state.changeList
  2372. }
  2373. dataSource={this.state.dataSource}
  2374. rowSelection={rowSelection}
  2375. pagination={this.state.pagination}
  2376. onRowClick={this.tableRowClick}
  2377. bordered
  2378. size="small"
  2379. />
  2380. </Spin>
  2381. </div>
  2382. {this.state.visible ? <Modal
  2383. maskClosable={false}
  2384. className="customeDetails"
  2385. footer=""
  2386. title="订单详情"
  2387. width="1200px"
  2388. visible={this.state.visible}
  2389. onOk={this.visitOk}
  2390. onCancel={this.visitCancel}
  2391. >
  2392. <Form
  2393. layout="horizontal"
  2394. onSubmit={this.handleSubmit}
  2395. id="demand-form"
  2396. style={{ paddingBottom: "40px" }}
  2397. >
  2398. <Spin spinning={this.state.loading}>
  2399. <div className="clearfix">
  2400. <div style={{ position: "absolute", top: '-52px', left: '81px', zIndex: 10000 }}>
  2401. <OrderItemStatus deleteSign={this.state.deleteSign} />
  2402. </div>
  2403. <FormItem
  2404. className="half-item"
  2405. {...formItemLayout}
  2406. label="订单编号"
  2407. >
  2408. <span>{this.state.orderNo}</span>
  2409. </FormItem>
  2410. <FormItem
  2411. className="half-item"
  2412. {...formItemLayout}
  2413. label="合同编号"
  2414. >
  2415. <span>{this.state.contractNo}</span>
  2416. </FormItem>
  2417. <FormItem
  2418. className="half-item"
  2419. {...formItemLayout}
  2420. label="客户名称"
  2421. >
  2422. <span>
  2423. {this.state.userName}
  2424. <EnterpriseNameChange
  2425. type='journal'
  2426. style={{ marginLeft: 10 }}
  2427. enterpriseId={this.state.orderUid} />
  2428. </span>
  2429. </FormItem>
  2430. <FormItem
  2431. className="half-item"
  2432. {...formItemLayout}
  2433. label="合同签订时间"
  2434. >
  2435. <span>{this.state.signDate}</span>
  2436. </FormItem>
  2437. <FormItem
  2438. className="half-item"
  2439. {...formItemLayout}
  2440. label="流程状态"
  2441. >
  2442. <span>{getProcessStatus(this.state.processStatus, this.state.examineName, this.state.approval)}</span>
  2443. </FormItem>
  2444. <FormItem
  2445. className="half-item"
  2446. {...formItemLayout}
  2447. label="结算状态"
  2448. >
  2449. <span>
  2450. {getLiquidationStatus(this.state.liquidationStatus)}
  2451. </span>
  2452. </FormItem>
  2453. <FormItem
  2454. className="half-item"
  2455. {...formItemLayout}
  2456. label="企业联系人"
  2457. >
  2458. <span>{this.state.contacts}</span>
  2459. </FormItem>
  2460. <FormItem
  2461. className="half-item"
  2462. {...formItemLayout}
  2463. label="联系人电话"
  2464. >
  2465. <span>{this.state.contactMobile}</span>
  2466. </FormItem>
  2467. <FormItem
  2468. className="half-item"
  2469. {...formItemLayout}
  2470. label="企业法人"
  2471. >
  2472. <span>{this.state.legalPerson}</span>
  2473. </FormItem>
  2474. <FormItem
  2475. className="half-item"
  2476. {...formItemLayout}
  2477. label="法人电话"
  2478. >
  2479. <span>{this.state.legalPersonTel}</span>
  2480. </FormItem>
  2481. <FormItem
  2482. className="half-item"
  2483. {...formItemLayout}
  2484. label="签单金额(万元)"
  2485. >
  2486. <span>{this.state.totalAmount}</span>
  2487. </FormItem>
  2488. <FormItem
  2489. className="half-item"
  2490. {...formItemLayout}
  2491. label="首付金额(万元)"
  2492. >
  2493. <span>{this.state.firstAmount}</span>
  2494. </FormItem>
  2495. <FormItem
  2496. className="half-item"
  2497. {...formItemLayout}
  2498. label="特批立项"
  2499. >
  2500. <span>{getApprovedState(this.state.approval)}</span>
  2501. </FormItem>
  2502. <FormItem
  2503. className="half-item"
  2504. {...formItemLayout}
  2505. label="已收款项(万元)"
  2506. >
  2507. <span>{this.state.settlementAmount}</span>
  2508. </FormItem>
  2509. <FormItem
  2510. className="half-item"
  2511. {...formItemLayout}
  2512. label="是否外包"
  2513. >
  2514. <span>{this.state.outsource}</span>
  2515. </FormItem>
  2516. <div className="clearfix">
  2517. <FormItem
  2518. labelCol={{ span: 4 }}
  2519. wrapperCol={{ span: 16 }}
  2520. label="订单留言"
  2521. >
  2522. <span>{this.state.orderRemarks}</span>
  2523. </FormItem>
  2524. </div>
  2525. <div className="clearfix">
  2526. <FormItem
  2527. labelCol={{ span: 4 }}
  2528. wrapperCol={{ span: 18 }}
  2529. label={
  2530. <span>
  2531. <strong style={{ color: "#f00" }}>*</strong>
  2532. 合同扫描件
  2533. </span>
  2534. }
  2535. >
  2536. <PicturesWall
  2537. domId={'approveds1'}
  2538. fileList={this.getOrgCodeUrl}
  2539. pictureUrl={this.state.orgCodeUrl}
  2540. />
  2541. <p>图片建议:要清晰。</p>
  2542. <Button
  2543. style={{
  2544. float: "right",
  2545. marginRight: "140px",
  2546. marginTop: "20px",
  2547. }}
  2548. onClick={this.getOrderLog}
  2549. >
  2550. 查看订单 日志
  2551. </Button>
  2552. </FormItem>
  2553. <FormItem
  2554. labelCol={{ span: 4 }}
  2555. wrapperCol={{ span: 18 }}
  2556. label={
  2557. <span>
  2558. 补充协议
  2559. </span>
  2560. }
  2561. >
  2562. <PicturesWall
  2563. domId={'approveds2'}
  2564. fileList={this.getReplenishUrl}
  2565. pictureUrl={this.state.replenishUrl}
  2566. url="/api/admin/order/uploadOrderImg"
  2567. sign=""
  2568. />
  2569. <p>图片建议:要清晰。</p>
  2570. </FormItem>
  2571. </div>
  2572. <ContentUrl
  2573. processStatus={1}
  2574. domId={"approContents"}
  2575. contentUrl={this.state.contentUrl}
  2576. imgId={"approContentsImg"}
  2577. />
  2578. <div className="clearfix">
  2579. <FormItem
  2580. className="half-item"
  2581. {...formItemLayout}
  2582. label="订单负责人"
  2583. >
  2584. <span>{this.state.salesmanName}</span>
  2585. </FormItem>
  2586. <FormItem
  2587. className="half-item"
  2588. {...formItemLayout}
  2589. label="订单负责人电话"
  2590. >
  2591. <span>{this.state.salesmanMobile}</span>
  2592. </FormItem>
  2593. </div>
  2594. <div className="clearfix">
  2595. <FormItem
  2596. className="half-item"
  2597. {...formItemLayout}
  2598. label="财务负责人"
  2599. >
  2600. <span>{this.state.financeName}</span>
  2601. </FormItem>
  2602. <FormItem
  2603. className="half-item"
  2604. {...formItemLayout}
  2605. label="财务负责人电话"
  2606. >
  2607. <span>{this.state.financeMobile}</span>
  2608. </FormItem>
  2609. </div>
  2610. {/* */}
  2611. <OrderCoor orderNo={this.state.orderNos} />
  2612. <div>
  2613. <span style={{ marginLeft: "50px", fontSize: "18px" }}>
  2614. 项目业务
  2615. </span>
  2616. {this.state.processStatus == 0 ? (
  2617. <Button
  2618. type="primary"
  2619. onClick={this.addDetailed}
  2620. style={{
  2621. float: "right",
  2622. marginRight: "50px",
  2623. marginBottom: "15px",
  2624. }}
  2625. >
  2626. 添加项目明细
  2627. </Button>
  2628. ) : (
  2629. ""
  2630. )}
  2631. </div>
  2632. <div className="patent-table">
  2633. <Spin spinning={this.state.loading}>
  2634. <Table
  2635. columns={this.state.columnsX}
  2636. dataSource={this.state.dataSourceX}
  2637. pagination={this.state.paginations}
  2638. onRowClick={this.tableRowClickX}
  2639. expandedRowRender={expandedRowRenderVip}
  2640. rowClassName={this.addRowColor}
  2641. bordered
  2642. size="small"
  2643. />
  2644. </Spin>
  2645. </div>
  2646. <div style={{ marginTop: 10 }}>
  2647. <span style={{ marginLeft: 50, fontSize: "18px" }}>
  2648. 催款节点
  2649. </span>
  2650. <span
  2651. style={{
  2652. display: cuiDataList.length ? "none" : "inline-block",
  2653. marginLeft: 10,
  2654. color: "red",
  2655. }}
  2656. >
  2657. 金额总计(万元): {this.state.totalCui}
  2658. </span>
  2659. </div>
  2660. <div className="clearfix">
  2661. <Spin spinning={this.state.loading}>
  2662. <Form layout="horizontal" id="demand-form">
  2663. <Table
  2664. pagination={false}
  2665. bordered
  2666. size="small"
  2667. columns={
  2668. cuiDataList.length
  2669. ? this.state.ContactsLists
  2670. : this.state.ContactsListsNew
  2671. }
  2672. dataSource={
  2673. cuiDataList.length
  2674. ? this.state.contactList
  2675. : this.state.contactListNew
  2676. }
  2677. />
  2678. <Col
  2679. span={24}
  2680. offset={9}
  2681. style={{ marginTop: "15px" }}
  2682. />
  2683. </Form>
  2684. </Spin>
  2685. </div>
  2686. {(this.state.approval === 1 || this.state.approval === 4) &&
  2687. <div className="addSave" style={{ marginTop: "15px" }}>
  2688. <Button
  2689. className="cancel"
  2690. type="primary"
  2691. onClick={this.pass}
  2692. style={{ marginLeft: "200px" }}
  2693. htmlType="submit"
  2694. >
  2695. 通过
  2696. </Button>
  2697. <Button
  2698. className="cancel"
  2699. type="primary"
  2700. onClick={this.examNo}
  2701. style={{ marginLeft: "50px" }}
  2702. htmlType="submit"
  2703. >
  2704. 驳回
  2705. </Button>
  2706. <Button
  2707. className="cancel"
  2708. type="ghost"
  2709. onClick={this.visitCancel}
  2710. style={{ marginLeft: "50px" }}
  2711. >
  2712. 取消
  2713. </Button>
  2714. </div>}
  2715. </div>
  2716. </Spin>
  2717. </Form>
  2718. </Modal> : <div />}
  2719. {this.state.noVisible ? <Modal
  2720. maskClosable={false}
  2721. visible={this.state.noVisible}
  2722. onOk={this.noCancel}
  2723. onCancel={this.noCancel}
  2724. width="400px"
  2725. title={"拒绝理由"}
  2726. footer=""
  2727. className="admin-desc-content"
  2728. >
  2729. <Form layout="horizontal" id="demand-form">
  2730. <Spin spinning={this.state.loading}>
  2731. <div className="clearfix">
  2732. <FormItem
  2733. labelCol={{ span: 4 }}
  2734. wrapperCol={{ span: 16 }}
  2735. label="拒绝理由"
  2736. >
  2737. <Input
  2738. type="textarea"
  2739. placeholder="请输入拒绝理由"
  2740. rows={4}
  2741. value={this.state.reason}
  2742. onChange={(e) => {
  2743. this.setState({ reason: e.target.value });
  2744. }}
  2745. />
  2746. </FormItem>
  2747. </div>
  2748. <div className="clearfix">
  2749. <Button
  2750. className="cancel"
  2751. type="primary"
  2752. onClick={this.examOks}
  2753. style={{ marginLeft: "50px" }}
  2754. htmlType="submit"
  2755. >
  2756. 确定
  2757. </Button>
  2758. <Button
  2759. className="cancel"
  2760. type="ghost"
  2761. onClick={this.noCancel}
  2762. style={{ marginLeft: "50px" }}
  2763. >
  2764. 取消
  2765. </Button>
  2766. </div>
  2767. </Spin>
  2768. </Form>
  2769. </Modal> : <div />}
  2770. {this.state.passVisible ? <Modal
  2771. maskClosable={false}
  2772. visible={this.state.passVisible}
  2773. onOk={this.passCancel}
  2774. onCancel={this.passCancel}
  2775. width="400px"
  2776. title={"同意理由"}
  2777. footer=""
  2778. className="admin-desc-content"
  2779. >
  2780. <Form layout="horizontal">
  2781. <Spin spinning={this.state.loading}>
  2782. <div className="clearfix">
  2783. <FormItem
  2784. labelCol={{ span: 4 }}
  2785. wrapperCol={{ span: 16 }}
  2786. label="同意备注"
  2787. >
  2788. <Input
  2789. type="textarea"
  2790. placeholder="请输入备注"
  2791. rows={4}
  2792. value={this.state.reason}
  2793. onChange={(e) => {
  2794. this.setState({ reason: e.target.value });
  2795. }}
  2796. />
  2797. </FormItem>
  2798. </div>
  2799. <div className="clearfix">
  2800. <Button
  2801. className="cancel"
  2802. type="primary"
  2803. onClick={this.examOk}
  2804. style={{ marginLeft: "50px" }}
  2805. htmlType="submit"
  2806. >
  2807. 确定
  2808. </Button>
  2809. <Button
  2810. className="cancel"
  2811. type="ghost"
  2812. onClick={this.passCancel}
  2813. style={{ marginLeft: "50px" }}
  2814. >
  2815. 取消
  2816. </Button>
  2817. </div>
  2818. </Spin>
  2819. </Form>
  2820. </Modal> : <div />}
  2821. {this.state.rizhivisible ? <Modal
  2822. visible={this.state.rizhivisible}
  2823. className="admin-desc-content"
  2824. width="800px"
  2825. maskClosable={false}
  2826. title="订单日志"
  2827. footer={null}
  2828. onCancel={this.closeOrderLog}
  2829. >
  2830. <div className="patent-table">
  2831. <Spin spinning={this.state.loading}>
  2832. <Table
  2833. columns={this.state.columnsrizhi}
  2834. dataSource={this.state.dataSourcerizhi}
  2835. pagination={false}
  2836. bordered
  2837. size="small"
  2838. />
  2839. </Spin>
  2840. </div>
  2841. </Modal> : <div />}
  2842. {this.state.dvisible ? <Modal
  2843. maskClosable={false}
  2844. visible={this.state.dvisible}
  2845. footer=""
  2846. title="所有列表信息"
  2847. className="admin-desc-content"
  2848. width="1400px"
  2849. onCancel={() => {
  2850. // this.loadData();
  2851. this.setState({
  2852. dvisible: false,
  2853. });
  2854. }}
  2855. >
  2856. <Spin spinning={this.state.loading}>
  2857. <div
  2858. className="patent-table"
  2859. style={{
  2860. // width: 900,
  2861. // position: "relative",
  2862. // left: "50%",
  2863. // transform: "translate(-50%)",
  2864. padding: "25px 0 30px 30px",
  2865. }}
  2866. ref={(e) => {
  2867. this.refs.all = e;
  2868. }}
  2869. >
  2870. <Table
  2871. columns={this.state.columns}
  2872. dataSource={this.state.dataSource}
  2873. pagination={false}
  2874. bordered
  2875. size="small"
  2876. />
  2877. </div>
  2878. </Spin>
  2879. <ReactToPrint
  2880. trigger={() => (
  2881. <Button
  2882. type="primary"
  2883. style={{
  2884. float: "right",
  2885. marginTop: 10,
  2886. position: "absolute",
  2887. top: 0,
  2888. right: 30,
  2889. }}
  2890. >
  2891. 打印
  2892. </Button>
  2893. )}
  2894. content={() => this.refs.all}
  2895. />
  2896. </Modal> : <div />}
  2897. {this.state.bvisible ? <Modal
  2898. maskClosable={false}
  2899. visible={this.state.bvisible}
  2900. footer=""
  2901. title="开票历史记录"
  2902. className="admin-desc-content"
  2903. width="1200px"
  2904. onCancel={this.inRecordCanl}
  2905. >
  2906. <Spin spinning={this.state.loading}>
  2907. <div
  2908. className="patent-table"
  2909. ref={(e) => {
  2910. this.refs.kaiPiao = e;
  2911. }}
  2912. >
  2913. <Table
  2914. columns={this.state.columnsDate}
  2915. dataSource={this.state.recordData}
  2916. pagination={false}
  2917. bordered
  2918. size="small"
  2919. />
  2920. <div className="clearfix" style={{ marginTop: "20px" }}>
  2921. <FormItem
  2922. className="half-item"
  2923. {...formItemLayout}
  2924. label={<span style={{ fontSize: "14px" }}>开票总计</span>}
  2925. >
  2926. <span>{this.state.sum + "(万元)"}</span>
  2927. </FormItem>
  2928. </div>
  2929. <ReactToPrint
  2930. trigger={() => (
  2931. <Button
  2932. type="primary"
  2933. style={{
  2934. float: "right",
  2935. // marginTop: 10,
  2936. position: "absolute",
  2937. top: -54,
  2938. right: 30,
  2939. }}
  2940. >
  2941. 打印
  2942. </Button>
  2943. )}
  2944. content={() => this.refs.kaiPiao}
  2945. />
  2946. </div>
  2947. </Spin>
  2948. </Modal> : <div />}
  2949. {this.state.cvisible ? <Modal
  2950. maskClosable={false}
  2951. visible={this.state.cvisible}
  2952. footer=""
  2953. title="详细收款流水"
  2954. className="admin-desc-content"
  2955. width="1300px"
  2956. onCancel={this.waterCanl}
  2957. >
  2958. <Spin spinning={this.state.loading}>
  2959. <div
  2960. className="patent-table"
  2961. ref={(e) => {
  2962. this.refs.shouKuan = e;
  2963. }}
  2964. >
  2965. <Table
  2966. columns={this.state.waterlistDate}
  2967. dataSource={this.state.waterData}
  2968. pagination={false}
  2969. bordered
  2970. size="small"
  2971. />
  2972. <div className="clearfix" style={{ marginTop: "20px" }}>
  2973. <FormItem
  2974. className="half-item"
  2975. {...formItemLayout}
  2976. label={<span style={{ fontSize: "14px" }}>总计金额</span>}
  2977. >
  2978. <span>{this.state.waterSum + "(万元)"}</span>
  2979. </FormItem>
  2980. </div>
  2981. <ReactToPrint
  2982. trigger={() => (
  2983. <Button
  2984. type="primary"
  2985. style={{
  2986. float: "right",
  2987. position: "absolute",
  2988. top: -54,
  2989. right: 30,
  2990. }}
  2991. >
  2992. 打印
  2993. </Button>
  2994. )}
  2995. content={() => this.refs.shouKuan}
  2996. />
  2997. </div>
  2998. </Spin>
  2999. </Modal> : <div />}
  3000. {this.state.timeVisible ? <Modal
  3001. maskClosable={false}
  3002. visible={this.state.timeVisible}
  3003. footer=""
  3004. title="工时详情"
  3005. className="admin-desc-content"
  3006. width="1300px"
  3007. pagination={false}
  3008. onCancel={() => {
  3009. // this.loadData();
  3010. this.setState({
  3011. timeVisible: false,
  3012. });
  3013. }}
  3014. >
  3015. <Spin spinning={this.state.loading}>
  3016. <div
  3017. className="patent-table"
  3018. style={
  3019. {
  3020. // width: 900,
  3021. // position: "relative",
  3022. // left: "50%",
  3023. // transform: "translate(-50%)",
  3024. // padding: "25px 0 30px 30px"
  3025. }
  3026. }
  3027. ref={(e) => {
  3028. this.refs.all = e;
  3029. }}
  3030. >
  3031. <Table
  3032. columns={this.state.timeColumns}
  3033. dataSource={this.state.timeDataList}
  3034. scroll={{ x: "max-content", y: 0 }}
  3035. pagination={false}
  3036. bordered
  3037. size="small"
  3038. />
  3039. </div>
  3040. </Spin>
  3041. <ReactToPrint
  3042. trigger={() => (
  3043. <Button
  3044. type="primary"
  3045. style={{
  3046. float: "right",
  3047. marginTop: 10,
  3048. position: "absolute",
  3049. top: 0,
  3050. right: 30,
  3051. }}
  3052. >
  3053. 打印
  3054. </Button>
  3055. )}
  3056. content={() => this.refs.all}
  3057. />
  3058. </Modal> : <div />}
  3059. {this.state.cuiVisible ? <Modal
  3060. maskClosable={false}
  3061. visible={this.state.cuiVisible}
  3062. footer=""
  3063. title="催款详情"
  3064. className="admin-desc-content"
  3065. width="1300px"
  3066. pagination={false}
  3067. onCancel={() => {
  3068. // this.loadData();
  3069. this.setState({
  3070. cuiVisible: false,
  3071. });
  3072. }}
  3073. >
  3074. <Spin spinning={this.state.loading}>
  3075. <div
  3076. className="patent-table"
  3077. style={
  3078. {
  3079. // width: 900,
  3080. // position: "relative",
  3081. // left: "50%",
  3082. // transform: "translate(-50%)",
  3083. // padding: "25px 0 30px 30px"
  3084. }
  3085. }
  3086. ref={(e) => {
  3087. this.refs.all = e;
  3088. }}
  3089. >
  3090. <Table
  3091. columns={this.state.cuiColumns}
  3092. dataSource={this.state.cuiDataList}
  3093. scroll={{ x: "max-content", y: 0 }}
  3094. pagination={false}
  3095. bordered
  3096. size="small"
  3097. />
  3098. </div>
  3099. </Spin>
  3100. <ReactToPrint
  3101. trigger={() => (
  3102. <Button
  3103. type="primary"
  3104. style={{
  3105. float: "right",
  3106. marginTop: 10,
  3107. position: "absolute",
  3108. top: 0,
  3109. right: 30,
  3110. }}
  3111. >
  3112. 打印
  3113. </Button>
  3114. )}
  3115. content={() => this.refs.all}
  3116. />
  3117. </Modal> : <div />}
  3118. {this.state.proVisible ? <Modal
  3119. maskClosable={false}
  3120. visible={this.state.proVisible}
  3121. footer=""
  3122. title="项目详情"
  3123. className="admin-desc-content"
  3124. width="1300px"
  3125. pagination={false}
  3126. onCancel={() => {
  3127. // this.loadData();
  3128. this.setState({
  3129. proVisible: false,
  3130. });
  3131. }}
  3132. >
  3133. <Spin spinning={this.state.loading}>
  3134. <Project
  3135. record={this.state.record}
  3136. visible={this.state.pvisible}
  3137. cancel={() => {
  3138. this.setState({ pvisible: false });
  3139. }}
  3140. />
  3141. <div
  3142. className="patent-table"
  3143. style={
  3144. {
  3145. // width: 900,
  3146. // position: "relative",
  3147. // left: "50%",
  3148. // transform: "translate(-50%)",
  3149. // padding: "25px 0 30px 30px"
  3150. }
  3151. }
  3152. ref={(e) => {
  3153. this.refs.all = e;
  3154. }}
  3155. >
  3156. <Table
  3157. columns={this.state.proColumns}
  3158. dataSource={this.state.proDataList}
  3159. // onRowClick={this.tableRowClickPro}
  3160. pagination={false}
  3161. bordered
  3162. size="small"
  3163. />
  3164. </div>
  3165. <span style={{ display: "block", marginTop: 10, color: "red" }}>
  3166. 外包(内部)价格总计(万元):{this.state.totalWaibao}
  3167. </span>
  3168. </Spin>
  3169. <ReactToPrint
  3170. trigger={() => (
  3171. <Button
  3172. type="primary"
  3173. style={{
  3174. float: "right",
  3175. marginTop: 10,
  3176. position: "absolute",
  3177. top: 0,
  3178. right: 30,
  3179. }}
  3180. >
  3181. 打印
  3182. </Button>
  3183. )}
  3184. content={() => this.refs.all}
  3185. />
  3186. </Modal> : <div />}
  3187. </div>
  3188. {/* {this.state.addnextVisible &&
  3189. <ProjectDetailsReadOnly
  3190. infor={this.state.dataInfor}
  3191. visible={this.state.addnextVisible}
  3192. onCancel={this.nextCancel}
  3193. />} */}
  3194. {
  3195. // 项目业务详情
  3196. this.state.addnextVisible &&
  3197. <NewEditProject
  3198. readOnly={
  3199. this.state.dataInfor &&
  3200. Object.keys(this.state.dataInfor).length > 0 &&
  3201. this.state.processStatus !== 0
  3202. }
  3203. visible={this.state.addnextVisible}
  3204. dataInfor={this.state.dataInfor}
  3205. onCancel={this.nextCancel}
  3206. />
  3207. }
  3208. </div>
  3209. );
  3210. },
  3211. })
  3212. );
  3213. export default IntentionCustomer;