myTask.jsx 239 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528
  1. import React from 'react'
  2. import $ from 'jquery'
  3. import moment from 'moment'
  4. import Picture from '@/manageCenter/publicComponent/picture'
  5. import '@/manageCenter/financialManage/distribute/public.less'
  6. import '@/manageCenter/financialManage/distribute/shouKuan.less'
  7. import OrderDetail from '../../order/orderNew/changeComponent/orderDetail'
  8. import ResolutionDetail from '@/resolutionDetail'
  9. import {
  10. Button,
  11. Form,
  12. Input,
  13. Select,
  14. Spin,
  15. Table,
  16. message,
  17. DatePicker,
  18. Modal,
  19. Radio,
  20. Cascader,
  21. Popconfirm,
  22. Switch,
  23. Tabs,
  24. Col,
  25. Icon,
  26. Upload,
  27. Tag, Row, Tooltip,
  28. } from 'antd'
  29. import Assign from '@/manageCenter/publicComponent/assign'
  30. import { areaSelect } from '@/NewDicProvinceList'
  31. import { ChooseList } from '../../order/orderNew/chooseList'
  32. import OrderRiZi from '@/orderRiZi.jsx'
  33. import './table.less'
  34. import {getMaterialStatus,
  35. getUrgentStatus,
  36. getProcessStatus,
  37. getApproval,
  38. getTaskStatus,
  39. getLiquidationStatus,
  40. splitUrl,
  41. getboutique,
  42. ShowModal,
  43. getRefundStatus,
  44. getProjectName} from '@/tools'
  45. import {cuiJieDian,projectStatusCascader } from '@/dataDic.js'
  46. import ShowModalDiv from '@/showModal.jsx';
  47. import NowProjectStatus from '../../../common/nowProjectStatus';
  48. import DeclarationProgress from '../../../../component/common/declarationProgress';
  49. import CheckProject from '../../components/checkProject';
  50. import NewSupplier from './newSupplier';
  51. import ImgList from "../../../common/imgList";
  52. import OperationPayNode from "./operationPayNode";
  53. import PatentSchedule from './patentSchedule';
  54. import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
  55. import ProjectLog from './projectLog';
  56. import OrderItemStatus from "../../../common/orderItemStatus";
  57. import EnterpriseNameChange from "../../../common/enterpriseNameChange";
  58. const confirm = Modal.confirm
  59. const FormItem = Form.Item
  60. const { TabPane } = Tabs
  61. const { TextArea } = Input
  62. const { Option } = Select
  63. const PicturesWall = React.createClass({
  64. getInitialState() {
  65. return {
  66. fileList: [],
  67. }
  68. },
  69. handleChange(info) {
  70. let fileList = info.fileList
  71. this.setState({
  72. fileList,
  73. })
  74. this.props.fileList(fileList)
  75. },
  76. componentWillReceiveProps(nextProps) {
  77. this.state.fileList = nextProps.pictureUrl
  78. this.state.pojectApplicationUrl = undefined
  79. },
  80. render() {
  81. const { fileList } = this.state
  82. return (
  83. <div style={{ display: 'inline-block' }}>
  84. <ImgList
  85. domId={this.props.domId}
  86. uploadConfig={{
  87. action:globalConfig.context + '/api/admin/outsourceOrg/uploadOutsourceFile',
  88. multiple:true,
  89. data:{ sign: 'order_outsource' },
  90. listType:"picture-card",
  91. }}
  92. onChange={(infor)=>{
  93. this.handleChange(infor)
  94. }}
  95. fileList={fileList}
  96. />
  97. </div>
  98. )
  99. },
  100. })
  101. const Task = React.createClass({
  102. loadData(pageNo) {
  103. this.state.data = []
  104. this.setState({
  105. page: pageNo,
  106. loading: true,
  107. })
  108. $.ajax({
  109. method: 'get',
  110. dataType: 'json',
  111. crossDomain: false,
  112. url: globalConfig.context + '/api/admin/orderProject/orderTaskList',
  113. data: {
  114. pageNo: pageNo || 1,
  115. pageSize: this.state.pagination.pageSize,
  116. specially: 0, //个人
  117. name: this.state.nameSearch, //客户名称
  118. depId: this.state.departmenttSearch, //订单部门
  119. orderNo: this.state.orderNoSearch, //订单编号
  120. contractNo: this.state.contractNoSearch, //合同编号
  121. taskId: this.state.taskNoSearch, //项目编号
  122. taskStatus: this.state.taskStatuSearch, //项目状态
  123. projectStatus: this.state.projectStatusSearch && this.state.projectStatusSearch.length > 0 ?
  124. (typeof this.state.projectStatusSearch[0] === 'string' ? this.state.projectStatusSearch[1] : this.state.projectStatusSearch[0]) : undefined, //项目状态
  125. adminName: this.state.adminName, //项目受理人
  126. approval: this.state.approvalSearch, //特批状态搜索
  127. outsourceStatus:
  128. this.state.outsourceStatusSearch >= 999
  129. ? undefined
  130. : this.state.outsourceStatusSearch, //外包状态搜索
  131. },
  132. success: function (data) {
  133. ShowModal(this)
  134. let theArr = []
  135. if (!data.data || !data.data.list) {
  136. if (data.error && data.error.length) {
  137. message.warning(data.error[0].message)
  138. }
  139. } else {
  140. for (let i = 0; i < data.data.list.length; i++) {
  141. let thisdata = data.data.list[i];
  142. thisdata.key = i;
  143. thisdata.userName = thisdata.taskName.substring(0, 5) === '软件著作权'
  144. ? thisdata.userName +
  145. '(' +
  146. thisdata.commodityQuantity.toString() +
  147. '/' +
  148. thisdata.alreadyNumber +
  149. ')'
  150. : thisdata.userName;
  151. theArr.push(thisdata)
  152. }
  153. }
  154. this.state.pagination.current = data.data.pageNo
  155. this.state.pagination.total = data.data.totalCount
  156. if (data.data && data.data.list && !data.data.list.length) {
  157. this.state.pagination.current = 0
  158. this.state.pagination.total = 0
  159. }
  160. this.setState({
  161. dataSource: theArr,
  162. pagination: this.state.pagination,
  163. })
  164. }.bind(this),
  165. }).always(
  166. function () {
  167. this.setState({
  168. loading: false,
  169. })
  170. }.bind(this)
  171. )
  172. },
  173. getInitialState() {
  174. return {
  175. containOfficialFees:0,//官费缴费情况
  176. audit: 1,
  177. declarationBatch: 1,
  178. dataInfor: {},
  179. projectType: '', //项目分类
  180. paySubject: [],
  181. paySubjectName: '', //付款科目名称
  182. PayNodeCompany: [],
  183. thirdMaterial: 0, //第三方信息材料 0-无 1-有
  184. thirdUrgent: 0, //第三方信息加急状态
  185. thirdCompanyName: '',
  186. thirdUnitPrice: '',
  187. currentCompanyName: '', //当前选中供应商名称
  188. thirdQuantity: 1,
  189. payNodeQuantity: 1,
  190. thirdRemarks: '',
  191. customerArr: [],
  192. timeRecordparse:{},
  193. currentTotalPrice: 0, //当前修改页面的总价
  194. saveThirdList: [],
  195. orderData: [],
  196. orderNo: '',
  197. jiedian: [],
  198. jiedianNew: [],
  199. timeVisible: false,
  200. ThirdListVisible: false,
  201. PayNodeVisible: false, //新增付款节点
  202. searchMore: true,
  203. assignVisible: false,
  204. releaseDate: [],
  205. patentType: -1,
  206. patentNameType: -1,
  207. startType: 0, //外包供应商类型
  208. // 判断是否是退回给咨询师经理
  209. flag: false,
  210. roleName: '',
  211. activeKey: '1',
  212. //特批状态搜索
  213. approvalSearch: undefined,
  214. testFlag: true,
  215. boHuivisible: false,
  216. selectedRowKeys: [],
  217. avisible: false,
  218. departmentArr: [],
  219. selectedRows: [],
  220. attachmentUrl: [],
  221. contactList: [],
  222. paginations: false,
  223. loading: false,
  224. pagination: {
  225. defaultCurrent: 1,
  226. defaultPageSize: 10,
  227. showQuickJumper: true,
  228. pageSize: 10,
  229. onChange: function (page) {
  230. this.loadData(page)
  231. }.bind(this),
  232. showTotal: function (total) {
  233. return '共' + total + '条数据'
  234. },
  235. },
  236. // 子组件改变的表格title数组
  237. changeList: undefined,
  238. columnsTime: [
  239. {
  240. title: '工作时长(小时)',
  241. dataIndex: 'hours',
  242. key: 'hours',
  243. },
  244. {
  245. title: '工作时间',
  246. dataIndex: 'taskDays',
  247. key: 'taskDays',
  248. },
  249. // {
  250. // title: "项目负责人",
  251. // dataIndex: "remarks",
  252. // key: "remarks"
  253. // },
  254. {
  255. title: '备注',
  256. dataIndex: 'remarks',
  257. key: 'remarks',
  258. },
  259. ],
  260. columns: [
  261. {
  262. title: '项目编号',
  263. dataIndex: 'id',
  264. key: 'id',
  265. fixed: 'left',
  266. width: 50,
  267. render: (text, record) => {
  268. if (record.splitStatus == 2) {
  269. return <span>{record.splitSuper + '-' + record.splitId}</span>
  270. } else {
  271. return text
  272. }
  273. },
  274. },
  275. {
  276. title: '项目名称',
  277. dataIndex: 'taskName',
  278. key: 'taskName',
  279. fixed: 'left',
  280. width: 100,
  281. render: (text) => {
  282. return text && text.length > 8 ? text.substr(0, 8) + '…' : text
  283. },
  284. },
  285. {
  286. title: '项目数量',
  287. dataIndex: 'commodityQuantity',
  288. key: 'commodityQuantity',
  289. fixed: 'left',
  290. width: 50,
  291. },
  292. {
  293. title: '订单编号',
  294. dataIndex: 'orderNo',
  295. key: 'orderNo',
  296. fixed: 'left',
  297. width: 150,
  298. },
  299. {
  300. title: '合同编号',
  301. dataIndex: 'contractNo',
  302. key: 'contractNo',
  303. fixed: 'left',
  304. width: 120,
  305. },
  306. {
  307. title: '客户名称',
  308. dataIndex: 'userName',
  309. key: 'userName',
  310. className: 'userName',
  311. fixed: 'left',
  312. width:100,
  313. render: text => {
  314. return (
  315. <Tooltip title={text}>
  316. <div style={{
  317. maxWidth:'100px',
  318. overflow:'hidden',
  319. textOverflow: "ellipsis",
  320. whiteSpace:'nowrap',
  321. }}>{text}</div>
  322. </Tooltip>
  323. )
  324. }
  325. },
  326. {
  327. title: '业务类别',
  328. dataIndex: 'cname',
  329. key: 'cname',
  330. },
  331. {
  332. title: '分配状态',
  333. dataIndex: 'taskStatus',
  334. key: 'taskStatus',
  335. render: (text) => {
  336. return getTaskStatus(text)
  337. },
  338. },
  339. {
  340. title: '项目状态',
  341. dataIndex: 'projectStatus',
  342. key: 'projectStatus',
  343. render: (text) => {
  344. return getProjectName(parseInt(text))
  345. },
  346. },
  347. {
  348. title: '审核状态',
  349. dataIndex: 'outsourceStatus',
  350. key: 'outsourceStatus',
  351. render: (text,record) => {
  352. if(record.outsourceType === 1){
  353. return '供应商'
  354. }else{
  355. if (text === 0) {
  356. return <Tag color="#f50">外包待审核</Tag>
  357. } else if (text === 1) {
  358. return <Tag color="#87d068">外包已通过</Tag>
  359. } else if (text === 2) {
  360. return <Tag color="#2db7f5">外包被驳回</Tag>
  361. } else {
  362. return <div style={{textAlign:'center'}}>/</div>
  363. }
  364. return text
  365. }
  366. },
  367. },
  368. {
  369. title: '分配时间',
  370. dataIndex: 'taskDate',
  371. key: 'taskDate',
  372. },
  373. {
  374. title: '订单部门',
  375. dataIndex: 'depName',
  376. key: 'depName',
  377. },
  378. {
  379. title: '累计工时(小时)',
  380. dataIndex: 'hours',
  381. key: 'hours',
  382. },
  383. {
  384. title: "项目金额(万元)",
  385. dataIndex: "commodityPrice",
  386. key: "commodityPrice",
  387. },
  388. {
  389. title: "外包成本(万元)",
  390. dataIndex: "costAmount",
  391. key: "costAmount",
  392. render: (text, record) => {
  393. return (<span>
  394. {
  395. isNaN(parseFloat(text)) ? text : parseFloat(text)
  396. }
  397. </span>)
  398. }
  399. },
  400. {
  401. title: "已付(万元)",
  402. dataIndex: "partyAmount",
  403. key: "partyAmount",
  404. render: (text, record) => {
  405. return (<span>
  406. {
  407. isNaN(parseFloat(text)) ? text : parseFloat(text)
  408. }
  409. </span>)
  410. }
  411. },
  412. {
  413. title: '操作',
  414. dataIndex: 'caozuo',
  415. key: 'caozuo',
  416. render: (text, record) => {
  417. return (
  418. <div>
  419. <Button
  420. type="primary"
  421. onClick={(e) => {
  422. e.stopPropagation(), this.evaluate(record, this.props.isZxs ? '咨询师' : '咨询师经理')
  423. }}
  424. >
  425. 转交
  426. </Button>
  427. <Button
  428. type="primary"
  429. style={{ marginLeft: 10 }}
  430. onClick={(e) => {
  431. e.stopPropagation(),
  432. this.evaluate(record, '咨询师经理', true)
  433. }}
  434. >
  435. 回退
  436. </Button>
  437. <Button
  438. type="primary"
  439. style={{ margin: '0 10px' }}
  440. onClick={(e) => {
  441. e.stopPropagation(), this.okCancel(record)
  442. }}
  443. >
  444. 添加工时
  445. </Button>
  446. <Button
  447. type="primary"
  448. onClick={(e) => {
  449. e.stopPropagation()
  450. this.setState({
  451. timeVisible: true,
  452. })
  453. this.timeDetail(record)
  454. }}
  455. >
  456. 工时记录
  457. </Button>
  458. <Button
  459. type="primary"
  460. style={{ marginLeft: '10px' }}
  461. onClick={(e) => {
  462. e.stopPropagation()
  463. this.setState({
  464. projectLogVisible: true,
  465. projectLogId : record.id
  466. })
  467. }}
  468. >
  469. 项目日志
  470. </Button>
  471. </div>
  472. )
  473. },
  474. },
  475. ],
  476. dataSource: [],
  477. searchTime: [],
  478. columnsX: [
  479. {
  480. title: '业务项目名称',
  481. dataIndex: 'commodityName',
  482. key: 'commodityName',
  483. },
  484. {
  485. title: '项目类别',
  486. dataIndex: 'cname',
  487. key: 'cname',
  488. },
  489. {
  490. title: '项目数量',
  491. dataIndex: 'commodityQuantity',
  492. key: 'commodityQuantity',
  493. render: (text, record) => {
  494. if (record.splitStatus == 1) {
  495. return (
  496. <span>
  497. {text}{' '}
  498. <Tag
  499. color="#108ee9"
  500. onClick={(e) => {
  501. e.stopPropagation()
  502. this.showRes(record)
  503. }}
  504. >
  505. 已拆
  506. </Tag>
  507. </span>
  508. )
  509. } else {
  510. return text
  511. }
  512. },
  513. },
  514. {
  515. title: '金额(万元)',
  516. dataIndex: 'commodityPrice',
  517. key: 'commodityPrice',
  518. render: (text, record) => {
  519. return (
  520. <span>
  521. {this.props.isZxs || text === -1 ? '***' : text}
  522. </span>
  523. )
  524. }
  525. },
  526. {
  527. title: '负责人',
  528. dataIndex: 'contacts',
  529. key: 'contacts',
  530. },
  531. {
  532. title: '负责人电话',
  533. dataIndex: 'contactsMobile',
  534. key: 'contactsMobile',
  535. },
  536. {
  537. title: '主要项目',
  538. dataIndex: 'main',
  539. key: 'main',
  540. render: (text) => {
  541. return text ? '是' : '否'
  542. },
  543. },
  544. {
  545. title: '项目说明',
  546. dataIndex: 'taskComment',
  547. key: 'taskComment',
  548. render: (text) => {
  549. return text && text.length > 8 ? text.substr(0, 8) + '…' : text
  550. },
  551. },
  552. ],
  553. columnsA: [
  554. {
  555. title: '流程',
  556. dataIndex: 'content',
  557. key: 'content',
  558. align: 'center',
  559. },
  560. {
  561. title: '操作人',
  562. dataIndex: 'aName',
  563. key: 'aName',
  564. align: 'center',
  565. },
  566. {
  567. title: '时间',
  568. dataIndex: 'createTimes',
  569. key: 'createTimes',
  570. align: 'center',
  571. },
  572. ],
  573. dataSourceX: [],
  574. dataSourceA: [],
  575. ContactsLists: [
  576. {
  577. title: '批次',
  578. dataIndex: 'num',
  579. key: 'num',
  580. },
  581. {
  582. title: '下证时间',
  583. dataIndex: 'licenceTimes',
  584. key: 'licenceTimes',
  585. render: (text, record) => {
  586. return (
  587. <div>
  588. <DatePicker
  589. style={{ marginTop: '5px' }}
  590. disabled={record.flag}
  591. showTime
  592. format="YYYY-MM-DD"
  593. onOk={() => {}}
  594. value={
  595. record.licenceTimes ? moment(record.licenceTimes) : null
  596. }
  597. onChange={(data, dataString) => {
  598. record.licenceTimes = dataString
  599. this.setState({ contactList: this.state.contactList })
  600. }}
  601. />
  602. </div>
  603. )
  604. },
  605. },
  606. {
  607. title: '下证数量',
  608. dataIndex: 'alreadyNumber',
  609. key: 'alreadyNumber',
  610. render: (text, record) => {
  611. return (
  612. <div>
  613. {
  614. <Input
  615. value={record.alreadyNumber}
  616. disabled={record.flag}
  617. placeholder="请输入下证数量"
  618. key={record.id}
  619. required="required"
  620. onChange={(e) => {
  621. record.alreadyNumber = e.target.value
  622. this.setState({ contactList: this.state.contactList })
  623. }}
  624. style={{ width: '120px' }}
  625. />
  626. }
  627. </div>
  628. )
  629. },
  630. },
  631. {
  632. title: '未下证数量',
  633. dataIndex: 'notCount',
  634. key: 'notCount',
  635. },
  636. {
  637. title: '操作',
  638. dataIndex: 'dels',
  639. key: 'dels',
  640. render: (text, record, index) => {
  641. return (
  642. <div>
  643. {
  644. <Popconfirm
  645. title="是否删除?"
  646. onConfirm={() => {
  647. this.confirmDelet(record)
  648. }}
  649. okText="删除"
  650. cancelText="不删除"
  651. >
  652. <Button
  653. style={{
  654. marginRight: '10px',
  655. color: '#ffffff',
  656. background: '#f00',
  657. border: 'none',
  658. }}
  659. >
  660. 删除
  661. </Button>
  662. </Popconfirm>
  663. }
  664. {record.flag ? (
  665. ''
  666. ) : (
  667. <Button
  668. type="primary"
  669. onClick={(e) => {
  670. e.stopPropagation(), this.contactSave(record, index)
  671. }}
  672. >
  673. 保存
  674. </Button>
  675. )}
  676. </div>
  677. )
  678. },
  679. },
  680. ],
  681. // 专利
  682. ContactsListsNew: [],
  683. //付款节点表头
  684. PayNodeTableColunms: [],
  685. }
  686. },
  687. /* 分派 */
  688. evaluate(record, nub, flag) {
  689. this.setState(
  690. {
  691. nub: nub,
  692. assignData: record,
  693. flag,
  694. },
  695. () => {
  696. this.setState({
  697. assignVisible: true,
  698. })
  699. }
  700. )
  701. },
  702. componentWillMount() {
  703. this.departmentList()
  704. this.loadData()
  705. },
  706. componentDidMount() {
  707. this.setColor()
  708. },
  709. //用于判断 第三方信息表格显示
  710. projectTypeTabContent(projectType) {
  711. //0正常 1专利 2软著 3审计 this.state.startType 0外包 1供应商 外包时当普通单处理 projectType大于3的都用通用表格
  712. if(projectType === 0 || !projectType || this.state.startType === 0 || projectType > 3){
  713. this.setState({
  714. ContactsListsNew: [
  715. {
  716. title: '供应商名称',
  717. dataIndex: 'companyName',
  718. key: 'companyName',
  719. render: (text, record, index) => {
  720. if (text) {
  721. return <span>{text}</span>
  722. }
  723. },
  724. },
  725. {
  726. title: '单价(万元)',
  727. dataIndex: 'unitPrice',
  728. key: 'unitPrice',
  729. render: (text, record) => {
  730. if (text) {
  731. return <span>
  732. {
  733. isNaN(text) ? text : parseFloat(text)
  734. }
  735. </span>
  736. }
  737. },
  738. },
  739. {
  740. title: '数量',
  741. dataIndex: 'quantity',
  742. key: 'quantity',
  743. render: (text, record) => {
  744. if (text) {
  745. return <span>{text}</span>
  746. }
  747. },
  748. },
  749. {
  750. title: '总价(万元)',
  751. dataIndex: 'totalAmount',
  752. key: 'totalAmount',
  753. render: (text, record) => {
  754. return <span>
  755. {
  756. isNaN(text) ? text : parseFloat(text)
  757. }
  758. </span>
  759. },
  760. },
  761. {
  762. title: '备注',
  763. dataIndex: 'remarks',
  764. key: 'remarks',
  765. },
  766. {
  767. title: '操作',
  768. dataIndex: 'action',
  769. key: 'action',
  770. render: (text, record) => {
  771. return (
  772. <div>
  773. {/*外包审核通过后,咨询师/咨询经理可申请付款*/}
  774. {/*存在支付节点时不显示第三方的申请付款*/}
  775. {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
  776. {
  777. <Button disabled={
  778. !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && this.props.dataSource.length === 0)
  779. } type="primary" onClick={() => {
  780. this.setState({
  781. previewPayVisible: true,
  782. previewPayInfor: record,
  783. })
  784. }}>
  785. 申请付款
  786. </Button>
  787. }
  788. <Popconfirm
  789. title="是否删除?"
  790. onConfirm={() => {
  791. this.confirmDeletNew(record)
  792. }}
  793. okText="删除"
  794. cancelText="不删除"
  795. >
  796. <Button
  797. onClick={(e) => {
  798. e.stopPropagation()
  799. }}
  800. style={{
  801. marginLeft: '10px',
  802. color: '#ffffff',
  803. background: '#f00',
  804. border: 'none',
  805. }}
  806. >
  807. 删除
  808. </Button>
  809. </Popconfirm>
  810. </div>
  811. )
  812. },
  813. },
  814. ],
  815. })
  816. }else if(projectType === 2){ //2软著
  817. this.setState({
  818. ContactsListsNew: [
  819. {
  820. title: '供应商名称',
  821. dataIndex: 'companyName',
  822. key: 'companyName',
  823. render: (text, record, index) => {
  824. if (text) {
  825. return <span>{text}</span>
  826. }
  827. },
  828. },
  829. {
  830. title: '单价(万元)',
  831. dataIndex: 'unitPrice',
  832. key: 'unitPrice',
  833. render: (text, record) => {
  834. if (text) {
  835. return <span>
  836. {
  837. isNaN(text) ? text : parseFloat(text)
  838. }
  839. </span>
  840. }
  841. },
  842. },
  843. {
  844. title: '数量',
  845. dataIndex: 'quantity',
  846. key: 'quantity',
  847. render: (text, record) => {
  848. if (text) {
  849. return <span>{text}</span>
  850. }
  851. },
  852. },
  853. {
  854. title: '总价(万元)',
  855. dataIndex: 'totalAmount',
  856. key: 'totalAmount',
  857. render: (text, record) => {
  858. return <span>
  859. {
  860. isNaN(text) ? text : parseFloat(text)
  861. }
  862. </span>
  863. },
  864. },
  865. {
  866. title: '材料',
  867. dataIndex: 'material',
  868. key: 'material',
  869. render: (text, record) => {
  870. return getMaterialStatus(text)
  871. },
  872. },
  873. {
  874. title: '加急',
  875. dataIndex: 'urgent',
  876. key: 'urgent',
  877. render: (text, record) => {
  878. return getUrgentStatus(text)
  879. },
  880. },
  881. {
  882. title: '操作',
  883. dataIndex: 'action',
  884. key: 'action',
  885. render: (text, record) => {
  886. return (
  887. <div>
  888. {/*外包审核通过后,咨询师/咨询经理可申请付款*/}
  889. {/*存在支付节点时不显示第三方的申请付款*/}
  890. {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
  891. {
  892. <Button disabled={
  893. !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && this.props.dataSource.length === 0)
  894. } type="primary" onClick={() => {
  895. this.setState({
  896. previewPayVisible: true,
  897. previewPayInfor: record,
  898. })
  899. }}>
  900. 申请付款
  901. </Button>
  902. }
  903. <Popconfirm
  904. title="是否删除?"
  905. onConfirm={() => {
  906. this.confirmDeletNew(record)
  907. }}
  908. okText="删除"
  909. cancelText="不删除"
  910. >
  911. <Button
  912. onClick={(e) => {
  913. e.stopPropagation()
  914. }}
  915. style={{
  916. marginLeft: '10px',
  917. color: '#ffffff',
  918. background: '#f00',
  919. border: 'none',
  920. }}
  921. >
  922. 删除
  923. </Button>
  924. </Popconfirm>
  925. </div>
  926. )
  927. },
  928. },
  929. ],
  930. })
  931. }else if(projectType === 1){ //1专利
  932. if(this.state.patentType === 0){ //专利申请
  933. this.setState({
  934. ContactsListsNew: [
  935. {
  936. title: '供应商名称',
  937. dataIndex: 'companyName',
  938. key: 'companyName',
  939. render: (text, record, index) => {
  940. if (text) {
  941. return <span>{text}</span>
  942. }
  943. },
  944. },
  945. {
  946. title: '单价(万元)',
  947. dataIndex: 'unitPrice',
  948. key: 'unitPrice',
  949. render: (text, record) => {
  950. if (text) {
  951. return <span>
  952. {
  953. isNaN(text) ? text : parseFloat(text)
  954. }
  955. </span>
  956. }
  957. },
  958. },
  959. {
  960. title: '数量',
  961. dataIndex: 'quantity',
  962. key: 'quantity',
  963. render: (text, record) => {
  964. if (text) {
  965. return <span>{text}</span>
  966. }
  967. },
  968. },
  969. {
  970. title: "官费",
  971. dataIndex: "officialCost",
  972. key: "officialCost",
  973. render: (text) => {
  974. return text === 1 ? '有官费' : '无官费'
  975. },
  976. },
  977. {
  978. title: "费减",
  979. dataIndex: "costReduction",
  980. key: "costReduction",
  981. render: (text) => {
  982. return text === 1 ? '有费减' : '无费减'
  983. },
  984. },
  985. {
  986. title: '总价(万元)',
  987. dataIndex: 'totalAmount',
  988. key: 'totalAmount',
  989. render: (text, record) => {
  990. return <span>
  991. {
  992. isNaN(text) ? text : parseFloat(text)
  993. }
  994. </span>
  995. },
  996. },
  997. {
  998. title: '备注',
  999. dataIndex: 'remarks',
  1000. key: 'remarks',
  1001. },
  1002. {
  1003. title: '操作',
  1004. dataIndex: 'action',
  1005. key: 'action',
  1006. render: (text, record) => {
  1007. return (
  1008. <div>
  1009. {/*外包审核通过后,咨询师/咨询经理可申请付款*/}
  1010. {/*存在支付节点时不显示第三方的申请付款*/}
  1011. {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
  1012. {
  1013. <Button disabled={
  1014. !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && this.props.dataSource.length === 0)
  1015. } type="primary" onClick={() => {
  1016. this.setState({
  1017. previewPayVisible: true,
  1018. previewPayInfor: record,
  1019. })
  1020. }}>
  1021. 申请付款
  1022. </Button>
  1023. }
  1024. {
  1025. <Button
  1026. type="primary"
  1027. style={{
  1028. marginLeft: '10px',
  1029. }}
  1030. disabled={!(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && this.props.dataSource.length === 0)}
  1031. onClick={() => {
  1032. this.setState({
  1033. previewPayVisible: true,
  1034. previewPayInfor: record,
  1035. })
  1036. }}>
  1037. 付官费
  1038. </Button>
  1039. }
  1040. <Popconfirm
  1041. title="是否删除?"
  1042. onConfirm={() => {
  1043. this.confirmDeletNew(record)
  1044. }}
  1045. okText="删除"
  1046. cancelText="不删除"
  1047. >
  1048. <Button
  1049. onClick={(e) => {
  1050. e.stopPropagation()
  1051. }}
  1052. style={{
  1053. marginLeft: '10px',
  1054. color: '#ffffff',
  1055. background: '#f00',
  1056. border: 'none',
  1057. }}
  1058. >
  1059. 删除
  1060. </Button>
  1061. </Popconfirm>
  1062. </div>
  1063. )
  1064. },
  1065. },
  1066. ]
  1067. })
  1068. }else{
  1069. this.setState({
  1070. ContactsListsNew: [
  1071. {
  1072. title: '供应商名称',
  1073. dataIndex: 'companyName',
  1074. key: 'companyName',
  1075. render: (text, record, index) => {
  1076. if (text) {
  1077. return <span>{text}</span>
  1078. }
  1079. },
  1080. },
  1081. {
  1082. title: '单价(万元)',
  1083. dataIndex: 'unitPrice',
  1084. key: 'unitPrice',
  1085. render: (text, record) => {
  1086. if (text) {
  1087. return <span>
  1088. {
  1089. isNaN(text) ? text : parseFloat(text)
  1090. }
  1091. </span>
  1092. }
  1093. },
  1094. },
  1095. {
  1096. title: '数量',
  1097. dataIndex: 'quantity',
  1098. key: 'quantity',
  1099. render: (text, record) => {
  1100. if (text) {
  1101. return <span>{text}</span>
  1102. }
  1103. },
  1104. },
  1105. {
  1106. title: '总价(万元)',
  1107. dataIndex: 'totalAmount',
  1108. key: 'totalAmount',
  1109. render: (text, record) => {
  1110. return <span>
  1111. {
  1112. isNaN(text) ? text : parseFloat(text)
  1113. }
  1114. </span>
  1115. },
  1116. },
  1117. {
  1118. title: '备注',
  1119. dataIndex: 'remarks',
  1120. key: 'remarks',
  1121. },
  1122. {
  1123. title: '操作',
  1124. dataIndex: 'action',
  1125. key: 'action',
  1126. render: (text, record) => {
  1127. return (
  1128. <div>
  1129. {/*外包审核通过后,咨询师/咨询经理可申请付款*/}
  1130. {/*存在支付节点时不显示第三方的申请付款*/}
  1131. {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
  1132. {
  1133. <Button disabled={
  1134. !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && this.props.dataSource.length === 0)
  1135. } type="primary" onClick={() => {
  1136. this.setState({
  1137. previewPayVisible: true,
  1138. previewPayInfor: record,
  1139. })
  1140. }}>
  1141. 申请付款
  1142. </Button>
  1143. }
  1144. <Popconfirm
  1145. title="是否删除?"
  1146. onConfirm={() => {
  1147. this.confirmDeletNew(record)
  1148. }}
  1149. okText="删除"
  1150. cancelText="不删除"
  1151. >
  1152. <Button
  1153. onClick={(e) => {
  1154. e.stopPropagation()
  1155. }}
  1156. style={{
  1157. marginLeft: '10px',
  1158. color: '#ffffff',
  1159. background: '#f00',
  1160. border: 'none',
  1161. }}
  1162. >
  1163. 删除
  1164. </Button>
  1165. </Popconfirm>
  1166. </div>
  1167. )
  1168. },
  1169. },
  1170. ]
  1171. })
  1172. }
  1173. }else if(projectType === 3){ //3审计
  1174. this.setState({
  1175. ContactsListsNew: [
  1176. {
  1177. title: '供应商名称',
  1178. dataIndex: 'companyName',
  1179. key: 'companyName',
  1180. render: (text, record, index) => {
  1181. if (text) {
  1182. return <span>{text}</span>
  1183. }
  1184. },
  1185. },
  1186. {
  1187. title: '单价(万元)',
  1188. dataIndex: 'unitPrice',
  1189. key: 'unitPrice',
  1190. render: (text, record) => {
  1191. if (text) {
  1192. return <span>
  1193. {
  1194. isNaN(text) ? text : parseFloat(text)
  1195. }
  1196. </span>
  1197. }
  1198. },
  1199. },
  1200. {
  1201. title: '数量',
  1202. dataIndex: 'quantity',
  1203. key: 'quantity',
  1204. render: (text, record) => {
  1205. if (text) {
  1206. return <span>{text}</span>
  1207. }
  1208. },
  1209. },
  1210. {
  1211. title: '总价(万元)',
  1212. dataIndex: 'totalAmount',
  1213. key: 'totalAmount',
  1214. render: (text, record) => {
  1215. return <span>
  1216. {
  1217. isNaN(text) ? text : parseFloat(text)
  1218. }
  1219. </span>
  1220. },
  1221. },
  1222. {
  1223. title: '审计',
  1224. dataIndex: 'audit',
  1225. key: 'audit',
  1226. render: (text, record) => {
  1227. if (text) {
  1228. return <span>{text===0?'无审计':text===1?'年审':'专审'}</span>
  1229. }
  1230. },
  1231. },
  1232. {
  1233. title: '公司资产(万元)',
  1234. dataIndex: 'assets',
  1235. key: 'assets',
  1236. render: (text, record) => {
  1237. if (text) {
  1238. return <span>{text}</span>
  1239. }
  1240. },
  1241. },
  1242. {
  1243. title: '收入(万元)',
  1244. dataIndex: 'income',
  1245. key: 'income',
  1246. render: (text, record) => {
  1247. return <span>
  1248. {
  1249. isNaN(text) ? text : parseFloat(text)
  1250. }
  1251. </span>
  1252. },
  1253. },
  1254. {
  1255. title: '操作',
  1256. dataIndex: 'action',
  1257. key: 'action',
  1258. render: (text, record) => {
  1259. return (
  1260. <div>
  1261. {/*外包审核通过后,咨询师/咨询经理可申请付款*/}
  1262. {/*存在支付节点时不显示第三方的申请付款*/}
  1263. {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
  1264. {
  1265. <Button disabled={
  1266. !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && this.props.dataSource.length === 0)
  1267. } type="primary" onClick={() => {
  1268. this.setState({
  1269. previewPayVisible: true,
  1270. previewPayInfor: record,
  1271. })
  1272. }}>
  1273. 申请付款
  1274. </Button>
  1275. }
  1276. <Popconfirm
  1277. title="是否删除?"
  1278. onConfirm={() => {
  1279. this.confirmDeletNew(record)
  1280. }}
  1281. okText="删除"
  1282. cancelText="不删除"
  1283. >
  1284. <Button
  1285. onClick={(e) => {
  1286. e.stopPropagation()
  1287. }}
  1288. style={{
  1289. marginLeft: '10px',
  1290. color: '#ffffff',
  1291. background: '#f00',
  1292. border: 'none',
  1293. }}
  1294. >
  1295. 删除
  1296. </Button>
  1297. </Popconfirm>
  1298. </div>
  1299. )
  1300. },
  1301. },
  1302. ]
  1303. })
  1304. }
  1305. this.setState({
  1306. //付款节点表头
  1307. PayNodeTableColunms: [
  1308. {
  1309. title: '供应商名称',
  1310. dataIndex: 'companyName',
  1311. key: 'companyName',
  1312. render: (text, record, index) => {
  1313. if (text) {
  1314. return <span>{text}</span>
  1315. }
  1316. },
  1317. },
  1318. {
  1319. title: '付款科目',
  1320. dataIndex: 'dunType',
  1321. key: 'dunType',
  1322. render: (text, record) => {
  1323. if (text) {
  1324. return <span>{text}</span>
  1325. }
  1326. },
  1327. },
  1328. {
  1329. title: '付款时间',
  1330. dataIndex: 'partyTimes',
  1331. key: 'partyTimes',
  1332. render: (text, record) => {
  1333. return <span>{text ? text : '/'}</span>
  1334. },
  1335. },
  1336. {
  1337. title: '数量',
  1338. dataIndex: 'quantity',
  1339. key: 'quantity',
  1340. render: (text, record) => {
  1341. if (text) {
  1342. return <span>{text}</span>
  1343. }
  1344. },
  1345. },
  1346. {
  1347. title: '总价(万元)',
  1348. dataIndex: 'totalAmount',
  1349. key: 'totalAmount',
  1350. render: (text, record) => {
  1351. return <span>
  1352. {
  1353. isNaN(text) ? text : parseFloat(text)
  1354. }
  1355. </span>
  1356. },
  1357. },
  1358. {
  1359. title: '已付',
  1360. dataIndex: 'partyAmount',
  1361. key: 'partyAmount',
  1362. render: (text, record) => {
  1363. if (text) {
  1364. return <span>{text}</span>
  1365. }
  1366. },
  1367. },
  1368. {
  1369. title: '操作',
  1370. dataIndex: 'dels',
  1371. key: 'dels',
  1372. render: (text, record, index) => {
  1373. return (
  1374. <div>
  1375. <Popconfirm
  1376. title="是否删除?"
  1377. onConfirm={() => {
  1378. this.payNodeConfirmDeletNew(record)
  1379. }}
  1380. okText="删除"
  1381. cancelText="不删除"
  1382. >
  1383. <Button
  1384. onClick={(e) => {
  1385. e.stopPropagation()
  1386. }}
  1387. style={{
  1388. marginRight: '10px',
  1389. color: '#ffffff',
  1390. background: '#f00',
  1391. border: 'none',
  1392. }}
  1393. >
  1394. 删除
  1395. </Button>
  1396. </Popconfirm>
  1397. </div>
  1398. )
  1399. },
  1400. },
  1401. ],
  1402. })
  1403. },
  1404. setColor() {
  1405. $('.userName span').after(
  1406. "(<span class='ruanzhu'>软著数</span>/<span class='xiazheng'>下证数</span>)"
  1407. )
  1408. },
  1409. // 获取csort下的数据
  1410. getCsortData(cSort) {
  1411. return cuiJieDian.map((item) => {
  1412. if (item.value == cSort) {
  1413. this.setState({
  1414. paySubject: item.children,
  1415. })
  1416. }
  1417. })
  1418. },
  1419. async tableRowClick(record) {
  1420. this.state.RowData = record
  1421. let str = record.taskName
  1422. let test = str.indexOf('会员')
  1423. if (test == -1) {
  1424. this.setState({
  1425. isHuiyuan: false,
  1426. })
  1427. } else {
  1428. this.setState({
  1429. isHuiyuan: true,
  1430. })
  1431. }
  1432. if (record.taskName.substring(0, 5) === '软件著作权') {
  1433. this.setState({
  1434. speVisible: true,
  1435. id: record.id,
  1436. splitStatus: record.splitStatus,
  1437. splitSuper: record.splitSuper,
  1438. splitId: record.splitId,
  1439. dataArr: record,
  1440. commodityQuantity: record.commodityQuantity,
  1441. })
  1442. } else {
  1443. this.setState({
  1444. visible: true,
  1445. splitStatus: record.splitStatus,
  1446. splitSuper: record.splitSuper,
  1447. splitId: record.splitId,
  1448. })
  1449. }
  1450. this.setState({
  1451. projectType: record.projectType,
  1452. isIso: record.taskName.indexOf("贯标") !== -1,
  1453. orderNo: record.orderNo,
  1454. id:record.id,
  1455. tid:record.id,
  1456. })
  1457. await this.xiangqing(record.id);
  1458. // 获取Csort
  1459. await this.getCsortData(localStorage.getItem('cSort'))
  1460. this.xiangqings(record.orderNo)
  1461. this.xiangmu(record.orderNo)
  1462. this.loaduserss(record)
  1463. // 获取第三方信息表格
  1464. // this.thirdTable(record.id);
  1465. //获取支付节点信息表格
  1466. // this.payNodeTable(record.id);
  1467. //查看外包状态日志
  1468. this.getSelectOutsourceLog(record.id);
  1469. this.projectTypeTabContent(record.projectType);
  1470. },
  1471. //点击修改项目详情
  1472. tijiaoOk(status='',fn) {
  1473. let attachmentUrls = []
  1474. if (this.state.attachmentUrl.length) {
  1475. let picArr = []
  1476. this.state.attachmentUrl.map(function (item) {
  1477. if (item.response && item.response.data && item.response.data.length) {
  1478. picArr.push(item.response.data)
  1479. }
  1480. })
  1481. attachmentUrls = picArr.join(',')
  1482. }
  1483. this.setState({
  1484. loading: true,
  1485. })
  1486. $.ajax({
  1487. method: 'POST',
  1488. dataType: 'json',
  1489. crossDomain: false,
  1490. url: globalConfig.context + '/api/admin/orderProject/updateOrderTask',
  1491. data: {
  1492. id: this.state.id, //项目编号
  1493. orderNo: this.state.orderNo, //订单编号
  1494. projectStatus: status || this.state.projectStatus, //项目状态
  1495. taskStatus: this.state.taskStatus, //项目状态
  1496. taskComment: this.state.taskComment, //说明
  1497. startDate: this.state.startDate, //启动日期
  1498. endDate: this.state.endDate, //结束日期
  1499. acceptDate: this.state.acceptDate, //受理日期
  1500. reviewDate: this.state.reviewDate, //评审日期
  1501. publicityDate: this.state.publicityDate, //公示日期
  1502. licenceDate: this.state.licenceDate, //发证日期
  1503. attachmentUrl: attachmentUrls.length ? attachmentUrls : '', //附件
  1504. contacts: this.state.contacts, //联系人
  1505. contactMobile: this.state.contactMobile, //联系人电话
  1506. legalPerson: this.state.legalPerson, //法人
  1507. legalPersonTel: this.state.legalPersonTel, //法人电话
  1508. certificateNumber: this.state.certificateNumber, //证书编号
  1509. status: this.state.status, //状态
  1510. formRetrieve: this.state.formRetrieve, //满意度表格
  1511. taskRefund: this.state.taskRefund, //退单
  1512. refundContent: this.state.refundContent, //退单信息
  1513. retrieveContent: this.state.retrieveContent, //回收信息
  1514. locationProvince: this.state.ProvinceCity[0],
  1515. locationCity: this.state.ProvinceCity[1],
  1516. locationArea: this.state.ProvinceCity[2],
  1517. postalAddress: this.state.postalAddress, //详细地址
  1518. arrivalMoney: this.state.arrivalMoney, //是否到款
  1519. setUpAmount: this.state.setUpAmount, //立项金额
  1520. declareUser: this.state.declareUser, //账号
  1521. declarePwd: this.state.declarePwd, //密码
  1522. outsourceName: this.state.outsourceName, //外包公司
  1523. outsourcePrice: this.state.outsourcePrice, //外包价格
  1524. declarationBatch: this.state.declarationBatch,
  1525. specialComment: this.state.specialComment || undefined,//特别说明
  1526. setUpStatus: typeof this.state.setUpStatus === 'number' ? this.state.setUpStatus : undefined,//是否立项
  1527. setUpTime: this.state.setUpTime || undefined,//立项时间
  1528. highTechStatus: typeof this.state.highTechStatus === 'number' ? this.state.highTechStatus : undefined,//是否高新
  1529. spotCheckStatus: typeof this.state.spotCheckStatus === 'number' ? this.state.spotCheckStatus : undefined,//是否抽查 0否 1未通过 2通过
  1530. urgentDay: typeof this.state.urgentDay === 'number' ? this.state.urgentDay : undefined,//加急天数
  1531. ifMaterial: typeof this.state.ifMaterial === 'number' ? this.state.ifMaterial : undefined,//有无材料
  1532. acceptCount: this.state.acceptCount || undefined,
  1533. certificatesCount: this.state.certificatesCount || undefined,
  1534. rejectCount: this.state.rejectCount || undefined,
  1535. certificationCorporate: this.state.certificationCorporate || undefined,//认证费公司
  1536. certificationFee: this.state.certificationFee,//认证费
  1537. ifCertificationFee: this.state.ifCertificationFee,//是否包含认证费
  1538. },
  1539. }).done(
  1540. function (data) {
  1541. this.setState({
  1542. loading: false,
  1543. })
  1544. if (!data.error.length) {
  1545. message.success('保存成功!')
  1546. fn ? fn():this.visitCancel();
  1547. } else {
  1548. message.warning(data.error[0].message)
  1549. }
  1550. }.bind(this)
  1551. )
  1552. },
  1553. //点击修改项目详情
  1554. tianjiaOk() {
  1555. if (this.state.attachmentUrl.length) {
  1556. let picArr = []
  1557. this.state.attachmentUrl.map(function (item) {
  1558. if (item.response && item.response.data && item.response.data.length) {
  1559. picArr.push(item.response.data)
  1560. }
  1561. })
  1562. }
  1563. this.setState({
  1564. loading: true,
  1565. })
  1566. $.ajax({
  1567. method: 'POST',
  1568. dataType: 'json',
  1569. crossDomain: false,
  1570. url: globalConfig.context + '/api/admin/orderProject/addTaskHours',
  1571. data: {
  1572. taskId: this.state.taskId, //项目编号
  1573. hours: this.state.hours, //工时
  1574. remarks: this.state.remarks, //说明
  1575. taskDate: this.state.taskDate, //日期
  1576. taskComment: this.state.taskComment, //说明
  1577. },
  1578. }).done(
  1579. function (data) {
  1580. this.setState({
  1581. loading: false,
  1582. })
  1583. if (!data.error.length) {
  1584. message.success('保存成功!')
  1585. this.noCancel()
  1586. } else {
  1587. message.warning(data.error[0].message)
  1588. }
  1589. }.bind(this)
  1590. )
  1591. },
  1592. //订单详情
  1593. xiangqing(id){
  1594. return $.ajax({
  1595. method: 'get',
  1596. dataType: 'json',
  1597. crossDomain: false,
  1598. url: globalConfig.context + '/api/admin/orderProject/orderTaskDetail',
  1599. data: {
  1600. id: id,
  1601. },
  1602. success: function (data) {
  1603. let thisdata = data.data
  1604. if (data.error.length || data.data.list == '') {
  1605. if (data.error && data.error.length) {
  1606. message.warning(data.error[0].message)
  1607. }
  1608. } else {
  1609. localStorage.setItem('cSort', thisdata.sort)
  1610. this.setState({
  1611. certificationCorporate: thisdata.certificationCorporate,//认证费公司
  1612. certificationFee: thisdata.certificationFee,//认证费
  1613. ifCertificationFee: thisdata.ifCertificationFee,//是否包含认证费
  1614. sort: thisdata.sort,
  1615. cSort: thisdata.sort,
  1616. id: thisdata.id, //ID
  1617. splitId: thisdata.splitId,//拆分序号
  1618. splitStatus: thisdata.splitStatus,//0未拆分 1已拆分
  1619. splitSuper: thisdata.splitSuper,//拆分前项目编号
  1620. orderNo: thisdata.orderNo, //订单编号
  1621. userName: thisdata.userName, //客户名称
  1622. taskName: thisdata.taskName, //项目名称
  1623. cname: thisdata.cname, //项目品类
  1624. contractNo: thisdata.contractNo, //合同编号
  1625. projectStatus: thisdata.projectStatus.toString(), //项目状态
  1626. taskStatus: thisdata.taskStatus.toString(), //项目状态
  1627. taskDate: thisdata.taskDate, //分配时间
  1628. taskComment: thisdata.taskComment, //说明
  1629. taskCommentData: thisdata.taskComment,
  1630. attachmentUrl: thisdata.attachmentUrl
  1631. ? splitUrl(
  1632. thisdata.attachmentUrl,
  1633. ',',
  1634. globalConfig.avatarHost + '/upload'
  1635. )
  1636. : [], //图片地址
  1637. salesmanName: thisdata.salesmanName, //订单负责人
  1638. startDate: thisdata.startDate, //启动日期
  1639. endDate: thisdata.endDate, //结束日期
  1640. acceptDate: thisdata.acceptDate, //受理日期
  1641. reviewDate: thisdata.reviewDate, //评审日期
  1642. publicityDate: thisdata.publicityDate, //公示日期
  1643. licenceDate: thisdata.licenceDate, //发证日期
  1644. contacts: thisdata.contacts, //联系人
  1645. contactMobile: thisdata.contactMobile, //联系人电话
  1646. legalPerson: thisdata.legalPerson, //法人
  1647. legalPersonTel: thisdata.legalPersonTel, //法人电话
  1648. certificateNumber: thisdata.certificateNumber, //证书编号
  1649. status: thisdata.status, //状态 0未开始 1已开始 2已暂停 3已完成 4已驳回 5已退单
  1650. formRetrieve: thisdata.formRetrieve, //满意度表格
  1651. taskRefund: thisdata.taskRefund, //退单
  1652. refundContent: thisdata.refundContent, //退单信息
  1653. retrieveContent: thisdata.retrieveContent, //回收信息
  1654. arrivalMoney: thisdata.arrivalMoney, //是否到款
  1655. setUpAmount: thisdata.setUpAmount, //立项金额
  1656. declareUser: thisdata.declareUser, //账号
  1657. declarePwd: thisdata.declarePwd, //密码
  1658. outsourceName: thisdata.outsourceName, //外包公司
  1659. outsourcePrice: thisdata.outsourcePrice, //外包价格
  1660. declarationBatch: thisdata.declarationBatch,
  1661. orderTaskOfficialCost: thisdata.officialCost, //官费 0无 1有
  1662. bpType:thisdata.bpType,//0 正常 1专利 2软著 3审计 4双软 5高新 6商标
  1663. specialComment: thisdata.specialComment,
  1664. urgentDay: thisdata.urgentDay, //有无材料
  1665. ifMaterial: thisdata.ifMaterial, //加急情况
  1666. spotCheckStatus: thisdata.spotCheckStatus,
  1667. setUpStatus: thisdata.setUpStatus,
  1668. setUpTime: thisdata.setUpTime,
  1669. highTechStatus: thisdata.highTechStatus,
  1670. acceptCount:thisdata.acceptCount, //受理数
  1671. certificatesCount:thisdata.certificatesCount, //授权数
  1672. rejectCount:thisdata.rejectCount, //驳回数
  1673. commodityQuantity:thisdata.commodityQuantity, //派单项目数
  1674. timeRecord: thisdata.timeRecord || '{}',//项目状态JSON
  1675. timeRecordparse: thisdata.timeRecord ? JSON.parse(thisdata.timeRecord) : {},//项目状态JSON
  1676. })
  1677. }
  1678. }.bind(this),
  1679. }).always(
  1680. function () {
  1681. this.setState({
  1682. loading: false,
  1683. })
  1684. }.bind(this)
  1685. )
  1686. },
  1687. //订单详情
  1688. xiangqings(orderNos) {
  1689. $.ajax({
  1690. method: 'get',
  1691. dataType: 'json',
  1692. crossDomain: false,
  1693. url: globalConfig.context + '/api/admin/newOrder/getOrderNewDetail',
  1694. data: {
  1695. orderNo: orderNos,
  1696. },
  1697. success: function (data) {
  1698. let thisdata = data.data
  1699. let ProvinceCityArr = []
  1700. let ProvinceS = thisdata.locationProvince //省
  1701. let citys = thisdata.locationCity //市
  1702. let Areas = thisdata.locationArea //区
  1703. ProvinceCityArr.push(ProvinceS, citys, Areas)
  1704. if (data.error.length || data.data.list == '') {
  1705. if (data.error && data.error.length) {
  1706. message.warning(data.error[0].message)
  1707. }
  1708. } else {
  1709. this.setState({
  1710. orderUid: thisdata.uid,
  1711. processStatus: thisdata.processStatus, //流程状态
  1712. liquidationStatus: thisdata.liquidationStatus, //结算状态
  1713. approval: thisdata.approval, //特批状态
  1714. orderRemarks: thisdata.orderRemarks, //订单留言
  1715. salesmanName: thisdata.salesmanName, //营销员名称
  1716. salesmanMobile: thisdata.salesmanMobile, //营销员电话
  1717. financeName: thisdata.financeName, //财务名称
  1718. financeMobile: thisdata.financeMobile, //财务电话
  1719. oldSalesmanName: thisdata.oldSalesmanName, //营销员名称
  1720. oldSalesmanMobile: thisdata.oldSalesmanMobile, //营销员电话
  1721. nowFinance: thisdata.nowFinance, //财务名称
  1722. nowFinanceMobile: thisdata.nowFinanceMobile, //财务电话
  1723. depName: thisdata.depName, //订单部门
  1724. ProvinceCity: ProvinceCityArr[0] === null ? [] : ProvinceCityArr,
  1725. postalAddress: thisdata.postalAddress, //详细地址
  1726. deleteSign:thisdata.deleteSign,
  1727. })
  1728. }
  1729. }.bind(this),
  1730. }).always(
  1731. function () {
  1732. this.setState({
  1733. loading: false,
  1734. })
  1735. }.bind(this)
  1736. )
  1737. },
  1738. //项目列表
  1739. xiangmu(orderNos) {
  1740. $.ajax({
  1741. method: 'get',
  1742. dataType: 'json',
  1743. crossDomain: false,
  1744. url: globalConfig.context + '/api/admin/newOrder/getOrderTask',
  1745. data: {
  1746. orderNo: orderNos,
  1747. },
  1748. success: function (data) {
  1749. let theArr = []
  1750. if (data.error.length || data.data.list == '') {
  1751. if (data.error && data.error.length) {
  1752. message.warning(data.error[0].message)
  1753. }
  1754. } else {
  1755. for (let i = 0; i < data.data.length; i++) {
  1756. let thisdata = data.data[i]
  1757. thisdata.key = i;
  1758. thisdata.sort = thisdata.cSort;
  1759. theArr.push(thisdata);
  1760. }
  1761. }
  1762. this.setState({
  1763. dataSourceX: theArr,
  1764. type: theArr[0].type,
  1765. })
  1766. }.bind(this),
  1767. }).always(
  1768. function () {
  1769. this.setState({
  1770. loading: false,
  1771. })
  1772. }.bind(this)
  1773. )
  1774. },
  1775. //导出
  1776. exportExec() {
  1777. let departmentName = '',
  1778. depart = this.state.departmentArr || []
  1779. depart.map((item) => {
  1780. if (this.state.departmentId == item.id) {
  1781. departmentName = item.name
  1782. return
  1783. }
  1784. })
  1785. let data = {
  1786. departmentId: this.state.departmentId,
  1787. departmentName: departmentName,
  1788. salesName: this.state.orderRefundSearch, //订单负责人
  1789. startTime: this.state.releaseDate[0],
  1790. endTime: this.state.releaseDate[1],
  1791. grantStatus: this.state.grantStatus,
  1792. }
  1793. window.location.href =
  1794. globalConfig.context +
  1795. '/api/admin/orderProject/exporProjectList?' +
  1796. $.param(data)
  1797. },
  1798. //关闭详情
  1799. visitCancel() {
  1800. this.setState({
  1801. visible: false,
  1802. speVisible: false,
  1803. activeKey: '1',
  1804. updataSwicth: false,
  1805. projectSituationVisible: false,
  1806. })
  1807. this.reset()
  1808. },
  1809. visitOk() {
  1810. this.setState({
  1811. visible: false,
  1812. speVisible: false,
  1813. })
  1814. this.reset()
  1815. },
  1816. closeDesc(e, s) {
  1817. this.state.showDesc = e
  1818. if (s) {
  1819. this.loadData(this.state.page)
  1820. }
  1821. },
  1822. closeAssign(e, s) {
  1823. this.state.roleName = ''
  1824. this.state.assignVisible = e
  1825. if (s) {
  1826. this.loadData(this.state.page)
  1827. }
  1828. },
  1829. //添加工时
  1830. okCancel(record) {
  1831. this.setState({
  1832. lookVisible: true,
  1833. taskId: record.id,
  1834. })
  1835. },
  1836. //测试
  1837. getOrgCodeUrl(e) {
  1838. this.setState({ orgCodeUrl: e })
  1839. },
  1840. //查看下证信息
  1841. loaduserss(record) {
  1842. $.ajax({
  1843. method: 'get',
  1844. dataType: 'json',
  1845. crossDomain: false,
  1846. url: globalConfig.context + '/api/admin/orderProject/selectTaskProgress',
  1847. data: {
  1848. tid: record.id,
  1849. },
  1850. success: function (data) {
  1851. let theArr = []
  1852. let thisData = []
  1853. if (!thisData) {
  1854. if (data.error && data.error.length) {
  1855. message.warning(data.error[0].message)
  1856. }
  1857. thisData = {}
  1858. } else {
  1859. for (let i = 0; i < data.data.length; i++) {
  1860. thisData = data.data[i]
  1861. theArr.push({
  1862. num: i + 1,
  1863. key: i,
  1864. id: thisData.id, //编号
  1865. alreadyNumber: thisData.alreadyNumber, //下证数
  1866. licenceTimes: thisData.licenceTimes, //下证时间
  1867. notCount: thisData.notCount, //未下证数
  1868. flag: true,
  1869. })
  1870. }
  1871. this.setState({
  1872. contactList: theArr,
  1873. tid: record.id,
  1874. })
  1875. }
  1876. }.bind(this),
  1877. }).always(
  1878. function () {
  1879. this.setState({
  1880. loading: false,
  1881. })
  1882. }.bind(this)
  1883. )
  1884. },
  1885. // 拆分详细
  1886. showRes(record) {
  1887. this.setState({
  1888. resVisible: true,
  1889. resRecord: record,
  1890. })
  1891. },
  1892. resCancel() {
  1893. this.setState({
  1894. resVisible: false,
  1895. })
  1896. },
  1897. //下证信息保存
  1898. contactSave(record) {
  1899. if (!record.licenceTimes) {
  1900. message.warning('下证日期不能为空')
  1901. return
  1902. }
  1903. if (!record.alreadyNumber) {
  1904. message.warning('下证数量不能为空')
  1905. return
  1906. }
  1907. this.setState({
  1908. loading: true,
  1909. })
  1910. $.ajax({
  1911. url: globalConfig.context + '/api/admin/orderProject/createTaskProgress',
  1912. method: 'post',
  1913. data: {
  1914. taskId: this.state.id,
  1915. licenceTimes: record.licenceTimes,
  1916. alreadyNumber: record.alreadyNumber,
  1917. },
  1918. }).done(
  1919. function (data) {
  1920. this.setState({
  1921. loading: false,
  1922. })
  1923. if (!data.error.length) {
  1924. message.success('保存成功!')
  1925. record.flag = true
  1926. this.loaduserss(this.state.dataArr)
  1927. } else {
  1928. message.warning(data.error[0].message)
  1929. }
  1930. }.bind(this)
  1931. )
  1932. },
  1933. //下证信息删除
  1934. contactDele(record) {
  1935. this.setState({
  1936. loading: true,
  1937. })
  1938. $.ajax({
  1939. url: globalConfig.context + '/api/admin/orderProject/delectTaskProgress',
  1940. method: 'post',
  1941. data: {
  1942. id: record.id,
  1943. },
  1944. }).done(
  1945. function (data) {
  1946. this.setState({
  1947. loading: false,
  1948. })
  1949. if (!data.error.length) {
  1950. this.loaduserss(this.state.dataArr)
  1951. } else {
  1952. message.warning(data.error[0].message)
  1953. }
  1954. }.bind(this)
  1955. )
  1956. },
  1957. //点击新增下证信息
  1958. addcontact() {
  1959. this.state.contactList.push({
  1960. num: this.state.contactList.length + 1,
  1961. key: this.state.contactList.length,
  1962. licenceTimes: '',
  1963. alreadyNumber: '',
  1964. notCount: '',
  1965. dels: '',
  1966. flag: false,
  1967. aflag: false,
  1968. })
  1969. this.setState({
  1970. contactList: this.state.contactList,
  1971. })
  1972. },
  1973. //删除下证信息
  1974. confirmDelet(record) {
  1975. this.state.contactList.splice(record.key, 1)
  1976. this.setState({
  1977. contactList: this.state.contactList,
  1978. })
  1979. if (record.id) {
  1980. this.contactDele(record)
  1981. }
  1982. },
  1983. caozuorizhi() {
  1984. this.setState({
  1985. visibleA: true,
  1986. })
  1987. $.ajax({
  1988. method: 'get',
  1989. dataType: 'json',
  1990. crossDomain: false,
  1991. url: globalConfig.context + '/api/admin/orderProject/TaskLogList',
  1992. data: {
  1993. id: this.state.id,
  1994. },
  1995. success: function (data) {
  1996. let theArr = []
  1997. if (data.error.length || data.data.list == '') {
  1998. if (data.error && data.error.length) {
  1999. message.warning(data.error[0].message)
  2000. }
  2001. } else {
  2002. for (let i = 0; i < data.data.length; i++) {
  2003. let thisdata = data.data[i]
  2004. theArr.push({
  2005. key: i,
  2006. id: thisdata.id, //日志ID
  2007. content: thisdata.content, //流程
  2008. taskId: thisdata.taskId, //项目ID
  2009. aName: thisdata.aName, //负责人
  2010. createTimes: thisdata.createTimes, //时间
  2011. })
  2012. }
  2013. }
  2014. this.setState({
  2015. dataSourceA: theArr,
  2016. })
  2017. }.bind(this),
  2018. }).always(
  2019. function () {
  2020. this.setState({
  2021. loading: false,
  2022. })
  2023. }.bind(this)
  2024. )
  2025. },
  2026. //关闭操作工时
  2027. visitCancelA() {
  2028. this.setState({
  2029. visibleA: false,
  2030. })
  2031. },
  2032. nextCancel() {
  2033. this.setState({
  2034. addnextVisible: false,
  2035. displayFees: 'none',
  2036. officialCost: '', //是否有官费
  2037. costReduction: '', //是否有费减
  2038. })
  2039. },
  2040. //点击打卡项目详情
  2041. tableRowClickX(record) {
  2042. if (record.type == '1') {
  2043. this.setState({
  2044. displayFees: 'block',
  2045. costReduction: record.costReduction,
  2046. officialCost: record.officialCost,
  2047. })
  2048. }
  2049. this.setState({
  2050. jid: record.id, //项目ID
  2051. kid: record.commodityId, //商品ID
  2052. commodityName: record.commodityName, //金额
  2053. commodityPrice: record.commodityPrice, //金额
  2054. commodityQuantity: record.commodityQuantity, //数量
  2055. taskComment: record.taskComment, //备注
  2056. taskCommentData: record.taskComment,
  2057. main: record.main.toString(), //是否为主要
  2058. addnextVisible: true,
  2059. dataInfor:record,
  2060. addState: 0,
  2061. })
  2062. },
  2063. //关闭添加工时
  2064. noCancel() {
  2065. this.setState({
  2066. lookVisible: false,
  2067. })
  2068. this.reset()
  2069. },
  2070. search() {
  2071. this.loadData()
  2072. },
  2073. reset(flag) {
  2074. if (flag) {
  2075. this.setState({
  2076. nameSearch : '',
  2077. orderNoSearch : '',
  2078. contractNoSearch : undefined,
  2079. taskNoSearch : '',
  2080. departmenttSearch : undefined,
  2081. projectStatusSearch : [], //项目状态
  2082. approvalSearch : undefined,
  2083. outsourceStatusSearch : [],
  2084. })
  2085. }
  2086. this.setState({
  2087. oldInfor: {},
  2088. outsourceRemarks: undefined,
  2089. thirdInfoList: [],
  2090. payNodeList: [],
  2091. orderNo: '',//订单编号
  2092. tid: '',
  2093. id : '', //项目编号
  2094. projectStatus : undefined, //项目状态
  2095. deleteSign:undefined,
  2096. taskStatuSearch : undefined, //项目状态
  2097. startDate : '', //启动日期
  2098. endDate : '', //结束日期
  2099. acceptDate : '', //受理日期
  2100. reviewDate : '', //评审日期
  2101. publicityDate : '', //公示日期
  2102. licenceDate : '', //发证日期
  2103. partyTimes : '', //付款时间
  2104. attachmentUrl: [], //附件
  2105. contacts : '', //联系人
  2106. contactMobile : '', //联系人电话
  2107. legalPerson : '', //法人
  2108. legalPersonTel : '', //法人电话
  2109. taskId : '', //项目编号
  2110. hours : '', //工时
  2111. remarks : '', //说明
  2112. taskDate : '', //日期
  2113. taskComment : '', //说明
  2114. taskCommentData: '',
  2115. releaseDate : [],
  2116. outsourceName : '',
  2117. outsourcePrice : undefined,
  2118. distribution : undefined,
  2119. companyName : undefined,
  2120. unitPrice : undefined,
  2121. unitNumber : undefined,
  2122. amount : undefined,
  2123. pictureUrl : [],
  2124. allTotalAmount: 0,
  2125. urgentDay: '', //有无材料
  2126. ifMaterial: '', //加急情况
  2127. specialComment: '', //特别说明
  2128. spotCheckStatus: '',
  2129. setUpStatus: '',
  2130. setUpTime: '',
  2131. highTechStatus: '',
  2132. },()=>{
  2133. this.loadData(flag ? '' : this.state.page)
  2134. })
  2135. },
  2136. searchSwitch() {
  2137. this.setState({
  2138. searchMore: !this.state.searchMore,
  2139. })
  2140. },
  2141. //部门
  2142. departmentList() {
  2143. this.setState({
  2144. loading: true,
  2145. })
  2146. $.ajax({
  2147. method: 'get',
  2148. dataType: 'json',
  2149. crossDomain: false,
  2150. url: globalConfig.context + '/api/admin/organization/selectSuperId',
  2151. data: {},
  2152. success: function (data) {
  2153. let thedata = data.data
  2154. let theArr = []
  2155. if (!thedata) {
  2156. if (data.error && data.error.length) {
  2157. message.warning(data.error[0].message)
  2158. }
  2159. thedata = {}
  2160. } else {
  2161. thedata.map(function (item, index) {
  2162. theArr.push({
  2163. key: index,
  2164. name: item.name,
  2165. id: item.id,
  2166. })
  2167. })
  2168. }
  2169. this.setState({
  2170. departmentArr: theArr,
  2171. })
  2172. }.bind(this),
  2173. }).always(
  2174. function () {
  2175. this.setState({
  2176. loading: false,
  2177. })
  2178. }.bind(this)
  2179. )
  2180. },
  2181. changeList(arr) {
  2182. const newArr = []
  2183. this.state.columns.forEach((item) => {
  2184. arr.forEach((val) => {
  2185. if (val === item.title) {
  2186. newArr.push(item)
  2187. }
  2188. })
  2189. })
  2190. this.setState({
  2191. changeList: newArr,
  2192. })
  2193. },
  2194. timeClose() {
  2195. this.setState({
  2196. timeVisible: false,
  2197. })
  2198. },
  2199. timeDetail(record) {
  2200. console.log(record)
  2201. this.setState({
  2202. loading: true,
  2203. recordHour: record.hours,
  2204. })
  2205. $.ajax({
  2206. method: 'get',
  2207. dataType: 'json',
  2208. crossDomain: false,
  2209. url:
  2210. globalConfig.context + '/api/admin/orderProject/taskHoursDetailsList',
  2211. data: {
  2212. taskId: record.id,
  2213. },
  2214. success: function (data) {
  2215. if (data.error && data.error.length) {
  2216. message.warning(data.error[0].message)
  2217. } else {
  2218. this.setState({
  2219. dataSourceTime: data.data,
  2220. })
  2221. console.log(this.state.dataSourceTime)
  2222. }
  2223. }.bind(this),
  2224. }).always(
  2225. function () {
  2226. this.setState({
  2227. loading: false,
  2228. })
  2229. }.bind(this)
  2230. )
  2231. },
  2232. showDeleteConfirm(num, fn) {
  2233. let text = getProjectName(num)
  2234. confirm({
  2235. title: <p style={{ fontSize: 16, fontWeight: 900 }}>注意</p>,
  2236. content: (
  2237. <p style={{ fontWeight: 900, color: 'red' }}>
  2238. 当前的项目状态为{text},保存后将触发对应的催款节点!!!您确定保存?
  2239. </p>
  2240. ),
  2241. okText: '确定',
  2242. okType: 'danger',
  2243. cancelText: '取消',
  2244. onOk() {
  2245. fn()
  2246. },
  2247. onCancel() {},
  2248. })
  2249. },
  2250. // 项目发起外包
  2251. sureOut(startType) {
  2252. if (this.state.startType !== 0 && this.state.startType !== 1) {
  2253. message.warning('请选择类型')
  2254. return
  2255. }
  2256. //0正常 1专利 2软著 3审计
  2257. if (this.state.projectType === 1) {
  2258. //专利
  2259. if (this.state.patentType === -1) {
  2260. message.warning('请选择专利类型')
  2261. return
  2262. }
  2263. if (this.state.patentNameType === -1) {
  2264. message.warning('请选择专利类型名称')
  2265. return
  2266. }
  2267. if (this.state.patentNameType == 3) {
  2268. if (!this.state.patentName) {
  2269. message.warning('请填写专利名称')
  2270. return
  2271. }
  2272. }
  2273. }
  2274. if (!this.state.outsourceRemarks) {
  2275. message.warning('备注不能为空')
  2276. return
  2277. }
  2278. //refundStatus 0-待审核 ,1-审核通过,2-审核拒绝
  2279. //类型为供应商时不需要发起原因
  2280. //this.state.startType 0外包 1供应商
  2281. if(!this.state.reason && (this.state.refundStatus === 2 || typeof this.state.refundStatus === 'undefined') && this.state.startType !== 1){
  2282. message.warning('发起原因不能为空')
  2283. return
  2284. }
  2285. // if (!this.state.pictureUrl && !Array.isArray(this.state.pictureUrl)) {
  2286. // message.warning('合同扫描件不能为空')
  2287. // return
  2288. // }
  2289. // if(this.state.pictureUrl.length === 0){
  2290. // message.warning('合同扫描件不能为空')
  2291. // return
  2292. // }
  2293. let _this = this;
  2294. let ajaxObj = null;
  2295. confirm({
  2296. title: startType === 0 ? '确定要发起外包吗?' : '确定要提交供应商信息吗?',
  2297. content: startType === 0 ? '高于总部价格,费用个人承担' : '确定提交供应商信息后,不可修改',
  2298. onOk() {
  2299. return new Promise((resolve, reject) => {
  2300. _this.setState({
  2301. sureOutLoading: true,
  2302. })
  2303. let data = {
  2304. tid: _this.state.id,
  2305. orderNo: _this.state.orderNo,
  2306. type: 1, //分类 0订单 1项目
  2307. startType: _this.state.startType, //支付类型 0外包 1供应商 false 0
  2308. companyName: _this.state.companyName,
  2309. amount: _this.state.amount,
  2310. outsourceRemarks: _this.state.outsourceRemarks,
  2311. unitNumber: _this.state.unitNumber,
  2312. unitPrice: _this.state.unitPrice,
  2313. id: _this.state.refundStatus === 2 ? _this.state.mid : undefined,//被拒绝外包申请时,需要传id
  2314. }
  2315. if(_this.state.startType !== 0){
  2316. data.actualOfficial = _this.state.containOfficialFees;//0实际已缴费 1实际未缴费
  2317. }
  2318. //refundStatus 0-待审核 ,1-审核通过,2-审核拒绝 审核被驳回时和第一次发起外包时,要填写发起原因
  2319. //this.state.startType 0外包 1供应商
  2320. //类型为外包时不需要传 发起原因
  2321. if((_this.state.refundStatus === 2 || typeof _this.state.refundStatus === 'undefined') && _this.state.startType !== 1){
  2322. data.reason = _this.state.reason
  2323. }
  2324. if (_this.state.projectType === 1) {
  2325. data.patentType = _this.state.patentType;
  2326. data.patentNameType = _this.state.patentNameType;
  2327. if (_this.state.patentNameType == 3) {
  2328. data.patentName = _this.state.patentName;
  2329. }
  2330. }
  2331. if (_this.state.pictureUrl && Array.isArray(_this.state.pictureUrl) && _this.state.pictureUrl.length !== 0){
  2332. data.pictureUrl = _this.getUrl(_this.state.pictureUrl).length
  2333. ? _this.getUrl(_this.state.pictureUrl)
  2334. : ''
  2335. }
  2336. ajaxObj = $.ajax({
  2337. method: 'POST',
  2338. dataType: 'json',
  2339. crossDomain: false,
  2340. url:
  2341. globalConfig.context + '/api/admin/outsourceOrg/outsourceProjectAudit',
  2342. data: data,
  2343. }).done(
  2344. async function (data) {
  2345. _this.setState({
  2346. sureOutLoading: false,
  2347. })
  2348. if (!data.error.length) {
  2349. resolve();
  2350. message.success('提交成功!')
  2351. _this.waiDetail();
  2352. _this.thirdTable(_this.state.tid);
  2353. _this.getSelectOutsourceLog(_this.state.tid);
  2354. if(_this.state.paySubject.length === 0 ){
  2355. await _this.xiangqing(_this.state.tid);
  2356. // 获取Csort
  2357. await _this.getCsortData(localStorage.getItem('cSort'))
  2358. await _this.payNodeTable(_this.state.tid);
  2359. }else{
  2360. _this.payNodeTable(_this.state.tid)
  2361. }
  2362. } else {
  2363. message.warning(data.error[0].message);
  2364. _this.waiDetail();
  2365. _this.thirdTable(_this.state.tid);
  2366. _this.getSelectOutsourceLog(_this.state.tid);
  2367. reject();
  2368. }
  2369. }.bind(_this)
  2370. )
  2371. }).catch((err) => console.log(err));
  2372. },
  2373. onCancel() {
  2374. ajaxObj ? ajaxObj.abort() : '';
  2375. _this.setState({
  2376. sureOutLoading: false,
  2377. })
  2378. },
  2379. });
  2380. },
  2381. callback(e) {
  2382. this.setState({
  2383. activeKey: e,
  2384. })
  2385. if (e == 3) {
  2386. this.orderDetailData(this.state.orderNo)
  2387. this.xiangmu(this.state.orderNo)
  2388. this.jiedian(this.state.orderNo)
  2389. this.jiedianNew(this.state.orderNo)
  2390. }
  2391. },
  2392. getOrgCodeUrlWai(e) {
  2393. this.setState({ pictureUrl: e })
  2394. },
  2395. getUrl(url) {
  2396. let theorgCodeUrl = []
  2397. if (url.length) {
  2398. let picArr = []
  2399. url.map(function (item) {
  2400. if (item.response && item.response.data && item.response.data.length) {
  2401. picArr.push(item.response.data)
  2402. }
  2403. })
  2404. theorgCodeUrl = picArr.join(',')
  2405. }
  2406. return theorgCodeUrl
  2407. },
  2408. waiDetail() {
  2409. let url = window.location.href.substring(7)
  2410. this.setState({
  2411. waiDetailLoading: true,
  2412. })
  2413. let ajaxObj = $.ajax({
  2414. method: 'get',
  2415. dataType: 'json',
  2416. crossDomain: false,
  2417. url:
  2418. globalConfig.context + '/api/admin/outsourceOrg/orderOutsourceDtails',
  2419. data: {
  2420. tid: this.state.id,
  2421. orderNo: this.state.orderNo,
  2422. },
  2423. }).done(
  2424. function (data) {
  2425. if (!data.error.length && data.data) {
  2426. if(!isNaN(parseFloat(data.data.unitNumber))){
  2427. this.setState({
  2428. oldInfor: {
  2429. companyName:data.data.companyName,
  2430. unitPrice:data.data.unitPrice,
  2431. unitNumber:data.data.unitNumber,
  2432. amount:data.data.amount,
  2433. outsourceRemarks:data.data.outsourceRemarks,
  2434. refundStatus: data.data.refundStatus,
  2435. pictureUrl: data.data.pictureUrl
  2436. ? splitUrl(
  2437. data.data.pictureUrl,
  2438. ',',
  2439. globalConfig.avatarHost + '/upload',
  2440. url
  2441. )
  2442. : [], //图片地址
  2443. },
  2444. })
  2445. }else{
  2446. this.setState({
  2447. oldInfor: {},
  2448. })
  2449. }
  2450. this.setState({
  2451. containOfficialFees: data.data.actualOfficial,//官费类型 0实际已缴费 1实际未缴费
  2452. startType: data.data.startType, //类型
  2453. patentType: data.data.patentType, //专利类型
  2454. patentNameType: data.data.patentNameType, //专利名称类型
  2455. patentName: data.data.patentName, //专利名称
  2456. outsourceRemarks: data.data.outsourceRemarks,
  2457. remarks: data.data.remarks,
  2458. companyName: data.data.companyName,
  2459. amount: data.data.amount,
  2460. mid: data.data.id,
  2461. unitPrice: data.data.unitPrice,
  2462. refundStatus: data.data.refundStatus,
  2463. unitNumber: data.data.unitNumber, //如果存在 证明是以前的旧数据
  2464. pictureUrl: data.data.pictureUrl
  2465. ? splitUrl(
  2466. data.data.pictureUrl,
  2467. ',',
  2468. globalConfig.avatarHost + '/upload',
  2469. url
  2470. )
  2471. : [], //图片地址
  2472. createTimes: data.data.createTimes,
  2473. auditTimes: data.data.auditTimes,
  2474. },()=>{
  2475. this.setState({
  2476. waiDetailLoading: false,
  2477. })
  2478. })
  2479. } else if (data.error && data.error.length) {
  2480. message.warning(data.error[0].message);
  2481. this.setState({
  2482. waiDetailLoading: false,
  2483. })
  2484. } else if (!data.data) {
  2485. this.setState({
  2486. refundStatus: undefined,
  2487. waiDetailLoading: false,
  2488. })
  2489. }
  2490. }.bind(this)
  2491. )
  2492. this.setState({
  2493. orderOutsourceDtailsAjaxObj: ajaxObj
  2494. })
  2495. },
  2496. rizhi() {
  2497. this.setState({
  2498. loading: true,
  2499. })
  2500. $.ajax({
  2501. method: 'get',
  2502. dataType: 'json',
  2503. crossDomain: false,
  2504. url: '/api/admin/newOrder/selectOrderLog',
  2505. data: {
  2506. orderNo: this.state.orderNo,
  2507. },
  2508. success: function (data) {
  2509. let theArr = []
  2510. let thisData = data.data
  2511. if (!thisData.length) {
  2512. if (data.error && data.error.length) {
  2513. message.warning(data.error[0].message)
  2514. }
  2515. thisData = {}
  2516. } else {
  2517. for (let i = 0; i < data.data.length; i++) {
  2518. let thisdata = data.data[i]
  2519. theArr.push({
  2520. processName: thisdata.processName,
  2521. adminName: thisdata.adminName,
  2522. createDate: thisdata.createDate,
  2523. remarks: thisdata.remarks,
  2524. })
  2525. }
  2526. }
  2527. this.setState({
  2528. dataSourceY: theArr,
  2529. })
  2530. }.bind(this),
  2531. }).always(
  2532. function () {
  2533. this.setState({
  2534. loading: false,
  2535. })
  2536. }.bind(this)
  2537. )
  2538. },
  2539. closeOrderLog() {
  2540. this.setState({
  2541. avisible: false,
  2542. })
  2543. },
  2544. getOrderLog() {
  2545. this.setState({
  2546. avisible: true,
  2547. })
  2548. this.rizhi()
  2549. },
  2550. async orderChange(key) {
  2551. this.setState({
  2552. activeKey: key,
  2553. })
  2554. if (key === '3') {
  2555. this.orderDetailData(this.state.orderNo)
  2556. this.xiangmu(this.state.orderNo)
  2557. this.jiedian(this.state.orderNo)
  2558. this.jiedianNew(this.state.orderNo)
  2559. }else if (key === '2') {
  2560. this.waiDetail();
  2561. this.thirdTable(this.state.tid);
  2562. if(this.state.paySubject.length === 0 ){
  2563. await this.xiangqing(this.state.tid);
  2564. // 获取Csort
  2565. await this.getCsortData(localStorage.getItem('cSort'))
  2566. await this.payNodeTable(this.state.tid);
  2567. }else{
  2568. await this.payNodeTable(this.state.tid)
  2569. }
  2570. this.getSelectOutsourceLog(this.state.tid);
  2571. }else if(key === "1"){
  2572. this.xiangqing(this.state.tid);
  2573. }
  2574. },
  2575. //节点列表
  2576. jiedian(orderNos) {
  2577. $.ajax({
  2578. method: 'get',
  2579. dataType: 'json',
  2580. crossDomain: false,
  2581. url: globalConfig.context + '/api/admin/newOrder/selectOrderDun',
  2582. data: {
  2583. orderNo: orderNos,
  2584. },
  2585. success: function (data) {
  2586. let theArr = []
  2587. let thisData = []
  2588. if (data.error.length || data.data.list == '') {
  2589. if (data.error && data.error.length) {
  2590. message.warning(data.error[0].message)
  2591. }
  2592. } else {
  2593. for (let i = 0; i < data.data.length; i++) {
  2594. thisData = data.data[i]
  2595. theArr.push({
  2596. key: i,
  2597. dunSubject: thisData.dunSubject
  2598. ? thisData.dunSubject.toString()
  2599. : '', //催款科目
  2600. id: thisData.id, //节点Id
  2601. money: thisData.money, //催款金额
  2602. dunStatus: thisData.dunStatus, //催款状态
  2603. })
  2604. }
  2605. this.setState({
  2606. jiedian: theArr,
  2607. })
  2608. }
  2609. }.bind(this),
  2610. })
  2611. },
  2612. jiedianNew(orderNos) {
  2613. $.ajax({
  2614. method: 'get',
  2615. dataType: 'json',
  2616. crossDomain: false,
  2617. url:
  2618. globalConfig.context + '/api/admin/newOrderDun/selectListNewOrderDun',
  2619. data: {
  2620. orderNo: orderNos,
  2621. },
  2622. success: function (data) {
  2623. if (data.error && data.error.length) {
  2624. message.warning(data.error[0].message)
  2625. } else {
  2626. let theArr = []
  2627. let thisData = []
  2628. let arr = data.data || []
  2629. let totalCui = 0
  2630. for (let i = 0; i < arr.length; i++) {
  2631. thisData = arr[i]
  2632. totalCui += +thisData.money
  2633. theArr.push({
  2634. key: i,
  2635. dunSubject: thisData.dunSubject
  2636. ? thisData.dunSubject.toString()
  2637. : '', //催款科目
  2638. id: thisData.id, //节点Id
  2639. tid: thisData.tid, //节点指定的第三方id
  2640. money: thisData.money, //催款金额
  2641. // orderNo: record ? record.orderNo : this.props.datauser.orderNo,
  2642. commodityName: thisData.commodityName,
  2643. projectType: thisData.projectType,
  2644. dunTypeName: thisData.dunTypeName,
  2645. status: thisData.status,
  2646. waitDay: thisData.waitDay,
  2647. effectiveCount: thisData.effectiveCount,
  2648. startDate: thisData.startDate,
  2649. dunType: thisData.dunType,
  2650. appropriationRatio: thisData.appropriationRatio,
  2651. customizeName: thisData.customizeName,
  2652. customizeTimes: thisData.customizeTimes,
  2653. })
  2654. }
  2655. if (!totalCui) {
  2656. totalCui = 0
  2657. }
  2658. totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6)
  2659. this.setState({
  2660. jiedianNew: theArr,
  2661. totalCui,
  2662. })
  2663. }
  2664. }.bind(this),
  2665. }).always(
  2666. function () {
  2667. this.setState({
  2668. loading: false,
  2669. })
  2670. }.bind(this)
  2671. )
  2672. },
  2673. orderDetailData(orderNos) {
  2674. this.setState({
  2675. loading: true,
  2676. })
  2677. $.ajax({
  2678. method: 'get',
  2679. dataType: 'json',
  2680. crossDomain: false,
  2681. url: globalConfig.context + '/api/admin/newOrder/getOrderNewDetail',
  2682. data: {
  2683. orderNo: orderNos,
  2684. },
  2685. success: function (data) {
  2686. if (data.error.length || data.data.list == '') {
  2687. if (data.error && data.error.length) {
  2688. message.warning(data.error[0].message)
  2689. this.setState({
  2690. loading: false,
  2691. })
  2692. }
  2693. } else {
  2694. let thisdata = data.data
  2695. this.setState({
  2696. orderUid: thisdata.uid,
  2697. loading: false,
  2698. userName: thisdata.userName,
  2699. primaryOrderNo: thisdata.primaryOrder,
  2700. additionalOrder: thisdata.additionalOrder,
  2701. contractNo: thisdata.contractNo,
  2702. orderData: thisdata,
  2703. isAddition: thisdata.additionalOrder ? true : false,
  2704. contractPictureUrl: thisdata.contractPictureUrl
  2705. ? splitUrl(
  2706. thisdata.contractPictureUrl,
  2707. ',',
  2708. globalConfig.avatarHost + '/upload'
  2709. )
  2710. : [],
  2711. })
  2712. }
  2713. }.bind(this),
  2714. })
  2715. },
  2716. //点击新增供应商
  2717. addcontactNew() {
  2718. this.state.contactListNew.push({
  2719. key: this.state.contactListNew.length,
  2720. money: '',
  2721. dunSubject: undefined,
  2722. orderNo: this.state.orderNo,
  2723. dunTarget: this.state.kehuId,
  2724. })
  2725. this.setState({
  2726. contactListNew: this.state.contactListNew,
  2727. cuiFlag: true,
  2728. })
  2729. },
  2730. //查看第三方信息表格
  2731. thirdTable(id) {
  2732. this.setState({
  2733. thirdInfoLoading: true,
  2734. })
  2735. let ajaxObj = $.ajax({
  2736. method: 'get',
  2737. dataType: 'json',
  2738. crossDomain: false,
  2739. url: globalConfig.context + '/api/admin/company/selectCompany',
  2740. data: {
  2741. tid: id,
  2742. },
  2743. success: function (data) {
  2744. if (data.error && data.error.length) {
  2745. message.warning(data.error[0].message)
  2746. } else {
  2747. let companyNameArr = [];
  2748. let theArr = [];
  2749. let thisData = [];
  2750. let arr = data.data || [];
  2751. let allTotalAmount = 0;
  2752. let type = 0;
  2753. let startType = 0;
  2754. let patentNameType = 0;
  2755. for (let i = 0; i < arr.length; i++) {
  2756. thisData = arr[i]
  2757. allTotalAmount =
  2758. (allTotalAmount * 10000 + thisData.totalAmount * 10000) / 10000
  2759. companyNameArr.push(thisData.companyName);
  2760. thisData.key = i;
  2761. type=thisData.patentType;
  2762. thisData.patentType = thisData.type;
  2763. theArr.push(thisData);
  2764. startType=thisData.startType;
  2765. patentNameType= thisData.patentNameType
  2766. }
  2767. if (!allTotalAmount) {
  2768. allTotalAmount = 0
  2769. }
  2770. for(let d=0;d<theArr.length;d++){
  2771. theArr[d].companyName = theArr[d].companyName+ '-' + theArr[d].id;
  2772. companyNameArr[d] = {
  2773. companyName: theArr[d].companyName,
  2774. id: theArr[d].id,
  2775. }
  2776. }
  2777. if(type === 0 || type === 1){
  2778. this.setState({
  2779. patentType: type === 0 ? 0 : 1, //0专利申请 1专利买卖
  2780. patentNameType: patentNameType, //0实用新型 1发明专利 2外观专利 3 其他
  2781. })
  2782. }
  2783. //设置项目类型
  2784. if(arr.length >0){
  2785. this.setState({
  2786. startType: startType
  2787. })
  2788. }
  2789. this.setState({
  2790. tid: id,
  2791. PayNodeCompany: companyNameArr,
  2792. thirdInfoList: theArr,
  2793. allTotalAmount: allTotalAmount,
  2794. },()=>{
  2795. this.projectTypeTabContent(this.state.projectType);
  2796. })
  2797. }
  2798. }.bind(this),
  2799. }).always(
  2800. function () {
  2801. this.setState({
  2802. thirdInfoLoading: false,
  2803. })
  2804. }.bind(this)
  2805. )
  2806. this.setState({
  2807. selectCompanyAjaxObj:ajaxObj
  2808. })
  2809. },
  2810. //外包日志列表
  2811. getSelectOutsourceLog(tid){
  2812. this.setState({
  2813. loading: true,
  2814. })
  2815. $.ajax({
  2816. method: 'get',
  2817. dataType: 'json',
  2818. crossDomain: false,
  2819. url: globalConfig.context + '/api/admin/outsourceOrg/selectOutsourceLog',
  2820. data: {
  2821. tid: tid,
  2822. },
  2823. success: function (data) {
  2824. if (data.error.length) {
  2825. if (data.error && data.error.length) {
  2826. message.warning(data.error[0].message);
  2827. }
  2828. } else {
  2829. this.setState({
  2830. outsourceLogs: data.data
  2831. })
  2832. }
  2833. this.setState({
  2834. loading: false,
  2835. })
  2836. }.bind(this),
  2837. }).always(
  2838. function () {
  2839. this.setState({
  2840. loading: false,
  2841. })
  2842. }.bind(this)
  2843. )
  2844. },
  2845. payNodeTable(id) {
  2846. this.setState({
  2847. payNodeLoading: true,
  2848. })
  2849. let ajaxObj = $.ajax({
  2850. method: 'get',
  2851. dataType: 'json',
  2852. crossDomain: false,
  2853. url: globalConfig.context + '/api/admin/company/selectPaymentNode',
  2854. data: {
  2855. tid: id,
  2856. },
  2857. success: function (data) {
  2858. if (data.error && data.error.length) {
  2859. message.warning(data.error[0].message)
  2860. } else {
  2861. let payNodeArr = []
  2862. let thisData = []
  2863. let arr = data.data || []
  2864. //对#5283自定义的补充展示
  2865. let infor = [...this.state.paySubject];
  2866. infor.push({ key: '自定义', value: '0' });
  2867. this.setState({
  2868. paySubject: infor
  2869. });
  2870. for (let i = 0; i < arr.length; i++) {
  2871. thisData = arr[i]
  2872. //遍历paySubject,获取当前dunType对应的key
  2873. infor.map((item) => {
  2874. if (item.value == thisData.dunType) {
  2875. thisData.dunType = item.key
  2876. }
  2877. })
  2878. payNodeArr.push({
  2879. key: i,
  2880. id: thisData.id, //付款节点Id
  2881. nodeId: thisData.id, //付款节点Id
  2882. tid: thisData.tid,
  2883. companyName: thisData.companyName, //供应商名称
  2884. projectType: thisData.projectType, //项目分类
  2885. dunType: thisData.dunType, //催款分类
  2886. unitPrice: thisData.unitPrice, //单价
  2887. quantity: thisData.quantity, //数量
  2888. totalAmount: thisData.totalAmount, //总价
  2889. partyAmount: thisData.partyAmount, //付款
  2890. partyTimes: thisData.partyTimes, //付款时间
  2891. cid: thisData.cid, //机构id
  2892. status: thisData.status, //催款状态 0-未支付 1-待全款 ,2已全款 status=2的时候已经全款,申请付款按钮可以去掉了
  2893. })
  2894. }
  2895. for(let d=0;d<payNodeArr.length;d++){
  2896. payNodeArr[d].companyName = payNodeArr[d].companyName+ '-' + payNodeArr[d].cid;
  2897. }
  2898. this.setState({
  2899. tid: id,
  2900. payNodeList: payNodeArr,
  2901. })
  2902. }
  2903. }.bind(this),
  2904. }).always(
  2905. function () {
  2906. this.setState({
  2907. payNodeLoading: false,
  2908. })
  2909. }.bind(this)
  2910. )
  2911. this.setState({
  2912. selectPaymentNodeAjaxObj: ajaxObj
  2913. })
  2914. return ajaxObj;
  2915. },
  2916. // 新增第三方供应商信息
  2917. addThirdList() {
  2918. this.setState({
  2919. ThirdListVisible: true,
  2920. })
  2921. },
  2922. updateProjectStatus(projectStatus,fn){
  2923. $.ajax({
  2924. url: globalConfig.context + '/api/admin/orderProject/updateProjectStatus',
  2925. method: 'post',
  2926. data: {
  2927. tid:this.state.tid,
  2928. projectStatus: projectStatus,
  2929. timeRecord: '{}'
  2930. },
  2931. }).done(
  2932. function (data) {
  2933. if (!data.error.length) {
  2934. this.setState({
  2935. timeRecordparse: {},
  2936. })
  2937. message.success('保存成功!');
  2938. fn();
  2939. } else {
  2940. message.warning(data.error[0].message)
  2941. }
  2942. }.bind(this)
  2943. )
  2944. },
  2945. // 新增支付节点
  2946. addPayNode() {
  2947. this.setState({
  2948. PayNodeVisible: true,
  2949. })
  2950. },
  2951. // 第三方信息自动计算总金额
  2952. calculatedAmount() {
  2953. let currentTotalPrice
  2954. currentTotalPrice = this.state.thirdUnitPrice * this.state.thirdQuantity
  2955. currentTotalPrice = currentTotalPrice.toFixed(6)
  2956. this.setState({
  2957. currentTotalPrice: currentTotalPrice,
  2958. })
  2959. },
  2960. // 付款节点自动计算总金额
  2961. payNodeCalculatedAmount(num) {
  2962. let currentTotalPrice,quantity,unitPrice
  2963. //获取当前供应商名称对应的单价并更新
  2964. this.state.thirdInfoList.forEach((item) => {
  2965. if (item.companyName === this.state.thirdCompanyName) {
  2966. currentTotalPrice = num ? item.unitPrice * num : item.quantity * item.unitPrice;
  2967. currentTotalPrice = currentTotalPrice.toFixed(6);
  2968. quantity = num ? num : item.quantity;
  2969. unitPrice = item.unitPrice;
  2970. }
  2971. })
  2972. this.setState({
  2973. payNodeQuantity: num ? num : quantity,
  2974. })
  2975. if(this.state.projectType !== 2){
  2976. this.setState({
  2977. currentTotalPrice: currentTotalPrice,
  2978. thirdUnitPrice: unitPrice
  2979. })
  2980. }
  2981. },
  2982. // 保存供应商信息
  2983. handleCancelq() {
  2984. let api
  2985. if (this.state.ThirdId) {
  2986. //修改
  2987. api = '/api/admin/company/updateCompany'
  2988. } else {
  2989. //新增
  2990. api = '/api/admin/company/addCompany'
  2991. }
  2992. let customerId = 0;
  2993. let isHave =this.state.customerArr.some((value)=>{
  2994. if(value.companyName === this.state.thirdCompanyName){
  2995. customerId = value.id
  2996. return true;
  2997. }
  2998. });
  2999. if(!isHave && this.state.projectType !== 0){
  3000. message.warning('请输入正确的供应商名称')
  3001. return;
  3002. }
  3003. this.setState({
  3004. loading: true,
  3005. })
  3006. // material: this.state.thirdMaterial, //材料
  3007. // urgent: this.state.thirdUrgent, //加急
  3008. // unitPrice: this.state.thirdUnitPrice, //单价
  3009. let data = {
  3010. id: this.state.ThirdId, //id
  3011. tid: this.state.tid, //订单编号
  3012. companyName: this.state.thirdCompanyName, //第三方名称
  3013. quantity: this.state.thirdQuantity, //数量
  3014. // totalAmount: this.state.currentTotalPrice, //总价
  3015. remarks: this.state.thirdRemarks, //备注
  3016. }
  3017. if(this.state.projectType === 0){
  3018. data.unitPrice = this.state.thirdUnitPrice;
  3019. }
  3020. if(isHave){
  3021. data.cid = customerId ////公司id
  3022. }
  3023. $.ajax({
  3024. url: globalConfig.context + api,
  3025. method: 'post',
  3026. dataType: 'json',
  3027. crossDomain: false,
  3028. data: data,
  3029. }).done(
  3030. function (data) {
  3031. this.setState({
  3032. loading: false,
  3033. })
  3034. if (!data.error.length) {
  3035. message.success('保存成功!')
  3036. this.setState({
  3037. ThirdId: '',
  3038. ThirdListVisible: false,
  3039. thirdCompanyName: '', //第三方名称
  3040. thirdUnitPrice: '', //单价
  3041. thirdQuantity: '', //数量
  3042. currentTotalPrice: '', //总价
  3043. thirdRemarks: '',
  3044. thirdUrgent: 0,
  3045. })
  3046. // this.visitCancel();
  3047. this.thirdTable(this.state.tid)
  3048. } else {
  3049. message.warning(data.error[0].message)
  3050. }
  3051. }.bind(this)
  3052. )
  3053. },
  3054. //保存付款节点
  3055. savePayNode() {
  3056. let api
  3057. if (this.state.ThirdId) {
  3058. //修改
  3059. api = '/api/admin/company/updatePaymentNode'
  3060. } else {
  3061. //新增
  3062. api = '/api/admin/company/addPaymentNode'
  3063. }
  3064. // totalAmount: this.state.currentTotalPrice, //总价
  3065. // partyAmount: this.state.partyAmount, //付款金额
  3066. //
  3067. let customerId=0;
  3068. this.state.PayNodeCompany.some((value)=>{
  3069. if(value.companyName === this.state.thirdCompanyName){
  3070. customerId = value.id
  3071. return true;
  3072. }
  3073. });
  3074. if(!this.state.thirdCompanyName){
  3075. message.error('请选择供应商名称');
  3076. return;
  3077. }
  3078. if(!this.state.paySubjectName){
  3079. message.error('请选择付款科目');
  3080. return;
  3081. }
  3082. if(!this.state.payNodeQuantity){
  3083. message.error('请输入数量');
  3084. return;
  3085. }
  3086. let data = {
  3087. id: this.state.ThirdId, //id
  3088. tid: this.state.tid, //订单编号
  3089. cid: customerId,//对应的第三方信息
  3090. companyName: this.state.thirdCompanyName.split('-')[0], //第三方名称
  3091. quantity: this.state.payNodeQuantity, //数量
  3092. dunType: this.state.dunType, //催款节点
  3093. projectType: this.state.cSort, //项目分类
  3094. }
  3095. if(this.state.paySubjectName === '0'){
  3096. if(!this.state.partyTimes){
  3097. message.error('请选择付款时间');
  3098. return;
  3099. }
  3100. data.partyTimes = this.state.partyTimes //付款时间
  3101. }
  3102. if(this.state.projectType !== 2){ //其他类型 0正常 1专利 2软著 3审计
  3103. data.totalAmount = this.state.currentTotalPrice //总价
  3104. data.unitPrice = this.state.thirdUnitPrice //单价
  3105. }
  3106. this.setState({
  3107. loading: true,
  3108. })
  3109. $.ajax({
  3110. url: globalConfig.context + api,
  3111. method: 'post',
  3112. dataType: 'json',
  3113. crossDomain: false,
  3114. data: data,
  3115. }).done(
  3116. function (data) {
  3117. this.setState({
  3118. loading: false,
  3119. })
  3120. if (!data.error.length) {
  3121. message.success('保存成功!')
  3122. this.setState({
  3123. ThirdId: '',
  3124. PayNodeVisible: false,
  3125. thirdCompanyName: '', //第三方名称
  3126. paySubjectName: '', //付款科目名称
  3127. thirdUnitPrice: '', //单价
  3128. thirdQuantity: '', //数量
  3129. payNodeQuantity: 1, //付款节点数量
  3130. currentTotalPrice: '', //总价
  3131. partyAmount: '', //付款金额
  3132. partyTimes: '', //付款时间
  3133. dunType: '', //催款节点
  3134. })
  3135. // this.visitCancel();
  3136. this.payNodeTable(this.state.tid)
  3137. } else {
  3138. message.warning(data.error[0].message)
  3139. }
  3140. }.bind(this)
  3141. )
  3142. },
  3143. // 取消
  3144. handleCancelclose() {
  3145. this.setState({
  3146. PayNodeVisible: false,
  3147. payNodeInfor: {},
  3148. ThirdId: '',
  3149. ThirdListVisible: false,
  3150. thirdCompanyName: '', //第三方名称
  3151. paySubjectName: '', //付款科目名称
  3152. thirdUnitPrice: '', //单价
  3153. partyTimes: '',
  3154. thirdQuantity: 1, //数量
  3155. payNodeQuantity: 1,
  3156. currentTotalPrice: '', //总价
  3157. thirdRemarks: '',
  3158. thirdUrgent: 0, //加急状态
  3159. })
  3160. },
  3161. // 删除供应商信息
  3162. confirmDeletNew(index,resolve=()=>{},reject=()=>{}) {
  3163. let arr = this.state.payNodeList.filter((v)=>{
  3164. return v.companyName === index.companyName
  3165. });
  3166. let _this = this;
  3167. if(arr.length > 0){
  3168. confirm({
  3169. title: '确定要删除此供应商信息吗?',
  3170. content: '此供应商存在'+arr.length+'条付款节点信息,删除后对应的付款节点也会一起删除',
  3171. onOk() {
  3172. return new Promise((resolve, reject) => {
  3173. let str = '';
  3174. arr.map((value)=>{
  3175. str+=value.id+',';
  3176. })
  3177. _this.payNodeConfirmDeletNew({
  3178. id: str
  3179. });
  3180. _this.handleConfirmDelet(index,resolve,reject)
  3181. }).catch(() => console.log('Oops errors!'));
  3182. },
  3183. onCancel() {},
  3184. });
  3185. }else{
  3186. this.handleConfirmDelet(index,resolve,reject)
  3187. }
  3188. },
  3189. handleConfirmDelet(index,resolve=()=>{},reject=()=>{}) {
  3190. this.setState({
  3191. loading: true,
  3192. ThirdListVisible: false,
  3193. })
  3194. const hide = message.loading('删除中...', 0);
  3195. let id = '';
  3196. if(index === -1){
  3197. if(this.state.thirdInfoList.length === 1){
  3198. id = this.state.thirdInfoList[0].id
  3199. }else{
  3200. this.state.thirdInfoList.map((value,index)=>{
  3201. id+=value.id+',';
  3202. })
  3203. }
  3204. }else{
  3205. id = index.id
  3206. }
  3207. $.ajax({
  3208. url: globalConfig.context + '/api/admin/company/deleteCompany',
  3209. method: 'post',
  3210. data: {
  3211. id: id,
  3212. },
  3213. }).done(
  3214. function (data) {
  3215. this.setState({
  3216. loading: false,
  3217. });
  3218. hide();
  3219. if (!data.error.length) {
  3220. message.success('删除成功!')
  3221. this.thirdTable(this.state.tid)
  3222. resolve();
  3223. } else {
  3224. message.warning(data.error[0].message)
  3225. reject();
  3226. }
  3227. }.bind(this)
  3228. )
  3229. },
  3230. // 删除付款节点
  3231. payNodeConfirmDeletNew(index,resolve=()=>{},reject=()=>{}) {
  3232. this.setState({
  3233. loading: true,
  3234. PayNodeVisible: false,
  3235. })
  3236. let id = '';
  3237. if(index === -1){
  3238. this.state.payNodeList.map((value,index)=>{
  3239. id+=value.id+',';
  3240. })
  3241. }else{
  3242. id = index.id
  3243. }
  3244. $.ajax({
  3245. url: globalConfig.context + '/api/admin/company/deletePaymentNode',
  3246. method: 'post',
  3247. data: {
  3248. id: id,
  3249. },
  3250. }).done(
  3251. function (data) {
  3252. this.setState({
  3253. loading: false,
  3254. })
  3255. if (!data.error.length) {
  3256. message.success('删除成功!')
  3257. resolve();
  3258. this.payNodeTable(this.state.tid)
  3259. } else {
  3260. message.warning(data.error[0].message)
  3261. reject();
  3262. }
  3263. }.bind(this)
  3264. )
  3265. },
  3266. //点击供应商详情
  3267. tableRowClickOne(record) {
  3268. this.setState({
  3269. ThirdListVisible: true,
  3270. ThirdId: record.id, //供应商id
  3271. thirdCompanyName: record.companyName, //第三方名称
  3272. thirdUnitPrice: record.unitPrice, //单价
  3273. thirdQuantity: record.quantity, //数量
  3274. currentTotalPrice: record.totalAmount, //总价
  3275. thirdMaterial: record.material, //有无材料
  3276. thirdUrgent: record.urgent, //加急情况
  3277. thirdRemarks: record.remarks,
  3278. audit: record.audit,//审计
  3279. assets: record.assets,//公司资产
  3280. income: record.income,//收入
  3281. })
  3282. },
  3283. //点击付款节点详情
  3284. payNodeTableRowClickOne(record) {
  3285. this.setState({
  3286. PayNodeVisible: true,
  3287. ThirdId: record.id, //供应商id
  3288. thirdCompanyName: record.companyName, //第三方名称
  3289. thirdUnitPrice: record.unitPrice, //单价
  3290. thirdQuantity: record.quantity, //供应商数量
  3291. payNodeQuantity: record.quantity, //付款节点数量
  3292. currentTotalPrice: record.totalAmount, //总价
  3293. partyTimes: record.partyTimes,
  3294. paySubjectName: record.dunType,
  3295. });
  3296. let obj = JSON.parse(JSON.stringify(record));
  3297. this.state.paySubject.some((value)=>{
  3298. if(value.key === obj.dunType){
  3299. obj.dunType = value.value;
  3300. return true;
  3301. }
  3302. });
  3303. this.setState({
  3304. payNodeInfor: obj, //付款节点详情
  3305. });
  3306. },
  3307. render() {
  3308. const formItemLayout = {
  3309. labelCol: { span: 8 },
  3310. wrapperCol: { span: 14 },
  3311. }
  3312. let departmentArr = this.state.departmentArr || []
  3313. return (
  3314. <div className="user-content">
  3315. {this.state.resVisible ? (
  3316. <ResolutionDetail
  3317. cancel={this.resCancel}
  3318. detail={this.state.resRecord}
  3319. visible={this.state.resVisible}
  3320. id={this.state.resRecord.orderNo}
  3321. />
  3322. ) : (
  3323. ''
  3324. )}
  3325. <ShowModalDiv ShowModal={this.state.showModal} />
  3326. <div className="content-title" style={{ marginBottom: 10 }}>
  3327. <span style={{ fontWeight: 900, fontSize: 16 }}>项目任务</span>
  3328. </div>
  3329. <Tabs defaultActiveKey="2" className="test" bordered>
  3330. <TabPane tab="搜索" key="2">
  3331. <div className="user-search" style={{ marginLeft: 10 }}>
  3332. <Input
  3333. placeholder="客户名称"
  3334. value={this.state.nameSearch}
  3335. onChange={(e) => {
  3336. this.setState({ nameSearch: e.target.value })
  3337. }}
  3338. />
  3339. <Input
  3340. placeholder="订单编号"
  3341. value={this.state.orderNoSearch}
  3342. onChange={(e) => {
  3343. this.setState({ orderNoSearch: e.target.value })
  3344. }}
  3345. />
  3346. <Input
  3347. placeholder="合同编号"
  3348. value={this.state.contractNoSearch}
  3349. onChange={(e) => {
  3350. this.setState({ contractNoSearch: e.target.value })
  3351. }}
  3352. />
  3353. <Input
  3354. placeholder="项目编号"
  3355. value={this.state.taskNoSearch}
  3356. onChange={(e) => {
  3357. this.setState({ taskNoSearch: e.target.value })
  3358. }}
  3359. />
  3360. <Select
  3361. placeholder="选择部门"
  3362. style={{ width: 150, marginRight: '10px' }}
  3363. value={this.state.departmenttSearch}
  3364. onChange={(e) => {
  3365. this.setState({ departmenttSearch: e })
  3366. }}
  3367. >
  3368. {departmentArr.map(function (item) {
  3369. return (
  3370. <Select.Option key={item.id}>{item.name}</Select.Option>
  3371. )
  3372. })}
  3373. </Select>
  3374. <Cascader
  3375. placeholder="项目状态"
  3376. style={{ width: 150, marginRight: '10px' }}
  3377. options={projectStatusCascader}
  3378. value={this.state.projectStatusSearch}
  3379. onChange={(e)=>{
  3380. this.setState({
  3381. projectStatusSearch: e
  3382. })
  3383. }}
  3384. />
  3385. <Select
  3386. placeholder="特批状态"
  3387. style={{ width: 150, marginRight: '10px' }}
  3388. value={this.state.approvalSearch}
  3389. onChange={(e) => {
  3390. this.setState({ approvalSearch: e })
  3391. console.log(this.state.approvalSearch)
  3392. }}
  3393. >
  3394. <Select.Option key={0}>非特批</Select.Option>
  3395. <Select.Option key={1}>特批</Select.Option>
  3396. </Select>
  3397. <Select
  3398. placeholder="外包状态"
  3399. style={{ width: 150, marginRight: '10px' }}
  3400. value={this.state.outsourceStatusSearch}
  3401. onChange={(e) => {
  3402. this.setState({ outsourceStatusSearch: e })
  3403. console.log(this.state.outsourceStatusSearch)
  3404. }}
  3405. >
  3406. <Select.Option key={0}>外包待审核</Select.Option>
  3407. {/* <Select.Option key={1}>外包审核通过</Select.Option> */}
  3408. <Select.Option key={2}>外包审核驳回</Select.Option>
  3409. <Select.Option key={999}>全部</Select.Option>
  3410. </Select>
  3411. <Button type="primary" onClick={this.search}>
  3412. 搜索
  3413. </Button>
  3414. <Button
  3415. onClick={(e) => {
  3416. this.reset(true)
  3417. }}
  3418. >
  3419. 重置
  3420. </Button>
  3421. {/* <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
  3422. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  3423. <span>订单时间 :</span>
  3424. <RangePicker
  3425. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  3426. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  3427. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  3428. </div> */}
  3429. </div>
  3430. </TabPane>
  3431. <TabPane tab="导出Excel" key="3">
  3432. <Button
  3433. type="primary"
  3434. style={{ margin: '11px 0 10px 10px' }}
  3435. onClick={this.exportExec}
  3436. >
  3437. 导出Excel
  3438. </Button>
  3439. </TabPane>
  3440. <TabPane tab="更改表格显示数据" key="1">
  3441. <div style={{ marginLeft: 10 }}>
  3442. <ChooseList
  3443. columns={this.state.columns}
  3444. changeFn={this.changeList}
  3445. changeList={this.state.changeList}
  3446. top={55}
  3447. margin={11}
  3448. />
  3449. </div>
  3450. </TabPane>
  3451. {/* <TabPane tab="批量操作" key="6">
  3452. <Button
  3453. type="primary"
  3454. disabled={this.state.selectedRowKeys.length == 0}
  3455. style={{ margin: "0px 0px 10px 10px" }}
  3456. onClick={e => {
  3457. e.stopPropagation(),
  3458. this.evaluateY(this.state.selectedRowKeys, "财务专员");
  3459. }}
  3460. >
  3461. 转交
  3462. </Button>
  3463. </TabPane> */}
  3464. </Tabs>
  3465. {/* <div className="user-search">
  3466. <Input
  3467. placeholder="客户名称"
  3468. value={this.state.nameSearch}
  3469. onChange={e => {
  3470. this.setState({ nameSearch: e.target.value });
  3471. }}
  3472. />
  3473. <Input
  3474. placeholder="订单编号"
  3475. value={this.state.orderNoSearch}
  3476. onChange={e => {
  3477. this.setState({ orderNoSearch: e.target.value });
  3478. }}
  3479. />
  3480. <Input
  3481. placeholder="项目编号"
  3482. value={this.state.taskNoSearch}
  3483. onChange={e => {
  3484. this.setState({ taskNoSearch: e.target.value });
  3485. }}
  3486. />
  3487. <Select
  3488. placeholder="选择部门"
  3489. style={{ width: 150, marginRight: "10px" }}
  3490. value={this.state.departmenttSearch}
  3491. onChange={e => {
  3492. this.setState({ departmenttSearch: e });
  3493. }}
  3494. >
  3495. {departmentArr.map(function(item) {
  3496. return <Select.Option key={item.id}>{item.name}</Select.Option>;
  3497. })}
  3498. </Select>
  3499. <Button type="primary" onClick={this.search}>
  3500. 搜索
  3501. </Button>
  3502. <Button onClick={this.reset}>重置</Button>
  3503. <Button
  3504. type="primary"
  3505. style={{ marginLeft: "10px" }}
  3506. onClick={this.exportExec}
  3507. >
  3508. 导出Excel
  3509. </Button>
  3510. <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
  3511. <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
  3512. <span>订单时间 :</span>
  3513. <RangePicker
  3514. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  3515. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  3516. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  3517. </div>
  3518. </div> */}
  3519. <div className="patent-table">
  3520. <Spin spinning={this.state.loading}>
  3521. <Table
  3522. columns={
  3523. this.state.changeList == undefined
  3524. ? this.state.columns
  3525. : this.state.changeList
  3526. }
  3527. dataSource={this.state.dataSource}
  3528. pagination={this.state.pagination}
  3529. scroll={{ x: 'max-content', y: 0 }}
  3530. onRowClick={this.tableRowClick.bind(this)}
  3531. bordered
  3532. size={'small'}
  3533. />
  3534. </Spin>
  3535. </div>
  3536. <Assign
  3537. title="项目"
  3538. selApi={'/api/admin/orderProject/projectDistribution'}
  3539. data={this.state.assignData}
  3540. showDesc={this.state.assignVisible}
  3541. closeDesc={this.closeAssign.bind(this)}
  3542. fenpaiData={8}
  3543. type={this.state.flag ? 4 : (this.props.isZxs ? 3 : 1) }
  3544. roleName={this.state.nub}
  3545. requestMethod={'post'}
  3546. flag={this.state.flag}
  3547. all={this.state}
  3548. />
  3549. {this.state.visible ? <Modal
  3550. className="customeDetails"
  3551. footer=""
  3552. title=""
  3553. width="900px"
  3554. visible={this.state.visible}
  3555. maskClosable={false}
  3556. onOk={()=>{
  3557. this.visitOk();
  3558. this.state.selectCompanyAjaxObj ? this.state.selectCompanyAjaxObj.abort() : null;
  3559. this.state.selectPaymentNodeAjaxObj ? this.state.selectPaymentNodeAjaxObj.abort() : null;
  3560. this.state.orderOutsourceDtailsAjaxObj ? this.state.orderOutsourceDtailsAjaxObj.abort() : null;
  3561. }}
  3562. onCancel={()=>{
  3563. this.visitCancel();
  3564. this.state.selectCompanyAjaxObj ? this.state.selectCompanyAjaxObj.abort() : null;
  3565. this.state.selectPaymentNodeAjaxObj ? this.state.selectPaymentNodeAjaxObj.abort() : null;
  3566. this.state.orderOutsourceDtailsAjaxObj ? this.state.orderOutsourceDtailsAjaxObj.abort() : null;
  3567. }}
  3568. >
  3569. <div style={{position:"relative"}}>
  3570. <div style={{
  3571. position: "absolute",
  3572. top:0,
  3573. left:0,
  3574. right:0,
  3575. bottom:0,
  3576. zIndex: 1000,
  3577. //0未开始 1已开始 2已暂停 3已完成 4已驳回 5已退单
  3578. display: parseInt(this.state.projectStatus) === 0 ? 'flex' : 'none',
  3579. justifyContent:'center',
  3580. paddingTop: '300px',
  3581. background: 'rgba(0,0,0,0.7)',
  3582. borderRadius: '4px',
  3583. borderTopRightRadius: '96px',
  3584. }}>
  3585. <Button
  3586. type="primary"
  3587. size='large'
  3588. onClick={()=>{
  3589. //0未开始 1已开始 2已暂停 3已完成 4已驳回 5已退单
  3590. this.updateProjectStatus(1,()=>{
  3591. this.xiangqing(this.state.id)
  3592. });
  3593. }}>
  3594. 开始启动项目
  3595. </Button>
  3596. </div>
  3597. <Tabs
  3598. tabBarExtraContent={
  3599. <div style={{fontWeight:'bold',paddingRight:'15px'}}>
  3600. <span>
  3601. 项目名称:
  3602. <span style={{color:'#F00',paddingRight:'5px'}}>{this.state.taskName}</span>
  3603. </span>
  3604. <span style={{marginLeft:'15px'}}>
  3605. 项目编号:
  3606. <span style={{color:'#F00',paddingRight:'5px'}}>
  3607. {this.state.id}
  3608. {
  3609. this.state.splitStatus === 2 ? '('+this.state.splitSuper+'-'+this.state.splitId+')' : ''
  3610. }
  3611. </span>
  3612. </span>
  3613. <OrderItemStatus deleteSign={this.state.deleteSign}/>
  3614. </div>
  3615. }
  3616. activeKey={this.state.activeKey}
  3617. onChange={(e) => {
  3618. this.callback(e)
  3619. if (e === "2") {
  3620. this.waiDetail();
  3621. this.thirdTable(this.state.tid);
  3622. this.payNodeTable(this.state.tid);
  3623. this.getSelectOutsourceLog(this.state.tid);
  3624. }else if(e === "1"){
  3625. this.xiangqing(this.state.tid);
  3626. }
  3627. }}
  3628. >
  3629. <TabPane tab="项目概况" key="1">
  3630. {this.state.activeKey === "1" ? <Form
  3631. layout="horizontal"
  3632. onSubmit={this.handleSubmit}
  3633. id="demand-form"
  3634. style={{ paddingBottom: '00px' }}
  3635. >
  3636. <Spin spinning={this.state.loading}>
  3637. <div className="clearfix">
  3638. <div className="clearfix">
  3639. <FormItem
  3640. className="half-item"
  3641. {...formItemLayout}
  3642. label="项目状态"
  3643. >
  3644. {
  3645. getProjectName(parseInt(this.state.projectStatus))
  3646. }
  3647. {
  3648. this.state.projectStatus !== 0 ? <Button
  3649. type="primary"
  3650. size="small"
  3651. style={{
  3652. marginTop: "5px",
  3653. marginLeft: '5px',
  3654. }}
  3655. onClick={()=>{
  3656. this.setState({
  3657. projectSituationVisible: true,
  3658. })
  3659. }}
  3660. >
  3661. 修改
  3662. </Button> : null
  3663. }
  3664. <Button
  3665. type="primary"
  3666. size="small"
  3667. style={{
  3668. marginTop: "5px",
  3669. position: "absolute",
  3670. zIndex: 1,
  3671. marginLeft: '5px',
  3672. }}
  3673. onClick={this.caozuorizhi}
  3674. >
  3675. 操作日志
  3676. </Button>
  3677. </FormItem>
  3678. <FormItem
  3679. className="half-item"
  3680. {...formItemLayout}
  3681. label="合同编号"
  3682. >
  3683. <span>{this.state.contractNo}</span>
  3684. </FormItem>
  3685. </div>
  3686. <div className="clearfix">
  3687. <FormItem
  3688. className="half-item"
  3689. {...formItemLayout}
  3690. label="是否特批"
  3691. >
  3692. <span>{getApproval(this.state.approval)}</span>
  3693. </FormItem>
  3694. <FormItem
  3695. className="half-item"
  3696. {...formItemLayout}
  3697. label="结算状态"
  3698. >
  3699. <span>
  3700. {getLiquidationStatus(this.state.liquidationStatus)}
  3701. </span>
  3702. </FormItem>
  3703. <FormItem
  3704. className="half-item"
  3705. {...formItemLayout}
  3706. label="流程状态"
  3707. >
  3708. <span>
  3709. {getProcessStatus(this.state.processStatus)}
  3710. </span>
  3711. </FormItem>
  3712. <FormItem
  3713. className="half-item"
  3714. {...formItemLayout}
  3715. label="订单编号"
  3716. >
  3717. <span>{this.state.orderNo}</span>
  3718. </FormItem>
  3719. </div>
  3720. <div className="clearfix">
  3721. <FormItem
  3722. className="half-item"
  3723. {...formItemLayout}
  3724. label="满意度表格"
  3725. >
  3726. <Radio.Group
  3727. value={this.state.formRetrieve}
  3728. onChange={(e) => {
  3729. this.setState({ formRetrieve: e.target.value })
  3730. }}
  3731. >
  3732. <Radio value={0}>未收回</Radio>
  3733. <Radio value={1}>已收回</Radio>
  3734. <Radio value={2}>其他</Radio>
  3735. </Radio.Group>
  3736. </FormItem>
  3737. <FormItem
  3738. className="half-item"
  3739. {...formItemLayout}
  3740. label="(满意度)备注"
  3741. >
  3742. <Input
  3743. type="textarea"
  3744. placeholder="请输入备注"
  3745. rows={2}
  3746. value={this.state.retrieveContent}
  3747. onChange={(e) => {
  3748. this.setState({
  3749. retrieveContent: e.target.value,
  3750. })
  3751. }}
  3752. />
  3753. </FormItem>
  3754. {/*<FormItem*/}
  3755. {/* className="half-item"*/}
  3756. {/* {...formItemLayout}*/}
  3757. {/* label="退单"*/}
  3758. {/*>*/}
  3759. {/* <Radio.Group*/}
  3760. {/* value={this.state.taskRefund}*/}
  3761. {/* onChange={(e) => {*/}
  3762. {/* this.setState({ taskRefund: e.target.value })*/}
  3763. {/* }}*/}
  3764. {/* >*/}
  3765. {/* <Radio value={0}>已完成</Radio>*/}
  3766. {/* <Radio value={1}>未完成</Radio>*/}
  3767. {/* <Radio value={2}>其他</Radio>*/}
  3768. {/* </Radio.Group>*/}
  3769. {/*</FormItem>*/}
  3770. </div>
  3771. <div className="clearfix">
  3772. {/*<FormItem*/}
  3773. {/* className="half-item"*/}
  3774. {/* {...formItemLayout}*/}
  3775. {/* label="(退单)备注"*/}
  3776. {/*>*/}
  3777. {/* <Input*/}
  3778. {/* type="textarea"*/}
  3779. {/* placeholder="请输入备注"*/}
  3780. {/* rows={2}*/}
  3781. {/* value={this.state.refundContent}*/}
  3782. {/* onChange={(e) => {*/}
  3783. {/* this.setState({ refundContent: e.target.value })*/}
  3784. {/* }}*/}
  3785. {/* />*/}
  3786. {/*</FormItem>*/}
  3787. <div style={{
  3788. paddingLeft: '8%',
  3789. }}>
  3790. <div style={{color:'#000',fontWeight:500}}>
  3791. 特别说明
  3792. <span style={{color: '#58a3ff',}}>(针对项目的特殊情况说明)</span>
  3793. </div>
  3794. <div style={{display:'flex',alignItems:'center',paddingTop: '10px'}}>
  3795. <div>备注:</div>
  3796. <Input
  3797. type="textarea"
  3798. placeholder="请输入备注"
  3799. rows={3}
  3800. style={{
  3801. width:'33%',
  3802. marginLeft: '10px',
  3803. }}
  3804. value={this.state.specialComment}
  3805. onChange={(e) => {
  3806. this.setState({ specialComment: e.target.value });
  3807. }}
  3808. />
  3809. </div>
  3810. </div>
  3811. </div>
  3812. <div className="clearfix">
  3813. <h3 className="sub-title">订单负责人信息</h3>
  3814. <FormItem
  3815. className="half-item"
  3816. {...formItemLayout}
  3817. label="负责人"
  3818. >
  3819. <span>
  3820. {this.state.salesmanName +
  3821. '(' +
  3822. this.state.depName +
  3823. ')'}
  3824. </span>
  3825. </FormItem>
  3826. <FormItem
  3827. className="half-item"
  3828. {...formItemLayout}
  3829. label="负责人电话"
  3830. >
  3831. <span>{this.state.salesmanMobile}</span>
  3832. </FormItem>
  3833. <FormItem
  3834. className="half-item"
  3835. {...formItemLayout}
  3836. label="当前财务负责人"
  3837. >
  3838. <span>{this.state.nowFinance}</span>
  3839. </FormItem>
  3840. <FormItem
  3841. className="half-item"
  3842. {...formItemLayout}
  3843. label="当前财务负责人电话"
  3844. >
  3845. <span>{this.state.nowFinanceMobile}</span>
  3846. </FormItem>
  3847. <FormItem
  3848. className="half-item"
  3849. {...formItemLayout}
  3850. style={{ opacity: '.5' }}
  3851. label="原负责人"
  3852. >
  3853. <span>{this.state.oldSalesmanName}</span>
  3854. </FormItem>
  3855. <FormItem
  3856. className="half-item"
  3857. {...formItemLayout}
  3858. style={{ opacity: '.5' }}
  3859. label="原负责人电话"
  3860. >
  3861. <span>{this.state.oldSalesmanMobile}</span>
  3862. </FormItem>
  3863. <FormItem
  3864. className="half-item"
  3865. {...formItemLayout}
  3866. style={{ opacity: '.5' }}
  3867. label="实际财务操作人"
  3868. >
  3869. <span>{this.state.financeName}</span>
  3870. </FormItem>
  3871. <FormItem
  3872. className="half-item"
  3873. {...formItemLayout}
  3874. style={{ opacity: '.5' }}
  3875. label="实际财务操作人电话"
  3876. >
  3877. <span>{this.state.financeMobile}</span>
  3878. </FormItem>
  3879. <FormItem
  3880. className="half-item"
  3881. {...formItemLayout}
  3882. label="订单留言"
  3883. >
  3884. <span>{this.state.orderRemarks}</span>
  3885. </FormItem>
  3886. <FormItem
  3887. className="half-item"
  3888. {...formItemLayout}
  3889. label=""
  3890. >
  3891. <Button onClick={this.getOrderLog}>查看订单日志</Button>
  3892. </FormItem>
  3893. <OrderRiZi
  3894. dataSourcerizhi={this.state.dataSourceY}
  3895. closeOrderLog={this.closeOrderLog}
  3896. visible={this.state.avisible}
  3897. loading={this.state.loading}
  3898. />
  3899. </div>
  3900. {/*<div className="clearfix">*/}
  3901. {/* <h3 className="sub-title">外包信息</h3>*/}
  3902. {/* <FormItem*/}
  3903. {/* className="half-item"*/}
  3904. {/* {...formItemLayout}*/}
  3905. {/* label="外包公司"*/}
  3906. {/* >*/}
  3907. {/* <Input*/}
  3908. {/* value={this.state.outsourceName}*/}
  3909. {/* onChange={(e) => {*/}
  3910. {/* this.setState({*/}
  3911. {/* outsourceName: e.target.value,*/}
  3912. {/* })*/}
  3913. {/* }}*/}
  3914. {/* placeholder="请输入外包公司"*/}
  3915. {/* style={{ width: '200px' }}*/}
  3916. {/* />*/}
  3917. {/* </FormItem>*/}
  3918. {/* <FormItem*/}
  3919. {/* className="half-item"*/}
  3920. {/* {...formItemLayout}*/}
  3921. {/* label="外包成本(万元)"*/}
  3922. {/* >*/}
  3923. {/* <Input*/}
  3924. {/* value={this.state.outsourcePrice}*/}
  3925. {/* onChange={(e) => {*/}
  3926. {/* this.setState({*/}
  3927. {/* outsourcePrice: e.target.value,*/}
  3928. {/* })*/}
  3929. {/* }}*/}
  3930. {/* placeholder="请输入外包成本"*/}
  3931. {/* style={{ width: '200px' }}*/}
  3932. {/* />*/}
  3933. {/* </FormItem>*/}
  3934. {/*</div>*/}
  3935. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  3936. <div className="clearfix">
  3937. <h3 className="sub-title">联系信息</h3>
  3938. <FormItem
  3939. className="half-item"
  3940. {...formItemLayout}
  3941. label="客户名称"
  3942. >
  3943. <span>{this.state.userName}</span>
  3944. <EnterpriseNameChange
  3945. type='journal'
  3946. style={{ marginLeft: 10 }}
  3947. enterpriseId={this.state.orderUid}/>
  3948. </FormItem>
  3949. <FormItem
  3950. className="half-item"
  3951. {...formItemLayout}
  3952. label="企业法人"
  3953. >
  3954. <Input
  3955. placeholder="请输入法人名称"
  3956. value={this.state.legalPerson}
  3957. style={{ width: '200px' }}
  3958. onChange={(e) => {
  3959. this.setState({ legalPerson: e.target.value })
  3960. }}
  3961. ref="commodityQuantity"
  3962. />
  3963. </FormItem>
  3964. <FormItem
  3965. className="half-item"
  3966. {...formItemLayout}
  3967. label="法人电话"
  3968. >
  3969. <Input
  3970. placeholder="请输入法人电话"
  3971. value={this.state.legalPersonTel}
  3972. style={{ width: '200px' }}
  3973. onChange={(e) => {
  3974. this.setState({ legalPersonTel: e.target.value })
  3975. }}
  3976. ref="commodityQuantity"
  3977. />
  3978. </FormItem>
  3979. <FormItem
  3980. className="half-item"
  3981. {...formItemLayout}
  3982. label="客户联系人"
  3983. >
  3984. <Input
  3985. placeholder="请输入联系人名称"
  3986. value={this.state.contacts}
  3987. style={{ width: '200px' }}
  3988. onChange={(e) => {
  3989. this.setState({ contacts: e.target.value })
  3990. }}
  3991. ref="commodityQuantity"
  3992. />
  3993. </FormItem>
  3994. <FormItem
  3995. className="half-item"
  3996. {...formItemLayout}
  3997. label="联系人电话"
  3998. >
  3999. <Input
  4000. placeholder="请输入联系人电话"
  4001. value={this.state.contactMobile}
  4002. style={{ width: '200px' }}
  4003. onChange={(e) => {
  4004. this.setState({ contactMobile: e.target.value })
  4005. }}
  4006. ref="commodityQuantity"
  4007. />
  4008. </FormItem>
  4009. <FormItem
  4010. className="half-item"
  4011. {...formItemLayout}
  4012. label="企业地址"
  4013. >
  4014. <Cascader
  4015. options={areaSelect()}
  4016. value={this.state.ProvinceCity}
  4017. placeholder="选择城市"
  4018. style={{ width: '200px' }}
  4019. onChange={(e) => {
  4020. this.setState({ ProvinceCity: e })
  4021. }}
  4022. />
  4023. </FormItem>
  4024. <FormItem
  4025. className="half-item"
  4026. {...formItemLayout}
  4027. label=""
  4028. ></FormItem>
  4029. <FormItem
  4030. className="half-item"
  4031. {...formItemLayout}
  4032. label=""
  4033. >
  4034. <Input
  4035. placeholder="请输入详细地址"
  4036. value={this.state.postalAddress}
  4037. style={{ width: '200px', marginLeft: '12em' }}
  4038. onChange={(e) => {
  4039. this.setState({ postalAddress: e.target.value })
  4040. }}
  4041. ref="commodityQuantity"
  4042. />
  4043. </FormItem>
  4044. </div>
  4045. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  4046. <div className="clearfix">
  4047. <h3 className="sub-title">项目信息</h3>
  4048. {/*0通用 1专利 2软著 3审计 4双软 5高新 6商标*/}
  4049. {/*贯标需要显示*/}
  4050. {
  4051. this.state.isIso ?
  4052. <div>
  4053. <FormItem
  4054. className="half-item"
  4055. {...formItemLayout}
  4056. label="认证费"
  4057. >
  4058. <span>
  4059. {
  4060. this.state.ifCertificationFee === 1 ? '包含' : '不包含'
  4061. }
  4062. </span>
  4063. </FormItem>
  4064. {this.state.ifCertificationFee === 1 ?<FormItem
  4065. className="half-item"
  4066. {...formItemLayout}
  4067. label="认证费(万元)"
  4068. >
  4069. <Input
  4070. placeholder="请输入认证金额"
  4071. value={this.state.certificationFee}
  4072. style={{ width: '200px'}}
  4073. onChange={(e) => {
  4074. this.setState({ certificationFee: e.target.value })
  4075. }}
  4076. />
  4077. </FormItem> : null}
  4078. {this.state.ifCertificationFee === 1 ? <FormItem
  4079. className="half-item"
  4080. {...formItemLayout}
  4081. label=""
  4082. /> : null}
  4083. {this.state.ifCertificationFee === 1 ? <FormItem
  4084. className="half-item"
  4085. {...formItemLayout}
  4086. label="付款公司名称"
  4087. >
  4088. <Input
  4089. placeholder="请输入代付款公司名称"
  4090. value={this.state.certificationCorporate}
  4091. style={{ width: '200px'}}
  4092. onChange={(e) => {
  4093. this.setState({ certificationCorporate: e.target.value })
  4094. }}
  4095. ref="commodityQuantity"
  4096. />
  4097. </FormItem>:null}
  4098. </div> : null
  4099. }
  4100. <FormItem
  4101. className="half-item"
  4102. {...formItemLayout}
  4103. label="项目编号"
  4104. >
  4105. <span>
  4106. {this.state.splitStatus == 2
  4107. ? this.state.splitSuper + '-' + this.state.splitId
  4108. : this.state.id}
  4109. </span>
  4110. </FormItem>
  4111. <FormItem
  4112. className="half-item"
  4113. {...formItemLayout}
  4114. label="项目名称"
  4115. >
  4116. <span>{this.state.taskName}</span>
  4117. </FormItem>
  4118. {/*<FormItem*/}
  4119. {/* className="half-item"*/}
  4120. {/* {...formItemLayout}*/}
  4121. {/* label="项目状态"*/}
  4122. {/*>*/}
  4123. {/* <Select*/}
  4124. {/* placeholder="选择项目状态"*/}
  4125. {/* style={{ width: '200px' }}*/}
  4126. {/* value={this.state.taskStatus}*/}
  4127. {/* onChange={(e) => {*/}
  4128. {/* this.setState({ taskStatus: e })*/}
  4129. {/* }}*/}
  4130. {/* >*/}
  4131. {/* {taskStatus.map(function (item) {*/}
  4132. {/* return (*/}
  4133. {/* <Select.Option key={item.value}>*/}
  4134. {/* {item.key}*/}
  4135. {/* </Select.Option>*/}
  4136. {/* )*/}
  4137. {/* })}*/}
  4138. {/* </Select>*/}
  4139. {/*</FormItem>*/}
  4140. <FormItem
  4141. className="half-item"
  4142. {...formItemLayout}
  4143. label="项目类别"
  4144. >
  4145. <span>{this.state.cname}</span>
  4146. </FormItem>
  4147. <FormItem
  4148. className="half-item"
  4149. {...formItemLayout}
  4150. label="证书编号"
  4151. >
  4152. {this.state.certificateNumber}
  4153. </FormItem>
  4154. </div>
  4155. <div className="clearfix">
  4156. <h3 className="sub-title">申报系统账户信息</h3>
  4157. {/*<span style={{color:'red'}}>注:仅技术部可见</span>*/}
  4158. <FormItem
  4159. className="half-item"
  4160. {...formItemLayout}
  4161. label="用户名"
  4162. >
  4163. <Input
  4164. placeholder="请输入用户名"
  4165. value={this.state.declareUser}
  4166. style={{ width: '200px' }}
  4167. onChange={(e) => {
  4168. this.setState({ declareUser: e.target.value })
  4169. }}
  4170. />
  4171. </FormItem>
  4172. <FormItem
  4173. className="half-item"
  4174. {...formItemLayout}
  4175. label="密码"
  4176. >
  4177. <Input
  4178. placeholder="请输入密码"
  4179. value={this.state.declarePwd}
  4180. style={{ width: '200px' }}
  4181. onChange={(e) => {
  4182. this.setState({ declarePwd: e.target.value })
  4183. }}
  4184. />
  4185. </FormItem>
  4186. </div>
  4187. <div className="clearfix">
  4188. <h3 className="sub-title">项目申报进度</h3>
  4189. <DeclarationProgress
  4190. timeRecordparse={this.state.timeRecordparse}
  4191. startDate={this.state.startDate}
  4192. taskDate={this.state.taskDate}
  4193. list={[
  4194. {id:4,name:'完成时间',value:this.state.endDate},
  4195. {id:6,name:'受理时间',value:this.state.acceptDate},
  4196. {id:8,name:'公示时间',value:this.state.publicityDate},
  4197. {id:10,name:'发证时间',value:this.state.licenceDate},
  4198. {id:15,name:'立项金额',value:this.state.setUpAmount}
  4199. ]}/>
  4200. {/*专利显示 bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
  4201. {
  4202. this.state.bpType === 1 || this.state.bpType === 6 ?
  4203. <div>
  4204. <FormItem
  4205. className="half-item"
  4206. {...formItemLayout}
  4207. label="是否高新企业"
  4208. >
  4209. <Radio.Group
  4210. value={this.state.highTechStatus}
  4211. onChange={(e) => {
  4212. this.setState({ highTechStatus: e.target.value })
  4213. }}
  4214. >
  4215. <Radio value={1}>是</Radio>
  4216. <Radio value={0}>否</Radio>
  4217. </Radio.Group>
  4218. </FormItem>
  4219. <FormItem/>
  4220. <PatentSchedule
  4221. taskId={this.state.id}
  4222. bpType={this.state.bpType}
  4223. acceptCount={this.state.acceptCount}
  4224. certificatesCount={this.state.certificatesCount}
  4225. rejectCount={this.state.rejectCount}
  4226. commodityQuantity={this.state.commodityQuantity}
  4227. refresh={()=>{this.xiangqing(this.state.id)}}
  4228. onChange={(key,value)=>{
  4229. if(key === 'acceptCount'){
  4230. this.setState({
  4231. acceptCount: value
  4232. })
  4233. }
  4234. if(key === 'certificatesCount'){
  4235. this.setState({
  4236. certificatesCount: value
  4237. })
  4238. }
  4239. if(key === 'rejectCount'){
  4240. this.setState({
  4241. rejectCount: value
  4242. })
  4243. }
  4244. }}
  4245. />
  4246. </div> :
  4247. <div>
  4248. {/*高新显示 bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
  4249. {this.state.bpType === 5 ? <FormItem
  4250. className="half-item"
  4251. {...formItemLayout}
  4252. label="是否抽查">
  4253. <Radio.Group
  4254. value={this.state.spotCheckStatus}
  4255. onChange={(e) => {
  4256. this.setState({ spotCheckStatus: e.target.value })
  4257. }}
  4258. >
  4259. <Radio value={0}>否</Radio>
  4260. <Radio value={1}>是,未通过</Radio>
  4261. <Radio value={2}>是,通过</Radio>
  4262. </Radio.Group>
  4263. </FormItem> : null}
  4264. {this.state.bpType === 5 ? <FormItem/> : null}
  4265. {this.state.bpType === 5 ? <FormItem
  4266. className="half-item"
  4267. {...formItemLayout}
  4268. label="是否立项"
  4269. >
  4270. <Radio.Group
  4271. value={this.state.setUpStatus}
  4272. onChange={(e) => {
  4273. this.setState({ setUpStatus: e.target.value })
  4274. }}
  4275. >
  4276. <Radio value={0}>否</Radio>
  4277. <Radio value={1}>是</Radio>
  4278. </Radio.Group>
  4279. </FormItem> : null}
  4280. {this.state.bpType === 5 ? <FormItem
  4281. className="half-item"
  4282. {...formItemLayout}
  4283. label={this.state.setUpStatus === 1 ? "立项时间" : ''}
  4284. >
  4285. {this.state.setUpStatus === 1 ?<DatePicker
  4286. style={{
  4287. marginTop: '2px',
  4288. width: '200px',
  4289. height: '32px',
  4290. }}
  4291. showTime
  4292. format="YYYY-MM-DD"
  4293. onOk={() => {}}
  4294. value={
  4295. this.state.setUpTime
  4296. ? moment(this.state.setUpTime)
  4297. : null
  4298. }
  4299. onChange={(data, dataString) => {
  4300. this.setState({ setUpTime: dataString })
  4301. }}
  4302. /> : null }
  4303. </FormItem> : null}
  4304. {/*高新和科技项目显示 bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
  4305. {/*cSort: 3 科技项目 6: 会员*/}
  4306. {(this.state.bpType === 5 || this.state.cSort === 3) && <FormItem
  4307. className="half-item"
  4308. {...formItemLayout}
  4309. label="申报批次"
  4310. >
  4311. <Select
  4312. style={{ width: 200 }}
  4313. placeholder="请选择批次"
  4314. value={
  4315. this.state.declarationBatch
  4316. ? this.state.declarationBatch
  4317. : undefined
  4318. }
  4319. onChange={(e) => {
  4320. this.setState({
  4321. declarationBatch: e,
  4322. })
  4323. }}
  4324. >
  4325. <Option value={1}>第一批</Option>
  4326. <Option value={2}>第二批</Option>
  4327. <Option value={3}>第三批</Option>
  4328. <Option value={4}>第四批</Option>
  4329. </Select>
  4330. </FormItem>}
  4331. {/*只有科技项目才有是否到款*/}
  4332. {/*cSort: 3 科技项目 6: 会员*/}
  4333. {this.state.cSort === 3 && <FormItem
  4334. className="half-item"
  4335. {...formItemLayout}
  4336. label="是否到款"
  4337. >
  4338. <Radio.Group
  4339. value={this.state.arrivalMoney}
  4340. onChange={(e) => {
  4341. this.setState({ arrivalMoney: e.target.value })
  4342. }}
  4343. >
  4344. <Radio value={0}>未到企业</Radio>
  4345. <Radio value={1}>已到企业</Radio>
  4346. </Radio.Group>
  4347. </FormItem>}
  4348. </div>}
  4349. </div>
  4350. {this.state.bpType !== 1 && this.state.bpType !== 6 ? <div className="clearfix">
  4351. <FormItem
  4352. labelCol={{ span: 3 }}
  4353. wrapperCol={{ span: 16 }}
  4354. label="附件"
  4355. >
  4356. <Picture
  4357. domId={'myTask1'}
  4358. fileList={(e) => {
  4359. this.setState({ attachmentUrl: e })
  4360. }}
  4361. pictureUrl={this.state.attachmentUrl}
  4362. visible={this.props.visible}
  4363. data={{
  4364. sign: 'order_task_file',
  4365. url: '/api/admin/orderProject/uploadOrderTaskFile',
  4366. }}
  4367. />
  4368. </FormItem>
  4369. </div> : null}
  4370. {this.state.bpType !== 1 && this.state.bpType !== 6 ? <div className="clearfix">
  4371. <FormItem
  4372. labelCol={{ span: 3 }}
  4373. wrapperCol={{ span: 16 }}
  4374. label="项目说明"
  4375. >
  4376. <Input
  4377. type="textarea"
  4378. placeholder="请输入项目说明"
  4379. rows={4}
  4380. disabled
  4381. value={this.state.taskComment}
  4382. onChange={(e) => {
  4383. if(this.state.taskCommentData){
  4384. let len = this.state.taskCommentData.length;
  4385. if(e.target.value.slice(0,len) !== this.state.taskCommentData){
  4386. message.warning('项目说明不允许删除与修改已存在的内容');
  4387. return;
  4388. }
  4389. }
  4390. this.setState({ taskComment: e.target.value })
  4391. }}
  4392. />
  4393. </FormItem>
  4394. </div> : null}
  4395. <div>
  4396. <h3 className="sub-title">项目业务</h3>
  4397. {this.state.processStatus == 0 ? (
  4398. <Button
  4399. type="primary"
  4400. onClick={this.addDetailed}
  4401. style={{
  4402. float: 'right',
  4403. marginRight: '50px',
  4404. marginBottom: '15px',
  4405. }}
  4406. >
  4407. 添加项目明细
  4408. </Button>
  4409. ) : (
  4410. ''
  4411. )}
  4412. </div>
  4413. <div className="patent-table">
  4414. <Spin spinning={this.state.loading}>
  4415. <Table
  4416. columns={this.state.columnsX}
  4417. dataSource={this.state.dataSourceX}
  4418. pagination={this.state.paginations}
  4419. onRowClick={this.tableRowClickX}
  4420. bordered
  4421. size="small"
  4422. />
  4423. </Spin>
  4424. </div>
  4425. <div className="clearfix">
  4426. <Button
  4427. className="cancel"
  4428. type="primary"
  4429. // onClick={this.tijiaoOk}
  4430. onClick={() => {
  4431. let num = this.state.projectStatus
  4432. if (
  4433. num != 1 &&
  4434. num != 20 &&
  4435. num != 21
  4436. ) {
  4437. this.showDeleteConfirm(num, this.tijiaoOk)
  4438. } else {
  4439. this.tijiaoOk()
  4440. }
  4441. }}
  4442. style={{ marginLeft: '200px', marginTop: '10px' }}
  4443. htmlType="submit"
  4444. >
  4445. 保存
  4446. </Button>
  4447. <Button
  4448. className="cancel"
  4449. type="ghost"
  4450. onClick={this.visitCancel}
  4451. style={{ marginLeft: '50px', marginTop: '10px' }}
  4452. >
  4453. 取消
  4454. </Button>
  4455. </div>
  4456. </div>
  4457. </Spin>
  4458. </Form> : <div/>}
  4459. </TabPane>
  4460. <TabPane tab="外包/供应商信息" key="2">
  4461. <Spin spinning={this.state.sureOutLoading || this.state.waiDetailLoading || this.state.payNodeLoading || this.state.thirdInfoLoading}>
  4462. {this.state.refundStatus != 0 && this.state.refundStatus != 1 ? (
  4463. <div style={{ marginTop: 10 }}>
  4464. <div className="clearfix">
  4465. <FormItem
  4466. className="half-item"
  4467. labelCol={{ span: 3 }}
  4468. wrapperCol={{ span: 14 }}
  4469. label={
  4470. <span>
  4471. <strong style={{ color: '#f00' }}>*</strong>
  4472. 类型
  4473. </span>
  4474. }
  4475. >
  4476. <Radio.Group
  4477. disabled={this.state.payNodeLoading || this.state.thirdInfoLoading}
  4478. value={this.state.startType}
  4479. onChange={(e) => {
  4480. let _this = this;
  4481. if(this.state.thirdInfoList.length >0){
  4482. confirm({
  4483. title: '确定要切换吗?',
  4484. content: '切换将删除所有第三信息和付款节点',
  4485. onOk() {
  4486. return new Promise((resolve, reject) => {
  4487. _this.setState({ startType: e.target.value },()=>{
  4488. _this.projectTypeTabContent(_this.state.projectType);
  4489. })
  4490. _this.confirmDeletNew(-1,resolve,reject)
  4491. if(_this.state.payNodeList.length > 0){
  4492. _this.payNodeConfirmDeletNew(-1,resolve,reject);
  4493. }
  4494. }).catch(() => console.log('Oops errors!'));
  4495. },
  4496. onCancel() {},
  4497. });
  4498. }else{
  4499. this.setState({ startType: e.target.value },()=>{
  4500. this.projectTypeTabContent(this.state.projectType);
  4501. })
  4502. }
  4503. }}
  4504. >
  4505. <Radio value={0}>外包(不走总部)</Radio>
  4506. <Radio value={1}>供应商信息</Radio>
  4507. </Radio.Group>
  4508. </FormItem>
  4509. </div>
  4510. {/* 专利类型 */}
  4511. <div
  4512. className="clearfix"
  4513. style={{
  4514. display: this.state.projectType === 1 ? 'block' : 'none',
  4515. }}
  4516. >
  4517. <FormItem
  4518. className="half-item"
  4519. labelCol={{ span: 4 }}
  4520. wrapperCol={{ span: 14 }}
  4521. label={
  4522. <span>
  4523. <strong style={{ color: '#f00' }}>*</strong>
  4524. 专利类型
  4525. </span>
  4526. }
  4527. >
  4528. <Radio.Group
  4529. disabled={this.state.payNodeLoading || this.state.thirdInfoLoading}
  4530. value={this.state.patentType}
  4531. onChange={(e) => {
  4532. let _this = this;
  4533. if(this.state.thirdInfoList.length >0){
  4534. confirm({
  4535. title: '确定要切换吗?',
  4536. content: '切换将删除所有第三信息和付款节点',
  4537. onOk() {
  4538. return new Promise((resolve, reject) => {
  4539. _this.setState({ patentType: e.target.value },()=>{
  4540. _this.projectTypeTabContent(_this.state.projectType);
  4541. })
  4542. _this.confirmDeletNew(-1,resolve,reject)
  4543. if(_this.state.payNodeList.length > 0){
  4544. _this.payNodeConfirmDeletNew(-1,resolve,reject);
  4545. }
  4546. }).catch(() => console.log('Oops errors!'));
  4547. },
  4548. onCancel() {},
  4549. });
  4550. }else{
  4551. this.setState({ patentType: e.target.value },()=>{
  4552. this.projectTypeTabContent(this.state.projectType);
  4553. })
  4554. }
  4555. }}
  4556. >
  4557. <Radio value={0}>专利申请/变更/转让</Radio>
  4558. <Radio value={1}>专利买卖</Radio>
  4559. </Radio.Group>
  4560. </FormItem>
  4561. </div>
  4562. <div
  4563. className="clearfix"
  4564. style={{
  4565. display: this.state.projectType === 1? 'block' : 'none',
  4566. }}
  4567. >
  4568. <FormItem
  4569. className="half-item"
  4570. labelCol={{ span: 4 }}
  4571. wrapperCol={{ span: 14 }}
  4572. label={
  4573. <span>
  4574. <strong style={{ color: '#f00' }}>*</strong>
  4575. 专利名称
  4576. </span>
  4577. }
  4578. >
  4579. <Radio.Group
  4580. disabled={this.state.payNodeLoading || this.state.thirdInfoLoading}
  4581. value={this.state.patentNameType}
  4582. onChange={(e) => {
  4583. let _this = this;
  4584. if(this.state.thirdInfoList.length >0){
  4585. confirm({
  4586. title: '确定要切换吗?',
  4587. content: '切换将删除所有第三信息和付款节点',
  4588. onOk() {
  4589. return new Promise((resolve, reject) => {
  4590. _this.setState({ patentNameType: e.target.value },()=>{
  4591. _this.projectTypeTabContent(_this.state.projectType);
  4592. })
  4593. _this.confirmDeletNew(-1,resolve,reject)
  4594. if(_this.state.payNodeList.length > 0){
  4595. _this.payNodeConfirmDeletNew(-1,resolve,reject);
  4596. }
  4597. }).catch(() => console.log('Oops errors!'));
  4598. },
  4599. onCancel() {},
  4600. });
  4601. }else{
  4602. this.setState({ patentNameType: e.target.value },()=>{
  4603. this.projectTypeTabContent(this.state.projectType);
  4604. })
  4605. }
  4606. }}
  4607. >
  4608. <Radio value={0}>实用新型专利</Radio>
  4609. <Radio value={1}>发明专利</Radio>
  4610. <Radio value={2}>外观专利</Radio>
  4611. {/*<Radio value={3}>*/}
  4612. {/* 其他*/}
  4613. {/* <Input*/}
  4614. {/* disabled={this.state.patentNameType !== 3}*/}
  4615. {/* value={this.state.patentName}*/}
  4616. {/* style={{ marginLeft: '15px' }}*/}
  4617. {/* onChange={(e) => {*/}
  4618. {/* this.setState({*/}
  4619. {/* patentName: e.target.value,*/}
  4620. {/* })*/}
  4621. {/* }}*/}
  4622. {/* placeholder="请填写专利名称"*/}
  4623. {/* />*/}
  4624. {/*</Radio>*/}
  4625. </Radio.Group>
  4626. </FormItem>
  4627. </div>
  4628. {/*外包类型无此选项*/}
  4629. {this.state.orderTaskOfficialCost === 1 && this.state.startType !== 0 ? <div className="clearfix">
  4630. <FormItem
  4631. className="half-item"
  4632. labelCol={{ span: 4 }}
  4633. wrapperCol={{ span: 14 }}
  4634. label={<span>官费</span>}>
  4635. <Radio.Group
  4636. value={this.state.containOfficialFees}
  4637. onChange={(e) => {
  4638. this.setState({ containOfficialFees: e.target.value })
  4639. }}
  4640. >
  4641. <Radio value={0}>实际已缴费</Radio>
  4642. <Radio value={1}>实际未缴费</Radio>
  4643. </Radio.Group>
  4644. </FormItem>
  4645. </div> : <div/>}
  4646. {/* 第三方信息专利 */}
  4647. <div>
  4648. <span
  4649. style={{
  4650. fontSize: '18px',
  4651. }}
  4652. >
  4653. 第三方信息
  4654. </span>
  4655. <span
  4656. style={{
  4657. display: 'inline-block',
  4658. marginLeft: 10,
  4659. color: 'red',
  4660. }}
  4661. >
  4662. 金额总计(万元): {this.state.allTotalAmount}
  4663. </span>
  4664. <Button
  4665. type="primary"
  4666. onClick={(e) => {
  4667. //this.state.startType 0外包 1供应商 类型为外包时,当普通单
  4668. if(this.state.projectType === 1 && this.state.patentType === -1){
  4669. message.info('请先选择专利类型');
  4670. }else if(this.state.projectType === 1 && this.state.patentNameType === -1){
  4671. message.info('请先选择专利名称');
  4672. } else{
  4673. this.addThirdList()
  4674. }
  4675. }}
  4676. style={{
  4677. float: 'right',
  4678. marginRight: '50px',
  4679. marginBottom: '15px',
  4680. }}
  4681. >
  4682. +新增供应商名称
  4683. </Button>
  4684. </div>
  4685. <div
  4686. className="clearfix"
  4687. style={{
  4688. // display: this.state.type == 1 ? "block" : "none",
  4689. display: this.state.type == 1 ? 'block' : 'block',
  4690. }}
  4691. >
  4692. <Spin spinning={this.state.thirdInfoLoading}>
  4693. <Form layout="horizontal">
  4694. <Table
  4695. pagination={false}
  4696. columns={this.state.ContactsListsNew}
  4697. dataSource={this.state.thirdInfoList}
  4698. onRowClick={this.tableRowClickOne}
  4699. scroll={{ x: 'max-content', y: 0 }}
  4700. bordered
  4701. size="small"
  4702. />
  4703. <Col
  4704. span={24}
  4705. offset={9}
  4706. style={{ marginTop: '15px' }}
  4707. />
  4708. </Form>
  4709. </Spin>
  4710. </div>
  4711. {/*如果是软著类或者专利类的专利申请,隐藏付款节点 但当为外包类型时,无需隐藏*/}
  4712. {/*this.state.startType 0外包 1供应商*/}
  4713. <div
  4714. style={{
  4715. display: this.state.startType === 0 ? 'block' : ((this.state.projectType === 1 && this.state.patentType === 0) || this.state.projectType === 2? 'none' : 'block'), //0正常 1专利 2软著 3审计
  4716. }}
  4717. >
  4718. <span
  4719. style={{
  4720. fontSize: '18px',
  4721. }}
  4722. >
  4723. 付款节点
  4724. </span>
  4725. <span
  4726. style={{
  4727. display: 'inline-block',
  4728. marginLeft: 10,
  4729. color: 'red',
  4730. }}
  4731. />
  4732. <Button
  4733. type="primary"
  4734. onClick={(e) => {
  4735. this.addPayNode()
  4736. }}
  4737. style={{
  4738. float: 'right',
  4739. marginRight: '50px',
  4740. marginBottom: '15px',
  4741. }}
  4742. >
  4743. +新增付款节点
  4744. </Button>
  4745. </div>
  4746. {/*如果是软著类或者专利类的专利申请,隐藏付款节点 但当为外包类型时,无需隐藏*/}
  4747. <div
  4748. className="clearfix"
  4749. style={{
  4750. display: this.state.startType === 0 ? 'block' : ((this.state.projectType === 1 && this.state.patentType === 0) || this.state.projectType === 2? 'none' : 'block'), //0正常 1专利 2软著 3审计
  4751. }}
  4752. >
  4753. <Spin spinning={this.state.payNodeLoading}>
  4754. <Form layout="horizontal">
  4755. <Table
  4756. pagination={false}
  4757. columns={this.state.PayNodeTableColunms}
  4758. dataSource={this.state.payNodeList}
  4759. onRowClick={this.payNodeTableRowClickOne}
  4760. scroll={{ x: 'max-content', y: 0 }}
  4761. bordered
  4762. size="small"
  4763. />
  4764. <Col
  4765. span={24}
  4766. offset={9}
  4767. style={{ marginTop: '15px' }}
  4768. />
  4769. </Form>
  4770. </Spin>
  4771. </div>
  4772. <div className="clearfix">
  4773. <FormItem
  4774. className="half-item"
  4775. {...formItemLayout}
  4776. label={
  4777. <span>
  4778. <strong style={{ color: '#f00' }}>*</strong>备注
  4779. </span>
  4780. }
  4781. >
  4782. <TextArea
  4783. rows={4}
  4784. value={this.state.outsourceRemarks}
  4785. onChange={(e) => {
  4786. this.setState({
  4787. outsourceRemarks: e.target.value,
  4788. })
  4789. }}
  4790. placeholder="请输入备注"
  4791. />
  4792. </FormItem>
  4793. </div>
  4794. {/*<div className="clearfix">
  4795. <FormItem className="half-item"
  4796. {...formItemLayout}
  4797. label="上传协议文件" style={{height:"auto"}}>
  4798. <Upload header={{authorization: 'authorization-text'}} action={globalConfig.context + "/api/admin/outsourceOrg/uploadOutsourceFile"}
  4799. data={(e)=>{
  4800. return {
  4801. 'sign': e.name.substring(0,e.name.lastIndexOf("."))
  4802. }
  4803. }}
  4804. fileList={this.state.fileUrl}
  4805. onChange={(e)=>{
  4806. this.setState({
  4807. attachmentUrl:e.fileList,
  4808. fileUrl:e.fileList
  4809. })
  4810. }}>
  4811. {fileUrl.length>1?null:<Button>
  4812. <Icon type="upload" /> 点击上传
  4813. </Button>}
  4814. </Upload>
  4815. <span className="tip" style={{display:"inline-block"}}>支持文件格式: doc,excel,ppt</span>
  4816. </FormItem>
  4817. </div>*/}
  4818. <p
  4819. className="tip"
  4820. style={{
  4821. paddingBottom: '12px',
  4822. width: '240px',
  4823. marginLeft: '145px',
  4824. color: 'red',
  4825. }}
  4826. >
  4827. 首次派单项目,需上传协议,第2次起,同项目,只需写外包公司
  4828. </p>
  4829. <div className="clearfix">
  4830. <FormItem
  4831. labelCol={{ span: 4 }}
  4832. wrapperCol={{ span: 18 }}
  4833. label={
  4834. <span>
  4835. 合同/协议扫描件
  4836. </span>
  4837. }
  4838. >
  4839. <PicturesWall
  4840. domId={'myTask3'}
  4841. fileList={this.getOrgCodeUrlWai}
  4842. pictureUrl={this.state.pictureUrl}
  4843. />
  4844. <p style={{ color: 'red' }}>图片建议:要清晰。</p>
  4845. </FormItem>
  4846. </div>
  4847. {/*只有审核拒绝和第一次发起外包的时候才要填写发起原因 如果是类型为供应商则不需要发起原因*/}
  4848. {/*this.state.startType 0外包 1供应商*/}
  4849. {(typeof this.state.refundStatus === 'undefined' || this.state.refundStatus === 2) && this.state.startType !== 1 ? <div className="clearfix">
  4850. <FormItem
  4851. className="half-item"
  4852. {...formItemLayout}
  4853. label={
  4854. <span>
  4855. <strong style={{ color: '#f00' }}>*</strong>发起原因
  4856. </span>
  4857. }
  4858. >
  4859. <TextArea
  4860. rows={4}
  4861. value={this.state.reason}
  4862. onChange={(e) => {
  4863. this.setState({
  4864. reason: e.target.value,
  4865. })
  4866. }}
  4867. placeholder="请输入发起原因"
  4868. />
  4869. </FormItem>
  4870. </div> : <div/>}
  4871. <div className="clearfix">
  4872. <div
  4873. style={{
  4874. display: 'inline-black',
  4875. textAlign: 'center',
  4876. }}
  4877. >
  4878. <Button
  4879. type="primary"
  4880. loading={this.state.loading}
  4881. onClick={()=>{
  4882. this.sureOut(this.state.startType);
  4883. }}
  4884. >
  4885. {
  4886. this.state.startType === 0 ? "确认发起外包,不通过总部" : "提交供应商信息"
  4887. }
  4888. </Button>
  4889. <p className="tip" style={{ color: 'red' }}>
  4890. {
  4891. this.state.startType === 0 ? "提示:高于总部价格,费用个人承担" : "确定提交供应商信息,提交后,不可修改"
  4892. }
  4893. </p>
  4894. </div>
  4895. </div>
  4896. </div>
  4897. ) : (
  4898. <div>
  4899. {
  4900. this.state.visible && this.state.activeKey === '2' ?
  4901. <CheckProject
  4902. {...this.props}
  4903. orderTaskOfficialCost={this.state.orderTaskOfficialCost} //是否含官费 0无1有
  4904. containOfficialFees={this.state.containOfficialFees} //0:实际已缴费 1:实际未缴费
  4905. tid={this.state.tid}
  4906. oldInfor={this.state.oldInfor}
  4907. projectType={this.state.projectType} //0正常 1专利 2软著 3审计
  4908. patentNameType={this.state.patentNameType}
  4909. patentName={this.state.patentName}
  4910. patentType={this.state.patentType}
  4911. status={this.state.refundStatus}
  4912. isPreviewPay={true}
  4913. mid={this.state.mid}
  4914. thirdInfoList={this.state.thirdInfoList}
  4915. dataSource={this.state.payNodeList}
  4916. outsourceRemarks={this.state.outsourceRemarks}
  4917. fileList={this.state.pictureUrl}
  4918. startType={this.state.startType}
  4919. projectStatus={this.state.projectStatus}
  4920. onRefresh={()=>{
  4921. this.waiDetail();
  4922. this.thirdTable(this.state.tid);
  4923. this.getSelectOutsourceLog(this.state.tid);
  4924. this.payNodeTable(this.state.tid)
  4925. this.loadData(this.state.page)
  4926. }}
  4927. /> : <div/>
  4928. }
  4929. </div>
  4930. )}
  4931. {(this.state.refundStatus == 1 ||
  4932. this.state.refundStatus == 0 ||
  4933. this.state.refundStatus == 2) &&
  4934. this.state.startType !== 1
  4935. ? (
  4936. <div className="clearfix"
  4937. style={{
  4938. display: this.state.refundStatus == 0 ? 'none' : 'block',
  4939. }}
  4940. >
  4941. <hr className="division" />
  4942. {parseInt(this.state.startType) !== 1 ? <div style={{
  4943. color:'#F00',
  4944. fontWeight: 'bolder',
  4945. paddingBottom: '20px',
  4946. }}>
  4947. 审核结果: <span style={{paddingLeft:'20px'}}>{getRefundStatus(this.state.refundStatus)}</span>
  4948. </div> : <div/>}
  4949. <div className="outsourceLogList">
  4950. {
  4951. this.state.outsourceLogs && this.state.outsourceLogs.map((value,index)=>(
  4952. <div key={index} className="outsourceLogItem outsource">
  4953. <div style={{
  4954. display:'flex',
  4955. flexFlow:'row nowrap',
  4956. paddingBottom: '3px',
  4957. paddingTop: '3px',
  4958. }}>
  4959. <div>
  4960. {value.aname}
  4961. </div>
  4962. <div style={{paddingLeft:'5px'}}>
  4963. {
  4964. value.status === 0 ?
  4965. <Tag color="#2db7f5">发起外包审核</Tag> :
  4966. value.status === 1 ? <Tag color="#87d068">通过</Tag> :
  4967. <Tag color="#f50">驳回</Tag>
  4968. }
  4969. </div>
  4970. <div style={{
  4971. wordBreak: 'break-all',
  4972. maxWidth:'67%',
  4973. }}>
  4974. {value.remarks}
  4975. </div>
  4976. <div style={{paddingLeft: '10px'}}>
  4977. {value.createTimes}
  4978. </div>
  4979. </div>
  4980. </div>
  4981. ))
  4982. }
  4983. </div>
  4984. {/* <div*/}
  4985. {/* className="clearfix"*/}
  4986. {/* style={{*/}
  4987. {/* display: this.state.refundStatus == 0 ? 'none' : 'block',*/}
  4988. {/* }}*/}
  4989. {/* >*/}
  4990. {/* <FormItem*/}
  4991. {/* className="half-item"*/}
  4992. {/* {...formItemLayout}*/}
  4993. {/* label="审核意见"*/}
  4994. {/* >*/}
  4995. {/* <span>{this.state.remarks}</span>*/}
  4996. {/* </FormItem>*/}
  4997. {/* </div>*/}
  4998. {/* {parseInt(this.state.startType) !== 1 ?<div className="clearfix">*/}
  4999. {/* <FormItem*/}
  5000. {/* className="half-item"*/}
  5001. {/* {...formItemLayout}*/}
  5002. {/* label="审核结果"*/}
  5003. {/* >*/}
  5004. {/* <span>{getRefundStatus(this.state.refundStatus)}</span>*/}
  5005. {/* </FormItem>*/}
  5006. {/* </div> : <div/>}*/}
  5007. {/* <div*/}
  5008. {/* className="clearfix"*/}
  5009. {/* style={{*/}
  5010. {/* display: this.state.refundStatus == 0 ? 'none' : 'block',*/}
  5011. {/* }}*/}
  5012. {/* >*/}
  5013. {/* <FormItem*/}
  5014. {/* className="half-item"*/}
  5015. {/* {...formItemLayout}*/}
  5016. {/* label="审核时间"*/}
  5017. {/* >*/}
  5018. {/* <span>{this.state.auditTimes}</span>*/}
  5019. {/* </FormItem>*/}
  5020. {/* </div>*/}
  5021. </div>
  5022. ) : (
  5023. ''
  5024. )}
  5025. </Spin>
  5026. </TabPane>
  5027. {!this.props.isZxs || (this.state.isHuiyuan && this.props.isZxs) ? (
  5028. <TabPane tab="订单详情" key="3">
  5029. <Spin spinning={this.state.loading}>
  5030. {this.state.activeKey === "3" ? <OrderDetail
  5031. orderUid={this.state.orderUid}
  5032. orderData={this.state.orderData}
  5033. getOrderLog={this.getOrderLog}
  5034. dataSourceX={this.state.dataSourceX}
  5035. contactList={this.state.jiedian}
  5036. orderNo={this.state.orderNo}
  5037. totalCui={this.state.totalCui}
  5038. contactListNew={this.state.jiedianNew}
  5039. pictureUrl={this.state.contractPictureUrl}
  5040. /> : <div/>}
  5041. </Spin>
  5042. <OrderRiZi
  5043. dataSourcerizhi={this.state.dataSourceY}
  5044. closeOrderLog={this.closeOrderLog}
  5045. visible={this.state.avisible}
  5046. loading={this.state.loading}
  5047. />
  5048. </TabPane>
  5049. ) : (
  5050. ''
  5051. )}
  5052. </Tabs>
  5053. </div>
  5054. </Modal> : <div/>}
  5055. <Modal
  5056. maskClosable={false}
  5057. visible={this.state.lookVisible}
  5058. onOk={this.noCancel}
  5059. onCancel={this.noCancel}
  5060. width="500px"
  5061. title={'添加工时'}
  5062. footer=""
  5063. className="admin-desc-content"
  5064. >
  5065. <Form layout="horizontal" id="demand-form">
  5066. <div className="clearfix">
  5067. <FormItem {...formItemLayout} label="工作日期">
  5068. <DatePicker
  5069. style={{ marginTop: '2px', width: '200px', height: '32px' }}
  5070. showTime
  5071. format="YYYY-MM-DD"
  5072. onOk={() => {}}
  5073. value={
  5074. this.state.taskDate ? moment(this.state.taskDate) : null
  5075. }
  5076. onChange={(data, dataString) => {
  5077. this.setState({ taskDate: dataString })
  5078. }}
  5079. />
  5080. </FormItem>
  5081. </div>
  5082. <div className="clearfix">
  5083. <FormItem {...formItemLayout} label="工作时长">
  5084. <Input
  5085. placeholder="请输入工作时长"
  5086. value={this.state.hours}
  5087. style={{ width: '200px' }}
  5088. onChange={(e) => {
  5089. this.setState({ hours: e.target.value })
  5090. }}
  5091. ref="commodityQuantity"
  5092. />
  5093. </FormItem>
  5094. </div>
  5095. <div className="clearfix">
  5096. <FormItem {...formItemLayout} label="工作内容">
  5097. <Input
  5098. type="textarea"
  5099. placeholder="请输入备注"
  5100. rows={4}
  5101. value={this.state.remarks}
  5102. onChange={(e) => {
  5103. this.setState({ remarks: e.target.value })
  5104. }}
  5105. />
  5106. </FormItem>
  5107. </div>
  5108. <div className="clearfix">
  5109. <Button
  5110. className="cancel"
  5111. type="primary"
  5112. onClick={this.tianjiaOk}
  5113. loading={this.state.loading}
  5114. style={{ marginLeft: '100px' }}
  5115. htmlType="submit"
  5116. >
  5117. 确定
  5118. </Button>
  5119. <Button
  5120. className="cancel"
  5121. type="ghost"
  5122. onClick={this.noCancel}
  5123. style={{ marginLeft: '50px' }}
  5124. >
  5125. 取消
  5126. </Button>
  5127. </div>
  5128. </Form>
  5129. </Modal>
  5130. {this.state.speVisible ? <Modal
  5131. maskClosable={false}
  5132. visible={this.state.speVisible}
  5133. onOk={()=>{
  5134. this.visitOk();
  5135. this.state.selectCompanyAjaxObj ? this.state.selectCompanyAjaxObj.abort() : null;
  5136. this.state.selectPaymentNodeAjaxObj ? this.state.selectPaymentNodeAjaxObj.abort() : null;
  5137. this.state.orderOutsourceDtailsAjaxObj ? this.state.orderOutsourceDtailsAjaxObj.abort() : null;
  5138. }}
  5139. onCancel={()=>{
  5140. this.visitCancel();
  5141. this.state.selectCompanyAjaxObj ? this.state.selectCompanyAjaxObj.abort() : null;
  5142. this.state.selectPaymentNodeAjaxObj ? this.state.selectPaymentNodeAjaxObj.abort() : null;
  5143. this.state.orderOutsourceDtailsAjaxObj ? this.state.orderOutsourceDtailsAjaxObj.abort() : null;
  5144. }}
  5145. width="900px"
  5146. title=""
  5147. footer=""
  5148. className="admin-desc-content"
  5149. >
  5150. <div style={{position:"relative"}}>
  5151. <div style={{
  5152. position: "absolute",
  5153. top:0,
  5154. left:0,
  5155. right:0,
  5156. bottom:0,
  5157. zIndex: 1000,
  5158. display: parseInt(this.state.projectStatus) === 0 ? 'flex' : 'none',
  5159. justifyContent:'center',
  5160. paddingTop: '300px',
  5161. background: 'rgba(0,0,0,0.7)',
  5162. borderRadius: '4px',
  5163. borderTopRightRadius: '96px',
  5164. }}>
  5165. <Button
  5166. type="primary"
  5167. size='large'
  5168. onClick={()=>{
  5169. //0未开始 1已开始 2已暂停 3已完成 4已驳回 5已退单
  5170. this.updateProjectStatus(1,()=>{
  5171. this.xiangqing(this.state.id)
  5172. });
  5173. }}>
  5174. 开始启动项目
  5175. </Button>
  5176. </div>
  5177. <Tabs
  5178. tabBarExtraContent={
  5179. <div style={{fontWeight:'bold',paddingRight:'15px'}}>
  5180. <span>
  5181. 项目名称:
  5182. <span style={{color:'#F00',paddingRight:'5px'}}>{this.state.taskName}</span>
  5183. </span>
  5184. <span style={{marginLeft:'15px'}}>
  5185. 项目编号:
  5186. <span style={{color:'#F00',paddingRight:'5px'}}>
  5187. {this.state.id}
  5188. {
  5189. this.state.splitStatus === 2 ? '('+this.state.splitSuper+'-'+this.state.splitId+')' : ''
  5190. }
  5191. </span>
  5192. </span>
  5193. <OrderItemStatus deleteSign={this.state.deleteSign}/>
  5194. </div>
  5195. }
  5196. activeKey={this.state.activeKey}
  5197. onChange={this.orderChange}
  5198. >
  5199. <TabPane tab="项目概况" key="1">
  5200. <div className="clearfix">
  5201. <FormItem
  5202. className="half-item"
  5203. {...formItemLayout}
  5204. label="项目状态"
  5205. >
  5206. {
  5207. getProjectName(parseInt(this.state.projectStatus))
  5208. }
  5209. {
  5210. this.state.projectStatus !== 0 ? <Button
  5211. type="primary"
  5212. size="small"
  5213. style={{
  5214. marginTop: "5px",
  5215. marginLeft: '5px',
  5216. }}
  5217. onClick={()=>{
  5218. this.setState({
  5219. projectSituationVisible: true,
  5220. })
  5221. }}
  5222. >
  5223. 修改
  5224. </Button> : null
  5225. }
  5226. <Button
  5227. type="primary"
  5228. size="small"
  5229. style={{
  5230. marginTop: "5px",
  5231. position: "absolute",
  5232. zIndex: 1,
  5233. marginLeft: '5px',
  5234. }}
  5235. onClick={this.caozuorizhi}
  5236. >
  5237. 操作日志
  5238. </Button>
  5239. </FormItem>
  5240. <FormItem
  5241. className="half-item"
  5242. {...formItemLayout}
  5243. label="合同编号"
  5244. >
  5245. <span>{this.state.contractNo}</span>
  5246. </FormItem>
  5247. </div>
  5248. <div className="clearfix">
  5249. <FormItem
  5250. className="half-item"
  5251. {...formItemLayout}
  5252. label="是否特批"
  5253. >
  5254. <span>{getApproval(this.state.approval)}</span>
  5255. </FormItem>
  5256. <FormItem
  5257. className="half-item"
  5258. {...formItemLayout}
  5259. label="结算状态"
  5260. >
  5261. <span>
  5262. {getLiquidationStatus(this.state.liquidationStatus)}
  5263. </span>
  5264. </FormItem>
  5265. <FormItem
  5266. className="half-item"
  5267. {...formItemLayout}
  5268. label="流程状态"
  5269. >
  5270. <span>{getProcessStatus(this.state.processStatus)}</span>
  5271. </FormItem>
  5272. <FormItem
  5273. className="half-item"
  5274. {...formItemLayout}
  5275. label="订单编号"
  5276. >
  5277. <span>{this.state.orderNo}</span>
  5278. </FormItem>
  5279. </div>
  5280. <div className="clearfix">
  5281. <FormItem
  5282. className="half-item"
  5283. {...formItemLayout}
  5284. label="满意度表格"
  5285. >
  5286. <Radio.Group
  5287. value={this.state.formRetrieve}
  5288. onChange={(e) => {
  5289. this.setState({ formRetrieve: e.target.value })
  5290. }}
  5291. >
  5292. <Radio value={0}>未收回</Radio>
  5293. <Radio value={1}>已收回</Radio>
  5294. <Radio value={2}>其他</Radio>
  5295. </Radio.Group>
  5296. </FormItem>
  5297. {
  5298. <FormItem
  5299. className="half-item"
  5300. {...formItemLayout}
  5301. label="(满意度)备注"
  5302. >
  5303. <Input
  5304. type="textarea"
  5305. placeholder="请输入备注"
  5306. rows={2}
  5307. value={this.state.retrieveContent}
  5308. onChange={(e) => {
  5309. this.setState({ retrieveContent: e.target.value })
  5310. }}
  5311. />
  5312. </FormItem>
  5313. }
  5314. {/*<FormItem*/}
  5315. {/* className="half-item"*/}
  5316. {/* {...formItemLayout}*/}
  5317. {/* label="退单"*/}
  5318. {/*>*/}
  5319. {/* <Radio.Group*/}
  5320. {/* value={this.state.taskRefund}*/}
  5321. {/* onChange={(e) => {*/}
  5322. {/* this.setState({ taskRefund: e.target.value })*/}
  5323. {/* }}*/}
  5324. {/* >*/}
  5325. {/* <Radio value={0}>已完成</Radio>*/}
  5326. {/* <Radio value={1}>未完成</Radio>*/}
  5327. {/* <Radio value={2}>其他</Radio>*/}
  5328. {/* </Radio.Group>*/}
  5329. {/*</FormItem>*/}
  5330. </div>
  5331. {/*软著显示 bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
  5332. {this.state.bpType === 2 ? <div className="clearfix">
  5333. <FormItem
  5334. className="half-item"
  5335. {...formItemLayout}
  5336. label="加急天数"
  5337. >
  5338. <Radio.Group
  5339. value={this.state.urgentDay}
  5340. onChange={(e) => {
  5341. this.setState({ urgentDay: e.target.value })
  5342. }}
  5343. >
  5344. <Radio value={1}>是</Radio>
  5345. <Radio value={0}>否</Radio>
  5346. </Radio.Group>
  5347. </FormItem>
  5348. <FormItem
  5349. className="half-item"
  5350. {...formItemLayout}
  5351. label="有无材料"
  5352. >
  5353. <Radio.Group
  5354. value={this.state.ifMaterial}
  5355. onChange={(e) => {
  5356. this.setState({ ifMaterial: e.target.value })
  5357. }}
  5358. >
  5359. <Radio value={1}>是</Radio>
  5360. <Radio value={0}>否</Radio>
  5361. </Radio.Group>
  5362. </FormItem>
  5363. </div> : null}
  5364. <div className="clearfix">
  5365. <div style={{
  5366. paddingLeft: '8%',
  5367. }}>
  5368. <div style={{color:'#000',fontWeight:500}}>
  5369. 特别说明
  5370. <span style={{color: '#58a3ff',}}>(针对项目的特殊情况说明)</span>
  5371. </div>
  5372. <div style={{display:'flex',alignItems:'center',paddingTop: '10px'}}>
  5373. <div>备注:</div>
  5374. <Input
  5375. type="textarea"
  5376. placeholder="请输入备注"
  5377. rows={3}
  5378. style={{
  5379. width:'33%',
  5380. marginLeft: '10px',
  5381. }}
  5382. value={this.state.specialComment}
  5383. onChange={(e) => {
  5384. this.setState({ specialComment: e.target.value });
  5385. }}
  5386. />
  5387. </div>
  5388. </div>
  5389. {
  5390. // <FormItem
  5391. // className="half-item"
  5392. // {...formItemLayout}
  5393. // label="(退单)备注"
  5394. // >
  5395. // <Input
  5396. // type="textarea"
  5397. // placeholder="请输入备注"
  5398. // rows={2}
  5399. // value={this.state.refundContent}
  5400. // onChange={(e) => {
  5401. // this.setState({ refundContent: e.target.value })
  5402. // }}
  5403. // />
  5404. // </FormItem>
  5405. }
  5406. </div>
  5407. <div className="clearfix">
  5408. <h3 className="sub-title">订单负责人信息</h3>
  5409. <FormItem
  5410. className="half-item"
  5411. {...formItemLayout}
  5412. label="负责人"
  5413. >
  5414. <span>
  5415. {this.state.salesmanName + '(' + this.state.depName + ')'}
  5416. </span>
  5417. </FormItem>
  5418. <FormItem
  5419. className="half-item"
  5420. {...formItemLayout}
  5421. label="负责人电话"
  5422. >
  5423. <span>{this.state.salesmanMobile}</span>
  5424. </FormItem>
  5425. <FormItem
  5426. className="half-item"
  5427. {...formItemLayout}
  5428. label="当前财务负责人"
  5429. >
  5430. <span>{this.state.nowFinance}</span>
  5431. </FormItem>
  5432. <FormItem
  5433. className="half-item"
  5434. {...formItemLayout}
  5435. label="当前财务负责人电话"
  5436. >
  5437. <span>{this.state.nowFinanceMobile}</span>
  5438. </FormItem>
  5439. <FormItem
  5440. className="half-item"
  5441. {...formItemLayout}
  5442. style={{ opacity: '.5' }}
  5443. label="原负责人"
  5444. >
  5445. <span>{this.state.oldSalesmanName}</span>
  5446. </FormItem>
  5447. <FormItem
  5448. className="half-item"
  5449. {...formItemLayout}
  5450. style={{ opacity: '.5' }}
  5451. label="原负责人电话"
  5452. >
  5453. <span>{this.state.oldSalesmanMobile}</span>
  5454. </FormItem>
  5455. <FormItem
  5456. className="half-item"
  5457. {...formItemLayout}
  5458. style={{ opacity: '.5' }}
  5459. label="实际财务操作人"
  5460. >
  5461. <span>{this.state.financeName}</span>
  5462. </FormItem>
  5463. <FormItem
  5464. className="half-item"
  5465. {...formItemLayout}
  5466. style={{ opacity: '.5' }}
  5467. label="实际财务操作人电话"
  5468. >
  5469. <span>{this.state.financeMobile}</span>
  5470. </FormItem>
  5471. <FormItem
  5472. className="half-item"
  5473. {...formItemLayout}
  5474. label="订单留言"
  5475. >
  5476. <span>{this.state.orderRemarks}</span>
  5477. </FormItem>
  5478. <FormItem className="half-item" {...formItemLayout} label="">
  5479. <Button onClick={this.getOrderLog}>查看订单日志</Button>
  5480. </FormItem>
  5481. <OrderRiZi
  5482. dataSourcerizhi={this.state.dataSourceY}
  5483. closeOrderLog={this.closeOrderLog}
  5484. visible={this.state.avisible}
  5485. loading={this.state.loading}
  5486. />
  5487. </div>
  5488. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  5489. <div className="clearfix">
  5490. <h3 className="sub-title">联系信息</h3>
  5491. <FormItem
  5492. className="half-item"
  5493. {...formItemLayout}
  5494. label="客户名称"
  5495. >
  5496. <span>{this.state.userName}</span>
  5497. <EnterpriseNameChange
  5498. type='journal'
  5499. style={{ marginLeft: 10 }}
  5500. enterpriseId={this.state.orderUid}/>
  5501. </FormItem>
  5502. <FormItem
  5503. className="half-item"
  5504. {...formItemLayout}
  5505. label="企业法人"
  5506. >
  5507. <Input
  5508. placeholder="请输入法人名称"
  5509. value={this.state.legalPerson}
  5510. style={{ width: '200px' }}
  5511. onChange={(e) => {
  5512. this.setState({ legalPerson: e.target.value })
  5513. }}
  5514. ref="commodityQuantity"
  5515. />
  5516. </FormItem>
  5517. <FormItem
  5518. className="half-item"
  5519. {...formItemLayout}
  5520. label="法人电话"
  5521. >
  5522. <Input
  5523. placeholder="请输入法人电话"
  5524. value={this.state.legalPersonTel}
  5525. style={{ width: '200px' }}
  5526. onChange={(e) => {
  5527. this.setState({ legalPersonTel: e.target.value })
  5528. }}
  5529. ref="commodityQuantity"
  5530. />
  5531. </FormItem>
  5532. <FormItem
  5533. className="half-item"
  5534. {...formItemLayout}
  5535. label="客户联系人"
  5536. >
  5537. <Input
  5538. placeholder="请输入联系人名称"
  5539. value={this.state.contacts}
  5540. style={{ width: '200px' }}
  5541. onChange={(e) => {
  5542. this.setState({ contacts: e.target.value })
  5543. }}
  5544. ref="commodityQuantity"
  5545. />
  5546. </FormItem>
  5547. <FormItem
  5548. className="half-item"
  5549. {...formItemLayout}
  5550. label="联系人电话"
  5551. >
  5552. <Input
  5553. placeholder="请输入联系人电话"
  5554. value={this.state.contactMobile}
  5555. style={{ width: '200px' }}
  5556. onChange={(e) => {
  5557. this.setState({ contactMobile: e.target.value })
  5558. }}
  5559. ref="commodityQuantity"
  5560. />
  5561. </FormItem>
  5562. <FormItem
  5563. className="half-item"
  5564. {...formItemLayout}
  5565. label="企业地址"
  5566. >
  5567. <Cascader
  5568. options={areaSelect()}
  5569. value={this.state.ProvinceCity}
  5570. placeholder="选择城市"
  5571. style={{ width: '200px' }}
  5572. onChange={(e) => {
  5573. this.setState({ ProvinceCity: e })
  5574. }}
  5575. />
  5576. </FormItem>
  5577. <FormItem
  5578. className="half-item"
  5579. {...formItemLayout}
  5580. label=""
  5581. />
  5582. <FormItem className="half-item" {...formItemLayout} label="">
  5583. <Input
  5584. placeholder="请输入详细地址"
  5585. value={this.state.postalAddress}
  5586. style={{ width: '200px', marginLeft: '12em' }}
  5587. onChange={(e) => {
  5588. this.setState({ postalAddress: e.target.value })
  5589. }}
  5590. ref="commodityQuantity"
  5591. />
  5592. </FormItem>
  5593. </div>
  5594. {/*<hr style={{border:'1px dashed #aaa', width:"90%",margin:'auto'}}/>*/}
  5595. <div className="clearfix">
  5596. <h3 className="sub-title">项目信息</h3>
  5597. <FormItem
  5598. className="half-item"
  5599. {...formItemLayout}
  5600. label="项目编号"
  5601. >
  5602. <span>
  5603. {this.state.splitStatus == 2
  5604. ? this.state.splitSuper + '-' + this.state.splitId
  5605. : this.state.id}
  5606. </span>
  5607. </FormItem>
  5608. <FormItem
  5609. className="half-item"
  5610. {...formItemLayout}
  5611. label="项目名称"
  5612. >
  5613. <span>{this.state.taskName}</span>
  5614. </FormItem>
  5615. {/*<FormItem*/}
  5616. {/* className="half-item"*/}
  5617. {/* {...formItemLayout}*/}
  5618. {/* label="项目状态"*/}
  5619. {/*>*/}
  5620. {/* <Select*/}
  5621. {/* placeholder="选择项目状态"*/}
  5622. {/* style={{ width: '200px' }}*/}
  5623. {/* value={this.state.taskStatus}*/}
  5624. {/* onChange={(e) => {*/}
  5625. {/* this.setState({ taskStatus: e })*/}
  5626. {/* }}*/}
  5627. {/* >*/}
  5628. {/* {taskStatus.map(function (item) {*/}
  5629. {/* return (*/}
  5630. {/* <Select.Option key={item.value}>*/}
  5631. {/* {item.key}*/}
  5632. {/* </Select.Option>*/}
  5633. {/* )*/}
  5634. {/* })}*/}
  5635. {/* </Select>*/}
  5636. {/*</FormItem>*/}
  5637. <FormItem
  5638. className="half-item"
  5639. {...formItemLayout}
  5640. label="项目类别"
  5641. >
  5642. <span>{this.state.cname}</span>
  5643. </FormItem>
  5644. <FormItem
  5645. className="half-item"
  5646. {...formItemLayout}
  5647. label="证书编号"
  5648. >
  5649. {this.state.certificateNumber}
  5650. </FormItem>
  5651. </div>
  5652. <div className="clearfix" style={{ marginTop: '10px' }}>
  5653. <FormItem
  5654. labelCol={{ span: 3 }}
  5655. wrapperCol={{ span: 14 }}
  5656. label="附件"
  5657. >
  5658. <Picture
  5659. domId={'myTask2'}
  5660. fileList={(e) => {
  5661. this.setState({ attachmentUrl: e })
  5662. }}
  5663. pictureUrl={this.state.attachmentUrl}
  5664. visible={this.props.visible}
  5665. data={{
  5666. sign: 'order_task_file',
  5667. url: '/api/admin/orderProject/uploadOrderTaskFile',
  5668. }}
  5669. />
  5670. </FormItem>
  5671. </div>
  5672. <div className="clearfix">
  5673. <FormItem
  5674. labelCol={{ span: 3 }}
  5675. wrapperCol={{ span: 16 }}
  5676. label="项目说明"
  5677. >
  5678. <Input
  5679. type="textarea"
  5680. placeholder="请输入项目说明"
  5681. rows={4}
  5682. disabled
  5683. value={this.state.taskComment}
  5684. onChange={(e) => {
  5685. if(this.state.taskCommentData){
  5686. let len = this.state.taskCommentData.length;
  5687. if(e.target.value.slice(0,len) !== this.state.taskCommentData){
  5688. message.warning('项目说明不允许删除与修改已存在的内容');
  5689. return;
  5690. }
  5691. }
  5692. this.setState({ taskComment: e.target.value })
  5693. }}
  5694. />
  5695. </FormItem>
  5696. </div>
  5697. <div className="clearfix">
  5698. <h3 className="sub-title">项目申报进度</h3>
  5699. <DeclarationProgress
  5700. timeRecordparse={this.state.timeRecordparse}
  5701. startDate={this.state.startDate}
  5702. taskDate={this.state.taskDate}
  5703. list={[
  5704. {id:4,name:'完成时间',value:this.state.endDate},
  5705. {id:6,name:'受理时间',value:this.state.acceptDate},
  5706. {id:8,name:'公示时间',value:this.state.publicityDate},
  5707. {id:10,name:'发证时间',value:this.state.licenceDate},
  5708. {id:15,name:'立项金额',value:this.state.setUpAmount}
  5709. ]}/>
  5710. {/*高新和科技项目显示 bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
  5711. {/*cSort: 3 科技项目 6: 会员*/}
  5712. {(this.state.bpType === 5 || this.state.cSort === 3) && <FormItem
  5713. className="half-item"
  5714. {...formItemLayout}
  5715. label="申报批次"
  5716. >
  5717. <Select
  5718. value={
  5719. this.state.declarationBatch
  5720. ? this.state.declarationBatch
  5721. : undefined
  5722. }
  5723. placeholder="请选择批次"
  5724. style={{ width: 200 }}
  5725. onChange={(e) => {
  5726. this.setState({
  5727. declarationBatch: e,
  5728. })
  5729. }}
  5730. >
  5731. <Option value={1}>第一批</Option>
  5732. <Option value={2}>第二批</Option>
  5733. <Option value={3}>第三批</Option>
  5734. <Option value={4}>第四批</Option>
  5735. </Select>
  5736. </FormItem>}
  5737. <FormItem
  5738. className="half-item"
  5739. {...formItemLayout}
  5740. label="软著派单数量"
  5741. >
  5742. <span>{this.state.commodityQuantity}</span>
  5743. <Button
  5744. type="primary"
  5745. size="small"
  5746. style={{ marginLeft: '45px' }}
  5747. onClick={this.addcontact}
  5748. >
  5749. +增加下证信息
  5750. </Button>
  5751. </FormItem>
  5752. <div className="patent-table">
  5753. <Spin spinning={this.state.loading}>
  5754. <Table
  5755. columns={this.state.ContactsLists}
  5756. dataSource={this.state.contactList}
  5757. pagination={false}
  5758. bordered
  5759. size="small"
  5760. />
  5761. </Spin>
  5762. </div>
  5763. </div>
  5764. <div className="clearfix">
  5765. <h3 className="sub-title">项目业务</h3>
  5766. <div className="patent-table">
  5767. <Spin spinning={this.state.loading}>
  5768. <Table
  5769. columns={this.state.columnsX}
  5770. dataSource={this.state.dataSourceX}
  5771. pagination={this.state.paginations}
  5772. onRowClick={this.tableRowClickX}
  5773. bordered
  5774. size="small"
  5775. />
  5776. </Spin>
  5777. </div>
  5778. </div>
  5779. <div className="clearfix">
  5780. <Button
  5781. className="cancel"
  5782. type="primary"
  5783. onClick={()=>{
  5784. this.tijiaoOk();
  5785. }}
  5786. style={{ marginLeft: '200px', marginTop: '10px' }}
  5787. htmlType="submit"
  5788. >
  5789. 保存
  5790. </Button>
  5791. <Button
  5792. className="cancel"
  5793. type="ghost"
  5794. onClick={this.visitCancel}
  5795. style={{ marginLeft: '50px', marginTop: '10px' }}
  5796. >
  5797. 取消
  5798. </Button>
  5799. </div>
  5800. </TabPane>
  5801. <TabPane tab="外包/供应商信息" key="2">
  5802. <Spin spinning={this.state.sureOutLoading || this.state.waiDetailLoading || this.state.payNodeLoading || this.state.thirdInfoLoading}>
  5803. {this.state.refundStatus != 0 && this.state.refundStatus != 1 ? (
  5804. <div style={{ marginTop: 10 }}>
  5805. <div className="clearfix">
  5806. <FormItem
  5807. className="half-item"
  5808. labelCol={{ span: 3 }}
  5809. wrapperCol={{ span: 14 }}
  5810. label={
  5811. <span>
  5812. <strong style={{ color: '#f00' }}>*</strong>
  5813. 类型
  5814. </span>
  5815. }
  5816. >
  5817. <Radio.Group
  5818. disabled={this.state.payNodeLoading || this.state.thirdInfoLoading}
  5819. value={this.state.startType}
  5820. onChange={(e) => {
  5821. let _this = this;
  5822. if(this.state.thirdInfoList.length >0){
  5823. confirm({
  5824. title: '确定要切换吗?',
  5825. content: '切换将删除所有第三信息和付款节点',
  5826. onOk() {
  5827. return new Promise((resolve, reject) => {
  5828. _this.setState({ startType: e.target.value },()=>{
  5829. _this.projectTypeTabContent(_this.state.projectType);
  5830. })
  5831. _this.confirmDeletNew(-1,resolve,reject)
  5832. if(_this.state.payNodeList.length > 0){
  5833. _this.payNodeConfirmDeletNew(-1,resolve,reject);
  5834. }
  5835. }).catch(() => console.log('Oops errors!'));
  5836. },
  5837. onCancel() {},
  5838. });
  5839. }else{
  5840. this.setState({ startType: e.target.value },()=>{
  5841. this.projectTypeTabContent(this.state.projectType);
  5842. })
  5843. }
  5844. }}
  5845. >
  5846. <Radio value={0}>外包(不走总部)</Radio>
  5847. <Radio value={1}>供应商信息</Radio>
  5848. </Radio.Group>
  5849. </FormItem>
  5850. </div>
  5851. {/* 专利类型 */}
  5852. <div
  5853. className="clearfix"
  5854. style={{
  5855. display: this.state.projectType === 1 ? 'block' : 'none',
  5856. }}
  5857. >
  5858. <FormItem
  5859. className="half-item"
  5860. labelCol={{ span: 4 }}
  5861. wrapperCol={{ span: 14 }}
  5862. label={
  5863. <span>
  5864. <strong style={{ color: '#f00' }}>*</strong>
  5865. 专利类型
  5866. </span>
  5867. }
  5868. >
  5869. <Radio.Group
  5870. disabled={this.state.payNodeLoading || this.state.thirdInfoLoading}
  5871. value={this.state.patentType}
  5872. onChange={(e) => {
  5873. let _this = this;
  5874. if(this.state.thirdInfoList.length >0){
  5875. confirm({
  5876. title: '确定要切换吗?',
  5877. content: '切换将删除所有第三信息和付款节点',
  5878. onOk() {
  5879. return new Promise((resolve, reject) => {
  5880. _this.setState({ patentType: e.target.value },()=>{
  5881. _this.projectTypeTabContent(_this.state.projectType);
  5882. })
  5883. _this.confirmDeletNew(-1,resolve,reject)
  5884. if(_this.state.payNodeList.length > 0){
  5885. _this.payNodeConfirmDeletNew(-1,resolve,reject);
  5886. }
  5887. }).catch(() => console.log('Oops errors!'));
  5888. },
  5889. onCancel() {},
  5890. });
  5891. }else{
  5892. this.setState({ patentType: e.target.value },()=>{
  5893. this.projectTypeTabContent(this.state.projectType);
  5894. })
  5895. }
  5896. }}
  5897. >
  5898. <Radio value={0}>专利申请/变更/转让</Radio>
  5899. <Radio value={1}>专利买卖</Radio>
  5900. </Radio.Group>
  5901. </FormItem>
  5902. </div>
  5903. <div
  5904. className="clearfix"
  5905. style={{
  5906. display: this.state.projectType === 1? 'block' : 'none',
  5907. }}
  5908. >
  5909. <FormItem
  5910. className="half-item"
  5911. labelCol={{ span: 3 }}
  5912. wrapperCol={{ span: 14 }}
  5913. label={
  5914. <span>
  5915. <strong style={{ color: '#f00' }}>*</strong>
  5916. 专利名称
  5917. </span>
  5918. }
  5919. >
  5920. <Radio.Group
  5921. disabled={this.state.payNodeLoading || this.state.thirdInfoLoading}
  5922. value={this.state.patentNameType}
  5923. onChange={(e) => {
  5924. let _this = this;
  5925. if(this.state.thirdInfoList.length >0){
  5926. confirm({
  5927. title: '确定要切换吗?',
  5928. content: '切换将删除所有第三信息和付款节点',
  5929. onOk() {
  5930. return new Promise((resolve, reject) => {
  5931. _this.setState({ patentNameType: e.target.value },()=>{
  5932. _this.projectTypeTabContent(_this.state.projectType);
  5933. })
  5934. _this.confirmDeletNew(-1,resolve,reject)
  5935. if(_this.state.payNodeList.length > 0){
  5936. _this.payNodeConfirmDeletNew(-1,resolve,reject);
  5937. }
  5938. }).catch(() => console.log('Oops errors!'));
  5939. },
  5940. onCancel() {},
  5941. });
  5942. }else{
  5943. this.setState({ patentNameType: e.target.value },()=>{
  5944. this.projectTypeTabContent(this.state.projectType);
  5945. })
  5946. }
  5947. }}
  5948. >
  5949. <Radio value={0}>实用新型专利</Radio>
  5950. <Radio value={1}>发明专利</Radio>
  5951. <Radio value={2}>外观专利</Radio>
  5952. {/*<Radio value={3}>*/}
  5953. {/* 其他*/}
  5954. {/* <Input*/}
  5955. {/* disabled={this.state.patentNameType !== 3}*/}
  5956. {/* value={this.state.patentName}*/}
  5957. {/* style={{ marginLeft: '15px' }}*/}
  5958. {/* onChange={(e) => {*/}
  5959. {/* this.setState({*/}
  5960. {/* patentName: e.target.value,*/}
  5961. {/* })*/}
  5962. {/* }}*/}
  5963. {/* placeholder="请填写专利名称"*/}
  5964. {/* />*/}
  5965. {/*</Radio>*/}
  5966. </Radio.Group>
  5967. </FormItem>
  5968. </div>
  5969. {this.state.orderTaskOfficialCost === 1 && this.state.startType !== 0 ? <div className="clearfix">
  5970. <FormItem
  5971. className="half-item"
  5972. labelCol={{ span: 4 }}
  5973. wrapperCol={{ span: 14 }}
  5974. label={<span>官费</span>}>
  5975. <Radio.Group
  5976. value={this.state.containOfficialFees}
  5977. onChange={(e) => {
  5978. this.setState({ containOfficialFees: e.target.value })
  5979. }}
  5980. >
  5981. <Radio value={0}>实际已缴费</Radio>
  5982. <Radio value={1}>实际未缴费</Radio>
  5983. </Radio.Group>
  5984. </FormItem>
  5985. </div> : <div/>}
  5986. {/* 第三方信息专利 */}
  5987. <div
  5988. style={{
  5989. // display: this.state.type == 1 ? "block" : "none",
  5990. display: this.state.type == 1 ? 'block' : 'block',
  5991. }}
  5992. >
  5993. <span
  5994. style={{
  5995. fontSize: '18px',
  5996. }}
  5997. >
  5998. 第三方信息
  5999. </span>
  6000. <span
  6001. style={{
  6002. display: 'inline-block',
  6003. marginLeft: 10,
  6004. color: 'red',
  6005. }}
  6006. >
  6007. 金额总计(万元): {this.state.allTotalAmount}
  6008. </span>
  6009. <Button
  6010. type="primary"
  6011. onClick={(e) => {
  6012. //this.state.startType 类型为外包时,当普通单
  6013. if(this.state.projectType === 1 && this.state.patentType === -1){
  6014. message.info('请先选择专利类型');
  6015. }else if(this.state.projectType === 1 && this.state.patentNameType === -1){
  6016. message.info('请先选择专利名称');
  6017. } else{
  6018. this.addThirdList()
  6019. }
  6020. }}
  6021. style={{
  6022. float: 'right',
  6023. marginRight: '50px',
  6024. marginBottom: '15px',
  6025. }}>
  6026. +新增供应商名称
  6027. </Button>
  6028. </div>
  6029. <div
  6030. className="clearfix"
  6031. style={{
  6032. // display: this.state.type == 1 ? "block" : "none",
  6033. display: this.state.type == 1 ? 'block' : 'block',
  6034. }}
  6035. >
  6036. <Spin spinning={this.state.thirdInfoLoading}>
  6037. <Form layout="horizontal">
  6038. <Table
  6039. pagination={false}
  6040. columns={this.state.ContactsListsNew}
  6041. dataSource={this.state.thirdInfoList}
  6042. onRowClick={this.tableRowClickOne}
  6043. scroll={{ x: 'max-content', y: 0 }}
  6044. bordered
  6045. size="small"
  6046. />
  6047. <Col
  6048. span={24}
  6049. offset={9}
  6050. style={{ marginTop: '15px' }}
  6051. />
  6052. </Form>
  6053. </Spin>
  6054. </div>
  6055. {/*如果是软著类或者专利类的专利申请,隐藏付款节点*/}
  6056. <div
  6057. style={{
  6058. display: this.state.startType === 0 ? 'block' : ((this.state.projectType === 1 && this.state.patentType === 0) || this.state.projectType === 2? 'none' : 'block'), //0正常 1专利 2软著 3审计
  6059. }}
  6060. >
  6061. <span
  6062. style={{
  6063. fontSize: '18px',
  6064. }}
  6065. >
  6066. 付款节点
  6067. </span>
  6068. <span
  6069. style={{
  6070. display: 'inline-block',
  6071. marginLeft: 10,
  6072. color: 'red',
  6073. }}
  6074. />
  6075. <Button
  6076. type="primary"
  6077. onClick={(e) => {
  6078. this.addPayNode()
  6079. }}
  6080. style={{
  6081. float: 'right',
  6082. marginRight: '50px',
  6083. marginBottom: '15px',
  6084. }}
  6085. >
  6086. +新增付款节点
  6087. </Button>
  6088. </div>
  6089. {/*如果是软著类或者专利类的专利申请,隐藏付款节点但当为外包类型时,无需隐藏*/}
  6090. <div
  6091. className="clearfix"
  6092. style={{
  6093. display: this.state.startType === 0 ? 'block' : ((this.state.projectType === 1 && this.state.patentType === 0) || this.state.projectType === 2? 'none' : 'block'), //0正常 1专利 2软著 3审计
  6094. }}
  6095. >
  6096. <Spin spinning={this.state.payNodeLoading}>
  6097. <Form layout="horizontal">
  6098. <Table
  6099. pagination={false}
  6100. columns={this.state.PayNodeTableColunms}
  6101. dataSource={this.state.payNodeList}
  6102. onRowClick={this.payNodeTableRowClickOne}
  6103. scroll={{ x: 'max-content', y: 0 }}
  6104. bordered
  6105. size="small"
  6106. />
  6107. <Col
  6108. span={24}
  6109. offset={9}
  6110. style={{ marginTop: '15px' }}
  6111. />
  6112. </Form>
  6113. </Spin>
  6114. </div>
  6115. <div className="clearfix">
  6116. <FormItem
  6117. className="half-item"
  6118. {...formItemLayout}
  6119. label={
  6120. <span>
  6121. <strong style={{ color: '#f00' }}>*</strong>备注
  6122. </span>
  6123. }
  6124. >
  6125. <TextArea
  6126. rows={4}
  6127. value={this.state.outsourceRemarks}
  6128. onChange={(e) => {
  6129. this.setState({
  6130. outsourceRemarks: e.target.value,
  6131. })
  6132. }}
  6133. placeholder="请输入备注"
  6134. />
  6135. </FormItem>
  6136. </div>
  6137. <p
  6138. className="tip"
  6139. style={{
  6140. paddingBottom: '12px',
  6141. width: '240px',
  6142. marginLeft: '145px',
  6143. color: 'red',
  6144. }}
  6145. >
  6146. 首次派单项目,需上传协议,第2次起,同项目,只需写外包公司
  6147. </p>
  6148. <div className="clearfix">
  6149. <FormItem
  6150. labelCol={{ span: 4 }}
  6151. wrapperCol={{ span: 18 }}
  6152. label={
  6153. <span>
  6154. 合同/协议扫描件
  6155. </span>
  6156. }
  6157. >
  6158. <PicturesWall
  6159. domId={'myTask4'}
  6160. fileList={this.getOrgCodeUrlWai}
  6161. pictureUrl={this.state.pictureUrl}
  6162. />
  6163. <p style={{ color: 'red' }}>图片建议:要清晰。</p>
  6164. </FormItem>
  6165. </div>
  6166. {/*只有审核拒绝和第一次发起外包的时候才要填写发起原因 如果是类型为供应商则不需要发起原因*/}
  6167. {/*this.state.startType 0外包 1供应商*/}
  6168. {(typeof this.state.refundStatus === 'undefined' || this.state.refundStatus === 2) && this.state.startType !== 1 ? <div className="clearfix">
  6169. <FormItem
  6170. className="half-item"
  6171. {...formItemLayout}
  6172. label={
  6173. <span>
  6174. <strong style={{ color: '#f00' }}>*</strong>发起原因
  6175. </span>
  6176. }
  6177. >
  6178. <TextArea
  6179. rows={4}
  6180. value={this.state.reason}
  6181. onChange={(e) => {
  6182. this.setState({
  6183. reason: e.target.value,
  6184. })
  6185. }}
  6186. placeholder="请输入发起原因"
  6187. />
  6188. </FormItem>
  6189. </div> : <div/>}
  6190. <div className="clearfix">
  6191. <div
  6192. style={{
  6193. display: 'inline-black',
  6194. textAlign: 'center',
  6195. }}
  6196. >
  6197. <Button
  6198. type="primary"
  6199. loading={this.state.loading}
  6200. onClick={()=>{
  6201. this.sureOut(this.state.startType);
  6202. }}
  6203. >
  6204. {
  6205. this.state.startType === 0 ? "确认发起外包,不通过总部" : "提交供应商信息"
  6206. }
  6207. </Button>
  6208. <p className="tip" style={{ color: 'red' }}>
  6209. {
  6210. this.state.startType === 0 ? "提示:高于总部价格,费用个人承担" : "确定提交供应商信息,提交后,不可修改"
  6211. }
  6212. </p>
  6213. </div>
  6214. </div>
  6215. </div>
  6216. ) : (
  6217. <div>
  6218. {
  6219. this.state.speVisible && this.state.activeKey === '2' ?
  6220. <CheckProject
  6221. {...this.props}
  6222. tid={this.state.tid}
  6223. orderTaskOfficialCost={this.state.orderTaskOfficialCost} //是否含官费 0无1有
  6224. containOfficialFees={this.state.containOfficialFees} //0:实际已缴费 1:实际未缴费
  6225. oldInfor={this.state.oldInfor}
  6226. projectType={this.state.projectType} //0正常 1专利 2软著 3审计
  6227. patentNameType={this.state.patentNameType}
  6228. patentName={this.state.patentName}
  6229. patentType={this.state.patentType}
  6230. status={this.state.refundStatus}
  6231. isPreviewPay={true}
  6232. mid={this.state.mid}
  6233. thirdInfoList={this.state.thirdInfoList}
  6234. dataSource={this.state.payNodeList}
  6235. outsourceRemarks={this.state.outsourceRemarks}
  6236. fileList={this.state.pictureUrl}
  6237. startType={this.state.startType}
  6238. projectStatus={this.state.projectStatus}
  6239. onRefresh={()=>{
  6240. this.waiDetail();
  6241. this.thirdTable(this.state.tid);
  6242. this.getSelectOutsourceLog(this.state.tid);
  6243. this.payNodeTable(this.state.tid)
  6244. this.loadData(this.state.page)
  6245. }}
  6246. /> : <div/>
  6247. }
  6248. </div>
  6249. )}
  6250. {(this.state.refundStatus == 1 ||
  6251. this.state.refundStatus == 0 ||
  6252. this.state.refundStatus == 2) &&
  6253. this.state.startType !== 1
  6254. ? (
  6255. <div className="clearfix"
  6256. style={{
  6257. display: this.state.refundStatus == 0 ? 'none' : 'block',
  6258. }}
  6259. >
  6260. <hr className="division" />
  6261. {parseInt(this.state.startType) !== 1 ? <div style={{
  6262. color:'#F00',
  6263. fontWeight: 'bolder',
  6264. paddingBottom: '20px',
  6265. }}>
  6266. 审核结果: <span style={{paddingLeft:'20px'}}>{getRefundStatus(this.state.refundStatus)}</span>
  6267. </div> : <div/>}
  6268. <div className="outsourceLogList">
  6269. {
  6270. this.state.outsourceLogs && this.state.outsourceLogs.map((value,index)=>(
  6271. <div key={index} className="outsourceLogItem outsource">
  6272. <div style={{
  6273. display:'flex',
  6274. flexFlow:'row nowrap',
  6275. paddingBottom: '3px',
  6276. paddingTop: '3px',
  6277. }}>
  6278. <div>
  6279. {value.aname}
  6280. </div>
  6281. <div style={{paddingLeft:'5px'}}>
  6282. {
  6283. value.status === 0 ?
  6284. <Tag color="#2db7f5">发起外包审核</Tag> :
  6285. value.status === 1 ? <Tag color="#87d068">通过</Tag> :
  6286. <Tag color="#f50">驳回</Tag>
  6287. }
  6288. </div>
  6289. <div style={{
  6290. wordBreak: 'break-all',
  6291. maxWidth:'67%',
  6292. }}>
  6293. {value.remarks}
  6294. </div>
  6295. <div style={{paddingLeft: '10px'}}>
  6296. {value.createTimes}
  6297. </div>
  6298. </div>
  6299. </div>
  6300. ))
  6301. }
  6302. </div>
  6303. </div>
  6304. ) : (
  6305. ''
  6306. )}
  6307. </Spin>
  6308. </TabPane>
  6309. {!this.props.isZxs || (this.state.isHuiyuan && this.props.isZxs) ? (
  6310. <TabPane tab="订单详情" key="3">
  6311. <Spin spinning={this.state.loading}>
  6312. <OrderDetail
  6313. orderUid={this.state.orderUid}
  6314. orderData={this.state.orderData}
  6315. getOrderLog={this.getOrderLog}
  6316. dataSourceX={this.state.dataSourceX}
  6317. contactList={this.state.jiedian}
  6318. orderNo={this.state.orderNo}
  6319. totalCui={this.state.totalCui}
  6320. contactListNew={this.state.jiedianNew}
  6321. pictureUrl={this.state.contractPictureUrl}
  6322. />
  6323. </Spin>
  6324. </TabPane>
  6325. ) : (
  6326. ''
  6327. )}
  6328. </Tabs>
  6329. </div>
  6330. </Modal> : <div/>}
  6331. {this.state.visibleA ? <Modal
  6332. width="800px"
  6333. visible={this.state.visibleA}
  6334. onCancel={this.visitCancelA}
  6335. title="操作日志"
  6336. footer=""
  6337. className="admin-desc-content"
  6338. >
  6339. <div className="patent-table patent-table-center">
  6340. <Spin spinning={this.state.loading}>
  6341. <Table
  6342. columns={this.state.columnsA}
  6343. dataSource={this.state.dataSourceA}
  6344. pagination={false}
  6345. bordered
  6346. size="small"
  6347. />
  6348. </Spin>
  6349. </div>
  6350. </Modal> : null}
  6351. {this.state.timeVisible ? <Modal
  6352. title="工时记录"
  6353. visible={this.state.timeVisible}
  6354. onCancel={this.timeClose}
  6355. width={800}
  6356. footer={null}
  6357. >
  6358. <Spin spinning={this.state.loading}>
  6359. <Table
  6360. columns={this.state.columnsTime}
  6361. dataSource={this.state.dataSourceTime}
  6362. pagination={false}
  6363. scroll={{ x: 'max-content', y: 0 }}
  6364. bordered
  6365. size={'small'}
  6366. />
  6367. <p style={{ marginTop: 10, color: 'red' }}>
  6368. 累计工时(小时):{this.state.recordHour}
  6369. </p>
  6370. </Spin>
  6371. </Modal> :null}
  6372. {this.state.ThirdListVisible ? <NewSupplier
  6373. patentNameType={this.state.patentNameType}
  6374. ThirdId={this.state.ThirdId}
  6375. tid={this.state.tid}
  6376. patentType={this.state.patentType}
  6377. projectType={this.state.startType === 0 ? 0 : this.state.projectType}
  6378. realProjectType={this.state.projectType} //真实的项目类型
  6379. startType={this.state.startType} //项目类型 0外包 1供应商
  6380. thirdCompanyName={this.state.thirdCompanyName}
  6381. thirdUnitPrice={this.state.thirdUnitPrice}
  6382. thirdQuantity={this.state.thirdQuantity}
  6383. thirdRemarks={this.state.thirdRemarks}
  6384. spinning={this.state.loading}
  6385. visible={this.state.ThirdListVisible}
  6386. thirdMaterial={this.state.thirdMaterial}
  6387. thirdUrgent={this.state.thirdUrgent}
  6388. audit={this.state.audit}
  6389. assets={this.state.assets}
  6390. income={this.state.income}
  6391. onDetermine={this.handleCancelq}
  6392. onCancel={()=>{
  6393. this.thirdTable(this.state.tid);
  6394. this.setState({
  6395. ThirdListVisible: false,
  6396. ThirdId: '', //供应商id
  6397. thirdCompanyName: '', //第三方名称
  6398. thirdUnitPrice: '', //单价
  6399. thirdQuantity: '', //数量
  6400. currentTotalPrice: '', //总价
  6401. thirdMaterial: 0, //有无材料
  6402. thirdUrgent: 0, //加急情况
  6403. thirdRemarks: '',
  6404. audit: 1,
  6405. assets: '',
  6406. income: '',
  6407. })
  6408. }}
  6409. otherOperations={(data)=>{
  6410. this.setState({
  6411. thirdMaterial: data.thirdMaterial,
  6412. thirdUrgent: data.thirdUrgent,
  6413. customerArr: data.customerArr,
  6414. thirdCompanyName: data.thirdCompanyName
  6415. })
  6416. }}/> : <div/>}
  6417. {this.state.PayNodeVisible ? <OperationPayNode
  6418. tid={this.state.tid}
  6419. cSort={this.state.cSort}
  6420. visible={this.state.PayNodeVisible}
  6421. thirdId={this.state.ThirdId}
  6422. thirdInfoList={this.state.thirdInfoList}
  6423. supplierList={this.state.PayNodeCompany}
  6424. payNodeInfor={this.state.payNodeInfor}
  6425. thirdUnitPrice={this.state.thirdUnitPrice}
  6426. onCancel={async ()=>{
  6427. this.setState({
  6428. PayNodeVisible: false,
  6429. payNodeInfor: {},
  6430. ThirdId: '',
  6431. thirdUnitPrice: '',
  6432. })
  6433. if(this.state.paySubject.length === 0 ){
  6434. await this.xiangqing(this.state.tid);
  6435. // 获取Csort
  6436. await this.getCsortData(localStorage.getItem('cSort'))
  6437. await this.payNodeTable(this.state.tid);
  6438. }else{
  6439. await this.payNodeTable(this.state.tid)
  6440. }
  6441. }}
  6442. /> : <div/>}
  6443. {this.state.projectSituationVisible ?
  6444. <NowProjectStatus
  6445. tid={this.state.tid}
  6446. cSort={parseInt(this.state.cSort)}
  6447. projectTypeJSON={this.state.timeRecord ? JSON.parse(this.state.timeRecord) : {}}
  6448. projectType={this.state.projectType}
  6449. projectStatus={this.state.projectStatus}
  6450. visible={this.state.projectSituationVisible}
  6451. oldData={{
  6452. endDate:this.state.endDate, //完成时间
  6453. acceptDate:this.state.acceptDate,//受理时间
  6454. publicityDate:this.state.publicityDate,//公示时间
  6455. licenceDate:this.state.licenceDate,//发证时间
  6456. setUpAmount:this.state.setUpAmount,//立项金额
  6457. }}
  6458. onCancel={()=>{
  6459. this.setState({
  6460. projectSituationVisible: false
  6461. })
  6462. }}
  6463. onPreservation={(value)=>{
  6464. this.xiangqing(this.state.id)
  6465. this.setState({
  6466. projectSituationVisible: false
  6467. })
  6468. }}
  6469. /> : null
  6470. }
  6471. {this.state.addnextVisible && <ProjectDetailsReadOnly
  6472. infor={this.state.dataInfor}
  6473. visible={this.state.addnextVisible}
  6474. onCancel={this.nextCancel}
  6475. />}
  6476. {this.state.projectLogVisible && <ProjectLog
  6477. projectLogId={this.state.projectLogId}
  6478. visible={this.state.projectLogVisible}
  6479. onCancel={()=>{
  6480. this.setState({
  6481. projectLogId: '',
  6482. projectLogVisible: false,
  6483. })
  6484. }}
  6485. />}
  6486. </div>
  6487. )
  6488. },
  6489. })
  6490. export default Task