myTask.jsx 261 KB

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