myTask.jsx 253 KB

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