shouKuanAll.jsx 132 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374
  1. import React from "react";
  2. import $ from "jquery/src/ajax";
  3. import moment from "moment";
  4. import "./public.less";
  5. import "./shouKuan.less";
  6. import {
  7. AutoComplete,
  8. Button,
  9. Form,
  10. Input,
  11. Spin,
  12. Table,
  13. Select,
  14. message,
  15. DatePicker,
  16. Modal,
  17. Tabs,
  18. Col,
  19. Tag,
  20. Tooltip,
  21. } from "antd";
  22. import OrderDesc from "../orderDetail/orderDesc";
  23. import Receivable from "./receivable";
  24. import ResolutionDetail from "@/resolutionDetail";
  25. import Assign from "@/manageCenter/publicComponent/assign";
  26. import KaiPiaoModal from "./kaiPiaoModal";
  27. import ReactToPrint from "react-to-print";
  28. import {
  29. getLiquidationStatus,
  30. getProcessStatus,
  31. getApproval,
  32. getInvoiceStatus,
  33. getTransactionProject,
  34. getTaskStatus,
  35. getNewOrderStatus,
  36. getjiedian,
  37. splitUrl,
  38. getApprovalTag,
  39. getProjectName,
  40. getClockState,
  41. getApprovedType,
  42. } from "@/tools";
  43. import { ChooseList } from "../../order/orderNew/chooseList";
  44. import Project from "../../../../component/project";
  45. import LogPopup from "../../../common/logPopup";
  46. import { clockState, salesList, approvalOptions } from "@/dataDic";
  47. import OrderItemStatus from "../../../common/orderItemStatus";
  48. import Cascaders from "../../../common/cascaders";
  49. const FormItem = Form.Item;
  50. const { TabPane } = Tabs;
  51. const ShouKuang = React.createClass({
  52. //获取上级组织
  53. selectSuperId() {
  54. $.ajax({
  55. method: "get",
  56. dataType: "json",
  57. crossDomain: false,
  58. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  59. data: {},
  60. success: function (data) {
  61. let theArr = [];
  62. if (data.error && data.error.length === 0) {
  63. for (let i = 0; i < data.data.length; i++) {
  64. let theData = data.data[i];
  65. theArr.push(
  66. <Select.Option value={theData.id} key={theData.id}>
  67. {theData.name}
  68. </Select.Option>
  69. );
  70. }
  71. this.setState({
  72. contactsOption: theArr,
  73. });
  74. } else {
  75. message.warning(data.error[0].message);
  76. }
  77. }.bind(this),
  78. }).always(
  79. function () {
  80. this.setState({
  81. loading: false,
  82. });
  83. }.bind(this)
  84. );
  85. },
  86. departmentList() {
  87. this.setState({
  88. loading: true,
  89. });
  90. $.ajax({
  91. method: "get",
  92. dataType: "json",
  93. crossDomain: false,
  94. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  95. data: {},
  96. success: function (data) {
  97. let thedata = data.data;
  98. let theArr = [];
  99. if (!thedata) {
  100. if (data.error && data.error.length) {
  101. message.warning(data.error[0].message);
  102. }
  103. } else {
  104. thedata.map(function (item, index) {
  105. theArr.push({
  106. key: index,
  107. name: item.name,
  108. id: item.id,
  109. });
  110. });
  111. }
  112. this.setState({
  113. departmentArr: theArr,
  114. });
  115. }.bind(this),
  116. }).always(
  117. function () {
  118. this.setState({
  119. loading: false,
  120. });
  121. }.bind(this)
  122. );
  123. },
  124. loadData(pageNo, pageSize) {
  125. this.state.data = [];
  126. this.state.pagination.pageSize = 10;
  127. this.setState({
  128. // selectedRowKeys: [],
  129. // selectedRowKey: [],
  130. page: pageNo,
  131. loadingA: true,
  132. pagination: this.state.pagination,
  133. });
  134. $.ajax({
  135. method: "get",
  136. dataType: "json",
  137. crossDomain: false,
  138. url: globalConfig.context + "/api/admin/financial/financeList",
  139. data: {
  140. pageNo: pageNo || 1,
  141. pageSize: pageSize || this.state.pagination.pageSize,
  142. buyerName: this.state.nameSearch, //客户名称
  143. orderNo: this.state.orderNoSearch,
  144. startTime: this.state.releaseDate[0],
  145. endTime: this.state.releaseDate[1],
  146. startFinalReceivablesTime: this.state.shouKuanDate[0],
  147. endFinalReceivablesTime: this.state.shouKuanDate[1],
  148. deps: this.state.departmenttList,
  149. processStatus: this.state.processStatusSearch,
  150. contractNo: this.state.contractNoSearch,
  151. liquidationStatus: this.state.liquidationStatus,
  152. amountStatus: this.state.amountStatus,
  153. approval: this.state.approval,
  154. projectType: this.state.projectType,
  155. type: this.state.approvaType.length > 0 ? this.state.approvaType.toString() : undefined, //特批类型
  156. },
  157. success: function (data) {
  158. let theArr = [];
  159. if (!data.data || !data.data.pagination.list) {
  160. if (data.error && data.error.length) {
  161. message.warning(data.error[0].message);
  162. }
  163. } else {
  164. for (let i = 0; i < data.data.pagination.list.length; i++) {
  165. let thisdata = data.data.pagination.list[i];
  166. thisdata.key = thisdata.orderNo;
  167. theArr.push(thisdata);
  168. }
  169. }
  170. this.state.pagination.current = data.data.pagination.pageNo;
  171. this.state.pagination.total = data.data.pagination.totalCount;
  172. if (
  173. data.data &&
  174. data.data.pagination.list &&
  175. !data.data.pagination.list.length
  176. ) {
  177. this.state.pagination.current = 0;
  178. this.state.pagination.total = 0;
  179. }
  180. this.setState({
  181. totalPage: data.data.pagination.totalPage,
  182. dataSource: theArr,
  183. pagination: this.state.pagination,
  184. totalHui: data.data.count ? data.data.count.signTotalAmount : 0,
  185. hui: data.data.count ? data.data.count.actuallyTotalAmount : 0,
  186. });
  187. }.bind(this),
  188. }).always(
  189. function () {
  190. this.setState({
  191. loadingA: false,
  192. });
  193. }.bind(this)
  194. );
  195. },
  196. getInitialState() {
  197. return {
  198. approvaType: [],
  199. isDisplay: true,
  200. cuiTabKey: "1",
  201. pubVisible: false,
  202. pubDataList: [],
  203. pubpageNo: 1,
  204. pubpagination: {
  205. defaultCurrent: 1,
  206. defaultPageSize: 10,
  207. showQuickJumper: true,
  208. pageSize: 10,
  209. onChange: function (page) {
  210. this.loadData(page);
  211. }.bind(this),
  212. showTotal: function (total) {
  213. return "共" + total + "条数据";
  214. },
  215. },
  216. searchMore: true,
  217. dvisible: false,
  218. pageNo: 1,
  219. assignVisibleX: false,
  220. assignVisibleY: false,
  221. releaseDate: [],
  222. shouKuanDate: [],
  223. assignDataX: [],
  224. assignDataY: [],
  225. totalPage: 0,
  226. processStatusSearch: [],
  227. boHuivisible: false,
  228. selectedRowKeys: [],
  229. selectedRows: [],
  230. loading: false,
  231. loadingA: false,
  232. pagination: {
  233. defaultCurrent: 1,
  234. defaultPageSize: 10,
  235. showQuickJumper: true,
  236. pageSize: 10,
  237. onChange: function (page) {
  238. this.loadData(page);
  239. }.bind(this),
  240. showTotal: function (total) {
  241. return "共" + total + "条数据";
  242. },
  243. },
  244. // 子组件改变的表格title数组
  245. changeList: undefined,
  246. pubColumns: [
  247. {
  248. title: "编号",
  249. dataIndex: "key",
  250. key: "key",
  251. width: 45,
  252. },
  253. {
  254. title: "公出类型",
  255. dataIndex: "type",
  256. key: "type",
  257. width: 70,
  258. render: (text) =>
  259. <span
  260. style={{ color: ["#1D4FEA", "#1E90FF", "#FF5500", "red"][text] }}
  261. >
  262. {
  263. text === 0
  264. ? "业务公出" : text === 1
  265. ? "技术公出" : text === 2
  266. ? "行政公出" : text === 3
  267. ? "技术协单" : ""
  268. }
  269. </span>
  270. },
  271. {
  272. title: "客户名称",
  273. dataIndex: "nickname",
  274. key: "nickname",
  275. width: 80,
  276. render: (text) => {
  277. return (
  278. <div
  279. style={{
  280. width: 80,
  281. wordBreak: "break-all",
  282. }}
  283. >
  284. {text}
  285. </div>
  286. );
  287. },
  288. },
  289. {
  290. title: "跟单人",
  291. dataIndex: "sname",
  292. key: "sname",
  293. width: 70,
  294. render: (text) => {
  295. return (
  296. <Tooltip title={text}>
  297. <div
  298. style={{
  299. width: 90,
  300. overflow: "hidden",
  301. textOverflow: "ellipsis",
  302. whiteSpace: "nowrap",
  303. }}
  304. >
  305. {text}
  306. </div>
  307. </Tooltip>
  308. );
  309. },
  310. },
  311. {
  312. title: "公出人",
  313. dataIndex: "aname",
  314. key: "aname",
  315. width: 70,
  316. render: (text) => {
  317. return (
  318. <Tooltip title={text}>
  319. <div
  320. style={{
  321. width: 90,
  322. overflow: "hidden",
  323. textOverflow: "ellipsis",
  324. whiteSpace: "nowrap",
  325. }}
  326. >
  327. {text}
  328. </div>
  329. </Tooltip>
  330. );
  331. },
  332. },
  333. // {
  334. // title: "申请时间",
  335. // dataIndex: "createTimes",
  336. // key: "createTimes",
  337. // width: 130,
  338. // },
  339. {
  340. title: "公出时间",
  341. dataIndex: "releaseStarts",
  342. key: "releaseStarts",
  343. width: 130,
  344. render: (text, record) => (
  345. <div>
  346. <div>{text}</div>
  347. <div style={{ paddingLeft: "44px" }}>至</div>
  348. <div>{record.releaseEnds}</div>
  349. </div>
  350. ),
  351. },
  352. {
  353. title: "公出地点",
  354. dataIndex: "userName",
  355. key: "userName",
  356. width: 120,
  357. render: (text) => {
  358. return (
  359. <div>{text}</div>
  360. );
  361. },
  362. },
  363. {
  364. title: "打卡时间",
  365. dataIndex: "clockInTimes",
  366. key: "clockInTimes",
  367. width: 75,
  368. },
  369. {
  370. title: "时长(时)",
  371. dataIndex: "duration",
  372. key: "duration",
  373. width: 50,
  374. },
  375. {
  376. title: "打卡状态",
  377. dataIndex: "clockIn",
  378. key: "clockIn",
  379. width: 65,
  380. render: (text) => (
  381. <span
  382. style={{ color: ["#F21212", "#34DE38"][text] }}
  383. >
  384. {["未打卡", "已打卡"][text]}
  385. </span>
  386. )
  387. },
  388. {
  389. title: "审核状态",
  390. dataIndex: "status",
  391. key: "status",
  392. width: 110,
  393. render: (text, record) => (
  394. <div>
  395. <Tag color={getClockState(text).color}>
  396. {getClockState(text).title}
  397. </Tag>
  398. {record.updateStatus == 1 && <Tag color="#1E90FF">改</Tag>}
  399. </div>
  400. ),
  401. },
  402. {
  403. title: "审核/指导",
  404. dataIndex: "auditInfo",
  405. key: "auditInfo",
  406. width: 160,
  407. render: (text) => {
  408. return <div style={{ wordBreak: "break-all" }}>{text}</div>;
  409. },
  410. },
  411. ],
  412. proColumns: [
  413. {
  414. title: "序号",
  415. dataIndex: "key",
  416. key: "key",
  417. },
  418. {
  419. title: "合同编号",
  420. dataIndex: "contractNo",
  421. key: "contractNo",
  422. },
  423. {
  424. title: "订单编号",
  425. dataIndex: "orderNo",
  426. key: "orderNo",
  427. },
  428. {
  429. title: "客户名称",
  430. dataIndex: "userName",
  431. key: "userName",
  432. render: (text) => {
  433. return (
  434. <Tooltip title={text}>
  435. <div
  436. // style={{
  437. // maxWidth: "150px",
  438. // overflow: "hidden",
  439. // textOverflow: "ellipsis",
  440. // whiteSpace: "nowrap",
  441. // }}
  442. >
  443. {text}
  444. </div>
  445. </Tooltip>
  446. );
  447. },
  448. },
  449. {
  450. title: "订单负责人",
  451. dataIndex: "salesmanName",
  452. key: "salesmanName",
  453. },
  454. {
  455. title: "是否主项目",
  456. dataIndex: "main",
  457. key: "main",
  458. render: (text) => {
  459. return text == 0 ? "否" : "是";
  460. },
  461. },
  462. {
  463. title: "项目类别",
  464. dataIndex: "cname",
  465. key: "cname",
  466. },
  467. {
  468. title: "项目名称",
  469. dataIndex: "commodityName",
  470. key: "commodityName",
  471. },
  472. {
  473. title: "项目数量",
  474. dataIndex: "commodityQuantity",
  475. key: "commodityQuantity",
  476. render: (text, record) => {
  477. if (record.splitStatus == 1) {
  478. return (
  479. <span>
  480. {text}{" "}
  481. <Tag
  482. color="#108ee9"
  483. onClick={(e) => {
  484. e.stopPropagation();
  485. this.showRes(record);
  486. }}
  487. >
  488. 已拆
  489. </Tag>
  490. </span>
  491. );
  492. } else {
  493. return text;
  494. }
  495. },
  496. },
  497. {
  498. title: "服务市价",
  499. dataIndex: "commodityPrice",
  500. key: "commodityPrice",
  501. },
  502. {
  503. title: "证书编号",
  504. dataIndex: "certificateNumber",
  505. key: "certificateNumber",
  506. },
  507. {
  508. title: "项目状态",
  509. dataIndex: "projectStatus",
  510. key: "projectStatus",
  511. render: (text) => {
  512. return getProjectName(text);
  513. },
  514. },
  515. {
  516. title: "项目说明",
  517. dataIndex: "taskComment",
  518. key: "taskComment",
  519. },
  520. {
  521. title: "是否外包",
  522. dataIndex: "outsource",
  523. key: "outsource",
  524. render: (text) => {
  525. if (text == 0) {
  526. return "否";
  527. } else if (text == 1) {
  528. return "是";
  529. }
  530. },
  531. },
  532. // {
  533. // title: "外包(内部)公司",
  534. // dataIndex: "outsourceName",
  535. // key: "outsourceName",
  536. // },
  537. // {
  538. // title: "外包(内部)价格",
  539. // dataIndex: "outsourcePrice",
  540. // key: "outsourcePrice",
  541. // },
  542. ],
  543. qianColumns: [
  544. {
  545. title: "序号",
  546. dataIndex: "key",
  547. key: "key",
  548. },
  549. {
  550. title: "合同编号",
  551. dataIndex: "contractNo",
  552. key: "contractNo",
  553. },
  554. {
  555. title: "订单编号",
  556. dataIndex: "orderNo",
  557. key: "orderNo",
  558. },
  559. {
  560. title: "客户名称",
  561. dataIndex: "userName",
  562. key: "userName",
  563. render: (text) => {
  564. return (
  565. <Tooltip title={text}>
  566. <div
  567. // style={{
  568. // maxWidth: "150px",
  569. // overflow: "hidden",
  570. // textOverflow: "ellipsis",
  571. // whiteSpace: "nowrap",
  572. // }}
  573. >
  574. {text}
  575. </div>
  576. </Tooltip>
  577. );
  578. },
  579. },
  580. {
  581. title: "订单负责人",
  582. dataIndex: "salesmanName",
  583. key: "salesmanName",
  584. },
  585. {
  586. title: "订单部门",
  587. dataIndex: "depName",
  588. key: "depName",
  589. },
  590. {
  591. title: "订单状态",
  592. dataIndex: "orderStatus",
  593. key: "orderStatus",
  594. render: (text) => {
  595. return getNewOrderStatus(text);
  596. },
  597. },
  598. {
  599. title: "项目状态",
  600. dataIndex: "projectStatus",
  601. key: "projectStatus",
  602. render: (text) => {
  603. return getProjectName(text);
  604. },
  605. },
  606. {
  607. title: "签单金额",
  608. dataIndex: "totalAmount",
  609. key: "totalAmount",
  610. },
  611. {
  612. title: "结算状态",
  613. dataIndex: "liquidationStatus",
  614. key: "liquidationStatus",
  615. render: (text) => {
  616. return getLiquidationStatus(text);
  617. },
  618. },
  619. {
  620. title: "已收款",
  621. dataIndex: "settlementAmount",
  622. key: "settlementAmount",
  623. },
  624. {
  625. title: "欠款",
  626. dataIndex: "orderArrears",
  627. key: "orderArrears",
  628. },
  629. {
  630. title: "催收科目",
  631. dataIndex: "type",
  632. key: "type",
  633. render: (text) => {
  634. return "按时触发应收欠款";
  635. },
  636. },
  637. {
  638. title: "催款状态",
  639. dataIndex: "dunStatus",
  640. key: "dunStatus",
  641. render: (text) => {
  642. if (text == 0) {
  643. return "未启动";
  644. } else if (text == 1) {
  645. return "催款中";
  646. } else if (text == 2) {
  647. return "已完成";
  648. } else if (text == 3) {
  649. return "已停止";
  650. }
  651. },
  652. },
  653. {
  654. title: "催收启动时间",
  655. dataIndex: "startDate",
  656. key: "startDate",
  657. },
  658. ],
  659. cuiColumns: [
  660. {
  661. title: "序号",
  662. dataIndex: "key",
  663. key: "key",
  664. },
  665. {
  666. title: "合同编号",
  667. dataIndex: "contractNo",
  668. key: "contractNo",
  669. },
  670. {
  671. title: "订单编号",
  672. dataIndex: "orderNo",
  673. key: "orderNo",
  674. },
  675. {
  676. title: "客户名称",
  677. dataIndex: "userName",
  678. key: "userName",
  679. render: (text) => {
  680. return (
  681. <Tooltip title={text}>
  682. <div
  683. // style={{
  684. // maxWidth: "150px",
  685. // overflow: "hidden",
  686. // textOverflow: "ellipsis",
  687. // whiteSpace: "nowrap",
  688. // }}
  689. >
  690. {text}
  691. </div>
  692. </Tooltip>
  693. );
  694. },
  695. },
  696. {
  697. title: "订单负责人",
  698. dataIndex: "salesmanName",
  699. key: "salesmanName",
  700. },
  701. {
  702. title: "订单部门",
  703. dataIndex: "depName",
  704. key: "depName",
  705. },
  706. {
  707. title: "订单状态",
  708. dataIndex: "orderStatus",
  709. key: "orderStatus",
  710. render: (text) => {
  711. return getNewOrderStatus(text);
  712. },
  713. },
  714. {
  715. title: "项目状态",
  716. dataIndex: "projectStatus",
  717. key: "projectStatus",
  718. render: (text) => {
  719. return getProjectName(text);
  720. },
  721. },
  722. {
  723. title: "签单金额",
  724. dataIndex: "totalAmount",
  725. key: "totalAmount",
  726. },
  727. {
  728. title: "结算状态",
  729. dataIndex: "liquidationStatus",
  730. key: "liquidationStatus",
  731. render: (text) => {
  732. return getLiquidationStatus(text);
  733. },
  734. },
  735. {
  736. title: "已收款",
  737. dataIndex: "settlementAmount",
  738. key: "settlementAmount",
  739. },
  740. {
  741. title: "应收款",
  742. dataIndex: "accountsReceivable",
  743. key: "accountsReceivable",
  744. },
  745. {
  746. title: "催收科目",
  747. dataIndex: "dunSubject",
  748. key: "dunSubject",
  749. // render: text => {
  750. // return getjiedian(text);
  751. // }
  752. },
  753. {
  754. title: "催款状态",
  755. dataIndex: "dunStatus",
  756. key: "dunStatus",
  757. },
  758. {
  759. title: "催收启动时间",
  760. dataIndex: "startDate",
  761. key: "startDate",
  762. },
  763. ],
  764. timeColumns: [
  765. {
  766. title: "合同编号",
  767. dataIndex: "contractNo",
  768. key: "contractNo",
  769. },
  770. {
  771. title: "订单编号",
  772. dataIndex: "orderNo",
  773. key: "orderNo",
  774. },
  775. {
  776. title: "项目编号",
  777. dataIndex: "id",
  778. key: "id",
  779. render: (text, record) => {
  780. if (record.splitStatus == 2) {
  781. return <span>{record.splitSuper + "-" + record.splitId}</span>;
  782. } else {
  783. return text;
  784. }
  785. },
  786. },
  787. {
  788. title: "客户名称",
  789. dataIndex: "userName",
  790. key: "userName",
  791. render: (text) => {
  792. return (
  793. <Tooltip title={text}>
  794. <div
  795. // style={{
  796. // maxWidth: "150px",
  797. // overflow: "hidden",
  798. // textOverflow: "ellipsis",
  799. // whiteSpace: "nowrap",
  800. // }}
  801. >
  802. {text}
  803. </div>
  804. </Tooltip>
  805. );
  806. },
  807. },
  808. {
  809. title: "订单部门",
  810. dataIndex: "depName",
  811. key: "depName",
  812. },
  813. {
  814. title: "订单负责人",
  815. dataIndex: "salesmanName",
  816. key: "salesmanName",
  817. },
  818. {
  819. title: "项目类别",
  820. dataIndex: "cname",
  821. key: "cname",
  822. },
  823. {
  824. title: "项目名称",
  825. dataIndex: "taskName",
  826. key: "taskName",
  827. },
  828. {
  829. title: "项目负责人",
  830. dataIndex: "receiverName",
  831. key: "receiverName",
  832. },
  833. {
  834. title: "项目价格(万元)",
  835. dataIndex: "commodityPrice",
  836. key: "commodityPrice",
  837. },
  838. {
  839. title: "数量(个)",
  840. dataIndex: "commodityQuantity",
  841. key: "commodityQuantity",
  842. },
  843. {
  844. title: "任务状态",
  845. dataIndex: "taskStatus",
  846. key: "taskStatus",
  847. render: (text) => {
  848. return getTaskStatus(text);
  849. },
  850. },
  851. {
  852. title: "项目状态",
  853. dataIndex: "projectStatus",
  854. key: "projectStatus",
  855. render: (text) => {
  856. return getProjectName(text);
  857. },
  858. },
  859. {
  860. title: "工时",
  861. dataIndex: "hours",
  862. key: "hours",
  863. },
  864. {
  865. title: "是否外包",
  866. dataIndex: "outsource",
  867. key: "outsource",
  868. render: (text) => {
  869. if (text == 0) {
  870. return "否";
  871. } else if (text == 1) {
  872. return "是";
  873. }
  874. },
  875. },
  876. {
  877. title: "签单日期",
  878. dataIndex: "signTime",
  879. key: "signTime",
  880. },
  881. {
  882. title: "派单日期",
  883. dataIndex: "creteTime",
  884. key: "creteTime",
  885. },
  886. {
  887. title: "分配时间",
  888. dataIndex: "taskDistributionTime",
  889. key: "taskDistributionTime",
  890. },
  891. {
  892. title: "完成时间",
  893. dataIndex: "taskEndTime",
  894. key: "taskEndTime",
  895. },
  896. ],
  897. printColumns: [
  898. {
  899. title: "合同编号",
  900. dataIndex: "contractNo",
  901. key: "contractNo",
  902. },
  903. {
  904. title: "订单编号",
  905. dataIndex: "orderNo",
  906. key: "orderNo",
  907. },
  908. {
  909. title: "客户名称",
  910. dataIndex: "buyerName",
  911. key: "buyerName",
  912. render: (text) => {
  913. return (
  914. <Tooltip title={text}>
  915. <div
  916. // style={{
  917. // maxWidth: "150px",
  918. // overflow: "hidden",
  919. // textOverflow: "ellipsis",
  920. // whiteSpace: "nowrap",
  921. // }}
  922. >
  923. {text}
  924. </div>
  925. </Tooltip>
  926. );
  927. },
  928. },
  929. {
  930. title: "订单部门",
  931. dataIndex: "departmentName",
  932. key: "departmentName",
  933. },
  934. {
  935. title: "订单负责人",
  936. dataIndex: "sellerName",
  937. key: "sellerName",
  938. },
  939. {
  940. title: "签单日期",
  941. dataIndex: "signTime",
  942. key: "signTime",
  943. },
  944. {
  945. title: "下单日期",
  946. dataIndex: "createTime",
  947. key: "createTime",
  948. },
  949. {
  950. title: "签单金额(万元)",
  951. dataIndex: "signTotalAmount",
  952. key: "signTotalAmount",
  953. },
  954. {
  955. title: "开票金额(万元)",
  956. dataIndex: "invoiceAmount",
  957. key: "invoiceAmount",
  958. },
  959. {
  960. title: "已收款(万元)",
  961. dataIndex: "actuallyTotalAmount",
  962. key: "actuallyTotalAmount",
  963. },
  964. {
  965. title: "总成本(万元)",
  966. dataIndex: "costAmount",
  967. key: "costAmount",
  968. render: (text) => {
  969. return isNaN(parseFloat(text)) ? text : parseFloat(text);
  970. },
  971. },
  972. {
  973. title: "已付成本(万元)",
  974. dataIndex: "paymentAmount",
  975. key: "paymentAmount",
  976. render: (text) => {
  977. return isNaN(parseFloat(text)) ? text : parseFloat(text);
  978. },
  979. },
  980. {
  981. title: "最近收款(万元)",
  982. dataIndex: "finalReceivables",
  983. key: "finalReceivables",
  984. },
  985. {
  986. title: "最近收款时间",
  987. dataIndex: "finalReceivablesTime",
  988. key: "finalReceivablesTime",
  989. },
  990. {
  991. title: "结算状态",
  992. dataIndex: "liquidationStatus",
  993. key: "liquidationStatus",
  994. render: (text) => {
  995. return getLiquidationStatus(text);
  996. },
  997. },
  998. {
  999. title: "流程状态",
  1000. dataIndex: "processStatus",
  1001. key: "processStatus",
  1002. render: (text, record) => {
  1003. return getProcessStatus(text, record.examineName, record.approval);
  1004. },
  1005. },
  1006. // {
  1007. // title: "特批状态",
  1008. // dataIndex: "approval",
  1009. // key: "approval",
  1010. // render: (text) => {
  1011. // return getApproval(text);
  1012. // },
  1013. // },
  1014. ],
  1015. columns: [
  1016. {
  1017. title: "销售类型",
  1018. dataIndex: "salesType",
  1019. key: "salesType",
  1020. className: "title-table",
  1021. fixed: "left",
  1022. render: (text, record) => {
  1023. return (
  1024. <Tooltip
  1025. title={salesList[text] + ((text == 3 || text == 4 || text == 5) ? (!record.other ? "" : "," + record.other) : "")}
  1026. >
  1027. <span>
  1028. {salesList[text]}
  1029. </span>
  1030. </Tooltip>
  1031. );
  1032. },
  1033. },
  1034. {
  1035. title: "特批类型",
  1036. dataIndex: "type",
  1037. key: "type",
  1038. className: "title-table",
  1039. fixed: "left",
  1040. width: 110,
  1041. render: (text, record) => {
  1042. return (
  1043. <span>
  1044. {getApprovedType(text ? text.split(",").map(Number) : [], record.typeExplain)}
  1045. </span>
  1046. );
  1047. },
  1048. },
  1049. {
  1050. title: "合同编号",
  1051. dataIndex: "contractNo",
  1052. key: "contractNo",
  1053. className: "title-table",
  1054. fixed: "left",
  1055. // width: 130,
  1056. render: (text, record) => {
  1057. return (
  1058. <Tooltip
  1059. title={
  1060. <Button
  1061. type="primary"
  1062. onClick={(e) => {
  1063. e.stopPropagation();
  1064. let input = document.getElementById("copyText");
  1065. input.value = text;
  1066. input.select();
  1067. document.execCommand("copy");
  1068. message.success("复制成功");
  1069. }}
  1070. >
  1071. 复制
  1072. </Button>
  1073. }
  1074. >
  1075. <div>
  1076. {text}
  1077. <div style={{ display: "flex" }}>
  1078. <OrderItemStatus deleteSign={record.deleteSign} />
  1079. {getApprovalTag(record.approval)}
  1080. </div>
  1081. </div>
  1082. </Tooltip>
  1083. );
  1084. },
  1085. },
  1086. {
  1087. title: "客户名称",
  1088. dataIndex: "buyerName",
  1089. key: "buyerName",
  1090. className: "title-table",
  1091. fixed: "left",
  1092. width: 150,
  1093. render: (text) => {
  1094. return (
  1095. <Tooltip title={text}>
  1096. <div
  1097. // style={{
  1098. // maxWidth: "150px",
  1099. // overflow: "hidden",
  1100. // textOverflow: "ellipsis",
  1101. // whiteSpace: "nowrap",
  1102. // }}
  1103. >
  1104. {text}
  1105. </div>
  1106. </Tooltip>
  1107. );
  1108. },
  1109. },
  1110. {
  1111. title: "订单编号",
  1112. dataIndex: "orderNo",
  1113. key: "orderNo",
  1114. className: "title-table",
  1115. fixed: "left",
  1116. width: 140,
  1117. render: (text, record) => {
  1118. return (
  1119. <Tooltip
  1120. title={
  1121. <Button
  1122. type="primary"
  1123. onClick={(e) => {
  1124. e.stopPropagation();
  1125. let input = document.getElementById("copyText");
  1126. input.value = text;
  1127. input.select();
  1128. document.execCommand("copy");
  1129. message.success("复制成功");
  1130. }}
  1131. >
  1132. 复制
  1133. </Button>
  1134. }
  1135. >
  1136. <div>
  1137. {text}
  1138. <div>
  1139. {record.signTotalAmount >= 10 && <Tag color="#ef7207">大客户</Tag>}
  1140. {record.projectType == 1 && <Tag color="rgb(22, 155, 213)">会员</Tag>}
  1141. </div>
  1142. </div>
  1143. </Tooltip>
  1144. );
  1145. },
  1146. },
  1147. // {
  1148. // title: "特批状态",
  1149. // dataIndex: "approval",
  1150. // key: "approval",
  1151. // className: "title-table",
  1152. // render: (text) => {
  1153. // if (text == 1 || text == 2) {
  1154. // return <Tag color="#f50">{getApproval(text)}</Tag>;
  1155. // }
  1156. // return getApproval(text);
  1157. // },
  1158. // },
  1159. {
  1160. title: "订单部门",
  1161. dataIndex: "departmentName",
  1162. key: "departmentName",
  1163. className: "title-table",
  1164. },
  1165. {
  1166. title: "订单负责人",
  1167. dataIndex: "sellerName",
  1168. key: "sellerName",
  1169. className: "title-table",
  1170. },
  1171. {
  1172. title: "订单类型",
  1173. dataIndex: "serviceType",
  1174. key: "serviceType",
  1175. className: "title-table",
  1176. width: 150,
  1177. render: (text) => {
  1178. return !!text && text.replace(/[,,]/g, "+");
  1179. }
  1180. },
  1181. {
  1182. title: "订单内容",
  1183. dataIndex: "serviceProject",
  1184. key: "serviceProject",
  1185. className: "title-table",
  1186. render: (text, record) => {
  1187. return (
  1188. this.state.isDisplay
  1189. ? <div dangerouslySetInnerHTML={{ __html: !!text && text.replace(/[,,]/g, "<br/>") }} ></div>
  1190. : <div>{text}</div>
  1191. );
  1192. }
  1193. },
  1194. {
  1195. title: "财务负责人",
  1196. dataIndex: "financeName",
  1197. key: "financeName",
  1198. className: "title-table",
  1199. },
  1200. {
  1201. title: "签单日期",
  1202. dataIndex: "signTime",
  1203. key: "signTime",
  1204. className: "title-table",
  1205. },
  1206. {
  1207. title: "下单日期",
  1208. dataIndex: "createTime",
  1209. key: "createTime",
  1210. className: "title-table",
  1211. },
  1212. {
  1213. title: "签单金额(万元)",
  1214. dataIndex: "signTotalAmount",
  1215. key: "signTotalAmount",
  1216. className: "title-table",
  1217. },
  1218. {
  1219. title: "开票金额(万元)",
  1220. dataIndex: "invoiceAmount",
  1221. key: "invoiceAmount",
  1222. className: "title-table",
  1223. },
  1224. {
  1225. title: "已收款(万元)",
  1226. dataIndex: "actuallyTotalAmount",
  1227. key: "actuallyTotalAmount",
  1228. className: "title-table",
  1229. },
  1230. {
  1231. title: "应收款(万元)",
  1232. dataIndex: "orderReceivables",
  1233. key: "orderReceivables",
  1234. className: "title-table",
  1235. },
  1236. {
  1237. title: "欠款(万元)",
  1238. dataIndex: "orderArrears",
  1239. key: "orderArrears",
  1240. className: "title-table",
  1241. },
  1242. {
  1243. title: "总成本/实付",
  1244. dataIndex: "costAmount",
  1245. key: "costAmount",
  1246. className: "title-table",
  1247. render: (text, record) => {
  1248. return (
  1249. <span>
  1250. {isNaN(parseFloat(text)) ? text : parseFloat(text)}/
  1251. {isNaN(parseFloat(record.paymentAmount)) ? text : parseFloat(record.paymentAmount)}
  1252. </span>
  1253. )
  1254. },
  1255. },
  1256. {
  1257. title: "专利/专利已付",
  1258. dataIndex: "patentCost",
  1259. key: "patentCost",
  1260. className: "title-table",
  1261. render: (text, record) => {
  1262. return (
  1263. <span>
  1264. {isNaN(parseFloat(text)) ? text : parseFloat(text)}/
  1265. {isNaN(parseFloat(record.patentCostActual)) ? text : parseFloat(record.patentCostActual)}
  1266. </span>
  1267. )
  1268. },
  1269. },
  1270. {
  1271. title: "软著/软著已付",
  1272. dataIndex: "softCost",
  1273. key: "softCost",
  1274. className: "title-table",
  1275. render: (text, record) => {
  1276. return (
  1277. <span>
  1278. {isNaN(parseFloat(text)) ? text : parseFloat(text)}/
  1279. {isNaN(parseFloat(record.softCostActual)) ? text : parseFloat(record.softCostActual)}
  1280. </span>
  1281. )
  1282. },
  1283. },
  1284. {
  1285. title: "审计/审计已付",
  1286. dataIndex: "auditCost",
  1287. key: "auditCost",
  1288. className: "title-table",
  1289. render: (text, record) => {
  1290. return (
  1291. <span>
  1292. {isNaN(parseFloat(text)) ? text : parseFloat(text)}/
  1293. {isNaN(parseFloat(record.auditCostActual)) ? text : parseFloat(record.auditCostActual)}
  1294. </span>
  1295. )
  1296. },
  1297. },
  1298. {
  1299. title: "其他/其他已付",
  1300. dataIndex: "otherCost",
  1301. key: "otherCost",
  1302. className: "title-table",
  1303. render: (text, record) => {
  1304. return (
  1305. <span>
  1306. {isNaN(parseFloat(text)) ? text : parseFloat(text)}/
  1307. {isNaN(parseFloat(record.otherCostActual)) ? text : parseFloat(record.otherCostActual)}
  1308. </span>
  1309. )
  1310. },
  1311. },
  1312. {
  1313. title: "预估毛利(万元)",
  1314. dataIndex: "expectProfit",
  1315. key: "expectProfit",
  1316. className: "title-table",
  1317. },
  1318. {
  1319. title: "实际毛利(万元)",
  1320. dataIndex: "actualProfit",
  1321. key: "actualProfit",
  1322. className: "title-table",
  1323. },
  1324. {
  1325. title: "最近收款(万元)",
  1326. dataIndex: "finalReceivables",
  1327. key: "finalReceivables",
  1328. className: "title-table",
  1329. },
  1330. {
  1331. title: "最近收款时间",
  1332. dataIndex: "finalReceivablesTime",
  1333. key: "finalReceivablesTime",
  1334. className: "title-table",
  1335. },
  1336. {
  1337. title: "结算状态",
  1338. dataIndex: "liquidationStatus",
  1339. key: "liquidationStatus",
  1340. className: "title-table",
  1341. render: (text) => {
  1342. return getLiquidationStatus(text);
  1343. },
  1344. },
  1345. {
  1346. title: "流程状态",
  1347. dataIndex: "processStatus",
  1348. key: "processStatus",
  1349. className: "title-table",
  1350. render: (text, record) => {
  1351. return getProcessStatus(text, record.examineName, record.approval);
  1352. },
  1353. },
  1354. {
  1355. title: "驳回状态",
  1356. dataIndex: "backStatus",
  1357. key: "backStatus",
  1358. className: "title-table",
  1359. render: (text) => {
  1360. if (text == 3) {
  1361. return <Tag>已驳回</Tag>;
  1362. } else {
  1363. return "";
  1364. }
  1365. },
  1366. },
  1367. // {
  1368. // title: '订单状态',
  1369. // dataIndex: 'orderStatus',
  1370. // key: 'orderStatus',
  1371. // render: text => { return getNewOrderStatus(text)}
  1372. // },
  1373. // {
  1374. // title: "操作",
  1375. // dataIndex: "caozuo",
  1376. // key: "caouzo",
  1377. // className: "title-table",
  1378. // render: (text, recard) => {
  1379. // return (
  1380. // <div>
  1381. // {recard.liquidationStatus < 2 &&
  1382. // (recard.approval === 1 || recard.approval === 2) ? (
  1383. // <Button
  1384. // style={{ background: "rgb(192,192,192)" }}
  1385. // onClick={e => {
  1386. // e.stopPropagation(), this.evaluateX(recard);
  1387. // }}
  1388. // >
  1389. // 收款
  1390. // </Button>
  1391. // ) : (
  1392. // <Button
  1393. // type="primary"
  1394. // onClick={e => {
  1395. // e.stopPropagation(), this.evaluateX(recard);
  1396. // }}
  1397. // >
  1398. // 收款
  1399. // </Button>
  1400. // )}
  1401. // {recard.processStatus < 4 ? (
  1402. // <Button
  1403. // type="primary"
  1404. // onClick={e => {
  1405. // e.stopPropagation(), this.evaluateZ(recard);
  1406. // }}
  1407. // style={{ marginLeft: "5px" }}
  1408. // >
  1409. // 通过
  1410. // </Button>
  1411. // ) : (
  1412. // ""
  1413. // )}
  1414. // {!(
  1415. // recard.actuallyTotalAmount &&
  1416. // Number(recard.actuallyTotalAmount) > 0
  1417. // ) && (
  1418. // <Button
  1419. // type="danger"
  1420. // style={{ marginLeft: "5px" }}
  1421. // onClick={e => {
  1422. // e.stopPropagation(), this.reject(recard);
  1423. // }}
  1424. // >
  1425. // 驳回
  1426. // </Button>
  1427. // )}
  1428. // {
  1429. // // <Button
  1430. // // type="primary"
  1431. // // style={{ marginLeft: "5px" }}
  1432. // // onClick={e => {
  1433. // // e.stopPropagation(), this.evaluateY(recard, "财务专员");
  1434. // // console.log(recard);
  1435. // // }}
  1436. // // >
  1437. // // 转交
  1438. // // </Button>
  1439. // }
  1440. // </div>
  1441. // );
  1442. // }
  1443. // }
  1444. ],
  1445. dataSource: [],
  1446. searchTime: [],
  1447. columnsDate: [
  1448. {
  1449. title: "编号",
  1450. dataIndex: "id",
  1451. key: "id",
  1452. },
  1453. {
  1454. title: "订单编号",
  1455. dataIndex: "orderno",
  1456. key: "orderno",
  1457. },
  1458. {
  1459. title: "开票金额(万元)",
  1460. dataIndex: "amount",
  1461. key: "amount",
  1462. },
  1463. {
  1464. title: "申请时间",
  1465. dataIndex: "createTime",
  1466. key: "createTime",
  1467. },
  1468. {
  1469. title: "开票状态",
  1470. dataIndex: "status",
  1471. key: "status",
  1472. render: (text, record) => {
  1473. return <div>{getInvoiceStatus(text, record)} <LogPopup id={record.id} /></div>;
  1474. },
  1475. },
  1476. ],
  1477. waterlistDate: [
  1478. {
  1479. title: "订单编号",
  1480. dataIndex: "orderNo",
  1481. key: "orderNo",
  1482. },
  1483. {
  1484. title: "平台流水号",
  1485. dataIndex: "billNo",
  1486. key: "billNo",
  1487. // fixed: "left"
  1488. },
  1489. {
  1490. title: "收款金额(万元)",
  1491. dataIndex: "transactionAmount",
  1492. key: "transactionAmount",
  1493. },
  1494. {
  1495. title: "收款方",
  1496. dataIndex: "payeeName",
  1497. key: "payeeName",
  1498. },
  1499. {
  1500. title: "付款方",
  1501. dataIndex: "payerName",
  1502. key: "payerName",
  1503. },
  1504. {
  1505. title: "流水科目",
  1506. dataIndex: "transactionSubject",
  1507. key: "transactionSubject",
  1508. render: (text) => {
  1509. return getTransactionProject(text);
  1510. },
  1511. },
  1512. {
  1513. title: "收款类型",
  1514. dataIndex: "type",
  1515. key: "type",
  1516. },
  1517. {
  1518. title: "财务流水时间",
  1519. dataIndex: "financialPayTimes",
  1520. key: "financialPayTimes",
  1521. },
  1522. {
  1523. title: "财务流水号",
  1524. dataIndex: "financialPayNo",
  1525. key: "financialPayNo",
  1526. },
  1527. {
  1528. title: "订单负责人",
  1529. dataIndex: "saleName",
  1530. key: "saleName",
  1531. },
  1532. {
  1533. title: "创建时间",
  1534. dataIndex: "createTimes",
  1535. key: "createTimes",
  1536. },
  1537. {
  1538. title: "退款时间",
  1539. dataIndex: "refundTimes",
  1540. key: "refundTimes",
  1541. },
  1542. {
  1543. title: "删除时间",
  1544. dataIndex: "deleteTimes",
  1545. key: "deleteTimes",
  1546. },
  1547. {
  1548. title: "备注",
  1549. dataIndex: "remarks",
  1550. key: "remarks",
  1551. },
  1552. {
  1553. title: "流水状态",
  1554. dataIndex: "deleteSign",
  1555. key: "deleteSign",
  1556. render: (text, record) => {
  1557. if (!text) {
  1558. return "";
  1559. } else {
  1560. return <Tag>已删除</Tag>;
  1561. }
  1562. },
  1563. },
  1564. ],
  1565. waterData: [],
  1566. newVisible: "",
  1567. };
  1568. },
  1569. // 特批通过
  1570. evaluateZ(record) {
  1571. $.ajax({
  1572. method: "POST",
  1573. dataType: "json",
  1574. crossDomain: false,
  1575. url: globalConfig.context + "/api/admin/financial/financeApproval",
  1576. data: {
  1577. orderNo: record.orderNo,
  1578. },
  1579. }).done(
  1580. function (data) {
  1581. if (!data.error.length) {
  1582. message.success("通过成功!");
  1583. this.setState({
  1584. loading: false,
  1585. });
  1586. this.loadData();
  1587. } else {
  1588. message.warning(data.error[0].message);
  1589. }
  1590. }.bind(this)
  1591. );
  1592. },
  1593. /* 收款 */
  1594. evaluateX(recard) {
  1595. this.state.assignDataX = recard;
  1596. this.setState({
  1597. assignVisibleX: true,
  1598. });
  1599. },
  1600. /* 转交 */
  1601. evaluateY(recard, nub) {
  1602. this.state.assignDataY = recard;
  1603. this.setState({
  1604. nub,
  1605. assignVisibleY: true,
  1606. });
  1607. },
  1608. /* 驳回 */
  1609. reject(recard) {
  1610. this.setState({
  1611. bohuiData: recard,
  1612. boHuiVisible: true,
  1613. content: "",
  1614. });
  1615. },
  1616. boHuiOk() {
  1617. this.setState({
  1618. boHuiVisible: false,
  1619. });
  1620. if (
  1621. this.state.pagination.current == this.state.totalPage &&
  1622. this.state.pagination.total % 10 == 1
  1623. ) {
  1624. this.loadData(this.state.page - 1);
  1625. } else {
  1626. this.loadData(this.state.page);
  1627. }
  1628. },
  1629. boHuiCancel() {
  1630. this.setState({
  1631. boHuiVisible: false,
  1632. });
  1633. },
  1634. componentWillMount() {
  1635. this.loadData();
  1636. this.departmentList();
  1637. },
  1638. tableRowClick(record) {
  1639. let isName = record.sellerName.indexOf("曹津") != -1
  1640. let iskeep = window.adminData.shiroList.indexOf("13") != -1
  1641. if (iskeep && isName) {
  1642. message.warning("无法查看,请联系管理员!");
  1643. } else {
  1644. this.setState({
  1645. RowData: record,
  1646. showDesc: true,
  1647. });
  1648. }
  1649. },
  1650. closeDesc(e, s) {
  1651. this.state.showDesc = e;
  1652. if (s) {
  1653. this.loadData(this.state.page);
  1654. }
  1655. },
  1656. closeAssignX(e, s) {
  1657. this.state.assignDataX = {};
  1658. this.state.assignVisibleX = e;
  1659. if (s) {
  1660. this.loadData(this.state.page);
  1661. }
  1662. },
  1663. closeAssignY(e, s) {
  1664. this.state.assignDataY = {};
  1665. this.state.assignVisibleY = e;
  1666. if (s) {
  1667. this.loadData(this.state.page);
  1668. }
  1669. },
  1670. search() {
  1671. this.setState({
  1672. selectedRowKeys: [],
  1673. });
  1674. this.loadData();
  1675. },
  1676. // 拆分详细
  1677. showRes(record) {
  1678. this.setState({
  1679. resVisible: true,
  1680. resRecord: record,
  1681. });
  1682. },
  1683. resCancel() {
  1684. this.setState({
  1685. resVisible: false,
  1686. });
  1687. },
  1688. reset() {
  1689. this.state.nameSearch = "";
  1690. this.state.releaseDate = [];
  1691. this.state.shouKuanDate = [];
  1692. this.state.orderNoSearch = "";
  1693. this.state.departmenttList = undefined;
  1694. this.state.amountStatus = undefined;
  1695. this.state.approval = undefined;
  1696. this.state.projectType = undefined;
  1697. this.state.processStatus = [];
  1698. this.state.processStatusSearch = [];
  1699. this.state.contractNoSearch = "";
  1700. this.state.liquidationStatus = [];
  1701. this.state.contractNo = "";
  1702. this.state.approvaType = [];
  1703. this.Cascaders.empty();
  1704. this.loadData();
  1705. },
  1706. //驳回
  1707. boHuiSubmit(e) {
  1708. e.preventDefault();
  1709. if (!this.state.content) {
  1710. message.warning("请填写驳回原因");
  1711. return false;
  1712. }
  1713. if (!this.state.content.replace(/\s+/g, '')) {
  1714. message.warning("请填写驳回原因");
  1715. return false;
  1716. }
  1717. this.setState({
  1718. loading: true,
  1719. });
  1720. $.ajax({
  1721. method: "POST",
  1722. dataType: "json",
  1723. crossDomain: false,
  1724. url: globalConfig.context + "/api/admin/financial/reject",
  1725. data: {
  1726. orderNo: this.state.bohuiData.orderNo,
  1727. reason: this.state.content,
  1728. },
  1729. }).done(
  1730. function (data) {
  1731. if (!data.error.length) {
  1732. message.success("驳回成功!");
  1733. this.setState({
  1734. loading: false,
  1735. });
  1736. this.boHuiOk();
  1737. } else {
  1738. message.warning(data.error[0].message);
  1739. }
  1740. }.bind(this)
  1741. );
  1742. },
  1743. searchSwitch() {
  1744. this.setState({
  1745. searchMore: !this.state.searchMore,
  1746. });
  1747. },
  1748. changeList(arr) {
  1749. const newArr = [];
  1750. this.state.columns.forEach((item) => {
  1751. arr.forEach((val) => {
  1752. if (val === item.title) {
  1753. newArr.push(item);
  1754. }
  1755. });
  1756. });
  1757. this.setState({
  1758. changeList: newArr,
  1759. isDisplay: this.ChooseList.state.checkedValues.length == this.ChooseList.state.columns.length ? true : false
  1760. });
  1761. },
  1762. onSelectChange(selectedRowKeys, selectedRows) {
  1763. // for(var i=0; i<selectedRowKeys.length; i++){
  1764. // for(var j=i+1; j<selectedRowKeys.length; j++){
  1765. // if(selectedRowKeys[i]==selectedRowKeys[j]){
  1766. // selectedRowKeys.splice(j,1);
  1767. // j--;
  1768. // }
  1769. // }
  1770. // }
  1771. this.setState({
  1772. selectedRowKeys,
  1773. selectedRows,
  1774. newData: selectedRows,
  1775. });
  1776. },
  1777. inRecordCanl() {
  1778. this.setState({
  1779. bvisible: false,
  1780. });
  1781. },
  1782. inRecordData(orderNO) {
  1783. this.setState({
  1784. loading: true,
  1785. });
  1786. $.ajax({
  1787. method: "get",
  1788. dataType: "json",
  1789. crossDomain: false,
  1790. url:
  1791. globalConfig.context +
  1792. "/api/admin/orderInvoice/salesmanOrderInvoiceList",
  1793. data: {
  1794. orderNo: orderNO || this.state.selectedRowKeys[0],
  1795. pageSize: 9999999,
  1796. },
  1797. success: function (data) {
  1798. let theArr = [];
  1799. let sum = 0;
  1800. if (!data.data) {
  1801. if (data.error && data.error.length) {
  1802. message.warning(data.error[0].message);
  1803. }
  1804. } else {
  1805. for (let i = 0; i < data.data.list.length; i++) {
  1806. let thisdata = data.data.list[i];
  1807. sum += parseFloat(thisdata.amount);
  1808. theArr.push({
  1809. id: thisdata.id,
  1810. orderno: thisdata.orderno, //订单编号
  1811. amount: thisdata.amount, //签单金额
  1812. createTime: thisdata.createTime, //流程状态
  1813. status: thisdata.status, //结算状态
  1814. rejectReason: thisdata.rejectReason,
  1815. approval: thisdata.approval,//0非特批 1待审核 2审核通过
  1816. examineName: thisdata.examineName,
  1817. });
  1818. }
  1819. }
  1820. this.setState({
  1821. recordData: theArr,
  1822. sum: sum.toFixed(6),
  1823. });
  1824. }.bind(this),
  1825. }).done(
  1826. function () {
  1827. this.setState({
  1828. loading: false,
  1829. });
  1830. }.bind(this)
  1831. );
  1832. },
  1833. waterData() {
  1834. this.state.data = [];
  1835. this.setState({
  1836. loading: true,
  1837. });
  1838. $.ajax({
  1839. method: "get",
  1840. dataType: "json",
  1841. crossDomain: false,
  1842. url: globalConfig.context + "/api/admin/financial/myBillList",
  1843. data: {
  1844. orderNo: this.state.selectedRowKeys[0],
  1845. pageSize: 9999999,
  1846. whoType: 1,
  1847. },
  1848. success: function (data) {
  1849. let theArr = [];
  1850. let waterSum = 0;
  1851. if (!data.data || !data.data.list) {
  1852. if (data.error && data.error.length) {
  1853. message.warning(data.error[0].message);
  1854. }
  1855. } else {
  1856. for (let i = 0; i < data.data.list.length; i++) {
  1857. let thisdata = data.data.list[i];
  1858. if (thisdata.deleteSign == 0) {
  1859. waterSum += parseFloat(thisdata.transactionAmount);
  1860. }
  1861. theArr.push({
  1862. key: i,
  1863. orderNo: thisdata.orderNo,
  1864. billNo: thisdata.billNo,
  1865. transactionAmount: thisdata.transactionAmount,
  1866. payeeName: thisdata.payeeName,
  1867. payerName: thisdata.payerName,
  1868. transactionSubject: thisdata.transactionSubject,
  1869. transactionChannel: thisdata.transactionChannel,
  1870. financialPayTimes: thisdata.financialPayTimes,
  1871. financialPayNo: thisdata.financialPayNo,
  1872. createrName: thisdata.createrName,
  1873. saleName: thisdata.saleName,
  1874. createTimes: thisdata.createTimes,
  1875. type:
  1876. thisdata.type == 0
  1877. ? "手工"
  1878. : thisdata.type == 1
  1879. ? "批量"
  1880. : "合同变更退款",
  1881. deleteSign: thisdata.deleteSign,
  1882. deleteTimes: thisdata.deleteTimes,
  1883. refundTimes: thisdata.refundTimes,
  1884. remarks: thisdata.remarks,
  1885. });
  1886. }
  1887. }
  1888. this.setState({
  1889. waterData: theArr,
  1890. waterSum: (Math.round(waterSum * 1000000) / 1000000).toFixed(6),
  1891. });
  1892. }.bind(this),
  1893. }).always(
  1894. function () {
  1895. this.setState({
  1896. loading: false,
  1897. });
  1898. }.bind(this)
  1899. );
  1900. },
  1901. waterCanl() {
  1902. this.setState({
  1903. cvisible: false,
  1904. });
  1905. },
  1906. exportKaip() {
  1907. window.location.href =
  1908. globalConfig.context +
  1909. "/api/admin/receivables/exportInvoice?" +
  1910. `orderNo=${this.state.selectedRowKeys}`;
  1911. },
  1912. exportAll() {
  1913. message.config({
  1914. duration: 20,
  1915. });
  1916. let loading = message.loading("下载中...");
  1917. this.setState({
  1918. exportPendingLoading: true,
  1919. });
  1920. const data = {
  1921. orderNo: this.state.orderNoSearch,
  1922. buyerName: this.state.nameSearch,
  1923. deps: this.state.departmenttList,
  1924. contractNo: this.state.contractNoSearch,
  1925. processStatus: this.state.processStatusSearch,
  1926. startTime: this.state.releaseDate[0],
  1927. endTime: this.state.releaseDate[1],
  1928. startFinalReceivablesTime: this.state.shouKuanDate[0],
  1929. endFinalReceivablesTime: this.state.shouKuanDate[1],
  1930. contractNo: this.state.contractNoSearch,
  1931. liquidationStatus: this.state.liquidationStatus,
  1932. amountStatus: this.state.amountStatus,
  1933. approval: this.state.approval,
  1934. projectType: this.state.projectType,
  1935. type: this.state.approvaType.length > 0 ? this.state.approvaType.toString() : undefined, //特批类型
  1936. }
  1937. $.ajax({
  1938. method: "get",
  1939. dataType: "json",
  1940. crossDomain: false,
  1941. url: "/api/admin/receivables/exportReceivables",
  1942. data,
  1943. success: function (data) {
  1944. if (data.error.length === 0) {
  1945. this.download(data.data);
  1946. } else {
  1947. message.warning(data.error[0].message);
  1948. }
  1949. }.bind(this),
  1950. }).always(
  1951. function () {
  1952. loading();
  1953. this.setState({
  1954. exportPendingLoading: false,
  1955. });
  1956. }.bind(this)
  1957. );
  1958. // window.location.href =
  1959. // globalConfig.context +
  1960. // "/api/admin/receivables/exportReceivables?" +
  1961. // `orderNo=${this.state.orderNoSearch ? this.state.orderNoSearch : ""
  1962. // }&buyerName=${this.state.nameSearch ? this.state.nameSearch : ""
  1963. // }&departmentId=${this.state.departmenttList ? this.state.departmenttList : ""
  1964. // }&contractNo=${this.state.contractNoSearch ? this.state.contractNoSearch : ""
  1965. // }&processStatus=${this.state.processStatusSearch}`;
  1966. },
  1967. exportWater() {
  1968. window.location.href =
  1969. globalConfig.context +
  1970. "/api/admin/receivables/exportMyBill?" +
  1971. `orderNo=${this.state.selectedRowKeys}&whoType=1`;
  1972. },
  1973. printAll() {
  1974. this.setState({
  1975. dvisible: true,
  1976. });
  1977. this.loadData(1, 9999999);
  1978. },
  1979. timeData(orderNO) {
  1980. this.setState({
  1981. loading: true,
  1982. });
  1983. $.ajax({
  1984. method: "get",
  1985. dataType: "json",
  1986. crossDomain: false,
  1987. url: globalConfig.context + "/api/admin/orderProject/taskHoursList",
  1988. data: {
  1989. orderNo: orderNO || this.state.selectedRowKeys[0],
  1990. pageSize: 9999999,
  1991. },
  1992. success: function (data) {
  1993. let theArr = [];
  1994. if (!data.data || !data.data.list) {
  1995. if (data.error && data.error.length) {
  1996. message.warning(data.error[0].message);
  1997. }
  1998. } else {
  1999. for (let i = 0; i < data.data.list.length; i++) {
  2000. let thisdata = data.data.list[i];
  2001. theArr.push({
  2002. key: i + 1,
  2003. id: thisdata.id, //ID
  2004. orderNo: thisdata.orderNo, //订单编号
  2005. taskName: thisdata.taskName, //任务名称
  2006. userName: thisdata.userName, //客户名称
  2007. cname: thisdata.cname, //项目品类
  2008. taskStatus: thisdata.taskStatus, //任务状态
  2009. receiverName: thisdata.receiverName, //负责人
  2010. hours: thisdata.hours, //任务工时
  2011. depName: thisdata.depName, //派单公司
  2012. contractNo: thisdata.contractNo,
  2013. signTime: thisdata.signTime,
  2014. creteTime: thisdata.creteTime,
  2015. projectStatus: thisdata.projectStatus,
  2016. commodityPrice: thisdata.commodityPrice, //价格
  2017. commodityQuantity: thisdata.commodityQuantity, //数量
  2018. salesmanName: thisdata.salesmanName, //订单负责人
  2019. taskDistributionTime: thisdata.taskDistributionTime,
  2020. taskEndTime: thisdata.taskEndTime,
  2021. outsource: thisdata.outsource,
  2022. splitStatus: thisdata.splitStatus,
  2023. splitSuper: thisdata.splitSuper,
  2024. splitId: thisdata.splitId,
  2025. });
  2026. }
  2027. }
  2028. this.setState({
  2029. timeDataList: theArr,
  2030. });
  2031. }.bind(this),
  2032. }).always(
  2033. function () {
  2034. this.setState({
  2035. loading: false,
  2036. });
  2037. }.bind(this)
  2038. );
  2039. },
  2040. exportTime() {
  2041. const data = {
  2042. orderNo: this.state.selectedRowKeys[0],
  2043. pageSize: 9999999,
  2044. };
  2045. window.location.href =
  2046. globalConfig.context +
  2047. "/api/admin/orderProject/exportMyTaskList?" +
  2048. $.param(data);
  2049. },
  2050. exportPro() {
  2051. const data = {
  2052. orderNo: this.state.selectedRowKeys[0],
  2053. };
  2054. window.location.href =
  2055. globalConfig.context +
  2056. "/api/admin/newOrder/exportOrderTaskData?" +
  2057. $.param(data);
  2058. },
  2059. // exportCui() {
  2060. // var data = {
  2061. // orderNo: this.state.selectedRowKeys[0]
  2062. // ? this.state.selectedRowKeys[0]
  2063. // : undefined, //订单编号
  2064. // // specially: 1,
  2065. // pageSize: 9999999,
  2066. // };
  2067. // window.location.href =
  2068. // globalConfig.context +
  2069. // "/api/admin/newOrder/exportOrderDunData?" +
  2070. // $.param(data);
  2071. // },
  2072. exportCui() {
  2073. this.setState({
  2074. exportPendingLoading: true,
  2075. });
  2076. message.config({
  2077. duration: 20,
  2078. });
  2079. let loading = message.loading("下载中...");
  2080. let data = {
  2081. orderNo: this.state.selectedRowKeys[0]
  2082. ? this.state.selectedRowKeys[0]
  2083. : undefined, //订单编号
  2084. pageSize: 9999999,
  2085. };
  2086. $.ajax({
  2087. method: "get",
  2088. dataType: "json",
  2089. crossDomain: false,
  2090. url:
  2091. globalConfig.context + "/api/admin/newOrder/exportOrderDunData",
  2092. data,
  2093. success: function (data) {
  2094. if (data.error.length === 0) {
  2095. this.download(data.data);
  2096. } else {
  2097. message.warning(data.error[0].message);
  2098. }
  2099. }.bind(this),
  2100. }).always(
  2101. function () {
  2102. loading();
  2103. this.setState({
  2104. exportPendingLoading: false,
  2105. });
  2106. }.bind(this)
  2107. );
  2108. },
  2109. cuiData() {
  2110. this.setState({
  2111. loading: true,
  2112. });
  2113. $.ajax({
  2114. method: "get",
  2115. dataType: "json",
  2116. crossDomain: false,
  2117. url: globalConfig.context + "/api/admin/newOrder/dunOrderNewList",
  2118. data: {
  2119. orderNo: this.state.selectedRowKeys[0],
  2120. pageSize: 9999999,
  2121. },
  2122. success: function (data) {
  2123. let theArr = [];
  2124. if (!data.data || !data.data.list) {
  2125. if (data.error && data.error.length) {
  2126. message.warning(data.error[0].message);
  2127. }
  2128. } else {
  2129. for (let i = 0; i < data.data.list.length; i++) {
  2130. let thisdata = data.data.list[i];
  2131. theArr.push({
  2132. key: i + 1,
  2133. orderNo: thisdata.orderNo,
  2134. contractNo: thisdata.contractNo,
  2135. userName: thisdata.userName,
  2136. buyerName: thisdata.buyerName,
  2137. departmentName: thisdata.departmentName,
  2138. salesmanName: thisdata.salesmanName,
  2139. depName: thisdata.depName,
  2140. orderStatus: thisdata.orderStatus,
  2141. projectStatus: thisdata.projectStatus,
  2142. totalAmount: thisdata.totalAmount,
  2143. liquidationStatus: thisdata.liquidationStatus,
  2144. settlementAmount: thisdata.settlementAmount,
  2145. accountsReceivable: thisdata.accountsReceivable,
  2146. dunSubject: thisdata.dunSubject,
  2147. startDate: thisdata.startDate,
  2148. taskStatus: thisdata.taskStatus,
  2149. cname: thisdata.cname,
  2150. id: thisdata.id,
  2151. taskName: thisdata.taskName,
  2152. hours: thisdata.hours,
  2153. taskDistributionTime: thisdata.taskDistributionTime,
  2154. taskEndTime: thisdata.taskEndTime,
  2155. dunStatus: thisdata.dunStatus == 0 ? "未触发" : "已触发",
  2156. });
  2157. }
  2158. }
  2159. this.setState({
  2160. cuiDataList: theArr,
  2161. });
  2162. }.bind(this),
  2163. }).always(
  2164. function () {
  2165. this.setState({
  2166. loading: false,
  2167. });
  2168. }.bind(this)
  2169. );
  2170. },
  2171. cuiTabChange(index) {
  2172. this.setState({
  2173. cuiTabKey: index,
  2174. });
  2175. if (index == 2) {
  2176. this.setState({
  2177. loading: true,
  2178. });
  2179. $.ajax({
  2180. method: "get",
  2181. dataType: "json",
  2182. crossDomain: false,
  2183. url: globalConfig.context + "/api/admin/newOrder/arrearsDunList",
  2184. data: {
  2185. orderNo: this.state.selectedRowKeys[0],
  2186. pageSize: 9999999,
  2187. },
  2188. success: function (data) {
  2189. let theArr = [];
  2190. if (data.error.length || data.data.list == "") {
  2191. if (data.error && data.error.length) {
  2192. message.warning(data.error[0].message);
  2193. }
  2194. } else {
  2195. for (let i = 0; i < data.data.list.length; i++) {
  2196. let thisdata = data.data.list[i];
  2197. let obj = thisdata;
  2198. obj.key = i;
  2199. theArr.push(obj);
  2200. }
  2201. }
  2202. this.setState({
  2203. qianDataList: theArr,
  2204. });
  2205. }.bind(this),
  2206. }).always(
  2207. function () {
  2208. this.setState({
  2209. loading: false,
  2210. });
  2211. }.bind(this)
  2212. );
  2213. }
  2214. },
  2215. proData() {
  2216. this.setState({
  2217. loading: true,
  2218. });
  2219. $.ajax({
  2220. method: "get",
  2221. dataType: "json",
  2222. crossDomain: false,
  2223. url: globalConfig.context + "/api/admin/newOrder/getOrderTask",
  2224. data: {
  2225. orderNo: this.state.selectedRowKeys[0],
  2226. pageSize: 9999999,
  2227. },
  2228. success: function (data) {
  2229. let theArr = [];
  2230. let totalWaibao = 0;
  2231. if (!data.data) {
  2232. if (data.error && data.error.length) {
  2233. message.warning(data.error[0].message);
  2234. }
  2235. } else {
  2236. for (let i = 0; i < data.data.length; i++) {
  2237. let thisdata = data.data[i];
  2238. totalWaibao += thisdata.outsourcePrice;
  2239. theArr.push({
  2240. key: i + 1,
  2241. orderNo: thisdata.orderNo,
  2242. contractNo: thisdata.contractNo,
  2243. userName: thisdata.userName,
  2244. buyerName: thisdata.buyerName,
  2245. departmentName: thisdata.departmentName,
  2246. salesmanName: thisdata.salesmanName,
  2247. depName: thisdata.depName,
  2248. orderStatus: thisdata.orderStatus,
  2249. projectStatus: thisdata.projectStatus,
  2250. commodityName: thisdata.commodityName,
  2251. totalAmount: thisdata.totalAmount,
  2252. liquidationStatus: thisdata.liquidationStatus,
  2253. settlementAmount: thisdata.settlementAmount,
  2254. accountsReceivable: thisdata.accountsReceivable,
  2255. dunSubject: thisdata.dunSubject,
  2256. startDate: thisdata.startDate,
  2257. taskStatus: thisdata.taskStatus,
  2258. cname: thisdata.cname,
  2259. id: thisdata.id,
  2260. taskName: thisdata.taskName,
  2261. hours: thisdata.hours,
  2262. taskDistributionTime: thisdata.taskDistributionTime,
  2263. taskEndTime: thisdata.taskEndTime,
  2264. commodityQuantity: thisdata.commodityQuantity,
  2265. commodityPrice: thisdata.commodityPrice,
  2266. certificateNumber: thisdata.certificateNumber,
  2267. taskComment: thisdata.taskComment,
  2268. outsourceName: thisdata.outsourceName,
  2269. outsourcePrice: thisdata.outsourcePrice,
  2270. outsource: thisdata.outsource,
  2271. splitStatus: thisdata.splitStatus,
  2272. });
  2273. }
  2274. }
  2275. totalWaibao = (Math.round(totalWaibao * 1000000) / 1000000).toFixed(6);
  2276. this.setState({
  2277. proDataList: theArr,
  2278. totalWaibao,
  2279. });
  2280. }.bind(this),
  2281. }).always(
  2282. function () {
  2283. this.setState({
  2284. loading: false,
  2285. });
  2286. }.bind(this)
  2287. );
  2288. },
  2289. // 查看公出列表
  2290. pubData() {
  2291. this.setState({
  2292. loading: true,
  2293. });
  2294. let rows = this.state.selectedRows[0]
  2295. let searchInfor = {
  2296. releaseStart: this.state.releaseDate[0] || undefined,
  2297. releaseEnd: this.state.releaseDate[1] || undefined,
  2298. aid: this.state.theTypes || undefined,
  2299. sid: this.state.theTypes1 || undefined,
  2300. status: this.state.status,
  2301. clockIn: this.state.clockIn,
  2302. depId: this.state.depId || undefined,
  2303. publicType: this.state.type,
  2304. }
  2305. let datas = Object.assign(searchInfor, {
  2306. pageNo: this.state.pubpageNo || 1,
  2307. pageSize: 9999999,
  2308. uid: rows.buyerId,
  2309. });
  2310. $.ajax({
  2311. method: "get",
  2312. dataType: "json",
  2313. crossDomain: false,
  2314. url: globalConfig.context + "/api/admin/release/publicReleaseDtails",
  2315. data: datas,
  2316. success: function (data) {
  2317. let theArr = [];
  2318. this.setState({
  2319. loading: false,
  2320. });
  2321. if (!data.data) {
  2322. if (data.error && data.error.length) {
  2323. message.warning(data.error[0].message);
  2324. }
  2325. } else {
  2326. for (let i = 0; i < data.data.list.length; i++) {
  2327. let thisdata = data.data.list[i];
  2328. thisdata.key = (data.data.pageNo - 1) * data.data.pageSize + i + 1;
  2329. theArr.push(thisdata);
  2330. }
  2331. this.state.pubpagination.current = data.data.pageNo;
  2332. this.state.pubpagination.total = data.data.totalCount;
  2333. if (data.data && data.data.list && !data.data.list.length) {
  2334. this.state.pubpagination.current = 0;
  2335. this.state.pubpagination.total = 0;
  2336. }
  2337. }
  2338. this.setState({
  2339. pubDataList: theArr,
  2340. pubpagination: this.state.pubpagination,
  2341. pubpageNo: data.data.pageNo,
  2342. });
  2343. }.bind(this),
  2344. }).always(
  2345. function () {
  2346. this.setState({
  2347. loading: false,
  2348. });
  2349. }.bind(this)
  2350. );
  2351. },
  2352. // 重置公出列表查询
  2353. resetAll() {
  2354. this.setState(
  2355. {
  2356. releaseDate: [],
  2357. theCustomerTypes: undefined,
  2358. status: undefined,
  2359. clockIn: undefined,
  2360. depId: undefined,
  2361. auto: "",
  2362. auto1: "",
  2363. customer: "",
  2364. theTypes: undefined,
  2365. theTypes1: undefined,
  2366. type: undefined,
  2367. },
  2368. () => {
  2369. this.pubData();
  2370. }
  2371. );
  2372. },
  2373. //公出导出
  2374. pubexportExec() {
  2375. this.setState({
  2376. exportPendingLoading: true,
  2377. });
  2378. message.config({
  2379. duration: 20,
  2380. });
  2381. let loading = message.loading("下载中...");
  2382. let rows = this.state.selectedRows[0]
  2383. let searchInfor = {
  2384. releaseStart: this.state.releaseDate[0] || undefined,
  2385. releaseEnd: this.state.releaseDate[1] || undefined,
  2386. aid: this.state.theTypes || undefined,
  2387. sid: this.state.theTypes1 || undefined,
  2388. status: this.state.status,
  2389. clockIn: this.state.clockIn,
  2390. depId: this.state.depId || undefined,
  2391. publicType: this.state.type,
  2392. }
  2393. let data = Object.assign(searchInfor, {
  2394. pageNo: this.state.pubpageNo || 1,
  2395. pageSize: 9999999,
  2396. uid: rows.buyerId,
  2397. exportType: 1,
  2398. });
  2399. for (let i of Object.keys(data)) {
  2400. if (i === "status" || i === "clockIn") {
  2401. if (isNaN(parseInt(data[i]))) {
  2402. delete data[i];
  2403. }
  2404. } else if (!data[i]) {
  2405. delete data[i];
  2406. }
  2407. }
  2408. $.ajax({
  2409. method: "get",
  2410. dataType: "json",
  2411. crossDomain: false,
  2412. url: globalConfig.context + "/api/admin/release/publicReleaseDtails/export",
  2413. data,
  2414. success: function (data) {
  2415. if (data.error.length === 0) {
  2416. this.download(data.data);
  2417. } else {
  2418. message.warning(data.error[0].message);
  2419. }
  2420. }.bind(this),
  2421. }).always(
  2422. function () {
  2423. loading();
  2424. this.setState({
  2425. exportPendingLoading: false,
  2426. });
  2427. }.bind(this)
  2428. );
  2429. },
  2430. // 下载
  2431. download(fileName) {
  2432. window.location.href =
  2433. globalConfig.context + "/open/download?fileName=" + fileName;
  2434. },
  2435. tableRowClickPro(record) {
  2436. this.setState({
  2437. pvisible: true,
  2438. record,
  2439. });
  2440. },
  2441. kaiPiaoData(record) {
  2442. this.setState({
  2443. avisible: true,
  2444. });
  2445. this.invoiceData(record.id);
  2446. },
  2447. invoiceData(id) {
  2448. this.setState({
  2449. loading: true,
  2450. });
  2451. $.ajax({
  2452. method: "get",
  2453. dataType: "json",
  2454. crossDomain: false,
  2455. url:
  2456. globalConfig.context + "/api/admin/orderInvoice/selectByIdOrderInvoice",
  2457. data: {
  2458. id,
  2459. },
  2460. success: function (data) {
  2461. let thisdata = data.data;
  2462. let obj = {
  2463. contractNo: thisdata.contractNo,
  2464. orderNo: thisdata.orderNo,
  2465. approval: thisdata.approval,
  2466. type: thisdata.type,
  2467. status: thisdata.status,
  2468. remarks: thisdata.remarks,
  2469. invoiceType: thisdata.invoiceType,
  2470. unitName: thisdata.unitName,
  2471. taxNumber: thisdata.taxNumber,
  2472. amount: thisdata.amount,
  2473. banks: thisdata.banks,
  2474. content: thisdata.content,
  2475. unitAddress: thisdata.unitAddress,
  2476. invoiceRemarks: thisdata.invoiceRemarks,
  2477. unitMobile: thisdata.unitMobile,
  2478. post: thisdata.post,
  2479. addressee: thisdata.addressee,
  2480. addresseeMobile: thisdata.addresseeMobile,
  2481. addresseeProvince: thisdata.addresseeProvince,
  2482. addresseeCity: thisdata.addresseeCity,
  2483. addresseeArea: thisdata.addresseeArea,
  2484. alreadyAmount: thisdata.alreadyAmount,
  2485. recipientAddress: thisdata.recipientAddress,
  2486. orgCodeUrl: thisdata.voucherUrl
  2487. ? splitUrl(
  2488. thisdata.voucherUrl,
  2489. ",",
  2490. globalConfig.avatarHost + "/upload"
  2491. )
  2492. : [],
  2493. };
  2494. this.setState({
  2495. modalData: obj,
  2496. });
  2497. }.bind(this),
  2498. }).done(
  2499. function () {
  2500. this.setState({
  2501. loading: false,
  2502. });
  2503. }.bind(this)
  2504. );
  2505. },
  2506. visitCancels() {
  2507. this.setState({
  2508. avisible: false,
  2509. });
  2510. },
  2511. selectAuto(value, options) {
  2512. this.setState({
  2513. auto: value,
  2514. });
  2515. },
  2516. selectAuto1(value, options) {
  2517. this.setState({
  2518. auto1: value,
  2519. });
  2520. },
  2521. blurChange(e) {
  2522. let theType = "";
  2523. let contactLists = this.state.customerArr || [];
  2524. if (e) {
  2525. contactLists.map(function (item) {
  2526. if (item.name == e.toString()) {
  2527. theType = item.id;
  2528. }
  2529. });
  2530. }
  2531. this.setState({
  2532. theTypes: theType,
  2533. });
  2534. },
  2535. blurChange1(e) {
  2536. let theType = "";
  2537. let contactLists = this.state.customerArr1 || [];
  2538. if (e) {
  2539. contactLists.map(function (item) {
  2540. if (item.name == e.toString()) {
  2541. theType = item.id;
  2542. }
  2543. });
  2544. }
  2545. this.setState({
  2546. theTypes1: theType,
  2547. });
  2548. },
  2549. httpChange(e) {
  2550. if (e.length >= 1) {
  2551. this.supervisor(e);
  2552. }
  2553. this.setState({
  2554. auto: e,
  2555. });
  2556. },
  2557. httpChange1(e) {
  2558. if (e.length >= 1) {
  2559. this.supervisor1(e);
  2560. }
  2561. this.setState({
  2562. auto1: e,
  2563. });
  2564. },
  2565. supervisor(e) {
  2566. $.ajax({
  2567. method: "get",
  2568. dataType: "json",
  2569. crossDomain: false,
  2570. url: globalConfig.context + "/api/admin/customer/listAdminByName",
  2571. data: {
  2572. adminName: e,
  2573. },
  2574. success: function (data) {
  2575. if (data.error && data.error.length === 0) {
  2576. this.setState({
  2577. customerArr: data.data,
  2578. });
  2579. } else {
  2580. message.warning(data.error[0].message);
  2581. }
  2582. }.bind(this),
  2583. }).always(function () { }.bind(this));
  2584. },
  2585. supervisor1(e) {
  2586. $.ajax({
  2587. method: "get",
  2588. dataType: "json",
  2589. crossDomain: false,
  2590. url: globalConfig.context + "/api/admin/customer/listAdminByName",
  2591. data: {
  2592. adminName: e,
  2593. },
  2594. success: function (data) {
  2595. if (data.error && data.error.length === 0) {
  2596. this.setState({
  2597. customerArr1: data.data,
  2598. });
  2599. } else {
  2600. message.warning(data.error[0].message);
  2601. }
  2602. }.bind(this),
  2603. }).always(function () { }.bind(this));
  2604. },
  2605. render() {
  2606. const formItemLayout = {
  2607. labelCol: { span: 8 },
  2608. wrapperCol: { span: 14 },
  2609. };
  2610. const { RangePicker } = DatePicker;
  2611. const { selectedRowKeys } = this.state;
  2612. const rowSelection = {
  2613. selectedRowKeys,
  2614. onChange: this.onSelectChange,
  2615. hideDefaultSelections: true,
  2616. type: "radio",
  2617. };
  2618. const dataSources = this.state.customerArr || [];
  2619. const dataSources1 = this.state.customerArr1 || [];
  2620. const options = dataSources.map((group) => (
  2621. <Select.Option key={group.id} value={group.name}>
  2622. {group.name}
  2623. </Select.Option>
  2624. ));
  2625. const options1 = dataSources1.map((group) => (
  2626. <Select.Option key={group.id} value={group.name}>
  2627. {group.name}
  2628. </Select.Option>
  2629. ));
  2630. const approvaChildren = approvalOptions.map(i => (
  2631. <Option key={i.value}>{i.label}</Option>
  2632. ));
  2633. return (
  2634. <div className="user-content">
  2635. {this.state.resVisible ? (
  2636. <ResolutionDetail
  2637. cancel={this.resCancel}
  2638. detail={this.state.resRecord}
  2639. visible={this.state.resVisible}
  2640. id={this.state.resRecord.orderNo}
  2641. />
  2642. ) : (
  2643. ""
  2644. )}
  2645. <div className="content-title" style={{ marginBottom: 10 }}>
  2646. <span style={{ fontWeight: 900, fontSize: 16 }}>收款结算</span>
  2647. </div>
  2648. <Tabs defaultActiveKey="2" className="test">
  2649. <TabPane tab="搜索" key="2">
  2650. <div className="user-search" style={{ marginLeft: 10 }}>
  2651. <Input
  2652. placeholder="订单编号"
  2653. value={this.state.orderNoSearch}
  2654. onChange={(e) => {
  2655. this.setState({ orderNoSearch: e.target.value });
  2656. }}
  2657. />
  2658. <Input
  2659. placeholder="合同编号"
  2660. value={this.state.contractNoSearch}
  2661. onChange={(e) => {
  2662. this.setState({
  2663. contractNoSearch: e.target.value,
  2664. });
  2665. }}
  2666. />
  2667. <Input
  2668. placeholder="客户名称"
  2669. value={this.state.nameSearch}
  2670. onChange={(e) => {
  2671. this.setState({ nameSearch: e.target.value });
  2672. }}
  2673. />
  2674. <Cascaders
  2675. ref={node => this.Cascaders = node}
  2676. placeholder="订单部门"
  2677. id="id"
  2678. name="name"
  2679. children="list"
  2680. height={28}
  2681. onSel={(e) => {
  2682. this.setState({
  2683. departmenttList: JSON.stringify(e),
  2684. });
  2685. }}
  2686. />
  2687. {/* <Select
  2688. placeholder="订单部门"
  2689. style={{ width: 180, marginRight: 10 }}
  2690. value={this.state.departmenttList}
  2691. onChange={(e) => {
  2692. this.setState({ departmenttList: e });
  2693. }}
  2694. >
  2695. {departmentArr.map(function (item) {
  2696. return (
  2697. <Select.Option key={item.id}>{item.name}</Select.Option>
  2698. );
  2699. })}
  2700. </Select> */}
  2701. <Select
  2702. placeholder="流程状态"
  2703. onChange={(e) => {
  2704. this.setState({ processStatusSearch: e });
  2705. }}
  2706. style={{ width: 140, marginRight: 5 }}
  2707. value={this.state.processStatusSearch}
  2708. >
  2709. <Option value="3">未分配</Option>
  2710. <Option value="4">已分配</Option>
  2711. <Option value="9">已驳回</Option>
  2712. </Select>
  2713. <Select
  2714. placeholder="结算状态"
  2715. onChange={(e) => {
  2716. this.setState({ liquidationStatus: e });
  2717. }}
  2718. style={{ width: 140, marginRight: 5 }}
  2719. value={this.state.liquidationStatus}
  2720. >
  2721. <Option value="0">首付待付清</Option>
  2722. <Option value="1">尾款待付清</Option>
  2723. <Option value="2">已付清</Option>
  2724. </Select>
  2725. <Select
  2726. style={{ width: 140 }}
  2727. placeholder="签单金额"
  2728. value={this.state.amountStatus}
  2729. onChange={(e) => {
  2730. this.setState({
  2731. amountStatus: e,
  2732. });
  2733. }}
  2734. >
  2735. <Option value="0">10万元以下</Option>
  2736. <Option value="1">10~20万元</Option>
  2737. <Option value="2">20~30万元</Option>
  2738. <Option value="3">30~40万元</Option>
  2739. <Option value="4">40万元以上</Option>
  2740. </Select>
  2741. <Select
  2742. style={{ width: 140 }}
  2743. placeholder="特批状态"
  2744. value={this.state.approval}
  2745. onChange={(e) => {
  2746. this.setState({
  2747. approval: e,
  2748. });
  2749. }}
  2750. >
  2751. <Option value="0">非特批</Option>
  2752. <Option value="1">特批待审</Option>
  2753. <Option value="2">特批通过</Option>
  2754. <Option value="4">全部特批</Option>
  2755. </Select>
  2756. <Select
  2757. style={{ width: 140 }}
  2758. placeholder="会员状态"
  2759. value={this.state.projectType}
  2760. onChange={(e) => {
  2761. this.setState({
  2762. projectType: e,
  2763. });
  2764. }}
  2765. >
  2766. <Option value="1">会员</Option>
  2767. <Option value="0">非会员</Option>
  2768. </Select>
  2769. <Select
  2770. mode="multiple"
  2771. style={{ width: 200 }}
  2772. placeholder="特批类型"
  2773. value={this.state.approvaType}
  2774. onChange={e => {
  2775. this.setState({
  2776. approvaType: e
  2777. })
  2778. }}
  2779. >
  2780. {approvaChildren}
  2781. </Select>
  2782. <div>
  2783. <span style={{}}>下单日期:</span>
  2784. <RangePicker
  2785. style={{ width: 170, marginRight: 10 }}
  2786. value={[
  2787. this.state.releaseDate[0]
  2788. ? moment(this.state.releaseDate[0])
  2789. : null,
  2790. this.state.releaseDate[1]
  2791. ? moment(this.state.releaseDate[1])
  2792. : null,
  2793. ]}
  2794. onChange={(data, dataString) => {
  2795. this.setState({ releaseDate: dataString });
  2796. }}
  2797. />
  2798. <span style={{}}>最近收款:</span>
  2799. <RangePicker
  2800. style={{ width: 170 }}
  2801. value={[
  2802. this.state.shouKuanDate[0]
  2803. ? moment(this.state.shouKuanDate[0])
  2804. : null,
  2805. this.state.shouKuanDate[1]
  2806. ? moment(this.state.shouKuanDate[1])
  2807. : null,
  2808. ]}
  2809. onChange={(data, dataString) => {
  2810. this.setState({ shouKuanDate: dataString });
  2811. }}
  2812. />
  2813. <Button
  2814. type="primary"
  2815. onClick={this.search}
  2816. style={{ marginLeft: 10 }}
  2817. disabled={this.state.loadingA ? true : false}
  2818. >
  2819. 搜索
  2820. </Button>
  2821. <Button onClick={this.reset}>重置</Button>
  2822. </div>
  2823. </div>
  2824. </TabPane>
  2825. <TabPane tab="打印" key="3">
  2826. <Button
  2827. type="primary"
  2828. style={{ margin: "11px 0px 10px 10px" }}
  2829. onClick={this.printAll}
  2830. disabled={!this.state.dataSource.length}
  2831. >
  2832. 打印所有列表信息
  2833. </Button>
  2834. <Button
  2835. type="primary"
  2836. disabled={this.state.selectedRowKeys.length != 1}
  2837. style={{ margin: "11px 0px 10px 10px" }}
  2838. onClick={() => {
  2839. this.inRecordData();
  2840. this.setState({
  2841. bvisible: true,
  2842. });
  2843. }}
  2844. >
  2845. 打印开票详情
  2846. </Button>
  2847. <Button
  2848. type="primary"
  2849. disabled={this.state.selectedRowKeys.length != 1}
  2850. style={{ margin: "11px 0px 10px 10px" }}
  2851. onClick={() => {
  2852. this.waterData();
  2853. this.setState({
  2854. cvisible: true,
  2855. });
  2856. }}
  2857. >
  2858. 打印收款流水
  2859. </Button>
  2860. <Button
  2861. type="primary"
  2862. disabled={this.state.selectedRowKeys.length != 1}
  2863. style={{ margin: "11px 0px 10px 10px" }}
  2864. onClick={() => {
  2865. this.timeData();
  2866. this.setState({
  2867. timeVisible: true,
  2868. });
  2869. }}
  2870. >
  2871. 打印工时信息
  2872. </Button>
  2873. <Button
  2874. type="primary"
  2875. disabled={this.state.selectedRowKeys.length != 1}
  2876. style={{ margin: "11px 0px 10px 10px" }}
  2877. onClick={() => {
  2878. this.cuiData();
  2879. this.setState({
  2880. cuiVisible: true,
  2881. });
  2882. }}
  2883. >
  2884. 打印催款信息
  2885. </Button>
  2886. <Button
  2887. type="primary"
  2888. disabled={this.state.selectedRowKeys.length != 1}
  2889. style={{ margin: "11px 0px 10px 10px" }}
  2890. onClick={() => {
  2891. this.proData();
  2892. this.setState({
  2893. proVisible: true,
  2894. });
  2895. }}
  2896. >
  2897. 打印项目进度
  2898. </Button>
  2899. </TabPane>
  2900. <TabPane tab="导出Excel" key="4">
  2901. <Button
  2902. type="primary"
  2903. style={{ margin: "11px 0px 10px 10px" }}
  2904. onClick={this.exportAll}
  2905. >
  2906. 导出当前列表
  2907. </Button>
  2908. <Button
  2909. type="primary"
  2910. disabled={this.state.selectedRowKeys.length != 1}
  2911. style={{ margin: "11px 0px 10px 10px" }}
  2912. onClick={this.exportKaip}
  2913. >
  2914. 导出所选开票详情
  2915. </Button>
  2916. <Button
  2917. type="primary"
  2918. disabled={this.state.selectedRowKeys.length != 1}
  2919. style={{ margin: "11px 0px 10px 10px" }}
  2920. onClick={this.exportWater}
  2921. >
  2922. 导出所选收款详情流水
  2923. </Button>
  2924. <Button
  2925. type="primary"
  2926. disabled={this.state.selectedRowKeys.length != 1}
  2927. style={{ margin: "11px 0px 10px 10px" }}
  2928. onClick={this.exportTime}
  2929. >
  2930. 导出所选工时信息
  2931. </Button>
  2932. <Button
  2933. type="primary"
  2934. disabled={this.state.selectedRowKeys.length != 1}
  2935. style={{ margin: "11px 0px 10px 10px" }}
  2936. onClick={this.exportCui}
  2937. >
  2938. 导出催款信息
  2939. </Button>
  2940. <Button
  2941. type="primary"
  2942. disabled={this.state.selectedRowKeys.length != 1}
  2943. style={{ margin: "11px 0px 10px 10px" }}
  2944. onClick={this.exportPro}
  2945. >
  2946. 导出项目进度
  2947. </Button>
  2948. </TabPane>
  2949. <TabPane tab="查看" key="5">
  2950. <Button
  2951. type="primary"
  2952. disabled={this.state.selectedRowKeys.length != 1}
  2953. style={{ margin: "11px 0px 10px 10px" }}
  2954. onClick={() => {
  2955. this.inRecordData();
  2956. this.setState({
  2957. // bvisible: true,
  2958. newVisible: "开票历史记录",
  2959. });
  2960. }}
  2961. >
  2962. 查看开票详情
  2963. </Button>
  2964. <Button
  2965. type="primary"
  2966. disabled={this.state.selectedRowKeys.length != 1}
  2967. style={{ margin: "11px 0px 10px 10px" }}
  2968. onClick={() => {
  2969. this.waterData();
  2970. this.setState({
  2971. // cvisible: true,
  2972. newVisible: "详细收款流水",
  2973. });
  2974. }}
  2975. >
  2976. 详情收款流水
  2977. </Button>
  2978. <Button
  2979. type="primary"
  2980. disabled={this.state.selectedRowKeys.length != 1}
  2981. style={{ margin: "11px 0px 10px 10px" }}
  2982. onClick={() => {
  2983. this.timeData();
  2984. this.setState({
  2985. // timeVisible: true,
  2986. newVisible: "工时详情",
  2987. });
  2988. }}
  2989. >
  2990. 工时信息
  2991. </Button>
  2992. <Button
  2993. type="primary"
  2994. disabled={this.state.selectedRowKeys.length != 1}
  2995. style={{ margin: "11px 0px 10px 10px" }}
  2996. onClick={() => {
  2997. this.cuiData();
  2998. this.setState({
  2999. // cuiVisible: true,
  3000. newVisible: "催款详情",
  3001. });
  3002. }}
  3003. >
  3004. 催款信息
  3005. </Button>
  3006. <Button
  3007. type="primary"
  3008. disabled={this.state.selectedRowKeys.length != 1}
  3009. style={{ margin: "11px 0px 10px 10px" }}
  3010. onClick={() => {
  3011. this.proData();
  3012. this.setState({
  3013. // proVisible: true,
  3014. newVisible: "项目进度",
  3015. });
  3016. }}
  3017. >
  3018. 项目进度
  3019. </Button>
  3020. <Button
  3021. type="primary"
  3022. disabled={this.state.selectedRowKeys.length != 1}
  3023. style={{ margin: "11px 0px 10px 10px" }}
  3024. onClick={() => {
  3025. this.pubData();
  3026. this.selectSuperId();
  3027. this.setState({
  3028. // pubVisible: true,
  3029. newVisible: "公出详细列表",
  3030. });
  3031. }}
  3032. >
  3033. 查看公出
  3034. </Button>
  3035. </TabPane>
  3036. <TabPane tab="更改表格显示数据" key="1">
  3037. <div style={{ marginLeft: 10 }}>
  3038. <ChooseList
  3039. ref={ref => this.ChooseList = ref}
  3040. columns={this.state.columns}
  3041. changeFn={this.changeList}
  3042. changeList={this.state.changeList}
  3043. top={55}
  3044. margin={11}
  3045. />
  3046. </div>
  3047. </TabPane>
  3048. {/* <TabPane tab="批量操作" key="6">
  3049. <Button
  3050. type="primary"
  3051. disabled={this.state.selectedRowKeys.length == 0}
  3052. style={{ margin: "0px 0px 10px 10px" }}
  3053. onClick={e => {
  3054. e.stopPropagation(),
  3055. this.evaluateY(this.state.selectedRowKeys, "财务专员");
  3056. }}
  3057. >
  3058. 转交
  3059. </Button>
  3060. </TabPane> */}
  3061. </Tabs>
  3062. <div className="patent-table">
  3063. <Spin spinning={this.state.loadingA}>
  3064. <Table
  3065. bordered
  3066. columns={
  3067. this.state.changeList == undefined
  3068. ? this.state.columns
  3069. : this.state.changeList
  3070. }
  3071. dataSource={this.state.dataSource}
  3072. rowSelection={rowSelection}
  3073. scroll={{ x: "max-content", y: 0 }}
  3074. pagination={this.state.pagination}
  3075. onRowDoubleClick={this.tableRowClick.bind(this)}
  3076. size="small"
  3077. />
  3078. </Spin>
  3079. <p
  3080. style={{ display: "inline-block", fontSize: "14px", color: "red" }}
  3081. >
  3082. {<span style={{ marginRight: 20 }}>{`收款金额总计(万元):${this.state.hui ? this.state.hui : "0"}`}</span>}
  3083. {<span>{`合同额总计(万元):${this.state.totalHui ? this.state.totalHui : "0"}`}</span>}
  3084. </p>
  3085. </div>
  3086. <Assign
  3087. title="任务"
  3088. selApi={"/api/admin/newOrder/updateFinance"}
  3089. data={this.state.assignDataY}
  3090. showDesc={this.state.assignVisibleY}
  3091. closeDesc={this.closeAssignY.bind(this)}
  3092. // fenpaiData={8}
  3093. specially={0}
  3094. roleName={this.state.nub}
  3095. requestMethod={"get"}
  3096. />
  3097. <OrderDesc
  3098. data={this.state.RowData}
  3099. showDesc={this.state.showDesc}
  3100. closeDesc={this.closeDesc.bind(this)}
  3101. />
  3102. <Receivable
  3103. title="收款记录"
  3104. api="/api/admin/financial/addReceiptsFlow"
  3105. data={this.state.assignDataX}
  3106. showDesc={this.state.assignVisibleX}
  3107. closeDesc={this.closeAssignX.bind(this)}
  3108. />
  3109. {/* 驳回备注 */}
  3110. <Modal
  3111. visible={this.state.boHuiVisible}
  3112. width="400px"
  3113. title="驳回备注"
  3114. footer=""
  3115. onOk={this.boHuiOk}
  3116. onCancel={this.boHuiCancel}
  3117. >
  3118. <Form layout="horizontal" onSubmit={this.boHuiSubmit}>
  3119. <Spin spinning={this.state.loading}>
  3120. <FormItem
  3121. labelCol={{ span: 5 }}
  3122. wrapperCol={{ span: 16 }}
  3123. label={
  3124. <span>
  3125. <strong style={{ color: "#f00" }}>*</strong>驳回原因
  3126. </span>
  3127. }
  3128. >
  3129. <Input
  3130. type="textarea"
  3131. rows={4}
  3132. placeholder="请输入驳回原因"
  3133. value={this.state.content}
  3134. onChange={(e) => {
  3135. this.setState({ content: e.target.value });
  3136. }}
  3137. />
  3138. </FormItem>
  3139. <FormItem wrapperCol={{ span: 12, offset: 5 }}>
  3140. <Button
  3141. type="primary"
  3142. htmlType="submit"
  3143. style={{ marginRight: 20 }}
  3144. >
  3145. 驳回
  3146. </Button>
  3147. <Button
  3148. type="default"
  3149. onClick={() => {
  3150. this.boHuiCancel();
  3151. }}
  3152. >
  3153. 取消
  3154. </Button>
  3155. </FormItem>
  3156. </Spin>
  3157. </Form>
  3158. </Modal>
  3159. {/* 开票历史记录 */}
  3160. <Modal
  3161. visible={this.state.bvisible}
  3162. footer=""
  3163. title="开票历史记录"
  3164. className="admin-desc-content"
  3165. width="1200px"
  3166. onCancel={this.inRecordCanl}
  3167. >
  3168. <Spin spinning={this.state.loading}>
  3169. <div
  3170. className="patent-table"
  3171. ref={(e) => {
  3172. this.refs.kaiPiao = e;
  3173. }}
  3174. >
  3175. <Table
  3176. columns={this.state.columnsDate}
  3177. dataSource={this.state.recordData}
  3178. onRowClick={this.kaiPiaoData}
  3179. pagination={false}
  3180. bordered
  3181. size="small"
  3182. />
  3183. <div className="clearfix" style={{ marginTop: "20px" }}>
  3184. <FormItem
  3185. className="half-item"
  3186. {...formItemLayout}
  3187. label={<span style={{ fontSize: "14px" }}>开票总计</span>}
  3188. >
  3189. <span>{this.state.sum + "(万元)"}</span>
  3190. </FormItem>
  3191. </div>
  3192. <ReactToPrint
  3193. trigger={() => (
  3194. <Button
  3195. type="primary"
  3196. style={{
  3197. float: "right",
  3198. // marginTop: 10,
  3199. position: "absolute",
  3200. top: -54,
  3201. right: 30,
  3202. }}
  3203. >
  3204. 打印
  3205. </Button>
  3206. )}
  3207. content={() => this.refs.kaiPiao}
  3208. />
  3209. </div>
  3210. </Spin>
  3211. </Modal>
  3212. {/* 详细收款流水 */}
  3213. <Modal
  3214. visible={this.state.cvisible}
  3215. footer=""
  3216. title="详细收款流水"
  3217. className="admin-desc-content"
  3218. width="1300px"
  3219. onCancel={this.waterCanl}
  3220. >
  3221. <Spin spinning={this.state.loading}>
  3222. <div
  3223. className="patent-table"
  3224. ref={(e) => {
  3225. this.refs.shouKuan = e;
  3226. }}
  3227. >
  3228. <Table
  3229. columns={this.state.waterlistDate}
  3230. dataSource={this.state.waterData}
  3231. pagination={false}
  3232. scroll={{ x: "max-content", y: 0 }}
  3233. bordered
  3234. size="small"
  3235. />
  3236. <div className="clearfix" style={{ marginTop: "20px" }}>
  3237. <FormItem
  3238. className="half-item"
  3239. {...formItemLayout}
  3240. label={<span style={{ fontSize: "14px" }}>总计金额</span>}
  3241. >
  3242. <span>{this.state.waterSum + "(万元)"}</span>
  3243. </FormItem>
  3244. </div>
  3245. <ReactToPrint
  3246. trigger={() => (
  3247. <Button
  3248. type="primary"
  3249. style={{
  3250. float: "right",
  3251. position: "absolute",
  3252. top: -54,
  3253. right: 30,
  3254. }}
  3255. >
  3256. 打印
  3257. </Button>
  3258. )}
  3259. content={() => this.refs.shouKuan}
  3260. />
  3261. </div>
  3262. </Spin>
  3263. </Modal>
  3264. {/* 所有列表信息 */}
  3265. <Modal
  3266. visible={this.state.dvisible}
  3267. footer=""
  3268. title="所有列表信息"
  3269. className="admin-desc-content"
  3270. width="1300px"
  3271. onCancel={() => {
  3272. this.loadData();
  3273. this.setState({
  3274. dvisible: false,
  3275. });
  3276. }}
  3277. >
  3278. <Spin spinning={this.state.loading}>
  3279. <div
  3280. className="patent-table"
  3281. style={{
  3282. // width: 900,
  3283. // position: "relative",
  3284. // left: "50%",
  3285. // transform: "translate(-50%)",
  3286. padding: "25px 0 30px 30px",
  3287. }}
  3288. ref={(e) => {
  3289. this.refs.all = e;
  3290. }}
  3291. >
  3292. <Table
  3293. columns={this.state.printColumns}
  3294. dataSource={this.state.dataSource}
  3295. pagination={false}
  3296. bordered
  3297. size="small"
  3298. />
  3299. </div>
  3300. </Spin>
  3301. <ReactToPrint
  3302. trigger={() => (
  3303. <Button
  3304. type="primary"
  3305. style={{
  3306. float: "right",
  3307. marginTop: 10,
  3308. position: "absolute",
  3309. top: 0,
  3310. right: 30,
  3311. }}
  3312. >
  3313. 打印
  3314. </Button>
  3315. )}
  3316. content={() => this.refs.all}
  3317. />
  3318. </Modal>
  3319. {/* 工时详情 */}
  3320. <Modal
  3321. visible={this.state.timeVisible}
  3322. footer=""
  3323. title="工时详情"
  3324. className="admin-desc-content"
  3325. width="1300px"
  3326. pagination={false}
  3327. onCancel={() => {
  3328. this.loadData(this.state.page);
  3329. this.setState({
  3330. timeVisible: false,
  3331. });
  3332. }}
  3333. >
  3334. <Spin spinning={this.state.loading}>
  3335. {this.state.pvisible && (
  3336. <Project
  3337. record={this.state.record}
  3338. visible={this.state.pvisible}
  3339. isAuditPaymentGLY={true}
  3340. cancel={() => {
  3341. this.setState({ pvisible: false });
  3342. }}
  3343. />
  3344. )}
  3345. <div
  3346. className="patent-table"
  3347. style={
  3348. {
  3349. // width: 900,
  3350. // position: "relative",
  3351. // left: "50%",
  3352. // transform: "translate(-50%)",
  3353. // padding: "25px 0 30px 30px"
  3354. }
  3355. }
  3356. ref={(e) => {
  3357. this.refs.all = e;
  3358. }}
  3359. >
  3360. <Table
  3361. columns={this.state.timeColumns}
  3362. dataSource={this.state.timeDataList}
  3363. onRowClick={this.tableRowClickPro}
  3364. scroll={{ x: "max-content", y: 0 }}
  3365. pagination={false}
  3366. bordered
  3367. size="small"
  3368. />
  3369. </div>
  3370. </Spin>
  3371. <ReactToPrint
  3372. trigger={() => (
  3373. <Button
  3374. type="primary"
  3375. style={{
  3376. float: "right",
  3377. marginTop: 10,
  3378. position: "absolute",
  3379. top: 0,
  3380. right: 30,
  3381. }}
  3382. >
  3383. 打印
  3384. </Button>
  3385. )}
  3386. content={() => this.refs.all}
  3387. />
  3388. </Modal>
  3389. {/* 催款详情 */}
  3390. <Modal
  3391. visible={this.state.cuiVisible}
  3392. footer=""
  3393. title="催款详情"
  3394. className="admin-desc-content"
  3395. width="1300px"
  3396. pagination={false}
  3397. onCancel={() => {
  3398. this.loadData(this.state.page);
  3399. this.setState({
  3400. cuiVisible: false,
  3401. cuiTabKey: "1",
  3402. });
  3403. }}
  3404. >
  3405. <Tabs activeKey={this.state.cuiTabKey} onChange={this.cuiTabChange}>
  3406. <TabPane tab="催款节点" key="1">
  3407. <Spin spinning={this.state.loading}>
  3408. <div
  3409. className="patent-table"
  3410. ref={(e) => {
  3411. this.refs.all = e;
  3412. }}
  3413. >
  3414. <Table
  3415. columns={this.state.cuiColumns}
  3416. dataSource={this.state.cuiDataList}
  3417. scroll={{ x: "max-content", y: 0 }}
  3418. pagination={false}
  3419. bordered
  3420. size="small"
  3421. />
  3422. </div>
  3423. <ReactToPrint
  3424. trigger={() => (
  3425. <Button
  3426. type="primary"
  3427. style={{
  3428. float: "right",
  3429. marginTop: 10,
  3430. position: "absolute",
  3431. top: "-60px",
  3432. right: 30,
  3433. }}
  3434. >
  3435. 打印
  3436. </Button>
  3437. )}
  3438. content={() => this.refs.all}
  3439. />
  3440. </Spin>
  3441. </TabPane>
  3442. <TabPane tab="欠款催收记录" key="2">
  3443. <Spin spinning={this.state.loading}>
  3444. <div
  3445. className="patent-table"
  3446. ref={(e) => {
  3447. this.refs.all = e;
  3448. }}
  3449. >
  3450. <Table
  3451. columns={this.state.qianColumns}
  3452. dataSource={this.state.qianDataList}
  3453. scroll={{ x: "max-content", y: 0 }}
  3454. pagination={false}
  3455. bordered
  3456. size="small"
  3457. />
  3458. </div>
  3459. <ReactToPrint
  3460. trigger={() => (
  3461. <Button
  3462. type="primary"
  3463. style={{
  3464. float: "right",
  3465. marginTop: 10,
  3466. position: "absolute",
  3467. top: "-60px",
  3468. right: 30,
  3469. }}
  3470. >
  3471. 打印
  3472. </Button>
  3473. )}
  3474. content={() => this.refs.all}
  3475. />
  3476. </Spin>
  3477. </TabPane>
  3478. </Tabs>
  3479. </Modal>
  3480. <Project
  3481. record={this.state.record}
  3482. visible={this.state.pvisible}
  3483. isAuditPaymentGLY={true}
  3484. cancel={() => {
  3485. this.setState({ pvisible: false });
  3486. }}
  3487. />
  3488. {/* 项目进度 */}
  3489. <Modal
  3490. visible={this.state.proVisible}
  3491. footer=""
  3492. title="项目进度"
  3493. className="admin-desc-content"
  3494. width="1300px"
  3495. pagination={false}
  3496. onCancel={() => {
  3497. this.loadData(this.state.page);
  3498. this.setState({
  3499. proVisible: false,
  3500. });
  3501. }}
  3502. >
  3503. <Spin spinning={this.state.loading}>
  3504. <div
  3505. className="patent-table"
  3506. style={
  3507. {
  3508. // width: 900,
  3509. // position: "relative",
  3510. // left: "50%",
  3511. // transform: "translate(-50%)",
  3512. // padding: "25px 0 30px 30px"
  3513. }
  3514. }
  3515. ref={(e) => {
  3516. this.refs.all = e;
  3517. }}
  3518. >
  3519. <Table
  3520. columns={this.state.proColumns}
  3521. dataSource={this.state.proDataList}
  3522. scroll={{ x: "max-content", y: 0 }}
  3523. onRowClick={this.tableRowClickPro}
  3524. pagination={false}
  3525. bordered
  3526. size="small"
  3527. />
  3528. </div>
  3529. <span style={{ display: "block", marginTop: 10, color: "red" }}>
  3530. 外包(内部)价格总计(万元):{this.state.totalWaibao}
  3531. </span>
  3532. </Spin>
  3533. <ReactToPrint
  3534. trigger={() => (
  3535. <Button
  3536. type="primary"
  3537. style={{
  3538. float: "right",
  3539. marginTop: 10,
  3540. position: "absolute",
  3541. top: 0,
  3542. right: 30,
  3543. }}
  3544. >
  3545. 打印
  3546. </Button>
  3547. )}
  3548. content={() => this.refs.all}
  3549. />
  3550. </Modal>
  3551. <KaiPiaoModal
  3552. visible={this.state.avisible}
  3553. data={this.state.modalData}
  3554. onCancel={this.visitCancels}
  3555. loading={this.state.loading}
  3556. />
  3557. {/* 查看公出 */}
  3558. <Modal
  3559. visible={this.state.pubVisible}
  3560. footer=""
  3561. title={<span>公出详细列表(
  3562. {this.state.selectedRows.length > 0 && this.state.selectedRows[0].buyerName}
  3563. )</span>}
  3564. className="admin-desc-content"
  3565. width="1500px"
  3566. pagination={false}
  3567. onCancel={() => {
  3568. this.pubData();
  3569. this.setState({
  3570. pubVisible: false,
  3571. });
  3572. }}
  3573. >
  3574. <div
  3575. className="user-search"
  3576. style={{
  3577. marginTop: "10px",
  3578. marginLeft: "10px",
  3579. marginRight: "10px",
  3580. }}
  3581. >
  3582. <span style={{ marginRight: "10px" }}>
  3583. <Select
  3584. placeholder="请选择审核状态"
  3585. style={{ width: 120 }}
  3586. value={this.state.status}
  3587. onChange={(e) => {
  3588. this.setState({ status: e });
  3589. }}
  3590. >
  3591. {clockState.map((v, k) => (
  3592. <Select.Option key={k} value={v.id}>
  3593. {v.title}
  3594. </Select.Option>
  3595. ))}
  3596. </Select>
  3597. </span>
  3598. <span style={{ marginRight: "10px" }}>
  3599. <Select
  3600. placeholder="请选择打卡状态"
  3601. style={{ width: 120 }}
  3602. value={this.state.clockIn}
  3603. onChange={(e) => {
  3604. this.setState({ clockIn: e });
  3605. }}
  3606. >
  3607. <Select.Option value={1}>已打卡</Select.Option>
  3608. <Select.Option value={0}>未打卡</Select.Option>
  3609. </Select>
  3610. </span>
  3611. <span style={{ marginRight: "10px" }}>
  3612. <Select
  3613. placeholder="请选择公出类型"
  3614. style={{ width: 120 }}
  3615. value={this.state.type}
  3616. onChange={(e) => {
  3617. this.setState({ type: e });
  3618. }}
  3619. >
  3620. <Select.Option value={0}>业务打卡</Select.Option>
  3621. <Select.Option value={1}>技术打卡</Select.Option>
  3622. <Select.Option value={2}>行政打卡</Select.Option>
  3623. <Select.Option value={3}>技术协单</Select.Option>
  3624. </Select>
  3625. </span>
  3626. <span style={{ marginRight: "10px" }}>
  3627. <AutoComplete
  3628. className="certain-category-search"
  3629. dropdownClassName="certain-category-search-dropdown"
  3630. dropdownMatchSelectWidth={false}
  3631. style={{ width: "120px" }}
  3632. dataSource={options}
  3633. placeholder="输入公出申请人"
  3634. value={this.state.auto}
  3635. onChange={this.httpChange}
  3636. filterOption={true}
  3637. onBlur={this.blurChange}
  3638. onSelect={this.selectAuto}
  3639. >
  3640. <Input />
  3641. </AutoComplete>
  3642. </span>
  3643. <span style={{ marginRight: "10px" }}>
  3644. <AutoComplete
  3645. className="certain-category-search"
  3646. dropdownClassName="certain-category-search-dropdown"
  3647. dropdownMatchSelectWidth={false}
  3648. style={{ width: "120px" }}
  3649. dataSource={options1}
  3650. placeholder="输入跟单人"
  3651. value={this.state.auto1}
  3652. onChange={this.httpChange1}
  3653. filterOption={true}
  3654. onBlur={this.blurChange1}
  3655. onSelect={this.selectAuto1}
  3656. >
  3657. <Input />
  3658. </AutoComplete>
  3659. </span>
  3660. <span style={{ marginRight: "10px" }}>
  3661. <Select
  3662. placeholder="请选择公出部门"
  3663. style={{ width: 200 }}
  3664. value={this.state.depId}
  3665. onChange={(e) => {
  3666. this.setState({ depId: e });
  3667. }}
  3668. notFoundContent="未获取到上级组织列表"
  3669. >
  3670. {this.state.contactsOption}
  3671. </Select>
  3672. </span>
  3673. <span style={{ marginRight: "10px" }}>
  3674. <span style={{ marginRight: "5px", marginBottom: "10px" }}>
  3675. 公出时间 :
  3676. </span>
  3677. <RangePicker
  3678. style={{ marginRight: "10px", marginBottom: "10px" }}
  3679. value={[
  3680. this.state.releaseDate[0]
  3681. ? moment(this.state.releaseDate[0])
  3682. : null,
  3683. this.state.releaseDate[1]
  3684. ? moment(this.state.releaseDate[1])
  3685. : null,
  3686. ]}
  3687. onChange={(data, dataString) => {
  3688. this.setState({ releaseDate: dataString });
  3689. }}
  3690. />
  3691. </span>
  3692. <Button
  3693. type="primary"
  3694. onClick={() => {
  3695. this.pubData();
  3696. }}
  3697. style={{ marginRight: "10px", marginBottom: "10px" }}
  3698. >
  3699. 搜索
  3700. </Button>
  3701. <Button
  3702. onClick={this.resetAll}
  3703. style={{ marginRight: "10px", marginBottom: "10px" }}
  3704. >
  3705. 重置
  3706. </Button>
  3707. </div>
  3708. <Spin spinning={this.state.loading}>
  3709. <div
  3710. className="patent-table"
  3711. ref={(e) => {
  3712. this.refs.all = e;
  3713. }}
  3714. >
  3715. <Table
  3716. columns={this.state.pubColumns}
  3717. dataSource={this.state.pubDataList}
  3718. scroll={{ x: "max-content", y: 0 }}
  3719. pagination={false}
  3720. bordered
  3721. size="small"
  3722. />
  3723. </div>
  3724. </Spin>
  3725. <Button
  3726. type="primary"
  3727. style={{
  3728. float: "right",
  3729. marginTop: 10,
  3730. position: "absolute",
  3731. top: 0,
  3732. right: 120,
  3733. }}
  3734. loading={this.state.exportPendingLoading}
  3735. onClick={() => { this.pubexportExec() }}
  3736. >
  3737. 导出
  3738. </Button>
  3739. <ReactToPrint
  3740. trigger={() => (
  3741. <Button
  3742. type="primary"
  3743. style={{
  3744. float: "right",
  3745. marginTop: 10,
  3746. position: "absolute",
  3747. top: 0,
  3748. right: 30,
  3749. }}
  3750. >
  3751. 打印
  3752. </Button>
  3753. )}
  3754. content={() => this.refs.all}
  3755. />
  3756. </Modal>
  3757. {/* 合并查看 */}
  3758. {
  3759. this.state.newVisible != "" &&
  3760. <Modal
  3761. visible={this.state.newVisible != ""}
  3762. footer=""
  3763. title={this.state.newVisible}
  3764. className="admin-desc-content"
  3765. width="1500px"
  3766. pagination={false}
  3767. onCancel={() => {
  3768. this.setState({
  3769. newVisible: "",
  3770. });
  3771. }}
  3772. >
  3773. <Spin spinning={this.state.loading}>
  3774. <div style={{ margin: 20 }}>
  3775. <div style={{ marginBottom: 20 }}>
  3776. <Table
  3777. bordered
  3778. columns={this.state.columns}
  3779. dataSource={this.state.newData}
  3780. scroll={{ x: "max-content", y: 0 }}
  3781. pagination={false}
  3782. onRowDoubleClick={this.tableRowClick.bind(this)}
  3783. size="small"
  3784. />
  3785. </div>
  3786. <div>
  3787. <Button
  3788. type="primary"
  3789. style={{
  3790. margin: "11px 0px 10px 10px",
  3791. background: this.state.newVisible == "开票历史记录" ? "#f04134" : "",
  3792. }}
  3793. onClick={() => {
  3794. this.inRecordData();
  3795. this.setState({
  3796. newVisible: "开票历史记录"
  3797. });
  3798. }}
  3799. >
  3800. 查看开票详情
  3801. </Button>
  3802. <Button
  3803. type="primary"
  3804. style={{
  3805. margin: "11px 0px 10px 10px",
  3806. background: this.state.newVisible == "详细收款流水" ? "#f04134" : "",
  3807. }}
  3808. onClick={() => {
  3809. this.waterData();
  3810. this.setState({
  3811. newVisible: "详细收款流水",
  3812. });
  3813. }}
  3814. >
  3815. 详情收款流水
  3816. </Button>
  3817. <Button
  3818. type="primary"
  3819. style={{
  3820. margin: "11px 0px 10px 10px",
  3821. background: this.state.newVisible == "工时详情" ? "#f04134" : "",
  3822. }}
  3823. onClick={() => {
  3824. this.timeData();
  3825. this.setState({
  3826. newVisible: "工时详情",
  3827. });
  3828. }}
  3829. >
  3830. 工时信息
  3831. </Button>
  3832. <Button
  3833. type="primary"
  3834. style={{
  3835. margin: "11px 0px 10px 10px",
  3836. background: this.state.newVisible == "催款详情" ? "#f04134" : "",
  3837. }}
  3838. onClick={() => {
  3839. this.cuiData();
  3840. this.setState({
  3841. newVisible: "催款详情",
  3842. });
  3843. }}
  3844. >
  3845. 催款信息
  3846. </Button>
  3847. <Button
  3848. type="primary"
  3849. style={{
  3850. margin: "11px 0px 10px 10px",
  3851. background: this.state.newVisible == "项目进度" ? "#f04134" : "",
  3852. }}
  3853. onClick={() => {
  3854. this.proData();
  3855. this.setState({
  3856. newVisible: "项目进度",
  3857. });
  3858. }}
  3859. >
  3860. 项目进度
  3861. </Button>
  3862. <Button
  3863. type="primary"
  3864. style={{
  3865. margin: "11px 0px 10px 10px",
  3866. background: this.state.newVisible == "公出详细列表" ? "#f04134" : "",
  3867. }}
  3868. onClick={() => {
  3869. this.pubData();
  3870. this.selectSuperId();
  3871. this.setState({
  3872. newVisible: "公出详细列表",
  3873. });
  3874. }}
  3875. >
  3876. 查看公出
  3877. </Button>
  3878. </div>
  3879. {
  3880. this.state.newVisible == "公出详细列表" &&
  3881. <div
  3882. className="user-search"
  3883. style={{
  3884. marginTop: "10px",
  3885. marginLeft: "10px",
  3886. marginRight: "10px",
  3887. }}
  3888. >
  3889. <span style={{ marginRight: "10px" }}>
  3890. <Select
  3891. placeholder="请选择审核状态"
  3892. style={{ width: 120 }}
  3893. value={this.state.status}
  3894. onChange={(e) => {
  3895. this.setState({ status: e });
  3896. }}
  3897. >
  3898. {clockState.map((v, k) => (
  3899. <Select.Option key={k} value={v.id}>
  3900. {v.title}
  3901. </Select.Option>
  3902. ))}
  3903. </Select>
  3904. </span>
  3905. <span style={{ marginRight: "10px" }}>
  3906. <Select
  3907. placeholder="请选择打卡状态"
  3908. style={{ width: 120 }}
  3909. value={this.state.clockIn}
  3910. onChange={(e) => {
  3911. this.setState({ clockIn: e });
  3912. }}
  3913. >
  3914. <Select.Option value={1}>已打卡</Select.Option>
  3915. <Select.Option value={0}>未打卡</Select.Option>
  3916. </Select>
  3917. </span>
  3918. <span style={{ marginRight: "10px" }}>
  3919. <Select
  3920. placeholder="请选择公出类型"
  3921. style={{ width: 120 }}
  3922. value={this.state.type}
  3923. onChange={(e) => {
  3924. this.setState({ type: e });
  3925. }}
  3926. >
  3927. <Select.Option value={0}>业务打卡</Select.Option>
  3928. <Select.Option value={1}>技术打卡</Select.Option>
  3929. <Select.Option value={2}>行政打卡</Select.Option>
  3930. <Select.Option value={3}>技术协单</Select.Option>
  3931. </Select>
  3932. </span>
  3933. <span style={{ marginRight: "10px" }}>
  3934. <AutoComplete
  3935. className="certain-category-search"
  3936. dropdownClassName="certain-category-search-dropdown"
  3937. dropdownMatchSelectWidth={false}
  3938. style={{ width: "120px" }}
  3939. dataSource={options}
  3940. placeholder="输入公出申请人"
  3941. value={this.state.auto}
  3942. onChange={this.httpChange}
  3943. filterOption={true}
  3944. onBlur={this.blurChange}
  3945. onSelect={this.selectAuto}
  3946. >
  3947. <Input />
  3948. </AutoComplete>
  3949. </span>
  3950. <span style={{ marginRight: "10px" }}>
  3951. <AutoComplete
  3952. className="certain-category-search"
  3953. dropdownClassName="certain-category-search-dropdown"
  3954. dropdownMatchSelectWidth={false}
  3955. style={{ width: "120px" }}
  3956. dataSource={options1}
  3957. placeholder="输入跟单人"
  3958. value={this.state.auto1}
  3959. onChange={this.httpChange1}
  3960. filterOption={true}
  3961. onBlur={this.blurChange1}
  3962. onSelect={this.selectAuto1}
  3963. >
  3964. <Input />
  3965. </AutoComplete>
  3966. </span>
  3967. <span style={{ marginRight: "10px" }}>
  3968. <Select
  3969. placeholder="请选择公出部门"
  3970. style={{ width: 200 }}
  3971. value={this.state.depId}
  3972. onChange={(e) => {
  3973. this.setState({ depId: e });
  3974. }}
  3975. notFoundContent="未获取到上级组织列表"
  3976. >
  3977. {this.state.contactsOption}
  3978. </Select>
  3979. </span>
  3980. <span style={{ marginRight: "10px" }}>
  3981. <span style={{ marginRight: "5px", marginBottom: "10px" }}>
  3982. 公出时间 :
  3983. </span>
  3984. <RangePicker
  3985. style={{ marginRight: "10px", marginBottom: "10px" }}
  3986. value={[
  3987. this.state.releaseDate[0]
  3988. ? moment(this.state.releaseDate[0])
  3989. : null,
  3990. this.state.releaseDate[1]
  3991. ? moment(this.state.releaseDate[1])
  3992. : null,
  3993. ]}
  3994. onChange={(data, dataString) => {
  3995. this.setState({ releaseDate: dataString });
  3996. }}
  3997. />
  3998. </span>
  3999. <Button
  4000. type="primary"
  4001. onClick={() => {
  4002. this.pubData();
  4003. }}
  4004. style={{ marginRight: "10px", marginBottom: "10px" }}
  4005. >
  4006. 搜索
  4007. </Button>
  4008. <Button
  4009. onClick={this.resetAll}
  4010. style={{ marginRight: "10px", marginBottom: "10px" }}
  4011. >
  4012. 重置
  4013. </Button>
  4014. </div>
  4015. }
  4016. {
  4017. this.state.newVisible == "催款详情"
  4018. ? <Tabs activeKey={this.state.cuiTabKey} onChange={this.cuiTabChange}>
  4019. <TabPane tab="催款节点" key="1">
  4020. <Spin spinning={this.state.loading}>
  4021. <div
  4022. className="patent-table"
  4023. ref={(e) => {
  4024. this.refs.all = e;
  4025. }}
  4026. >
  4027. <Table
  4028. columns={this.state.cuiColumns}
  4029. dataSource={this.state.cuiDataList}
  4030. scroll={{ x: "max-content", y: 0 }}
  4031. pagination={false}
  4032. bordered
  4033. size="small"
  4034. />
  4035. </div>
  4036. <Button
  4037. type="primary"
  4038. style={{
  4039. float: "right",
  4040. marginTop: 10,
  4041. position: "absolute",
  4042. top: "-60px",
  4043. right: "100px",
  4044. }}
  4045. loading={this.state.exportPendingLoading}
  4046. onClick={() => { this.exportCui() }}
  4047. >
  4048. 导出
  4049. </Button>
  4050. <ReactToPrint
  4051. trigger={() => (
  4052. <Button
  4053. type="primary"
  4054. style={{
  4055. float: "right",
  4056. marginTop: 10,
  4057. position: "absolute",
  4058. top: "-60px",
  4059. right: "10px",
  4060. }}
  4061. >
  4062. 打印
  4063. </Button>
  4064. )}
  4065. content={() => this.refs.all}
  4066. />
  4067. </Spin>
  4068. </TabPane>
  4069. <TabPane tab="欠款催收记录" key="2">
  4070. <Spin spinning={this.state.loading}>
  4071. <div
  4072. className="patent-table"
  4073. ref={(e) => {
  4074. this.refs.all = e;
  4075. }}
  4076. >
  4077. <Table
  4078. columns={this.state.qianColumns}
  4079. dataSource={this.state.qianDataList}
  4080. scroll={{ x: "max-content", y: 0 }}
  4081. pagination={false}
  4082. bordered
  4083. size="small"
  4084. />
  4085. </div>
  4086. <ReactToPrint
  4087. trigger={() => (
  4088. <Button
  4089. type="primary"
  4090. style={{
  4091. float: "right",
  4092. marginTop: 10,
  4093. position: "absolute",
  4094. top: "-60px",
  4095. right: "10px",
  4096. }}
  4097. >
  4098. 打印
  4099. </Button>
  4100. )}
  4101. content={() => this.refs.all}
  4102. />
  4103. </Spin>
  4104. </TabPane>
  4105. </Tabs>
  4106. : <div
  4107. className="patent-table"
  4108. style={{ position: "relative" }}
  4109. ref={(e) => {
  4110. this.refs.all = e;
  4111. }}
  4112. >
  4113. <Table
  4114. bordered
  4115. columns={
  4116. this.state.newVisible == "开票历史记录"
  4117. ? this.state.columnsDate : this.state.newVisible == "详细收款流水"
  4118. ? this.state.waterlistDate : this.state.newVisible == "工时详情"
  4119. ? this.state.timeColumns : this.state.newVisible == "催款详情"
  4120. ? this.state.cuiColumns : this.state.newVisible == "项目进度"
  4121. ? this.state.proColumns : this.state.newVisible == "公出详细列表"
  4122. && this.state.pubColumns
  4123. }
  4124. dataSource={
  4125. this.state.newVisible == "开票历史记录"
  4126. ? this.state.recordData : this.state.newVisible == "详细收款流水"
  4127. ? this.state.waterData : this.state.newVisible == "工时详情"
  4128. ? this.state.timeDataList : this.state.newVisible == "催款详情"
  4129. ? this.state.cuiDataList : this.state.newVisible == "项目进度"
  4130. ? this.state.proDataList : this.state.newVisible == "公出详细列表"
  4131. && this.state.pubDataList
  4132. }
  4133. pagination={false}
  4134. scroll={{ x: "max-content", y: 0 }}
  4135. size="small"
  4136. />
  4137. {
  4138. this.state.newVisible == "开票历史记录" &&
  4139. <div className="clearfix" style={{ marginTop: "20px" }}>
  4140. <FormItem
  4141. className="half-item"
  4142. {...formItemLayout}
  4143. label={<span style={{ fontSize: "14px" }}>开票总计</span>}
  4144. >
  4145. <span>{this.state.sum + "(万元)"}</span>
  4146. </FormItem>
  4147. </div>
  4148. }
  4149. {
  4150. this.state.newVisible == "开票历史记录" &&
  4151. <Button
  4152. type="primary"
  4153. style={{
  4154. float: "right",
  4155. position: "absolute",
  4156. top: "-40px",
  4157. right: "100px",
  4158. }}
  4159. loading={this.state.exportPendingLoading}
  4160. onClick={() => { this.exportKaip() }}
  4161. >
  4162. 导出
  4163. </Button>
  4164. }
  4165. {
  4166. this.state.newVisible == "开票历史记录" &&
  4167. <ReactToPrint
  4168. trigger={() => (
  4169. <Button type="primary"
  4170. style={{
  4171. float: "right",
  4172. position: "absolute",
  4173. top: "-40px",
  4174. right: "10px",
  4175. }}
  4176. >打印</Button>
  4177. )}
  4178. content={() => this.refs.kaiPiao}
  4179. />
  4180. }
  4181. {
  4182. this.state.newVisible == "详细收款流水" &&
  4183. <div className="clearfix" style={{ marginTop: "20px" }}>
  4184. <FormItem
  4185. className="half-item"
  4186. {...formItemLayout}
  4187. label={<span style={{ fontSize: "14px" }}>总计金额</span>}
  4188. >
  4189. <span>{this.state.waterSum + "(万元)"}</span>
  4190. </FormItem>
  4191. </div>
  4192. }
  4193. {
  4194. this.state.newVisible == "详细收款流水" &&
  4195. <Button
  4196. type="primary"
  4197. style={{
  4198. float: "right",
  4199. position: "absolute",
  4200. top: "-40px",
  4201. right: "100px",
  4202. }}
  4203. loading={this.state.exportPendingLoading}
  4204. onClick={() => { this.exportWater() }}
  4205. >
  4206. 导出
  4207. </Button>
  4208. }
  4209. {
  4210. this.state.newVisible == "详细收款流水" &&
  4211. <ReactToPrint
  4212. trigger={() => (
  4213. <Button
  4214. type="primary"
  4215. style={{
  4216. float: "right",
  4217. position: "absolute",
  4218. top: "-40px",
  4219. right: "10px",
  4220. }}
  4221. >
  4222. 打印
  4223. </Button>
  4224. )}
  4225. content={() => this.refs.shouKuan}
  4226. />
  4227. }
  4228. {
  4229. this.state.newVisible == "工时详情" &&
  4230. <Button
  4231. type="primary"
  4232. style={{
  4233. float: "right",
  4234. position: "absolute",
  4235. top: "-40px",
  4236. right: "100px",
  4237. }}
  4238. loading={this.state.exportPendingLoading}
  4239. onClick={() => { this.exportTime() }}
  4240. >
  4241. 导出
  4242. </Button>
  4243. }
  4244. {
  4245. this.state.newVisible == "工时详情" &&
  4246. <ReactToPrint
  4247. trigger={() => (
  4248. <Button
  4249. type="primary"
  4250. style={{
  4251. float: "right",
  4252. position: "absolute",
  4253. top: "-40px",
  4254. right: "10px",
  4255. }}
  4256. >
  4257. 打印
  4258. </Button>
  4259. )}
  4260. content={() => this.refs.all}
  4261. />
  4262. }
  4263. {
  4264. this.state.newVisible == "项目进度" &&
  4265. <span style={{ display: "block", marginTop: 10, color: "red" }}>
  4266. 外包(内部)价格总计(万元):{this.state.totalWaibao}
  4267. </span>
  4268. }
  4269. {
  4270. this.state.newVisible == "项目进度" &&
  4271. <Button
  4272. type="primary"
  4273. style={{
  4274. float: "right",
  4275. position: "absolute",
  4276. top: "-40px",
  4277. right: "100px",
  4278. }}
  4279. loading={this.state.exportPendingLoading}
  4280. onClick={() => { this.exportPro() }}
  4281. >
  4282. 导出
  4283. </Button>
  4284. }
  4285. {
  4286. this.state.newVisible == "项目进度" &&
  4287. <ReactToPrint
  4288. trigger={() => (
  4289. <Button
  4290. type="primary"
  4291. style={{
  4292. float: "right",
  4293. position: "absolute",
  4294. top: "-40px",
  4295. right: "10px",
  4296. }}
  4297. >
  4298. 打印
  4299. </Button>
  4300. )}
  4301. content={() => this.refs.all}
  4302. />
  4303. }
  4304. {
  4305. this.state.newVisible == "公出详细列表" &&
  4306. <Button
  4307. type="primary"
  4308. style={{
  4309. float: "right",
  4310. position: "absolute",
  4311. top: "-90px",
  4312. right: "100px",
  4313. }}
  4314. loading={this.state.exportPendingLoading}
  4315. onClick={() => { this.pubexportExec() }}
  4316. >
  4317. 导出
  4318. </Button>
  4319. }
  4320. {
  4321. this.state.newVisible == "公出详细列表" &&
  4322. <ReactToPrint
  4323. trigger={() => (
  4324. <Button
  4325. type="primary"
  4326. style={{
  4327. float: "right",
  4328. position: "absolute",
  4329. top: "-90px",
  4330. right: "10px",
  4331. }}
  4332. >
  4333. 打印
  4334. </Button>
  4335. )}
  4336. content={() => this.refs.all}
  4337. />
  4338. }
  4339. </div>
  4340. }
  4341. </div>
  4342. </Spin>
  4343. </Modal>
  4344. }
  4345. <textarea id="copyText" style={{ opacity: 0 }} />
  4346. </div>
  4347. );
  4348. },
  4349. });
  4350. export default ShouKuang;