chejianbaogong.vue 239 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485
  1. <template>
  2. <div style="margin-left: 0px;padding: 2px;">
  3. <header>
  4. <div style="height: 140px;">
  5. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 70px" @click="onBZ" >班组维护</el-button>
  6. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 90px" @click="onchanliang" v-if="zdtreeType === true" >日产量上报</el-button>
  7. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 70px" @click="onzhicheng" >制程检验</el-button>
  8. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 70px" @click="ondianjian" >设备点检</el-button>
  9. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 70px" @click="onxuncha" >管理巡查</el-button>
  10. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 95px" @click="onstatus" >设置机台状态</el-button>
  11. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 70px" @click="onyinban">印版领退</el-button>
  12. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 70px" @click="onClear" >换型清场</el-button>
  13. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 70px" @click="pd_gdprintonClick" >工单打印</el-button>
  14. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 95px" @click="gzSel" >员工工资查询</el-button>
  15. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 70px" @click="oncomplaints" >客诉记录</el-button>
  16. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 120px" @click="deldbcl_onclick" :disabled="dbclSelection === ''" title="当班产量明细" >当班产量明细删除</el-button>
  17. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 85px" @click="pd_lcdlistonClick" >流程单查询</el-button>
  18. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 16px;font-weight: bold;width: 165px" @click="scpconClick" >工单生产批次质量档案查询</el-button>
  19. <el-button type="primary" size="large" class="bt" style="color:white;font-size: 20px;font-weight: bold;width: 70px" @click="onOver" title="完工按钮" >完工</el-button>
  20. </div>
  21. </header>
  22. <el-container>
  23. <el-container>
  24. <el-main style="padding: 0px;">
  25. <div class="gva-search-box" style=" overflow: hidden; padding: 0; display: flex;">
  26. <div style="flex: 1; border: 0px magenta solid; margin: 0; padding: 0; margin-left: 20px; margin-top: 20px; color: red;">
  27. <el-row :gutter="20">
  28. <el-col :span="5">
  29. <el-form-item label="机台号" prop="id" label-width="60" class="zy-label"><el-input v-model="formData.机台号" readonly placeholder=""/></el-form-item>
  30. </el-col>
  31. <el-col :span="6">
  32. <el-form-item label="工单编号" prop="id"><el-input v-model="formData.工单编号" placeholder="" /></el-form-item>
  33. </el-col>
  34. <el-col :span="12">
  35. <el-form-item label=" "prop="name"><el-input v-model="formData.产品名称" readonly placeholder="" /></el-form-item>
  36. </el-col>
  37. </el-row>
  38. <el-row :gutter="20">
  39. <el-col :span="7">
  40. <el-form-item label="印件编号" style="font-size: 1.5vh;" prop="id"><el-input v-model="formData.印件号" readonly placeholder="" /></el-form-item>
  41. </el-col>
  42. <el-col :span="15">
  43. <el-form-item label="工序名称" prop="name"><el-input v-model="formData.工序名称" readonly placeholder="" /></el-form-item>
  44. </el-col>
  45. </el-row>
  46. <el-row :gutter="20">
  47. <el-col :span="4">
  48. <el-form-item label="班组成员" prop="id"></el-form-item>
  49. </el-col>
  50. </el-row>
  51. <el-row :gutter="1">
  52. <!-- 循环生成 el-input 组件 -->
  53. <el-col v-for="i in 6" :span="4" :key="i">
  54. <el-input v-model="formData[`sczl_bh${i}`]" readonly placeholder="" />
  55. </el-col>
  56. </el-row>
  57. <el-row :gutter="1">
  58. <!-- 循环生成 el-input 组件 -->
  59. <el-col v-for="i in 6" :span="4" :key="i">
  60. <el-input v-model="formData[`sczl_name${i}`]" readonly placeholder="" class="red-input"/>
  61. </el-col>
  62. </el-row>
  63. </div>
  64. <!-- overflow: hidden;flex: 1; -->
  65. <div style="border: 0px lawngreen solid; margin: 0; padding: 0;width:34%;">
  66. <el-table tooltip-effect="dark" :data="selectData" row-key="ID" highlight-current-row="true" border
  67. :row-style="{ height: '10px'}" :cell-style="{ padding: '0px'}"
  68. :header-row-style="{ height: '10px'}" style="width:100%;height: 28vh;" @row-dblclick="handleSelectClick" >
  69. <el-table-column prop="process" label="印件及工序"width="290" />
  70. <el-table-column prop="completed" label="已完成板数"/>
  71. </el-table>
  72. </div>
  73. </div>
  74. <!-- 表格列表信息 -->
  75. <div class="gva-table-box" style="margin-top: 10px;">
  76. <el-tabs v-model="activName" type="card" @tab-click="duohandleClick" >
  77. <el-tab-pane label="设备作业清单" @click.native="showTable('设备作业清单', 'first')" name="first" :class="{ 'active-tab': activeTab === 'first' }" style="font-size: 16px;">
  78. <el-table ref="multipleTable"
  79. :show-overflow-tooltip="true"
  80. highlight-current-row="true"
  81. :cell-class-name="sbzyqdsatusCellClass"
  82. :row-style="{ height: '40px' }"
  83. :cell-style="{ padding: '0px' }"
  84. :header-row-style="{ height: '40px' }"
  85. :header-cell-style="{ padding: '0px' }"
  86. @contextmenu.prevent="yjonRightClick"
  87. @row-click="yjupdateCompanyFunc"
  88. @row-dblclick="sjsbzyqdCompanyFunc"
  89. style="width: 100%;height: 330px;color:purple;font-weight: bold;" border tooltip-effect="dark"
  90. :data="sbzyData"
  91. row-key="ID"
  92. @selection-change="handleSelectionChange">
  93. <!-- <el-table-column type="selection" width="55" />-->
  94. <!-- <el-table-column align="left" label="选择" prop="bh" width="80"/> -->
  95. <el-table-column align="left" sortable label="工单编号|质量信息" prop="工单编号|质量信息" width="168"/>
  96. <el-table-column align="left" sortable label="印件资料" prop="印件资料" width="340" />
  97. <el-table-column align="left" sortable label="工序名称" prop="工序名称" width="300" />
  98. <el-table-column align="left" sortable label="计划产量/已完成" prop="计划产量/已完成" width="160"/>
  99. <el-table-column align="left" sortable label="装版时数" prop="装版时数" width="120"/>
  100. <el-table-column align="left" sortable label="工序产能" prop="工序产能" width="120"/>
  101. <el-table-column align="left" sortable label="计划工时" prop="计划工时" width="120"/>
  102. <el-table-column align="left" sortable label="计划生产时段" prop="计划生产时段" width="210" />
  103. <el-table-column align="left" sortable label="排产备注" prop="排产备注" width="120" />
  104. <el-table-column align="left" sortable label="产品名称" prop="产品名称" width="270" />
  105. </el-table>
  106. </el-tab-pane>
  107. <el-tab-pane label="班组人员及分配比例" @click="showTable('班组人员及分配比例')" name="second">
  108. <el-table ref="multipleTable"
  109. :show-overflow-tooltip="true"
  110. highlight-current-row="true"
  111. :row-style="{ height: '40px' }"
  112. :cell-style="{ padding: '0px' }"
  113. :header-row-style="{ height: '40px' }"
  114. :header-cell-style="{ padding: '0px' }"
  115. @contextmenu.prevent="bzonRightClick"
  116. @row-dblclick="gyupdateCompanyFunc"
  117. :row-class-name="rowClassStyle"
  118. :cell-class-name="bzryplanUsageCellClass"
  119. style="width: 100%;height: 400px;color:purple;font-weight: bold;"
  120. border
  121. tooltip-effect="dark"
  122. :data="FPData"
  123. row-key="ID"
  124. @selection-change="handleSelectionChange"
  125. @row-click="clickybupdate">
  126. <el-table-column type="selection" label="选择" width="55" />
  127. <el-table-column align="left" label="班组号" prop="班组号" width="70" />
  128. <el-table-column align="left" label="组员1" prop="0" width="180" />
  129. <el-table-column align="left" label="组员2" prop="1" width="180" />
  130. <el-table-column align="left" label="组员3" prop="2" width="180" />
  131. <el-table-column align="left" label="组员4" prop="3" width="180" />
  132. <el-table-column align="left" label="组员5" prop="4" width="180" />
  133. <el-table-column align="left" label="组员6" prop="5" width="100" />
  134. <el-table-column align="left" label="组员7" prop="6" width="100" />
  135. <el-table-column align="left" label="组员8" prop="7" width="100" />
  136. <el-table-column align="left" label="组员9" prop="8" width="100" />
  137. <el-table-column align="left" label="组员10" prop="9" width="120" />
  138. </el-table>
  139. </el-tab-pane>
  140. <el-tab-pane label="当班产量明细" @click="showsTable('当班产量明细')" name="third">
  141. <el-table ref="multipleTable" highlight-current-row="true" :show-overflow-tooltip="true" :row-style="{ height: '40px' }"
  142. :cell-style="{ padding: '0px'}" :header-row-style="{ height: '40px' }" :header-cell-style="{ padding: '0px' }"
  143. @row-dblclick="ybupdateCompanyFunc" @row-click="dbclmxclick" style="width: 100%;height: 400px;color:purple;font-weight: bold;" border tooltip-effect="dark"
  144. :data="CLMXData" row-key="ID" @selection-change="dbclmxSelectionChange">
  145. <el-table-column type="selection" width="55" />
  146. <el-table-column align="left" label="生产时段" prop="生产时间段" width="180"/>
  147. <el-table-column align="left" label="工单编号" prop="工单编号" width="120" />
  148. <el-table-column align="left" label="产品名称" prop="产品名称" width="240" />
  149. <el-table-column align="left" label="印件及工序" prop="印件及工序" width="320"/>
  150. <el-table-column align="left" label="标牌号" prop="标牌号" width="80"/>
  151. <el-table-column align="left" label="产量" prop="产量" width="100"/>
  152. <el-table-column align="left" label="制程废品" prop="制程废品" width="100" />
  153. <el-table-column align="left" label="制程次品" prop="制程次品" width="100" />
  154. <el-table-column align="left" label="前工序废" prop="前工序废" width="100" />
  155. <el-table-column align="left" label="来料异常" prop="来料异常" width="100"/>
  156. <el-table-column align="left" label="码开始行" prop="码开始行" width="100" />
  157. <el-table-column align="left" label="码结束行" prop="码结束行" width="100" />
  158. <el-table-column align="left" label="码包" prop="码包" width="100" />
  159. <el-table-column align="left" label="装版工时" prop="装版工时" width="100" />
  160. <el-table-column align="left" label="保养工时" prop="保养工时" width="100" />
  161. <el-table-column align="left" label="打样工时" prop="打样工时" width="100"/>
  162. <el-table-column align="left" label="异常停机工时" prop="异常停机工时" width="120"/>
  163. <el-table-column align="left" label="通电工时" prop="通电工时" width="100"/>
  164. <el-table-column align="left" label="主电表" prop="主电表" width="100"/>
  165. <el-table-column align="left" label="辅电表" prop="辅电表" width="100" />
  166. <el-table-column align="left" label="色度数" prop="色度" width="100" />
  167. </el-table>
  168. </el-tab-pane>
  169. <el-tab-pane label="检验记录" @click="showTable('检验记录')" name="fourth">
  170. <el-table ref="multipleTable" :row-style="{ height: '40px' }" :cell-style="{ padding: '0px'}" :header-row-style="{ height: '40px' }"
  171. :header-cell-style="{ padding: '0px' }" :show-overflow-tooltip="true" highlight-current-row="true"
  172. style="width: 100%;height: 400px;color:purple;font-weight: bold;" border tooltip-effect="dark" :data="JYData" row-key="ID" @selection-change="handleSelectionChange">
  173. <!--<el-table-column type="selection" width="55" />-->
  174. <el-table-column align="left" label="工单编号" prop="工单编号" width="120"/>
  175. <el-table-column align="left" label="印件号" prop="印件号" width="120" />
  176. <el-table-column align="left" label="工序名称" prop="工序名称" width="430" />
  177. <el-table-column align="left" label="检验项目" prop="检验项目" width="1140"/>
  178. <el-table-column v-for="time in columnNames" :key="time" :label="time" :prop="time" align="center" width="120"></el-table-column>
  179. </el-table>
  180. </el-tab-pane>
  181. </el-tabs>
  182. <!-- <div class="gva-pagination">
  183. <el-pagination
  184. layout="total, sizes, prev, pager, next, jumper"
  185. :current-page="page"
  186. :page-size="pageSize"
  187. :page-sizes="[10, 30, 50, 100]"
  188. :total="total"
  189. @current-change="handleCurrentChange"
  190. @size-change="handleSizeChange"
  191. />
  192. </div> -->
  193. </div>
  194. <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="type==='create'?'添加':'修改'" destroy-on-close>
  195. <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
  196. <el-tab-pane label="当日上报产量" @click="showTable('工艺资料')" name="first">
  197. <el-table ref="multipleTable"
  198. :show-overflow-tooltip="true"
  199. :row-style="{ height: '20px' }"
  200. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  201. :header-cell-style="{ padding: '0px' }"
  202. highlight-current-row="true"
  203. style="width: 100%;height: 400px" border tooltip-effect="dark" :data="gytableData" row-key="ID" @selection-change="handleSelectionChange">
  204. <el-table-column type="selection" width="55" />
  205. <el-table-column align="left" label="选择" prop="工单编号" width="100"/>
  206. <el-table-column align="left" label="产品名称" prop="重点工序" width="100"/>
  207. <el-table-column align="left" label="工序" prop="工序备注" width="240"/>
  208. <el-table-column align="left" label="备注" prop="机组" width="100"/>
  209. <el-table-column align="left" label="产量" prop="小时产能" width="100"/>
  210. <el-table-column align="left" label="千件工价" prop="生产工时" width="100"/>
  211. <el-table-column align="left" label="日定额" prop="辅助工时" width="100"/>
  212. <el-table-column align="left" label="补产标准" prop="印刷方式" width="100"/>
  213. <el-table-column align="left" label="难度系数" prop="版距" width="100"/>
  214. <el-table-column align="left" label="印刷方式" prop="创建用户" width="120"/>
  215. <el-table-column align="left" label="组员1" prop="Gy0_gxh" width="240" />
  216. <el-table-column align="left" label="组员2" prop="gy0_gxmc" width="240" />
  217. <el-table-column align="left" label="组员3" prop="add_gxmc" width="240" />
  218. <el-table-column align="left" label="组员4" prop="Gy0_Ks" width="240" />
  219. <el-table-column align="left" label="组员5" prop="Gy0_ls" width="100" />
  220. <el-table-column align="left" label="组员6" prop="备注" width="100" />
  221. <el-table-column align="left" label="组员7" prop="工价系数" width="100" />
  222. <el-table-column align="left" label="组员8" prop="损耗系数" width="100" />
  223. <el-table-column align="left" label="组员9" prop="Gy0_Ms" width="100" />
  224. <el-table-column align="left" label="组员10" prop="人工检_正品版" width="120" />
  225. <el-table-column align="left" label="制程废品" prop="Sys_id" width="100" />
  226. <el-table-column align="left" label="制程次品" prop="建档日期" width="100" />
  227. <el-table-column align="left" label="前工序废" prop="更新日期" width="100" />
  228. <el-table-column align="left" label="来料异常" prop="YB_方案" width="100"/>
  229. <el-table-column align="left" label="装版工时" prop="YB_Yjno" width="100" />
  230. <el-table-column align="left" label="保养工时" prop="印版类别" width="100" />
  231. <el-table-column align="left" label="打样工时" prop="存货编码" width="100"/>
  232. <el-table-column align="left" label="异常停机工时" prop="印版名称" width="120"/>
  233. <el-table-column align="left" label="通电工时" prop="考核印数" width="100"/>
  234. <el-table-column align="left" label="码开始行" prop="Sys_id" width="100" />
  235. <el-table-column align="left" label="码结束行" prop="建档日期" width="100" />
  236. <el-table-column align="left" label="码包" prop="更新日期" width="100" />
  237. <el-table-column align="left" label="主电表" prop="YB_方案" width="100"/>
  238. <el-table-column align="left" label="辅电表" prop="YB_Yjno" width="100" />
  239. <el-table-column align="left" label="色度数" prop="印版类别" width="100" />
  240. <el-table-column align="left" label="用户" prop="YB_Yjno" width="100" />
  241. <el-table-column align="left" label="更新时间" prop="印版类别" width="100" />
  242. </el-table>
  243. </el-tab-pane>
  244. <el-tab-pane label="当日制程检验记录" @click="showTable('印件资料')" name="second">
  245. <el-table ref="multipleTable"
  246. :row-style="{ height: '20px' }"
  247. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  248. :header-cell-style="{ padding: '0px' }"
  249. :show-overflow-tooltip="true"
  250. highlight-current-row="true"
  251. style="width: 100%;height: 400px" border tooltip-effect="dark" :data="drzcData" row-key="ID" @selection-change="handleSelectionChange">
  252. <el-table-column type="selection" width="55" />
  253. <el-table-column align="left" label="工单编号" prop="工单编号" width="120"/>
  254. <el-table-column align="left" label="印件号" prop="印件号" width="120" />
  255. <el-table-column align="left" label="工序名称" prop="工序名称" width="330" />
  256. <el-table-column align="left" label="检验项目" prop="检验项目" width="120"/>
  257. <el-table-column
  258. v-for="time in columnNames"
  259. :key="time"
  260. :label="time"
  261. :prop="time"
  262. align="center"
  263. width="120"
  264. ></el-table-column>
  265. </el-table>
  266. </el-tab-pane>
  267. </el-tabs>
  268. </el-dialog>
  269. <el-dialog v-model="detailShow" fullscreen style="font-size: 50px;font-weight: bold;" lock-scroll :before-close="closeDetailShow" title="机台班组维护" destroy-on-close>
  270. <div>
  271. <el-table ref="multipleTable" :row-style="{ height: '50px' }" :header-cell-style="{ padding: '0px' }"
  272. :cell-style="{ padding: '0px' ,color:'blue'}" :header-row-style="{ height: '40px' }"
  273. :show-overflow-tooltip="true" highlight-current-row="true" @row-click="BZhandle"
  274. style="width: 100%;height: 300px;margin-top: 0px;font-weight: bold;" border tooltip-effect="dark"
  275. :data="bzData" row-key="ID" @selection-change="BZSelectionChange">
  276. <!-- <el-table-column type="selection" width="55" /> -->
  277. <el-table-column align="left" label="机台" prop="JTMC" width="70"/>
  278. <el-table-column align="left" label="班组" prop="班组号" width="60"/>
  279. <el-table-column align="left" label="组员1" prop="0" width="195"/>
  280. <el-table-column align="left" label="组员2" prop="1" width="195"/>
  281. <el-table-column align="left" label="组员3" prop="2" width="195"/>
  282. <el-table-column align="left" label="组员4" prop="3" width="195"/>
  283. <el-table-column align="left" label="组员5" prop="4" width="195"/>
  284. <el-table-column align="left" label="组员6" prop="5" width="195"/>
  285. <el-table-column align="left" label="组员7" prop="6" width="180"/>
  286. <el-table-column align="left" label="组员8" prop="7" width="100"/>
  287. <el-table-column align="left" label="组员9" prop="8" width="100"/>
  288. <el-table-column align="left" label="特殊组员" prop="9" width="100"/>
  289. <el-table-column align="left" label="UNIQID" prop="ID" width="100"/>
  290. </el-table>
  291. </div>
  292. <div style="margin-top:100px;font-weight: bold;color:purple">
  293. <el-row :gutter="20">
  294. <el-col :span="10">
  295. <el-form-item label="机台编号" prop="id">
  296. <el-select v-model="selectedOption" placeholder="请选择">
  297. <el-option v-for="item in dropdownOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
  298. </el-select>
  299. </el-form-item>
  300. </el-col>
  301. <el-col :span="10">
  302. <el-form-item label="班组编号" prop="id">
  303. <el-select v-model="BZMC" placeholder="" >
  304. <el-option label="A 班" value="A 班"></el-option>
  305. <el-option label="B 班" value="B 班"></el-option>
  306. </el-select>
  307. </el-form-item>
  308. </el-col>
  309. </el-row>
  310. <div style="display: flex;font-weight: bold;color:purple">
  311. <div class="groupbox float-div" style="height: 20vh; width: 130vh;font-weight: bold;color:purple;font-size: 2.5vh;">
  312. <span class="grouptitle">组员及分配比例</span>
  313. <el-row :gutter="10" style="margin-top: 0px; height: 5vh;">
  314. <el-col :span="2"><span></span></el-col>
  315. <el-col :span="2"></el-col>
  316. <el-col :span="2"></el-col>
  317. <el-col :span="2"></el-col>
  318. <el-col :span="2"></el-col>
  319. <el-col :span="2"></el-col>
  320. <el-col :span="2"></el-col>
  321. <el-col :span="2"></el-col>
  322. <el-col :span="2"></el-col>
  323. <el-col :span="3"></el-col>
  324. <el-col :span="3"><el-form-item label="特殊组员" prop="id"></el-form-item></el-col>
  325. </el-row>
  326. <el-row :gutter="10" style="margin-top: 0px;">
  327. <el-col :span="3"><el-input v-model="formDatas.code1" @keyup.enter.native="getbzyg($event, '1')"/></el-col>
  328. <el-col :span="3"><el-input v-model="formDatas.code2" @keyup.enter.native="getbzyg($event, '2')"/></el-col>
  329. <el-col :span="3"><el-input v-model="formDatas.code3" @keyup.enter.native="getbzyg($event, '3')"/></el-col>
  330. <el-col :span="3"><el-input v-model="formDatas.code4" @keyup.enter.native="getbzyg($event, '4')"/></el-col>
  331. <el-col :span="3"><el-input v-model="formDatas.code5" @keyup.enter.native="getbzyg($event, '5')"/></el-col>
  332. <el-col :span="3"><el-input v-model="formDatas.code6" @keyup.enter.native="getbzyg($event, '6')"/></el-col>
  333. <el-col :span="3"><el-input v-model="formDatas.code7" @keyup.enter.native="getbzyg($event, '7')"/></el-col>
  334. <el-col :span="3"><el-input v-model="formDatas.code8" @keyup.enter.native="getbzyg($event, '8')"/></el-col>
  335. </el-row>
  336. <el-row :gutter="10" style="margin-top: 1px;font-weight: bold;color:purple">
  337. <el-col :span="3"><el-input v-model="formDatas.name1" placeholder="" /></el-col>
  338. <el-col :span="3"><el-input v-model="formDatas.name2" placeholder="" /></el-col>
  339. <el-col :span="3"> <el-input v-model="formDatas.name3" placeholder="" /></el-col>
  340. <el-col :span="3"> <el-input v-model="formDatas.name4" placeholder="" /></el-col>
  341. <el-col :span="3"><el-input v-model="formDatas.name5" placeholder="" /></el-col>
  342. <el-col :span="3"><el-input v-model="formDatas.name6" placeholder="" /></el-col>
  343. <el-col :span="3"><el-input v-model="formDatas.name7" placeholder="" /></el-col>
  344. <el-col :span="3"><el-input v-model="formDatas.name8" placeholder="" /></el-col>
  345. </el-row>
  346. <el-row :gutter="10" style="margin-top: 1px;font-weight: bold;color:purple">
  347. <el-col :span="3"><el-input v-model="formDatas.percentage1" @input="updateTotal" placeholder="" /></el-col>
  348. <el-col :span="3"><el-input v-model="formDatas.percentage2" @input="updateTotal" placeholder="" /></el-col>
  349. <el-col :span="3"><el-input v-model="formDatas.percentage3" @input="updateTotal" placeholder="" /></el-col>
  350. <el-col :span="3"><el-input v-model="formDatas.percentage4" @input="updateTotal" placeholder="" /></el-col>
  351. <el-col :span="3"><el-input v-model="formDatas.percentage5" @input="updateTotal" placeholder="" /></el-col>
  352. <el-col :span="3"><el-input v-model="formDatas.percentage6" @input="updateTotal" placeholder="" /></el-col>
  353. <el-col :span="3"><el-input v-model="formDatas.percentage7" @input="updateTotal" placeholder="" /></el-col>
  354. <el-col :span="3"><el-input v-model="formDatas.percentage8" @input="updateTotal" placeholder="" /></el-col>
  355. </el-row>
  356. </div>
  357. <div style="height: 50vh; width: 15vh;margin-top: 3vh;">
  358. <el-button type="text"></el-button>
  359. <el-button style="margin-bottom: 1vh; width:15vh;background-color:cornflowerblue;font-size: 2.0vh;font-weight: bold; color: white;" @click="addBz" >新 增</el-button>
  360. <el-button style="margin-bottom: 1vh;width:15vh;background-color:cornflowerblue;font-size: 2.0vh;font-weight: bold; color: white;" @click="selectBz" >更新当前班组</el-button>
  361. <el-button style="margin-bottom: 1vh;width:15vh;background-color:cornflowerblue;font-size: 2.0vh;font-weight: bold; color: white;" @click="delBz" >删除当前班组</el-button>
  362. </div>
  363. </div>
  364. </div>
  365. </el-dialog>
  366. <!-- 组员及分配比例-->
  367. <el-dialog v-model="blModel" :before-close="() => blModel = false" style="width: 20%" @keydown="selectBZRR($event)">
  368. <el-form>
  369. <div>
  370. <el-table :data="employeeData" border :show-overflow-tooltip="true" :cell-class-name="blplanUsageCellClass"
  371. highlight-current-row="true"
  372. ref="tableBZRR"
  373. @row-click="tablebllickHandler($event)">
  374. <el-table-column prop="员工编号" label="员工编号"></el-table-column>
  375. <el-table-column prop="ygxm" label="员工姓名"></el-table-column>
  376. </el-table>
  377. </div>
  378. </el-form>
  379. </el-dialog>
  380. <el-dialog v-model="complaintsShow" fullscreen style="font-size: 50px;font-weight: bold;"
  381. lock-scroll :before-close="closecomplaintsShow" title="产品客诉查询" destroy-on-close>
  382. <el-table ref="multipleTable"
  383. :row-style="{ height: '20px' }" :header-cell-style="{ padding: '0px' }"
  384. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  385. :show-overflow-tooltip="true" highlight-current-row="true" @row-click="complaintshandle"
  386. style="width: 100%;height: 30vh;margin-top: 0px;" border tooltip-effect="dark"
  387. :data="complaintsData" row-key="ID" @selection-change="complaintsSelectionChange">
  388. <!-- <el-table-column type="selection" width="55" /> -->
  389. <el-table-column align="left" label="产品编号" prop="产品编号" width="120"/>
  390. <el-table-column align="left" label="产品名称" prop="产品名称" width="200"/>
  391. <el-table-column align="left" label="客诉日期" prop="客诉日期" width="120"/>
  392. <el-table-column align="left" label="客诉单号" prop="客诉单号" width="120"/>
  393. <el-table-column align="left" label="客诉方式" prop="客诉方式" width="100"/>
  394. <el-table-column align="left" label="订单编号" prop="订单编号" width="100"/>
  395. <el-table-column align="left" label="缺陷关键字" prop="缺陷关键字" width="140"/>
  396. <el-table-column align="left" label="客诉性质" prop="客诉性质" width="100"/>
  397. <el-table-column align="left" label="主要责任部门" prop="主要责任部门" width="140"/>
  398. <el-table-column align="left" label="次要责任部门" prop="次要责任部门" width="140"/>
  399. </el-table>
  400. <el-row :gutter="20" style="margin-bottom: 1px;margin-top: 0px;">
  401. <el-col :span="6" style="margin-bottom: 1px;margin-top: 0px;">
  402. <el-form-item label="客户编号" prop="id" style="margin-bottom: 1px;margin-top: 0px;">
  403. <el-input v-model="selectedRowData.客户编号" style="margin-bottom: 1px;margin-top: 0px;" placeholder="" />
  404. </el-form-item>
  405. </el-col>
  406. <el-col :span="15" style="margin-bottom: 1px;margin-top: 0px;">
  407. <el-form-item label="客户名称" prop="id" style="margin-bottom: 1px;margin-top: 0px;">
  408. <el-input v-model="selectedRowData.客户名称" style="margin-bottom: 1px;margin-top: 0px;" placeholder="" />
  409. </el-form-item>
  410. </el-col>
  411. </el-row>
  412. <el-row :gutter="20" style="margin-bottom: 1px;margin-top: 0px;">
  413. <el-col :span="6" style="margin-bottom: 1px;margin-top: 0px;">
  414. <el-form-item label="客诉单号" prop="id" style="margin-bottom: 1px;margin-top: 0px;">
  415. <el-input v-model="selectedRowData.客诉单号" style="margin-bottom: 1px;margin-top: 0px;" placeholder="" />
  416. </el-form-item>
  417. </el-col>
  418. <el-col :span="5" style="margin-bottom: 1px;margin-top: 0px;">
  419. <el-form-item label="客诉日期" prop="id" style="margin-bottom: 1px;margin-top: 0px;">
  420. <el-input v-model="selectedRowData.客诉日期" style="margin-bottom: 1px;margin-top: 0px;" placeholder="" />
  421. </el-form-item>
  422. </el-col>
  423. <el-col :span="5" style="margin-bottom: 1px;margin-top: 0px;">
  424. <el-form-item label="方式" prop="id" style="margin-bottom: 1px;margin-top: 0px;">
  425. <el-input v-model="selectedRowData.客诉方式" style="margin-bottom: 1px;margin-top: 0px;" placeholder="" />
  426. </el-form-item>
  427. </el-col>
  428. <el-col :span="5" style="margin-bottom: 1px;margin-top: 0px;">
  429. <el-form-item label="批次号" prop="id" style="margin-bottom: 1px;margin-top: 0px;">
  430. <el-input v-model="selectedRowData.订单编号" style="margin-bottom: 1px;margin-top: 0px;" placeholder="" />
  431. </el-form-item>
  432. </el-col>
  433. </el-row>
  434. <el-row :gutter="20" style="margin-bottom: 1px;margin-top: 0px;">
  435. <el-col :span="20" style="margin-bottom: 1px;margin-top: 0px;">
  436. <el-form-item label="反馈问题" prop="id" style="margin-bottom: 1px;margin-top: 0px;">
  437. <el-input v-model="selectedRowData.客诉描述" style="margin-bottom: 1px;margin-top: 0px;" placeholder="" />
  438. </el-form-item>
  439. </el-col>
  440. </el-row>
  441. <el-row :gutter="20" style="margin-bottom: 1px;margin-top: 0px;">
  442. <el-col :span="20" style="margin-bottom: 1px;margin-top: 0px;">
  443. <el-form-item label="缺陷关键字" prop="id" style="margin-bottom: 1px;margin-top: 0px;">
  444. <el-input v-model="selectedRowData.缺陷关键字" style="margin-bottom: 1px;margin-top: 0px;" placeholder="" />
  445. </el-form-item>
  446. </el-col>
  447. </el-row>
  448. <el-row :gutter="20" style="margin-bottom: 1px;margin-top: 0px;">
  449. <el-col :span="5" style="margin-bottom: 1px;margin-top: 0px;">
  450. <el-form-item label="性质" prop="id" style="margin-bottom: 1px;margin-top: 0px;">
  451. <el-input v-model="selectedRowData.客诉性质" style="margin-bottom: 1px;margin-top: 0px;" placeholder="" />
  452. </el-form-item>
  453. </el-col>
  454. <el-col :span="5" style="margin-bottom: 1px;margin-top: 0px;">
  455. <el-form-item label="扣分" prop="id" style="margin-bottom: 1px;margin-top: 0px;">
  456. <el-input v-model="selectedRowData.扣分" style="margin-bottom: 1px;margin-top: 0px;" placeholder="" />
  457. </el-form-item>
  458. </el-col>
  459. </el-row>
  460. <el-row :gutter="20" style="margin-bottom: 1px;margin-top: 0px;">
  461. <el-col :span="20" style="margin-bottom: 1px;margin-top: 0px;">
  462. <el-form-item label="主责任部门" prop="id" style="margin-bottom: 1px;margin-top: 0px;">
  463. <el-input v-model="selectedRowData.主要责任部门" style="margin-bottom: 1px;margin-top: 0px;" placeholder="" />
  464. </el-form-item>
  465. </el-col>
  466. </el-row>
  467. <el-row :gutter="20" style="margin-bottom: 1px;margin-top: 0px;">
  468. <el-col :span="20" style="margin-bottom: 1px;margin-top: 0px;">
  469. <el-form-item label="次责任部门" prop="id" style="margin-bottom: 1px;margin-top: 0px;">
  470. <el-input v-model="selectedRowData.次要责任部门" style="margin-bottom: 1px;margin-top: 0px;" placeholder="" />
  471. </el-form-item>
  472. </el-col>
  473. </el-row>
  474. </el-dialog>
  475. <el-dialog v-model="dianjianVisible" title="设备点检记录" destroy-on-close fullscreen style="font-size: 3.5vh;font-weight: bold;" >
  476. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  477. <el-col :span="4" style="margin-bottom: 0px;margin-top: 0px;">
  478. <el-form-item label="设备编号" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  479. <el-input v-model="JTMC" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  480. </el-form-item>
  481. </el-col>
  482. <el-col :span="10" style="margin-bottom: 0px;margin-top: 0px;">
  483. <el-row style="margin-bottom: 0px;margin-top: 0px;">
  484. <el-col style="margin-bottom: 0px;margin-top: 0px;">
  485. <el-input v-model="formData.产品名称" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  486. </el-col>
  487. </el-row>
  488. </el-col>
  489. </el-row>
  490. <div style="display: flex;">
  491. <div style="flex: 0.1;margin-top: 0px;">
  492. <el-aside width="25vh" style="margin: 0; height: 50vh; margin-top: 0px;">
  493. <div class="JKWTree-tree" style="height: 100%; border-right: 1px solid #ebeef5;">
  494. <el-tree :data="dianjiantreeData" :props="defaultProps" highlight-current="true"
  495. @node-click="dianjianNodeClick" @node-dblclick="handleNodeDoubleClick"></el-tree>
  496. </div>
  497. </el-aside>
  498. </div>
  499. <div style="flex: 1; margin: 0;">
  500. <el-table tooltip-effect="dark" :data="dianjianselectData"
  501. row-key="ID" highlight-current-row="true" :show-overflow-tooltip="true"
  502. border @row-click="dianjianhandle"
  503. style="width:119vh; height:45vh; margin-top: 5px;"
  504. @row-dblclick="handleSelectClick" :row-class-name="rowClassName">
  505. <el-table-column prop="检验项目" label="检验项目" width="320" />
  506. <el-table-column prop="点检方法" label="点检方法" width="180" />
  507. <el-table-column v-slot="scope" label="正常" width="70" >
  508. <el-checkbox v-model="scope.row.zc" @change="zcClick(scope.row)"></el-checkbox>
  509. </el-table-column>
  510. <el-table-column v-slot="scope" label="异常" width="70" >
  511. <el-checkbox v-model="scope.row.yc" @change="ycClick(scope.row)"></el-checkbox>
  512. </el-table-column>
  513. <el-table-column v-slot="scope" label="备注说明" width="180" >
  514. <el-input v-model="scope.row.remark"/>
  515. </el-table-column>
  516. <el-table-column v-slot="scope" label="不检测" >
  517. <el-checkbox v-model="scope.row.notjc" @change="notjcClick(scope.row)"></el-checkbox>
  518. </el-table-column>
  519. </el-table>
  520. <el-row :gutter="24">
  521. <el-col :span="17">
  522. <el-input v-model="pandingfangfa" style="margin-top:0px; height: 40px; margin-bottom: 0px;" />
  523. </el-col>
  524. </el-row>
  525. </div>
  526. </div>
  527. <template #footer>
  528. <div class="dialog-footer">
  529. <el-button @click="closedianjianDialog"style="height: 50px;width: 100px;font-size: 2.5vh;font-weight: bold;">关 闭</el-button>
  530. <el-button type="primary" style="height: 50px;width: 100px;font-size: 2.5vh;font-weight: bold;"@click="dianjianDialog">提 交</el-button>
  531. </div>
  532. </template>
  533. </el-dialog>
  534. <el-dialog v-model="zhichengVisible" title="制程检验记录" destroy-on-close fullscreen style="font-size: 3.5vh;font-weight: bold;" >
  535. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  536. <el-col :span="5" style="margin-top:0px; margin-bottom: 0px;">
  537. <el-form-item label="工单编号" prop="id" style="margin-top:0px; margin-bottom: 0px;">
  538. <el-input v-model="xunchaData.order" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  539. </el-form-item>
  540. </el-col>
  541. <el-col :span="15" style="margin-top:0px; margin-bottom: 0px;">
  542. <el-row style="margin-top:0px; margin-bottom: 0px;">
  543. <el-col style="margin-top:0px; margin-bottom: 0px;">
  544. <el-input v-model="xunchaData.product_name" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  545. </el-col>
  546. </el-row>
  547. </el-col>
  548. <el-col :span="4" style="margin-top:0px; margin-bottom: 0px;">
  549. <el-form-item label="流程单" prop="id" style="margin-top:0px; margin-bottom: 0px;">
  550. <el-input v-model="xunchaData.lcdh" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  551. </el-form-item>
  552. </el-col>
  553. </el-row>
  554. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  555. <el-col :span="5" style="margin-top:0px; margin-bottom: 0px;">
  556. <el-form-item label="印件编号" prop="id" style="margin-top:0px; margin-bottom: 0px;">
  557. <el-input v-model="xunchaData.yjno" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  558. </el-form-item>
  559. </el-col>
  560. <el-col :span="15" style="margin-top:0px; margin-bottom: 0px;">
  561. <el-input v-model="xunchaData.gxmc" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  562. </el-col>
  563. </el-row>
  564. <div style="display: flex;margin-top: 20px;">
  565. <div style="flex: 0.1;">
  566. <el-aside width="32vh" style="margin: 0;">
  567. <div class="JKWTree-tree" style="height: 100%; border-right: 1px solid #ebeef5;">
  568. <el-tree :data="zhichengtreeData" :props="zhichengtreeDatadefaultProps" highlight-current="true"
  569. @node-click="zhichengNodeClick"></el-tree>
  570. </div>
  571. </el-aside>
  572. </div>
  573. <div v-if="zhichengstatus" style="flex: 0; margin: 0;">
  574. <el-tabs v-model="activNames" type="card" @tab-click="handleClick">
  575. <el-tab-pane label="指标检验" @click="showTable('指标检验')" name="first">
  576. <el-table
  577. tooltip-effect="dark"
  578. :data="zhibiaoselectData"
  579. row-key="ID"
  580. highlight-current-row="true"
  581. :show-overflow-tooltip="true"
  582. border
  583. style="width:140vh; height:60vh;"
  584. :row-class-name="rowClassName">
  585. <el-table-column prop="检验项目" label="检验项目" width="110" />
  586. <el-table-column label="不检测" width="70">
  587. <template v-slot="scope">
  588. <el-radio v-model="scope.row.selected" label="不检测">
  589. <span style="visibility: hidden;">不检测</span>
  590. </el-radio>
  591. </template>
  592. </el-table-column>
  593. <el-table-column label="合格" width="60">
  594. <template v-slot="scope">
  595. <el-radio v-model="scope.row.selected" label="合格">
  596. <span style="visibility: hidden;">合格</span>
  597. </el-radio>
  598. </template>
  599. </el-table-column>
  600. <el-table-column label="不合格" width="70">
  601. <template v-slot="scope">
  602. <el-radio v-model="scope.row.selected" label="不合格">
  603. <span style="visibility: hidden;">不合格</span>
  604. </el-radio>
  605. </template>
  606. </el-table-column>
  607. <el-table-column prop="检测方法" label="检测方法" width="90" />
  608. <el-table-column prop="检验频率" label="检验频率" width="200" />
  609. <el-table-column prop="相关标准" label="相关标准" width="600" />
  610. </el-table>
  611. </el-tab-pane>
  612. <el-tab-pane label="附加检验记录" @click="showTable('附加检验记录')" name="second">
  613. <el-table tooltip-effect="dark"
  614. :data="fujiaselectData"
  615. row-key="ID"
  616. highlight-current-row="true"
  617. :show-overflow-tooltip="true"
  618. border @row-click="dianjianhandle"
  619. style="width:140vh; height:60vh;"
  620. @row-dblclick="handleSelectClick"
  621. :row-class-name="rowClassName">
  622. <el-table-column v-slot="scope" label="不检测" width="75" >
  623. <el-checkbox v-model="scope.row.notjc"></el-checkbox>
  624. </el-table-column>
  625. <!-- 缺陷及记录列,转换为输入框 -->
  626. <el-table-column label="缺陷及记录" width="720">
  627. <template #default="scope">
  628. <el-input v-model="scope.row['缺陷备注']" placeholder="请输入缺陷及记录"></el-input>
  629. </template>
  630. </el-table-column>
  631. <!-- <el-table-column prop="缺陷备注" label="缺陷及记录" width="720" /> -->
  632. <el-table-column prop="编号" label="编号" width="80" />
  633. </el-table>
  634. </el-tab-pane>
  635. </el-tabs>
  636. </div>
  637. </div>
  638. <template #footer>
  639. <div v-if="zhichengstatus" class="dialog-footer">
  640. <el-button @click="closezhichengDialog"style="height: 50px;width: 100px;font-size: 2.5vh;font-weight: bold;">关 闭</el-button>
  641. <el-button type="primary" @click="zhichengDialog"style="height: 50px;width: 100px;font-size: 2.5vh;font-weight: bold;">提 交</el-button>
  642. </div>
  643. </template>
  644. </el-dialog>
  645. <el-dialog
  646. v-model="huanxingVisible"
  647. title="换型清场"
  648. destroy-on-close
  649. fullscreen
  650. style="font-size: 50px;font-weight: bold;"
  651. >
  652. <header>
  653. <div style="height: 50px;margin-left: 1vh;">
  654. <el-button type="primary" @click="onHxadd" >新增</el-button>
  655. <el-button type="primary" @click="onHxedit" >修改</el-button>
  656. <el-button type="primary" @click="onHxdel" >删除</el-button>
  657. <el-button type="primary" @click="onHxsave" v-if="huanxingType" >提交</el-button>
  658. </div>
  659. </header>
  660. <div style="display: flex;">
  661. <div style="flex: 0.1;">
  662. <el-aside width="26vh" style="margin: 0;">
  663. <div class="JKWTree-tree" style="height: 60vh; border-right: 1px solid #ebeef5;">
  664. <el-tree :data="huanxingtreeData" :props="defaultProps" highlight-current="true"
  665. @node-click="huanxingNodeClick"></el-tree>
  666. </div>
  667. </el-aside>
  668. </div>
  669. <div v-if="huanxingstatus" style="flex: 0; margin: 0;">
  670. <el-tabs v-model="activNames" type="card" @tab-click="handleClick">
  671. <el-tab-pane label="换型清场明细信息" @click="showTable('换型清场明细信息')" name="first">
  672. <div style="width:70vh">
  673. <el-descriptions :column="9" border>
  674. <el-descriptions-item :span="9">
  675. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  676. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  677. <el-form-item label="日期:" prop="id" style="margin-top:0px; margin-bottom: 0px;">
  678. <el-input v-model="huanxingData.日期" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  679. </el-form-item>
  680. </el-col>
  681. <el-col :span="2" style="margin-bottom: 0px;margin-top: 0px;">
  682. </el-col>
  683. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  684. <el-form-item label="机台编号:" prop="id" style="margin-top:0px; margin-bottom: 0px;">
  685. <el-input v-model="huanxingData.机台编号" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  686. </el-form-item>
  687. </el-col>
  688. <el-col :span="1" style="margin-bottom: 0px;margin-top: 0px;">
  689. </el-col>
  690. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  691. <el-form-item label="班组:" prop="id" style="margin-top:0px; margin-bottom: 0px;">
  692. <el-input v-model="huanxingData.班组" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  693. </el-form-item>
  694. </el-col>
  695. </el-row>
  696. </el-descriptions-item>
  697. <el-descriptions-item label="清场原因 从" :span="9">
  698. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  699. <el-col :span="8" style="margin-bottom: 0px;margin-top: 0px;">
  700. <el-form-item label="工单编号:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  701. <el-input v-model="huanxingData.工单编号A" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  702. </el-form-item>
  703. </el-col>
  704. <el-col :span="16" style="margin-bottom: 0px;margin-top: 0px;">
  705. <el-form-item label="印件名称:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  706. <el-input v-model="huanxingData.印件名称A" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  707. </el-form-item>
  708. </el-col>
  709. </el-row>
  710. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  711. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  712. <el-form-item label="印件工序:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  713. <el-input v-model="huanxingData.印件工序A" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  714. </el-form-item>
  715. </el-col>
  716. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  717. </el-col>
  718. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  719. <el-form-item label="码包号" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  720. <el-input v-model="huanxingData.码包号A" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  721. </el-form-item>
  722. </el-col>
  723. </el-row>
  724. </el-descriptions-item>
  725. <el-descriptions-item label="清场原因 到" :span="9">
  726. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  727. <el-col :span="8" style="margin-bottom: 0px;margin-top: 0px;">
  728. <el-form-item label="工单编号:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  729. <el-input v-model="huanxingData.工单编号B" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  730. </el-form-item>
  731. </el-col>
  732. <el-col :span="16" style="margin-bottom: 0px;margin-top: 0px;">
  733. <el-form-item label="印件名称:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  734. <el-input v-model="huanxingData.印件名称B" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  735. </el-form-item>
  736. </el-col>
  737. </el-row>
  738. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  739. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  740. <el-form-item label="印件工序:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  741. <el-input v-model="huanxingData.印件工序B" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  742. </el-form-item>
  743. </el-col>
  744. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  745. </el-col>
  746. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  747. <el-form-item label="码包号" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  748. <el-input v-model="huanxingData.码包B" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  749. </el-form-item>
  750. </el-col>
  751. </el-row>
  752. </el-descriptions-item>
  753. <el-descriptions-item label="清场确认项目" :span="9">
  754. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  755. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  756. <el-form-item label="菲林_标样_签样品_留样品" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  757. <el-checkbox v-model="huanxingData.项目1"></el-checkbox>
  758. </el-form-item>
  759. </el-col>
  760. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  761. <el-form-item label="版材_纸张_电化铝_油墨" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  762. <el-checkbox v-model="huanxingData.项目2"></el-checkbox>
  763. </el-form-item>
  764. </el-col>
  765. </el-row>
  766. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  767. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  768. <el-form-item label="过版纸_废品_次品" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  769. <el-checkbox v-model="huanxingData.项目3"></el-checkbox>
  770. </el-form-item>
  771. </el-col>
  772. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  773. <el-form-item label="半成品_成品_零头" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  774. <el-checkbox v-model="huanxingData.项目4"></el-checkbox>
  775. </el-form-item>
  776. </el-col>
  777. </el-row>
  778. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  779. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  780. <el-form-item label="操作台桌面_抽屉_地面" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  781. <el-checkbox v-model="huanxingData.项目5"></el-checkbox>
  782. </el-form-item>
  783. </el-col>
  784. </el-row>
  785. </el-descriptions-item>
  786. <el-descriptions-item label="清场确认人" :span="9">
  787. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  788. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  789. <el-form-item label="机长签字" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  790. <el-input v-model="huanxingData.机长" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  791. </el-form-item>
  792. </el-col>
  793. </el-row>
  794. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  795. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  796. <el-form-item label="带班主管签字" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  797. <el-input v-model="huanxingData.班长" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  798. </el-form-item>
  799. </el-col>
  800. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  801. <el-form-item label="质量巡查员签字" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  802. <el-input v-model="huanxingData.质量巡查员" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  803. </el-form-item>
  804. </el-col>
  805. </el-row>
  806. </el-descriptions-item>
  807. </el-descriptions>
  808. </div>
  809. </el-tab-pane>
  810. <el-tab-pane label="当前设备换型记录" @click="showTable('当前设备换型记录')" name="second">
  811. <el-table
  812. tooltip-effect="dark"
  813. :data="huanxingselectData"
  814. row-key="ID"
  815. highlight-current-row="true"
  816. :show-overflow-tooltip="true"
  817. border @row-click="dianjianhandle"
  818. style="width:70vh; height:50vh;"
  819. @row-dblclick="handleSelectClick"
  820. :row-class-name="rowClassName"
  821. >
  822. <el-table-column
  823. prop="日期"
  824. label="日期"
  825. width="160"
  826. />
  827. <el-table-column
  828. prop="机台编号"
  829. label="机台编号"
  830. width="90"
  831. />
  832. <el-table-column
  833. prop="班组"
  834. label="班组"
  835. width="70"
  836. />
  837. <el-table-column
  838. prop="工单编号A"
  839. label="工单编号A"
  840. width="95"
  841. />
  842. <el-table-column
  843. prop="印件名称A"
  844. label="印件名称A"
  845. width="130"
  846. />
  847. <el-table-column
  848. prop="印件工序A"
  849. label="印件工序A"
  850. width="150"
  851. />
  852. <el-table-column
  853. prop="码包号A"
  854. label="码包号A"
  855. width="80"
  856. />
  857. <el-table-column
  858. prop="工单编号B"
  859. label="工单编号B"
  860. width="100"
  861. />
  862. <el-table-column
  863. prop="印件名称B"
  864. label="印件名称B"
  865. width="100"
  866. />
  867. <el-table-column
  868. prop="印件工序B"
  869. label="印件工序B"
  870. width="150"
  871. />
  872. <el-table-column
  873. prop="码包号B"
  874. label="码包号B"
  875. width="80"
  876. />
  877. <el-table-column
  878. prop="清场项目A"
  879. label="菲林_标样_签样品_留样品"
  880. width="190"
  881. />
  882. <el-table-column
  883. prop="清场项目B"
  884. label="版材_纸张_电化铝_油墨"
  885. width="190"
  886. />
  887. <el-table-column
  888. prop="清场项目C"
  889. label="过版纸_废品_次品"
  890. width="170"
  891. />
  892. <el-table-column
  893. prop="清场项目D"
  894. label="半成品_成品_零头"
  895. width="170"
  896. />
  897. <el-table-column
  898. prop="清场项目E"
  899. label="操作台桌面_抽屉_地面"
  900. width="180"
  901. />
  902. <el-table-column
  903. prop="机长"
  904. label="机长"
  905. width="80"
  906. />
  907. <el-table-column
  908. prop="班长"
  909. label="带班长"
  910. width="80"
  911. />
  912. <el-table-column
  913. prop="质量巡查员"
  914. label="质量巡查员"
  915. width="100"
  916. />
  917. <el-table-column
  918. prop="创建时间"
  919. label="创建时间"
  920. width="120"
  921. />
  922. <el-table-column
  923. prop="UNIQID"
  924. label="UNIQID"
  925. width="80"
  926. />
  927. </el-table>
  928. </el-tab-pane>
  929. </el-tabs>
  930. </div>
  931. </div>
  932. </el-dialog>
  933. <el-dialog
  934. v-model="yinbanVisible"
  935. title="印版领退"
  936. destroy-on-close
  937. fullscreen
  938. style="font-size: 50px;font-weight: bold;"
  939. >
  940. <header>
  941. <div style="height: 50px;margin-left: 1vh;">
  942. <el-button type="primary" @click="onYbout" >领出</el-button>
  943. <el-button type="primary" @click="onYbback" >收回</el-button>
  944. <el-button @click="yinbaninvertSelection" type="info">反选</el-button>
  945. </div>
  946. </header>
  947. <el-row :gutter="24">
  948. <el-col :span="4">
  949. <el-form-item label="工单编号" prop="id">
  950. <el-input v-model="formData.工单编号" />
  951. </el-form-item>
  952. </el-col>
  953. <el-col :span="4">
  954. <el-form-item label="印件号" prop="id">
  955. <el-input v-model="formData.印件号" />
  956. </el-form-item>
  957. </el-col>
  958. <el-col :span="6">
  959. <el-form-item prop="id">
  960. <el-input v-model="formData.productCode" />
  961. </el-form-item>
  962. </el-col>
  963. <el-col :span="14">
  964. <el-form-item prop="id">
  965. <el-input v-model="formData.产品名称" />
  966. </el-form-item>
  967. </el-col>
  968. </el-row>
  969. <div style="display: flex;">
  970. <div style="flex: 1;">
  971. <el-aside width="20vh" style="margin: 0;">
  972. <div class="JKWTree-tree" style="height: 100%; border-right: 1px solid #ebeef5;">
  973. <el-tree :data="yinbantreeData" :props="defaultProps" highlight-current="true"
  974. @node-click="yinbanNodeClick" @node-dblclick="handleNodeDoubleClick"></el-tree>
  975. </div>
  976. </el-aside>
  977. </div>
  978. <div style="flex: 1; margin: 0;">
  979. <el-table
  980. ref="yinbanmultipleTable"
  981. tooltip-effect="dark"
  982. :data="yinbanselectData"
  983. row-key="ID"
  984. highlight-current-row="true"
  985. :show-overflow-tooltip="true"
  986. border @row-click="dianjianhandle"
  987. style="width:150vh; height:50vh;"
  988. @row-dblclick="handleSelectClick"
  989. :row-class-name="rowClassName"
  990. @selection-change="handleybSelectionChange"
  991. >
  992. <el-table-column type="selection" width="55" align="center" label=""></el-table-column>
  993. <el-table-column
  994. prop="存货编码"
  995. label="存货编码"
  996. width="100"
  997. />
  998. <el-table-column
  999. prop="存货名称"
  1000. label="存货名称"
  1001. width="180"
  1002. />
  1003. <el-table-column
  1004. prop="印版名称"
  1005. label="印版名称"
  1006. width="180"
  1007. />
  1008. <el-table-column
  1009. prop="供方批号"
  1010. label="供方批号"
  1011. width="150"
  1012. />
  1013. <el-table-column
  1014. prop="工单编号"
  1015. label="当前领用工单"
  1016. width="180"
  1017. />
  1018. <el-table-column
  1019. prop="制造日期"
  1020. label="制造日期"
  1021. width="170"
  1022. />
  1023. <el-table-column
  1024. prop="印数"
  1025. label="印数"
  1026. width="80"
  1027. />
  1028. <el-table-column
  1029. prop="印版类别"
  1030. label="印版类别"
  1031. width="90"
  1032. />
  1033. <el-table-column
  1034. prop="客户编号"
  1035. label="客户编号"
  1036. width="90"
  1037. />
  1038. <el-table-column
  1039. prop="客户名称"
  1040. label="客户名称"
  1041. width="180"
  1042. />
  1043. <el-table-column
  1044. prop="产品编号"
  1045. label="产品编号"
  1046. width="100"
  1047. />
  1048. <el-table-column
  1049. prop="产品名称"
  1050. label="产品名称"
  1051. width="180"
  1052. />
  1053. <el-table-column
  1054. prop="UniqId"
  1055. label="UNIQID"
  1056. width="80"
  1057. />
  1058. </el-table>
  1059. <!-- 分页 -->
  1060. <div class="gva-pagination">
  1061. <el-pagination
  1062. @size-change="ybhandleSizeChange"
  1063. @current-change="ybhandleCurrentChange"
  1064. :current-page="ybpage"
  1065. :page-size="ybpageSize"
  1066. layout="total, sizes, prev, pager, next, jumper"
  1067. :total="ybtotal">
  1068. </el-pagination>
  1069. </div>
  1070. </div>
  1071. </div>
  1072. </el-dialog>
  1073. <!-- 退回弹窗 -->
  1074. <el-dialog
  1075. v-model="dialogwithdrawVisible"
  1076. title="印版印数"
  1077. style="width: 20%; margin: 30vh auto;"
  1078. >
  1079. <el-form-item label="印数">
  1080. <el-input v-model="Plate.印数" placeholder="请输入印数" />
  1081. </el-form-item>
  1082. <template #footer>
  1083. <div class="dialog-footer" style="width: 100%;">
  1084. <el-button @click="rawcloseDialog" style="width: 100px; height: 40px;">关 闭</el-button>
  1085. <el-button type="primary" @click="rawenterDialog" style="width: 100px; height: 40px;">确 定</el-button>
  1086. </div>
  1087. </template>
  1088. </el-dialog>
  1089. <el-dialog
  1090. v-model="xunchaVisible"
  1091. title="管理人员现场巡查记录"
  1092. destroy-on-close
  1093. fullscreen
  1094. style="font-size: 3.5vh;font-weight: bold;"
  1095. >
  1096. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  1097. <el-col :span="4" style="margin-top:0px; margin-bottom: 0px;">
  1098. <el-form-item label="工单编号" prop="id" style="margin-top:0px; margin-bottom: 0px; color: red;">
  1099. <el-input v-model="xunchaData.order" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  1100. </el-form-item>
  1101. </el-col>
  1102. <el-col :span="9" style="margin-top:0px; margin-bottom: 0px;">
  1103. <el-row style="margin-top:0px; margin-bottom: 0px;">
  1104. <el-col style="margin-top:0px; margin-bottom: 0px;">
  1105. <el-input v-model="xunchaData.product_name" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  1106. </el-col>
  1107. </el-row>
  1108. </el-col>
  1109. <el-col :span="4" style="margin-top:0px; margin-bottom: 0px;">
  1110. <el-form-item label="工号 " prop="id" style="margin-top:0px; margin-bottom: 0px;">
  1111. <el-input v-model="xunchaData.sczl_bh" @keyup.enter.native="getxunchayg($event)" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  1112. </el-form-item>
  1113. </el-col>
  1114. <el-col :span="4" style="margin-top:0px; margin-bottom: 0px;">
  1115. <el-form-item label="流程单" prop="id" style="margin-top:0px; margin-bottom: 0px;">
  1116. <el-input v-model="xunchaData.lcdh" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  1117. </el-form-item>
  1118. </el-col>
  1119. </el-row>
  1120. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  1121. <el-col :span="3" style="margin-top:0px; margin-bottom: 0px;">
  1122. <el-form-item label="印件编号" prop="id" style="margin-top:0px; margin-bottom: 0px;">
  1123. <el-input v-model="xunchaData.yjno" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  1124. </el-form-item>
  1125. </el-col>
  1126. <el-col :span="10" style="margin-top:0px; margin-bottom: 0px;">
  1127. <el-row style="margin-top:0px; margin-bottom: 0px;">
  1128. <el-col style="margin-top:0px; margin-bottom: 0px;">
  1129. <el-input v-model="xunchaData.gxmc" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  1130. </el-col>
  1131. </el-row>
  1132. </el-col>
  1133. <el-col :span="4" style="margin-top:0px; margin-bottom: 0px;">
  1134. <el-form-item label="姓名" prop="id" style="margin-top:0px; margin-bottom: 0px;">
  1135. <el-input v-model="xunchaData.sczl_name" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  1136. </el-form-item>
  1137. </el-col>
  1138. </el-row>
  1139. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  1140. <el-col :span="13" style="margin-top:0px; margin-bottom: 0px;">
  1141. <el-form-item label="检验备注" prop="id" style="margin-top:0px; margin-bottom: 0px;">
  1142. <el-input v-model="xunchaData.remark" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
  1143. </el-form-item>
  1144. </el-col>
  1145. </el-row>
  1146. <div style="display: flex; margin-top: 20px;">
  1147. <div style="flex: 0.1;">
  1148. <el-aside width="20vh" style="margin: 0;">
  1149. <div class="JKWTree-tree" style="height: 100%; border-right: 1px solid #ebeef5;">
  1150. <el-tree :data="xunchatreeData" :props="defaultProps" highlight-current="true"
  1151. @node-click="xunchaNodeClick" @node-dblclick="handleNodeDoubleClick"></el-tree>
  1152. </div>
  1153. </el-aside>
  1154. </div>
  1155. <div style="flex: 1; margin: 0;">
  1156. <el-table
  1157. tooltip-effect="dark"
  1158. :data="xunchaselectData"
  1159. row-key="ID"
  1160. highlight-current-row="true"
  1161. border @row-click="dianjianhandle"
  1162. style="width:170vh; height:42vh;"
  1163. @row-dblclick="handleSelectClick"
  1164. :row-class-name="rowClassName"
  1165. :show-overflow-tooltip="true"
  1166. >
  1167. <el-table-column
  1168. prop="工单编号"
  1169. label="工单编号"
  1170. width="85"
  1171. />
  1172. <el-table-column
  1173. prop="印件号"
  1174. label="印件号"
  1175. width="70"
  1176. />
  1177. <el-table-column
  1178. prop="工序名称"
  1179. label="工序名称"
  1180. width="240"
  1181. />
  1182. <el-table-column
  1183. prop="流程单号"
  1184. label="流程单号"
  1185. width="85"
  1186. />
  1187. <el-table-column
  1188. prop="设备编号"
  1189. label="设备编号"
  1190. width="85"
  1191. />
  1192. <el-table-column
  1193. prop="班组编号"
  1194. label="班组编号"
  1195. width="85"
  1196. />
  1197. <el-table-column
  1198. prop="检验备注"
  1199. label="检验备注"
  1200. width="85"
  1201. />
  1202. <el-table-column
  1203. prop="现场管理人员"
  1204. label="现场管理人员"
  1205. width="150"
  1206. />
  1207. <el-table-column
  1208. prop="提交时间"
  1209. label="提交时间"
  1210. width="165"
  1211. />
  1212. <el-table-column
  1213. prop="开工时间"
  1214. label="开工时间"
  1215. width="165"
  1216. />
  1217. <el-table-column
  1218. prop="分钟差数"
  1219. label="分钟差数"
  1220. width="85"
  1221. />
  1222. <el-table-column
  1223. prop="归属时段"
  1224. label="归属时段"
  1225. width="165"
  1226. />
  1227. </el-table>
  1228. </div>
  1229. </div>
  1230. <template #footer>
  1231. <div class="dialog-footer">
  1232. <el-button @click="closexunchaDialog" style="height: 50px;width: 100px;font-size: 2.5vh;font-weight: bold;">关 闭</el-button>
  1233. <el-button type="primary" style="height: 50px;width: 100px;font-size: 2.5vh;font-weight: bold;" @click="xunchaDialog">提 交</el-button>
  1234. </div>
  1235. </template>
  1236. </el-dialog>
  1237. <el-dialog v-model="chanliangVisible" title="日产量上报" fullscreen :show-close="false" style="font-size: 2vh;font-weight: bold;padding: 0px 16px 10px 16px" >
  1238. <div style="font-size: 1.5vh; font-weight: bold;color: red;">
  1239. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  1240. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1241. <el-form-item label="工单编号" prop="id" style="margin-top:0px; margin-bottom: 0px;">
  1242. <el-input style="margin-top:0px; margin-bottom: 1px;" v-model="formData3.order" id="工单编号" @keydown="ent($event, 'rate10', '工单编号', '产品名称')" placeholder="" />
  1243. </el-form-item>
  1244. </el-col>
  1245. <el-col :span="10" style="margin-top:0px; margin-bottom: 1px;">
  1246. <el-form-item label="产品名称" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1247. <el-input v-model="formData3.product_name" id="产品名称" disabled style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '工单编号', '产品名称', '工序名称')" placeholder="" />
  1248. </el-form-item>
  1249. </el-col>
  1250. <el-col :span="10" style="margin-top:0px; margin-bottom: 1px;">
  1251. <el-form-item label="工序名称" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1252. <el-input v-model="formData3.gxmc" id="工序名称" disabled style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '产品名称', '工序名称', '印件号')" placeholder="" />
  1253. </el-form-item>
  1254. </el-col>
  1255. </el-row>
  1256. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  1257. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1258. <el-form-item label="印件号" prop="id" label-width="60" style="margin-top:0px; margin-bottom: 1px;">
  1259. <el-input v-model="formData3.yjno" disabled style="margin-top:0px; margin-bottom: 1px;" id="印件号" @keydown="ent($event, '工序名称', '印件号', '印件名称')" placeholder="" />
  1260. </el-form-item>
  1261. </el-col>
  1262. <el-col :span="10" style="margin-top:0px; margin-bottom: 1px;">
  1263. <el-form-item label="印件名称" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1264. <el-input v-model="formData3.yj_name" disabled id="印件名称" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '印件号', '印件名称', '工艺名称')" placeholder="" />
  1265. </el-form-item>
  1266. </el-col>
  1267. <el-col :span="8" style="margin-top:0px; margin-bottom: 1px;">
  1268. <el-form-item label="工艺名称" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1269. <el-input v-model="formData3.gy_name" disabled id="工艺名称" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '印件名称', '工艺名称', 'gxh')" placeholder="" />
  1270. </el-form-item>
  1271. </el-col>
  1272. <el-col :span="2" style="margin-top:0px; margin-bottom: 1px;">
  1273. <el-form-item label="" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1274. <el-input v-model="formData3.gxh" disabled id="gxh" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '工艺名称', 'gxh', '日期')" placeholder="" />
  1275. </el-form-item>
  1276. </el-col>
  1277. </el-row>
  1278. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  1279. <!-- <el-col :span="1" style="margin-top:0px; margin-bottom: 1px;">
  1280. </el-col> -->
  1281. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1282. <el-form-item label="日期" prop="" style="margin-top:0px; margin-bottom: 1px;margin-left:24px">
  1283. <el-input v-model="formData3.日期" disabled id="日期" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, 'gxh', '日期', '流程标牌')" placeholder="" />
  1284. </el-form-item>
  1285. </el-col>
  1286. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1287. <el-form-item label="流程标牌" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1288. <el-input v-model="formData3.流程标牌" id="流程标牌" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '日期', '流程标牌', '上机时间')" placeholder="" />
  1289. </el-form-item>
  1290. </el-col>
  1291. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1292. <el-form-item label="上机时间" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1293. <el-input v-model="formData3.上机时间" id="上机时间" disabled style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '流程标牌', '上机时间', '下机时间')" placeholder="" />
  1294. </el-form-item>
  1295. </el-col>
  1296. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1297. <el-form-item label="下机时间" prop="" style="margin-top:0px; margin-bottom: 1px;">
  1298. <el-input v-model="formData3.下机时间" disabled style="margin-top:0px; margin-bottom: 1px;" id="下机时间" @keydown="ent($event, '上机时间', '下机时间', '产量')" placeholder="" />
  1299. </el-form-item>
  1300. </el-col>
  1301. <el-col :span="3">
  1302. </el-col>
  1303. </el-row>
  1304. </div>
  1305. <!-- <div style="margin-top: 20px;">-->
  1306. <div style="margin-top: 5px;">
  1307. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  1308. <!-- <el-col :span="1" style="margin-top:0px; margin-bottom: 1px;"></el-col> -->
  1309. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1310. <el-form-item label="产量" prop="" style="margin-top:0px; margin-bottom: 1px;margin-left:24px">
  1311. <el-input v-model="formData3.产量" id="产量" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '下机时间', '产量', '制程废品')" placeholder="" />
  1312. </el-form-item>
  1313. </el-col>
  1314. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1315. <el-form-item label="制程废品" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1316. <el-input v-model="formData3.制程废品" id="制程废品" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '产量', '制程废品', '制程次品')" placeholder="" />
  1317. </el-form-item>
  1318. </el-col>
  1319. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1320. <el-form-item label="制程次品" prop="id" style="margin-top:0px; margin-bottom: 1px;margin-left:0px">
  1321. <el-input v-model="formData3.制程次品" id="制程次品" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '制程废品', '制程次品', '前工序废')" placeholder="" />
  1322. </el-form-item>
  1323. </el-col>
  1324. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1325. <el-form-item label="前工序废" prop="" style="margin-top:0px; margin-bottom: 1px;">
  1326. <el-input v-model="formData3.前工序废" id="前工序废" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '制程次品', '前工序废', '来料异常')" placeholder="" />
  1327. </el-form-item>
  1328. </el-col>
  1329. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1330. <el-form-item label="来料异常" prop="" style="margin-top:0px; margin-bottom: 1px;">
  1331. <el-input v-model="formData3.来料异常" id="来料异常" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '前工序废', '来料异常', '联数')" placeholder="" />
  1332. </el-form-item>
  1333. </el-col>
  1334. </el-row>
  1335. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  1336. <!-- <el-col :span="1" style="margin-top:0px; margin-bottom: 1px;"></el-col> -->
  1337. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1338. <el-form-item label="联数" prop="" style="margin-top:0px; margin-bottom: 1px;margin-left:24px">
  1339. <el-input v-model="formData3.Gy0_ls" disabled id="联数" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '来料异常', '联数', '墨色')" placeholder="" />
  1340. </el-form-item>
  1341. </el-col>
  1342. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1343. <el-form-item label="墨色" prop="" label-width="60" style="margin-top:0px; margin-bottom: 1px;">
  1344. <el-input v-model="formData3.Gy0_ms" disabled id="墨色" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '联数', '墨色', '装版总时长')" placeholder="" />
  1345. </el-form-item>
  1346. </el-col>
  1347. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1348. <el-form-item label="装版总时长" prop="id" style="margin-top:0px; margin-bottom: 1px;margin-left:-12px">
  1349. <el-input v-model="formData3.装版总时长" id="装版总时长" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '墨色', '装版总时长', '打样总工时')" placeholder="" />
  1350. </el-form-item>
  1351. </el-col>
  1352. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1353. <el-form-item label="打样总工时" prop="id" style="margin-top:0px; margin-bottom: 1px;margin-left:-12px">
  1354. <el-input v-model="formData3.打样总工时" style="margin-top:0px; margin-bottom: 1px;" id="打样总工时" @keydown="ent($event, '装版总时长', '打样总工时', '通电工时')" placeholder="" />
  1355. </el-form-item>
  1356. </el-col>
  1357. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1358. <el-form-item label="通电工时" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1359. <el-input v-model="formData3.通电工时" style="margin-top:0px; margin-bottom: 1px;" id="通电工时" @keydown="ent($event, '打样总工时', '通电工时', '定额代号')" placeholder="" />
  1360. </el-form-item>
  1361. </el-col>
  1362. </el-row>
  1363. <el-row :gutter="20" style="margin-top:0px; margin-bottom: 1vh;">
  1364. <!-- <el-col :span="1" style="margin-top:0px; margin-bottom: 1px;"></el-col> -->
  1365. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;margin-left:0">
  1366. <el-form-item label="定额代号" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1367. <el-input v-model="formData3.定额代号" disabled id="定额代号" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '通电工时', '定额代号', '码开始行')" placeholder="" />
  1368. </el-form-item>
  1369. </el-col>
  1370. <el-col :span="3" style="margin-top:0px; margin-bottom: 1px;">
  1371. <el-form-item label="码开始行" prop="id" style="margin-top:0px; margin-bottom: 1px;margin-left:0">
  1372. <el-input v-model="formData3.码开始行" style="margin-top:0px; margin-bottom: 1px;" id="码开始行" @keydown="ent($event, '定额代号', '码开始行', '码结束行')" placeholder="" />
  1373. </el-form-item>
  1374. </el-col>
  1375. <el-col :span="3" style="margin-top:0px; margin-bottom: 1px;">
  1376. <el-form-item label="码结束行" prop="id" style="margin-top:0px; margin-bottom: 1px;margin-left:0">
  1377. <el-input v-model="formData3.码结束行" style="margin-top:0px; margin-bottom: 1px;" id="码结束行" @keydown="ent($event, '码开始行', '码结束行', '码包')" placeholder="" />
  1378. </el-form-item>
  1379. </el-col>
  1380. <el-col :span="6" style="margin-top:0px; margin-bottom: 1px;">
  1381. <el-form-item label="码包" prop="id" style="margin-top:0px; margin-bottom: 1px;margin-left:105px">
  1382. <el-input v-model="formData3.码包" style="margin-top:0px; margin-bottom: 1px;" id="码包" @keydown="ent($event, '码结束行', '码包', '主电表')" placeholder="" />
  1383. </el-form-item>
  1384. </el-col>
  1385. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1386. <el-form-item label="主电表" prop="id" style="margin-top:0px; margin-bottom: 1px;margin-left:14px">
  1387. <el-input v-model="formData3.主电表" style="margin-top:0px; margin-bottom: 1px;" id="主电表" @keydown="ent($event, '码包', '主电表', '辅电表')" placeholder="" />
  1388. </el-form-item>
  1389. </el-col>
  1390. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1391. <el-form-item label="辅电表" prop="id" style="margin-top:0px; margin-bottom: 1px;margin-left:16px">
  1392. <el-input v-model="formData3.辅电表" id="辅电表" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '主电表', '辅电表', 'bzdh')" placeholder="" />
  1393. </el-form-item>
  1394. </el-col>
  1395. <el-col :span="8">
  1396. <el-form-item label="换版类型:" prop="flatFeed" class="mab">
  1397. <el-radio v-model="formData3.换版类型" label="装新版" @keydown="ent1($event)">装新版</el-radio>
  1398. <el-radio v-model="formData3.换版类型" label="装旧版" @keydown="ent1($event)">装旧版</el-radio>
  1399. <el-radio v-model="formData3.换版类型" label="换版" @keydown="ent1($event)" >换版</el-radio>
  1400. </el-form-item>
  1401. </el-col>
  1402. <el-col :span="4">
  1403. <el-form-item label="换版联拼数:" prop="flatFeed" class="mab">
  1404. <el-input v-model="formData3.换版联拼数" id="换版联拼数" @keydown="ent1($event)" style="width: 100px;" />
  1405. </el-form-item>
  1406. </el-col>
  1407. </el-row>
  1408. <div style="display: flex;">
  1409. <div style="width: 248vh;">组员及分配比例</div>
  1410. <div style="width: 22vh;">特殊组员</div>
  1411. <div style="width: 22vh;">拉料人员</div>
  1412. </div>
  1413. <el-row :gutter="10" style="margin-top: 1vh;">
  1414. <el-col :span="2">
  1415. <el-input v-model="formData3.sczl_bzdh" id="bzdh" disabled @keydown="ent($event, '辅电表', 'bzdh', 'bh1')" placeholder="" />
  1416. </el-col>
  1417. <el-col :span="2">
  1418. <el-input v-model="formData3.sczl_bh1" id="bh1" disabled @keydown="ent($event, 'bzdh', 'bh1', 'bh2')" @keyup.enter.native="getygsubmit($event, '1')" placeholder="" />
  1419. </el-col>
  1420. <el-col :span="2">
  1421. <el-input v-model="formData3.sczl_bh2" id="bh2" disabled @keydown="ent($event, 'bh1', 'bh2', 'bh3')" @keyup.enter.native="getygsubmit($event, '2')" placeholder="" />
  1422. </el-col>
  1423. <el-col :span="2">
  1424. <el-input v-model="formData3.sczl_bh3" id="bh3" disabled @keydown="ent($event, 'bh2', 'bh3', 'bh4')" @keyup.enter.native="getygsubmit($event, '3')" placeholder="" />
  1425. </el-col>
  1426. <el-col :span="2">
  1427. <el-input v-model="formData3.sczl_bh4" id="bh4" disabled @keydown="ent($event, 'bh3', 'bh4', 'bh5')" @keyup.enter.native="getygsubmit($event, '4')" placeholder="" />
  1428. </el-col>
  1429. <el-col :span="2">
  1430. <el-input v-model="formData3.sczl_bh5" id="bh5" disabled @keydown="ent($event, 'bh4', 'bh5', 'bh6')" @keyup.enter.native="getygsubmit($event, '5')" placeholder="" />
  1431. </el-col>
  1432. <el-col :span="2">
  1433. <el-input v-model="formData3.sczl_bh6" id="bh6" disabled @keydown="ent($event, 'bh5', 'bh6', 'bh7')" @keyup.enter.native="getygsubmit($event, '6')" placeholder="" />
  1434. </el-col>
  1435. <el-col :span="2">
  1436. <el-input v-model="formData3.sczl_bh7" id="bh7" disabled @keydown="ent($event, 'bh6', 'bh7', 'bh8')" @keyup.enter.native="getygsubmit($event, '7')" placeholder="" />
  1437. </el-col>
  1438. <el-col :span="2">
  1439. <el-input v-model="formData3.sczl_bh8" id="bh8" disabled @keydown="ent($event, 'bh7', 'bh8', 'bh9')" @keyup.enter.native="getygsubmit($event, '8')" placeholder="" />
  1440. </el-col>
  1441. <el-col :span="2">
  1442. <el-input v-model="formData3.sczl_bh9" id="bh9" disabled @keydown="ent($event, 'bh8', 'bh9', 'bh10')" @keyup.enter.native="getygsubmit($event, '9')" placeholder="" />
  1443. </el-col>
  1444. <el-col :span="2">
  1445. <el-input v-model="formData3.sczl_bh10" id="bh10" disabled @keydown="ent($event, 'bh9', 'bh10', 'bh11')" @keyup.enter.native="getygsubmit($event, '10')" placeholder="" />
  1446. </el-col>
  1447. <el-col :span="2">
  1448. <el-select v-model="formData3.sczl_bh11" id="bh11" @change="GetLl('create')">
  1449. <el-option label="" value="" />
  1450. <el-option label="自备" value="自备" />
  1451. <el-option label="张杭强" value="张杭强" />
  1452. <el-option label="李当林" value="李当林" />
  1453. </el-select>
  1454. <!-- <el-input v-model="formData3.sczl_bh11" id="bh11" @keyup.enter.native="getygsubmit($event, '11','1')" placeholder="" /> -->
  1455. </el-col>
  1456. </el-row>
  1457. <!-- 19231 -->
  1458. <el-row :gutter="10" style="margin-top: 10px;">
  1459. <el-col :span="2">
  1460. </el-col>
  1461. <el-col :span="2">
  1462. <el-input v-model="formData3.sczl_name1" disabled id="name1" @keydown="ent($event, 'bh11', 'name1', 'name2')" placeholder="" />
  1463. </el-col>
  1464. <el-col :span="2">
  1465. <el-input v-model="formData3.sczl_name2" disabled id="name2" @keydown="ent($event, 'name1', 'name2', 'name3')" placeholder="" />
  1466. </el-col>
  1467. <el-col :span="2">
  1468. <el-input v-model="formData3.sczl_name3" disabled id="name3" @keydown="ent($event, 'name2', 'name3', 'name4')" placeholder="" />
  1469. </el-col>
  1470. <el-col :span="2">
  1471. <el-input v-model="formData3.sczl_name4" disabled id="name4" @keydown="ent($event, 'name3', 'name4', 'name5')" placeholder="" />
  1472. </el-col>
  1473. <el-col :span="2">
  1474. <el-input v-model="formData3.sczl_name5" disabled id="name5" @keydown="ent($event, 'name4', 'name5', 'name6')" placeholder="" />
  1475. </el-col>
  1476. <el-col :span="2">
  1477. <el-input v-model="formData3.sczl_name6" disabled id="name6" @keydown="ent($event, 'name5', 'name6', 'name7')" placeholder="" />
  1478. </el-col>
  1479. <el-col :span="2">
  1480. <el-input v-model="formData3.sczl_name7" disabled id="name7" @keydown="ent($event, 'name6', 'name7', 'name8')" placeholder="" />
  1481. </el-col>
  1482. <el-col :span="2">
  1483. <el-input v-model="formData3.sczl_name8" disabled id="name8" @keydown="ent($event, 'name7', 'name8', 'name9')" placeholder="" />
  1484. </el-col>
  1485. <el-col :span="2">
  1486. <el-input v-model="formData3.sczl_name9" disabled id="name9" @keydown="ent($event, 'name8', 'name9', 'name10')" placeholder="" />
  1487. </el-col>
  1488. <el-col :span="2">
  1489. <el-input v-model="formData3.sczl_name10" disabled id="name10" @keydown="ent($event, 'name9', 'name10', 'name11')" placeholder="" />
  1490. </el-col>
  1491. <el-col :span="2">
  1492. <el-input v-model="formData3.sczl_name11" disabled id="name11" @keydown="ent($event, 'name10', 'name11', 'rate1')" placeholder="" />
  1493. </el-col>
  1494. </el-row>
  1495. <el-row :gutter="10" style="margin-top: 10px;">
  1496. <el-col :span="2"></el-col>
  1497. <el-col :span="2">
  1498. <el-input v-model="formData3.sczl_rate1" disabled id="rate1" @keydown="ent($event, 'name11', 'rate1', 'rate2')" placeholder="" />
  1499. </el-col>
  1500. <el-col :span="2">
  1501. <el-input v-model="formData3.sczl_rate2" disabled id="rate2" @keydown="ent($event, 'rate1', 'rate2', 'rate3')" placeholder="" />
  1502. </el-col>
  1503. <el-col :span="2">
  1504. <el-input v-model="formData3.sczl_rate3" disabled id="rate3" @keydown="ent($event, 'rate2', 'rate3', 'rate4')" placeholder="" />
  1505. </el-col>
  1506. <el-col :span="2">
  1507. <el-input v-model="formData3.sczl_rate4" disabled id="rate4" @keydown="ent($event, 'rate3', 'rate4', 'rate5')" placeholder="" />
  1508. </el-col>
  1509. <el-col :span="2">
  1510. <el-input v-model="formData3.sczl_rate5" disabled id="rate5" @keydown="ent($event, 'rate4', 'rate5', 'rate6')" placeholder="" />
  1511. </el-col>
  1512. <el-col :span="2">
  1513. <el-input v-model="formData3.sczl_rate6" disabled id="rate6" @keydown="ent($event, 'rate5', 'rate6', 'rate7')" placeholder="" />
  1514. </el-col>
  1515. <el-col :span="2">
  1516. <el-input v-model="formData3.sczl_rate7" disabled id="rate7" @keydown="ent($event, 'rate6', 'rate7', 'rate8')" placeholder="" />
  1517. </el-col>
  1518. <el-col :span="2">
  1519. <el-input v-model="formData3.sczl_rate8" disabled id="rate8" @keydown="ent($event, 'rate7', 'rate8', 'rate9')" placeholder="" />
  1520. </el-col>
  1521. <el-col :span="2">
  1522. <el-input v-model="formData3.sczl_rate9" disabled id="rate9" @keydown="ent($event, 'rate8', 'rate9', 'rate10')" placeholder="" />
  1523. </el-col>
  1524. <el-col :span="2">
  1525. <el-input v-model="formData3.sczl_rate10" disabled id="rate10" @keydown="ent($event, 'rate9', 'rate10', '工单编号')" placeholder="" />
  1526. </el-col>
  1527. <el-col :span="2">
  1528. </el-col>
  1529. </el-row>
  1530. </div>
  1531. <el-table
  1532. tooltip-effect="dark"
  1533. :data="chanliangselectData" row-key="ID"
  1534. highlight-current-row="true" border
  1535. style="width:100%" height="40vh"
  1536. @row-dblclick="batchaddSelectClick" :selectable="row => rowSelectable(row)" @selection-change="chanliangSelectionChange">
  1537. <el-table-column type="selection" width="55" align="center" label=""></el-table-column>
  1538. <el-table-column prop="batch" label="物料编号" width="150" />
  1539. <el-table-column
  1540. prop="BOM_物料名称"
  1541. label="物料名称"
  1542. width="400"
  1543. />
  1544. <el-table-column
  1545. prop="采购单号"
  1546. label="采购单号"
  1547. width="150"
  1548. />
  1549. <el-table-column
  1550. prop="st_wlbh"
  1551. label="供方批次"
  1552. width="400"
  1553. />
  1554. <el-table-column prop="卷号" label="卷号" width="150" />
  1555. <el-table-column prop="Uniqid" label="UniqID" width="150"/>
  1556. </el-table>
  1557. <!-- </el-scrollbar> -->
  1558. <template #footer>
  1559. <div class="dialog-footer">
  1560. <el-button @click="closeDialog" style="height: 50px;width: 100px;font-size: 2.5vh;font-weight: bold;">关 闭</el-button>
  1561. <el-button type="primary" style="height: 50px;width: 100px;font-size: 2.5vh;font-weight: bold;" :disabled="isSubmitting" @click="chanliangenterDialog">提 交</el-button>
  1562. </div>
  1563. </template>
  1564. </el-dialog>
  1565. <!-- JP机台独立页面 -->
  1566. <el-dialog v-model="JPchanliangVisible" :before-close="JPcloseDialog" style="width: 100%;height: 100%;;margin: 0px auto" :title="'班组产量提报'" destroy-on-close>
  1567. <el-row>
  1568. <el-form :model="JPformdata" label-position="right" ref="elFormRef" :rules="rule" >
  1569. <el-row :gutter="24">
  1570. <el-form-item label="工单编号:" prop="customerCode" class="mab" label-width="90">
  1571. <el-input v-model="JPformdata['工单编号']" style="width: 110px;" placeholder="Enter回车" id="工单编号" @blur="JPgetCPMCsubmit()" @keydown="JPent($event)"/>
  1572. </el-form-item>
  1573. <el-form-item label="产品名称:" prop="customerName" class="mab" label-width="130">
  1574. <el-input v-model="JPformdata['产品名称']" style="width: 520px;" id="产品名称" @keydown="JPent($event)"/>
  1575. </el-form-item>
  1576. </el-row>
  1577. <el-row :gutter="24">
  1578. <el-form-item label="印件号:" prop="customerCode" class="mab" label-width="90">
  1579. <el-input v-model="JPformdata['印件号']" style="width: 110px;" id="印件号" placeholder="Enter回车" @keydown="JPent($event)"/>
  1580. </el-form-item>
  1581. <el-form-item label="印件名称:" prop="customerName" class="mab" label-width="130">
  1582. <el-input v-model="JPformdata['印件名称']" style="width: 520px;" id="印件名称" @keydown="JPent($event)"/>
  1583. </el-form-item>
  1584. </el-row>
  1585. <el-row :gutter="24">
  1586. <el-form-item label="工序号:" prop="customerCode" class="mab" label-width="90">
  1587. <el-input v-model="JPformdata['工序号']" style="width: 110px;" id="工序号" placeholder="Enter回车" @blur="JPgetGXsubmit()" @keydown="JPent($event)"/>
  1588. </el-form-item>
  1589. <el-form-item label="工序名称" prop="customerName" class="mab" label-width="130">
  1590. <el-input v-model="JPformdata['工序名称']" style="width: 520px;" id="工序名称" @keydown="JPent($event)"/>
  1591. </el-form-item>
  1592. </el-row>
  1593. <el-row :gutter="24">
  1594. <el-form-item label="日期:" prop="customerCode" class="mab" label-width="80">
  1595. <el-date-picker v-model="JPformdata['日期']" style="width: 130px;" type="datetime" format="YYYY/MM/DD" value-format="YYYY-MM-DD" @keydown="ent1($event)"/>
  1596. <!-- <el-input v-model="JPformdata['日期']" style="width: 110px;" id="日期" @keydown="JPent($event)"/> -->
  1597. </el-form-item>
  1598. <el-form-item label="流程标牌:" prop="customerCode" class="mab" label-width="130">
  1599. <el-input v-model="JPformdata['流程标牌']" style="width: 110px;" id="流程标牌" @keydown="JPent($event)"/>
  1600. </el-form-item>
  1601. <el-form-item label="检验类别:" prop="customerCode" class="mab" label-width="90">
  1602. <el-input v-model="JPformdata['检验类别']" style="width: 110px;" id="检验类别" @keydown="JPent($event)"/>
  1603. </el-form-item>
  1604. <el-form-item label="废品率系数:" prop="customerCode" class="mab" label-width="100">
  1605. <el-input v-model="JPformdata['废品率系数']" style="width: 110px;" id="废品率系数" @keydown="JPent($event)"/>
  1606. </el-form-item>
  1607. </el-row>
  1608. <el-row :gutter="24">
  1609. <el-form-item label="计件箱数:" prop="customerCode" class="mab" label-width="540">
  1610. <el-input v-model="JPformdata['计件箱数']" style="width: 110px;" id="计件箱数" @keydown="JPent($event)"/>
  1611. </el-form-item>
  1612. <el-form-item label="每箱数量:" prop="customerCode" class="mab" label-width="100">
  1613. <el-input v-model="JPformdata['每箱数量']" style="width: 110px;" id="每箱数量" @keydown="JPent($event)"/>
  1614. </el-form-item>
  1615. </el-row>
  1616. <el-row :gutter="24">
  1617. <el-form-item label="换膜总工时" prop="customerCode" class="mab" label-width="90">
  1618. <el-input v-model="JPformdata['换膜总工时']" style="width: 110px;" id="换膜总工时" @keydown="JPent($event)"/>
  1619. </el-form-item>
  1620. <el-form-item label="通电工时:" prop="customerCode" class="mab" label-width="130">
  1621. <el-input v-model="JPformdata['通电工时']" style="width: 110px;" id="通电工时" @keydown="JPent($event)"/>
  1622. </el-form-item>
  1623. <el-form-item label="定额代号:" prop="customerCode" class="mab" label-width="90">
  1624. <el-input v-model="JPformdata['定额代号']" readonly style="width: 160px;" id="定额代号" @keydown="JPent($event)"/>
  1625. </el-form-item>
  1626. </el-row>
  1627. <div style="display: flex;">
  1628. <div>组员及分配比例</div>
  1629. </div>
  1630. <el-row :gutter="10" style="margin-top: 1vh;">
  1631. <el-col :span="2">
  1632. <el-input v-model="JPformdata['bzdh']" id="bzdh" @keydown="JPent($event)"/>
  1633. </el-col>
  1634. <el-col v-for="i in 10" :key="i" :span="2">
  1635. <el-input v-model="JPformdata['组员' + i]['编号']" :id="'bh' + i" @keydown="JPent($event,i,'1')"/>
  1636. </el-col>
  1637. </el-row>
  1638. <el-row :gutter="10" style="margin-top: 1vh;">
  1639. <el-col :span="2">
  1640. <!-- 空列,用于对齐 -->
  1641. </el-col>
  1642. <el-col v-for="i in 10" :key="i" :span="2">
  1643. <el-input v-model="JPformdata['组员' + i]['姓名']" :id="'xm' + i" @keydown="JPent($event)"/>
  1644. </el-col>
  1645. </el-row>
  1646. <el-row :gutter="10" style="margin-top: 1vh;">
  1647. <el-col :span="2">
  1648. <!-- 空列,用于对齐 -->
  1649. </el-col>
  1650. <el-col v-for="i in 10" :key="i" :span="2">
  1651. <el-input v-model="JPformdata['组员' + i]['比例']" :id="'bl' + i" @keydown="JPent($event)" />
  1652. </el-col>
  1653. </el-row>
  1654. </el-form>
  1655. </el-row>
  1656. <template #footer>
  1657. <div class="dialog-footer" style="margin-right: 8%;">
  1658. <el-button @click="JPcloseDialog" style="height: 50px;width: 100px;font-size: 2.5vh;font-weight: bold;">关 闭</el-button>
  1659. <el-button type="primary" style="height: 50px;width: 100px;font-size: 2.5vh;font-weight: bold;" @click="JPchanliangenterDialog">提 交</el-button>
  1660. </div>
  1661. <!-- <div class="dialog-footer" style="text-align: right;">
  1662. <el-button @click="JPcloseDialog">取 消</el-button>
  1663. <el-button type="primary" @click="JPenterDialog">确 定</el-button>
  1664. </div> -->
  1665. </template>
  1666. </el-dialog>
  1667. <!-- JP检品独立 印件选择-->
  1668. <el-dialog v-model="JPdialogSelectVisible_Yj" title="选择" destroy-on-close width="600px" @keydown="JPselect_Yj($event)" >
  1669. <el-table tooltip-effect="dark" :data="JPselectData_Yj"
  1670. row-key="ID" highlight-current-row="true"
  1671. border style="width:100%"
  1672. @row-dblclick="JPhandleSelectClick_Yj" >
  1673. <el-table-column prop="yjno" label="印件号" width="80" />
  1674. <el-table-column prop="yjmc" label="印件名称" width="480" />
  1675. </el-table>
  1676. </el-dialog>
  1677. <!-- JP检品独立 印件选择 -->
  1678. <el-dialog v-model="JPdialogSelectVisible_Gx" title="选择" destroy-on-close width="600px" >
  1679. <el-table tooltip-effect="dark" :data="JPselectData_Gx"
  1680. row-key="ID" highlight-current-row="true"
  1681. border style="width:100%"
  1682. @row-dblclick="JPhandleSelectClick_Gx">
  1683. <el-table-column prop="name" label="" width="560" />
  1684. </el-table>
  1685. </el-dialog>
  1686. <el-dialog v-model="JPdialogSelectVisible_LX" title="选择" destroy-on-close width="300px" >
  1687. <el-table
  1688. :data="JPtableData"
  1689. ref="table"
  1690. :row-style="{ height: '50px' }"
  1691. :cell-style="{ padding: '0px' }"
  1692. :header-row-style="{ height: '0px' }"
  1693. :header-cell-style="{ padding: '0px' }"
  1694. @row-dblclick="JPhandleRowClick"
  1695. highlight-current-row>
  1696. <el-table-column prop="name" label="名称" width="150"></el-table-column>
  1697. <el-table-column prop="type" label="类别"></el-table-column>
  1698. </el-table>
  1699. </el-dialog>
  1700. <!--JP检品机 当日上报产量 组员及分配比例-->
  1701. <el-dialog v-model="JPblModellist" :before-close="() => JPblModellist = false" style="width: 20%">
  1702. <el-form>
  1703. <div>
  1704. <el-table :data="JPemployeeDatalist" border :show-overflow-tooltip="true" :cell-class-name="JPblplanUsageCellClass" @row-click="JPtablebllickHandlerlist($event)">
  1705. <el-table-column prop="员工编号" label="员工编号"></el-table-column>
  1706. <el-table-column prop="ygxm" label="员工姓名"></el-table-column>
  1707. </el-table>
  1708. </div>
  1709. </el-form>
  1710. </el-dialog>
  1711. <!-- 日产量上报拉料 -->
  1712. <el-dialog v-model="llblModellist" :before-close="() => llblModellist = false" style="width: 20%">
  1713. <el-form>
  1714. <div>
  1715. <el-table :data="llemployeeDatalist" border :show-overflow-tooltip="true" :cell-class-name="JPblplanUsageCellClass" @row-click="lltablebllickHandlerlist($event)">
  1716. <el-table-column prop="员工编号" label="员工编号"></el-table-column>
  1717. <el-table-column prop="ygxm" label="员工姓名"></el-table-column>
  1718. </el-table>
  1719. </div>
  1720. </el-form>
  1721. </el-dialog>
  1722. <!--流程单查询【弹窗】-->
  1723. <el-dialog v-model="pd_lcdlist" title="工单工序生产进程" fullscreen>
  1724. <div style="width: 100%; height: 100%">
  1725. <el-button type="" @click=" () => {pd_lcdlist = false;}">退出</el-button>
  1726. </div>
  1727. <div style=" width: 100%; height: 100%; display: flex; align-items: center;">
  1728. <el-form-item label="工单编号" style="margin-right: 20px; padding: 0">
  1729. <el-input v-model="pd_lcdformData['gdbh']" @keyup.enter="pd_lcdProductValue" placeholder="Enter回车"/>
  1730. </el-form-item>
  1731. <el-form-item label="印件号" style="margin-right: 20px; padding: 0">
  1732. <el-input v-model="pd_lcdformData['yjno']" @keyup.enter="pd_lcdProductValue" placeholder="Enter回车"/>
  1733. </el-form-item>
  1734. <el-form-item label="" style="margin-right: 5px; padding: 0">
  1735. <el-input v-model="pd_lcdformData['code']" disabled/>
  1736. </el-form-item>
  1737. <el-form-item label="" style="margin-right: 5px; padding: 0">
  1738. <el-input v-model="pd_lcdformData['name']" disabled style="width: 500px" />
  1739. </el-form-item>
  1740. </div>
  1741. <div style="width: 100%; height: 70vh; display: flex">
  1742. <layout>
  1743. <layout-sider
  1744. :resize-directions="['right']"
  1745. :width="240"
  1746. style="margin-right: 10px; height: 70vh"
  1747. >
  1748. <div class="JKWTree-tree">
  1749. <el-tree
  1750. :data="pd_lcd_treeData"
  1751. default-expand-all
  1752. @node-click="pd_lcd_handleNodeClick"
  1753. />
  1754. </div>
  1755. </layout-sider>
  1756. </layout>
  1757. <layout-main>
  1758. <!-- 这里放右侧的内容 -->
  1759. <div style="display: flex; align-items: center;margin-left: 120px;">
  1760. <el-tag type="success" style="width: 55px; height: 40px; margin-right: 10px;"><h2>流程号</h2></el-tag>
  1761. <h2 style="margin: 0 20px 0 0;">绿格子图标表示“已完成”</h2>
  1762. <el-tag type="danger" style="width: 55px; height: 40px; margin-right: 10px;"><h2>流程号</h2></el-tag>
  1763. <h2 style="margin: 0;">红格子图标表示“未完成”</h2>
  1764. </div>
  1765. <br>
  1766. <el-space wrap style="margin-left: 120px;">
  1767. <!-- 右侧内容 -->
  1768. <template v-for="item in processList.total_process">
  1769. <el-button class="custom-button" disabled :type="! processList.process.includes(item) ? 'danger' : 'info'" plain style="width: 50px;">{{ item }}</el-button>
  1770. <!-- <el-button disabled :type="! processList.process.includes(item) ? 'danger' : 'info'" plain style="width: 50px">{{ item }}</el-button> -->
  1771. </template>
  1772. </el-space>
  1773. </layout-main>
  1774. </div>
  1775. </el-dialog>
  1776. <el-dialog
  1777. v-model="scpconlist"
  1778. title=""
  1779. width="80%"
  1780. height="80%"
  1781. :before-close="handleClose"
  1782. destroy-on-close
  1783. >
  1784. <!-- 在弹窗中使用Onderstatus组件 -->
  1785. <Onderstatus :default-search-value="formData.工单编号" />
  1786. <template #footer>
  1787. <el-button @click="scpconlist = false">关闭</el-button>
  1788. </template>
  1789. </el-dialog>
  1790. <el-dialog
  1791. v-model="bzchanliangVisible"
  1792. title="班组产量修改"
  1793. destroy-on-close
  1794. width="140vh"
  1795. style="height: 60vh;"
  1796. >
  1797. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  1798. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1799. <el-form-item label="工单编号" prop="id" style="margin-top:0px; margin-bottom: 0px;">
  1800. <el-input style="margin-top:0px; margin-bottom: 1px;" v-model="dbformData.order" id="工单编号" disabled @keydown="ent($event, 'rate10', '工单编号', '产品名称')" placeholder="" />
  1801. </el-form-item>
  1802. </el-col>
  1803. <el-col :span="10" style="margin-top:0px; margin-bottom: 1px;">
  1804. <el-form-item label="产品名称" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1805. <el-input v-model="dbformData.product_name" id="产品名称" style="margin-top:0px; margin-bottom: 1px;" disabled @keydown="ent($event, '工单编号', '产品名称', '工序名称')" placeholder="" />
  1806. </el-form-item>
  1807. </el-col>
  1808. <el-col :span="10" style="margin-top:0px; margin-bottom: 1px;">
  1809. <el-form-item label="工序名称" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1810. <el-input v-model="dbformData.gxmc" id="工序名称" style="margin-top:0px; margin-bottom: 1px;" disabled @keydown="ent($event, '产品名称', '工序名称', '印件号')" placeholder="" />
  1811. </el-form-item>
  1812. </el-col>
  1813. </el-row>
  1814. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  1815. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1816. <el-form-item label="印件号" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1817. <el-input v-model="dbformData.yjno" style="margin-top:0px; margin-bottom: 1px;" id="印件号" disabled @keydown="ent($event, '工序名称', '印件号', '印件名称')" placeholder="" />
  1818. </el-form-item>
  1819. </el-col>
  1820. <el-col :span="10" style="margin-top:0px; margin-bottom: 1px;">
  1821. <el-form-item label="印件名称" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1822. <el-input v-model="dbformData.yj_name" id="印件名称" style="margin-top:0px; margin-bottom: 1px;" disabled @keydown="ent($event, '印件号', '印件名称', '工艺名称')" placeholder="" />
  1823. </el-form-item>
  1824. </el-col>
  1825. <el-col :span="8" style="margin-top:0px; margin-bottom: 1px;">
  1826. <el-form-item label="工艺名称" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1827. <el-input v-model="dbformData.gy_name" id="工艺名称" style="margin-top:0px; margin-bottom: 1px;" disabled @keydown="ent($event, '印件名称', '工艺名称', 'gxh')" placeholder="" />
  1828. </el-form-item>
  1829. </el-col>
  1830. <el-col :span="2" style="margin-top:0px; margin-bottom: 1px;">
  1831. <el-form-item label="" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1832. <el-input v-model="dbformData.gxh" id="gxh" style="margin-top:0px; margin-bottom: 1px;" disabled @keydown="ent($event, '工艺名称', 'gxh', '日期')" placeholder="" />
  1833. </el-form-item>
  1834. </el-col>
  1835. </el-row>
  1836. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  1837. <el-col :span="1" style="margin-top:0px; margin-bottom: 1px;">
  1838. </el-col>
  1839. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1840. <el-form-item label="日期" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1841. <el-input v-model="dbformData.日期" id="日期" readonly style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, 'gxh', '日期', '流程标牌')" placeholder="" />
  1842. </el-form-item>
  1843. </el-col>
  1844. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1845. <el-form-item label="流程标牌" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1846. <el-input v-model="dbformData.流程标牌" id="流程标牌" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '日期', '流程标牌', '上机时间')" placeholder="" />
  1847. </el-form-item>
  1848. </el-col>
  1849. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1850. <el-form-item label="上机时间" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1851. <el-input v-model="dbformData.上机时间" id="上机时间" disabled style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '流程标牌', '上机时间', '下机时间')" placeholder="" />
  1852. </el-form-item>
  1853. </el-col>
  1854. <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
  1855. <el-form-item label="下机时间" prop="" style="margin-top:0px; margin-bottom: 1px;">
  1856. <el-input v-model="dbformData.下机时间" style="margin-top:0px; margin-bottom: 1px;" id="下机时间" disabled @keydown="ent($event, '上机时间', '下机时间', '产量')" placeholder="" />
  1857. </el-form-item>
  1858. </el-col>
  1859. <el-col :span="3">
  1860. </el-col>
  1861. </el-row>
  1862. <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
  1863. <el-col :span="1" style="margin-top:0px; margin-bottom: 1px;">
  1864. </el-col>
  1865. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1866. <el-form-item label="产量" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1867. <el-input v-model="dbformData.产量" id="产量" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '下机时间', '产量', '制程废品')" placeholder="" />
  1868. </el-form-item>
  1869. </el-col>
  1870. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1871. <el-form-item label="制程废品" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1872. <el-input v-model="dbformData.制程废品" id="制程废品" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '产量', '制程废品', '制程次品')" placeholder="" />
  1873. </el-form-item>
  1874. </el-col>
  1875. <el-col :span="3" style="margin-top:0px; margin-bottom: 1px;">
  1876. <el-form-item label="制程次品" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1877. <el-input v-model="dbformData.制程次品" id="制程次品" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '制程废品', '制程次品', '前工序废')" placeholder="" />
  1878. </el-form-item>
  1879. </el-col>
  1880. <el-col :span="3" style="margin-top:0px; margin-bottom: 1px;">
  1881. <el-form-item label="前工序废" prop="" style="margin-top:0px; margin-bottom: 1px;">
  1882. <el-input v-model="dbformData.前工序废" id="前工序废" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '制程次品', '前工序废', '来料异常')" placeholder="" />
  1883. </el-form-item>
  1884. </el-col>
  1885. <el-col :span="3" style="margin-top:0px; margin-bottom: 1px;">
  1886. <el-form-item label="来料异常" prop="" style="margin-top:0px; margin-bottom: 1px;">
  1887. <el-input v-model="dbformData.来料异常" id="来料异常" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '前工序废', '来料异常', '联数')" placeholder="" />
  1888. </el-form-item>
  1889. </el-col>
  1890. <el-col :span="3" style="margin-top:0px; margin-bottom: 1px;">
  1891. <el-form-item label="联数" prop="" style="margin-top:0px; margin-bottom: 1px;">
  1892. <el-input v-model="dbformData.联数" id="联数" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '来料异常', '联数', '墨色')" placeholder="" />
  1893. </el-form-item>
  1894. </el-col>
  1895. <el-col :span="3" style="margin-top:0px; margin-bottom: 1px;">
  1896. <el-form-item label="墨色" prop="" style="margin-top:0px; margin-bottom: 1px;">
  1897. <el-input v-model="dbformData.墨色" id="墨色" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '联数', '墨色', '装版总时长')" placeholder="" />
  1898. </el-form-item>
  1899. </el-col>
  1900. </el-row>
  1901. <el-row :gutter="20" style="margin-top:0px; margin-bottom: 1px;">
  1902. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1903. <el-form-item label="装版总时长" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1904. <el-input v-model="dbformData.装版总时长" id="装版总时长" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '墨色', '装版总时长', '打样总工时')" placeholder="" />
  1905. </el-form-item>
  1906. </el-col>
  1907. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1908. <el-form-item label="打样总工时" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1909. <el-input v-model="dbformData.打样总工时" style="margin-top:0px; margin-bottom: 1px;" id="打样总工时" @keydown="ent($event, '装版总时长', '打样总工时', '通电工时')" placeholder="" />
  1910. </el-form-item>
  1911. </el-col>
  1912. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1913. <el-form-item label="通电工时" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1914. <el-input v-model="dbformData.通电工时" style="margin-top:0px; margin-bottom: 1px;" id="通电工时" @keydown="ent($event, '打样总工时', '通电工时', '定额代号')" placeholder="" />
  1915. </el-form-item>
  1916. </el-col>
  1917. </el-row>
  1918. <el-row :gutter="20" style="margin-top:0px; margin-bottom: 1vh;">
  1919. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1920. <el-form-item label="定额代号" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1921. <el-input v-model="dbformData.定额代号" id="定额代号" readonly style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '通电工时', '定额代号', '码包')" placeholder="" />
  1922. </el-form-item>
  1923. </el-col>
  1924. <el-col :span="8" style="margin-top:0px; margin-bottom: 1px;">
  1925. </el-col>
  1926. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1927. <el-form-item label="码包" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1928. <el-input v-model="dbformData.码包" style="margin-top:0px; margin-bottom: 1px;" id="码包" @keydown="ent($event, '定额代号', '码包', '主电表')" placeholder="" />
  1929. </el-form-item>
  1930. </el-col>
  1931. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1932. <el-form-item label="主电表" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1933. <el-input v-model="dbformData.主电表" style="margin-top:0px; margin-bottom: 1px;" id="主电表" @keydown="ent($event, '码包', '主电表', '辅电表')" placeholder="" />
  1934. </el-form-item>
  1935. </el-col>
  1936. <el-col :span="4" style="margin-top:0px; margin-bottom: 1px;">
  1937. <el-form-item label="辅电表" prop="id" style="margin-top:0px; margin-bottom: 1px;">
  1938. <el-input v-model="dbformData.辅电表" id="辅电表" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent($event, '主电表', '辅电表', 'bzdh')" placeholder="" />
  1939. </el-form-item>
  1940. </el-col>
  1941. </el-row>
  1942. <div style="display: flex;">
  1943. <div style="width: 116vh;">组员及分配比例</div>
  1944. <div style="width: 11vh;">特殊组员</div>
  1945. <div>拉料人员</div>
  1946. </div>
  1947. <el-row :gutter="10" style="margin-top: 1vh;">
  1948. <el-col :span="2">
  1949. <el-input v-model="BZMC" id="bzdh" disabled @keydown="ent($event, '辅电表', 'bzdh', 'bh1')" />
  1950. </el-col>
  1951. <el-col :span="2">
  1952. <el-input v-model="dbformData.sczl_bh1" id="bh1" disabled @keydown="ent($event, 'bzdh', 'bh1', 'bh2')" @keyup.enter.native="getygsubmit($event, '1')" placeholder="" />
  1953. </el-col>
  1954. <el-col :span="2">
  1955. <el-input v-model="dbformData.sczl_bh2" id="bh2" disabled @keydown="ent($event, 'bh1', 'bh2', 'bh3')" @keyup.enter.native="getygsubmit($event, '2')" placeholder="" />
  1956. </el-col>
  1957. <el-col :span="2">
  1958. <el-input v-model="dbformData.sczl_bh3" id="bh3" disabled @keydown="ent($event, 'bh2', 'bh3', 'bh4')" @keyup.enter.native="getygsubmit($event, '3')" placeholder="" />
  1959. </el-col>
  1960. <el-col :span="2">
  1961. <el-input v-model="dbformData.sczl_bh4" id="bh4" disabled @keydown="ent($event, 'bh3', 'bh4', 'bh5')" @keyup.enter.native="getygsubmit($event, '4')" placeholder="" />
  1962. </el-col>
  1963. <el-col :span="2">
  1964. <el-input v-model="dbformData.sczl_bh5" id="bh5" disabled @keydown="ent($event, 'bh4', 'bh5', 'bh6')" @keyup.enter.native="getygsubmit($event, '5')" placeholder="" />
  1965. </el-col>
  1966. <el-col :span="2">
  1967. <el-input v-model="dbformData.sczl_bh6" id="bh6" disabled @keydown="ent($event, 'bh5', 'bh6', 'bh7')" @keyup.enter.native="getygsubmit($event, '6')" placeholder="" />
  1968. </el-col>
  1969. <el-col :span="2">
  1970. <el-input v-model="dbformData.sczl_bh7" id="bh7" disabled @keydown="ent($event, 'bh6', 'bh7', 'bh8')" @keyup.enter.native="getygsubmit($event, '7')" placeholder="" />
  1971. </el-col>
  1972. <el-col :span="2">
  1973. <el-input v-model="dbformData.sczl_bh8" id="bh8" disabled @keydown="ent($event, 'bh7', 'bh8', 'bh9')" @keyup.enter.native="getygsubmit($event, '8')" placeholder="" />
  1974. </el-col>
  1975. <el-col :span="2">
  1976. <el-input v-model="dbformData.sczl_bh9" id="bh9" disabled @keydown="ent($event, 'bh8', 'bh9', 'bh10')" @keyup.enter.native="getygsubmit($event, '9')" placeholder="" />
  1977. </el-col>
  1978. <el-col :span="2">
  1979. <el-input v-model="dbformData.sczl_bh10" id="bh10" disabled @keydown="ent($event, 'bh9', 'bh10', 'bh11')" @keyup.enter.native="getygsubmit($event, '10')" placeholder="" />
  1980. </el-col>
  1981. <el-col :span="2">
  1982. <el-select v-model="dbformData.sczl_bh11" id="bh11" @change="GetLl('update')">
  1983. <el-option label="" value="" />
  1984. <el-option label="自备" value="自备" />
  1985. <el-option label="张杭强" value="张杭强" />
  1986. <el-option label="李当林" value="李当林" />
  1987. </el-select>
  1988. <!-- <el-input v-model="dbformData.sczl_bh11" id="bh11" @keydown="ents($event, 'bh10', 'bh11', 'name1')" @keyup.enter.native="getlaliaoyg($event)" placeholder="" /> -->
  1989. </el-col>
  1990. </el-row>
  1991. <el-row :gutter="10" style="margin-top: 10px;">
  1992. <el-col :span="2">
  1993. </el-col>
  1994. <el-col :span="2">
  1995. <el-input v-model="dbformData.sczl_name1" id="name1" disabled @keydown="ent($event, 'bh11', 'name1', 'name2')" placeholder="" />
  1996. </el-col>
  1997. <el-col :span="2">
  1998. <el-input v-model="dbformData.sczl_name2" id="name2" disabled @keydown="ent($event, 'name1', 'name2', 'name3')" placeholder="" />
  1999. </el-col>
  2000. <el-col :span="2">
  2001. <el-input v-model="dbformData.sczl_name3" id="name3" disabled @keydown="ent($event, 'name2', 'name3', 'name4')" placeholder="" />
  2002. </el-col>
  2003. <el-col :span="2">
  2004. <el-input v-model="dbformData.sczl_name4" id="name4" disabled @keydown="ent($event, 'name3', 'name4', 'name5')" placeholder="" />
  2005. </el-col>
  2006. <el-col :span="2">
  2007. <el-input v-model="dbformData.sczl_name5" id="name5" disabled @keydown="ent($event, 'name4', 'name5', 'name6')" placeholder="" />
  2008. </el-col>
  2009. <el-col :span="2">
  2010. <el-input v-model="dbformData.sczl_name6" id="name6" disabled @keydown="ent($event, 'name5', 'name6', 'name7')" placeholder="" />
  2011. </el-col>
  2012. <el-col :span="2">
  2013. <el-input v-model="dbformData.sczl_name7" id="name7" disabled @keydown="ent($event, 'name6', 'name7', 'name8')" placeholder="" />
  2014. </el-col>
  2015. <el-col :span="2">
  2016. <el-input v-model="dbformData.sczl_name8" id="name8" disabled @keydown="ent($event, 'name7', 'name8', 'name9')" placeholder="" />
  2017. </el-col>
  2018. <el-col :span="2">
  2019. <el-input v-model="dbformData.sczl_name9" id="name9" disabled @keydown="ent($event, 'name8', 'name9', 'name10')" placeholder="" />
  2020. </el-col>
  2021. <el-col :span="2">
  2022. <el-input v-model="dbformData.sczl_name10" id="name10" disabled @keydown="ent($event, 'name9', 'name10', 'name11')" placeholder="" />
  2023. </el-col>
  2024. <el-col :span="2">
  2025. <el-input v-model="dbformData.sczl_name11" id="name11" @keydown="ent($event, 'name10', 'name11', 'rate1')" placeholder="" />
  2026. </el-col>
  2027. </el-row>
  2028. <el-row :gutter="10" style="margin-top: 10px;">
  2029. <el-col :span="2">
  2030. </el-col>
  2031. <el-col :span="2">
  2032. <el-input v-model="dbformData.sczl_rate1" id="rate1" disabled @keydown="ent($event, 'name11', 'rate1', 'rate2')" placeholder="" />
  2033. </el-col>
  2034. <el-col :span="2">
  2035. <el-input v-model="dbformData.sczl_rate2" id="rate2" disabled @keydown="ent($event, 'rate1', 'rate2', 'rate3')" placeholder="" />
  2036. </el-col>
  2037. <el-col :span="2">
  2038. <el-input v-model="dbformData.sczl_rate3" id="rate3" disabled @keydown="ent($event, 'rate2', 'rate3', 'rate4')" placeholder="" />
  2039. </el-col>
  2040. <el-col :span="2">
  2041. <el-input v-model="dbformData.sczl_rate4" id="rate4" disabled @keydown="ent($event, 'rate3', 'rate4', 'rate5')" placeholder="" />
  2042. </el-col>
  2043. <el-col :span="2">
  2044. <el-input v-model="dbformData.sczl_rate5" id="rate5" disabled @keydown="ent($event, 'rate4', 'rate5', 'rate6')" placeholder="" />
  2045. </el-col>
  2046. <el-col :span="2">
  2047. <el-input v-model="dbformData.sczl_rate6" id="rate6" disabled @keydown="ent($event, 'rate5', 'rate6', 'rate7')" placeholder="" />
  2048. </el-col>
  2049. <el-col :span="2">
  2050. <el-input v-model="dbformData.sczl_rate7" id="rate7" disabled @keydown="ent($event, 'rate6', 'rate7', 'rate8')" placeholder="" />
  2051. </el-col>
  2052. <el-col :span="2">
  2053. <el-input v-model="dbformData.sczl_rate8" id="rate8" disabled @keydown="ent($event, 'rate7', 'rate8', 'rate9')" placeholder="" />
  2054. </el-col>
  2055. <el-col :span="2">
  2056. <el-input v-model="dbformData.sczl_rate9" id="rate9" disabled @keydown="ent($event, 'rate8', 'rate9', 'rate10')" placeholder="" />
  2057. </el-col>
  2058. <el-col :span="2">
  2059. <el-input v-model="dbformData.sczl_rate10" id="rate10" disabled @keydown="ent($event, 'rate9', 'rate10', '工单编号')" placeholder="" />
  2060. </el-col>
  2061. <el-col :span="2">
  2062. </el-col>
  2063. </el-row>
  2064. <!-- </el-scrollbar> -->
  2065. <template #footer>
  2066. <div class="dialog-footer" style="margin-right: 200px">
  2067. <el-button @click="bzcloseDialog" style="width: 110px;height: 50px;font-size: 24px;">取 消</el-button>
  2068. <el-button type="primary" @click="bzchanliangenterDialog" style="width: 110px;height: 50px;font-size: 24px;">确 定</el-button>
  2069. </div>
  2070. </template>
  2071. </el-dialog>
  2072. <el-dialog v-model="gzSelVisible" title="员工工资明细查询"
  2073. destroy-on-close fullscreen
  2074. style="font-size: 50px;font-weight: bold;"
  2075. >
  2076. <el-button v-for="ygbh in gz_bzbh" type="primary" @click="gz_ontable(ygbh)">{{ ygbh }}</el-button>
  2077. <!-- 数据展示 -->
  2078. <el-table ref="gz_multipleTable" style="width: 100%;height: 40vh;padding-top: 5px;" tooltip-effect="dark" :data="gz_tableData" row-key="ID"
  2079. highlight-current-row="true" border :show-overflow-tooltip="true"
  2080. :row-style="{ height: '20px' }"
  2081. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  2082. :header-cell-style="{ padding: '0px' }"
  2083. >
  2084. <el-table-column v-for="column in tableCols1"
  2085. :key="column.prop" :prop="column.prop"
  2086. :label="column.label" :width="column.width"
  2087. show-overflow-tooltip="true" sortable
  2088. />
  2089. </el-table>
  2090. <!-- 数据展示 -->
  2091. <el-table ref="gz_multipleTable2" style="width: 100%;height: 40vh;padding-top: 30px;" tooltip-effect="dark" :data="gz_tableData2" row-key="ID"
  2092. highlight-current-row="true" border
  2093. :row-style="{ height: '20px' }"
  2094. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  2095. :header-cell-style="{ padding: '0px' }"
  2096. :show-overflow-tooltip="true"
  2097. >
  2098. <el-table-column v-for="column in tableCols2"
  2099. :key="column.prop" :prop="column.prop"
  2100. :label="column.label" :width="column.width"
  2101. show-overflow-tooltip="true" sortable
  2102. />
  2103. </el-table>
  2104. </el-dialog>
  2105. <el-dialog
  2106. v-model="wgVisible"
  2107. destroy-on-close
  2108. style="margin-top: 325px;"
  2109. center width="400px"
  2110. :append-to-body="true"
  2111. >
  2112. <span style="margin-left: 120px;font-size: 20px;font-weight: bold;">确认完工吗?</span> <!-- 添加确认提示 -->
  2113. <br>
  2114. <span slot="footer" class="dialog-footer">
  2115. <el-button style="margin-left: 70px;margin-top: 30px;" @click="wgVisible = false">取消</el-button>
  2116. <el-button style="margin-left: 70px;margin-top: 30px; "type="primary" @click="wghandleConfirm">确认</el-button>
  2117. </span>
  2118. </el-dialog>
  2119. <Shebeizhuangtai
  2120. v-if="dialogSbyxgl"
  2121. v-model="dialogSbyxgl"
  2122. :title="titleinfo"
  2123. :formData="formData"
  2124. />
  2125. <el-dialog v-model="GetDedhVisible" id="tableFplb" @keydown="ent($event)" style="margin-top: 5%;" >
  2126. <el-form>
  2127. <el-form-item label="选择定额代号" class="mab" prop="keyOrder"></el-form-item>
  2128. <div style="border:1px solid #eee; width:100%; height: 600px; overflow-y: auto;">
  2129. <el-tree :data="GetDedhtreeData" ref="table_fplb"
  2130. @keydown="handleTreeKeydown"
  2131. :props="{ children: 'children',label: 'label'}"
  2132. node-key="id" @node-click="handleFplbClick">
  2133. </el-tree>
  2134. </div>
  2135. </el-form>
  2136. </el-dialog>
  2137. </el-main>
  2138. </el-container>
  2139. </el-container>
  2140. <PrintPage ref="printPageRef" />
  2141. </div>
  2142. </template>
  2143. <script>
  2144. //点击按钮显示下方表格
  2145. export default {
  2146. data() {
  2147. return {
  2148. currentTable: '', // 当前展示的表格
  2149. activeName: 'first',
  2150. _GetorderDetail:'',
  2151. };
  2152. },
  2153. methods: {
  2154. }
  2155. };
  2156. </script>
  2157. <script setup>
  2158. import {
  2159. createCompany,
  2160. deleteCompany,
  2161. deleteCompanyByIds,
  2162. updateCompany,
  2163. findCompany,
  2164. getCompanyList
  2165. } from '@/api/company'
  2166. import {
  2167. EquipmentSchedulingEdit,
  2168. Procedure,
  2169. teamDel,
  2170. workOrderListDetail,
  2171. getOrderProcessLeft,
  2172. getOrderProcessRight
  2173. } from "@/api/yunyin/yunying";
  2174. import {
  2175. ProcessInspectionRecordsItemAdd,
  2176. AdditionalInspectionRecordAdd,
  2177. getMac,
  2178. remodelGetTab,
  2179. setMachineTeam,
  2180. ModelChangeRecord,
  2181. ComplaintRecord,
  2182. RemodelDetail,
  2183. MachineTeamAdd,
  2184. remodelDataAdd,
  2185. remodelDataEdit,
  2186. remodelDataDel,
  2187. PrintDetailAdd,
  2188. PrintDetailEdit,
  2189. chanliangEdit,
  2190. ChanliangDel,
  2191. MachineWorkOrderEdit
  2192. } from '@/api/jixiaoguanli/baogong'
  2193. import {
  2194. facilityTab,
  2195. facilitychanLiang,
  2196. facilityInspect,
  2197. facilityProduction,
  2198. facilityTeam,
  2199. facilityMachineList,
  2200. facilitySpotCheckItem,
  2201. facilityInspectionItem,
  2202. reportProduceInfo,
  2203. reportName,
  2204. getStaffNameTwo,
  2205. reportInfo,
  2206. reportMachineMac,
  2207. facilityWorklist,
  2208. setProcessStatus,
  2209. submitDailyProduction,
  2210. facilityDetail,
  2211. inspectionRecord,
  2212. getYg,
  2213. submitPatrolRecord,
  2214. getMachineMac,
  2215. setMachineStatus,
  2216. fieldInspectionRecord,
  2217. InspectionItemAdd,
  2218. ProcessInspectionRecordsItem,
  2219. MachineDetailList,
  2220. facilityPrintGetTab,
  2221. facilityPrintDetail,
  2222. facilityProcedure,
  2223. dailysearch,
  2224. dailygetGzByYgbh,
  2225. MachineChanliangDetail,
  2226. ChanliangPrintDetail,
  2227. ChanliangProcessDetail,
  2228. JpUploade,
  2229. getTimelist,
  2230. getRejectRate,
  2231. JPproductionDedh
  2232. } from '@/api/jixiaoguanli/jitairibaobiao'
  2233. import {
  2234. demoCustomer
  2235. } from "@/api/demo";
  2236. // 全量引入格式化工具 请按需保留
  2237. import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
  2238. import { ElMessage, ElMessageBox,ElNotification } from 'element-plus'
  2239. import { ref, reactive,watch,nextTick,onMounted } from 'vue'
  2240. import Shebeizhuangtai from '@/view/performance/09-workOrderVerification/componets/shebeizhuangtai.vue'
  2241. import { useUserStore } from '@/pinia/modules/user'
  2242. import PrintPage from '../yunyin/shengchanguanli/components/print.vue'
  2243. import Onderstatus from '@/view/quality/orderstatus.vue'
  2244. import {
  2245. StaGetOrderList,
  2246. StaGetList,
  2247. StaProcessList,
  2248. StaGetOrderDetail,
  2249. StaProcessAnomaly,
  2250. } from '@/api/mes/job'
  2251. // 成功
  2252. const successres = (arr) => {
  2253. ElMessage({
  2254. type: '',
  2255. dangerouslyUseHTMLString: true,
  2256. // duration: 0, // 不自动关闭
  2257. message: `<strong style="font-size: 71px; color: black; background-color: #80FA80; padding: 30px 280px; width: 482px; line-height: 60px; text-align: center; display: block;">${arr}</strong>`,
  2258. customClass: 'custom-warning-message'
  2259. });
  2260. }
  2261. // 失败
  2262. const errorres = (arr) => {
  2263. ElMessage({
  2264. type: '',
  2265. dangerouslyUseHTMLString: true,
  2266. // duration: 0, // 不自动关闭
  2267. message: `<strong style="font-size: 71px; color: white; background-color: red; padding: 30px 280px; width: 482px; line-height: 60px; text-align: center; display: block;">${arr}</strong>`,
  2268. customClass: 'custom-warning-message'
  2269. });
  2270. }
  2271. // 警告
  2272. const warningres = (arr) => {
  2273. ElMessage({
  2274. type: '',
  2275. dangerouslyUseHTMLString: true,
  2276. // duration: 0, // 不自动关闭
  2277. message: `<strong style="font-size: 71px; color: white; background-color: #e6a23c; padding: 30px 280px; width: 482px; line-height: 60px; text-align: center; display: block;">${arr}</strong>`,
  2278. customClass: 'custom-warning-message'
  2279. });
  2280. }
  2281. // 获取当前日期
  2282. const today = new Date();
  2283. const year = today.getFullYear();
  2284. const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
  2285. const day = String(today.getDate()).padStart(2, '0');
  2286. const hours = String(today.getHours()).padStart(2, '0');
  2287. const minutes = String(today.getMinutes()).padStart(2, '0');
  2288. const seconds = String(today.getSeconds()).padStart(2, '0');
  2289. const currentDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  2290. const currentDates = `${year}-${month}-${day}`;
  2291. const printPageRef = ref()
  2292. const userStore = useUserStore()
  2293. const sys_id='['+userStore.userInfo.userName+'/'+userStore.userInfo.nickName+']'
  2294. const dialogSbyxgl=ref(false)
  2295. const zhichengstatus=ref(false)
  2296. const yinbanselectData = ref([])
  2297. defineOptions({
  2298. name: 'Company'
  2299. })
  2300. const xunchatreeData=ref([{label: '现场巡查记录',} ])
  2301. const activName=ref('first')
  2302. const activNames=ref('first')
  2303. let checked3=ref(false)
  2304. const detailData = reactive([])
  2305. const treeData=ref([])
  2306. const huanxingtreeData=ref([])
  2307. const huanxingselectData = ref([])
  2308. const huanxingData = ref({})
  2309. const dbformData=ref({})
  2310. const huanxingstatus=ref(false)
  2311. // 定义树的数据
  2312. const zhichengtreeData = ref([
  2313. { label: '首件与过程确认' },
  2314. { label: '机台检验' },
  2315. { label: 'IPQC检验' }
  2316. ]);
  2317. // // 配置树的节点属性
  2318. const zhichengtreeDatadefaultProps = {
  2319. children: 'children', // 用来指定每个节点的子节点的字段
  2320. label: 'label' // 用来指定每个节点的文本的字段
  2321. };
  2322. let dianjiantreeData;
  2323. let JTMC=ref()
  2324. let CJMC=ref()
  2325. const sbzyData = reactive([])
  2326. const FPData = reactive([])
  2327. const CLMXData = reactive([])
  2328. const JYData = ref([]); // 使用 ref 创建响应式数组
  2329. //工单打印
  2330. const pd_gdprintonClick = () => {
  2331. if(formData.value.工单编号==''){
  2332. warningres('未获取到工单')
  2333. return
  2334. }
  2335. printPageRef.value.open(formData.value.工单编号)
  2336. }
  2337. //键盘 input框跳转
  2338. const ent = (event,id1,id2,id3) => {
  2339. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  2340. const idMap = {
  2341. 'bh1': '1',
  2342. 'bh2': '2',
  2343. 'bh3': '3',
  2344. 'bh4': '4',
  2345. 'bh5': '5',
  2346. 'bh6': '6',
  2347. 'bh7': '7',
  2348. 'bh8': '8',
  2349. 'bh9': '9',
  2350. 'bh10': '10',
  2351. 'bh11': '11',
  2352. };
  2353. if(id2 === '定额代号'){
  2354. getDedhsubmit();
  2355. }
  2356. if (idMap.hasOwnProperty(id2) && event.keyCode === 13) {
  2357. getygsubmit('', idMap[id2]);
  2358. }else if(id3!=''){
  2359. document.getElementById(id3).focus()
  2360. }
  2361. } else if (event.keyCode === 38) { // 向上箭头
  2362. if(id1!=''){
  2363. document.getElementById(id1).focus()
  2364. }
  2365. // }
  2366. // else if (event.keyCode === 8) { // 删除箭头
  2367. // if(id1!='' && document.getElementById(id2).value==''){
  2368. // document.getElementById(id1).focus()
  2369. // }
  2370. // console.log(document.getElementById(id2).value)
  2371. }else if (event.keyCode === 37) { // 向左箭头
  2372. if(id1!='' && document.getElementById(id2).selectionStart==0){
  2373. document.getElementById(id1).focus()
  2374. }
  2375. }else if (event.keyCode === 39) { // 向右箭头
  2376. if(id3!='' && document.getElementById(id2).selectionStart == document.getElementById(id2).value.length){
  2377. document.getElementById(id3).focus()
  2378. }
  2379. }
  2380. }
  2381. const huanxingNodeClick = (node) => {
  2382. //存放当前节点的nodeId
  2383. if(node.machine){
  2384. // console.log(node.label.split('/')[1])
  2385. huanxingstatus.value=true
  2386. formData.value.huanxingId=node.label.split('/')[1]
  2387. remodelDetail(node.label.split('/')[1])
  2388. modelChangeRecord(node.machine)
  2389. }else{
  2390. console.log('2')
  2391. }
  2392. }
  2393. const modelChangeRecord = async (val) => {
  2394. const response = await ModelChangeRecord({machine:val});
  2395. if (response.code === 0) {
  2396. huanxingselectData.value=response.data
  2397. }
  2398. }
  2399. const remodelDetail = async (val) => {
  2400. const response = await RemodelDetail({UniqId:val});
  2401. if (response.code === 0) {
  2402. huanxingData.value=response.data
  2403. if(response.data.项目1==1){
  2404. huanxingData.value.项目1=true
  2405. }else{
  2406. huanxingData.value.项目1=false
  2407. }
  2408. if(response.data.项目2==1){
  2409. huanxingData.value.项目2=true
  2410. }else{
  2411. huanxingData.value.项目2=false
  2412. }
  2413. if(response.data.项目3==1){
  2414. huanxingData.value.项目3=true
  2415. }else{
  2416. huanxingData.value.项目3=false
  2417. }
  2418. if(response.data.项目4==1){
  2419. huanxingData.value.项目4=true
  2420. }else{
  2421. huanxingData.value.项目4=false
  2422. }
  2423. if(response.data.项目5==1){
  2424. huanxingData.value.项目5=true
  2425. }else{
  2426. huanxingData.value.项目5=false
  2427. }
  2428. }
  2429. }
  2430. const handleNodeClick = (nodeData,node) => {
  2431. }
  2432. let titleinfo=ref()
  2433. const classbz=ref([])
  2434. const FacilityProduction = async (addr) => {
  2435. if(JTMC === '' || JTMC === null){
  2436. return false;
  2437. }
  2438. const response = await facilityProduction({machine:JTMC});
  2439. if (response.code === 0) {
  2440. if(response.data){
  2441. formData.value.机台号=JTMC.split('#')[0]
  2442. formData.value.工单编号 = response.data.工单编号;
  2443. formData.value.印件号 = response.data.印件号;
  2444. formData.value.工序号 = response.data.工序名称.substring(0,2);
  2445. formData.value.工序名称 = response.data.工序名称;
  2446. formData.value.产品名称 = response.data.产品名称;
  2447. formData.value.产品代号 = response.data.产品代号;
  2448. formData.value.班组成员 = response.data.班组成员;
  2449. formData.value.班组Id=response.data.班组Id
  2450. formData.value.machine=JTMC
  2451. formData.value.状态=response.data.状态
  2452. formData.value.定额代号=response.data.定额代号
  2453. formData.value.addr=addr
  2454. BZMC.value=response.data.班组编号
  2455. let time = new Date();
  2456. time.setDate(time.getDate() - 0); // 今天的前N天的日期,N自定义
  2457. titleinfo = `${time.getFullYear()}-${time.getMonth() + 1}-${time.getDate()}`;
  2458. titleinfo+='【'+JTMC+response.data.工单编号+response.data.产品名称+'】'+response.data.工序名称
  2459. // 填充sczl_bh和sczl_name字段
  2460. let sczl_bhkey=''
  2461. let sczl_namekey=''
  2462. if (response.data.班组成员) {
  2463. for (let i = 0; i < Math.min(Object.keys(response.data.班组成员).length, 9); i++) {
  2464. sczl_bhkey=`sczl_bh${i+1}`
  2465. sczl_namekey=`sczl_name${i+1}`
  2466. formData.value[sczl_bhkey] = response.data.班组成员[i]['编号'];
  2467. formData.value[sczl_namekey] = response.data.班组成员[i]['姓名'];
  2468. classbz.value[i]=response.data.班组成员[i]['编号']
  2469. }
  2470. formData.value.class=classbz.value.join(',')
  2471. }
  2472. if(response.data.工单编号){
  2473. InspectionRecord()
  2474. FacilityDetail()
  2475. }
  2476. }
  2477. //完工1
  2478. if(CJMC === '' || CJMC === null){
  2479. console.log("CJMC空")
  2480. return false;
  2481. }else{
  2482. const responses = await MachineDetailList({workshop:CJMC});
  2483. if(responses.code===0){
  2484. responses.data.map(item=>{
  2485. if(item.设备编号==JTMC){
  2486. formData.value.status=item.状态
  2487. }
  2488. })
  2489. }
  2490. }
  2491. FacilityWorklist()
  2492. FacilityTeam(JTMC)
  2493. }
  2494. }
  2495. //设备工作清单
  2496. const FacilityWorklist = async () => {
  2497. console.log(JTMC)
  2498. if (!JTMC.endsWith('#')) {
  2499. JTMC += '#';
  2500. }
  2501. const response = await facilityWorklist({machine:JTMC});
  2502. console.log("设备运行跟踪数据 ↓↓↓↓↓↓↓↓↓↓↓")
  2503. console.log(response)
  2504. if (response.code === 0) {
  2505. sbzyData.splice(0, sbzyData.length, ...response.data);
  2506. response.data.map(item=>{
  2507. if(item['工单编号|质量信息'].substring(0, 7)==formData.value.工单编号){
  2508. formData.value.productCode=item.产品代号
  2509. }
  2510. })
  2511. selectData.value=[]
  2512. if(formData.value.工单编号 === undefined){
  2513. return false;
  2514. }
  2515. const res = await facilityProcedure({ Gd_gdbh: formData.value.工单编号 })
  2516. console.log("印件及工序已完成板数 ↓↓↓↓↓↓↓↓↓↓↓")
  2517. console.log(res)
  2518. if (res.code === 0) {
  2519. selectData.value = res.data
  2520. }
  2521. }
  2522. }
  2523. const bzcloseDialog = async () => {
  2524. bzchanliangVisible.value=false
  2525. }
  2526. const dbclmxhandleSelectionChange = async (row) => {
  2527. console.log(row)
  2528. }
  2529. const dbclmxclick = async (row) => {
  2530. console.log(row)
  2531. }
  2532. const ybupdateCompanyFunc = async (row) => {
  2533. console.log(currentBz.value)
  2534. dbformData.value = {};
  2535. if(currentBz.value){
  2536. let sczl_bhkey = ''
  2537. let sczl_namekey = ''
  2538. let percentagekey = ''
  2539. if (currentBz.value[9]) {
  2540. for (let i = 1; i <= 10; i++) {
  2541. sczl_bhkey = `sczl_bh${i}`
  2542. sczl_namekey = `sczl_name${i}`
  2543. percentagekey = `sczl_rate${i}`
  2544. dbformData.value[sczl_bhkey] = '';
  2545. dbformData.value[sczl_namekey] = '';
  2546. dbformData.value[percentagekey] = '';
  2547. }
  2548. dbformData.value.code10 = currentBz.value[9].split(' ')[0];
  2549. dbformData.value.name10 = currentBz.value[9].split(' ')[1]
  2550. dbformData.value.percentage10 = Math.round((parseFloat(currentBz.value[9].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
  2551. for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length - 4, 6); i++) {
  2552. sczl_bhkey = `sczl_bh${i}`
  2553. sczl_namekey = `sczl_name${i}`
  2554. percentagekey = `sczl_rate${i}`
  2555. dbformData.value[sczl_bhkey] = currentBz.value[i - 1].split(' ')[0];
  2556. dbformData.value[sczl_namekey] = currentBz.value[i - 1].split(' ')[1];
  2557. if(isNaN(parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]))){
  2558. dbformData.value[percentagekey] = currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0];
  2559. }else{
  2560. dbformData.value[percentagekey] = Math.round((parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
  2561. }
  2562. }
  2563. } else {
  2564. for (let i = 1; i <= 10; i++) {
  2565. sczl_bhkey = `sczl_bh${i}`
  2566. sczl_namekey = `sczl_name${i}`
  2567. percentagekey = `sczl_rate${i}`
  2568. dbformData.value[sczl_bhkey] = '';
  2569. dbformData.value[sczl_namekey] = '';
  2570. dbformData.value[percentagekey] = '';
  2571. }
  2572. for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length - 3, 6); i++) {
  2573. sczl_bhkey = `sczl_bh${i}`
  2574. sczl_namekey = `sczl_name${i}`
  2575. percentagekey = `sczl_rate${i}`
  2576. dbformData.value[sczl_bhkey] = currentBz.value[i - 1].split(' ')[0];
  2577. dbformData.value[sczl_namekey] = currentBz.value[i - 1].split(' ')[1];
  2578. if(isNaN(parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]))){
  2579. dbformData.value[percentagekey] = currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0];
  2580. }else{
  2581. dbformData.value[percentagekey] = Math.round((parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
  2582. }
  2583. }
  2584. }
  2585. }
  2586. console.log(row)
  2587. dbformData.value.order=row.工单编号
  2588. dbformData.value.product_name=row.产品名称
  2589. dbformData.value.gxmc=row.gxmc
  2590. dbformData.value.yjno=row.yjno
  2591. dbformData.value.yj_name=row.产品名称
  2592. dbformData.value.gy_name=row.gxmc
  2593. dbformData.value.gxh=row.gxmc.split('-')[0]
  2594. dbformData.value.日期=row.sj1.split(' ')[0]
  2595. dbformData.value.流程标牌=row.标牌号
  2596. dbformData.value.上机时间=row.sj1
  2597. dbformData.value.下机时间=row.sj2
  2598. dbformData.value.产量=row.产量
  2599. dbformData.value.制程废品=row.制程废品
  2600. dbformData.value.制程次品=row.制程次品
  2601. dbformData.value.前工序废=row.前工序废
  2602. dbformData.value.来料异常=row.来料异常
  2603. dbformData.value.联数=row.ls
  2604. dbformData.value.墨色=row.色度
  2605. dbformData.value.装版总时长=row.装版工时
  2606. dbformData.value.打样总工时=row.打样工时
  2607. dbformData.value.通电工时=row.通电工时
  2608. dbformData.value.定额代号=row.dedh
  2609. dbformData.value.码包=row.码包
  2610. dbformData.value.主电表=row.主电表
  2611. dbformData.value.辅电表=row.辅电表
  2612. dbformData.value.sczl_bh11=row.拉料
  2613. dbformData.value.sczl_name11=row.拉料姓名
  2614. dbformData.value.UniqId=row.UniqId
  2615. bzchanliangVisible.value=true
  2616. }
  2617. const chanliangEdits = async() => {
  2618. const response = await chanliangEdit({
  2619. sczl_num: dbformData.value.流程标牌,
  2620. sczl_rq: `${dbformData.value.日期} 00:00:00`,
  2621. sczl_cl: dbformData.value.产量,
  2622. sczl_zcfp:dbformData.value.制程废品,
  2623. sczl_zccp:dbformData.value.制程次品,
  2624. sczl_前工序废:dbformData.value.前工序废,
  2625. sczl_来料少数:dbformData.value.来料异常,
  2626. sczl_ls:dbformData.value.联数,
  2627. sczl_ms:dbformData.value.墨色,
  2628. sczl_装版总工时:dbformData.value.装版总时长,
  2629. sczl_打样总工时:dbformData.value.打样总工时,
  2630. sczl_设备运行工时:dbformData.value.通电工时,
  2631. sczl_dedh:dbformData.value.定额代号,
  2632. 码包:dbformData.value.码包,
  2633. 主电表:dbformData.value.主电表,
  2634. 辅电表:dbformData.value.辅电表,
  2635. // sczl_bh98:dbformData.value.sczl_bh11,
  2636. sczl_bh98:dbformData.value.sczl_bh11 === '自备' ? '' : dbformData.value.sczl_bh11,
  2637. UniqId:dbformData.value.UniqId
  2638. })
  2639. if (response.code === 0) {
  2640. bzchanliangVisible.value=false
  2641. FacilityProduction()
  2642. successres('成功');
  2643. }
  2644. }
  2645. const roww = ref(null)
  2646. //班组人员及分配比例单机
  2647. const clickybupdate = async (row) => {
  2648. console.log(row)
  2649. roww.value = row
  2650. console.log('班组人员及分配比例单机')
  2651. }
  2652. //班组人员及分配比例双击
  2653. const gyupdateCompanyFunc = async (row) => {
  2654. console.log('班组人员及分配比例双击')
  2655. SetMachineTeams(roww.value)
  2656. }
  2657. //班组人员及分配比例右键
  2658. const bzonRightClick = async (row) => {
  2659. console.log(roww.value)
  2660. if(roww.value === null || roww.value === ''){
  2661. warningres('请选择 设备作业清单工单后,再操作此功能')
  2662. }else{
  2663. if(roww.value['班组号'] === '' || roww.value['班组号'] === null){
  2664. warningres('请在班组维护中选择 班组A班或B班后,再切换班组')
  2665. return;
  2666. }
  2667. ElMessageBox.confirm('确定切换班组吗?', '提示', {
  2668. confirmButtonText: '确定',
  2669. cancelButtonText: '取消',
  2670. type: 'warning'
  2671. }).then(() => {
  2672. console.log(1121111)
  2673. SetMachineTeams(roww.value)
  2674. })
  2675. }
  2676. }
  2677. //数据接口调用
  2678. const SetMachineTeams = async(row) => {
  2679. console.log(formData.value.工单编号)
  2680. console.log(row)
  2681. const res = await setMachineTeam({
  2682. machine: JTMC.split("#")[0],
  2683. order: formData.value.工单编号,
  2684. yjno: formData.value.印件号,
  2685. gy_name:formData.value.工序名称,
  2686. sczl_bzdh:row.班组号,
  2687. status:'生产',
  2688. production_now:0,
  2689. production_all:0,
  2690. team_id:row.ID
  2691. })
  2692. console.log(res)
  2693. if (res.code === 0) {
  2694. FacilityProduction()
  2695. //成功
  2696. successres('切换班组成功');
  2697. }
  2698. }
  2699. const setTeams = async(row) => {
  2700. formData.value.班组Id=row.ID
  2701. BZMC.value=row.班组号
  2702. console.log(row)
  2703. let sczl_namekey=''
  2704. for (let i = 1; i <= 10; i++) {
  2705. sczl_bhkey = `sczl_bh${i}`
  2706. sczl_namekey = `sczl_name${i}`
  2707. formData.value[sczl_bhkey] = '';
  2708. formData.value[sczl_namekey] = '';
  2709. }
  2710. for (let i = 0; i < Object.keys(row).length-4; i++) {
  2711. sczl_bhkey=`sczl_bh${i+1}`
  2712. sczl_namekey=`sczl_name${i+1}`
  2713. formData.value[sczl_bhkey] =row[i].split(' ')[0];
  2714. formData.value[sczl_namekey] = row[i].split(' ')[1];
  2715. // console.log(formData)
  2716. }
  2717. console.log(formData)
  2718. }
  2719. //检验记录
  2720. const InspectionRecord = async () => {
  2721. JYData.value = []; // 重置 JYData
  2722. const response = await inspectionRecord({
  2723. machine: JTMC,
  2724. Gd_gdbh: formData.value.工单编号,
  2725. team: BZMC.value
  2726. });
  2727. if (response.code === 0) {
  2728. // 提取 inspectiontime 作为列名
  2729. columnNames = response.data.inspectiontime;
  2730. // Populate JYData with row data
  2731. for (const key in response.data) {
  2732. if (key !== 'inspectiontime') {
  2733. const item = response.data[key];
  2734. const rowData = {
  2735. '工单编号': item['工单编号'],
  2736. '印件号': item['印件号'],
  2737. '工序名称': item['工序名称'],
  2738. '检验项目': item['检验项目']
  2739. };
  2740. // Initialize time columns with ''
  2741. columnNames.forEach(time => {
  2742. rowData[time] = '';
  2743. });
  2744. // Split inspectresult and fill the corresponding time columns
  2745. const results = item['inspectresult'].split(',');
  2746. results.forEach(result => {
  2747. if (columnNames.includes(result)) {
  2748. rowData[result] = '√';
  2749. } else {
  2750. rowData[result] = '';
  2751. }
  2752. });
  2753. // Add the row data to JYData
  2754. JYData.value.push(rowData);
  2755. }
  2756. }
  2757. console.log(JYData.value);
  2758. }
  2759. }
  2760. //当班产量明细
  2761. const FacilityDetail = async () => {
  2762. const today = new Date();
  2763. const year = today.getFullYear();
  2764. const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
  2765. const day = String(today.getDate()).padStart(2, '0');
  2766. const hours = String(today.getHours()).padStart(2, '0');
  2767. const minutes = String(today.getMinutes()).padStart(2, '0');
  2768. const seconds = String(today.getSeconds()).padStart(2, '0');
  2769. const currentHour = today.getHours(); // 获取当前的小时
  2770. let currentDate = `${year}-${month}-${day}`;
  2771. formData.value.production_now=0
  2772. formData.value.production_all=0
  2773. console.log("machine--->"+JTMC)
  2774. console.log("Gd_gdbh--->"+formData.value.工单编号)
  2775. console.log("team--->"+BZMC.value)
  2776. if (!JTMC.endsWith('#')) {
  2777. JTMC += '#';
  2778. }
  2779. const response = await facilityDetail({ machine: JTMC, Gd_gdbh: formData.value.工单编号, team:BZMC.value });
  2780. console.log(response)
  2781. // 日产量上报上机时间
  2782. if (response.code === 0) {
  2783. console.log(response.data.length)
  2784. if(response.data.length === 0){
  2785. if (currentHour < 8 || (currentHour === 8 && minutes < 30)) {
  2786. // 如果当前时间早于08:30, 则设置为前一天的晚班时间20:30
  2787. // 需要将日期减一天
  2788. const yesterDay = new Date(today.getTime() - 86400000); // 减去一天的毫秒数
  2789. const yearYesterday = yesterDay.getFullYear();
  2790. const monthYesterday = String(yesterDay.getMonth() + 1).padStart(2, '0');
  2791. const dayYesterday = String(yesterDay.getDate()).padStart(2, '0');
  2792. formData.value.上机时间 = `${yearYesterday}-${monthYesterday}-${dayYesterday} 20:30:00`;
  2793. } else {
  2794. // 如果当前时间晚于或等于08:30, 则设置为当天的白班时间08:30
  2795. formData.value.上机时间 = `${currentDate} 08:30:00`;
  2796. }
  2797. }else{
  2798. // formData.value.上机时间 = response.data.sj1
  2799. formData.value.上机时间 = currentDate.split('-')[0]+'-'+response.data[0]['生产时间段'].split('>')[1]+':00'
  2800. }
  2801. CLMXData.splice(0, CLMXData.length, ...Object.values(response.data));
  2802. formData.value.production_now=response.data[0].产量
  2803. formData.value.production_all=response.data.total.产量
  2804. }
  2805. };
  2806. //获取拉料人员
  2807. const GetLl = (falg) => {
  2808. let llyg = {
  2809. '自备':'自备',
  2810. '张杭强':1024,
  2811. '李当林':2019,
  2812. }
  2813. switch(falg){
  2814. case 'create':
  2815. if(formData3.value.sczl_bh11){
  2816. formData3.value.sczl_name11 = formData3.value.sczl_bh11
  2817. formData3.value.sczl_bh11 = llyg[formData3.value.sczl_bh11]
  2818. }
  2819. break;
  2820. case 'update':
  2821. if(dbformData.value.sczl_bh11){
  2822. dbformData.value.sczl_name11 = dbformData.value.sczl_bh11
  2823. dbformData.value.sczl_bh11 = llyg[dbformData.value.sczl_bh11]
  2824. }
  2825. break;
  2826. }
  2827. }
  2828. // 19231
  2829. const llemployeeDatalist = ref('')
  2830. const llblModellist = ref(false)
  2831. //员工编号回车事件
  2832. const getygsubmit = async (key,i,val) => {
  2833. const response = await getYg({sczl_bh:formData3.value.sczl_bh11});
  2834. // console.log(response)
  2835. if (response.code === 0) {
  2836. if(response.data.length === 1){
  2837. formData3.value.sczl_bh11= response.data[0].ygxm
  2838. formData3.value.sczl_name11= response.data[0].员工编号
  2839. }else{
  2840. llblModellist.value = true;
  2841. llemployeeDatalist.value = response.data // 假设响应数据是数组
  2842. }
  2843. }
  2844. }
  2845. const llclickedlist = ref(false);
  2846. const lltablebllickHandlerlist = async (row, column, event) => {
  2847. if (llclickedlist.value) {
  2848. // 如果已经点击过一次,则不再执行操作
  2849. return;
  2850. }
  2851. // let nextIndex = 1;
  2852. // while (formData3.value.sczl_bh11 !== '') {
  2853. // nextIndex++;
  2854. // if (nextIndex > 10) {
  2855. // // 如果所有字段都已经填满,则不做任何事情并退出函数
  2856. // return;
  2857. // }
  2858. // }
  2859. console.log(row)
  2860. // 将选定的值分配给下一个空的代码和名称字段
  2861. formData3.value.sczl_bh11 = row.员工编号;
  2862. formData3.value.sczl_name11 = row.ygxm;
  2863. llblModellist.value = false;
  2864. llclickedlist.value = true;
  2865. setTimeout(() => {
  2866. llclickedlist.value = false;
  2867. }, 300); // 300毫秒内再次点击将不会触发事件,你可以根据需要调整这个延迟时间
  2868. };
  2869. const blModel = ref(false)
  2870. const employeeData = ref('')
  2871. const Special = ref('')
  2872. const getbzyg = async (value,key) => {
  2873. Special.value = key
  2874. let bzyg=''
  2875. bzyg=`code${key}`
  2876. let bzxm=''
  2877. bzxm=`name${key}`
  2878. console.log(formDatas.value[bzyg])
  2879. const response = await getYg({sczl_bh:formDatas.value[bzyg]});
  2880. console.log(response)
  2881. if (response.code === 0) {
  2882. if(response.data.length === 1){
  2883. formDatas.value[bzxm]= response.data[0].ygxm
  2884. formDatas.value[bzyg]= response.data[0].员工编号
  2885. }else{
  2886. blModel.value = true;
  2887. console.log(response.data)
  2888. employeeData.value = response.data // 假设响应数据是数组
  2889. }
  2890. }
  2891. }
  2892. const clicked = ref(false);
  2893. const currentIndex = ref(0);
  2894. const tableBZRR = ref();
  2895. // 模拟点击某一行
  2896. const setCurrent = (row) => {
  2897. setTimeout(() => {
  2898. tableBZRR.value?.setCurrentRow(row); // 高亮选中当前行
  2899. const { 员工编号, ygxm } = row;
  2900. console.log("选中行数据:", row);
  2901. });
  2902. };
  2903. // 键盘事件处理逻辑
  2904. const selectBZRR = (event) => {
  2905. if (event.keyCode === 40) {
  2906. // 向下箭头
  2907. if (currentIndex.value < employeeData.value.length - 1) {
  2908. currentIndex.value++;
  2909. } else {
  2910. // 如果是最后一行,回到第一行
  2911. currentIndex.value = 0;
  2912. }
  2913. } else if (event.keyCode === 38) {
  2914. // 向上箭头
  2915. if (currentIndex.value > 0) {
  2916. currentIndex.value--;
  2917. } else {
  2918. // 如果是第一行,跳到最后一行
  2919. currentIndex.value = employeeData.value.length - 1;
  2920. }
  2921. } else if (event.keyCode === 13) {
  2922. // 回车键,模拟触发点击事件
  2923. const row = employeeData.value[currentIndex.value];
  2924. tablebllickHandler(row); // 手动调用行点击事件
  2925. }
  2926. setCurrent(employeeData.value[currentIndex.value]); // 高亮当前选中的行
  2927. };
  2928. // 表格行点击事件处理
  2929. const tablebllickHandler = async (row, column, event) => {
  2930. if (clicked.value) {
  2931. // 如果已经点击过一次,则不再执行操作
  2932. return;
  2933. }
  2934. console.log("Special", Special.value);
  2935. // 检查 code1 到 code7 和 name1 到 name7 的情况
  2936. for (let i = 1; i <= 7; i++) {
  2937. const codeKey = `code${i}`;
  2938. const nameKey = `name${i}`;
  2939. // 如果 code 有值,且对应的 name 没有值,则清空 code 的值
  2940. // if (formDatas.value[codeKey] !== '' && formDatas.value[nameKey] === '') {
  2941. // formDatas.value[codeKey] = ''; // 清空 code 的值
  2942. // console.log(`清空了 ${codeKey} 的值,因为 ${nameKey} 为空`);
  2943. // }
  2944. }
  2945. let nextIndex = 1;
  2946. // 找到下一个需要填充的空位置
  2947. while (
  2948. formDatas.value[`code${nextIndex}`] !== '' &&
  2949. formDatas.value[`name${nextIndex}`] !== ''
  2950. ) {
  2951. nextIndex++;
  2952. if (nextIndex > 8) { // 这里只处理4个输入框的情况
  2953. // 如果所有字段都已经填满,则不做任何事情并退出函数
  2954. return;
  2955. }
  2956. }
  2957. // 特殊情况:直接填充到第8个位置
  2958. if (Special.value === "8") {
  2959. formDatas.value.code8 = row.员工编号;
  2960. formDatas.value.name8 = row.ygxm;
  2961. console.log("填充到code8和name8");
  2962. // 弹窗关闭并防止重复点击
  2963. setTimeout(() => {
  2964. blModel.value = false; // 延迟关闭弹窗
  2965. clicked.value = false; // 恢复点击标志
  2966. }, 300);
  2967. } else {
  2968. // 当前按下回车的输入框索引
  2969. const currentInputIndex = currentIndex.value + 1;
  2970. console.log("当前输入框索引:", currentInputIndex);
  2971. // 如果找到的空位不是当前输入框,则填充前面的空位
  2972. if (nextIndex !== currentInputIndex) {
  2973. // 填充前面空位
  2974. formDatas.value[`code${nextIndex}`] = row.员工编号;
  2975. formDatas.value[`name${nextIndex}`] = row.ygxm;
  2976. console.log(`填充数据到第${nextIndex}个输入框:`, row);
  2977. // 检查当前输入框是否需要清空
  2978. if (
  2979. formDatas.value[`name${currentInputIndex}`] === '' &&
  2980. formDatas.value[`code${currentInputIndex}`] !== ''
  2981. ) {
  2982. // 如果当前输入框的 name 为空,但 code 有值,清空当前输入框
  2983. formDatas.value[`code${currentInputIndex}`] = '';
  2984. console.log(`清空当前第${currentInputIndex}个输入框的数据`);
  2985. }
  2986. } else {
  2987. // 如果当前输入框就是下一个空位,则直接填充到当前输入框
  2988. formDatas.value[`code${currentInputIndex}`] = row.员工编号;
  2989. formDatas.value[`name${currentInputIndex}`] = row.ygxm;
  2990. console.log(`填充数据到当前第${currentInputIndex}个输入框:`, row);
  2991. }
  2992. // 弹窗关闭并防止重复点击
  2993. setTimeout(() => {
  2994. blModel.value = false; // 延迟关闭弹窗
  2995. clicked.value = false; // 恢复点击标志
  2996. }, 300);
  2997. }
  2998. };
  2999. const getxunchayg = async (value) => {
  3000. const response = await getYg({sczl_bh:xunchaData.value.sczl_bh});
  3001. if (response.code === 0) {
  3002. xunchaData.value.sczl_name=response.data[0].ygxm
  3003. xunchaData.value.sczl_bh=response.data[0].员工编号
  3004. }
  3005. }
  3006. const getlaliaoyg = async (value) => {
  3007. const response = await getYg({sczl_bh:dbformData.value.sczl_bh11});
  3008. if (response.code === 0) {
  3009. dbformData.value.sczl_name11=response.data.ygxm
  3010. }
  3011. }
  3012. //获取员工信息
  3013. const GetYg = async (value,inputName) => {
  3014. const response = await getYg({sczl_bh:value});
  3015. if (response.code === 0) {
  3016. let Bname = 'sczl_name' + inputName;
  3017. let Bbh = 'sczl_bh' + inputName;
  3018. console.log(Bbh)
  3019. formData3.value[Bname]=response.data.ygxm
  3020. formData3.value[Bbh]=response.data.员工编号
  3021. }
  3022. }
  3023. // 验证规则
  3024. const rule = reactive({})
  3025. const searchRule = reactive({
  3026. createdAt: [
  3027. { validator: (rule, value, callback) => {
  3028. if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
  3029. callback(new Error('请填写结束日期'))
  3030. } else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
  3031. callback(new Error('请填写开始日期'))
  3032. } else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
  3033. callback(new Error('开始日期应当早于结束日期'))
  3034. } else {
  3035. callback()
  3036. }
  3037. }, trigger: 'change' }
  3038. ],
  3039. })
  3040. const elFormRef = ref()
  3041. const elSearchFormRef = ref()
  3042. // =========== 表格控制部分 ===========
  3043. const page = ref(1)
  3044. const total = ref(0)
  3045. const pageSize = ref(10)
  3046. const tableData = ref([])
  3047. const zhibiaoselectData=ref([])
  3048. const yinbanVisible = ref(false)
  3049. const huanxingType=ref(false)
  3050. const huanxingStatus=ref(0)
  3051. const yinbantreeData=ref([])
  3052. const fujiaselectData=ref([])
  3053. const searchInfo = ref({})
  3054. const onHxadd = () => {
  3055. huanxingstatus.value=true
  3056. huanxingType.value=true
  3057. huanxingStatus.value=1
  3058. huanxingData.value.班组=''
  3059. huanxingData.value.码包B=''
  3060. huanxingData.value.工单编号A=''
  3061. huanxingData.value.印件工序A=''
  3062. huanxingData.value.码包号A=''
  3063. huanxingData.value.工单编号B=''
  3064. huanxingData.value.印件工序B=''
  3065. huanxingData.value.机长=''
  3066. huanxingData.value.班长=''
  3067. huanxingData.value.质量巡查员=''
  3068. huanxingData.value.印件名称A=''
  3069. huanxingData.value.印件名称B=''
  3070. huanxingData.value.项目1=false
  3071. huanxingData.value.项目2=false
  3072. huanxingData.value.项目3=false
  3073. huanxingData.value.项目4=false
  3074. huanxingData.value.项目5=false
  3075. }
  3076. const onHxedit = () => {
  3077. huanxingType.value=true
  3078. huanxingStatus.value=2
  3079. }
  3080. const onHxdel = () => {
  3081. ElMessageBox.confirm('确定要删除吗?', '提示', {
  3082. confirmButtonText: '确定',
  3083. cancelButtonText: '取消',
  3084. type: 'warning'
  3085. }).then(() => {
  3086. remodelDataDels()
  3087. })
  3088. }
  3089. const remodelDataDels = async() => {
  3090. const response = await remodelDataDel({
  3091. UniqId:formData.value.huanxingId
  3092. })
  3093. if (response.code === 0) {
  3094. successres('删除成功!')
  3095. huanxingtreeData.value=[]
  3096. huanxingselectData.value=[]
  3097. huanxingData.value={}
  3098. formData.value.huanxingId=''
  3099. huanxingstatus.value=false
  3100. RemodelGetTab()
  3101. }
  3102. }
  3103. const onHxsave = () => {
  3104. if(huanxingData.value.项目1==true){
  3105. huanxingData.value.项目1=1
  3106. }else{
  3107. huanxingData.value.项目1=0
  3108. }
  3109. if(huanxingData.value.项目2==true){
  3110. huanxingData.value.项目2=1
  3111. }else{
  3112. huanxingData.value.项目2=0
  3113. }
  3114. if(huanxingData.value.项目3==true){
  3115. huanxingData.value.项目3=1
  3116. }else{
  3117. huanxingData.value.项目3=0
  3118. }
  3119. if(huanxingData.value.项目4==true){
  3120. huanxingData.value.项目4=1
  3121. }else{
  3122. huanxingData.value.项目4=0
  3123. }
  3124. if(huanxingData.value.项目5==true){
  3125. huanxingData.value.项目5=1
  3126. }else{
  3127. huanxingData.value.项目5=0
  3128. }
  3129. if(huanxingStatus.value==1){
  3130. remodelDataAdds()
  3131. }
  3132. if(huanxingStatus.value==2){
  3133. remodelDataEdits()
  3134. console.log(huanxingData)
  3135. }
  3136. huanxingType.value=false
  3137. huanxingStatus.value=0
  3138. }
  3139. const remodelDataAdds = async() => {
  3140. const response = await remodelDataAdd({
  3141. 日期:huanxingData.value.日期,
  3142. 班组:huanxingData.value.班组,
  3143. 机台编号:huanxingData.value.机台编号,
  3144. 工单编号A:huanxingData.value.工单编号A,
  3145. 印件工序A:huanxingData.value.印件工序A,
  3146. 码包号A:huanxingData.value.码包号A,
  3147. 工单编号B:huanxingData.value.工单编号B,
  3148. 印件工序B:huanxingData.value.印件工序B,
  3149. 码包号B:huanxingData.value.码包B,
  3150. 清场项目A:huanxingData.value.项目1,
  3151. 清场项目B:huanxingData.value.项目2,
  3152. 清场项目C:huanxingData.value.项目3,
  3153. 清场项目D:huanxingData.value.项目4,
  3154. 清场项目E:huanxingData.value.项目5,
  3155. 机长:huanxingData.value.机长,
  3156. 班长:huanxingData.value.班长,
  3157. 质量巡查员:huanxingData.value.质量巡查员
  3158. })
  3159. if (response.code === 0) {
  3160. successres('新增成功!')
  3161. RemodelGetTab()
  3162. modelChangeRecord(JTMC)
  3163. }
  3164. }
  3165. const remodelDataEdits = async() => {
  3166. const response = await remodelDataEdit({
  3167. 日期:huanxingData.value.日期,
  3168. 班组:huanxingData.value.班组,
  3169. 机台编号:huanxingData.value.机台编号,
  3170. 工单编号A:huanxingData.value.工单编号A,
  3171. 印件工序A:huanxingData.value.印件工序A,
  3172. 码包号A:huanxingData.value.码包号A,
  3173. 工单编号B:huanxingData.value.工单编号B,
  3174. 印件工序B:huanxingData.value.印件工序B,
  3175. 码包号B:huanxingData.value.码包B,
  3176. 清场项目A:huanxingData.value.项目1,
  3177. 清场项目B:huanxingData.value.项目2,
  3178. 清场项目C:huanxingData.value.项目3,
  3179. 清场项目D:huanxingData.value.项目4,
  3180. 清场项目E:huanxingData.value.项目5,
  3181. 机长:huanxingData.value.机长,
  3182. 班长:huanxingData.value.班长,
  3183. 质量巡查员:huanxingData.value.质量巡查员,
  3184. UniqId:formData.value.huanxingId
  3185. })
  3186. if (response.code === 0) {
  3187. successres('修改成功!')
  3188. }
  3189. }
  3190. // 重置
  3191. const onReset = () => {
  3192. searchInfo.value = {}
  3193. getTableData()
  3194. }
  3195. // 搜索
  3196. const onSubmit = () => {
  3197. elSearchFormRef.value?.validate(async(valid) => {
  3198. if (!valid) return
  3199. page.value = 1
  3200. pageSize.value = 10
  3201. getTableData()
  3202. })
  3203. }
  3204. // 分页
  3205. const handleSizeChange = (val) => {
  3206. pageSize.value = val
  3207. getTableData()
  3208. }
  3209. // 修改页面容量
  3210. const handleCurrentChange = (val) => {
  3211. page.value = val
  3212. getTableData()
  3213. }
  3214. const getTableData = async () => {
  3215. const response = await facilityTab();
  3216. if (response.code === 0 && response.data) {
  3217. const workshops = response.data; // 车间数据
  3218. // 在推送新项之前将 treeData 重置为空数组
  3219. treeData.value = []; // 使用 .value 访问响应式引用的值
  3220. for (const workshopName in workshops) {
  3221. const workshopNode = {
  3222. label: workshopName,
  3223. children: [],
  3224. level: 1 // 添加层级属性
  3225. };
  3226. const machines = workshops[workshopName]; // 车间下的机器
  3227. for (const machineName in machines) {
  3228. const machineNode = {
  3229. label: machineName,
  3230. children: [],
  3231. level: 2, // 添加层级属性
  3232. parentNode: workshopNode
  3233. };
  3234. // Now that machineNode is initialized, you can refer to it
  3235. const childrenNodes = machines[machineName].map(dateTime => {
  3236. const dateOnly = dateTime.split(' ')[0];
  3237. return {
  3238. label: dateOnly,
  3239. level: 3, // 添加层级属性
  3240. parentNode: machineNode
  3241. };
  3242. });
  3243. // Assign the childrenNodes to the machineNode's children property
  3244. machineNode.children = childrenNodes;
  3245. // Finally, push the machineNode to the workshopNode's children array
  3246. workshopNode.children.push(machineNode);
  3247. }
  3248. // 将 workshopNode 推送到响应式 treeData 数组
  3249. treeData.value.push(workshopNode);
  3250. }
  3251. }
  3252. };
  3253. // 查询
  3254. const getTableList = async() => {
  3255. const table = await getCompanyList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
  3256. if (table.code === 0) {
  3257. tableData.value = table.data.list
  3258. total.value = table.data.total
  3259. page.value = table.data.page
  3260. pageSize.value = table.data.pageSize
  3261. }
  3262. }
  3263. // getTableData()
  3264. //删除
  3265. function onDel() {
  3266. }
  3267. //完工按钮
  3268. //完工1
  3269. const wgVisible=ref(false)
  3270. function onOver() {
  3271. // console.log(wangongbh.value)
  3272. // return;
  3273. if(formData.value.工单编号 === '' || formData.value.工单编号 === null){
  3274. warningres('请选择完工工单!')
  3275. return false;
  3276. }else{
  3277. wgVisible.value=true
  3278. }
  3279. }
  3280. const wghandleConfirm = async () => {
  3281. SetProcessStatus()
  3282. FacilityProduction()
  3283. wgVisible.value=false
  3284. }
  3285. //完工事件
  3286. const SetProcessStatus = async () => {
  3287. console.log(formData.value.工单编号);
  3288. console.log(formData.value.印件号);
  3289. console.log(formData.value.工序号);
  3290. const response = await setProcessStatus({order:formData.value.工单编号,yjno:formData.value.印件号,gxh:formData.value.工序号});
  3291. console.log(response)
  3292. if (response.code === 0) {1
  3293. FacilityProduction()
  3294. }
  3295. }
  3296. //设备点检
  3297. function ondianjian() {
  3298. getSpotCheckItem(JTMC).then(treeData => {
  3299. if (treeData) {
  3300. // 如果获取成功,treeData 就是我们需要的树形结构数据
  3301. dianjiantreeData = treeData;
  3302. console.log(dianjiantreeData);
  3303. // 使用 nextTick 来确保在更新 dianjianVisible 后立即刷新视图
  3304. nextTick(() => {
  3305. dianjianVisible.value = true;
  3306. });
  3307. // 这里可以处理treeData,例如将其赋值给某个状态管理变量或者用于渲染界面
  3308. } else {
  3309. // 如果获取失败,则treeData为null
  3310. console.log('获取巡检项目树形结构数据失败');
  3311. }
  3312. });
  3313. }
  3314. //机台印版领用->右侧详情
  3315. const facilityPrintDetailItem = async (value) => {
  3316. try {
  3317. formData.value.code=value
  3318. // 调用接口获取巡检项目数据
  3319. const response = await facilityPrintDetail({ workOrder: formData.value.工单编号,code:value,productCode:formData.value.productCode,page:ybpage.value,limit:ybpageSize.value });
  3320. console.log("机台印版领用")
  3321. // 检查接口返回的状态码
  3322. if (response.code === 0) {
  3323. console.log(response)
  3324. ybtotal.value = response.data.total
  3325. yinbanselectData.value=response.data.data
  3326. }
  3327. } catch (error) {
  3328. // 捕获并打印异常
  3329. console.error("获取数据出错:" + error);
  3330. return null;
  3331. }
  3332. };
  3333. const yinbancode = ref('')
  3334. const yinbanNodeClick = (node, check, nodeData) => {
  3335. if (node.children && node.children.length > 0) {
  3336. // 点击的是父节点,且有子节点
  3337. // 执行相应的父节点单击事件处理逻辑
  3338. // 这里可以添加你想要的处理逻辑,比如展开/折叠节点等
  3339. } else {
  3340. // 点击的是子节点,或者没有子节点
  3341. // 执行相应的子节点单击事件处理逻辑
  3342. yinbanselectData.value=[]
  3343. yinbancode.value = node.code
  3344. facilityPrintDetailItem(node.code)
  3345. }
  3346. };
  3347. // 印版分页
  3348. const ybpage = ref(1)
  3349. const ybtotal = ref(0)
  3350. const ybpageSize = ref(50)
  3351. const ybhandleCurrentChange = (val) => {
  3352. ybpage.value = val;
  3353. facilityPrintDetailItem(yinbancode.value);
  3354. };
  3355. // 修改页面容量 点击多少条/页
  3356. const ybhandleSizeChange = (val) => {
  3357. // page.value = 10;
  3358. ybpageSize.value = val;
  3359. facilityPrintDetailItem(yinbancode.value);
  3360. };
  3361. const onyinban = async() => {
  3362. console.log(formData.value)
  3363. if(formData.value.产品代号==''){
  3364. warningres('该工单没有产品编号')
  3365. return false
  3366. }
  3367. const res = await facilityPrintGetTab({productCode:formData.value.产品代号})
  3368. if(res.code===0){
  3369. if(res.data==null){
  3370. warningres('该产品没有印版资料')
  3371. return false
  3372. }
  3373. yinbantreeData.value=[{
  3374. label:'产品印版库',
  3375. children:res.data.map(item=>({
  3376. label:item.印版分类,
  3377. code:item.编号
  3378. }))
  3379. }]
  3380. console.log(res.data.map(item=>({
  3381. label:item.印版分类,
  3382. code:item.编号
  3383. })))
  3384. yinbanVisible.value = true;
  3385. }
  3386. }
  3387. const onYbout = async() => {
  3388. yinbanSelection.value.map((item)=>{
  3389. const 印数 = item.印数 != null ? item.印数.toString() : '0';
  3390. item.Yb_工单编号=formData.value.工单编号
  3391. item.Yb_印件号=formData.value.印件号
  3392. item.Yb_存货编码=item.存货编码
  3393. item.Yb_供方批号=item.供方批号
  3394. item.Yb_领用机台=JTMC
  3395. item.Yb_印数=印数
  3396. item.Sys_id=`[${formData.value.addr}/${JTMC}]`
  3397. delete item.UniqId
  3398. delete item.产品名称
  3399. delete item.产品编号
  3400. delete item.供方批号
  3401. delete item.制造日期
  3402. delete item.印数
  3403. delete item.印版名称
  3404. delete item.印版类别
  3405. delete item.存货名称
  3406. delete item.存货编码
  3407. delete item.客户名称
  3408. delete item.客户编号
  3409. delete item.工单编号
  3410. delete item.印件号
  3411. return item
  3412. })
  3413. console.log(yinbanSelection.value)
  3414. if(yinbanSelection.value.length<1){
  3415. errorres('暂无印版数据 请确认!')
  3416. }else{
  3417. const response = await PrintDetailAdd(yinbanSelection.value)
  3418. if(response.code===0){
  3419. facilityPrintDetailItem(formData.value.code)
  3420. successres('成功!')
  3421. facilityPrintDetailItem(yinbancode.value);
  3422. }
  3423. }
  3424. }
  3425. // const onYbback = async() => {
  3426. // const arr=[]
  3427. // yinbanSelection.value.map((item)=>{
  3428. // if(item.UniqId===null){
  3429. // }else{
  3430. // arr.push(item.UniqId)
  3431. // }
  3432. // })
  3433. // const response = await PrintDetailEdit({id:arr.join(',')})
  3434. // if(response.code===0){
  3435. // facilityPrintDetailItem(formData.value.code)
  3436. // successres('成功!')
  3437. // }
  3438. // }
  3439. const dialogwithdrawVisible = ref(false)
  3440. const Plate = ref({ 印数: '' });
  3441. const onYbback = async () => {
  3442. console.log(yinbanSelection.value);
  3443. // 检查是否有印数为 null 或 undefined
  3444. const hasInvalidUniqId = yinbanSelection.value.some(item => {
  3445. return item?.UniqId === null || item?.UniqId === undefined;
  3446. });
  3447. if (hasInvalidUniqId) {
  3448. ElMessage.error("选择的数据中有未领用的印版,无法收回!");
  3449. return;
  3450. }
  3451. // 所有 UniqId 都有效,才打开弹窗
  3452. dialogwithdrawVisible.value = true;
  3453. };
  3454. // 删除操作
  3455. const rawenterDialog = async () => {
  3456. console.log(Plate.value.印数)
  3457. try {
  3458. await ElMessageBox.confirm('确定收回吗', '提示', {
  3459. confirmButtonText: '确定',
  3460. cancelButtonText: '取消',
  3461. type: 'warning'
  3462. })
  3463. console.log('收回选中的数据:', yinbanSelection.value)
  3464. const uniqIds = yinbanSelection.value.map(item => item.UniqId).join(',');
  3465. console.log(uniqIds);
  3466. // 调用收回API,假设是批量删除接口
  3467. const res = await PrintDetailEdit({ id: uniqIds,number:Plate.value.印数})
  3468. if (res.code === 0) {
  3469. ElMessage.success('收回成功')
  3470. facilityPrintDetailItem(yinbancode.value);
  3471. rawcloseDialog()
  3472. // 清空选中
  3473. yinbanSelection.value = []
  3474. } else {
  3475. ElMessage.error(res.msg || '收回失败')
  3476. }
  3477. } catch (error) {
  3478. if (error !== 'cancel') {
  3479. console.error('收回失败:', error)
  3480. ElMessage.error('收回操作已取消')
  3481. }
  3482. }
  3483. }
  3484. const rawcloseDialog = () => {
  3485. Plate.印数 = ''
  3486. dialogwithdrawVisible.value = false
  3487. }
  3488. const yinbanmultipleTable = ref(null); // 表格ref
  3489. const yinbaninvertSelection = () => {
  3490. // 1. 获取当前表格的所有有效数据(排除不需要的行)
  3491. const validData = yinbanselectData.value.filter(item =>
  3492. !item.isTotal &&
  3493. !(item.产品名称?.includes('A班产量:') || item.产品名称?.includes('B班产量:'))
  3494. );
  3495. // 2. 获取当前已选中的行
  3496. const currentSelected = yinbanmultipleTable.value?.getSelectionRows() || [];
  3497. // 3. 清除当前所有选择
  3498. yinbanmultipleTable.value?.clearSelection();
  3499. // 4. 执行反选操作
  3500. validData.forEach(row => {
  3501. yinbanmultipleTable.value?.toggleRowSelection(
  3502. row,
  3503. !currentSelected.some(selected => selected.UniqId === row.UniqId)
  3504. );
  3505. });
  3506. };
  3507. const onzhicheng = async () => {
  3508. zhichengstatus.value=false
  3509. xunchaData.value=[]
  3510. const response = await reportProduceInfo({machine:JTMC.split("#")[0]});
  3511. if (response.code === 0) {
  3512. xunchaData.value.order=response.data.order
  3513. xunchaData.value.yjno=response.data.yjno
  3514. xunchaData.value.product_name=response.data.product_name
  3515. xunchaData.value.gxmc=response.data.gxmc
  3516. xunchaData.value.lcdh=0
  3517. xunchaData.value.sczl_bh=''
  3518. xunchaData.value.sczl_name=''
  3519. xunchaData.value.remark=''
  3520. zhichengVisible.value = true;
  3521. }
  3522. }
  3523. //班组产量提报 JP检品机单独页面
  3524. const JPchanliangVisible = ref(false)
  3525. const JPformdata = reactive({
  3526. '工单编号':'',
  3527. '产品名称':'',
  3528. '印件号':'',
  3529. '印件名称':'',
  3530. '工序号':'',
  3531. '工序名称':'',
  3532. '日期':'',
  3533. '流程标牌':'',
  3534. '检验类别':'',
  3535. '废品率系数':'',
  3536. '计件箱数':'',
  3537. '每箱数量':'',
  3538. '换膜总工时':'',
  3539. '通电工时':'',
  3540. '定额代号':'',
  3541. '组员1': {'编号': '','姓名': '','比例': '',},
  3542. '组员2': {'编号': '','姓名': '','比例': '',},
  3543. '组员3': {'编号': '','姓名': '','比例': '',},
  3544. '组员4': {'编号': '','姓名': '','比例': '',},
  3545. '组员5': {'编号': '','姓名': '','比例': '',},
  3546. '组员6': {'编号': '','姓名': '','比例': '',},
  3547. '组员7': {'编号': '','姓名': '','比例': '',},
  3548. '组员8': {'编号': '','姓名': '','比例': '',},
  3549. '组员9': {'编号': '','姓名': '','比例': '',},
  3550. '组员10': {'编号': '','姓名': '','比例': '',}
  3551. })
  3552. //班组产量提报 JP检品机 班组产量提报确定
  3553. const JPchanliangenterDialog = async() => {
  3554. console.log(JPformdata)
  3555. const JPformattedData = {
  3556. sczl_jtbh:JTMC+'#',
  3557. sczl_gdbh:JPformdata['工单编号'],
  3558. sczl_yjno:JPformdata['印件号'],
  3559. sczl_gxh:JPformdata['工序号'],
  3560. sczl_gxmc:JPformdata['工序名称'],
  3561. sczl_rq: JPformdata['日期'],
  3562. sczl_num: JPformdata['流程标牌'],
  3563. sczl_type: JPformdata['检验类别'],
  3564. sczl_废品率系数: JPformdata['废品率系数'],
  3565. sczl_cl: JPformdata['计件箱数'],
  3566. sczl_Pgcl: JPformdata['每箱数量'],
  3567. sczl_装版工时: JPformdata['换膜总工时'],
  3568. sczl_设备运行工时: JPformdata['通电工时'],
  3569. sczl_dedh: JPformdata['定额代号'],
  3570. sczl_bzdh: JPformdata['bzdh'],
  3571. sczl_bh1: JPformdata.组员1['编号'],
  3572. sczl_bh2: JPformdata.组员2['编号'],
  3573. sczl_bh3: JPformdata.组员3['编号'],
  3574. sczl_bh4: JPformdata.组员4['编号'],
  3575. sczl_bh5: JPformdata.组员5['编号'],
  3576. sczl_bh6: JPformdata.组员6['编号'],
  3577. sczl_bh7: JPformdata.组员7['编号'],
  3578. sczl_bh8: JPformdata.组员8['编号'],
  3579. sczl_bh9: JPformdata.组员9['编号'],
  3580. sczl_bh10: JPformdata.组员10['编号'],
  3581. sczl_bh98:'',
  3582. sczl_rate1: JPformdata.组员1['比例'],
  3583. sczl_rate2: JPformdata.组员2['比例'],
  3584. sczl_rate3: JPformdata.组员3['比例'],
  3585. sczl_rate4: JPformdata.组员4['比例'],
  3586. sczl_rate5: JPformdata.组员5['比例'],
  3587. sczl_rate6: JPformdata.组员6['比例'],
  3588. sczl_rate7: JPformdata.组员7['比例'],
  3589. sczl_rate8: JPformdata.组员8['比例'],
  3590. sczl_rate9: JPformdata.组员9['比例'],
  3591. sczl_rate10: JPformdata.组员10['比例'],
  3592. }
  3593. console.log(JPformattedData)
  3594. // return false
  3595. const JpUploade_edit = await JpUploade(JPformattedData);
  3596. console.log(JpUploade_edit)
  3597. if (JpUploade_edit.code === 0) {
  3598. JPchanliangVisible.value = false
  3599. successres('成功')
  3600. FacilityDetail()
  3601. } else {
  3602. errorres('添加失败')
  3603. }
  3604. }
  3605. //印件选择
  3606. const JPdialogSelectVisible_Yj = ref(false)
  3607. const JPselectData_Yj = reactive([])
  3608. // 处理选择框
  3609. const JPhandleSelectClick_Yj = (row, column, event) => {
  3610. const { yjno, yjmc, ls } = row
  3611. JPformdata['印件号'] = yjno
  3612. JPformdata['印件名称'] = yjmc
  3613. JPdialogSelectVisible_Yj.value = false
  3614. }
  3615. const JPselect_Yj = (event) => {
  3616. if (event.keyCode === 40) { // 向下箭头
  3617. if (currentIndex.value < JPselectData_Yj.length - 1) {
  3618. currentIndex.value++;
  3619. JPsetCurrent_Yj(JPselectData_Yj[currentIndex.value]);
  3620. } else {
  3621. currentIndex.value = 0;
  3622. JPsetCurrent_Yj(JPselectData_Yj[currentIndex.value]); // 到达最后一行时回到第一行
  3623. }
  3624. } else if (event.keyCode === 38) { // 向上箭头
  3625. if (currentIndex.value > 0) {
  3626. currentIndex.value--;
  3627. JPsetCurrent_Yj(JPselectData_Yj[currentIndex.value]);
  3628. } else {
  3629. currentIndex.value = JPselectData_Yj.length - 1;
  3630. JPsetCurrent_Yj(JPselectData_Yj[currentIndex.value]); // 到达第一行时回到最后一行
  3631. }
  3632. } else if (event.keyCode === 13) { // 回车键
  3633. JPdialogSelectVisible_Yj.value = false;
  3634. }
  3635. }
  3636. //工序选择
  3637. const JPdialogSelectVisible_Gx = ref(false)
  3638. const JPselectData_Gx = reactive([])
  3639. const JPtable_Gx = ref()
  3640. // 处理选择框
  3641. const JPhandleSelectClick_Gx = (row, column, event) => {
  3642. const { gxh, name, gxmc } = row
  3643. JPformdata['工序号'] = gxh
  3644. JPformdata['工序名称'] = name
  3645. JPdialogSelectVisible_Gx.value = false
  3646. }
  3647. //班组产量提报 回车JPent
  3648. const JPemployeeDatalist = ref('')
  3649. const JPblModellist = ref(false)
  3650. const JPdialogSelectVisible_LX = ref(false)
  3651. const JPblplanUsageCellClass = ({row, column, rowIndex, columnIndex}) =>{
  3652. if (column.property === '员工编号' || column.property === 'ygxm') {
  3653. return 'plan-usage-low';
  3654. }
  3655. }
  3656. const JPtableData = ref([
  3657. { name: '', type: '' },
  3658. { name: '废品版', type: '废品版' },
  3659. { name: '正品版', type: '正品版' },
  3660. { name: '次品版', type: '次品版' },
  3661. ])
  3662. const JPhandleRowClick = async (row) => {
  3663. JPformdata['检验类别'] = row['name']
  3664. JPdialogSelectVisible_LX.value = false
  3665. const fplxs = await getRejectRate({order:JPformdata['工单编号'],yjno:JPformdata['印件号'],gxh:JPformdata['工序号'],type:JPformdata['检验类别']})
  3666. if (fplxs.code === 0) {
  3667. JPformdata['废品率系数'] = fplxs.data
  3668. }
  3669. }
  3670. const JPent = async (event,key,val) => {
  3671. if(event.keyCode === 13){
  3672. //组员及比例分配
  3673. if(event.keyCode === 13 && val === '1'){
  3674. let bzyg=''
  3675. bzyg=`组员${key}`
  3676. let bzxm=''
  3677. bzxm=`组员${key}`
  3678. if(JPformdata[bzyg]['编号']){
  3679. const getYg_response = await getYg({sczl_bh:JPformdata[bzyg]['编号']});
  3680. // console.log(getYg_response)
  3681. if (getYg_response.code === 0) {
  3682. if(getYg_response.data.length === 1){
  3683. JPformdata[bzyg]['姓名'] = getYg_response.data[0].ygxm
  3684. JPformdata[bzyg]['编号'] = getYg_response.data[0].员工编号
  3685. }else{
  3686. JPblModellist.value = true;
  3687. // console.log(getYg_response.data)
  3688. JPemployeeDatalist.value = getYg_response.data // 假设响应数据是数组
  3689. }
  3690. }
  3691. }
  3692. }
  3693. if(event.target.id === '检验类别'){
  3694. JPdialogSelectVisible_LX.value = true
  3695. }
  3696. if(event.target.id === '印件号'){
  3697. if(JPformdata['工单编号']!=''){
  3698. //获取印件名称
  3699. console.log(JPformdata['工单编号'])
  3700. ChanliangPrintDetail({gdbh:JPformdata['工单编号']}).then(response=>{
  3701. if (response.code === 0) {
  3702. if(response.data){
  3703. if(response.data.length==1){
  3704. JPformdata['印件号'] = response.data[0].yjno
  3705. JPformdata['印件名称'] = response.data[0].yjmc
  3706. setColorReadonly('印件名称')
  3707. }else{
  3708. JPselectData_Yj.splice(0, JPselectData_Yj.length, ...response.data)
  3709. JPdialogSelectVisible_Yj.value=true
  3710. }
  3711. }else{
  3712. errorres(response.msg)
  3713. }
  3714. }
  3715. });
  3716. }else{
  3717. errorres('印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!')
  3718. }
  3719. }
  3720. if(event.target.id === '工序号'){
  3721. //弹出选择
  3722. ChanliangProcessDetail({gdbh:JPformdata['工单编号'],yjno:JPformdata['印件号'],machine:''}).then(response=>{
  3723. // console.log(response)
  3724. if (response.code === 0) {
  3725. if(response.data){
  3726. if(response.data.length === 1){
  3727. JPformdata['工序号']=response.data[0].gxh
  3728. JPformdata['工序名称']=response.data[0].name
  3729. }else{
  3730. JPselectData_Gx.splice(0, JPselectData_Gx.length, ...response.data)
  3731. JPdialogSelectVisible_Gx.value = true
  3732. }
  3733. }else{
  3734. errorres(response.msg)
  3735. }
  3736. }
  3737. })
  3738. }
  3739. if (event.target.id === '定额代号') {
  3740. console.log('测试')
  3741. getDedhsubmit();
  3742. }
  3743. }
  3744. const inputs = document.getElementsByTagName('input');
  3745. const currentIndex = Array.from(inputs).indexOf(event.target);
  3746. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  3747. let nextIndex = currentIndex + 1;
  3748. while (nextIndex < inputs.length) {
  3749. if (inputs[nextIndex].disabled) {
  3750. console.log("当前输入框为disabled,跳过");
  3751. nextIndex++; // 跳过disabled的输入框
  3752. continue;
  3753. }
  3754. if (!inputs[nextIndex].readOnly) {
  3755. nextTick(() => {
  3756. inputs[nextIndex].focus();
  3757. inputs[nextIndex].select();
  3758. });
  3759. break;
  3760. }
  3761. nextIndex++;
  3762. }
  3763. }
  3764. else if (event.keyCode === 38) { // 向上箭头
  3765. for (let i = currentIndex - 1; i >= 0; i--) {
  3766. if (!inputs[i].readOnly) {
  3767. nextTick(()=>{
  3768. inputs[i].focus();
  3769. inputs[i].select();
  3770. })
  3771. break;
  3772. }
  3773. }
  3774. } else if (event.keyCode === 8) { // 删除箭头
  3775. if (event.target.selectionStart === 0) {
  3776. for (let i = currentIndex - 1; i >= 0; i--) {
  3777. if (!inputs[i].readOnly) {
  3778. nextTick(()=>{
  3779. inputs[i].focus();
  3780. inputs[i].setSelectionRange(0, 0);
  3781. })
  3782. break;
  3783. }
  3784. }
  3785. }
  3786. } else if (event.keyCode === 37) { // 向左箭头
  3787. if (event.target.selectionStart === 0) {
  3788. for (let i = currentIndex - 1; i >= 0; i--) {
  3789. if (!inputs[i].readOnly) {
  3790. nextTick(()=>{
  3791. inputs[i].focus();
  3792. inputs[i].select();
  3793. })
  3794. break;
  3795. }
  3796. }
  3797. }
  3798. } else if (event.keyCode === 39) { // 向右箭头
  3799. if (event.target.selectionStart === event.target.value.length) {
  3800. for (let i = currentIndex + 1; i < inputs.length; i++) {
  3801. if (!inputs[i].readOnly) {
  3802. nextTick(()=>{
  3803. inputs[i].focus();
  3804. inputs[i].select();
  3805. })
  3806. break;
  3807. }
  3808. }
  3809. }
  3810. }
  3811. }
  3812. const JPclickedlist = ref(false);
  3813. const JPtablebllickHandlerlist = async (row, column, event) => {
  3814. if (JPclickedlist.value) {
  3815. // 如果已经点击过一次,则不再执行操作
  3816. return;
  3817. }
  3818. let nextIndex = 1;
  3819. while (JPformdata[`组员${nextIndex}`]['编号'] !== '') {
  3820. nextIndex++;
  3821. if (nextIndex > 10) {
  3822. // 如果所有字段都已经填满,则不做任何事情并退出函数
  3823. return;
  3824. }
  3825. }
  3826. // 将选定的值分配给下一个空的代码和名称字段
  3827. JPformdata[`组员${nextIndex-1}`]['编号'] = row.员工编号;
  3828. JPformdata[`组员${nextIndex-1}`]['姓名'] = row.ygxm;
  3829. JPblModellist.value = false;
  3830. JPclickedlist.value = true;
  3831. setTimeout(() => {
  3832. JPclickedlist.value = false;
  3833. }, 300); // 300毫秒内再次点击将不会触发事件,你可以根据需要调整这个延迟时间
  3834. };
  3835. //班组产量提报 JP检品机 班组产量提报取消
  3836. const JPcloseDialog = async() => {
  3837. JPchanliangVisible.value = false
  3838. }
  3839. //日产量上报提交按钮默认开启
  3840. const isSubmitting = ref(false)
  3841. //日产量上报 按钮
  3842. //班组产量提报 打开新增页面
  3843. const onchanliang = async() => {
  3844. // console.log(JTMC)
  3845. //判断是否为JP 检品机器【是检品机独立页面】
  3846. if (JTMC.startsWith('JP')) {
  3847. // JP日产量上报开启
  3848. JPchanliangVisible.value = true
  3849. //获取当天日期接口
  3850. getTimelistsss();
  3851. //获取产量上报数据信息接口
  3852. getMachineReportInfos();
  3853. } else{
  3854. //日产量上报弹窗开启
  3855. isSubmitting.value = false
  3856. ReportInfo();
  3857. }
  3858. }
  3859. //班组产量提报 获取当天日期接口
  3860. const getTimelistsss = async () => {
  3861. const getTimelistss = await getTimelist();
  3862. JPformdata['日期'] = getTimelistss.data.date
  3863. }
  3864. //班组产量提报 获取产量上报数据信息接口
  3865. const getMachineReportInfos = async () => {
  3866. const getMachineReportInfos = await reportInfo({machine:JTMC = JTMC.replace(/#/g, '')});
  3867. console.log(getMachineReportInfos)
  3868. JPformdata['bzdh'] = getMachineReportInfos.data.class.sczl_bzdh
  3869. JPformdata['工单编号'] = getMachineReportInfos.data.order_info.order
  3870. JPformdata['产品名称'] = getMachineReportInfos.data.order_info.product_name
  3871. JPformdata['定额代号'] = getMachineReportInfos.data.order_info.dedh
  3872. JPformdata['印件号'] = getMachineReportInfos.data.order_info.yjno
  3873. JPformdata['印件名称'] = getMachineReportInfos.data.order_info.yj_name
  3874. JPformdata['工序号'] = getMachineReportInfos.data.order_info.gxh
  3875. JPformdata['工序名称'] = getMachineReportInfos.data.order_info.gy_name
  3876. for (let i = 1; i <= 10; i++) {
  3877. JPformdata[`组员${i}`]['编号'] = getMachineReportInfos.data.class[`sczl_bh${i}`];
  3878. }
  3879. for (let i = 1; i <= 10; i++) {
  3880. JPformdata[`组员${i}`]['姓名'] = getMachineReportInfos.data.class[`sczl_name${i}`];
  3881. }
  3882. for (let i = 1; i <= 10; i++) {
  3883. JPformdata[`组员${i}`]['比例'] = getMachineReportInfos.data.class[`sczl_rate${i}`];
  3884. }
  3885. }
  3886. //日产量详情获取 日产量上报
  3887. const ReportInfo = async () => {
  3888. const getTimelistss = await getTimelist();
  3889. console.log(getTimelistss)
  3890. console.log("获取下机时间")
  3891. console.log(formData)
  3892. //4.1获取报工单其他信息接口
  3893. const response = await reportInfo({ machine: JTMC.split("#")[0] });
  3894. // console.log(response)
  3895. // console.log("reportInfo_01")
  3896. // const today = new Date();
  3897. // const year = today.getFullYear();
  3898. // const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
  3899. // const day = String(today.getDate()).padStart(2, '0');
  3900. // const hours = String(today.getHours()).padStart(2, '0');
  3901. // const minutes = String(today.getMinutes()).padStart(2, '0');
  3902. // const seconds = String(today.getSeconds()).padStart(2, '0');
  3903. // const currentHour = today.getHours(); // 获取当前的小时
  3904. // let currentDate = `${year}-${month}-${day}`;
  3905. // if (!JTMC.endsWith('#')) {
  3906. // JTMC += '#';
  3907. // }
  3908. // console.log("machine--->"+JTMC)
  3909. // console.log("Gd_gdbh--->"+formData.value.工单编号)
  3910. // console.log("team--->"+BZMC.value)
  3911. // const facilityDetailresponse = await facilityDetail({ machine: JTMC, Gd_gdbh: formData.value.工单编号, team:BZMC.value });
  3912. // console.log(facilityDetailresponse)
  3913. // console.log("↑↑↑↑facilityDetail_01 ↑↑↑↑↑↑")
  3914. // // 日产量上报上机时间
  3915. // // if (facilityDetailresponse.code === 0) {
  3916. // if(facilityDetailresponse.data === null || facilityDetailresponse.data.length === 0){
  3917. // if (currentHour < 8 || (currentHour === 8 && minutes < 30)) {
  3918. // // 如果当前时间早于08:30, 则设置为前一天的晚班时间20:30
  3919. // // 需要将日期减一天
  3920. // const yesterDay = new Date(today.getTime() - 86400000); // 减去一天的毫秒数
  3921. // const yearYesterday = yesterDay.getFullYear();
  3922. // const monthYesterday = String(yesterDay.getMonth() + 1).padStart(2, '0');
  3923. // const dayYesterday = String(yesterDay.getDate()).padStart(2, '0');
  3924. // formData.value.上机时间 = `${yearYesterday}-${monthYesterday}-${dayYesterday} 20:30:00`;
  3925. // } else {
  3926. // // 如果当前时间晚于或等于08:30, 则设置为当天的白班时间08:30
  3927. // formData.value.上机时间 = `${currentDate} 08:30:00`;
  3928. // }
  3929. // }
  3930. // // }
  3931. // console.log(formData.value.上机时间)
  3932. // 日产量上报上机时间
  3933. if (response.code === 0) {
  3934. const { order_info, class: classInfo } = response.data;
  3935. const newData = {
  3936. order: order_info.order,
  3937. yjno: order_info.yjno,
  3938. gxh: order_info.gxh,
  3939. gxmc: order_info.gxmc,
  3940. product_name: order_info.product_name,
  3941. yj_name: order_info.yj_name,
  3942. gy_name: order_info.gy_name,
  3943. 日期:getTimelistss.data.date,
  3944. 下机时间:getTimelistss.data.hours,
  3945. 上机时间:formData.value.上机时间,
  3946. 制程废品:0,
  3947. 制程次品:0,
  3948. 前工序废:0,
  3949. 来料异常:0,
  3950. 装版总时长:0,
  3951. 打样总工时:0,
  3952. 通电工时:0,
  3953. 码开始行:0,
  3954. 码结束行:0,
  3955. 码包:0,
  3956. 主电表:0,
  3957. 辅电表:0,
  3958. 定额代号:formData.value.定额代号,
  3959. sczl_jtbh: JTMC.split("#")[0],
  3960. sczl_bzdh: classInfo.sczl_bzdh,
  3961. sys_id: classInfo.sys_id,
  3962. sys_rq: classInfo.sys_rq,
  3963. mod_rq: classInfo.mod_rq,
  3964. UniqId: classInfo.UniqId,
  3965. sczl_bh1: classInfo.sczl_bh1,
  3966. sczl_bh2: classInfo.sczl_bh2,
  3967. sczl_bh3: classInfo.sczl_bh3,
  3968. sczl_bh4: classInfo.sczl_bh4,
  3969. sczl_bh5: classInfo.sczl_bh5,
  3970. sczl_bh6: classInfo.sczl_bh6,
  3971. sczl_bh7: classInfo.sczl_bh7,
  3972. sczl_bh8: classInfo.sczl_bh8,
  3973. sczl_bh9: classInfo.sczl_bh9,
  3974. sczl_bh10: classInfo.sczl_bh10,
  3975. sczl_name1: classInfo.sczl_name1,
  3976. sczl_name2: classInfo.sczl_name2,
  3977. sczl_name3: classInfo.sczl_name3,
  3978. sczl_name4: classInfo.sczl_name4,
  3979. sczl_name5: classInfo.sczl_name5,
  3980. sczl_name6: classInfo.sczl_name6,
  3981. sczl_name7: classInfo.sczl_name7,
  3982. sczl_name8: classInfo.sczl_name8,
  3983. sczl_name9: classInfo.sczl_name9,
  3984. sczl_name10: classInfo.sczl_name10,
  3985. sczl_rate1: classInfo.sczl_rate1,
  3986. sczl_rate2: classInfo.sczl_rate2,
  3987. sczl_rate3: classInfo.sczl_rate3,
  3988. sczl_rate4: classInfo.sczl_rate4,
  3989. sczl_rate5: classInfo.sczl_rate5,
  3990. sczl_rate6: classInfo.sczl_rate6,
  3991. sczl_rate7: classInfo.sczl_rate7,
  3992. sczl_rate8: classInfo.sczl_rate8,
  3993. sczl_rate9: classInfo.sczl_rate9,
  3994. sczl_rate10: classInfo.sczl_rate10,
  3995. Gy0_ms:order_info.Gy0_ms,
  3996. Gy0_ls:order_info.Gy0_ls,
  3997. };
  3998. formData3.value = { ...formData3.value, ...newData };
  3999. formData3.value.流程标牌 = ''
  4000. chanliangselectData.splice(0, chanliangselectData.length, ...response.data.bom)
  4001. chanliangVisible.value = true
  4002. }
  4003. }
  4004. //日产量上报提交按钮
  4005. const chanliangenterDialog = async () => {
  4006. if(formData3.value.sczl_bh11 === ''){
  4007. errorres('请输入拉料人员')
  4008. }else{
  4009. SubmitDailyProduction()
  4010. isSubmitting.value = false
  4011. }
  4012. }
  4013. const bzchanliangenterDialog = async () => {
  4014. if(dbformData.value.sczl_bh11 === ''){
  4015. errorres('请输入拉料人员')
  4016. }else{
  4017. chanliangEdits()
  4018. }
  4019. }
  4020. //日报表上传
  4021. const SubmitDailyProduction = async () => {
  4022. const restoredData = {
  4023. sczl_gdbh:formData3.value.order,
  4024. sczl_yjno:formData3.value.yjno,
  4025. sczl_gxh:formData3.value.gxh,
  4026. sczl_gxmc: formData3.value.gxmc,
  4027. sczl_bzdh: formData3.value.sczl_bzdh,
  4028. sczl_bh1: formData3.value.sczl_bh1,
  4029. sczl_bh2: formData3.value.sczl_bh2,
  4030. sczl_bh3: formData3.value.sczl_bh3,
  4031. sczl_bh4: formData3.value.sczl_bh4,
  4032. sczl_bh5: formData3.value.sczl_bh5,
  4033. sczl_bh6: formData3.value.sczl_bh6,
  4034. sczl_bh7: formData3.value.sczl_bh7,
  4035. sczl_bh8: formData3.value.sczl_bh8,
  4036. sczl_bh9: formData3.value.sczl_bh9,
  4037. sczl_bh10: formData3.value.sczl_bh10,
  4038. // sczl_bh98:formData3.value.sczl_bh11,
  4039. sczl_bh98:formData3.value.sczl_bh11 === '自备' ? '' : formData3.value.sczl_bh11,
  4040. sczl_rate1: formData3.value.sczl_rate1,
  4041. sczl_rate2: formData3.value.sczl_rate2,
  4042. sczl_rate3: formData3.value.sczl_rate3,
  4043. sczl_rate4: formData3.value.sczl_rate4,
  4044. sczl_rate5: formData3.value.sczl_rate5,
  4045. sczl_rate6: formData3.value.sczl_rate6,
  4046. sczl_rate7: formData3.value.sczl_rate7,
  4047. sczl_rate8: formData3.value.sczl_rate8,
  4048. sczl_rate9: formData3.value.sczl_rate9,
  4049. sczl_rate10: formData3.value.sczl_rate10,
  4050. sczl_jtbh: formData3.value.sczl_jtbh,
  4051. sczl_rq: formData3.value.日期,
  4052. sczl_num: formData3.value.流程标牌,
  4053. sczl_sj1: formData3.value.上机时间,
  4054. sczl_sj2: formData3.value.下机时间,
  4055. sczl_cl: formData3.value.产量,
  4056. sczl_zcfp: formData3.value.制程废品,
  4057. sczl_zccp: formData3.value.制程次品,
  4058. last_fp: formData3.value.前工序废,
  4059. less_sl: formData3.value.来料异常,
  4060. sczl_ls: formData3.value.Gy0_ls,
  4061. sczl_ms: formData3.value.Gy0_ms,
  4062. zb_time: formData3.value.装版总时长,
  4063. dy_time: formData3.value.打样总工时,
  4064. run_time: formData3.value.通电工时,
  4065. sczl_dedh: formData3.value.定额代号,
  4066. code: formData3.value.码包,
  4067. main_meter: formData3.value.主电表,
  4068. auxiliary_meter: formData3.value.辅电表,
  4069. bom: formData3.value.formattedArray,
  4070. ma_start: formData3.value.码开始行,
  4071. ma_end: formData3.value.码结束行,
  4072. 换版类型:formData3.value.换版类型,
  4073. sczl_换版联拼数:formData3.value.换版联拼数,
  4074. }
  4075. console.log(restoredData)
  4076. // return;
  4077. // 4.2日产量上报 添加
  4078. const response = await submitDailyProduction(restoredData);
  4079. console.log(response)
  4080. if (response.code === 0) {
  4081. FacilityDetail()
  4082. isSubmitting.value = true
  4083. chanliangVisible.value = false
  4084. ElMessage({
  4085. type: '',
  4086. dangerouslyUseHTMLString: true,
  4087. // duration: 0, // 不自动关闭
  4088. message: '<strong style="font-size: 71px; color: black; background-color: #80FA80; padding: 30px 280px; width: 482px; line-height: 60px; text-align: center; display: block;">报工成功</strong>',
  4089. customClass: 'custom-warning-message'
  4090. });
  4091. }else{
  4092. ElMessage({
  4093. type: '',
  4094. dangerouslyUseHTMLString: true,
  4095. // duration: 0, // 不自动关闭
  4096. message: '<strong style="font-size: 71px; color: white; background-color: red; padding: 30px 280px; width: 482px; line-height: 60px; text-align: center; display: block;">报工失败</strong>',
  4097. customClass: 'custom-warning-message'
  4098. });
  4099. }
  4100. }
  4101. const chanliangselectData = reactive([])
  4102. const chanliangVisible = ref(false)
  4103. const bzchanliangVisible = ref(false)
  4104. const huanxingVisible = ref(false)
  4105. const xunchaVisible = ref(false)
  4106. //客诉记录
  4107. const complaintsShow = ref(false)
  4108. const complaintsData = ref([])
  4109. function oncomplaints() {
  4110. Complaints()
  4111. }
  4112. const multipleTable = ref(null)
  4113. const dbclSelection = ref('')
  4114. //当班产量明细复选框
  4115. const dbclmxSelectionChange = (selection, type) => {
  4116. console.log(selection);
  4117. // 如果选择项多于一个,弹出提示并撤销选择
  4118. if (selection.length > 1) {
  4119. warningres('您只能选择一条进行删除!')
  4120. // 重置选择项
  4121. dbclSelection.value = ''; // 清空之前的选择
  4122. selection.splice(0, selection.length); // 清空当前选择数组
  4123. return false;
  4124. }else{
  4125. const ids = selection.map(item => item.UniqId);
  4126. dbclSelection.value = ids.join(',');
  4127. console.log(dbclSelection.value)
  4128. }
  4129. }
  4130. //当班产量明细删除按钮
  4131. const deldbcl_onclick = async () => {
  4132. // console.log(dbclSelection.value)
  4133. // return false;
  4134. if (dbclSelection.value !== '') {
  4135. try {
  4136. //产量上报数据删除
  4137. const res1 = await ChanliangDel({UniqId: dbclSelection.value})
  4138. if(res1.code === 0){
  4139. successres('当班产量明细删除成功')
  4140. dbclSelection.value = ''; // 清空当前选择记录
  4141. CLMXData.value = []; // 清空表格数据
  4142. // 清除表格选择
  4143. if (multipleTable.value) {
  4144. multipleTable.value.clearSelection();
  4145. }
  4146. //当班产量明细 显示最新数据
  4147. const response = await facilityDetail({ machine: JTMC, Gd_gdbh: formData.value.工单编号, team: BZMC.value });
  4148. console.log(response);
  4149. // if (response.code === 0) {
  4150. // }
  4151. if (response.data === null) {
  4152. CLMXData.splice(0, CLMXData.length, ...Object.values([]));
  4153. return false;
  4154. }else{
  4155. CLMXData.splice(0, CLMXData.length, ...Object.values(response.data));
  4156. formData.value.production_now=response.data[0].产量
  4157. formData.value.production_all=response.data.total.产量
  4158. return false;
  4159. }
  4160. }
  4161. } catch(err) {
  4162. errorres(err)
  4163. }
  4164. }
  4165. }
  4166. // 客诉记录表格填充
  4167. const Complaints = async() => {
  4168. complaintsData.value=[]
  4169. selectedRowData.value={}
  4170. const res = await ComplaintRecord({productCode :formData.value.productCode})
  4171. if (res.msg === '成功') {
  4172. complaintsData.value=res.data;
  4173. selectedRowData.value=complaintsData.value[0]
  4174. complaintsShow.value=true
  4175. }else{
  4176. successres('未找到该产品客诉记录!')
  4177. }
  4178. }
  4179. const selectedRowData = ref({
  4180. })
  4181. //客诉表格单击
  4182. const complaintshandle = (val, row) => {
  4183. selectedRowData.value=val
  4184. };
  4185. //设置机台状态
  4186. function onstatus() {
  4187. FacilityProduction().then(()=>{
  4188. dialogSbyxgl.value=true
  4189. })
  4190. // SetMachineStatus()
  4191. // ReportProduceInfo()
  4192. }
  4193. function onClear() {
  4194. huanxingtreeData.value=[]
  4195. huanxingselectData.value=[]
  4196. huanxingData.value={}
  4197. huanxingstatus.value=false
  4198. huanxingVisible.value=true
  4199. RemodelGetTab()
  4200. FacilityDetail()
  4201. }
  4202. const gzSelVisible = ref(false)
  4203. const gz_tableData = reactive([])
  4204. const gz_tableData2 = reactive([])
  4205. let gz_bzbh = [];
  4206. const tableCols1 = [
  4207. { label: '员工编号', prop: 'bh', width: '105' },
  4208. { label: '员工姓名', prop: '员工姓名', width: '105' },
  4209. { label: '日期', prop: 'sczl_rq', width: '120' },
  4210. { label: '计件工资', prop: '计件工资', width: '105' },
  4211. { label: '加班工资', prop: '加班工资', width: '105' },
  4212. { label: '计时时数', prop: '计时时数', width: '105' },
  4213. { label: '计时工资', prop: '计时工资', width: '135' },
  4214. { label: '日工资合计', prop: '日工资合计', width: '135' },
  4215. { label: '分摊比例', prop: 'Rate', width: '135' },
  4216. ]
  4217. const tableCols2 = [
  4218. { label: '日期', prop: 'sczl_rq', width: '100' },
  4219. { label: '工单编号', prop: 'sczl_gdbh', width: '105' },
  4220. { label: '产品名称', prop: 'Gd_cpmc', width: '120' },
  4221. { label: '印件及工序', prop: 'sczl_type', width: '120' },
  4222. { label: '机台', prop: 'sczl_jtbh', width: '87' },
  4223. { label: '车头产量', prop: '班组车头产量', width: '105' },
  4224. { label: '计件产量', prop: '计件产量', width: '105' },
  4225. { label: '补产产量', prop: '补产产量', width: '105' },
  4226. { label: '核算产量', prop: '核算产量', width: '105' },
  4227. { label: '达标定额', prop: '达标定额', width: '105' },
  4228. { label: '千件工价', prop: '千件工价', width: '105' },
  4229. { label: '计件工资', prop: '个人计件工资', width: '105' },
  4230. { label: '加班工资', prop: '个人加班工资', width: '105' },
  4231. { label: '装版工时', prop: '装版工时', width: '120' },
  4232. { label: '保养工时', prop: '保养工时', width: '105' },
  4233. { label: '打样工时', prop: '打样工时', width: '105' },
  4234. { label: '异常停机', prop: '异常停机工时', width: '105' },
  4235. { label: '补产标准', prop: '补产标准', width: '120' },
  4236. { label: '分摊比例', prop: 'Rate', width: '105' },
  4237. ]
  4238. //员工工资查询
  4239. const gzSel = () =>{
  4240. if(formData.value.班组成员.length==0){
  4241. warningres('未获取到员工')
  4242. return
  4243. }
  4244. for (let index in formData.value.班组成员) {
  4245. gz_bzbh[index] = formData.value.班组成员[index]['编号']
  4246. }
  4247. gzSelVisible.value=true
  4248. }
  4249. // 查询
  4250. const gz_ontable = (ygbh) => {
  4251. // 创建一个Date对象
  4252. var currentDate = new Date();
  4253. // 获取年份
  4254. var year = currentDate.getFullYear();
  4255. // 获取月份(注意,月份从0开始,所以需要加1)
  4256. var month = currentDate.getMonth() + 1;
  4257. if (month < 10) {
  4258. month = "0" + month;
  4259. }
  4260. var date = year+ "" +month
  4261. const response = dailysearch({date: date, search: ygbh}).then(response=>{
  4262. if (response.code === 0) {
  4263. const originalData = response.data;
  4264. const summaryData = generateSummaryData(originalData);
  4265. // 将合计数据插入到原始数据中
  4266. const combinedData = [];
  4267. originalData.forEach((item, index) => {
  4268. combinedData.push(item);
  4269. const nextItem = originalData[index + 1];
  4270. if (nextItem==undefined) {
  4271. // 如果下一个员工姓名与当前不同,插入合计数据
  4272. const currentSummary = summaryData.shift();
  4273. combinedData.push(currentSummary);
  4274. }
  4275. });
  4276. // 更新表格数据
  4277. gz_tableData.splice(0, gz_tableData.length, ...combinedData);
  4278. }
  4279. });
  4280. dailygetGzByYgbh({date:date,code:ygbh}).then(response=>{
  4281. if(response.code==0){
  4282. gz_tableData2.splice(0, gz_tableData2.length, ...response.data);
  4283. }
  4284. })
  4285. }
  4286. const generateSummaryData = (data) => {
  4287. const summaryData = [];
  4288. let currentName = null;
  4289. let currentSummary = null;
  4290. data.forEach((item) => {
  4291. const name = item['员工姓名'].trim(); // 获取员工姓名并去除空格
  4292. if (name !== currentName) {
  4293. // 如果员工姓名发生改变,说明需要插入合计数据
  4294. if (currentSummary) {
  4295. // 将上一个员工的合计数据插入到数组中
  4296. summaryData.push(currentSummary);
  4297. }
  4298. // 创建新的合计数据
  4299. currentSummary = {
  4300. '员工姓名': name,
  4301. '日期': 0,
  4302. '计件工资': 0,
  4303. '加班工资': 0,
  4304. '计时时数': 0,
  4305. '计时工资': 0,
  4306. '日工资合计': 0
  4307. };
  4308. currentName = name;
  4309. }
  4310. // 更新合计数据
  4311. currentSummary['日期']++;
  4312. currentSummary['计件工资'] += parseFloat(item['计件工资']);
  4313. currentSummary['加班工资'] += parseFloat(item['加班工资']);
  4314. currentSummary['计时时数'] += parseFloat(item['计时时数']);
  4315. currentSummary['计时工资'] += parseFloat(item['计时工资']);
  4316. currentSummary['日工资合计'] += parseFloat(item['日工资合计']);
  4317. currentSummary['员工姓名']='合计('+currentSummary['日期']+'天)';
  4318. });
  4319. // 将最后一个员工的合计数据插入到数组中
  4320. if (currentSummary) {
  4321. summaryData.push(currentSummary);
  4322. }
  4323. // 将日期填充到表格中
  4324. summaryData.forEach((summary) => {
  4325. summary['计件工资'] = summary['计件工资'].toFixed(2); // 保留两位小数
  4326. summary['加班工资'] = summary['加班工资'].toFixed(2);
  4327. summary['计时时数'] = summary['计时时数'].toFixed(2);
  4328. summary['计时工资'] = summary['计时工资'].toFixed(2);
  4329. summary['日工资合计'] = summary['日工资合计'].toFixed(2);
  4330. });
  4331. return summaryData;
  4332. };
  4333. const RemodelGetTab = async() => {
  4334. const response = await remodelGetTab()
  4335. let arr=[]
  4336. if (response.code === 0) {
  4337. huanxingtreeData.value=[{label:JTMC,children:response.data[JTMC].map(item=>({
  4338. label:item,
  4339. machine:JTMC
  4340. }))}]
  4341. }
  4342. }
  4343. //提交巡查记录
  4344. function onxuncha() {
  4345. xunchaData.value=[]
  4346. ReportProduceInfo()
  4347. }
  4348. //巡检弹窗确定
  4349. const xunchaDialog = async () => {
  4350. SubmitPatrolRecord()
  4351. }
  4352. const closexunchaDialog = async () => {
  4353. xunchaVisible.value=false
  4354. }
  4355. const dianjianDialog = async () => {
  4356. dianjianselectData.splice(0, dianjianselectData.length, ...dianjianselectData.map(item=>{
  4357. if(item.zc==true){
  4358. item.status='合格'
  4359. }
  4360. if(item.yc==true){
  4361. item.status='不合格'
  4362. }
  4363. if(item.notjc==true){
  4364. item.status='不检测'
  4365. }
  4366. item.itemName=item.检验项目
  4367. item.method=item.点检方法
  4368. item.standard=item.判定标准
  4369. delete item.notjc
  4370. delete item.zc
  4371. delete item.yc
  4372. delete item.检验项目
  4373. delete item.点检方法
  4374. delete item.判定标准
  4375. return item
  4376. }))
  4377. console.log(dianjianselectData)
  4378. // return;
  4379. const response = await InspectionItemAdd(dianjianselectData);
  4380. if (response.code === 0) {
  4381. successres('点检记录添加成功')
  4382. closedianjianDialog();
  4383. }
  4384. }
  4385. //制程检验记录提交按钮
  4386. const zhichengDialog = async () => {
  4387. // console.log(fujiaselectData.value)
  4388. let arr =[]
  4389. zhibiaoselectData.value.map(item=>{
  4390. if(item.zc==true){
  4391. item.result='合格'
  4392. item.item=item.检验项目
  4393. item.instrument=item.检测方法
  4394. item.standard=item.相关标准
  4395. delete item.notjc
  4396. delete item.zc
  4397. delete item.yc
  4398. delete item.检验项目
  4399. delete item.检测方法
  4400. delete item.相关标准
  4401. delete item.检验频率
  4402. arr.push(item)
  4403. return item
  4404. }
  4405. if(item.yc==true){
  4406. item.result='不合格'
  4407. item.item=item.检验项目
  4408. item.instrument=item.检测方法
  4409. item.standard=item.相关标准
  4410. delete item.notjc
  4411. delete item.zc
  4412. delete item.yc
  4413. delete item.检验项目
  4414. delete item.检测方法
  4415. delete item.相关标准
  4416. delete item.检验频率
  4417. arr.push(item)
  4418. return item
  4419. }
  4420. if(item.notjc==true){
  4421. item.result='不检测'
  4422. item.item=item.检验项目
  4423. item.instrument=item.检测方法
  4424. item.standard=''
  4425. delete item.notjc
  4426. delete item.zc
  4427. delete item.yc
  4428. delete item.检验项目
  4429. delete item.检测方法
  4430. delete item.相关标准
  4431. delete item.检验频率
  4432. // arr.push(item)
  4433. return item
  4434. }
  4435. })
  4436. console.log(fujiaselectData.value)
  4437. let arrs=[]
  4438. let fujiastatus=0
  4439. fujiaselectData.value.map(item=>{
  4440. if(item.notjc==true){
  4441. return item
  4442. }else{
  4443. fujiastatus=1
  4444. item.remark=item.缺陷备注
  4445. delete item.notjc
  4446. delete item.缺陷备注
  4447. delete item.编号
  4448. arrs.push(item)
  4449. return item
  4450. }
  4451. })
  4452. console.log(arrs)
  4453. if(fujiastatus==1){
  4454. const responses = await AdditionalInspectionRecordAdd(arrs);
  4455. fujiastatus=0
  4456. }
  4457. // 使用filter方法过滤掉所有result为"不检测"的对象
  4458. const filteredData = zhibiaoselectData.value.filter(item => item.selected !== "不检测");
  4459. console.log(filteredData);
  4460. const response = await ProcessInspectionRecordsItemAdd(filteredData);
  4461. if (response.code === 0) {
  4462. successres('制程检验记录添加成功')
  4463. InspectionRecord()
  4464. zhichengVisible.value=false
  4465. zhibiaoselectData.value=[]
  4466. fujiaselectData.value=[]
  4467. }
  4468. }
  4469. const closedianjianDialog = async () => {
  4470. dianjianselectData.splice(0, dianjianselectData.length);
  4471. pandingfangfa.value=''
  4472. dianjianVisible.value=false
  4473. }
  4474. const closezhichengDialog = async () => {
  4475. zhichengVisible.value=false
  4476. }
  4477. //获取机台生产信息
  4478. const ReportProduceInfo = async (value,inputName) => {
  4479. const response = await reportProduceInfo({machine:JTMC.split("#")[0]});
  4480. if (response.code === 0) {
  4481. xunchaData.value.order=response.data.order
  4482. xunchaData.value.yjno=response.data.yjno
  4483. xunchaData.value.product_name=response.data.product_name
  4484. xunchaData.value.gxmc=response.data.gxmc
  4485. xunchaData.value.lcdh=0
  4486. xunchaData.value.sczl_bh=''
  4487. xunchaData.value.sczl_name=''
  4488. xunchaData.value.remark=''
  4489. FieldInspectionRecord()
  4490. xunchaVisible.value=true
  4491. }
  4492. }
  4493. // 假设 xunchaselectData 是一个 ref 对象
  4494. const xunchaselectData = ref([]);
  4495. const xunchaData = ref([]);
  4496. // 在 FieldInspectionRecord 方法中填充数据
  4497. const FieldInspectionRecord = async () => {
  4498. const response = await fieldInspectionRecord({ workOrder: xunchaData.value.order, team: BZMC.value});
  4499. console.log(response);
  4500. if (response.code === 0) {
  4501. xunchaselectData.value = response.data;
  4502. }
  4503. }
  4504. //获取机台编号
  4505. const GetMachineMac = async (addr) => {
  4506. console.log(addr);
  4507. const response = await getMachineMac({ addr: addr });
  4508. console.log("获取机台数据",response)
  4509. if (response.code === 0) {
  4510. if(response.data===null){
  4511. errorres('未获取到机台编号请确认MAC地址或与管理员联系')
  4512. }else{
  4513. // 将接口返回的数据添加到树型结构中
  4514. let newNode = {
  4515. label: response.data["使用部门"],
  4516. level: 1,
  4517. children: [
  4518. {
  4519. label: response.data["设备编号"],
  4520. level: 2,
  4521. }
  4522. ]
  4523. };
  4524. treeData.value.push(newNode);
  4525. CJMC=newNode.label
  4526. JTMC = newNode.children[0].label;
  4527. formData.value.机台号=JTMC
  4528. // console.log('【'+MAC.value+'/'+JTMC+'】')
  4529. FacilityProduction(addr);
  4530. }
  4531. }
  4532. }
  4533. const MAC=ref()
  4534. const GetAddr = () => {
  4535. var xmlhttp = null;
  4536. var res;
  4537. if (window.XMLHttpRequest) {
  4538. xmlhttp = new XMLHttpRequest();
  4539. } else if (window.ActiveXObject) {
  4540. xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  4541. }
  4542. // 2. 设置回调函数
  4543. xmlhttp.onreadystatechange = function() {
  4544. if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  4545. res = eval('('+xmlhttp.response+')');
  4546. let result = ''
  4547. for (let i = 0; i < res.macAddress.length; i++) {
  4548. if (i % 2 === 0 && i !== 0) {
  4549. result += '-' // 根据实际需求修改分隔符
  4550. }
  4551. result += res.macAddress[i]
  4552. }
  4553. MAC.value=result
  4554. GetMachineMac(result)
  4555. }
  4556. }
  4557. // 3. 打开一个连接http://10.10.4.42/
  4558. xmlhttp.open("get", "http://127.0.0.1:8090/init")
  4559. // 5. 发送
  4560. xmlhttp.send();
  4561. }
  4562. GetAddr()
  4563. //提交巡查记录
  4564. const SubmitPatrolRecord = async () => {
  4565. console.log(JTMC.split("#")[0])
  4566. const response = await submitPatrolRecord({
  4567. type:'现场巡查记录',
  4568. machine:JTMC.split("#")[0],
  4569. order:xunchaData.value.order,
  4570. yjno:xunchaData.value.yjno,
  4571. process:xunchaData.value.lcdh,
  4572. no:xunchaData.value.sczl_bh,
  4573. name:xunchaData.value.sczl_name,
  4574. remark:xunchaData.value.remark,
  4575. });
  4576. console.log(response)
  4577. if (response.code === 0) {
  4578. successres('提交成功')
  4579. xunchaVisible.value=false
  4580. }
  4581. }
  4582. // let formattedArray
  4583. // 产量单选
  4584. const chanliangSelectionChange = (val) => {
  4585. // if(val.length>0){
  4586. // multipleSelection.value = val
  4587. // const lenth=val.length
  4588. // lastCellValue=val[lenth-1].UniqId
  4589. // console.log(val)
  4590. // val.splice(0, val.length); // 清空 val 数组
  4591. // console.log(lastCellValue)
  4592. // }
  4593. const selectedItems =val
  4594. // 存储batch和st_wlbh的数组
  4595. formData3.value.formattedArray = selectedItems.map(item => `${item.batch}-${item.st_wlbh}`).join(',');
  4596. console.log(formData3.value.formattedArray);
  4597. // console.log(selectedItems)
  4598. }
  4599. const handleybSelectionChange = (val) => {
  4600. yinbanSelection.value = []
  4601. if(val.length>0){
  4602. yinbanSelection.value = val
  4603. }
  4604. }
  4605. //获取设备点检->检验项目
  4606. const FacilityInspectionItem = async (value) => {
  4607. try {
  4608. // 调用接口获取巡检项目数据
  4609. const response = await facilityInspectionItem({ unitName: value ,machine:JTMC.split("#")[0]});
  4610. // 检查接口返回的状态码
  4611. if (response.code === 0) {
  4612. console.log(response)
  4613. dianjianselectData.splice(0, dianjianselectData.length, ...response.data.map(item=>{
  4614. item.notjc=true;
  4615. item.zc=false;
  4616. item.yc=false;
  4617. item.remark=''
  4618. item.unitName=value
  4619. item.team=BZMC.value
  4620. item.machine=JTMC
  4621. return item
  4622. }))
  4623. }
  4624. } catch (error) {
  4625. // 捕获并打印异常
  4626. console.error("获取巡检项目数据出错:" + error);
  4627. return null;
  4628. }
  4629. };
  4630. //树形结构单机
  4631. const dianjianselectData = reactive([])
  4632. const dianjianNodeClick = (node, check, nodeData) => {
  4633. // console.log('111')
  4634. if (node.children && node.children.length > 0) {
  4635. // 点击的是父节点,且有子节点
  4636. // 执行相应的父节点单击事件处理逻辑
  4637. // 这里可以添加你想要的处理逻辑,比如展开/折叠节点等
  4638. } else {
  4639. // 点击的是子节点,或者没有子节点
  4640. // 执行相应的子节点单击事件处理逻辑
  4641. FacilityInspectionItem(node.label)
  4642. }
  4643. };
  4644. const category =ref()
  4645. const zhichengNodeClick = (node, check) => {
  4646. if(node.label){
  4647. zhichengstatus.value=true
  4648. category.value=node.label
  4649. processInspectionRecordsItem()
  4650. }
  4651. };
  4652. const processInspectionRecordsItem = async (value) => {
  4653. const response = await ProcessInspectionRecordsItem({ process: xunchaData.value.gxmc });
  4654. if (response.code === 0) {
  4655. zhibiaoselectData.value=response.data.首件.指标检验.map(item=>{
  4656. item.notjc=true;
  4657. item.zc=false;
  4658. item.yc=false;
  4659. item.remark=''
  4660. item.category=category.value
  4661. item.workOrder=xunchaData.value.order
  4662. item.yjno=xunchaData.value.yjno
  4663. item.flow=xunchaData.value.lcdh
  4664. item.team=BZMC.value
  4665. item.machine=JTMC.split("#")[0]
  4666. item.selected = '不检测';
  4667. item.rq = currentDate;
  4668. return item
  4669. })
  4670. fujiaselectData.value=response.data.首件.附加.map(item=>{
  4671. item.notjc=true;
  4672. item.workOrder=xunchaData.value.order
  4673. item.yjno=xunchaData.value.yjno
  4674. item.flow=xunchaData.value.lcdh
  4675. item.machine=JTMC.split("#")[0]
  4676. return item
  4677. })
  4678. }
  4679. };
  4680. const notjcClick = (val) => {
  4681. console.log("不检测")
  4682. val.notjc=true
  4683. val.zc=false
  4684. val.yc=false
  4685. };
  4686. const zcClick = (val) => {
  4687. console.log("合格")
  4688. val.notjc=false
  4689. val.zc=true
  4690. val.yc=false
  4691. };
  4692. const ycClick = (val) => {
  4693. console.log("不合格")
  4694. val.notjc=false
  4695. val.zc=false
  4696. val.yc=true
  4697. };
  4698. let pandingfangfa=ref()
  4699. //检验项目单击
  4700. const dianjianhandle = async (val, row) => {
  4701. try {
  4702. console.log(val.判定标准);
  4703. pandingfangfa.value = val.判定标准;
  4704. } catch (error) {
  4705. console.error('An error occurred:', error);
  4706. }
  4707. };
  4708. const rowClassName = (row, column) => {
  4709. try {
  4710. if (row.unchecked) {
  4711. return 'row-yellow';
  4712. }
  4713. return '';
  4714. } catch (error) {
  4715. console.error('An error occurred:', error);
  4716. return '';
  4717. }
  4718. };
  4719. //点击label获取表格数据
  4720. function duohandleClick(table) {
  4721. console.log(table.props.label)
  4722. if(table.props.label === '设备作业清单'){
  4723. FacilityWorklist();
  4724. }
  4725. if(table.props.label === '班组人员及分配比例'){
  4726. FacilityTeam(JTMC)
  4727. }
  4728. if(table.props.label=='当班产量明细'){
  4729. FacilityDetail()
  4730. zdtreeType.value=true
  4731. }else{
  4732. zdtreeType.value=false
  4733. }
  4734. if(table.props.label === '检验记录'){
  4735. InspectionRecord()
  4736. }
  4737. }
  4738. // 异步函数,用于获取指定设备的巡检项目,并且将结果格式化为树形结构数据
  4739. const getSpotCheckItem = async (machineName) => {
  4740. try {
  4741. // 调用接口获取巡检项目数据
  4742. const response = await facilitySpotCheckItem({ machine: machineName });
  4743. // 检查接口返回的状态码
  4744. if (response.code === 0) {
  4745. // 构建树形结构数据
  4746. const childrenData = Object.entries(response.data).map(([id, label]) => {
  4747. return {
  4748. id, // 子节点的唯一标识
  4749. label, // 子节点的标签
  4750. children: [] // 初始化子节点数组
  4751. };
  4752. });
  4753. // 创建包含父节点的树形结构数据
  4754. const treeData = [{
  4755. id: machineName, // 父节点的唯一标识
  4756. label: machineName, // 父节点的标签
  4757. children: childrenData // 子节点数据
  4758. }];
  4759. // 返回构建好的树形结构数据
  4760. return treeData;
  4761. } else {
  4762. // 如果接口返回的状态码不是0,打印错误信息
  4763. console.error("接口返回错误:" + response.msg);
  4764. return null;
  4765. }
  4766. } catch (error) {
  4767. // 捕获并打印异常
  4768. console.error("获取巡检项目数据出错:" + error);
  4769. return null;
  4770. }
  4771. };
  4772. // 班组人员及分配比例
  4773. const FacilityTeam = async (value) => {
  4774. console.log('机台号'+value)
  4775. if (!value.endsWith('#')) {
  4776. value += '#';
  4777. }
  4778. const response = await facilityTeam({ machine: value });
  4779. if (response.code === 0) {
  4780. // 清空 bzData 数组
  4781. bzData.splice(0, bzData.length);
  4782. response.data.map(item=>{
  4783. if(formData.value['班组Id']==item.ID){
  4784. console.log('1111')
  4785. currentBz.value=item
  4786. formDatas.value = {};
  4787. let sczl_bhkey = ''
  4788. let sczl_namekey = ''
  4789. let percentagekey = ''
  4790. if (currentBz.value[9]) {
  4791. for (let i = 1; i <= 10; i++) {
  4792. sczl_bhkey = `code${i}`
  4793. sczl_namekey = `name${i}`
  4794. percentagekey = `percentage${i}`
  4795. formDatas.value[sczl_bhkey] = '';
  4796. formDatas.value[sczl_namekey] = '';
  4797. formDatas.value[percentagekey] = '';
  4798. }
  4799. formDatas.value.code8 = currentBz.value[9].split(' ')[0];
  4800. formDatas.value.name8 = currentBz.value[9].split(' ')[1]
  4801. formDatas.value.percentage8 = Math.round((parseFloat(currentBz.value[9].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
  4802. for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length - 4, 6); i++) {
  4803. sczl_bhkey = `code${i}`
  4804. sczl_namekey = `name${i}`
  4805. percentagekey = `percentage${i}`
  4806. formDatas.value[sczl_bhkey] = currentBz.value[i - 1].split(' ')[0];
  4807. formDatas.value[sczl_namekey] = currentBz.value[i - 1].split(' ')[1];
  4808. if(isNaN(parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]))){
  4809. formDatas.value[percentagekey] = currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0];
  4810. }else{
  4811. formDatas.value[percentagekey] = Math.round((parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
  4812. }
  4813. }
  4814. } else {
  4815. console.log('2222')
  4816. for (let i = 1; i <= 10; i++) {
  4817. sczl_bhkey = `code${i}`
  4818. sczl_namekey = `name${i}`
  4819. percentagekey = `percentage${i}`
  4820. formDatas.value[sczl_bhkey] = '';
  4821. formDatas.value[sczl_namekey] = '';
  4822. formDatas.value[percentagekey] = '';
  4823. }
  4824. for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length - 3, 6); i++) {
  4825. sczl_bhkey = `code${i}`
  4826. sczl_namekey = `name${i}`
  4827. percentagekey = `percentage${i}`
  4828. formDatas.value[sczl_bhkey] = currentBz.value[i - 1].split(' ')[0];
  4829. formDatas.value[sczl_namekey] = currentBz.value[i - 1].split(' ')[1];
  4830. if(isNaN(parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]))){
  4831. formDatas.value[percentagekey] = currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0];
  4832. }else{
  4833. // formDatas.value[percentagekey] = parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0])/100;
  4834. formDatas.value[percentagekey] = Math.round((parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
  4835. }
  4836. }
  4837. }
  4838. // console.log(formDatas)
  4839. }
  4840. })
  4841. // 遍历接口返回的数据,并给每个对象添加 JTMC 属性
  4842. const updatedData = response.data.map(item => {
  4843. return { ...item, JTMC: value }; // 添加 JTMC 属性
  4844. });
  4845. FPData.splice(0, FPData.length, ...updatedData)
  4846. // 将更新后的数据添加到 bzData 数组
  4847. bzData.push(...updatedData);
  4848. }
  4849. };
  4850. //班组维护
  4851. function onBZ() {
  4852. FacilityTeam(JTMC)
  4853. fetchData()
  4854. detailShow.value=true
  4855. }
  4856. // 下拉框选项数据
  4857. const dropdownOptions = ref([]);
  4858. // 选中的选项
  4859. const selectedOption = ref('');
  4860. // 获取接口数据并转换为下拉框需要的格式
  4861. const fetchData = async () => {
  4862. try {
  4863. // Simulate API call
  4864. const response = await facilityMachineList();
  4865. if (response.code === 0) {
  4866. // Transform data format
  4867. const options = response.data.map((item) => ({
  4868. label: item,
  4869. value: item
  4870. }));
  4871. dropdownOptions.value = options;
  4872. // Default to selecting the first option
  4873. const defaultOption = options.find(option => option.value.split('|')[0] === JTMC);
  4874. if (defaultOption) {
  4875. selectedOption.value = defaultOption.value;
  4876. } else if (options.length > 0) {
  4877. // 如果 myDefaultValue 不在选项中,选择第一个选项
  4878. selectedOption.value = options[0].value;
  4879. }
  4880. }
  4881. } catch (error) {
  4882. console.error('Error fetching data:', error);
  4883. // Handle the error appropriately
  4884. }
  4885. };
  4886. // formData
  4887. let BZMC=ref()
  4888. let lastCellValue=ref()
  4889. let parts =reactive([])
  4890. const formData3= ref({
  4891. order:'',
  4892. yjno:'',
  4893. gxh:'',
  4894. gxmc:'',
  4895. product_name:'',
  4896. yj_name:'',
  4897. gy_name:'',
  4898. sczl_jtbh:'',
  4899. sczl_bzdh:'',
  4900. sys_id:'',
  4901. sys_rq:'',
  4902. mod_rq:'',
  4903. UniqId:'',
  4904. sczl_bh1:'',
  4905. sczl_bh2:'',
  4906. sczl_bh3:'',
  4907. sczl_bh4:'',
  4908. sczl_bh5:'',
  4909. sczl_bh6:'',
  4910. sczl_bh7:'',
  4911. sczl_bh8:'',
  4912. sczl_bh9:'',
  4913. sczl_bh10:'',
  4914. sczl_bh11:'',
  4915. sczl_name1:'',
  4916. sczl_name2:'',
  4917. sczl_name3:'',
  4918. sczl_name4:'',
  4919. sczl_name5:'',
  4920. sczl_name6:'',
  4921. sczl_name7:'',
  4922. sczl_name8:'',
  4923. sczl_name9:'',
  4924. sczl_name10:'',
  4925. sczl_name11:'',
  4926. sczl_rate1:'',
  4927. sczl_rate2:'',
  4928. sczl_rate3:'',
  4929. sczl_rate4:'',
  4930. sczl_rate5:'',
  4931. sczl_rate6:'',
  4932. sczl_rate7:'',
  4933. sczl_rate8:'',
  4934. sczl_rate9:'',
  4935. sczl_rate10:'',
  4936. 日期:'',
  4937. 流程标牌:'',
  4938. 上机时间:'',
  4939. 下机时间:'',
  4940. 产量:'',
  4941. 制程废品:'',
  4942. 制程次品:'',
  4943. 前工序废:'',
  4944. 来料异常:'',
  4945. Gy0_ms:'',
  4946. Gy0_ls:'',
  4947. 装版总工时:'',
  4948. 打样总工时:'',
  4949. 通电工时:'',
  4950. 定额代号:'',
  4951. 码开始行:'',
  4952. 码结束行:'',
  4953. 码包:'',
  4954. 主电表:'',
  4955. 辅电表:'',
  4956. formattedArray:'',
  4957. 换版类型:'',
  4958. 换版联拼数:'',
  4959. })
  4960. // 自动化生成的字典(可能为空)以及字段
  4961. const formData= ref({
  4962. // 工单编号:'',
  4963. // 印件号:'',
  4964. // 工序名称:'',
  4965. // 产品名称:'',
  4966. // sczl_bh1:'',
  4967. // sczl_bh2:'',
  4968. // sczl_bh3:'',
  4969. // sczl_bh4:'',
  4970. // sczl_bh5:'',
  4971. // sczl_bh6:'',
  4972. // sczl_bh7:'',
  4973. // sczl_bh8:'',
  4974. // sczl_bh9:'',
  4975. // sczl_bh10:'',
  4976. // sczl_name1:'',
  4977. // sczl_name2:'',
  4978. // sczl_name3:'',
  4979. // sczl_name4:'',
  4980. // sczl_name5:'',
  4981. // sczl_name6:'',
  4982. // sczl_name7:'',
  4983. // sczl_name8:'',
  4984. // sczl_name9:'',
  4985. // sczl_name10:'',
  4986. // 班组:'',
  4987. // order:'',
  4988. // yjno:'',
  4989. // product_name:'',
  4990. // gxmc:'',
  4991. })
  4992. const formDatasData= reactive([])
  4993. const formDatas = ref({
  4994. code1:'',
  4995. code2:'',
  4996. code3:'',
  4997. code4:'',
  4998. code5:'',
  4999. code6:'',
  5000. code7:'',
  5001. code8:'',
  5002. code9:'',
  5003. code10:'',
  5004. name1:'',
  5005. name2:'',
  5006. name3:'',
  5007. name4:'',
  5008. name5L:'',
  5009. name6:'',
  5010. name7:'',
  5011. name8:'',
  5012. name9:'',
  5013. name10:'',
  5014. percentage1:'',
  5015. percentage2:'',
  5016. percentage3:'',
  5017. percentage4:'',
  5018. percentage5:'',
  5019. percentage6:'',
  5020. percentage7:'',
  5021. percentage8:'',
  5022. percentage9:'',
  5023. percentage10:'',
  5024. })
  5025. const currentBz ={}
  5026. //班组单击
  5027. const BZhandle = (val) => {
  5028. currentBz.value = val
  5029. formDatas.value = {};
  5030. let sczl_bhkey = ''
  5031. let sczl_namekey = ''
  5032. let percentagekey = ''
  5033. if (currentBz.value[9]) {
  5034. for (let i = 1; i <= 9; i++) {
  5035. sczl_bhkey = `code${i}`
  5036. sczl_namekey = `name${i}`
  5037. percentagekey = `percentage${i}`
  5038. formDatas.value[sczl_bhkey] = '';
  5039. formDatas.value[sczl_namekey] = '';
  5040. formDatas.value[percentagekey] = '';
  5041. }
  5042. formDatas.value.code8 = currentBz.value[9].split(' ')[0];
  5043. formDatas.value.name8 = currentBz.value[9].split(' ')[1]
  5044. formDatas.value.percentage8 = Math.round((parseFloat(currentBz.value[9].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
  5045. for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length - 5, 6); i++) {
  5046. sczl_bhkey = `code${i}`
  5047. sczl_namekey = `name${i}`
  5048. percentagekey = `percentage${i}`
  5049. formDatas.value[sczl_bhkey] = currentBz.value[i - 1].split(' ')[0];
  5050. formDatas.value[sczl_namekey] = currentBz.value[i - 1].split(' ')[1];
  5051. if(isNaN(parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]))){
  5052. formDatas.value[percentagekey] = currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0];
  5053. }else{
  5054. formDatas.value[percentagekey] = Math.round((parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
  5055. }
  5056. }
  5057. } else {
  5058. for (let i = 1; i <= 10; i++) {
  5059. sczl_bhkey = `code${i}`
  5060. sczl_namekey = `name${i}`
  5061. percentagekey = `percentage${i}`
  5062. formDatas.value[sczl_bhkey] = '';
  5063. formDatas.value[sczl_namekey] = '';
  5064. formDatas.value[percentagekey] = '';
  5065. }
  5066. for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length - 4, 6); i++) {
  5067. sczl_bhkey = `code${i}`
  5068. sczl_namekey = `name${i}`
  5069. percentagekey = `percentage${i}`
  5070. formDatas.value[sczl_bhkey] = currentBz.value[i - 1].split(' ')[0];
  5071. formDatas.value[sczl_namekey] = currentBz.value[i - 1].split(' ')[1];
  5072. if(isNaN(parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]))){
  5073. formDatas.value[percentagekey] = currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0];
  5074. }else{
  5075. formDatas.value[percentagekey] = Math.round((parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
  5076. }
  5077. }
  5078. }
  5079. BZMC.value=val.班组号
  5080. };
  5081. /*
  5082. 组员及分配比例规则算法
  5083. */
  5084. const fpsum = ref();
  5085. //自动计算分配系数和
  5086. function updateTotal() {
  5087. //机台班组维护中分配系数字段
  5088. const relevantKeys = ['percentage1', 'percentage2', 'percentage3', 'percentage4', 'percentage5', 'percentage6', 'percentage7'];
  5089. // 转换为百分比
  5090. const values = relevantKeys.map(key => parseFloat(formDatas.value[key], 10) * 100 || 0);
  5091. const sum = values.reduce((sum, value) => sum + value, 0);
  5092. // 四舍五入到2位小数
  5093. fpsum.value = Math.round(sum * 100) / 10000;
  5094. }
  5095. // 在组件初始化时就设置监听
  5096. const setupWatchers = () => {
  5097. for (let i = 1; i <= 8; i++) {
  5098. const codeKey = `code${i}`;
  5099. const nameKey = `name${i}`;
  5100. const percentageKey = `percentage${i}`;
  5101. watch(
  5102. () => formDatas.value[codeKey],
  5103. (newVal) => {
  5104. if (!newVal) {
  5105. formDatas.value[nameKey] = '';
  5106. formDatas.value[percentageKey] = '';
  5107. }
  5108. }
  5109. );
  5110. }
  5111. };
  5112. // 在组件创建时调用
  5113. onMounted(() => {
  5114. setupWatchers();
  5115. });
  5116. //机台班组维护新增
  5117. const addBz = async() => {
  5118. //数据初始化
  5119. updateTotal()
  5120. //判断机台和班组是否为空
  5121. if(!selectedOption.value || !BZMC.value){
  5122. warningres('机台或者班组编号不能为空')
  5123. return;
  5124. }
  5125. const jt = selectedOption.value.split('|')[0]//获取车间数据
  5126. //判断车间是否是【SY、PM】
  5127. const shouldCheckLessThanOne = !jt.includes('SY') && !jt.includes('PM');
  5128. let hasValidMember = false; // 标志变量,用于检查是否有有效的组员
  5129. let hasEmptyBefore = false; // 标记是否已经出现过空项
  5130. const fieldOrder = [1,2,3,4,5,6,7,];
  5131. for (let i = 0; i < fieldOrder.length; i++) {
  5132. const index = fieldOrder[i];
  5133. const codeKey = `code${index}`;
  5134. const nameKey = `name${index}`;
  5135. const percentageKey = `percentage${index}`;
  5136. const hasCode = formDatas.value[codeKey] && formDatas.value[codeKey].trim() !== '';
  5137. const hasName = formDatas.value[nameKey] && formDatas.value[nameKey].trim() !== '';
  5138. const hasPercentage = formDatas.value[percentageKey] !== undefined &&
  5139. formDatas.value[percentageKey] !== null &&
  5140. formDatas.value[percentageKey] !== '';
  5141. // 如果当前项为空,标记hasEmptyBefore为true
  5142. if (!hasCode && !hasName && !hasPercentage) {
  5143. hasEmptyBefore = true;
  5144. continue; // 跳过空项的进一步检查
  5145. }
  5146. // 如果当前项有值,但前面已经有空项了,报错
  5147. if (hasEmptyBefore) {
  5148. errorres(`请按顺序填写组员信息,第${index}项之前不能有空项`);
  5149. return;
  5150. }
  5151. // 检查是否有code或name但没有percentage
  5152. if ((hasCode || hasName) && !hasPercentage) {
  5153. errorres(`第${index}项的工号/姓名和分配系数必须同时填写`);
  5154. return;
  5155. }
  5156. // 检查percentage是否有效
  5157. const percentageValue = parseFloat(formDatas.value[percentageKey]);
  5158. if (isNaN(percentageValue) || percentageValue <= 0 || percentageValue > 1) {
  5159. errorres(`第${index}项分配系数必须在0到1之间`);
  5160. return;
  5161. }
  5162. hasValidMember = true;
  5163. }
  5164. // 循环结束后检查标志变量
  5165. if (!hasValidMember) {
  5166. errorres('至少需要填写一个有效的组员和分配系数');
  5167. return;
  5168. } else if (shouldCheckLessThanOne && fpsum.value < 1) {
  5169. errorres('分配系数相加不能小于1');
  5170. return;
  5171. } else if(fpsum.value > 1) {
  5172. errorres('分配系数相加不能大于1');
  5173. return;
  5174. }
  5175. // 班组维护->班组添加【接口】
  5176. const response = await MachineTeamAdd({
  5177. sczl_jtbh: selectedOption.value.split('|')[0],
  5178. sczl_bzdh: BZMC.value,
  5179. sczl_bh1: formDatas.value.code1,
  5180. sczl_bh2: formDatas.value.code2,
  5181. sczl_bh3: formDatas.value.code3,
  5182. sczl_bh4: formDatas.value.code4,
  5183. sczl_bh5: formDatas.value.code5,
  5184. sczl_bh6: formDatas.value.code6,
  5185. sczl_bh7: formDatas.value.code7,
  5186. sczl_bh8: formDatas.value.code10,
  5187. sczl_bh9: formDatas.value.code9,
  5188. sczl_bh10: formDatas.value.code8,
  5189. sczl_rate1: formDatas.value.percentage1,
  5190. sczl_rate2: formDatas.value.percentage2,
  5191. sczl_rate3: formDatas.value.percentage3,
  5192. sczl_rate4: formDatas.value.percentage4,
  5193. sczl_rate5: formDatas.value.percentage5,
  5194. sczl_rate6: formDatas.value.percentage6,
  5195. sczl_rate7: formDatas.value.percentage7,
  5196. sczl_rate8: formDatas.value.percentage10,
  5197. sczl_rate9: formDatas.value.percentage9,
  5198. sczl_rate10: formDatas.value.percentage8,
  5199. sys_id: '【'+MAC.value+'/'+JTMC+'】'
  5200. })
  5201. if (response.code === 0) {
  5202. FacilityProduction()
  5203. successres('添加成功')
  5204. }
  5205. }
  5206. //机台班组维护更新当前班组
  5207. const selectBz = async() => {
  5208. updateTotal()
  5209. if(!selectedOption.value || !BZMC.value){
  5210. warningres('机台或者班组不能为空')
  5211. return;
  5212. }
  5213. const jt = selectedOption.value.split('|')[0]//获取车间数据
  5214. //判断车间分配比例【SY、PM】
  5215. const shouldCheckLessThanOne = !jt.includes('SY') && !jt.includes('PM');
  5216. const relevantKeys = ['percentage1', 'percentage2', 'percentage3', 'percentage4', 'percentage5', 'percentage6', 'percentage7', 'percentage8'];
  5217. const values = relevantKeys.reduce((acc, key) => {
  5218. const value = parseFloat(formDatas.value[key], 10);
  5219. if (!isNaN(value)) {
  5220. acc.push(value); // 只有当 value 不是 NaN 时才添加到数组中
  5221. }
  5222. return acc;
  5223. }, []); // 初始化为空数组
  5224. console.log("数值", values);
  5225. const hasInvalidValue = values.some(value => value <= 0 || value > 1);
  5226. console.log(hasInvalidValue);
  5227. if (hasInvalidValue) {
  5228. errorres('某人分配系数有误')
  5229. return;
  5230. }
  5231. if (fpsum.value > 1) {
  5232. errorres('分配系数相加不能大于1')
  5233. return;
  5234. }
  5235. // 只有当 shouldCheckLessThanOne 为 true 时才检查 fpsum.value < 1
  5236. if (shouldCheckLessThanOne && fpsum.value < 1) {
  5237. errorres('分配系数相加不能小于1')
  5238. return;
  5239. }
  5240. if(currentBz.value){
  5241. BZMC.value = currentBz.value.班组号
  5242. let sczl_bhkey=''
  5243. let sczl_namekey=''
  5244. if (currentBz.value[9]) {
  5245. for (let i = 1; i <= 9; i++) {
  5246. sczl_bhkey=`sczl_bh${i}`
  5247. sczl_namekey=`sczl_name${i}`
  5248. formData.value[sczl_bhkey] = '';
  5249. formData.value[sczl_namekey] = '';
  5250. }
  5251. formData.value.sczl_bh10 = currentBz.value[9].split(' ')[0];
  5252. formData.value.sczl_name10=currentBz.value[9].split(' ')[1]
  5253. for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length-5, 6); i++) {
  5254. sczl_bhkey=`sczl_bh${i}`
  5255. sczl_namekey=`sczl_name${i}`
  5256. console.log(currentBz.value[i-1].split(' '))
  5257. formData.value[sczl_bhkey] = currentBz.value[i-1].split(' ')[0];
  5258. formData.value[sczl_namekey] = currentBz.value[i-1].split(' ')[1];
  5259. classbz.value[i-1]=currentBz.value[i-1].split(' ')[0]
  5260. }
  5261. classbz.value.push(currentBz.value[9].split(' ')[0])
  5262. formData.value.class=classbz.value.join(',')
  5263. console.log(formData.value)
  5264. }else{
  5265. for (let i = 1; i <= 10; i++) {
  5266. sczl_bhkey=`sczl_bh${i}`
  5267. sczl_namekey=`sczl_name${i}`
  5268. formData.value[sczl_bhkey] = '';
  5269. formData.value[sczl_namekey] = '';
  5270. }
  5271. for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length-4, 6); i++) {
  5272. sczl_bhkey=`sczl_bh${i}`
  5273. sczl_namekey=`sczl_name${i}`
  5274. console.log(currentBz.value[i-1].split(' '))
  5275. formData.value[sczl_bhkey] = currentBz.value[i-1].split(' ')[0];
  5276. formData.value[sczl_namekey] = currentBz.value[i-1].split(' ')[1];
  5277. classbz.value[i-1]=currentBz.value[i-1].split(' ')[0]
  5278. }
  5279. formData.value.class=classbz.value.join(',')
  5280. }
  5281. const response = await setMachineTeam({
  5282. machine: JTMC.split("#")[0],
  5283. order:formData.value.工单编号,
  5284. yjno:formData.value.印件号,
  5285. gy_name:formData.value.工序名称,
  5286. sczl_bzdh:BZMC.value,
  5287. status:'生产',
  5288. production_now:0,
  5289. production_all:0,
  5290. team_id:currentBz.value.ID
  5291. })
  5292. if(response.code===0){
  5293. detailShow.value = false
  5294. successres('成功')
  5295. FacilityProduction()
  5296. }
  5297. }
  5298. }
  5299. const delBz = async() => {
  5300. const UniqId = currentBz.value.ID
  5301. if(currentBz.value){
  5302. ElMessageBox.confirm('确定要删除吗?', '提示', {
  5303. confirmButtonText: '确定',
  5304. cancelButtonText: '取消',
  5305. type: 'warning'
  5306. }).then(() => {
  5307. console.log(UniqId)
  5308. const response = teamDel({UniqId:UniqId})
  5309. response.then(result => {
  5310. console.log(result)
  5311. if(result.code===0){
  5312. let messageType = 'success';
  5313. // 检查 result.msg 是否包含特定的错误提示
  5314. if (result.msg.includes('无法删除正在生产的班组资料,请先切换班组')) {
  5315. messageType = 'error';
  5316. }
  5317. ElMessage({
  5318. type: messageType,
  5319. message: result.msg
  5320. })
  5321. console.log(response)
  5322. FacilityProduction()
  5323. }
  5324. });
  5325. })
  5326. currentBz.value={}
  5327. }
  5328. }
  5329. // ============== 表格控制部分结束 ===============
  5330. // 获取需要的字典 可能为空 按需保留
  5331. const setOptions = async () =>{}
  5332. // 获取需要的字典 可能为空 按需保留
  5333. setOptions()
  5334. // 多选数据
  5335. const multipleSelection = ref([])
  5336. const yinbanSelection = ref([])
  5337. // 多选
  5338. const handleSelectionChange = (val) => {
  5339. multipleSelection.value = val
  5340. }
  5341. const zdtreeType = ref(false)
  5342. const selectData = ref([])
  5343. const showsTable = (val,tab) => {}
  5344. // 点击showTable 行数据时出发点击事件
  5345. const showTable = (val,tab) => {
  5346. }
  5347. // 删除行
  5348. const deleteRow = (row) => {
  5349. ElMessageBox.confirm('确定要删除吗?', '提示', {
  5350. confirmButtonText: '确定',
  5351. cancelButtonText: '取消',
  5352. type: 'warning'
  5353. }).then(() => {
  5354. deleteCompanyFunc(row)
  5355. })
  5356. }
  5357. // 批量删除控制标记
  5358. const deleteVisible = ref(false)
  5359. // 多选删除
  5360. const onDelete = async() => {
  5361. const ids = []
  5362. if (multipleSelection.value.length === 0) {
  5363. warningres('请选择要删除的数据')
  5364. return
  5365. }
  5366. multipleSelection.value &&
  5367. multipleSelection.value.map(item => {
  5368. ids.push(item.ID)
  5369. })
  5370. const res = await deleteCompanyByIds({ ids })
  5371. if (res.code === 0) {
  5372. successres('删除成功')
  5373. if (tableData.value.length === ids.length && page.value > 1) {
  5374. page.value--
  5375. }
  5376. deleteVisible.value = false
  5377. getTableData()
  5378. }
  5379. }
  5380. // 行为控制标记(弹窗内部需要增还是改)
  5381. const type = ref('')
  5382. // 更新行
  5383. const updateCompanyFunc = async(row) => {
  5384. const res = await findCompany({ ID: row.ID })
  5385. type.value = 'update'
  5386. if (res.code === 0) {
  5387. formData.value = res.data.recompany
  5388. dialogFormVisible.value = true
  5389. }
  5390. }
  5391. const rowws = ref(null)
  5392. const wangongbh = ref(null)
  5393. const _Gd_gdbh = ref(null)
  5394. const _Gd_yjno = ref(null)
  5395. //设备作业清单单机
  5396. const yjupdateCompanyFunc = async(row) => {
  5397. console.log(row)
  5398. _Gd_gdbh.value = row['工单编号|质量信息'].replace(/\|$/, '')
  5399. _Gd_yjno.value = row['印件号']
  5400. rowws.value = row
  5401. wangongbh.value = row['工单编号|质量信息'].replace(/\|$/, '')
  5402. console.log("通过 "+row['工单编号|质量信息'].replace(/\|$/, '')+" 获取右上角数据↓↓↓↓↓")
  5403. const res = await Procedure({ Gd_gdbh: row['工单编号|质量信息'].replace(/\|$/, '') })
  5404. console.log(res)
  5405. selectData.value = res.data;
  5406. }
  5407. const sjsbzyqdCompanyFunc = async(row) => {
  5408. location.reload();
  5409. setMachineTeams(rowws.value)
  5410. successres('成功')
  5411. }
  5412. //设备作业清单右键
  5413. const yjonRightClick = async(row) => {
  5414. console.log(rowws.value)
  5415. if(rowws.value === null || rowws.value === ''){
  5416. warningres('请选择 设备作业清单工单后,再操作此功能')
  5417. }else{
  5418. ElMessageBox.confirm('确定切换当前工单为工作工单吗?', '提示', {
  5419. confirmButtonText: '确定',
  5420. cancelButtonText: '取消',
  5421. type: 'warning'
  5422. }).then(() => {
  5423. location.reload();
  5424. setMachineTeams(rowws.value)
  5425. })
  5426. }
  5427. }
  5428. const setMachineTeams = async(row) => {
  5429. const res = await setMachineTeam({
  5430. machine: JTMC.split("#")[0],
  5431. order:row['工单编号|质量信息'].split('|')[0],
  5432. yjno:row['印件资料'].split('-')[0],
  5433. gy_name:row['工序名称'],
  5434. sczl_bzdh:BZMC.value,
  5435. status:'生产',
  5436. production_now:0,
  5437. production_all:0,
  5438. team_id:formData.value.班组Id
  5439. })
  5440. MachineWorkOrderEdits(row)
  5441. if (res.code === 0) {
  5442. successres('成功')
  5443. }
  5444. }
  5445. const MachineWorkOrderEdits = async(row) => {
  5446. const res = await MachineWorkOrderEdit({
  5447. UniqId:row.UniqId,
  5448. machine: JTMC,
  5449. })
  5450. console.log(res)
  5451. if (res.code === 0) {
  5452. SetMachineStatus(row)
  5453. }
  5454. }
  5455. //设置机台状态
  5456. const SetMachineStatus = async (row) => {
  5457. let classString = '';
  5458. const sczl_bh_values = [formData.value.sczl_bh1, formData.value.sczl_bh2, formData.value.sczl_bh3, formData.value.sczl_bh4, formData.value.sczl_bh5, formData.value.sczl_bh6];
  5459. for (let i = 0; i < sczl_bh_values.length; i++) {
  5460. if (sczl_bh_values[i]) {
  5461. classString += sczl_bh_values[i] + ',';
  5462. }
  5463. }
  5464. // 去除最后一个逗号
  5465. classString = classString.slice(0, -1);
  5466. console.log("获取"+row['印件号'])
  5467. // return false;
  5468. const response = await setMachineStatus({
  5469. machine: JTMC.split("#")[0],
  5470. order:row['工单编号|质量信息'].split('|')[0],
  5471. yjno:row['印件号'],
  5472. gy_name:row['工序名称'],
  5473. status:'生产',
  5474. production_now:0,
  5475. production_all:0,
  5476. class:classString
  5477. });
  5478. if (response.code === 0) {
  5479. FacilityProduction(JTMC)
  5480. }
  5481. }
  5482. const EquipmentSchedulingEdits = async(row) => {
  5483. const today = new Date();
  5484. const year = today.getFullYear();
  5485. const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
  5486. const day = String(today.getDate()).padStart(2, '0');
  5487. const hours = String(today.getHours()).padStart(2, '0');
  5488. const minutes = String(today.getMinutes()).padStart(2, '0');
  5489. const seconds = String(today.getSeconds()).padStart(2, '0');
  5490. const currentDate = `${year}-${month}-${day}`;
  5491. const currentTime = `${year}-${month}-${day} ${hours}:${minutes}`;
  5492. const currenttime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  5493. console.log(row)
  5494. const res = await EquipmentSchedulingEdit([{
  5495. capacity:row.工序产能,
  5496. ProductionHours:row.计划工时,
  5497. AuxiliaryHours:row.装版时数,
  5498. shift:row.班组,
  5499. remark:row.排产备注,
  5500. start:row.最早开工时间,
  5501. projectTime:currentTime,
  5502. UniqId:row.UniqId
  5503. }])
  5504. if (res.code === 0) {
  5505. FacilityProduction()
  5506. }
  5507. }
  5508. // 删除行
  5509. const deleteCompanyFunc = async (row) => {
  5510. const res = await deleteCompany({ ID: row.ID })
  5511. if (res.code === 0) {
  5512. successres('删除成功')
  5513. if (tableData.value.length === 1 && page.value > 1) {
  5514. page.value--
  5515. }
  5516. getTableData()
  5517. }
  5518. }
  5519. // 弹窗控制标记
  5520. const dialogFormVisible = ref(false)
  5521. const dianjianVisible = ref(false)
  5522. const zhichengVisible = ref(false)
  5523. // 查看详情控制标记
  5524. const detailShow = ref(false)
  5525. const bzData = reactive([])
  5526. // 打开详情弹窗
  5527. const openDetailShow = () => {
  5528. detailShow.value = true
  5529. }
  5530. // 打开详情
  5531. const getDetails = async (row) => {
  5532. // 打开弹窗
  5533. const res = await findCompany({ ID: row.ID })
  5534. if (res.code === 0) {
  5535. formData.value = res.data.recompany
  5536. openDetailShow()
  5537. }
  5538. }
  5539. // 关闭详情弹窗
  5540. const closeDetailShow = () => {
  5541. detailShow.value = false
  5542. }
  5543. // 打开弹窗
  5544. const openDialog = () => {}
  5545. let drzcData=[]
  5546. let columnNames=[]
  5547. //当日制程检验记录
  5548. const FacilityInspect = async () => {
  5549. const response = await facilityInspect({machine:'JY01#',date:'2024-01-04'});
  5550. console.log(response)
  5551. if(response.code==0){
  5552. // 提取 inspectiontime 作为列名
  5553. // Extract inspectiontime as columnNames
  5554. columnNames = response.data.inspectiontime;
  5555. // Populate drzcData with row data
  5556. for (const key in response.data) {
  5557. if (key !== 'inspectiontime') {
  5558. const item = response.data[key];
  5559. const rowData = {
  5560. '工单编号': item['工单编号'],
  5561. '印件号': item['印件号'],
  5562. '工序名称': item['工序名称'],
  5563. '检验项目': item['检验项目']
  5564. };
  5565. // Initialize time columns with '—'
  5566. columnNames.forEach(time => {
  5567. rowData[time] = '';
  5568. });
  5569. // Split inspectresult and fill the corresponding time columns
  5570. const results = item['inspectresult'].split(',');
  5571. results.forEach(result => {
  5572. if (columnNames.includes(result)) {
  5573. rowData[result] = '√';
  5574. }else{rowData[result] = ''}
  5575. });
  5576. // Add the row data to drzcData
  5577. drzcData.push(rowData);
  5578. }
  5579. }
  5580. console.log(drzcData);
  5581. }
  5582. }
  5583. // 关闭弹窗
  5584. const closeDialog = () => {
  5585. chanliangVisible.value=false
  5586. }
  5587. const equipmentCode=ref('JY01')
  5588. const equipmentName=ref('海德堡对开')
  5589. const workOrder=ref('2312117')
  5590. const number=ref('1907')
  5591. // 弹窗确定
  5592. const enterDialog = async () => {
  5593. elFormRef.value?.validate( async (valid) => {
  5594. if (!valid) return
  5595. let res
  5596. switch (type.value) {
  5597. case 'create':
  5598. res = await createCompany(formData.value)
  5599. break
  5600. case 'update':
  5601. res = await updateCompany(formData.value)
  5602. break
  5603. default:
  5604. res = await createCompany(formData.value)
  5605. break
  5606. }
  5607. if (res.code === 0) {
  5608. successres('创建/更改成功')
  5609. closeDialog()
  5610. getTableData()
  5611. }
  5612. })
  5613. }
  5614. // =========== 流程单查询 ===========
  5615. const pd_lcdlist = ref(false);
  5616. const pd_lcdformData = reactive({
  5617. gdbh: '',
  5618. code: '',
  5619. name: '',
  5620. yjno: '',
  5621. });
  5622. // 流程单查询按钮
  5623. const processList = ref([]);
  5624. const pd_lcdlistonClick = async () => {
  5625. console.log(formData)
  5626. if(_Gd_gdbh.value === '' || _Gd_gdbh.value === null){
  5627. pd_lcdformData['gdbh'] = formData.value.工单编号;
  5628. pd_lcdformData['yjno'] = formData.value.印件号;
  5629. warningres('请选择具体的工单,在进行操作')
  5630. return false;
  5631. }else{
  5632. pd_lcdformData['gdbh'] = _Gd_gdbh.value;
  5633. pd_lcdformData['yjno'] = _Gd_yjno.value;
  5634. }
  5635. pd_lcdlist.value = true;
  5636. processList.value = []
  5637. _getOrderProcessLeft_list();
  5638. }
  5639. const pd_lcdProductValue = async () => {
  5640. _getOrderProcessLeft_list();
  5641. }
  5642. const pd_lcd_treeData = ref([]);
  5643. const _getOrderProcessLeft_list = async () => {
  5644. const order = pd_lcdformData['gdbh'];
  5645. const yjno = pd_lcdformData['yjno']
  5646. // console.log(order)
  5647. try {
  5648. //5.1流程单查询-工单工序生产进程菜单栏
  5649. const getOrderProcessLeft_list = await getOrderProcessLeft({ order:order,yjno:yjno});
  5650. console.log(getOrderProcessLeft_list)
  5651. pd_lcdformData['code'] = getOrderProcessLeft_list.data.Gd_info['code'];
  5652. pd_lcdformData['name'] = getOrderProcessLeft_list.data.Gd_info['name'];
  5653. pd_lcd_treeData.value = [{
  5654. label: order + '-' + getOrderProcessLeft_list.data.Gd_info['name'],
  5655. // label: order + '-' + getOrderProcessLeft_list.data.Gd_info['code'] + '-' + getOrderProcessLeft_list.data.Gd_info['name'],
  5656. value: undefined,
  5657. children: []
  5658. }]
  5659. const newData = [];
  5660. for (let key in getOrderProcessLeft_list.data.Gy_info) {
  5661. let temp = getOrderProcessLeft_list.data.Gy_info[key];
  5662. let concatenatedValue = `${temp.Gy0_yjno}-${temp.Gy0_gxh} ---> ${temp.Gy0_gxmc}`;
  5663. newData.push({ label: concatenatedValue,value: temp.Gy0_gxh });
  5664. }
  5665. pd_lcd_treeData.value[0].children = newData;
  5666. //5.2流程单查询-获取工单工序生产进程右侧【进入页面默认显示第一个】
  5667. const getOrderProcessRight_list = await getOrderProcessRight({order:order, gxNo:newData[0].value,yjno:yjno});
  5668. processList.value = getOrderProcessRight_list.data
  5669. } catch (error) {
  5670. console.error(error);
  5671. }
  5672. };
  5673. const pd_lcd_handleNodeClick = async (node) => {
  5674. if (node.value === undefined) return
  5675. const order = pd_lcdformData['gdbh'];
  5676. const yjno = pd_lcdformData['yjno'];
  5677. ////5.2流程单查询-获取工单工序生产进程右侧
  5678. const getOrderProcessRight_list = await getOrderProcessRight({order:order, gxNo:node.value,yjno:yjno});
  5679. console.log(getOrderProcessRight_list)
  5680. processList.value = getOrderProcessRight_list.data
  5681. };
  5682. // 流程单查询退出
  5683. const pd_lcdCancel = async () => {
  5684. pd_lcdlist.value = false;
  5685. }
  5686. /*
  5687. 工单生产批次信息查询
  5688. */
  5689. const scpconlist = ref(false);
  5690. // 实现scpconClick方法,控制弹窗显示
  5691. const scpconClick = () => {
  5692. scpconlist.value = true
  5693. }
  5694. // 弹窗关闭前的处理函数
  5695. const handleClose = () => {
  5696. scpconlist.value = false
  5697. }
  5698. // 班组人员及分配比例
  5699. const bzryplanUsageCellClass = ({row, column, rowIndex, columnIndex}) =>{
  5700. if(formData.value['班组Id'] === row.ID){
  5701. return 'back-color-row';
  5702. }
  5703. }
  5704. // 组员及分配比例
  5705. const blplanUsageCellClass = ({row, column, rowIndex, columnIndex}) =>{
  5706. if (column.property === '员工编号' || column.property === 'ygxm') {
  5707. return 'plan-usage-low';
  5708. }
  5709. }
  5710. //设备作业清单 正在生产中 背景颜色
  5711. const sbzyqdsatusCellClass = ({row, column, rowIndex, columnIndex}) =>{
  5712. if (row.status === 1) {
  5713. return 'status-plan-usage-low';
  5714. }
  5715. }
  5716. const GetDedhtreeData = reactive([]);
  5717. const GetDedhVisible = ref(false);
  5718. const table_fplb = ref(null); // el-tree 的 ref
  5719. const getDedhsubmit = async () => {
  5720. try {
  5721. const response = await JPproductionDedh({
  5722. sczl_jtbh: `${formData.value['机台号'].replace(/#+$/, '')}#`,
  5723. });
  5724. if (response.code === 0) {
  5725. const data = response.data;
  5726. // 处理单条记录的情况,直接赋值
  5727. if (!Array.isArray(data) && !data.bh_mc) {
  5728. JPformdata['定额代号'] = data.sys_bh;
  5729. return;
  5730. }
  5731. // 定义递归函数,用于构造树形结构
  5732. const buildTree = (node) => {
  5733. const treeNode = {
  5734. id: node.sys_bh,
  5735. label: node.sys_bh + (node.sys_mc ? `【${node.sys_mc}】` : ""), // 显示内容
  5736. children: [],
  5737. key: node.Key_ || node.sys_bh, // 保留 key 属性,用于操作
  5738. };
  5739. // 如果有子节点,递归处理
  5740. if (node.bh_mc && Array.isArray(node.bh_mc)) {
  5741. treeNode.children = node.bh_mc.map((childNode) => buildTree(childNode));
  5742. }
  5743. return treeNode;
  5744. };
  5745. // 处理数组数据结构,生成树形结构并展示弹窗
  5746. if (Array.isArray(data)) {
  5747. GetDedhtreeData.splice(
  5748. 0,
  5749. GetDedhtreeData.length,
  5750. ...data.map((item) => ({
  5751. id: item.sys_bh,
  5752. label: item.sys_bh + (item.sys_mc ? `【${item.sys_mc}】` : ""),
  5753. children: [],
  5754. key: item.sys_bh,
  5755. }))
  5756. );
  5757. GetDedhVisible.value = true; // 展示弹窗
  5758. }
  5759. // 处理嵌套的树形结构数据
  5760. if (!Array.isArray(data) && data.bh_mc) {
  5761. GetDedhtreeData.splice(0, GetDedhtreeData.length, buildTree(data));
  5762. GetDedhVisible.value = true; // 展示弹窗
  5763. }
  5764. // 使用 nextTick 确保树形组件渲染完成后执行操作
  5765. nextTick(() => {
  5766. const tree = table_fplb.value; // 获取树形组件实例
  5767. if (tree) {
  5768. const firstNode = tree.getNode(0); // 获取树形的第一个节点
  5769. if (firstNode) {
  5770. firstNode.el.focus(); // 聚焦到第一个节点
  5771. }
  5772. }
  5773. });
  5774. }
  5775. } catch (error) {
  5776. console.error("获取数据失败:", error);
  5777. }
  5778. };
  5779. //键盘事件
  5780. const handleTreeKeydown = (event) => {
  5781. const tree = table_fplb.value; // 获取树实例
  5782. if (!tree) {
  5783. console.error("树组件未加载");
  5784. return;
  5785. }
  5786. const focusedElement = document.activeElement;
  5787. const focusedNodeId = focusedElement?.getAttribute("data-key"); // 获取 DOM 的 data-key 属性
  5788. if (event.keyCode === 13 && focusedNodeId) { // 判断是否是回车键
  5789. tree.setCurrentKey(focusedNodeId); // 设置当前节点为选中
  5790. tree.$nextTick(() => {
  5791. const currentNode = tree.getCurrentNode(); // 获取当前选中的节点
  5792. if (!currentNode) {
  5793. console.warn("没有选中的节点");
  5794. return;
  5795. }
  5796. // 清除上一次的选中状态
  5797. clearPreviousSelection(tree);
  5798. // 收起所有其他节点
  5799. Object.keys(tree.store.nodesMap).forEach((key) => {
  5800. tree.store.nodesMap[key].expanded = false; // 收起所有节点
  5801. });
  5802. // 展开当前节点
  5803. tree.store.nodesMap[currentNode.id].expanded = true;
  5804. // 如果当前节点有子节点,选中第一个子节点
  5805. if (currentNode.children && currentNode.children.length > 0) {
  5806. const firstChild = currentNode.children[0];
  5807. if (firstChild) {
  5808. const firstChildKey = firstChild.id.toString();
  5809. tree.setCurrentKey(firstChildKey); // 设置第一个子节点为选中
  5810. setTimeout(() => {
  5811. const firstChildDom = tree.$el.querySelector(`[data-key="${firstChildKey}"]`);
  5812. if (firstChildDom) {
  5813. firstChildDom.focus();
  5814. firstChildDom.scrollIntoView({ block: "nearest" });
  5815. }
  5816. });
  5817. }
  5818. } else {
  5819. console.log("当前子节点:", currentNode.label);
  5820. // 如果节点没有子节点,打印节点名称
  5821. JPformdata['定额代号'] = currentNode.label.split("【")[0];
  5822. GetDedhVisible.value = false;
  5823. }
  5824. });
  5825. } else if (event.keyCode === 38 || event.keyCode === 40) { // 上下箭头键
  5826. const currentNode = tree.getCurrentNode();
  5827. if (currentNode) {
  5828. const currentNodeDom = tree.$el.querySelector(`[data-key="${currentNode.id}"]`);
  5829. if (currentNodeDom) {
  5830. currentNodeDom.focus();
  5831. }
  5832. }
  5833. }
  5834. };
  5835. // 清除之前的选中状态
  5836. const clearPreviousSelection = (tree) => {
  5837. const selectedNodes = tree.getCheckedNodes();
  5838. selectedNodes.forEach(node => {
  5839. tree.setChecked(node, false);
  5840. });
  5841. tree.setCurrentKey(null);
  5842. };
  5843. // // 弹出框键盘事件
  5844. // const ent = (event) => {
  5845. // if (document.activeElement.id === "tableFplb") {
  5846. // if (table_fplb.value) {
  5847. // const tree = table_fplb.value?.$el;
  5848. // if (tree) {
  5849. // const node = tree.querySelector("[data-key]");
  5850. // if (event.keyCode === 13) {
  5851. // // GetDedhVisible.value = false;
  5852. // }
  5853. // if (node) {
  5854. // node.scrollIntoView({ block: "nearest" }); // 确保节点可见
  5855. // node.focus(); // 确保焦点正确
  5856. // }
  5857. // }
  5858. // }
  5859. // }
  5860. // };
  5861. //点击事件
  5862. const handleFplbClick = (nodeData, node, component) => {
  5863. //存放当前节点的nodeId
  5864. if (!nodeData.children || nodeData.children.length === 0) {
  5865. // 如果节点没有子节点,打印节点名称
  5866. JPformdata['定额代号']= nodeData.label.split("【")[0];
  5867. dbformData.value.定额代号 = nodeData.label.split("【")[0];
  5868. GetDedhVisible.value = false;
  5869. }
  5870. };
  5871. </script>
  5872. <style scoped>
  5873. /* 设备作业清单 正在生产中 背景颜色 */
  5874. :deep(.status-plan-usage-low ) {
  5875. background: yellow !important;
  5876. }
  5877. .JKWTree-container {
  5878. display: flex;
  5879. }
  5880. .JKWTree-tree {
  5881. width: 300px;
  5882. background-color: #fff;
  5883. padding: 10px;
  5884. margin-right: 20px;
  5885. }
  5886. .JKWTree-tree h3 {
  5887. font-size: 15px;
  5888. font-weight: 700;
  5889. margin: 10px 0;
  5890. }
  5891. .JKWTree-content {
  5892. flex: 1;
  5893. }
  5894. .groupbox
  5895. {margin:10px;
  5896. width:500px;
  5897. height:500px;
  5898. border:thin solid black;
  5899. padding:10px}
  5900. .grouptitle
  5901. {display:block;
  5902. margin-top:-24px;
  5903. margin-left:20px;
  5904. width:150px;
  5905. text-align:center;
  5906. background-color:white}
  5907. .gva-search-box{
  5908. font-size:1.5vh;
  5909. color:red;
  5910. font-weight: bold;
  5911. }
  5912. .bt {
  5913. margin-top: 1vh;
  5914. margin-bottom: 10px;
  5915. height: 5vh;
  5916. width: 9vh;
  5917. font-size:1.6vh;
  5918. color:black;
  5919. font-weight: bold;
  5920. }
  5921. .gva-table-box{
  5922. font-size: 15px;
  5923. }
  5924. .red-input input {
  5925. color: red !important;
  5926. }
  5927. .buleaa-input input{
  5928. color: red !important;
  5929. }
  5930. /*!* 流程单查询按钮颜色控制未完成*/
  5931. :deep(.custom-button.el-button--info) {
  5932. background-color: palegreen !important;
  5933. color: #155724;
  5934. font-size: 20px;
  5935. border-color: #c3e6cb;
  5936. }
  5937. /* 已完成 */
  5938. :deep(.custom-button.el-button--danger) {
  5939. background-color: rgb(236, 135, 135) !important;
  5940. color: #721c24;
  5941. font-size: 20px;
  5942. border-color: #f5c6cb;
  5943. }
  5944. /*!* 选中某行时的背景色*!font-weight: bold;*/
  5945. :deep(.el-table__body tr.current-row)>td {
  5946. background: #ff80ff !important;
  5947. }
  5948. /*input*/
  5949. ::v-deep .el-input__inner {
  5950. color: #000000 !important;
  5951. font-weight: bold;
  5952. }
  5953. ::v-deep .el-input__wrapper {
  5954. border: 1px #00000b8f solid !important;
  5955. }
  5956. ::v-deep .el-form-item__label {
  5957. color: #000000 !important;
  5958. font-weight: bold;
  5959. font-size: 12px;
  5960. }
  5961. ::v-deep .el-tabs__item {
  5962. /*color: #000000 !important;*/
  5963. font-weight: bold;
  5964. }
  5965. ::v-deep .el-dialog__headerbtn {
  5966. width: 100px;
  5967. height: 85px;
  5968. }
  5969. ::v-deep .el-tabs__item {
  5970. /*background-color: #4d70ff;*/
  5971. /*color: white;*/
  5972. }
  5973. :deep(.plan-usage-low div) {
  5974. color: blue !important;
  5975. font-size: 16px;
  5976. font-weight: bold;
  5977. }
  5978. ::v-deep .el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
  5979. color: white; /* 文字颜色 */
  5980. background-color: #4d70ff; /* 背景颜色 */
  5981. }
  5982. /*::v-deep .el-table__header .el-table_2_column_3{*/
  5983. /* border-right: 2px #000000 solid;*/
  5984. /*}*/
  5985. ::v-deep .el-table__header .el-table_2_column_3{
  5986. border-right: 2px #000000 solid;
  5987. }
  5988. ::v-deep .el-table__header .el-table_2_column_4{
  5989. border-right: 2px #000000 solid;
  5990. }
  5991. ::v-deep .el-table__header .el-table_2_column_5{
  5992. border-right: 2px #000000 solid;
  5993. }
  5994. ::v-deep .el-table__header .el-table_2_column_6{
  5995. border-right: 2px #000000 solid;
  5996. }
  5997. ::v-deep .el-table__header .el-table_2_column_7{
  5998. border-right: 2px #000000 solid;
  5999. }
  6000. ::v-deep .el-table__header .el-table_2_column_8{
  6001. border-right: 2px #000000 solid;
  6002. }
  6003. ::v-deep .el-table__header .el-table_2_column_9{
  6004. border-right: 2px #000000 solid;
  6005. }
  6006. ::v-deep .el-table__header .el-table_2_column_10{
  6007. border-right: 2px #000000 solid;
  6008. }
  6009. ::v-deep .el-table__header .el-table_2_column_11{
  6010. border-right: 2px #000000 solid;
  6011. }
  6012. /*::v-deep .el-table_2_column_3{*/
  6013. /* border-right: 1px #000000 solid;*/
  6014. /*}*/
  6015. /*::v-deep .el-table_2_column_4{*/
  6016. /* border-right: 1px #000000 solid;*/
  6017. /*}*/
  6018. :deep(.plan-usage-low div) {
  6019. color: blue !important;
  6020. font-size: 16px;
  6021. font-weight: bold;
  6022. }
  6023. /* tree组件背景高亮 */
  6024. :deep(.el-tree-node:focus > .el-tree-node__content){
  6025. background: #ff80ff !important;
  6026. }
  6027. :deep(.my-custom-messagebox) {
  6028. background-color: #ff0000 !important; /* 背景色 */
  6029. /* 标题样式 */
  6030. .el-message-box__title {
  6031. color: #1e90ff !important;
  6032. font-size: 20px !important;
  6033. }
  6034. /* 内容样式 */
  6035. .el-message-box__content {
  6036. color: #df1e1e !important;
  6037. font-size: 16px !important;
  6038. }
  6039. /* 按钮样式 */
  6040. .el-message-box__btns .el-button {
  6041. font-size: 14px !important;
  6042. }
  6043. }
  6044. /* 表不格选中表变文字字体 */
  6045. :deep(.el-table td .cell) {
  6046. color: blue;
  6047. font-size: 12px;
  6048. }
  6049. /* 表格选中表变文字字体 */
  6050. :deep(.el-table__body tr.current-row)>td .el-tooltip {
  6051. font-size: 16px;
  6052. color: black;
  6053. }
  6054. /* 默认表格边框 */
  6055. :deep(.el-table__body td.el-table__cell) {
  6056. border: 1px solid #000000;
  6057. }
  6058. </style>