| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387 |
- <template>
- <div>
- <!-- 按钮区域 -->
- <header>
- <el-button type="primary" class="bt" @click="onBZ">班组维护</el-button>
- <el-button type="primary" class="bt" @click="onzhicheng" >制程检验</el-button>
- <el-button type="primary" class="bt" @click="onxuncha">管理巡查</el-button>
- <el-button type="primary" class="bt" @click="ondianjian">设备点检</el-button>
- <el-button type="primary" class="bt" @click="onyinban">印版领退</el-button>
- <!-- <el-button type="primary" @click="onstatus" >设置机台状态</el-button> -->
- <el-button type="primary" class="bt" @click="oncomplaints" >客诉记录</el-button>
- <el-button type="primary" class="bt" @click="onClear" >换型清场</el-button>
- <el-button type="primary" class="bt" @click="pd_gdprintonClick" >工单打印</el-button>
- <el-button type="primary" class="bt" @click="gzSel" >员工工资查询</el-button>
- <el-button type="primary" class="bt" @click="hesuan" v-if="AddType === true">核算参数调整</el-button>
- <el-button type="primary" icon="edit" @click="onxzhscsclick" class="bt" title="修正核算参数">修正核算参数</el-button>
- <el-button type="primary" icon="edit" @click="gd_gxclhconClick" class="bt" title="工序产量核查">工序产量核查</el-button>
- <el-button type="primary" class="bt" @click="onADD" v-if="AddType === true">新增</el-button>
- <el-button type="primary" class="bt" @click="onDel" v-if="DelType === true" >删除</el-button>
- <el-button type="primary" icon="edit" @click="deldbcl_onclick" :disabled="dbclSelection === ''" class="bt" title="当班产量明细" >当班产量明细删除</el-button>
- <el-button type="primary" class="bt" @click="onRCL">日产量批量维护</el-button>
- <el-button type="primary" class="bt" @click="pd_lcdlistonClick" >流程单查询</el-button>
- <el-button type="primary" class="bt" @click="scpconClick" >工单生产批次信息查询</el-button>
- <el-button type="primary" icon="Download" class="bt" @click="llexporttoExcel" >拉料导出Excel</el-button>
- <el-button @click="selectSameWorkOrder" type="success">全选同工单</el-button>
- <el-button @click="invertSelection" type="info">反选</el-button>
- <!-- <el-button type="primary" @click="onClear2" >换型清场</el-button> -->
- </header>
-
- <!-- 左侧树状图区域 -->
- <el-container>
- <layout-sider :resize-directions="['right']" :width="220" style="margin-right: 10px;" >
- <div class="JKWTree-tree" style="height: 70vh;" >
- <h3>设备运行跟踪</h3>
- <el-tree :data="treeData" class="treecolor" highlight-current @node-click="handleNodeClick" />
- </div>
- </layout-sider>
- <el-container>
-
- <el-main>
- <div class="button-container" v-if="showbutton" style="height: 50%;width: 100%; flex: 1; border: 0px magenta solid; margin: 0; padding: 0;">
- <button v-for="(item, index) in machineData" :key="index" class="custom-button" @click="handleButtonClick(item.设备编号)">
- <img :src="`/src/assets/${item.状态}.png`" :alt="altText" style="max-width: 100%; height: auto;"/>
- <span style="margin-top: 8px;">{{ item.设备编号 + ' - ' + item.设备名称 }}</span>
- </button>
- </div>
- <div class="gva-search-box" v-if="JTMCOn" style="overflow: hidden; padding: 0; display: flex;">
- <div style="flex: 1; border: 0px magenta solid; margin: 0; padding: 0;">
-
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="工单编号" prop="name">
- <el-row :gutter="20">
- <el-col :span="6"><el-input v-model="formData.工单编号" disabled :clearable="true"/></el-col>
- <el-col :span="18"><el-input v-model="formData.产品名称" disabled :clearable="true"/></el-col>
- </el-row>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="6">
- <el-form-item label="印件编号" prop="id"><el-input v-model="formData.印件编号" disabled :clearable="true" /></el-form-item>
- </el-col>
- <el-col :span="17">
- <el-form-item label="工序名称" prop="name"><el-input v-model="formData.工序名称" disabled :clearable="true" /></el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="4"><el-form-item label="班组成员" prop="id"></el-form-item></el-col>
- </el-row>
- <el-row :gutter="1">
- <el-col :span="4"><el-input v-model="formData.sczl_bh1" disabled :clearable="true"/></el-col>
- <el-col :span="4"><el-input v-model="formData.sczl_bh2" disabled :clearable="true"/></el-col>
- <el-col :span="4"><el-input v-model="formData.sczl_bh3" disabled :clearable="true"/></el-col>
- <el-col :span="4"><el-input v-model="formData.sczl_bh4" disabled :clearable="true"/></el-col>
- <el-col :span="4"><el-input v-model="formData.sczl_bh5" disabled :clearable="true"/></el-col>
- <el-col :span="4"><el-input v-model="formData.sczl_bh6" disabled :clearable="true"/></el-col>
- </el-row>
- <el-row :gutter="1">
- <el-col :span="4"><el-input v-model="formData.sczl_name1" disabled :clearable="true" /></el-col>
- <el-col :span="4"><el-input v-model="formData.sczl_name2" disabled :clearable="true" /></el-col>
- <el-col :span="4"><el-input v-model="formData.sczl_name3" disabled :clearable="true" /></el-col>
- <el-col :span="4"><el-input v-model="formData.sczl_name4" disabled :clearable="true" /></el-col>
- <el-col :span="4"><el-input v-model="formData.sczl_name5" disabled :clearable="true" /></el-col>
- <el-col :span="4"><el-input v-model="formData.sczl_name6" disabled :clearable="true" /></el-col>
- </el-row>
- </div>
- <div style="flex: 1; border: 0px lawngreen solid; margin: 0; padding: 0; overflow: hidden;">
- <el-table tooltip-effect="dark" :data="selectData" row-key="ID" highlight-current-row="true"
- :row-style="{ height: '20px' }" :header-cell-style="{ padding: '0px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- border style="width:100%;height: 30vh;" @row-dblclick="handleSelectClick" >
- <el-table-column prop="process" label="印件及工序" width="340" />
- <el-table-column prop="completed" label="已完成板数" width="150" />
- </el-table>
- </div>
- </div>
- <div v-if="JTMCOn" class="gva-table-box" >
- <div class="gva-btn-list"></div>
- <el-tabs v-model="activName" type="card" @tab-click="duohandleClick">
- <el-tab-pane label="设备作业清单" @click="showTable('印件资料')" name="first" :class="{ 'active-tab': activeTab === 'first' }" >
- <el-table ref="QDmultipleTable"
- :show-overflow-tooltip="true"
- highlight-current-row="true"
- :cell-class-name="sbzyqdsatusCellClass"
- :row-style="{ height: '20px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }"
- @row-click="yjupdateCompanyFunc"
- style="width: 100%;height: 330px" border tooltip-effect="dark" :data="sbzyData" row-key="ID" @selection-change="handleSelectionChange">
- <!-- <el-table-column type="selection" width="55" />-->
- <!-- <el-table-column align="left" label="选择" prop="bh" width="80"/> -->
- <el-table-column align="left" sortable label="工单编号|质量信息" prop="工单编号|质量信息" width="170" />
- <el-table-column align="left" label="印件资料" prop="印件资料" width="220" />
- <el-table-column align="left" sortable label="工序名称" prop="工序名称" width="110" />
- <el-table-column align="left" label="计划产量/已完成" prop="计划产量/已完成" width="130"/>
- <el-table-column align="left" label="装版时数" prop="装版时数" width="85"/>
- <el-table-column align="left" label="工序产能" prop="工序产能" width="85"/>
- <el-table-column align="left" label="计划工时" prop="计划工时" width="85"/>
- <el-table-column align="left" sortable label="计划生产时段" prop="计划生产时段" width="210" />
- <el-table-column align="left" label="排产备注" prop="排产备注" width="85" />
- <el-table-column align="left" sortable label="产品名称" prop="产品名称" width="400" />
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="班组人员及分配比例" @click="showTable('工艺资料')" name="second">
- <el-table ref="FPmultipleTable"
- highlight-current-row="true"
- :show-overflow-tooltip="true"
- :row-style="{ height: '20px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }"
- @row-dblclick="gyupdateCompanyFunc"
- :row-class-name="rowClassStyle"
- style="width: 100%;height: 400px" border tooltip-effect="dark" :data="FPData" row-key="ID" @selection-change="handleSelectionChange"
- @row-click="clickybupdate">
- <!-- <el-table-column type="selection" width="55" />-->
- <!-- <el-table-column align="left" label="选择" prop="方案" width="70"/> -->
- <el-table-column align="left" sortable label="班组号" prop="班组号" width="95" />
- <el-table-column align="left" label="组员1" prop="0" width="180" />
- <el-table-column align="left" label="组员2" prop="1" width="180" />
- <el-table-column align="left" label="组员3" prop="2" width="180" />
- <el-table-column align="left" label="组员4" prop="3" width="180" />
- <el-table-column align="left" label="组员5" prop="4" width="180" />
- <el-table-column align="left" label="组员6" prop="5" width="180" />
- <el-table-column align="left" label="组员7" prop="6" width="180" />
- <el-table-column align="left" label="组员8" prop="7" width="180" />
- <el-table-column align="left" label="组员9" prop="8" width="180" />
- <el-table-column align="left" label="组员10" prop="9_正品版" width="180" />
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="当班产量明细" @click="showTable('印版资料')" name="third">
- <el-table ref="DBmultipleTable" highlight-current-row="true"
- :show-overflow-tooltip="true" :row-style="{ height: '20px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }" @row-dblclick="ybupdateCompanyFunc"
- style="width: 100%;height: 400px" border tooltip-effect="dark" :data="CLMXData" row-key="ID"
- @selection-change="dbclmxSelectionChange">
- <el-table-column type="selection" width="55" />
- <el-table-column fixed align="left" sortable label="生产时段" prop="生产时间段" width="180"/>
- <el-table-column fixed align="left" sortable label="工单编号" prop="工单编号" width="110" />
- <el-table-column fixed align="left" sortable label="产品名称" prop="产品名称" width="150" />
- <el-table-column fixed align="left" sortable label="印件及工序" prop="印件及工序" width="320"/>
- <el-table-column align="left" sortable label="标牌号" prop="标牌号" width="100"/>
- <el-table-column align="left" sortable label="产量" prop="产量" width="100"/>
- <el-table-column align="left" sortable label="制程废品" prop="制程废品" width="110" />
- <el-table-column align="left" sortable label="制程次品" prop="制程次品" width="110" />
- <el-table-column align="left" sortable label="前工序废" prop="前工序废" width="110" />
- <el-table-column align="left" sortable label="来料异常" prop="来料异常" width="110"/>
- <el-table-column align="left" sortable label="装版工时" prop="装版工时" width="110" />
- <el-table-column align="left" sortable label="保养工时" prop="保养工时" width="110" />
- <el-table-column align="left" sortable label="打样工时" prop="打样工时" width="110"/>
- <el-table-column align="left" sortable label="异常停机工时" prop="异常停机工时" width="135"/>
- <el-table-column align="left" sortable label="通电工时" prop="通电工时" width="110"/>
- <el-table-column align="left" sortable label="码开始行" prop="码开始行" width="110" />
- <el-table-column align="left" sortable label="码结束行" prop="码结束行" width="110" />
- <el-table-column align="left" sortable label="码包" prop="码包" width="100" />
- <el-table-column align="left" sortable label="主电表" prop="主电表" width="100"/>
- <el-table-column align="left" sortable label="辅电表" prop="辅电表" width="100" />
- <el-table-column align="left" sortable label="色度数" prop="色度数" width="100" />
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="检验记录" @click="showTable('技术资料附件')" name="fourth">
- <el-table ref="JYmultipleTable"
- :row-style="{ height: '20px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }"
- :show-overflow-tooltip="true"
- highlight-current-row="true"
- style="width: 100%;height: 400px" border tooltip-effect="dark" :data="JYData" row-key="ID" @selection-change="handleSelectionChange">
- <!-- <el-table-column type="selection" width="55" />-->
- <el-table-column align="left" sortable label="工单编号" prop="工单编号" width="105"/>
- <el-table-column align="left" label="印件号" prop="印件号" width="70" />
- <el-table-column align="left" sortable label="工序名称" prop="工序名称" width="130" />
- <el-table-column align="left" label="检验项目" prop="检验项目" width="160"/>
- <el-table-column v-for="time in columnNames" :key="time" :label="time" :prop="time" align="center" width="80" ></el-table-column>
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="印版管理" @click="showTable('印版管理')" name="fifth">
- <el-table ref="multipleTable"
- highlight-current-row="true"
- :show-overflow-tooltip="true"
- :row-style="{ height: '20px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }"
- @row-dblclick="ybupdateCompanyFunc"
- @row-click="ybClick"
- style="width: 100%;height: 40vh" border tooltip-effect="dark" :data="ybtableData" row-key="ID" @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="30" />
- <el-table-column align="left" sortable label="方案" prop="YB_方案" width="100"/>
- <el-table-column align="left" sortable label="印件号" prop="YB_Yjno" width="100" />
- <el-table-column align="left" sortable label="印版类别" prop="印版类别" width="110" />
- <el-table-column align="left" sortable label="存货编码" prop="存货编码" width="110"/>
- <el-table-column align="left" sortable label="供方批号" prop="供方批号" width="110"/>
- <el-table-column align="left" sortable label="印版名称" prop="印版名称" width="440"/>
- <el-table-column align="left" sortable label="考核印数" prop="考核印数" width="110"/>
- <el-table-column align="left" sortable label="领用机台" prop="领用机台" width="110"/>
- <el-table-column align="left" sortable label="印数" prop="印数" width="110"/>
- <el-table-column align="left" sortable label="建档用户" prop="Sys_id" width="120" />
- <el-table-column align="left" sortable label="建档日期" prop="建档日期" width="160" />
- <el-table-column align="left" sortable label="更新日期" prop="更新日期" width="160" />
- <el-table-column fixed="right" label="操作" width="80">
- <template #default="{ row, $index }">
- <el-button @click="record_outRow(row,$index)" type="success" size="small"
- style="font-size: 16px;padding: 0px;width: 60px;">
- 领用
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- </el-tab-pane>
- </el-tabs>
- </div>
- <el-dialog v-model="detailShow" fullscreen style="font-size: 50px;font-weight: bold;" lock-scroll :before-close="closeDetailShow" title="机台班组维护" destroy-on-close>
- <div>
- <el-table ref="JTWHmultipleTable"
- :row-style="{ height: '20px' }"
- :cell-style="{ padding: '0px' ,color:'blue'}" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }"
- :show-overflow-tooltip="true"
- highlight-current-row="true" @row-click="BZhandle"
- style="width: 100%;height: 250px;margin-top: 0px;" border tooltip-effect="dark"
- :data="bzData" row-key="ID" @selection-change="BZSelectionChange">
- <!-- <el-table-column type="selection" width="55" /> -->
- <el-table-column align="left" label="机台" prop="JTMC" width="100"/>
- <el-table-column align="left" label="班组" prop="班组号" width="60"/>
- <el-table-column align="left" label="组员1" prop="0" width="195"/>
- <el-table-column align="left" label="组员2" prop="1" width="195"/>
- <el-table-column align="left" label="组员3" prop="2" width="195"/>
- <el-table-column align="left" label="组员4" prop="3" width="195"/>
- <el-table-column align="left" label="组员5" prop="4" width="195"/>
- <el-table-column align="left" label="组员6" prop="5" width="100"/>
- <el-table-column align="left" label="组员7" prop="6" width="100"/>
- <el-table-column align="left" label="组员8" prop="7" width="100"/>
- <el-table-column align="left" label="组员9" prop="8" width="100"/>
- <el-table-column align="left" label="特殊组员" prop="9" width="100"/>
- <el-table-column align="left" label="UNIQID" prop="ID" width="100"/>
- </el-table>
- </div>
- <div style="margin-top:100px;">
- <el-row :gutter="20">
- <el-col :span="10">
- <el-form-item label="机台编号" prop="id">
- <el-select v-model="selectedOption" placeholder="请选择">
- <el-option v-for="item in dropdownOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="10">
- <el-form-item label="班组编号" prop="id">
- <el-select v-model="BZMC" placeholder="" >
- <el-option label="A 班" value="A 班"></el-option>
- <el-option label="B 班" value="B 班"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
-
- <div style="display: flex;">
- <div class="groupbox float-div" style="height: 17vh; width: 130vh;">
- <span class="grouptitle">组员及分配比例</span>
- <el-row :gutter="10" style="margin-top: 0px; height: 5vh;">
- <el-col :span="2"><span></span></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="3"></el-col>
- <el-col :span="3"><el-form-item label="特殊组员" prop="id"></el-form-item></el-col>
- </el-row>
- <el-row :gutter="10" style="margin-top: 0px;">
- <el-col :span="3"><el-input v-model="formDatas.code1" @keyup.enter.native="getbzyg($event, '1')"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.code2" @keyup.enter.native="getbzyg($event, '2')" /></el-col>
- <el-col :span="3"><el-input v-model="formDatas.code3" @keyup.enter.native="getbzyg($event, '3')"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.code4" @keyup.enter.native="getbzyg($event, '4')"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.code5" @keyup.enter.native="getbzyg($event, '5')"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.code6" @keyup.enter.native="getbzyg($event, '6')"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.code7" @keyup.enter.native="getbzyg($event, '7')"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.code8" @keyup.enter.native="getbzyg($event, '8')"/></el-col>
- </el-row>
- <el-row :gutter="10" style="margin-top: 1px;">
- <el-col :span="3"><el-input v-model="formDatas.name1" style="color:#00FF00"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.name2"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.name3"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.name4"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.name5"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.name6"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.name7"/></el-col>
- <el-col :span="3"><el-input v-model="formDatas.name8"/></el-col>
- </el-row>
- <el-row :gutter="10" style="margin-top: 1px;">
- <el-col :span="3"><el-input @input="updateTotal" :readonly="!formDatas.name1" v-model="formDatas.percentage1"/></el-col>
- <el-col :span="3"><el-input @input="updateTotal" v-model="formDatas.percentage2"/></el-col>
- <el-col :span="3"><el-input @input="updateTotal" v-model="formDatas.percentage3"/></el-col>
- <el-col :span="3"><el-input @input="updateTotal" v-model="formDatas.percentage4"/></el-col>
- <el-col :span="3"><el-input @input="updateTotal" v-model="formDatas.percentage5"/></el-col>
- <el-col :span="3"><el-input @input="updateTotal" v-model="formDatas.percentage6"/></el-col>
- <el-col :span="3"><el-input @input="updateTotal" v-model="formDatas.percentage7"/></el-col>
- <el-col :span="3"><el-input @input="updateTotal" v-model="formDatas.percentage8"/></el-col>
- </el-row>
- </div>
- <div style="height: 50vh; width: 15vh;margin-top: 3vh;">
- <el-button type="text"></el-button>
- <el-button style="margin-bottom: 1vh; width:15vh;background-color:cornflowerblue;font-size: 2.0vh;font-weight: bold; color: white;" @click="addBz" >新 增</el-button>
- <el-button style="margin-bottom: 1vh; width:15vh;background-color:cornflowerblue;font-size: 2.0vh;font-weight: bold; color: white;" @click="selectBz" >更新当前班组</el-button>
- <el-button style="margin-bottom: 1vh; width:15vh;background-color:cornflowerblue;font-size: 2.0vh;font-weight: bold; color: white;" @click="delBz" >删除当前班组</el-button>
- </div>
- </div>
- </div>
- </el-dialog>
- <!-- 日产量批量维护 -->
- <el-dialog v-model="detailShow_rcl" fullscreen
- style="font-size: 50px;font-weight: bold;" lock-scroll :before-close="closeDetailShow_rcl" title="日产量批量维护" destroy-on-close>
- <div>
- <el-table ref="WHmultipleTable"
- :row-style="{ height: '20px' }"
- :cell-style="{ padding: '0px' ,color:'blue'}" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }"
- :show-overflow-tooltip="true"
- highlight-current-row="true" @row-click="BZhandle_rcl"
- style="width: 100%;height: 250px;margin-top: 0px;" border tooltip-effect="dark"
- :data="bzData_rcl" row-key="ID" @selection-change="BZSelectionChange_rcl">
- <!-- <el-table-column type="selection" width="55" /> -->
- <el-table-column align="left" label="机台" prop="JTMC" width="70"/>
- <el-table-column align="left" label="班组" prop="班组号" width="60"/>
- <el-table-column align="left" label="组员1" prop="0" width="195"/>
- <el-table-column align="left" label="组员2" prop="1" width="195"/>
- <el-table-column align="left" label="组员3" prop="2" width="195"/>
- <el-table-column align="left" label="组员4" prop="3" width="195"/>
- <el-table-column align="left" label="组员5" prop="4" width="195"/>
- <el-table-column align="left" label="组员6" prop="5" width="100"/>
- <el-table-column align="left" label="组员7" prop="6" width="100"/>
- <el-table-column align="left" label="组员8" prop="7" width="100"/>
- <el-table-column align="left" label="组员9" prop="8" width="100"/>
- <el-table-column align="left" label="特殊组员" prop="9" width="100"/>
- <el-table-column align="left" label="UNIQID" prop="ID" width="100"/>
- </el-table>
- </div>
- <div style="margin-top:100px;">
- <el-row :gutter="20">
- <el-col :span="10">
- <el-form-item label="机台编号" prop="id">
- <el-input v-model="selectedOption_rcl" disabled/>
- </el-form-item>
- </el-col>
- <el-col :span="10">
- <el-form-item label="班组编号" prop="id">
- <el-input v-model="BZMC_rcl" disabled/>
- </el-form-item>
- </el-col>
- </el-row>
- <div style="display: flex;">
- <div class="groupbox float-div" style="height: 17vh; width: 130vh;">
- <span class="grouptitle">组员及分配比例</span>
- <el-row :gutter="10" style="margin-top: 0px; height: 5vh;">
- <el-col :span="2"><span></span></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="2"></el-col>
- <el-col :span="3"></el-col>
- <el-col :span="3"><el-form-item label="特殊组员" prop="id"></el-form-item></el-col>
- </el-row>
- <el-row :gutter="10" style="margin-top: 0px;">
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.code1" @keyup.enter.native="getbzyg($event, '1')"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.code2" @keyup.enter.native="getbzyg($event, '2')" /></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.code3" @keyup.enter.native="getbzyg($event, '3')"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.code4" @keyup.enter.native="getbzyg($event, '4')"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.code5" @keyup.enter.native="getbzyg($event, '5')"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.code6" @keyup.enter.native="getbzyg($event, '6')"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.code7" @keyup.enter.native="getbzyg($event, '7')"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.code8" @keyup.enter.native="getbzyg($event, '8')"/></el-col>
- </el-row>
- <el-row :gutter="10" style="margin-top: 1px;">
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.name1" style="color:#00FF00"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.name2"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.name3"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.name4"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.name5"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.name6"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.name7"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.name8"/></el-col>
- </el-row>
- <el-row :gutter="10" style="margin-top: 1px;">
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.percentage1"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.percentage2"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.percentage3"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.percentage4"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.percentage5"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.percentage6"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.percentage7"/></el-col>
- <el-col :span="3"><el-input disabled v-model="formDatas_rcl.percentage8"/></el-col>
- </el-row>
- </div>
- <div style="height: 50vh; width: 15vh;margin-top: 3vh;">
- <el-button type="text"></el-button>
- <el-button style="margin-bottom: 1vh; width:15vh;background-color:cornflowerblue;font-size: 2.0vh;font-weight: bold; color: white;" @click="selectBz_rcl" >更新</el-button>
- </div>
- </div>
- </div>
- </el-dialog>
-
- <!--流程单查询【弹窗】-->
- <el-dialog v-model="pd_lcdlist" title="工单工序生产进程" style="width: 100%;height: 100%;margin: 0px;padding: 0px;">
- <div style="width: 100%;height: 100%;">
- <el-button type="" @click="pd_lcdCancel">退出</el-button>
- </div>
- <br>
- <div style="width: 100%; height: 100%; display: flex; align-items: center;">
- <el-form-item label="工单编号" style="margin-right: 20px; padding: 0;">
- <el-input v-model="pd_lcdformData['gdbh']" @keyup.enter="pd_lcdProductValue"/>
- </el-form-item>
- <el-form-item label="印件号" style="margin-right: 5px; padding: 0;">
- <el-input v-model="pd_lcdformData['yjno']" @keyup.enter="pd_lcdProductValue"/>
- </el-form-item>
- <el-form-item label="" style="margin-right: 5px; padding: 0;">
- <el-input v-model="pd_lcdformData['code']" disabled/>
- </el-form-item>
- <el-form-item label="" style="margin-right: 5px; padding: 0;">
- <el-input v-model="pd_lcdformData['name']" disabled style="width: 500px"/>
- </el-form-item>
- </div>
- <div style="width: 100%; height: 70vh; display: flex;">
- <layout>
- <layout-sider :resize-directions="['right']" :width="240" style="margin-right: 10px;height: 70vh;">
- <div class="JKWTree-tree">
- <el-tree :data="pd_lcd_treeData" @node-click="pd_lcd_handleNodeClick" default-expand-all></el-tree>
- </div>
- </layout-sider>
- <!-- <br> -->
- <layout-main>
- <div style="display: flex; align-items: center;margin-left: 25px;">
- <el-tag type="success" style="width: 55px; height: 40px; margin-right: 10px;"><h2>流程号</h2></el-tag>
- <h2 style="margin: 0 20px 0 0;">绿格子图标表示“已完成”</h2>
- <el-tag type="danger" style="width: 55px; height: 40px; margin-right: 10px;"><h2>流程号</h2></el-tag>
- <h2 style="margin: 0;">红格子图标表示“未完成”</h2>
- </div>
- <!-- 这里放右侧的内容 -->
- <el-space wrap style="margin-left: 20px;">
- <!-- 右侧内容 -->
- <template v-for="item in processList.total_process" >
- <el-button class="custom-buttons" disabled :type="! processList.process.includes(item) ? 'danger' : 'info'" plain style="width: 50px;">{{ item }}</el-button>
- </template>
- </el-space>
- </layout-main>
- </layout>
- </div>
- </el-dialog>
- <!--工单生产批次信息查询【弹窗】-->
- <el-dialog v-model="scpconlist" title="工单生产批次信息查询" style="width: 100%;height: 100%;margin: 0px;padding: 0px;">
- <el-button type="primary" @click="ontuicclicks" style="color: white;margin-left: 20px;" class="bt" title="退出">退出</el-button>
- <div
- style="
- width: 60%;
- height: 470px;
- position: fixed;
- left: 25%;
- padding: 20px;
- border-radius: 8px;
- background-color: #fff;
- box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);">
- <div style="margin-top: 10px;">
- <!-- 提示信息 -->
- <hr>
- <p style="font-size: 14px; color: red; margin: 10px 0;">搜索栏目为空,则从最近2周完工的工单中选择</p>
- <p style="font-size: 14px; color: red; margin: 10px 0;">否则,以栏目值为关键字,从工单编号、产品名称、客户名称中选择</p>
- <hr>
-
- <!-- 输入框和按钮 -->
- <div style="display: flex; align-items: center; margin-top: 10px;">
- <el-input v-model="searchInfolcd" placeholder="Enter回车搜索工单编号" @keydown="Enterkeysearch" id="searchInfo" style="height: 40px;flex: 1;"></el-input>
- <el-button type="primary" title="搜索" icon="el-icon-search" style="width: 70px;height: 40px;font-size: 18px;" @click="onSubmitlcd" >搜索</el-button>
- <el-button type="primary" title="查看" icon="el-icon-search" style="width: 110px;height: 40px;font-size: 18px;" @click="onstatsuclick" >查看流程单</el-button>
- </div>
-
- <!-- 表格展示区域 -->
- <div class="gva-table-box" style="margin-top: 15px;">
- <el-table
- ref="PCmultipleTable"
- style="width: 100%; height: 30vh; verflow: auto;"
- :row-style="{ height: '20px' }" :header-cell-style="{ padding: '0px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- :data="tableDatalcd"
- :border="true"
- :tooltip-effect="'dark'"
- row-key="ID"
- highlight-current-row
- @row-click="tableRowClicklcd"
- @row-dblclick="updateCompanyFunclcd"
- @selection-change="handleSelectionChange">
- <el-table-column align="left" label="工单编号" width="115" prop="Gd_gdbh" />
- <el-table-column align="left" label="行号" width="60" prop="行号" />
- <el-table-column align="left" label="工序名称" prop="Gd_cpmc" />
- <!-- <el-table-column prop="工单" label="工单编号-行号-工序名称" align="left" sortable show-overflow-tooltipmin-width="300"/> -->
- </el-table>
- </div>
- </div>
- </div>
- <!-- 机台生产日报表维护弹窗 -->
- <el-dialog v-model="popdialog" title="机台生产日报表维护" destroy-on-close width="90%" style="height: 92%; margin-left: 5%; margin-top: 1%;">
- <div>
- <!-- 顶层布局 -->
- <layout>
- <!-- 顶部的搜索区域 -->
- <layout-header>
- <el-form ref="elSearchFormRef" class="demo-form-inline" :rules="searchRule">
- <!-- 添加按钮 -->
- <el-button type="primary" icon="edit" style="color: white;margin-left: 20px;" @click="ontuicclick" class="bt" title="退出">退出</el-button>
- </el-form>
- </layout-header>
-
- <!-- 左右布局 -->
- <layout style="height: calc(100% - 50px); display: flex;">
- <!-- 左侧树形区域 -->
- <layout-sider style="width: 140px; margin-right: 10px; overflow: hidden;height: 584px;">
- <div class="JKWTree-tree" style="height: 100%; max-height: 100vh; overflow-y: auto;">
- <h3></h3>
- <el-tree
- :data="treeDatalcd"
- node-key="num"
- highlight-current
- :props="defaultProps"
- @node-click="handleNodeClicklcd"
- />
- </div>
- </layout-sider>
-
-
- <!-- 右侧表格区域 -->
- <layout-content style="flex: 1; overflow: auto;">
- <el-main>
- <div style="width: 100%; font-family: Arial, sans-serif; font-size: 14px;">
- <div style="display: flex; justify-content: space-between; margin-bottom: 10px;">
- <p style="flex: 0.4; margin: 0;">工单编号:<span style="color: red;">{{ _GetorderDetail['Gd_gdbh'] }}</span></p>
- <p style="flex: 0.3; margin: 0;">产品代号:<span style="color: red;">{{ _GetorderDetail['Gd_cpdh'] }}</span></p>
- <p style="flex: 1; margin: 0;">产品名称:<span style="color: red;">{{ _GetorderDetail['Gd_cpmc'] }}</span></p>
- </div>
- <div style="display: flex; justify-content: space-between; margin-bottom: 10px;">
- <p style="flex: 0.4; margin: 0;">订单数量:<span style="color: red;">{{ _GetorderDetail['订单数量'] }}</span></p>
- <p style="flex: 0.3; margin: 0;">实际投料:<span style="color: red;">{{ _GetorderDetail['实际投料'] }}</span></p>
- <p style="flex: 1; margin: 0;">
- 单位:<span style="color: red;">{{ _GetorderDetail['计量单位'] }}</span>
- 目标合格率:<span style="color: red;">{{ _GetorderDetail['投料率'] }}</span>
- </p>
- </div>
- </div>
-
- <el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane label="工艺及生产班组" @click="showTable('工艺及生产班组')" name="first">
- <el-table tooltip-effect="dark" :data="lcdtableData" row-key="ID"
- highlight-current-row="true"
- :row-style="{ height: '0px' }" :header-cell-style="{ padding: '0px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '0px' }"
- border :show-overflow-tooltip="true" :cell-class-name="planUsageCellClass"
- style="width: 100%;height: 56vh" ref="tablesczl_gxmc"
- @row-dblclick="gyscbzSelectClick">
- <el-table-column align="left" label="流程单号" width="81" prop="流程单号" />
- <el-table-column align="left" label="工序号" width="68" prop="工序号" />
- <el-table-column align="left" label="工序名称" width="240" prop="工序名称" />
- <el-table-column align="left" label="生产日期" width="120" prop="生产日期" />
- <el-table-column align="left" label="机台编号" width="81" prop="机台编号" />
- <el-table-column align="left" label="班组人员01" width="105" :formatter="(row) => `${row.sczl_bh1 || ''} ${row.name1 || ''}`"/>
- <el-table-column align="left" label="班组人员02" width="105" :formatter="(row) => `${row.sczl_bh2 || ''} ${row.name2 || ''}`"/>
- <el-table-column align="left" label="班组人员03" width="105" :formatter="(row) => `${row.sczl_bh3 || ''} ${row.name3 || ''}`"/>
- <el-table-column align="left" label="班组人员04" width="105" :formatter="(row) => `${row.sczl_bh4 || ''} ${row.name4 || ''}`"/>
- <el-table-column align="left" label="班组人员05" width="105" :formatter="(row) => `${row.sczl_bh5 || ''} ${row.name5 || ''}`"/>
- <el-table-column align="left" label="班组人员06" width="105" :formatter="(row) => `${row.sczl_bh6 || ''} ${row.name6 || ''}`"/>
- <el-table-column align="left" label="班组人员07" width="105" :formatter="(row) => `${row.sczl_bh7 || ''} ${row.name7 || ''}`"/>
- <el-table-column align="left" label="班组人员08" width="105" :formatter="(row) => `${row.sczl_bh8 || ''} ${row.name8 || ''}`"/>
- <el-table-column align="left" label="班组人员09" width="105" :formatter="(row) => `${row.sczl_bh9 || ''} ${row.name9 || ''}`"/>
- <el-table-column align="left" label="班组人员10" width="105" :formatter="(row) => `${row.sczl_bh10 || ''} ${row.name10 || ''}`"/>
- </el-table>
- </el-tab-pane>
-
- <el-tab-pane label="制程异常记录" @click="showTable('制程异常记录')" name="second">
- <el-table tooltip-effect="dark" :data="zcycjltableData" row-key="ID"
- highlight-current-row="true"
- :row-style="{ height: '0px' }" :header-cell-style="{ padding: '0px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '0px' }"
- border :show-overflow-tooltip="true" :cell-class-name="planUsageCellClass"
- style="width: 100%;height: 65vh" ref="tablzcycjl_gxmc"
- @row-dblclick="zcycjlSelectClick">
- <el-table-column align="left" label="流程单号" width="100" prop="流程单号" />
- <el-table-column align="left" label="数量" width="100" prop="数量" />
- <el-table-column align="left" label="异常备注" width="400" prop="缺陷备注" />
- <el-table-column align="left" label="用户" width="160" prop="用户" />
- </el-table>
- </el-tab-pane>
-
- </el-tabs>
- </el-main>
- </layout-content>
- </layout>
- </layout>
- </div>
- </el-dialog>
- </el-dialog>
- <!-- 组员及分配比例 -->
- <el-dialog v-model="blModel" :before-close="() => blModel = false" style="width: 20%" @keydown="selectBZRR($event)">
- <el-form>
- <div>
- <el-table :data="employeeData" border :show-overflow-tooltip="true" :cell-class-name="blplanUsageCellClass"
- highlight-current-row="true"
- ref="tableBZRR"
- @row-click="tablebllickHandler($event)">
- <el-table-column prop="员工编号" label="员工编号"></el-table-column>
- <el-table-column prop="ygxm" label="员工姓名"></el-table-column>
- </el-table>
- </div>
- </el-form>
- </el-dialog>
- <el-dialog v-model="dianjianVisible" :before-close="dianjiancloseDialog" title="设备点检记录" destroy-on-close width="1300px" style="height: 80%;">
- <el-row :gutter="24">
- <el-col :span="3">
- <el-form-item label="设备编号" prop="id">
- <el-input v-model="formData.JTMC" :clearable="true" />
- </el-form-item>
- </el-col>
- <el-col :span="10">
- <el-row>
- <el-col>
- <el-input v-model="formData.产品名称" :clearable="true" />
- </el-col>
- </el-row>
- </el-col>
- </el-row>
- <div style="display: flex;">
- <div style="flex: 0.1;">
- <el-aside width="200px" style="margin: 0;">
- <div class="JKWTree-tree" style="height: 100%; border-right: 1px solid #ebeef5;">
- <el-tree :data="dianjiantreeData" :props="defaultProps" highlight-current="true"
- @node-click="dianjianNodeClick" @node-dblclick="handleNodeDoubleClick"></el-tree>
- </div>
- </el-aside>
- </div>
- <div style="flex: 1; margin: 0;">
- <el-table
- tooltip-effect="dark"
- :data="dianjianselectData"
- row-key="ID"
- highlight-current-row="true"
- :show-overflow-tooltip="true"
- border @row-click="dianjianhandle"
- style="width:100%; height:400px;"
- @row-dblclick="handleSelectClick"
- :row-class-name="rowClassName">
- <el-table-column prop="检验项目" label="检验项目" width="300"/>
- <el-table-column prop="点检方法" label="点检方法" width="180"/>
- <el-table-column v-slot="scope" label="正常" width="80" >
- <el-checkbox v-model="scope.row.zc" @change="zcClick(scope.row)"></el-checkbox>
- </el-table-column>
- <el-table-column v-slot="scope" label="异常" width="80">
- <el-checkbox v-model="scope.row.yc" @change="ycClick(scope.row)"></el-checkbox>
- </el-table-column>
- <el-table-column label="备注说明" width="180">
- </el-table-column>
- <el-table-column
- v-slot="scope"
- label="不检测"
- width="80"
- >
- <el-checkbox v-model="scope.row.notjc" @change="notjcClick(scope.row)"></el-checkbox>
- </el-table-column>
- </el-table>
- <el-row :gutter="20">
- <el-col :span="20">
- <el-input v-model="pandingfangfa" style="height: 50px;" :clearable="true" />
- </el-col>
- </el-row>
- </div>
- </div>
- <!-- 弹窗底部按钮 -->
- <template #footer>
- <div class="dialog-footer" style="width: 100%;">
- <el-button @click="dianjiancloseDialog" style="width: 100px; height: 40px;">关 闭</el-button>
- <el-button type="primary" @click="dianjianenterDialog" style="width: 100px; height: 40px;">确 定</el-button>
- </div>
- </template>
- </el-dialog>
- <el-dialog
- v-model="yinbanVisible"
- title="机台印版领用"
- destroy-on-close
- width="1300px"
- @close="handleyinbanDialogClose"
- style="height: 75%;"
- >
- <div style="margin-top:-12px">
- <el-button type="primary" class="bt" icon="edit" :disabled="currentSelection.length === 0" @click="onout">领出</el-button>
- <el-button type="primary" class="bt" icon="document" :disabled="currentSelection.length === 0" @click="onwithdraw">收回</el-button>
- <el-button @click="yinbaninvertSelection" type="info">反选</el-button>
- </div>
- <el-row :gutter="24" style="margin-top: 10px;">
- <el-col :span="4">
- <el-form-item label="工单编号" prop="id">
- <el-input v-model="formData.工单编号" :clearable="true" />
- </el-form-item>
- </el-col>
- <el-col :span="4">
- <el-form-item label="印件号" prop="id">
- <el-input v-model="formData.印件号" :clearable="true" />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item prop="id">
- <el-input v-model="formData.productCode" :clearable="true" />
- </el-form-item>
- </el-col>
- <el-col :span="14">
- <el-form-item prop="id">
- <el-input v-model="formData.产品名称" :clearable="true" />
- </el-form-item>
- </el-col>
-
- </el-row>
- <div style="display: flex;">
- <div style="flex: 1;">
- <el-aside width="250px" style="margin: 0;">
- <div class="JKWTree-tree" style="height: 100%; border-right: 1px solid #ebeef5;">
- <el-tree :data="yinbantreeData" :props="defaultProps" highlight-current="true"
- @node-click="yinbanNodeClick" @node-dblclick="handleNodeDoubleClick"></el-tree>
- </div>
- </el-aside>
- </div>
- <div style="flex: 1; margin: 0;">
- <el-table
- ref="yinbanmultipleTable"
- tooltip-effect="dark"
- :data="yinbanselectData"
- row-key="ID"
- highlight-current-row="true"
- border
- style="width:1000px; height:400px;"
- @row-dblclick="handleSelectClick"
- :row-class-name="rowClassName"
- @selection-change="yinbanSelectionChange">
- <el-table-column fixed type="selection" width="30" />
- <el-table-column
- prop="存货编码"
- label="存货编码"
- width="180"
- />
- <el-table-column
- prop="存货名称"
- label="存货名称"
- width="180"
- />
- <el-table-column
- prop="印版名称"
- label="印版名称"
- width="180"
- />
- <el-table-column
- prop="供方批号"
- label="供方批号"
- width="180"
- />
- <el-table-column
- prop="工单编号"
- label="当前领用工单"
- width="180"
- />
- <el-table-column
- prop="制造日期"
- label="制造日期"
- width="180"
- />
- <el-table-column
- prop="印数"
- label="印数"
- width="180"
- />
- <el-table-column
- prop="印版类别"
- label="印版类别"
- width="180"
- />
- <el-table-column
- prop="客户编号"
- label="客户编号"
- width="180"
- />
- <el-table-column
- prop="客户名称"
- label="客户名称"
- width="180"
- />
- <el-table-column
- prop="产品编号"
- label="产品编号"
- width="180"
- />
- <el-table-column
- prop="产品名称"
- label="产品名称"
- width="180"
- />
- </el-table>
- <!-- 分页 -->
- <div class="gva-pagination">
- <el-pagination
- @size-change="ybhandleSizeChange"
- @current-change="ybhandleCurrentChange"
- :current-page="ybpage"
- :page-size="ybpageSize"
- layout="total, sizes, prev, pager, next, jumper"
- :total="ybtotal">
- </el-pagination>
- </div>
- </div>
- </div>
- </el-dialog>
- <!-- 退回弹窗 -->
- <el-dialog
- v-model="dialogwithdrawVisible"
- title="印版印数(次数)"
- style="width: 20%; margin: 30vh auto;"
- >
- <el-form-item label="印数">
- <el-input v-model="Plate.印数" placeholder="请输入印数" />
- </el-form-item>
- <template #footer>
- <div class="dialog-footer" style="width: 100%;">
- <el-button @click="rawcloseDialog" style="width: 100px; height: 40px;">关 闭</el-button>
- <el-button type="primary" @click="rawenterDialog" style="width: 100px; height: 40px;">确 定</el-button>
- </div>
- </template>
- </el-dialog>
- <el-dialog
- v-model="xunchaVisible"
- title="管理人员现场巡查记录"
- destroy-on-close
- width="1300px"
- style="height: 65%;"
- >
- <div style="display: flex;">
- <div style="flex: 1;">
- <el-aside width="250px" style="margin: 0;">
- <div class="JKWTree-tree" style="height: 100%; border-right: 1px solid #ebeef5;">
- <el-tree :data="xunchatreeData" :props="defaultProps" highlight-current="true"
- @node-click="xunchaNodeClick"></el-tree>
- </div>
- </el-aside>
- </div>
- <div style="flex: 1; margin: 0;">
- <el-table
- tooltip-effect="dark"
- :data="xunchaselectData"
- row-key="ID"
- highlight-current-row="true"
- border
- style="width:1000px; height:400px;"
- @row-dblclick="handleSelectClick"
- :row-class-name="rowClassName"
- :show-overflow-tooltip="true"
- >
- <el-table-column
- prop="工单编号"
- label="工序编号"
- width="85"
- />
- <el-table-column
- prop="印件号"
- label="印件号"
- width="70"
- />
- <el-table-column
- prop="工序名称"
- label="工序名称"
- width="180"
- />
- <el-table-column
- prop="流程单号"
- label="流程单号"
- width="85"
- />
- <el-table-column
- prop="设备编号"
- label="设备编号"
- width="85"
- />
- <el-table-column
- prop="班组编号"
- label="班组编号"
- width="85"
- />
- <el-table-column
- prop="检验备注"
- label="检验备注"
- width="85"
- />
- <el-table-column
- prop="现场管理人员"
- label="现场管理人员"
- width="145"
- />
- <el-table-column
- prop="提交时间"
- label="提交时间"
- width="160"
- />
- <el-table-column
- prop="开工时间"
- label="开工时间"
- width="160"
- />
- <el-table-column
- prop="分钟差数"
- label="分钟差数"
- width="85"
- />
- <el-table-column
- prop="归属时段"
- label="归属时段"
- width="160"
- />
- </el-table>
- </div>
- </div>
- <template #footer>
- <div class="dialog-footer">
- <!-- <el-button @click="closeDialog">关 闭</el-button> -->
- <!-- <el-button type="primary" @click="xunjianerDialog">提 交</el-button> -->
- </div>
- </template>
- </el-dialog>
- <el-dialog
- v-model="zhichengVisible"
- title="制程检验记录"
- destroy-on-close
- width="1100px"
- style="height: 78%;"
- >
- <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
- <el-col :span="4" style="margin-top:0px; margin-bottom: 0px;">
- <el-form-item label="工单编号" prop="id" style="margin-top:0px;; margin-bottom: 0px;">
- <el-input v-model="xunchaData.order" :clearable="true" placeholder="" style="margin-top:0px;; margin-bottom: 0px;"/>
- </el-form-item>
- </el-col>
- <el-col :span="9" style="margin-top:0px; margin-bottom: 0px;">
- <el-row style="margin-top:0px; margin-bottom: 0px;">
- <el-col style="margin-top:0px; margin-bottom: 0px;">
- <el-input v-model="xunchaData.product_name" :clearable="true" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
- </el-col>
- </el-row>
- </el-col>
- <el-col :span="4" style="margin-top:0px; margin-bottom: 0px;">
- <el-form-item label="流程单" prop="id" style="margin-top:0px; margin-bottom: 0px;">
- <el-input v-model="xunchaData.lcdh" :clearable="true" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24" style="margin-top:0px; margin-bottom: 1px;">
- <el-col :span="3" style="margin-top:0px; margin-bottom: 0px;">
- <el-form-item label="印件编号" prop="id" style="margin-top:0px; margin-bottom: 0px;">
- <el-input v-model="xunchaData.yjno" :clearable="true" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
- </el-form-item>
- </el-col>
- <el-col :span="10" style="margin-top:0px; margin-bottom: 0px;">
- <el-row style="margin-top:0px; margin-bottom: 0px;">
- <el-col style="margin-top:0px; margin-bottom: 0px;">
- <el-input v-model="xunchaData.gxmc" :clearable="true" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
- </el-col>
- </el-row>
- </el-col>
- </el-row>
- <div style="display: flex;">
- <div style="flex: 0.1;">
- <el-aside width="180px" style="margin: 0;">
- <div class="JKWTree-tree" style="height: 100%; border-right: 1px solid #ebeef5;">
- <el-tree :data="zhichengtreeData" :props="defaultProps" highlight-current="true"
- @node-click="zhichengNodeClick"></el-tree>
- </div>
- </el-aside>
- </div>
- <div v-if="zhichengstatus" style="flex: 0; margin: 0;">
- <el-tabs v-model="activNames" type="card" @tab-click="handleClick">
- <el-tab-pane label="指标检验" @click="showTable('指标检验')" name="first">
- <el-table
- tooltip-effect="dark"
- :data="zhibiaoselectData"
- row-key="ID"
- highlight-current-row="true"
- :show-overflow-tooltip="true"
- border
- style="width:100%; height:310px;"
- :row-class-name="rowClassName">
- <el-table-column prop="检验项目" label="检验项目" width="270" />
- <el-table-column label="不检测" width="70">
- <template v-slot="scope">
- <el-radio v-model="scope.row.selected" label="不检测">
- <span style="visibility: hidden;">不检测</span>
- </el-radio>
- </template>
- </el-table-column>
- <el-table-column label="合格" width="60">
- <template v-slot="scope">
- <el-radio v-model="scope.row.selected" label="合格">
- <span style="visibility: hidden;">合格</span>
- </el-radio>
- </template>
- </el-table-column>
- <el-table-column label="不合格" width="70">
- <template v-slot="scope">
- <el-radio v-model="scope.row.selected" label="不合格">
- <span style="visibility: hidden;">不合格</span>
- </el-radio>
- </template>
- </el-table-column>
- <el-table-column prop="检测方法" label="检测方法" width="90" />
- <el-table-column prop="检验频率" label="检验频率" width="150" />
- <el-table-column prop="相关标准" label="相关标准" width="180" />
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="附加检验记录" @click="showTable('附加检验记录')" name="second">
- <el-table
- tooltip-effect="dark"
- :data="fujiaselectData"
- row-key="ID"
- highlight-current-row="true"
- :show-overflow-tooltip="true"
- border
- style="width:100%; height:320px;"
- @row-dblclick="handleSelectClick"
- :row-class-name="rowClassName">
- <el-table-column v-slot="scope" label="不检测" width="75">
- <el-checkbox v-model="scope.row.notjc"></el-checkbox>
- </el-table-column>
-
- <!-- 缺陷及记录列,转换为输入框 -->
- <el-table-column label="缺陷及记录" width="720">
- <template #default="scope">
- <el-input v-model="scope.row['缺陷备注']" placeholder="请输入缺陷及记录"></el-input>
- </template>
- </el-table-column>
-
-
- <!-- <el-table-column prop="缺陷备注" label="缺陷及记录" width="720"/> -->
-
- <el-table-column prop="编号" label="编号" width="80"/>
-
-
- </el-table>
- </el-tab-pane>
- </el-tabs>
- </div>
- </div>
- <template #footer>
- <div v-if="zhichengstatus" class="dialog-footer">
- <el-button @click="closezhichengDialog">关 闭</el-button>
- <el-button type="primary" @click="zhichengDialog">提 交</el-button>
- </div>
- </template>
- </el-dialog>
- <div v-if="dateOn" >
- <el-tabs v-model="activName" type="card" @tab-click="handleClick">
- <el-tab-pane label="当日上报产量" @click="showTable('当日上报产量')" name="first">
- <!-- 非JP机台 -->
- <el-table ref="multipleTable"
- v-if="! isJPJT"
- :show-overflow-tooltip="true"
- @selection-change="selectionChange($event)"
- :row-style="{ height: '20px' }" :selectable="checkboxT"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }" @row-click="getUid"
- highlight-current-row="true" @row-dblclick="gytableDatadoubleClick"
- style="width: 100%;height: 70vh" border tooltip-effect="dark" :data="gytableData" row-key="ID" >
- <el-table-column type="selection" width="55" />
- <!-- <el-table-column align="left" label="选择" prop="工单编号" width="100"/> -->
- <el-table-column fixed align="left" label="产品名称" prop="产品名称" width="300"/>
- <el-table-column fixed align="left" label="工序" prop="工序" width="170"/>
- <el-table-column fixed align="left" label="产量" prop="产量" width="100"/>
- <el-table-column align="left" label="千件工价" prop="千件工价" width="85"/>
- <el-table-column align="left" label="日定额" prop="日定额" width="85"/>
- <el-table-column align="left" label="流程" sortable prop="num" width="80"/>
- <el-table-column align="left" label="补产标准" prop="补产标准" width="85"/>
- <el-table-column align="left" label="难度系数" prop="难度系数" width="85"/>
- <el-table-column align="left" label="备注" prop="备注" width="200"/>
- <el-table-column align="left" label="组员1" prop="组员1" width="150" />
- <el-table-column align="left" label="组员2" prop="组员2" width="150" />
- <el-table-column align="left" label="组员3" prop="组员3" width="150" />
- <el-table-column align="left" label="组员4" prop="组员4" width="150" />
- <el-table-column align="left" label="组员5" prop="组员5" width="70" />
- <el-table-column align="left" label="组员6" prop="组员6" width="70" />
- <el-table-column align="left" label="组员7" prop="组员7" width="70" />
- <el-table-column align="left" label="组员8" prop="组员8" width="70" />
- <el-table-column align="left" label="组员9" prop="组员9" width="70" />
- <el-table-column align="left" label="组员10" prop="组员10" width="70" />
- <el-table-column align="left" label="制程废品" prop="制程废品" width="85" />
- <el-table-column align="left" label="制程次品" prop="制程次品" width="85" />
- <el-table-column align="left" label="前工序废" prop="前工序废" width="85" />
- <el-table-column align="left" label="来料异常" prop="来料异常" width="85"/>
- <el-table-column align="left" label="装版工时" prop="装版工时" width="85" />
- <el-table-column align="left" label="保养工时" prop="保养工时" width="85" />
- <el-table-column align="left" label="打样工时" prop="打样工时" width="85"/>
- <el-table-column align="left" label="异常总工时" prop="异常总工时" width="100"/>
- <el-table-column align="left" label="异常补时" prop="异常补时" width="85"/>
- <el-table-column align="left" label="异常类型" prop="异常类型" width="110"/>
- <el-table-column align="left" label="通电工时" prop="通电工时" width="85"/>
- <el-table-column align="left" label="码开始行" prop="码开始行" width="85" />
- <el-table-column align="left" label="码结束行" prop="码结束行" width="85" />
- <el-table-column align="left" label="码包" prop="码包" width="70" />
- <el-table-column align="left" label="主电表" prop="主电表" width="70"/>
- <el-table-column align="left" label="辅电表" prop="辅电表" width="70" />
- <el-table-column align="left" label="色度数" prop="色度数" width="70" />
- <el-table-column align="left" label="印刷方式" prop="印刷方式" width="85"/>
- <el-table-column align="left" label="用户" prop="用户" width="210" />
- <el-table-column align="left" label="更新时间" prop="更新时间" width="160" />
- </el-table>
-
- <el-table ref="JPmultipleTable"
- v-else
- :show-overflow-tooltip="true"
- @selection-change="selectionChange($event)"
- :row-style="{ height: '20px' }" :row-class-name="totalClassName" :cell-class-name="tableDataCellClass"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }" @row-click="getUid"
- highlight-current-row="true" @row-dblclick="JPgytableDatadoubleClick"
- style="width: 100%;height: 70vh" border tooltip-effect="dark" :data="JPgytableData" row-key="ID" >
- <el-table-column type="selection" width="55" />
- <!-- <el-table-column fixed align="left" label="工单编号" prop="工单编号" width="130"/> -->
- <el-table-column align="left" fixed label="产品名称" prop="产品名称" width="300"/>
- <el-table-column align="left" fixed label="工序" prop="工序" width="150"/>
- <!-- <el-table-column align="left" label="印件号" prop="yjno" width="115"/>
- <el-table-column align="left" label="工序名称" prop="gxmc" width="200"/> -->
- <el-table-column align="left" fixed label="班组" prop="bzdh" width="70"/>
- <el-table-column align="left" label="计件箱数" prop="计件箱数" width="90"/>
- <el-table-column align="left" label="每箱数量" prop="每箱数量" width="90"/>
- <el-table-column align="left" label="日定额" prop="日定额" width="80"/>
- <el-table-column align="left" label="流程" sortable prop="num" width="80"/>
- <el-table-column align="left" label="检验类型" prop="检验类型" width="90"/>
- <el-table-column align="left" label="废品率系数" prop="废品率系数" width="100"/>
- <el-table-column align="left" label="千件工价" prop="千件工价" width="90"/>
- <el-table-column align="left" label="补产标准" prop="补产标准" width="90"/>
- <el-table-column align="left" label="组员1" prop="组员1" width="170"/>
- <el-table-column align="left" label="组员2" prop="组员2" width="170"/>
- <el-table-column align="left" label="组员3" prop="组员3" width="170"/>
- <el-table-column align="left" label="组员4" prop="组员4" width="170"/>
- <el-table-column align="left" label="组员5" prop="组员5" width="170"/>
- <el-table-column align="left" label="组员6" prop="组员6" width="170"/>
- <el-table-column align="left" label="组员7" prop="组员7" width="170"/>
- <el-table-column align="left" label="换膜补时" prop="换膜补时" width="90"/>
- <el-table-column align="left" label="保养工时" prop="保养工时" width="90"/>
- <el-table-column align="left" label="异常总工时" prop="异常总工时" width="100"/>
- <el-table-column align="left" label="通电工时" prop="通电工时" width="90"/>
- <el-table-column align="left" label="难度系数" prop="难度系数" width="90"/>
- <el-table-column align="left" label="定额代号" prop="定额代号" width="130"/>
- <el-table-column align="left" label="更新时间" prop="更新时间" width="160"/>
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="当日制程检验记录" @click="showTable('印件资料')" name="second">
- <el-table ref="JYmultipleTable"
- :row-style="{ height: '20px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }"
- :show-overflow-tooltip="true"
- highlight-current-row="true"
- style="width: 100%;height: 70vh" border tooltip-effect="dark" :data="drzcDatas" row-key="ID" @selection-change="handleSelectionChange">
- <el-table-column type="selection" width="55" />
- <el-table-column align="left" label="工单编号" prop="工单编号" width="85"/>
- <el-table-column align="left" label="印件号" prop="印件号" width="70" />
- <el-table-column align="left" label="工序名称" prop="工序名称" width="85" />
- <el-table-column align="left" label="检验项目" prop="检验项目" width="85"/>
- <el-table-column
- v-for="time in columnNames"
- :key="time"
- :label="time"
- :prop="time"
- align="center"
- width="80"
- ></el-table-column>
- </el-table>
- </el-tab-pane>
- </el-tabs>
- </div>
- <el-dialog v-model="complaintsShow" style="width: 1000px" lock-scroll :before-close="closecomplaintsShow" title="=客诉记录" destroy-on-close>
- <el-table ref="multipleTable"
- :row-style="{ height: '20px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }"
- :show-overflow-tooltip="true"
- highlight-current-row="true" @row-click="complaintshandle"
- style="width: 100%;height: 250px;margin-top: 0px;" border tooltip-effect="dark"
- :data="complaintsData" row-key="ID" @selection-change="complaintsSelectionChange">
- <!-- <el-table-column type="selection" width="55" /> -->
- <el-table-column align="left" label="产品编号" prop="产品编号" width="120"/>
- <el-table-column align="left" label="产品名称" prop="产品名称" width="200"/>
- <el-table-column align="left" label="客诉日期" prop="客诉日期" width="120"/>
- <el-table-column align="left" label="客诉单号" prop="客诉单号" width="120"/>
- <el-table-column align="left" label="客诉方式" prop="客诉方式" width="100"/>
- <el-table-column align="left" label="订单编号" prop="订单编号" width="100"/>
- <el-table-column align="left" label="缺陷关键字" prop="缺陷关键字" width="140"/>
- <el-table-column align="left" label="客诉性质" prop="客诉性质" width="100"/>
- <el-table-column align="left" label="主要责任部门" prop="主要责任部门" width="140"/>
- <el-table-column align="left" label="次要责任部门" prop="次要责任部门" width="140"/>
- </el-table>
- <el-row :gutter="20">
- <el-col :span="6">
- <el-form-item label="客户编号" prop="id">
- <el-input v-model="selectedRowData.客户编号" :clearable="true" placeholder="" />
- </el-form-item>
- </el-col>
- <el-col :span="15">
- <el-form-item label="客户名称" prop="id">
- <el-input v-model="selectedRowData.客户名称" :clearable="true" placeholder="" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="6">
- <el-form-item label="客诉单号" prop="id">
- <el-input v-model="selectedRowData.客诉单号" :clearable="true" placeholder="" />
- </el-form-item>
- </el-col>
- <el-col :span="5">
- <el-form-item label="客诉日期" prop="id">
- <el-input v-model="selectedRowData.客诉日期" :clearable="true" placeholder="" />
- </el-form-item>
- </el-col>
- <el-col :span="5">
- <el-form-item label="方式" prop="id">
- <el-input v-model="selectedRowData.客诉方式" :clearable="true" placeholder="" />
- </el-form-item>
- </el-col>
- <el-col :span="5">
- <el-form-item label="批次号" prop="id">
- <el-input v-model="selectedRowData.订单编号" :clearable="true" placeholder="" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="20">
- <el-form-item label="反馈问题" prop="id">
- <el-input v-model="selectedRowData.客诉描述" :clearable="true" placeholder="" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="20">
- <el-form-item label="缺陷关键字" prop="id">
- <el-input v-model="selectedRowData.缺陷关键字" :clearable="true" placeholder="" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="5">
- <el-form-item label="性质" prop="id">
- <el-input v-model="selectedRowData.客诉性质" :clearable="true" placeholder="" />
- </el-form-item>
- </el-col>
- <el-col :span="5">
- <el-form-item label="扣分" prop="id">
- <el-input v-model="selectedRowData.扣分" :clearable="true" placeholder="" />
- </el-form-item>
- </el-col>
- </el-row>
- <div style="display: flex;">
- </div>
- </el-dialog>
- <el-dialog
- v-model="huanxingVisible"
- title="换型清场"
- destroy-on-close
- width="145vh"
- style="height: 78vh;"
- :before-close="closehuanxingVisible"
- >
- <div style="display: flex;">
- <div style="flex: 0.1;">
- <el-aside width="26vh" style="margin: 0;">
- <div class="JKWTree-tree" style="height: 60vh; border-right: 1px solid #ebeef5;">
- <el-tree :data="huanxingtreeData" :props="defaultProps" highlight-current="true"
- @node-click="huanxingNodeClick"></el-tree>
- </div>
- </el-aside>
- </div>
- <div v-if="huanxingstatus" style="flex: 0; margin: 0;">
- <el-tabs v-model="activNames" type="card" @tab-click="handleClick">
- <el-tab-pane label="换型清场明细信息" @click="showTable('换型清场明细信息')" name="first">
- <div style="width:110vh">
- <el-descriptions :column="9" border>
- <el-descriptions-item :span="9">
- <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
- <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="日期:" prop="id" style="margin-top:0px; margin-bottom: 0px;">
- <el-input v-model="huanxingData.日期" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
- </el-form-item>
- </el-col>
- <el-col :span="2" style="margin-bottom: 0px;margin-top: 0px;">
- </el-col>
- <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="机台编号:" prop="id" style="margin-top:0px; margin-bottom: 0px;">
- <el-input v-model="huanxingData.机台编号" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
- </el-form-item>
- </el-col>
- <el-col :span="1" style="margin-bottom: 0px;margin-top: 0px;">
- </el-col>
- <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="班组:" prop="id" style="margin-top:0px; margin-bottom: 0px;">
- <el-input v-model="huanxingData.班组" placeholder="" style="margin-top:0px; margin-bottom: 0px;"/>
- </el-form-item>
- </el-col>
- </el-row>
- </el-descriptions-item>
- <el-descriptions-item label="清场原因 从" :span="9">
- <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
- <el-col :span="8" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="工单编号:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-input v-model="huanxingData.工单编号A" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
- </el-form-item>
- </el-col>
- <el-col :span="16" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="印件名称:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-input v-model="huanxingData.印件名称A" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
- <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="印件工序:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-input v-model="huanxingData.印件工序A" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
- </el-form-item>
- </el-col>
- <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
- </el-col>
- <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="码包号" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-input v-model="huanxingData.码包号A" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
- </el-form-item>
- </el-col>
- </el-row>
- </el-descriptions-item>
- <el-descriptions-item label="清场原因 到" :span="9">
- <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
- <el-col :span="8" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="工单编号:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-input v-model="huanxingData.工单编号B" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
- </el-form-item>
- </el-col>
- <el-col :span="16" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="印件名称:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-input v-model="huanxingData.印件名称B" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
- <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="印件工序:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-input v-model="huanxingData.印件工序B" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
- </el-form-item>
- </el-col>
- <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
- </el-col>
- <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="码包号" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-input v-model="huanxingData.码包B" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
- </el-form-item>
- </el-col>
- </el-row>
- </el-descriptions-item>
- <el-descriptions-item label="清场确认项目" :span="9">
- <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
- <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="菲林_标样_签样品_留样品" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-checkbox v-model="huanxingData.项目1"></el-checkbox>
- </el-form-item>
- </el-col>
- <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="版材_纸张_电化铝_油墨" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-checkbox v-model="huanxingData.项目2"></el-checkbox>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
- <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="过版纸_废品_次品" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-checkbox v-model="huanxingData.项目3"></el-checkbox>
- </el-form-item>
- </el-col>
- <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="半成品_成品_零头" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-checkbox v-model="huanxingData.项目4"></el-checkbox>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
- <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="操作台桌面_抽屉_地面" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-checkbox v-model="huanxingData.项目5"></el-checkbox>
- </el-form-item>
- </el-col>
- </el-row>
- </el-descriptions-item>
- <el-descriptions-item label="清场确认人" :span="9">
- <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
- <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="机长签字" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-input v-model="huanxingData.机长" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
- <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="带班主管签字" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-input v-model="huanxingData.班长" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
- </el-form-item>
- </el-col>
- <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
- <el-form-item label="质量巡查员签字" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
- <el-input v-model="huanxingData.质量巡查员" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
- </el-form-item>
- </el-col>
- </el-row>
- </el-descriptions-item>
- </el-descriptions>
- </div>
- </el-tab-pane>
- <el-tab-pane label="当前设备换型记录" @click="showTable('当前设备换型记录')" name="second">
- <el-table tooltip-effect="dark" :data="huanxingselectData" row-key="ID"
- highlight-current-row="true" :show-overflow-tooltip="true" border
- style="width:115vh; height:50vh;" @row-dblclick="handleSelectClick" :row-class-name="rowClassName" >
- <el-table-column prop="日期" label="日期" width="160" />
- <el-table-column prop="机台编号" label="机台编号" width="90" />
- <el-table-column prop="班组" label="班组" width="70" />
- <el-table-column prop="工单编号A" label="工单编号A" width="95" />
- <el-table-column prop="印件名称A" label="印件名称A" width="130" />
- <el-table-column prop="印件工序A" label="印件工序A" width="150" />
- <el-table-column prop="码包号A" label="码包号A" width="80" />
- <el-table-column prop="工单编号B" label="工单编号B" width="100" />
- <el-table-column prop="印件名称B" label="印件名称B" width="100" />
- <el-table-column prop="印件工序B" label="印件工序B" width="150" />
- <el-table-column prop="码包号B" label="码包号B" width="80" />
- <el-table-column prop="清场项目A" label="菲林_标样_签样品_留样品" width="190" />
- <el-table-column prop="清场项目B" label="版材_纸张_电化铝_油墨" width="190" />
- <el-table-column prop="清场项目C" label="过版纸_废品_次品" width="170" />
- <el-table-column prop="清场项目D" label="半成品_成品_零头" width="170" />
- <el-table-column prop="清场项目E" label="操作台桌面_抽屉_地面" width="180" />
- <el-table-column prop="机长" label="机长" width="80" />
- <el-table-column prop="班长" label="带班长" width="80" />
- <el-table-column prop="质量巡查员" label="质量巡查员" width="100" />
- <el-table-column prop="创建时间" label="创建时间" width="120" />
- <el-table-column prop="UNIQID" label="UNIQID" width="80" />
- </el-table>
- </el-tab-pane>
- </el-tabs>
- </div>
- </div>
- </el-dialog>
- <el-dialog v-model="chanliangVisible" destroy-on-close
- width="85%" style="height: 94vh;margin-top: 1%;padding: 10px 10px 0px 10px;" :before-close="closechanliangVisible" :title="type2 === 'create' ? '新增' : '修改'">
-
- <el-row :gutter="24" style="height: 40px;">
- <el-col :span="6">
- <el-form-item label="工单编号:" prop="flatFeed" class="mab" >
- <el-input v-model="formdata3.value.工单编号" id="工单编号" @blur="getCPMCsubmit()" @keydown="ent1($event)" />
- </el-form-item>
- </el-col>
- <el-col :span="18">
- <el-form-item label="产品名称:" prop="perTenThousand" class="mab" label-width="150">
- <el-input v-model="formdata3.value.cpmc" id="产品名称" readonly @keydown="ent1($event)" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24" style="height: 40px;">
- <el-col :span="6">
- <el-form-item label="印件号:" prop="flatFeed" class="mab"label-width="70">
- <el-input v-model="formdata3.value.yjno" id="印件号" @keydown="ent1($event)" />
- </el-form-item>
- </el-col>
- <el-col :span="18">
- <el-form-item label="印件名称:" prop="perTenThousand" class="mab" label-width="150">
- <el-input v-model="formdata3.value.yjmc" id="印件名称" @keydown="ent1($event)" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24" style="height: 40px;">
- <el-col :span="14">
- <el-form-item label="工序名称:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.gxmc" id="工序名称" @focus="gxmcHandleFocus()" @blur="getGXsubmit()" @keydown="ent1($event)" style="width: 350px;" />
- <el-input v-model="formdata3.value.gxh" id="工序号" :readonly=true :clearable="true" style="width: 80px;" />
- </el-form-item>
- </el-col>
- <el-col :span="10">
- <el-form-item label="工艺名称:" prop="perTenThousand" class="mab">
- <el-input v-model="formdata3.value.gymc" id="工艺名称" @keydown="ent1($event)" :readonly=true :clearable="true" style="width: 200px;" />
- </el-form-item>
- </el-col>
- </el-row>
-
- <el-row :gutter="24" style="height: 40px;">
- <el-col :span="6">
- <el-form-item label="日期:" prop="flatFeed" class="mab" label-width="70">
- <el-date-picker v-model="formdata3.value.rq" type="datetime" format="YYYY/MM/DD" value-format="YYYY-MM-DD" @keydown="ent1($event)"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="机器:" class="mab" prop="remark">
- <el-select v-model="formdata3.value.sczl_jtbh"
- id="机器" @keydown="ent1($event)" @change="jtbh_change()"
- style="flex: 1; height: auto; width: 100px;">
- <el-option
- v-for="(item, index) in gdzl_MachineList_address.data"
- :key="index"
- :label="item.split('-->')[0].trim()"
- :value="item.split('-->')[0].trim()">
- {{ item }}
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="7">
- <el-form-item label="开工时间:" prop="flatFeed" class="mab">
- <el-date-picker v-model="formdata3.value.starttime" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" @keydown="ent1($event)" />
- </el-form-item>
- </el-col>
- <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
- <el-form-item label="流程单号" prop="id" style="margin-top:0px; margin-bottom: 1px;">
- <el-input v-model="formdata3.value.num" id="流程单号" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24" style="height: 40px;">
- <el-col :span="9">
- <el-form-item label="上机时间:" prop="flatFeed" class="mab">
- <el-date-picker
- v-model="formdata3.value.sj1"
- type="datetime"
- format="YYYY/MM/DD hh:mm:ss"
- value-format="YYYY-MM-DD h:m:s"
- @keydown="ent1($event)"
- />
- </el-form-item>
- </el-col>
- <el-col :span="9">
- <el-form-item label="下机时间:" prop="flatFeed" class="mab">
- <el-date-picker
- v-model="formdata3.value.sj2"
- type="datetime"
- format="YYYY/MM/DD hh:mm:ss"
- value-format="YYYY-MM-DD h:m:s"
- @keydown="ent1($event)"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24">
- <el-col :span="6">
- <el-form-item label="墨色:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.色度数" id="墨色" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="加工联数:" prop="flatFeed" class="mab" >
- <el-input v-model="formdata3.value.联数" id="加工联数" @keydown="ent1($event)" style="width: 100px; margin-right: 30px;" />
- </el-form-item>
- </el-col>
- <el-col :span="5">
- <el-form-item label="产量:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.产量" id="产量" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- <el-col :span="5">
- <el-form-item label="制程废品:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.制程废品" id="制程废品" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24" style="height: 40px;">
- <el-col :span="4">
- <el-form-item label="制程次品:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.制程次品" id="制程次品" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- <el-col :span="4">
- <el-form-item label="前工序废:" prop="flatFeed" class="mab" >
- <el-input v-model="formdata3.value.前工序废" id="前工序废" @keydown="ent1($event)" style="width: 100px; margin-right: 30px;" />
- </el-form-item>
- </el-col>
- <el-col :span="4">
- <el-form-item label="来料异常:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.来料异常" id="来料异常" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="换版类型:" prop="flatFeed" class="mab">
- <el-radio v-model="formdata3.value.换版类型" label="装新版" @keydown="ent1($event)"
- :readonly="type2 !== 'create'"
- :title="type2 === 'create' ? '新增' : 'readonly'">装新版</el-radio>
- <el-radio v-model="formdata3.value.换版类型" label="装旧版" @keydown="ent1($event)"
- :readonly="type2 !== 'create'"
- :title="type2 === 'create' ? '新增' : 'readonly'">装旧版</el-radio>
- <el-radio v-model="formdata3.value.换版类型" label="换版" @keydown="ent1($event)"
- :readonly="type2 !== 'create'"
- :title="type2 === 'create' ? '新增' : 'readonly'">换版</el-radio>
- </el-form-item>
- </el-col>
- <el-col :span="4">
- <el-form-item label="换版联拼数:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.换版联拼数" id="换版联拼数" @keydown="ent1($event)" style="width: 100px;" :disabled="type2 !== 'create'"
- :title="type2 === 'create' ? '新增' : 'disabled'"/>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="30" style="height: 40px;">
- <el-col :span="5">
- <el-form-item label="装版总工时:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.装版总工时" id="装版总工时" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- <el-col :span="5">
- <el-form-item label="装版补产工时:" prop="flatFeed" class="mab" >
- <el-input v-model="formdata3.value.装版工时" id="装版补产工时" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- <el-col :span="5">
- <el-form-item label="打样总工时:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.打样总工时" id="打样总工时" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- <el-col :span="5">
- <el-form-item label="打样补产工时:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.打样工时" id="打样补产工时" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- <el-col :span="4">
- <el-form-item label="保养工时:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.保养工时" id="保养工时" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24">
- <el-col :span="6">
- <el-form-item label="异常总工时:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.异常总工时" id="异常总工时" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="" />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="异常类型:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.异常类型" disabled id="异常类型" style="width: 100px;" />
- </el-form-item>
- </el-col>
- <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
- <el-form-item label="异常补贴工时" prop="id" style="margin-top:0px; margin-bottom: 1px;">
- <el-input v-model="formdata3.value.异常补时" id="异常补贴工时" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24" style="height: 40px;">
- <el-col :span="8">
- <el-form-item label="通电工时:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.通电工时" id="通电工时" @keydown="ent1($event)" style="width: 100px;" />
- </el-form-item>
- </el-col>
- <el-col :span="5" style="margin-top:0px; margin-bottom: 1px;">
- <el-form-item label="定额代号" prop="id" style="margin-top:0px; margin-bottom: 1px;">
- <el-input v-model="formdata3.value.dedh" id="定额代号" readonly style="margin-top:0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="" />
- </el-form-item>
- </el-col>
- <el-col :span="3" style="margin-top:0px; margin-bottom: 1px;">
- <el-form-item label="码包" prop="id" style="margin-top:0px; margin-bottom: 1px;">
- <el-input v-model="formdata3.value.码包" id="码包" style="margin-top:0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24" style="height: 40px;">
- <el-col :span="5">
- <el-form-item label="码开始行:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.码开始行" id="码开始行" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- <el-col :span="5">
- <el-form-item label="码结束行:" prop="flatFeed" class="mab" >
- <el-input v-model="formdata3.value.码结束行" id="码结束行" @keydown="ent1($event)" style="width: 100px; margin-right: 30px;" />
- </el-form-item>
- </el-col>
- <el-col :span="5">
- <el-form-item label="主电表:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.主电表" id="主电表" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- <el-col :span="7">
- <el-form-item label="辅电表:" prop="flatFeed" class="mab">
- <el-input v-model="formdata3.value.辅电表" id="辅电表" @keydown="ent1($event)" style="width: 200px;" />
- </el-form-item>
- </el-col>
- </el-row>
- <div style="display: flex;">
- <div style="width: 95vh;">组员及分配比例</div>
- <div style="width: 9vh;margin-left: 70px;">特殊组员</div>
- <div style="">拉料人员</div>
- </div>
- <el-row :gutter="10" style="margin-top: 1vh;">
- <el-col :span="2"><el-input v-model="formdata3.value.bzdh" id="bzdh" @keydown="ent1($event)"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员1['编号']" id="bh1" @keyup.enter.native="GetYg($event, '1')"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员2['编号']" id="bh2" @keyup.enter.native="GetYg($event, '2')"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员3['编号']" id="bh3" @keyup.enter.native="GetYg($event, '3')"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员4['编号']" id="bh4" @keyup.enter.native="GetYg($event, '4')"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员5['编号']" id="bh5" @keyup.enter.native="GetYg($event, '5')"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员6['编号']" id="bh6" @keyup.enter.native="GetYg($event, '6')"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员7['编号']" id="bh7" @keyup.enter.native="GetYg($event, '7')"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员8['编号']" id="bh8" @keyup.enter.native="GetYg($event, '8')"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员9['编号']" id="bh9" @keyup.enter.native="GetYg($event, '9')"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员10['编号']" id="bh10" @keyup.enter.native="GetYg($event, '10')"/></el-col>
- <el-col :span="2">
- <el-select v-model="formdata3.value.拉料['编号']" id="bh11" @change="GetLl('create')">
- <el-option label="" value="" />
- <el-option label="自备" value="自备" />
- <el-option label="李有文" value="李有文" />
- <el-option label="张杭强" value="张杭强" />
- <el-option label="朱喜文" value="朱喜文" />
- <el-option label="刘旭青" value="刘旭青" />
- <el-option label="刘芳民" value="刘芳民" />
- <el-option label="李当林" value="李当林" />
- <el-option label="王赞文" value="王赞文" />
- </el-select>
- </el-col>
- </el-row>
- <el-row :gutter="10" style="margin-top: 10px;">
- <el-col :span="2"></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员1['姓名']" id="name1"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员2['姓名']" id="name2"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员3['姓名']" id="name3"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员4['姓名']" id="name4"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员5['姓名']" id="name5"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员6['姓名']" id="name6"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员7['姓名']" id="name7"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员8['姓名']" id="name8"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员9['姓名']" id="name9"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员10['姓名']" id="name10"/></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.拉料['姓名']" id="name11"/></el-col>
- </el-row>
- <el-row :gutter="10" style="margin-top: 10px;">
- <el-col :span="2"></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员1['比例']" id="rate1" @input="updateTotal" @keydown="ent($event, 'bh11', 'rate1', 'rate2')" placeholder="" /></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员2['比例']" id="rate2" @input="updateTotal" @keydown="ent($event, 'rate1', 'rate2', 'rate3')" placeholder="" /></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员3['比例']" id="rate3" @input="updateTotal" @keydown="ent($event, 'rate2', 'rate3', 'rate4')" placeholder="" /></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员4['比例']" id="rate4" @input="updateTotal" @keydown="ent($event, 'rate3', 'rate4', 'rate5')" placeholder="" /></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员5['比例']" id="rate5" @input="updateTotal" @keydown="ent($event, 'rate4', 'rate5', 'rate6')" placeholder="" /></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员6['比例']" id="rate6" @input="updateTotal" @keydown="ent($event, 'rate5', 'rate6', 'rate7')" placeholder="" /></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员7['比例']" id="rate7" @input="updateTotal" @keydown="ent($event, 'rate6', 'rate7', 'rate8')" placeholder="" /></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员8['比例']" id="rate8" @input="updateTotal" @keydown="ent($event, 'rate7', 'rate8', 'rate9')" placeholder="" /></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员9['比例']" id="rate9" @input="updateTotal" @keydown="ent($event, 'rate8', 'rate9', 'rate10')" placeholder="" /></el-col>
- <el-col :span="2"><el-input v-model="formdata3.value.组员10['比例']" id="rate10" @input="updateTotal" @keydown="ent($event, 'rate9', 'rate10', '工单编号')" placeholder="" /></el-col>
- <el-col :span="2"></el-col>
- </el-row>
- <template #footer>
- <div class="dialog-footer">
- <el-button
- v-if="type2 !== 'create'"
- type="primary"
- @click="banzuzhang"
- >
- 班组长审核
- </el-button>
-
- <el-button
- v-if="type2 !== 'create'"
- type="primary"
- @click="tongjiyuan"
- >
- 统计员审核
- </el-button>
-
- <el-button @click="closeDialog">取 消</el-button>
- <el-button type="primary" @click="chanliangenterDialog">确 定</el-button>
- </div>
- </template>
- </el-dialog>
-
-
- <!-- 班组长审核 -->
- <el-dialog v-model="leaderAuditDialog" title="班组长审核" width="700px" @close="closeLeaderAudit">
- <div class="detail-form">
- <el-row :gutter="20">
-
- <el-col :span="12">
- <el-form-item label="系数" label-width="80px">
- <el-input v-model="leaderForm.coefficient" placeholder="请输入系数" />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="换版联拼数">
- <el-input v-model="leaderForm.换版联拼数" placeholder="" />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="换版总工时">
- <el-input v-model="leaderForm.换版总工时" placeholder="" />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="换版类型" label-width="80px">
- <el-select v-model="leaderForm.换版类型" placeholder="请选择换版类型">
- <el-option label="装新版" value="装新版" />
- <el-option label="装旧版" value="装旧版" />
- <el-option label="换版" value="换版" />
- </el-select>
- </el-form-item>
- </el-col>
-
- </el-row>
- </div>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="closeLeaderAudit">取消</el-button>
- <el-button type="primary" @click="submitLeaderAudit">确认</el-button>
- </span>
- </template>
- </el-dialog>
-
- <!-- 统计员审核 -->
- <el-dialog v-model="statAuditDialog" title="统计员审核" width="700px" @close="closeStatAudit">
- <div class="detail-form">
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="装版补产工时">
- <el-input v-model="statForm.装版补产工时" placeholder="" />
- </el-form-item>
- </el-col>
- </el-row>
- </div>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="closeStatAudit">取消</el-button>
- <el-button type="primary" @click="submitStatAudit">确认</el-button>
- </span>
- </template>
- </el-dialog>
-
-
-
-
-
-
- <!-- JP机新增定额代号弹窗 -->
- <el-dialog v-model="FJPGetDedhVisible" id="tableFplb" @keydown="FJPent($event)" style="margin-top: 5%;" >
- <el-form>
- <el-form-item label="选择定额代号" class="mab" prop="keyOrder"></el-form-item>
- <div style="border:1px solid #eee; width:100%; height: 600px; overflow-y: auto;">
- <el-tree :data="FJPGetDedhtreeData" ref="FJPtable_fplb"
- @keydown="FJPhandleTreeKeydown"
- :props="{ children: 'children',label: 'label'}"
- node-key="id" @node-click="FJPhandleFplbClick">
- </el-tree>
- </div>
- </el-form>
- </el-dialog>
-
- <!-- JP机台独立页面 新增-->
- <el-dialog v-model="JPchanliangVisible" :before-close="JPcloseDialog" style="width: 60%;margin-top: 5%;" :title="'新增班组产量提报'" destroy-on-close>
- <el-row>
- <el-form :model="JPformdata" label-position="right" ref="elFormRef" :rules="rule" >
- <el-row :gutter="24">
- <el-form-item label="工单编号:" prop="customerCode" class="mab" label-width="90">
- <el-input v-model="JPformdata['工单编号']" style="width: 110px;" placeholder="Enter回车" id="新增工单编号" @blur="JPgetCPMCsubmit()" @keydown="JPent($event)"/>
- </el-form-item>
- <el-form-item label="产品名称:" prop="customerName" class="mab" label-width="100">
- <el-input v-model="JPformdata['产品名称']" readonly style="width: 520px;" id="产品名称"/>
- </el-form-item>
- </el-row>
-
- <el-row :gutter="24">
- <el-form-item label="印件号:" prop="customerCode" class="mab" label-width="90">
- <el-input v-model="JPformdata['印件号']" style="width: 110px;" id="印件号" placeholder="Enter回车" @keydown="JPent($event)"/>
- </el-form-item>
- <el-form-item label="印件名称:" prop="customerName" class="mab" label-width="100">
- <el-input v-model="JPformdata['印件名称']" readonly style="width: 520px;" id="印件名称" />
- </el-form-item>
- </el-row>
-
- <el-row :gutter="24">
- <el-form-item label="工序号:" prop="customerCode" class="mab" label-width="90">
- <el-input v-model="JPformdata['工序号']" style="width: 110px;" id="工序号" placeholder="Enter回车" @blur="JPgetGXsubmit()" @keydown="JPent($event)"/>
- </el-form-item>
- <el-form-item label="工序名称" prop="customerName" class="mab" label-width="100">
- <el-input v-model="JPformdata['工序名称']" readonly style="width: 300px;" id="工序名称" />
- </el-form-item>
- <el-form-item label="检验类别:" prop="customerCode" class="mab" label-width="90">
- <el-input v-model="JPformdata['检验类别']" readonly placeholder="Enter回车" style="width: 100px;" id="检验类别" @keydown="JPent($event)"/>
- </el-form-item>
- <el-form-item label="废品率系数:" prop="customerCode" class="mab" label-width="100">
- <el-input v-model="JPformdata['废品率系数']" style="width: 100px;" id="废品率系数" @keydown="JPent($event)"/>
- </el-form-item>
- </el-row>
-
- <el-row :gutter="24">
- <el-form-item label="日期: " label-width="90">
- <el-input type="date" max="9999-12-31" v-model="JPformdata['日期']" id = '日期' @keydown="JPent($event)" @focus="rqHandleFocus()"
- style="width: 110px;" />
- </el-form-item>
- <el-form-item label="机器:" prop="customerCode" class="mab" label-width="100">
- <el-input v-model="JPformdata['机器']" style="width: 110px;" placeholder="Enter回车" id="机器" @keydown="JPent($event)"/>
- </el-form-item>
- <el-form-item label="流程标牌:" prop="customerCode" class="mab" label-width="100">
- <el-input v-model="JPformdata['流程标牌']" style="width: 80px;" id="流程标牌" @keydown="JPent($event)"/>
- </el-form-item>
- <el-form-item label="计件箱数:" prop="customerCode" class="mab" label-width="100">
- <el-input v-model="JPformdata['计件箱数']" style="width: 100px;" id="计件箱数" @keydown="JPent($event)"/>
- </el-form-item>
- <el-form-item label="每箱数量:" prop="customerCode" class="mab" label-width="100">
- <el-input v-model="JPformdata['每箱数量']" style="width: 100px;" id="每箱数量" @keydown="JPent($event)"/>
- </el-form-item>
- </el-row>
-
- <el-row :gutter="24">
- <el-form-item label="换膜总工时" prop="customerCode" class="mab" label-width="90">
- <el-input v-model="JPformdata['换膜总工时']" style="width: 100px;" id="换膜总工时" @keydown="JPent($event)"/>
- </el-form-item>
- <el-form-item label="换膜补产工时" prop="customerCode" class="mab" label-width="110">
- <el-input v-model="JPformdata['换膜补产工时']" style="width: 100px;" id="换膜总工时" @keydown="JPent($event)"/>
- </el-form-item>
- <el-form-item label="保养工时:" prop="customerCode" class="mab" label-width="290">
- <el-input v-model="JPformdata['保养工时']" style="width: 100px;" id="保养工时" @keydown="JPent($event)"/>
- </el-form-item>
- </el-row>
-
- <el-row :gutter="24">
- <el-form-item label="异常总工时:" prop="customerCode" class="mab" label-width="110">
- <el-input v-model="JPformdata['异常总工时']" style="width: 100px;" id="异常总工时" @keydown="JPent($event)"/>
- </el-form-item>
- <el-form-item label="异常类型:" prop="customerCode" class="mab" label-width="110">
- <el-input v-model="JPformdata['异常类型']" style="width: 100px;" id="异常类型" @keydown="JPent($event)"/>
- </el-form-item>
- <el-form-item label="异常补贴工时:" prop="customerCode" class="mab" label-width="290">
- <el-input v-model="JPformdata['异常补贴工时']" style="width: 100px;" id="异常补贴工时" @keydown="JPent($event)"/>
- </el-form-item>
- <el-form-item label="通电工时" prop="customerCode" class="mab" label-width="100">
- <el-input v-model="JPformdata['通电工时']" style="width: 100px;" id="通电工时" @keydown="JPent($event)"/>
- </el-form-item>
- </el-row>
-
- <el-row :gutter="24">
- <el-form-item label="定额代号:" prop="customerCode" class="mab" label-width="90">
- <el-input v-model="JPformdata['定额代号']" style="width: 160px;" placeholder="Enter回车" id="定额代号" @keydown="JPent($event)"/>
- </el-form-item>
- </el-row>
-
- <br>
-
- <div style="display: flex;">
- <div>组员及分配比例</div>
- </div>
- <el-row :gutter="10" style="margin-top: 1vh;">
- <el-col :span="2">
- <el-input v-model="JPformdata['bzdh']" id="bzdh" @keydown="JPent($event)"/>
- </el-col>
- <el-col v-for="i in 10" :key="i" :span="2">
- <el-input v-model="JPformdata['组员' + i]['编号']" :id="'bh' + i" @keydown="JPent($event,i,'1')"/>
- </el-col>
- </el-row>
-
- <el-row :gutter="10" style="margin-top: 1vh;">
- <el-col :span="2">
- <!-- 空列,用于对齐 -->
- </el-col>
- <el-col v-for="i in 10" :key="i" :span="2">
- <el-input v-model="JPformdata['组员' + i]['姓名']" :id="'xm' + i" readonly/>
- </el-col>
- </el-row>
-
- <el-row :gutter="10" style="margin-top: 1vh;">
- <el-col :span="2">
- <!-- 空列,用于对齐 -->
- </el-col>
- <el-col v-for="i in 10" :key="i" :span="2">
- <el-input v-model="JPformdata['组员' + i]['比例']" :id="'bl' + i" @keydown="JPent($event,i,'比例')" />
- </el-col>
- </el-row>
- </el-form>
- </el-row>
- <template #footer>
- <div class="dialog-footer" style="text-align: right;">
- <el-button @click="JPcloseDialog">取 消</el-button>
- <el-button type="primary" @click="JPenterDialog">确 定</el-button>
- </div>
- </template>
- </el-dialog>
-
- <!-- JP检品独立 印件选择-->
- <el-dialog v-model="JPdialogSelectVisible_Yj" title="选择" destroy-on-close width="600px" style='height: 400px;' @keydown="JPselect_Yj($event)" >
- <el-table tooltip-effect="dark" :data="JPselectData_Yj" ref="table_xzyj"
- row-key="ID" highlight-current-row="true"
- border style="width:100%"
- :row-style="{ height: '20px' }" :cell-style="{ padding: '0px' }"
- :header-row-style="{ height: '20px' }" :header-cell-style="{ padding: '0px' }"
- @row-dblclick="JPhandleSelectClick_Yj" >
- <el-table-column prop="yjno" label="印件号" width="80" />
- <el-table-column prop="yjmc" label="印件名称" width="480" />
- </el-table>
- </el-dialog>
-
- <!-- JP检品独立 新增机台机器-->
- <el-dialog v-model="JPdialogVisible_JT" title="机台机器选择" destroy-on-close width="600px" style="height: 600px;" @keydown="JPselect_JT($event)">
- <el-table tooltip-effect="dark" :data="JPselectData_JT" row-key="ID" highlight-current-row="true"
- border style="width:100%" ref="table_JT" :row-style="{ height: '20px' }" :cell-style="{ padding: '0px' }"
- :header-row-style="{ height: '20px' }" :header-cell-style="{ padding: '0px' }" @row-dblclick="JPhandleSelectClick_JT">
- <el-table-column prop="机台" label="机台" />
- </el-table>
- </el-dialog>
-
-
- <!-- JP检品独立 新增印件选择 -->
- <el-dialog v-model="JPdialogSelectVisible_Gx" title="选择" destroy-on-close width="600px" style="margin-top: 2%;" @keydown="JPselect_xz($event)" >
- <el-table tooltip-effect="dark" :data="JPselectData_Gx" ref="table_gx"
- row-key="ID" highlight-current-row="true"
- :row-style="{ height: '0px' }" :cell-style="{ padding: '0px' }"
- :header-row-style="{ height: '0px' }" :header-cell-style="{ padding: '0px' }"
- border style="width:100%"
- @row-dblclick="JPhandleSelectClick_Gx">
- <el-table-column prop="name" label="" width="560" />
- </el-table>
- </el-dialog>
-
- <el-dialog v-model="JPdialogSelectVisible_LX" title="选择" destroy-on-close width="300px" @keydown="JPselect_jylb($event)" >
- <el-table
- :data="JPtableData"
- ref="jylb_table" row-key="ID"
- :row-style="{ height: '50px' }"
- :cell-style="{ padding: '0px' }"
- :header-row-style="{ height: '0px' }"
- :header-cell-style="{ padding: '0px' }"
- @row-dblclick="JPhandleRowClick"
- highlight-current-row
- >
- <el-table-column prop="name" label="名称" width="150"></el-table-column>
- <el-table-column prop="type" label="类别" width="100"></el-table-column>
- </el-table>
- </el-dialog>
-
- <el-dialog v-model="MachineVisible" :before-close="closeMachineVisible" :title="type === '0' ? '新增' : '机台状态显示'"
- destroy-on-close width="80%" style="height: 100%;">
- <div class="button-container">
- <button v-for="(item, index) in machineData" :key="index" class="custom-button" @click="handleButtonClick(item.设备编号)">
- <img :src="`/src/assets/${item.状态}.png`" :alt="altText" style="max-width: 100%; height: auto;"/>
- <span style="margin-top: 8px;">{{ item.设备编号 + ' - ' + item.设备名称 }}</span>
- </button>
- </div>
- </el-dialog>
- <!-- JP机新增定额代号弹窗 -->
- <el-dialog v-model="GetDedhVisible" id="tableFplb" @keydown="ent($event)" style="margin-top: 5%;" >
- <el-form>
- <el-form-item label="选择定额代号" class="mab" prop="keyOrder"></el-form-item>
- <div style="border:1px solid #eee; width:100%; height: 600px; overflow-y: auto;">
- <el-tree :data="GetDedhtreeData" ref="table_fplb"
- @keydown="handleTreeKeydown"
- :props="{ children: 'children',label: 'label'}"
- node-key="id" @node-click="handleFplbClick">
- </el-tree>
- </div>
- </el-form>
- </el-dialog>
- <!--当日上报产量 组员及分配比例-->
- <el-dialog v-model="blModellist" :before-close="() => blModellist = false" style="width: 20%" @keydown="selectBZRRs($event)">
- <el-form>
- <div>
- <el-table :data="employeeDatalist" border :show-overflow-tooltip="true" :cell-class-name="blplanUsageCellClass"
- ref="tableBZRRs"
- highlight-current-row="true"
- @row-click="tablebllickHandlerlist($event)">
- <el-table-column prop="员工编号" label="员工编号"></el-table-column>
- <el-table-column prop="ygxm" label="员工姓名"></el-table-column>
- </el-table>
- </div>
- </el-form>
- </el-dialog>
-
- <!--当日上报产量 组员及分配比例-->
- <el-dialog v-model="JPblModellist" style="width: 20%" @keydown="JPselect_zyfp($event)" >
- <el-form>
- <div>
- <el-table :data="JPemployeeDatalist"
- ref="zyfp_table" row-key="ID"
- :row-style="{ height: '0px' }"
- :cell-style="{ padding: '0px' }"
- :header-row-style="{ height: '0px' }"
- :header-cell-style="{ padding: '0px' }"
- highlight-current-row
- border :show-overflow-tooltip="true" :cell-class-name="JPblplanUsageCellClass" @row-click="JPtablebllickHandlerlist($event)">
- <el-table-column prop="员工编号" label="员工编号"></el-table-column>
- <el-table-column prop="ygxm" label="员工姓名"></el-table-column>
- </el-table>
- </div>
- </el-form>
- </el-dialog>
-
-
- <!-- 修改班组产量提报 -->
- <el-dialog v-model="JPchanliangVisibleedit" :before-close="JPcloseDialogedit" style="width: 60%;margin: 50px auto" :title="'修改班组产量提报'" destroy-on-close>
- <el-row>
- <el-form :model="JPformdata" label-position="right" ref="elFormRef" :rules="rule" >
- <el-row :gutter="24">
- <el-form-item label="工单编号:" prop="customerCode" class="mab" label-width="90">
- <el-input v-model="JPformdataedit['工单编号']" style="width: 110px;" placeholder="Enter回车" id="修改工单编号" @blur="JPgetCPMCsubmitedit()" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="" prop="customerName" class="mab" >
- <el-input v-model="JPformdataedit['产品名称']" readonly style="width: 520px;" id="产品名称" />
- </el-form-item>
- </el-row>
-
- <el-row :gutter="24">
- <el-form-item label="印件号:" prop="customerCode" class="mab" label-width="90">
- <el-input v-model="JPformdataedit['印件号']" style="width: 110px;" id="印件号" placeholder="Enter回车" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="" prop="customerName" class="mab">
- <el-input v-model="JPformdataedit['印件名称']" readonly style="width: 520px;" id="印件名称" />
- </el-form-item>
- </el-row>
-
- <el-row :gutter="24">
- <el-form-item label="工序号" prop="customerCode" class="mab" label-width="90">
- <el-input v-model="JPformdataedit['工序号']" style="width: 110px;" id="工序号" placeholder="Enter回车" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="" prop="customerName" class="mab">
- <el-input v-model="JPformdataedit['工序名称']" readonly style="width: 520px;" id="工序名称" />
- </el-form-item>
- <el-form-item label="检验类别:" prop="customerCode" class="mab" label-width="100">
- <el-input v-model="JPformdataedit['检验类别']" readonly style="width: 110px;" id="检验类别" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="废品率系数:" prop="customerCode" class="mab" label-width="100">
- <el-input v-model="JPformdataedit['废品率系数']" style="width: 110px;" id="废品率系数" @keydown="JPentedit($event)"/>
- </el-form-item>
- </el-row>
-
- <el-row :gutter="24">
- <el-form-item label="日期:" prop="customerCode" class="mab" label-width="90">
- <el-date-picker v-model="JPformdataedit['日期']" style="width: 130px;" type="datetime" format="YYYY/MM/DD" value-format="YYYY-MM-DD" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="机器:" prop="customerCode" class="mab" label-width="80">
- <el-input v-model="JPformdataedit['机器']" style="width: 90px;" id="机器" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="流程标牌:" prop="customerCode" class="mab" label-width="80">
- <el-input v-model="JPformdataedit['流程标牌']" style="width: 110px;" id="流程标牌" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="计件箱数:" prop="customerCode" class="mab" label-width="180">
- <el-input v-model="JPformdataedit['计件箱数']" style="width: 110px;" id="计件箱数" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="每箱数量:" prop="customerCode" class="mab" label-width="100">
- <el-input v-model="JPformdataedit['每箱数量']" style="width: 110px;" id="每箱数量" @keydown="JPentedit($event)"/>
- </el-form-item>
- </el-row>
-
- <el-row :gutter="24">
- <el-form-item label="换膜总工时" prop="customerCode" class="mab" label-width="90">
- <el-input v-model="JPformdataedit['换膜总工时']" style="width: 110px;" id="换膜总工时" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="换膜补产工时:" prop="customerCode" class="mab" label-width="130">
- <el-input v-model="JPformdataedit['换膜补产工时']" style="width: 110px;" id="换膜补产工时" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="保养工时" prop="customerCode" class="mab" label-width="320">
- <el-input v-model="JPformdataedit['保养工时']" style="width: 110px;" id="保养工时:" @keydown="JPentedit($event)"/>
- </el-form-item>
- </el-row>
- <el-row :gutter="24">
- <el-form-item label="异常总工时" prop="customerCode" class="mab" label-width="110">
- <el-input v-model="JPformdataedit['异常总工时']" style="width: 110px;" id="异常总工时" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="异常类型:" prop="customerCode" class="mab" label-width="130">
- <el-input v-model="JPformdataedit['异常类型']" style="width: 110px;" id="异常类型" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="异常补贴工时" prop="customerCode" class="mab" label-width="350">
- <el-input v-model="JPformdataedit['异常补贴工时']" style="width: 110px;" id="异常补贴工时" @keydown="JPentedit($event)"/>
- </el-form-item>
- <el-form-item label="通电工时" prop="customerCode" class="mab" label-width="90">
- <el-input v-model="JPformdataedit['通电工时']" style="width: 110px;" id="通电工时" @keydown="JPentedit($event)"/>
- </el-form-item>
- </el-row>
- <el-row :gutter="24">
- <el-form-item label="定额代号" prop="customerCode" class="mab" label-width="90">
- <el-input v-model="JPformdataedit['定额代号']" style="width: 200px;" readonly id="定额代号" @keydown="JPentedit($event)"/>
- </el-form-item>
- </el-row>
-
-
- <div style="display: flex;">
- <div>组员及分配比例</div>
- </div>
- <el-row :gutter="10" style="margin-top: 1vh;">
- <el-col :span="2">
- <el-input v-model="JPformdataedit['bzdh']" id="bzdh" @keydown="JPentedit($event)"/>
- </el-col>
- <el-col v-for="i in 10" :key="i" :span="2">
- <el-input v-model="JPformdataedit['组员' + i]['编号']" :id="'bh' + i" @keydown="JPentedit($event,i,'1')"/>
- </el-col>
- </el-row>
-
- <el-row :gutter="10" style="margin-top: 1vh;">
- <el-col :span="2">
- <!-- 空列,用于对齐 -->
- </el-col>
- <el-col v-for="i in 10" :key="i" :span="2">
- <el-input readonly v-model="JPformdataedit['组员' + i]['姓名']" :id="'xm' + i" @keydown="JPentedit($event)"/>
- </el-col>
- </el-row>
-
- <el-row :gutter="10" style="margin-top: 1vh;">
- <el-col :span="2">
- <!-- 空列,用于对齐 -->
- </el-col>
- <el-col v-for="i in 10" :key="i" :span="2">
- <el-input v-model="JPformdataedit['组员' + i]['比例']" :id="'bl' + i" @keydown="JPentedit($event)" />
- </el-col>
- </el-row>
- </el-form>
- </el-row>
- <template #footer>
- <div class="dialog-footer" style="text-align: right;">
- <el-button @click="JPcloseDialogedit">取 消</el-button>
- <el-button type="primary" @click="JPenterDialogedit">确 定</el-button>
- </div>
- </template>
- </el-dialog>
-
-
- <!-- 修改 JP检品独立 印件选择-->
- <el-dialog v-model="JPdialogSelectVisible_Yjedit" title="选择" destroy-on-close width="600px" @keydown="JPselect_Yjedit($event)" >
- <el-table tooltip-effect="dark" :data="JPselectData_Yjedit" ref="table_xgyj"
- row-key="ID" highlight-current-row="true"
- border style="width:100%"
- @row-dblclick="JPhandleSelectClick_Yjedit" >
- <el-table-column prop="yjno" label="印件号" width="80" />
- <el-table-column prop="yjmc" label="印件名称" width="480" />
- </el-table>
- </el-dialog>
-
- <!-- 修改 JP检品独立 工序选择 -->
- <el-dialog v-model="JPdialogSelectVisible_Gxedit" title="选择" destroy-on-close width="600px" style="margin-top: 2%;" @keydown="JPselect_xzedit($event)">
- <el-table tooltip-effect="dark" :data="JPselectData_Gxedit" ref="table_gxedit"
- row-key="ID" highlight-current-row="true"
- :row-style="{ height: '0px' }" :cell-style="{ padding: '0px' }"
- :header-row-style="{ height: '0px' }" :header-cell-style="{ padding: '0px' }"
- border style="width:100%"
- @row-dblclick="JPhandleSelectClick_Gxedit">
- <el-table-column prop="name" label="" width="560" />
- </el-table>
- </el-dialog>
- <!-- JP检品独立 修改机台机器-->
- <el-dialog v-model="JPdialogVisible_JTedit" title="机台机器选择" destroy-on-close width="600px" style="height: 600px;" @keydown="JPselect_JTedit($event)">
- <el-table tooltip-effect="dark" :data="JPselectData_JTedit" row-key="ID" highlight-current-row="true"
- border style="width:100%" ref="table_JTedit" :row-style="{ height: '20px' }" :cell-style="{ padding: '0px' }"
- :header-row-style="{ height: '20px' }" :header-cell-style="{ padding: '0px' }" @row-dblclick="JPhandleSelectClick_JTedit">
- <el-table-column prop="机台" label="机台" />
- </el-table>
- </el-dialog>
-
-
- <el-dialog v-model="JPdialogSelectVisible_LXedit" title="选择" destroy-on-close width="300px" @keydown="JPselect_jylbedit($event)">
- <el-table :data="JPtableDataedit" ref="jylbedit_table"
- :row-style="{ height: '50px' }" :cell-style="{ padding: '0px' }"
- :header-row-style="{ height: '0px' }" :header-cell-style="{ padding: '0px' }"
- @row-dblclick="JPhandleRowClickedit" highlight-current-row>
- <el-table-column prop="name" label="名称" width="150"></el-table-column>
- <el-table-column prop="type" label="类别" width="100"></el-table-column>
- </el-table>
- </el-dialog>
- <!-- JP机修改定额代号弹窗 -->
- <el-dialog v-model="GetDedhVisibleedit" id="tableFplb" @keydown="entedit($event)" style="margin-top: 5%;" >
- <el-form>
- <el-form-item label="选择定额代号" class="mab" prop="keyOrder"></el-form-item>
- <div style="border:1px solid #eee; width:100%; height: 600px; overflow-y: auto;">
- <el-tree :data="GetDedhtreeDataedit" ref="table_fplbedit" @keydown="handleTreeKeydownedit"
- :props="{ children: 'children',label: 'label'}" node-key="id" @node-click="handleFplbClickedit">
- </el-tree>
- </div>
- </el-form>
- </el-dialog>
-
- <!--修改 JP检品机 当日上报产量 组员及分配比例-->
- <el-dialog v-model="JPblModellistedit" style="width: 20%" @keydown="JPselect_zyfpedit($event)" >
- <el-form>
- <div>
- <el-table :data="JPemployeeDatalistedit" ref="zyfpedit_table" row-key="ID" highlight-current-row
- :row-style="{ height: '0px' }" :cell-style="{ padding: '10px' }"
- :header-row-style="{ height: '0px' }" :header-cell-style="{ padding: '10px' }"
- border :show-overflow-tooltip="true" :cell-class-name="JPblplanUsageCellClassedit"
- @row-click="JPtablebllickHandlerlistedit($event)">
- <el-table-column prop="员工编号" label="员工编号"></el-table-column>
- <el-table-column prop="ygxm" label="员工姓名"></el-table-column>
- </el-table>
- </div>
- </el-form>
- </el-dialog>
- <el-dialog v-model="hesuanVisible" :before-close="closehesuanVisible" title="核算参数调整" destroy-on-close width="40%" style="height: 50%;">
- <div>
- <el-radio-group v-model="selected" @change="agreeChange" style="display: flex; flex-direction: column;">
- <div style="display: flex; align-items: center;">
- <label>参数类型:</label>
- <el-radio label="难度调整系数"></el-radio>
- </div>
- <div style="display: flex; align-items: center;margin-left: 40px;">
- <el-radio label="凹印版距"></el-radio>
- </div>
- <div style="display: flex; align-items: center;margin-left: 25px;">
- <el-radio label="色度数"></el-radio>
- </div>
- <div style="display: flex; align-items: center;margin-left: 55px;">
- <el-radio label="废品率系数"></el-radio>
- </div>
- </el-radio-group>
- </div>
- <div style="margin-left: 70px;">
- <el-col :span="15">
- <el-form-item label="废品率系数:" prop="flatFeed" class="mab" v-if="FPlxs === true">
- <el-input v-model="hesuanValue.废品率系数" id="辅电表" @keydown="ent1($event)" style="width: 200px;" v-if="FPlxs === true"/>
- </el-form-item>
- <el-form-item label="缩放系数:" prop="flatFeed" class="mab" v-if="SFType === true">
- <el-input v-model="hesuanValue.缩放系数" id="辅电表" @keydown="ent1($event)" style="width: 200px;" v-if="SFType === true"/>
- </el-form-item>
- <el-form-item label="产品板距:" prop="flatFeed" class="mab" v-if="CPType === true">
- <el-input v-model="hesuanValue.产品板距" id="辅电表" @keydown="ent1($event)" style="width: 200px;" v-if="CPType === true"/>
- </el-form-item>
- <el-form-item label="印刷方式:" prop="flatFeed" class="mab" v-if="CPType === true">
- <el-select v-model="hesuanValue.印刷方式" placeholder="" style="width: 190px;" v-if="CPType === true" >
- <el-option label="卷对卷" value="卷对卷"></el-option>
- <el-option label="卷对张" value="卷对张"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="色度数 :" prop="flatFeed" class="mab" v-if="SDType === true">
- <el-input v-model="hesuanValue.色度数" id="辅电表" @keydown="ent1($event)" :clearable="true" style="width: 200px;" v-if="SDType === true" />
- </el-form-item>
- </el-col>
- </div>
- <template #footer>
- <div class="dialog-footer">
- <el-button @click="hesuanVisiblecloseDialog">取 消</el-button>
- <el-button type="primary" @click="hesuanenterDialog">确 定</el-button>
- </div>
- </template>
- </el-dialog>
- <!--工序产量核查【弹窗】-->
- <el-dialog v-model="gd_gxclhclist" title="工序产量核查" style="width: 100%;height: 100%;margin: 0px;padding: 0px">
- <el-button type="" @click="gxclhcCancel">退出</el-button>
- <div style="width: 100%; height: 60px; padding: 0px; margin: 10px 0px 0px 0px; display: flex; align-items: center;">
- <div style="width: 100%; height: 60px; padding: 0px; display: flex; align-items: center;">
- <el-form-item label="工单编号" prop="currentProcess" style="margin-right: 20px; padding: 20px 0 0 0">
- <el-input v-model="gxclhcformData['gdbh']" @keyup.enter="gxclhcProductValue" />
- </el-form-item>
- 印件选择:
- <el-select v-model="gdwhformData.yjno" placeholder="请选择" allow-create filterable style="width: 100px;margin-right: 20px; padding: 0px;">
- <el-option v-for="option in gdwhformData.yinjian" @click="ongdwhfanclick" :key="option" :label="option" :value="option" />
- </el-select>
- <el-input v-model="inputCpmc" readonly style="width: 50vw; margin-right: 0px;" />
- </div>
- </div>
- <el-table ref="paichengRef"
- :show-overflow-tooltip="true"
- :row-style="{ height: '0px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '0px' }"
- :header-cell-style="{ padding: '0px' }"
- style="width: 100%;height: 70vh" border tooltip-effect="dark"
- highlight-current-row="true"
- @row-click="gxclhc_tableRowClick"
- :data="gxclhc_Data" row-key="ID"
- :cell-class-name="gxclhcCellClass">
- <template v-for="(item, idx) in gxclhc_Columns">
- <el-table-column #default="{ row, column, $index }" align="left" :label="item.label" :width="item.width" >
- {{row[item.prop]}}
- </el-table-column>
- </template>
- </el-table>
- </el-dialog>
-
- <!--修正核算参数-->
- <el-dialog v-model="xzhscslist" title="修正核算参数" style="width: 100%;height: 100%;margin: 0px;padding: 0px">
- <el-button type="primary" @click="xzhscsConfirm">更新</el-button>
- <el-button type="" @click="sxzhscsCancel">退出</el-button>
- <div style="width: 100%; height: 60px; padding: 0px; margin: 10px 0px 0px 0px; display: flex; align-items: center;">
- <el-form-item label="当前工单 :" prop="currentProcess" style="margin-right: 20px; padding: 0px">
- <el-input v-model="xzhscsformData['gdbh']" @keyup.enter="xzhscsgetProductValue" style="width: 200px;"/>
- <el-input v-model="xzhscsformData['cpdh']" disabled style="width: 120px;margin-left: 10px;"/>
- <el-input v-model="xzhscsformData['gdmc']" disabled style="width: 500px;"/>
- </el-form-item>
- </div>
- <div style="width: 100%; height: 60px; padding: 0px; margin: 5px 0px 0px 260px; display: flex; align-items: center;">
- <el-form-item label=" :" prop="currentProcess" style="margin-right: 20px; padding: 0px">
- <el-input v-model="xzhscsformData['yjdh']" disabled style="width: 120px;margin-left: 10px;"/>
- <el-input v-model="xzhscsformData['yjmc']" disabled style="width: 500px;"/>
- </el-form-item>
- </div>
- <el-table ref="paichengRef" :show-overflow-tooltip="true"
- :row-style="{ height: '0px' }" :header-cell-style="{ padding: '0px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '0px' }"
- style="width: 100%;height: 74vh" border tooltip-effect="dark"
- :data="sxzhscstableData" row-key="ID" :cell-class-name="sxzhscsCellClass">
- <template v-for="(item, idx) in xzhstableColumns">
- <el-table-column #default="{ row, column, $index }" align="left" :label="item.label" :width="item.width" >
- <div v-if="['难度系数', '损耗代号', '印刷方式', '版距','计损色数', '损耗系数'].includes(item.prop)">
- <el-input v-model="row[item.prop]" :clearable="false" :id="`input${idx}${$index}`" />
- </div>
- <div v-else>{{ row[item.prop] }}</div>
- </el-table-column>
- </template>
- </el-table>
- </el-dialog>
- <el-dialog v-model="gzSelVisible" title="员工工资明细查询" destroy-on-close fullscreen style="font-size: 50px;font-weight: bold;">
- <el-button v-for="ygbh in gz_bzbh" type="primary" @click="gz_ontable(ygbh)">{{ ygbh }}</el-button>
- <!-- 数据展示 -->
- <el-table ref="gz_multipleTable" style="width: 100%;height: 40vh;padding-top: 5px;" tooltip-effect="dark" :data="gz_tableData" row-key="ID"
- highlight-current-row="true" border :show-overflow-tooltip="true"
- :row-style="{ height: '20px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }">
- <el-table-column v-for="column in tableCols1" :key="column.prop" :prop="column.prop" :label="column.label" :width="column.width" show-overflow-tooltip="true" sortable/>
- </el-table>
- <!-- 数据展示 -->
- <el-table ref="gz_multipleTable2" style="width: 100%;height: 40vh;padding-top: 30px;" tooltip-effect="dark" :data="gz_tableData2" row-key="ID"
- highlight-current-row="true" border
- :row-style="{ height: '20px' }"
- :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
- :header-cell-style="{ padding: '0px' }"
- :show-overflow-tooltip="true">
- <el-table-column v-for="column in tableCols2" :key="column.prop" :prop="column.prop" :label="column.label" :width="column.width" show-overflow-tooltip="true" sortable/>
- </el-table>
- </el-dialog>
-
- <!-- 印件选择 -->
- <el-dialog v-model="dialogSelectVisible_Yj" title="选择" destroy-on-close width="600px" @keydown="select_Yj($event)" >
- <el-table tooltip-effect="dark" :data="selectData_Yj" ref="table_YJH"
- row-key="ID" highlight-current-row="true"
- border style="width:100%" @row-dblclick="handleSelectClick_Yj">
- <el-table-column prop="yjno" label="印件号" width="80" />
- <el-table-column prop="yjmc" label="印件名称" width="480" />
- </el-table>
- </el-dialog>
-
- <!-- 工序名称选择 -->
- <el-dialog v-model="dialogSelectVisible_Gx" title="工序名称选择" @keydown="select_gxmc($event)"
- destroy-on-close width="600px" style="margin-top: 3%;" >
- <el-table tooltip-effect="dark" :data="selectData_Gx" ref="table_GXMC"
- row-key="ID" highlight-current-row="true" border style="width:100%"
- @row-dblclick="handleSelectClick_Gx">
- <el-table-column prop="name" label="" width="560" />
- </el-table>
- </el-dialog>
- <!-- 拉料导出弹窗 -->
- <el-dialog v-model="onllexcel" title="拉料数据导出" destroy-on-close style="height: 20%;width: 20%;">
- <el-form-item label="选择年月" label-width="100px">
- <el-date-picker
- v-model="onllexcelrq"
- type="month"
- placeholder="选择年月"
- :default-value="new Date()"
- @change="onchange_data"
- style="width: 200px;"
- />
- </el-form-item>
- <template #footer>
- <div class="dialog-footer" style="text-align: right;">
- <el-button @click="rcgdsjcloseDialog">取消</el-button>
- <el-button type="primary" @click="rcgdsjonDialog">确定</el-button>
- </div>
- </template>
- </el-dialog>
-
- <!-- 班组选择弹窗 -->
- <el-dialog v-model="dialogSelectVisible_Bz" title="班组选择" @keydown="select_bzmc($event)"
- destroy-on-close width="400px" style="margin-top: 10%;">
- <el-table
- tooltip-effect="dark"
- :data="selectData_Bz"
- ref="table_BZMC"
- row-key="code"
- highlight-current-row
- border
- style="width:100%"
- @row-dblclick="handleSelectClick_Bz">
- <el-table-column prop="name" label="班组名称" width="380" />
- </el-table>
- </el-dialog>
- <Shebeizhuangtai
- v-if="dialogSbyxgl"
- v-model="dialogSbyxgl"
- :title="titinfo"
- :formData="formData" />
- </el-main>
- </el-container>
- </el-container>
- <PrintPage ref="printPageRef" />
- </div>
- </template>
- <script setup>
- import {
- createCompany,
- deleteCompany,
- deleteCompanyByIds,
- updateCompany,
- findCompany,
- getCompanyList
- } from '@/api/company'
- import {
- EquipmentSchedulingEdit, Procedure,
- teamDel, WorkList, WorkOrderDel,PrintDetailList,
- getOrderProcessLeft,
- getOrderProcessRight
- } from "@/api/yunyin/yunying";
- import {
- facilityTab,
- facilitychanLiang,
- facilityInspect,
- facilityProduction,
- facilityTeam,
- facilityMachineList,
- facilitySpotCheckItem,
- facilityInspectionItem,
- reportProduceInfo,
- reportName,
- reportInfo,
- reportMachineMac,
- facilityWorklist,
- setProcessStatus,
- submitDailyProduction,
- facilityDetail,
- inspectionRecord,
- getYg,
- facilityProcedure,
- facilityPrintGetTab,
- facilityPrintDetail,
- ProcessInspectionRecordsItem,
- InspectionItemAdd,
- MachineDetailList,
- ComplaintRecord,
- remodelGetTab,
- ModelChangeRecord,
- MachineChanliangDetail,
- chanliangEdit,
- productionGdmc,
- productionYjmc,
- ChanliangDel,
- ChanliangAdd,
- MachineChanliangDetailEdit,
- ChanliangWorkorder,
- ChanliangPrintDetail,
- ChanliangProcessDetail,
- EmployeeData,
- RemodelDetail,
- AdditionalInspectionRecordAdd,
- ProcessInspectionRecordsItemAdd,
- CoefficientEdit,
- ChromaDataEdit,
- PrintingModeDataEdit,
- dailysearch,
- dailygetGzByYgbh,
- productionDedh,
- JPproductionDedh,
- YieldTeamEdit,
- getTimelist,
- JPmachineDetail,
- JpChanliangEdit,
- JpUploade,
- getRejectRate,
- LazhiGongData
- } from '@/api/jixiaoguanli/jitairibaobiao'
- import{
- AccountingParameter,
- ProductNameData,
- AccountingParameterEdit,
- gdzl_MachineList,
- getOrderProcessCount,
- RejectionEdit,
- JPchanliangDetailList,
- getProductData
- } from "@/api/yunyin/yunying";
- import {
- MachineTeamAdd,
- setMachineTeam,
- PrintDetailAdd,
- PrintDetailEdit
- } from '@/api/jixiaoguanli/baogong'
- import {
- FieldInspectionRecord,
- StaGetOrderList,
- StaGetList,
- StaProcessList,
- StaGetOrderDetail,
- StaProcessAnomaly,
- Mount_Hours_getTab,
- getMountList,
- leaderConfirm,
- statisticsConfirm,
- } from "@/api/mes/job";
- import Shebeizhuangtai from '@/view/performance/09-workOrderVerification/componets/shebeizhuangtai.vue'
- // 全量引入格式化工具 请按需保留
- import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
- import * as XLSX from 'xlsx'
- import FileSaver from 'file-saver'
- import { Layout, LayoutContent, LayoutHeader, LayoutSider } from '@arco-design/web-vue'
- import { ElMessage, ElMessageBox } from 'element-plus'
- import { ref, reactive,watch,onMounted, registerRuntimeCompiler } from 'vue'
- import { useUserStore } from '@/pinia/modules/user'
- import PrintPage from './components/print.vue'
- const userStore = useUserStore()
- const sys_id='['+userStore.userInfo.userName+'/'+userStore.userInfo.nickName+']'
- defineOptions({
- name: 'Company'
- })
- // 获取当前日期
- const today = new Date();
- const year = today.getFullYear();
- const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
- const day = String(today.getDate()).padStart(2, '0');
- const hours = String(today.getHours()).padStart(2, '0');
- const minutes = String(today.getMinutes()).padStart(2, '0');
- const seconds = String(today.getSeconds()).padStart(2, '0');
- const currentDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
- const currentDates = `${year}-${month}-${day}`;
- const printPageRef = ref()
- const DelType = ref(false)
- const AddType = ref(false)
- const gytableData = ref([])
- const drzcDatas =ref([])
- const detailData = reactive([])
- const treeData=ref([])
- const yinbantreeData=ref([])
- let dianjiantreeData;
- let JTMC=ref()
- let date=ref()
- let titinfo=ref()
- let JTMCOn=ref()
- let showbutton=ref()
- let dateOn=ref()
- const activName = ref('first')
- let productCode=ref()
- const sbzyData = reactive([])
- const FPData = reactive([])
- const CLMXData = reactive([])
- let JYData = reactive([])
- const selectData = ref([])
- const isJPJT = ref(false)
- const handleNodeClick = (nodeData,node) => {
- //清空流程单查询的工单
- lcd_Gd_gdbh.value=''
- lcd_Gd_gdbh.value=formData.value.工单编号;
- // 取消所有节点的颜色
- const allNodes = document.querySelectorAll('.treecolor .el-tree-node');
- allNodes.forEach(node => {
- node.querySelector('.el-tree-node__label').style.color = '';
- });
- // 获取点击的节点
- console.log(node)
- const clickedNodeId = node['id'];
- const clickedNode = document.querySelector(`.treecolor .el-tree-node[data-key="${clickedNodeId}"]`);
- if (clickedNode) {
- // 给当前点击的节点改变颜色
- clickedNode.querySelector('.el-tree-node__label').style.color = 'red';
- }
- //存放当前节点的nodeId
- if (nodeData.level === 1) {
- CJMC.value=node.label
- showbutton.value=true
- JTMCOn.value=false
- dateOn.value=false
- MachinelList()
- DelType.value = false
- AddType.value = false
- // MachineVisible.value=true
- } else if (nodeData.level === 2) {
- sbzyData.length = 0;
- FPData.length=0;
- CLMXData.length=0;
- JYData.length=0;
- JTMC=node.label.split("-")[0]
- CJMC.value=nodeData.parentNode.label
- JTMCOn.value=true
- dateOn.value=false
- showbutton.value=false
- FacilityProduction()
- FacilityWorklist()
- DelType.value = false
- AddType.value = false
- } else if (nodeData.level === 3) {
- CJMC.value=nodeData.parentNode.parentNode.label
- JTMC=nodeData.machineName.split("-")[0]
- // 等于JP开头的机台
- if (/^JP.+/.test(JTMC)) {
- isJPJT.value = true
- JTMCOn.value=false
- dateOn.value=true
- FacilityInspect()
- JPmachineDetails(JTMC, nodeData.label);
-
- date=node.label
- JPgytableData.value=[]
- drzcDatas.value=[]
- columnNames=[]
- drzcData=[]
- showbutton.value=false
- DelType.value = true
- AddType.value = true
- } else {
- isJPJT.value = false
- JTMCOn.value=false
- dateOn.value=true
- date=node.label
- gytableData.value=[]
- drzcDatas.value=[]
- columnNames=[]
- drzcData=[]
- showbutton.value=false
- FacilityInspect()
- FacilitychanLiang()
- DelType.value = true
- AddType.value = true
- }
-
- }
- }
- // JP当日上报产量
- const JPgytableData = ref([])
- const JPmachineDetails = async (jt, riqi) => {
- const JPmachineDetail_data = await JPmachineDetail({machine: jt, date: riqi});
- _rclsb_gdbh.value = JPmachineDetail_data.data[0]['工单编号']
- _rclsb_yjno.value = JPmachineDetail_data.data[0]['yjno']
- if (JPmachineDetail_data.code === 0) {
- let totalA = JPmachineDetail_data.data.totalA
- let totalB = JPmachineDetail_data.data.totalB
- // 对 totalA 和 totalB 进行排序 结果放在 sortedTotalA 和 sortedTotalB 中
- const sortedTotalA = totalA.sort((a, b) => {
- const typeOrder = {
- "": 1, // 空字符串排在最前面
- "次品版": 2,
- "废品版": 3,
- "正品版": 4
- };
- // 如果某个类型不存在于typeOrder中,则默认它排在最后(可以调整这个逻辑)
- const orderA = typeOrder[a["检验类型"]] || Infinity;
- const orderB = typeOrder[b["检验类型"]] || Infinity;
- return orderA - orderB; // 升序排序
- });
- const sortedTotalB = totalB.sort((a, b) => {
- const typeOrder = {
- "": 1, // 空字符串排在最前面
- "次品版": 2,
- "废品版": 3,
- "正品版": 4
- };
- // 如果某个类型不存在于typeOrder中,则默认它排在最后(可以调整这个逻辑)
- const orderA = typeOrder[a["检验类型"]] || Infinity;
- const orderB = typeOrder[b["检验类型"]] || Infinity;
- return orderA - orderB; // 升序排序
- });
- delete JPmachineDetail_data.data.totalA
- delete JPmachineDetail_data.data.totalB
- JPgytableData.value = Object.values(JPmachineDetail_data.data)
- // 遍历 sortedTotalA 和 sortedTotalB 数组,将每个元素添加到新的行中
- if (sortedTotalA.length !== 0) {
- sortedTotalA.forEach((item) => {
- let rowA = {
- 产品名称: `A班${item.检验类型}合计:`,
- 计件箱数: `${item.箱数}`, // 添加合计箱数字段
- 换膜补时: `${item.总换膜补时}`,
- 保养工时: `${item.总保养工时}`,
- 异常总工时: `${item.总异常总工时}`,
- 通电工时: `${item.总通电工时}`,
- isTotal: true //标识合计行改变颜色
- };
- JPgytableData.value.push(rowA);
- });
- }
- if (sortedTotalB.length !== 0) {
- sortedTotalB.forEach((item) => {
- let rowB = {
- 产品名称: `B班${item.检验类型}合计:`,
- 计件箱数: `${item.箱数}`,// 添加合计箱数字段
- 换膜补时: `${item.总换膜补时}`,
- 保养工时: `${item.总保养工时}`,
- 异常总工时: `${item.总异常总工时}`,
- 通电工时: `${item.总通电工时}`,
- isTotal: true //标识合计行改变颜色
- };
- JPgytableData.value.push(rowB);
- });
- }
-
- // return require(`@/assets/${machineData.状态}.png`);
- // MachineVisible.value=true
- }
- }
- // 定义方法来确定合计行的CSS类名
- function totalClassName({ row }) {
- console.log(row)
- // if (row.计件箱数=== ) {
- // }
- return row.isTotal ? 'total-row' : '';
- }
- //表格文字颜色
- const tableDataCellClass = ({row, column, rowIndex, columnIndex}) =>{
- if (column.property === '计件箱数'||column.property === '每箱数量') {
- return 'plan-usage-low';
- }
- }
- const hesuanVisible = ref(false)
- const MachineVisible = ref(false)
- const machineData = reactive([])
- const hesuanValue = reactive({})
- const MachinelList = async () => {
- const response = await MachineDetailList({workshop:CJMC.value});
- if (response.code === 0) {
- machineData.splice(0, machineData.length, ...response.data);
- console.log(machineData)
- // return require(`@/assets/${machineData.状态}.png`);
- // MachineVisible.value=true
- }
- }
- //设置机台状态
- function handleButtonClick(deviceId) {
- console.log(deviceId);
- MachineVisible.value=false
- // dialogSbyxgl.value=true
- JTMC=deviceId.split("-")[0]
- // JTMCOn.value=true
- // dateOn.value=false
- console.log(JTMC)
- GetdialogSbyxgl()
- // GetdialogSbyxgl(deviceId)
- }
- const GetdialogSbyxgl = async () => {
- const response = await facilityProduction({machine:JTMC});
- if (response.code === 0) {
- console.log(response)
- // 填充formData对象的基本字段
- // formData.value.工单编号 = response.data.工单编号;
- // formData.value.印件编号 = response.data.印件号;
- // formData.value.工序名称 = response.data.工序名称;
- // formData.value.产品名称 = response.data.产品名称;
- // formData.value.班组 = response.data.班组编号;
- formData.value.工单编号 = response.data.工单编号;
- formData.value.印件号 = response.data.印件号;
- formData.value.工序号 = response.data.工序名称.substring(0,2);
- formData.value.工序名称 = response.data.工序名称;
- formData.value.产品名称 = response.data.产品名称;
- formData.value.班组成员 = response.data.班组成员;
- formData.value.班组Id=response.data.班组Id
- formData.value.machine=JTMC
- formData.value.状态=response.data.状态
- let time = new Date();
- time.setDate(time.getDate() - 0); // 今天的前N天的日期,N自定义
- titinfo = `${time.getFullYear()}-${time.getMonth() + 1}-${time.getDate()}`;
- titinfo+='【'+JTMC+response.data.工单编号+response.data.产品名称+'】'+response.data.工序名称
- let sczl_bhkey=''
- let sczl_namekey=''
- if (response.data.班组成员) {
- for (let i = 0; i < Math.min(Object.keys(response.data.班组成员).length, 6); i++) {
- sczl_bhkey=`sczl_bh${i+1}`
- sczl_namekey=`sczl_name${i+1}`
- formData.value[sczl_bhkey] = response.data.班组成员[i]['编号'];
- formData.value[sczl_namekey] = response.data.班组成员[i]['姓名'];
- console.log(response.data.班组成员[i]['编号'])
- classbz.value[i]=response.data.班组成员[i]['编号']
- }
- }
- formData.value.class=classbz.value.join(',')
- console.log(formData.value.class)
- formData.value.JTMC=JTMC
- const responses = await MachineDetailList({workshop:CJMC.value});
- if(responses.code===0){
- responses.data.map(item=>{
- if(item.设备编号==JTMC){
- formData.value.status=item.状态
- }
- })
- }
- // console.log(formData.value.工单编号)
- }
- FacilityWorklist()
- onstatus()
- }
- const gzSelVisible = ref(false)
- const gz_tableData = reactive([])
- const gz_tableData2 = reactive([])
- let gz_bzbh = [];
- const tableCols1 = [
- { label: '员工编号', prop: 'bh', width: '105' },
- { label: '员工姓名', prop: '员工姓名', width: '105' },
- { label: '日期', prop: 'sczl_rq', width: '120' },
- { label: '计件工资', prop: '计件工资', width: '105' },
- { label: '加班工资', prop: '加班工资', width: '105' },
- { label: '计时时数', prop: '计时时数', width: '105' },
- { label: '计时工资', prop: '计时工资', width: '135' },
- { label: '日工资合计', prop: '日工资合计', width: '135' },
- ]
- const tableCols2 = [
- { label: '日期', prop: 'sczl_rq', width: '100' },
- { label: '工单编号', prop: 'sczl_gdbh', width: '105' },
- { label: '产品名称', prop: 'Gd_cpmc', width: '120' },
- { label: '印件及工序', prop: 'sczl_type', width: '120' },
- { label: '机台', prop: 'sczl_jtbh', width: '87' },
- { label: '车头产量', prop: '班组车头产量', width: '105' },
- { label: '计件产量', prop: '计件产量', width: '105' },
- { label: '补产产量', prop: '补产产量', width: '105' },
- { label: '核算产量', prop: '核算产量', width: '105' },
- { label: '达标定额', prop: '达标定额', width: '105' },
- { label: '千件工价', prop: '千件工价', width: '105' },
- { label: '计件工资', prop: '个人计件工资', width: '105' },
- { label: '加班工资', prop: '个人加班工资', width: '105' },
- { label: '装版工时', prop: '装版工时', width: '120' },
- { label: '保养工时', prop: '保养工时', width: '105' },
- { label: '打样工时', prop: '打样工时', width: '105' },
- { label: '异常停机', prop: '异常停机工时', width: '105' },
- { label: '补产标准', prop: '补产标准', width: '120' },
- { label: '分摊比例', prop: 'Rate', width: '105' },
- ]
- //员工工资查询
- const gzSel = () =>{
- if(formData.value.班组成员==undefined){
- ElMessage({ type: 'warning', message: '请先选择机台' });
- return
- }
- if(formData.value.班组成员.length==0){
- ElMessage({ type: 'warning', message: '未获取到员工' });
- return
- }
- for (let index in formData.value.班组成员) {
- gz_bzbh[index] = formData.value.班组成员[index]['编号']
- }
- gzSelVisible.value=true
- }
- // 查询
- const gz_ontable = (ygbh) => {
- // 创建一个Date对象
- var currentDate = new Date();
- // 获取年份
- var year = currentDate.getFullYear();
- // 获取月份(注意,月份从0开始,所以需要加1)
- var month = currentDate.getMonth() + 1;
- if (month < 10) {
- month = "0" + month;
- }
- var date = year+ "" +month
- const response = dailysearch({date: date, search: ygbh}).then(response=>{
- if (response.code === 0) {
- const originalData = response.data;
- const summaryData = generateSummaryData(originalData);
- // 将合计数据插入到原始数据中
- const combinedData = [];
- originalData.forEach((item, index) => {
- combinedData.push(item);
- const nextItem = originalData[index + 1];
- if (nextItem==undefined) {
- // 如果下一个员工姓名与当前不同,插入合计数据
- const currentSummary = summaryData.shift();
- combinedData.push(currentSummary);
- }
- });
- // 更新表格数据
- gz_tableData.splice(0, gz_tableData.length, ...combinedData);
- }
- });
- dailygetGzByYgbh({date:date,code:ygbh}).then(response=>{
- if(response.code==0){
- gz_tableData2.splice(0, gz_tableData2.length, ...response.data);
- }
- })
- }
- const generateSummaryData = (data) => {
- const summaryData = [];
- let currentName = null;
- let currentSummary = null;
- data.forEach((item) => {
- const name = item['员工姓名'].trim(); // 获取员工姓名并去除空格
- if (name !== currentName) {
- // 如果员工姓名发生改变,说明需要插入合计数据
- if (currentSummary) {
- // 将上一个员工的合计数据插入到数组中
- summaryData.push(currentSummary);
- }
- // 创建新的合计数据
- currentSummary = {
- '员工姓名': name,
- '日期': 0,
- '计件工资': 0,
- '加班工资': 0,
- '计时时数': 0,
- '计时工资': 0,
- '日工资合计': 0
- };
- currentName = name;
- }
- // 更新合计数据
- currentSummary['日期']++;
- currentSummary['计件工资'] += parseFloat(item['计件工资']);
- currentSummary['加班工资'] += parseFloat(item['加班工资']);
- currentSummary['计时时数'] += parseFloat(item['计时时数']);
- currentSummary['计时工资'] += parseFloat(item['计时工资']);
- currentSummary['日工资合计'] += parseFloat(item['日工资合计']);
- currentSummary['员工姓名']='合计('+currentSummary['日期']+'天)';
- });
- // 将最后一个员工的合计数据插入到数组中
- if (currentSummary) {
- summaryData.push(currentSummary);
- }
- // 将日期填充到表格中
- summaryData.forEach((summary) => {
- summary['计件工资'] = summary['计件工资'].toFixed(2); // 保留两位小数
- summary['加班工资'] = summary['加班工资'].toFixed(2);
- summary['计时时数'] = summary['计时时数'].toFixed(2);
- summary['计时工资'] = summary['计时工资'].toFixed(2);
- summary['日工资合计'] = summary['日工资合计'].toFixed(2);
- });
- return summaryData;
- };
- // const getImagePath = async (machineData.状态) => {
- // return require(`@/assets/${status}.png`);
- // }
- const classbz=ref([])
- const GDBH=ref()
- //当前生产订单
- const FacilityProduction = async () => {
- const response = await facilityProduction({machine:JTMC});
- if (response.code === 0) {
- console.log(response)
- if(response.data===null){
- formData.value.工单编号 = '';
- formData.value.印件号 = '';
- formData.value.工序号 = '';
- formData.value.工序名称 = '';
- formData.value.产品名称 = '';
- formData.value.班组Id=''
- formData.value.machine=JTMC
- formData.value.状态=''
- let sczl_bhkey=''
- let sczl_namekey=''
- for (let i = 0; i < 6; i++) {
- sczl_bhkey=`sczl_bh${i+1}`
- sczl_namekey=`sczl_name${i+1}`
- formData.value[sczl_bhkey] = '';
- formData.value[sczl_namekey] = '';
- }
- console.log(sbzyData)
- }else{
- // 填充formData对象的基本字段
- // formData.value.工单编号 = response.data.工单编号;
- // formData.value.印件编号 = response.data.印件号;
- // formData.value.工序名称 = response.data.工序名称;
- // formData.value.产品名称 = response.data.产品名称;
- // formData.value.班组 = response.data.班组编号;
- formData.value.工单编号 = response.data.工单编号;
- formData.value.印件号 = response.data.印件号;
- formData.value.工序号 = response.data.工序名称.substring(0,2);
- formData.value.工序名称 = response.data.工序名称;
- formData.value.产品名称 = response.data.产品名称;
- formData.value.班组成员 = response.data.班组成员;
- formData.value.班组Id=response.data.班组Id
- formData.value.machine=JTMC
- formData.value.状态=response.data.状态
- let sczl_bhkey=''
- let sczl_namekey=''
- if (response.data.班组成员) {
- for (let i = 0; i < Math.min(Object.keys(response.data.班组成员).length, 6); i++) {
- sczl_bhkey=`sczl_bh${i+1}`
- sczl_namekey=`sczl_name${i+1}`
- formData.value[sczl_bhkey] = response.data.班组成员[i]['编号'];
- formData.value[sczl_namekey] = response.data.班组成员[i]['姓名'];
- classbz.value[i]=response.data.班组成员[i]['编号']
- }
- }
- formData.value.class=classbz.value.join(',')
- formData.value.JTMC=JTMC
- const responses = await MachineDetailList({workshop:CJMC.value});
- if(responses.code===0){
- responses.data.map(item=>{
- if(item.设备编号==JTMC){
- formData.value.status=item.状态
- }
- })
- }
- }
- }
- // getTableData()
- }
- let CJMC=ref()
- //设备工作清单
- const FacilityWorklist = async () => {
- const response = await facilityWorklist({machine:JTMC});
- if (response.code === 0) {
- // console.log(response)
- sbzyData.splice(0, sbzyData.length, ...response.data);
- const res = await facilityProcedure({ Gd_gdbh: sbzyData[0]['工单编号|质量信息'].substring(0, 7) })
- formData.value.productCode= response.data[0]['产品代号']
- // console.log(res)
- if (res.code === 0) {
- selectData.value = res.data
- }
- // console.log('33333')
- FacilityTeam(JTMC)
- }
- }
- //检验记录
- const InspectionRecord = async () => {
- console.log(formData.value.班组)
- const response = await inspectionRecord({machine:JTMC,Gd_gdbh:formData.value.工单编号,team:BZMC.value});
- // const response = await inspectionRecord({machine:'JY01#',Gd_gdbh:'2311114',team:'A班'});
- // const response = await inspectionRecord({machine:'JY01#',Gd_gdbh:'2312191',team:'A班'});
- console.log(response)
- if(response.code==0){
- // 提取 inspectiontime 作为列名
- // Extract inspectiontime as columnNames
- columnNames = response.data.inspectiontime;
- // Populate drzcData with row data
- for (const key in response.data) {
- if (key !== 'inspectiontime') {
- const item = response.data[key];
- const rowData = {
- '工单编号': item['工单编号'],
- '印件号': item['印件号'],
- '工序名称': item['工序名称'],
- '检验项目': item['检验项目']
- };
- // Initialize time columns with '—'
- columnNames.forEach(time => {
- rowData[time] = '';
- });
- // Split inspectresult and fill the corresponding time columns
- const results = item['inspectresult'].split(',');
- results.forEach(result => {
- if (columnNames.includes(result)) {
- rowData[result] = '√';
- }else{rowData[result] = ''}
- });
- // Add the row data to drzcData
- JYData.push(rowData);
- }
- }
- console.log(JYData);
- }
- }
- const dbclSelection = ref('')
- //当班产量明细复选框
- const dbclmxSelectionChange = (selection, type) => {
- console.log("selection",selection)
- if (selection.length > 1) {
- ElMessage({type: 'warning',message: '您只能选择一条进行删除!'})
- // 重置选择项
- dbclSelection.value = ''; // 清空之前的选择
- selection.splice(0, selection.length); // 清空当前选择数组
- return false;
- }else{
- const ids = selection.map(item => item.UniqId);
- dbclSelection.value = ids.join(',');
- console.log(dbclSelection.value)
- }
-
- }
- //当班产量明细
- const deldbcl_onclick = async () => {
- console.log(dbclSelection.value)
- if (dbclSelection.value !== '') {
- try {
- //产量上报数据删除
- const res1 = await ChanliangDel({UniqId: dbclSelection.value})
- if(res1.code === 0){
- ElMessage.success('当班产量明细删除成功')
- //当班产量明细
- const response = await facilityDetail({ machine: JTMC, Gd_gdbh: formData.value.工单编号, team: BZMC.value });
- console.log(response);
- if (response.code === 0) {
- CLMXData.splice(0, CLMXData.length, ...Object.values(response.data));
- formData.value.production_now=response.data[0].产量
- formData.value.production_all=response.data.total.产量
- }
- }
- } catch(err) {
- ElMessage.error(err)
- }
- }
- }
- const FacilityDetail = async () => {
- console.log('123123')
- console.log(JTMC)
- console.log('123123')
- console.log(formData.value.工单编号)
- console.log('123123')
- console.log(formData.value.班组)
- formData.value.production_now=0
- formData.value.production_all=0
- // const response = await facilityDetail({ machine: JTMC, Gd_gdbh: formData.value.工单编号, team: formData.value.班组 });
- const response = await facilityDetail({ machine: JTMC, Gd_gdbh: formData.value.工单编号, team: BZMC.value });
- // const response = await facilityDetail({ machine: JTMC, Gd_gdbh: '2311114', team:'A班' });
- if (response.code === 0) {
- console.log('123123')
- console.log(response);
- CLMXData.splice(0, CLMXData.length, ...Object.values(response.data));
- formData.value.production_now=response.data[0].产量
- formData.value.production_all=response.data.total.产量
- }
- };
- // 验证规则
- const rule = reactive({
- })
- const searchRule = reactive({
- createdAt: [
- { validator: (rule, value, callback) => {
- if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
- callback(new Error('请填写结束日期'))
- } else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
- callback(new Error('请填写开始日期'))
- } else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
- callback(new Error('开始日期应当早于结束日期'))
- } else {
- callback()
- }
- }, trigger: 'change' }
- ],
- })
- const elFormRef = ref()
- const elSearchFormRef = ref()
- // =========== 表格控制部分 ===========
- const page = ref(1)
- const total = ref(0)
- const pageSize = ref(10)
- const tableData = ref([])
- const searchInfo = ref({})
- const xunchaVisible = ref(false)
- const xunchatreeData=ref([{label: '现场巡查记录',} ])
- // 重置
- const onReset = () => {
- searchInfo.value = {}
- getTableData()
- }
- // 搜索
- const onSubmit = () => {
- elSearchFormRef.value?.validate(async(valid) => {
- if (!valid) return
- page.value = 1
- pageSize.value = 10
- getTableData()
- })
- }
- // 分页
- const handleSizeChange = (val) => {
- pageSize.value = val
- getTableData()
- }
- // 修改页面容量
- const handleCurrentChange = (val) => {
- page.value = val
- getTableData()
- }
- const getTableData = async () => {
- const response = await facilityTab();
- if (response.code === 0 && response.data) {
- const workshops = response.data; // 车间数据
- // 在推送新项之前将 treeData 重置为空数组
- treeData.value = []; // 使用 .value 访问响应式引用的值
- for (const workshopName in workshops) {
- const workshopNode = {
- label: workshopName,
- children: [],
- level: 1 // 添加层级属性
- };
- const machines = workshops[workshopName]; // 车间下的机器
- for (const machineName in machines) {
- const machineNode = {
- label: machineName,
- children: [],
- level: 2, // 添加层级属性
- parentNode: workshopNode
- };
- // Now that machineNode is initialized, you can refer to it
- const childrenNodes = machines[machineName].map(dateTime => {
- const dateOnly = dateTime.split(' ')[0];
- return {
- label: dateOnly,
- machineName:machineName,
- level: 3, // 添加层级属性
- parentNode: machineNode
- };
- });
- // Assign the childrenNodes to the machineNode's children property
- machineNode.children = childrenNodes;
- // Finally, push the machineNode to the workshopNode's children array
- workshopNode.children.push(machineNode);
- }
- // 将 workshopNode 推送到响应式 treeData 数组
- treeData.value.push(workshopNode);
- }
- }
- };
- // 查询
- const getTableList = async() => {
- const table = await getCompanyList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
- if (table.code === 0) {
- tableData.value = table.data.list
- total.value = table.data.total
- page.value = table.data.page
- pageSize.value = table.data.pageSize
- }
- }
- getTableData()
- const type2 = ref('')
- // 修改班组产量提报
- const JPchanliangVisibleedit = ref(false)
- const JPformdataedit = reactive({
- '工单编号':'',
- '产品名称':'',
- '印件号':'',
- '印件名称':'',
- '工序号':'',
- '工序名称':'',
- '日期':'',
- '流程标牌':'',
- '检验类别':'',
- '废品率系数':'',
- '计件箱数':'',
- '每箱数量':'',
- '换膜总工时':'',
- '通电工时':'',
- '定额代号':'',
- '组员1': {'编号': '','姓名': '','比例': '',},
- '组员2': {'编号': '','姓名': '','比例': '',},
- '组员3': {'编号': '','姓名': '','比例': '',},
- '组员4': {'编号': '','姓名': '','比例': '',},
- '组员5': {'编号': '','姓名': '','比例': '',},
- '组员6': {'编号': '','姓名': '','比例': '',},
- '组员7': {'编号': '','姓名': '','比例': '',},
- '组员8': {'编号': '','姓名': '','比例': '',},
- '组员9': {'编号': '','姓名': '','比例': '',},
- '组员10': {'编号': '','姓名': '','比例': '',}
- })
- // 双击JP当日上报产量
- const JPgytableDatadoubleClick = async (row) => {
- console.log(row)
- const response = await JPchanliangDetailList({UniqId:row.UniqId})
- console.log(response)
- JPformdataedit['工单编号'] = response.data['工单编号'];
- JPformdataedit['产品名称'] = response.data['成品名称'];
- JPformdataedit['印件号'] = response.data['yjno'];
- JPformdataedit['印件名称'] = response.data['产品名称'];
- JPformdataedit['工序号'] = response.data['gxh'];
- JPformdataedit['工序名称'] = response.data['gxmc'];
- JPformdataedit['检验类别'] = response.data['检验类型'];
- JPformdataedit['废品率系数'] = response.data['废品率系数'];
- JPformdataedit['日期'] = response.data['sczl_rq'];
- JPformdataedit['机器'] = JTMC;
- JPformdataedit['流程标牌'] = response.data['num'];
- JPformdataedit['计件箱数'] = response.data['计件箱数'];
- JPformdataedit['每箱数量'] = response.data['每箱数量'];
- JPformdataedit['换膜总工时'] = response.data['换膜总工时'];
- JPformdataedit['换膜补产工时'] = response.data['换膜补时'];
- JPformdataedit['保养工时'] = response.data['保养工时'];
- JPformdataedit['异常总工时'] = response.data['异常总工时'];
- JPformdataedit['异常类型'] = response.data['异常类型'];
- JPformdataedit['异常补贴工时'] = response.data['异常补时'];
- JPformdataedit['通电工时'] = response.data['通电工时'];
- JPformdataedit['定额代号'] = response.data['定额代号'];
- JPformdataedit['bzdh'] = response.data['bzdh'];
-
- for (let i = 1; i <= 10; i++) {
- JPformdataedit[`组员${i}`]['编号'] = response.data[`sczl_bh${i}`];
- }
- for (let i = 1; i <= 10; i++) {
- JPformdataedit[`组员${i}`]['姓名'] = response.data[`sczl_name${i}`];
- }
- for (let i = 1; i <= 10; i++) {
- JPformdataedit[`组员${i}`]['比例'] = response.data[`sczl_rate${i}`];
- }
- //自动聚焦光标
- setTimeout(() => {
- const inputElement = document.getElementById('修改工单编号');
- if (inputElement) {
- inputElement.focus();
- }
- }, 100);
- // Object.assign(JPformdataedit,row);
- JPchanliangVisibleedit.value = true
- }
- //当日上报产量确定
- const JPenterDialogedit = async () => {
- // console.log(JPformdataedit)
- const JPformattedData = {
- UniqId:uid.value,
- sczl_jtbh:JTMC+'#',
- sczl_gdbh: JPformdataedit['工单编号'],
- sczl_yjno: JPformdataedit['印件号'],
- sczl_gxh: JPformdataedit['工序号'],
- sczl_gxmc: JPformdataedit['工序名称'],
- sczl_type: JPformdataedit['检验类别'],
- sczl_废品率系数: JPformdataedit['废品率系数'],
-
- sczl_rq: JPformdataedit['日期'],
- sczl_jtbh: JPformdataedit['机器'],
- sczl_num: JPformdataedit['流程标牌'],
- sczl_cl: JPformdataedit['计件箱数'],
- sczl_Pgcl: JPformdataedit['每箱数量'],
-
- sczl_装版总工时: JPformdataedit['换膜总工时'],
- sczl_装版工时: JPformdataedit['换膜补产工时'],
- sczl_保养工时: JPformdataedit['保养工时'],
-
- sczl_异常停机工时: JPformdataedit['异常总工时'],
- sczl_异常类型1: JPformdataedit['异常类型'],
- sczl_异常工时1: JPformdataedit['异常补贴工时'],
-
- sczl_设备运行工时: JPformdataedit['通电工时'],
- sczl_dedh: JPformdataedit['定额代号'],
- sczl_bzdh: JPformdataedit['bzdh'],
- sczl_bh1: JPformdataedit.组员1['编号'],
- sczl_bh2: JPformdataedit.组员2['编号'],
- sczl_bh3: JPformdataedit.组员3['编号'],
- sczl_bh4: JPformdataedit.组员4['编号'],
- sczl_bh5: JPformdataedit.组员5['编号'],
- sczl_bh6: JPformdataedit.组员6['编号'],
- sczl_bh7: JPformdataedit.组员7['编号'],
- sczl_bh8: JPformdataedit.组员8['编号'],
- sczl_bh9: JPformdataedit.组员9['编号'],
- sczl_bh10: JPformdataedit.组员10['编号'],
- sczl_bh98:'',
- sczl_rate1: JPformdataedit.组员1['比例'],
- sczl_rate2: JPformdataedit.组员2['比例'],
- sczl_rate3: JPformdataedit.组员3['比例'],
- sczl_rate4: JPformdataedit.组员4['比例'],
- sczl_rate5: JPformdataedit.组员5['比例'],
- sczl_rate6: JPformdataedit.组员6['比例'],
- sczl_rate7: JPformdataedit.组员7['比例'],
- sczl_rate8: JPformdataedit.组员8['比例'],
- sczl_rate9: JPformdataedit.组员9['比例'],
- sczl_rate10: JPformdataedit.组员10['比例'],
-
- };
- console.log(JPformattedData)
- const JpChanliangEdit_edit = await JpChanliangEdit(JPformattedData);
- console.log(JpChanliangEdit_edit)
- if (JpChanliangEdit_edit.code === 0) {
- JPchanliangVisibleedit.value = false
- JPmachineDetails(JTMC,date);
- ElMessage({type: 'success',message: '修改成功'})
- } else {
- ElMessage({type: 'error',message: '修改失败'})
- }
- }
- //当日上报产量取消
- const JPcloseDialogedit = async () => {
- JPchanliangVisibleedit.value = false
- }
- //班组产量提报 JP检品机单独页面
- const JPchanliangVisible = ref(false)
- const JPformdata = reactive({
- '工单编号':'',
- '产品名称':'',
- '印件号':'',
- '印件名称':'',
- '工序号':'',
- '工序名称':'',
- '日期':'',
- '机器':'',
- '流程标牌':'',
- '检验类别':'',
- '废品率系数':'',
- '计件箱数':'',
- '每箱数量':'',
- '换膜总工时':'',
-
- '换膜补产工时':'',
- '保养工时':'',
- '异常总工时':'',
- '异常类型':'',
- '异常补贴工时':'',
-
- '通电工时':'',
- '定额代号':'',
- '组员1': {'编号': '','姓名': '','比例': '',},
- '组员2': {'编号': '','姓名': '','比例': '',},
- '组员3': {'编号': '','姓名': '','比例': '',},
- '组员4': {'编号': '','姓名': '','比例': '',},
- '组员5': {'编号': '','姓名': '','比例': '',},
- '组员6': {'编号': '','姓名': '','比例': '',},
- '组员7': {'编号': '','姓名': '','比例': '',},
- '组员8': {'编号': '','姓名': '','比例': '',},
- '组员9': {'编号': '','姓名': '','比例': '',},
- '组员10': {'编号': '','姓名': '','比例': '',}
- })
- //班组产量提报 JP检品机 班组产量提报确定
- const JPenterDialog = async() => {
- const JPformattedData = {
- sczl_jtbh:JTMC+'#',
- sczl_gdbh: JPformdata['工单编号'],
- sczl_yjno: JPformdata['印件号'],
- sczl_gxh: JPformdata['工序号'],
- sczl_gxmc: JPformdata['工序名称'],
- sczl_type: JPformdata['检验类别'],
- sczl_废品率系数: JPformdata['废品率系数'],
-
- sczl_rq: JPformdata['日期'],
- sczl_jtbh: JPformdata['机器'],
- sczl_num: JPformdata['流程标牌'],
- sczl_cl: JPformdata['计件箱数'],
- sczl_Pgcl: JPformdata['每箱数量'],
-
- sczl_装版总工时: JPformdata['换膜总工时'],
- sczl_装版工时: JPformdata['换膜补产工时'],
- sczl_保养工时: JPformdata['保养工时'],
-
-
- sczl_异常停机工时: JPformdata['异常总工时'],
- sczl_异常类型1: JPformdata['异常类型'],
- sczl_异常工时1: JPformdata['异常补贴工时'],
-
- sczl_设备运行工时: JPformdata['通电工时'],
- sczl_dedh: JPformdata['定额代号'],
- sczl_bzdh: JPformdata['bzdh'],
- sczl_bh1: JPformdata.组员1['编号'],
- sczl_bh2: JPformdata.组员2['编号'],
- sczl_bh3: JPformdata.组员3['编号'],
- sczl_bh4: JPformdata.组员4['编号'],
- sczl_bh5: JPformdata.组员5['编号'],
- sczl_bh6: JPformdata.组员6['编号'],
- sczl_bh7: JPformdata.组员7['编号'],
- sczl_bh8: JPformdata.组员8['编号'],
- sczl_bh9: JPformdata.组员9['编号'],
- sczl_bh10: JPformdata.组员10['编号'],
- sczl_bh98:'',
- sczl_rate1: JPformdata.组员1['比例'],
- sczl_rate2: JPformdata.组员2['比例'],
- sczl_rate3: JPformdata.组员3['比例'],
- sczl_rate4: JPformdata.组员4['比例'],
- sczl_rate5: JPformdata.组员5['比例'],
- sczl_rate6: JPformdata.组员6['比例'],
- sczl_rate7: JPformdata.组员7['比例'],
- sczl_rate8: JPformdata.组员8['比例'],
- sczl_rate9: JPformdata.组员9['比例'],
- sczl_rate10: JPformdata.组员10['比例'],
-
- };
- console.log(JPformattedData)
- // console.log("新增了")
- console.log(JTMC)
- console.log(date)
-
- const JpUploade_add = await JpUploade(JPformattedData);
- console.log(JpUploade_add)
- if (JpUploade_add.code === 0) {
- // JPchanliangVisible.value = false
- ElMessage({type: 'success',message: '添加成功'})
- JPmachineDetails(JTMC+'#',date);
- //自动聚焦光标
- setTimeout(() => {
- const inputElement = document.getElementById('新增工单编号');
- if (inputElement) {
- inputElement.focus();
- }
- }, 100);
- JPformdata['流程标牌'] = ''
- JPformdata['检验类别'] = ''
- JPformdata['换膜总工时'] = ''
- JPformdata['换膜补产工时'] = ''
- JPformdata['保养工时'] = ''
- JPformdata['异常总工时'] = ''
- JPformdata['异常类型'] = ''
- JPformdata['异常补贴工时'] = ''
- JPformdata['通电工时'] = ''
- JPformdata['计件箱数'] = 0
- } else {
- ElMessage({type: 'error',message: '添加失败'})
- }
-
- }
- //班组产量提报 JP检品机 班组产量提报取消
- const JPcloseDialog = async() => {
- JPchanliangVisible.value = false
- }
- //班组产量提报 回车
- const JPblModellistedit = ref(false)
- const JPdialogSelectVisible_LXedit = ref(false)
- const JPtableDataedit = reactive([
- { name: ' ', type: ' ' },
- { name: '废品版', type: '废品版' },
- { name: '正品版', type: '正品版' },
- { name: '次品版', type: '次品版' },
- ])
- const JPhandleRowClickedit = async (row) => {
- JPformdataedit['检验类别'] = row['name']
- JPdialogSelectVisible_LXedit.value = false
- const fplxs = await getRejectRate({order:JPformdataedit['工单编号'],yjno:JPformdataedit['印件号'],gxh:JPformdataedit['工序号'],type:JPformdataedit['检验类别']})
- if (fplxs.code === 0) {
- JPformdataedit['废品率系数'] = fplxs.data
- }
- }
- const currentIndex_jylbedit = ref(0);
- //弹窗键盘事件
- const JPselect_jylbedit = (event) => {
- if (event.keyCode === 40) { // 向下箭头
- if (currentIndex_jylbedit.value < JPtableDataedit.length - 1) {
- currentIndex_jylbedit.value++;
- setCurrent_jylbedit(JPtableDataedit[currentIndex_jylbedit.value]);
- } else {
- currentIndex_jylbedit.value = 0;
- setCurrent_jylbedit(JPtableDataedit[currentIndex_jylbedit.value]); // 到达最后一行时回到第一行
- }
- } else if (event.keyCode === 38) { // 向上箭头
- if (currentIndex_jylbedit.value > 0) {
- currentIndex_jylbedit.value--;
- setCurrent_jylbedit(JPtableDataedit[currentIndex_jylbedit.value]);
- } else {
- currentIndex_jylbedit.value = JPtableDataedit.length - 1;
- setCurrent_jylbedit(JPtableDataedit[currentIndex_jylbedit.value]); // 到达第一行时回到最后一行
- }
- } else if (event.keyCode === 13) { // 回车键
- JPdialogSelectVisible_LXedit.value = false
- }
- }
- const jylbedit_table = ref()
- const setCurrent_jylbedit = async (row) => {
- setTimeout(() => {
- jylbedit_table.value?.setCurrentRow(row)
- const {name} = row
- JPformdataedit['检验类别'] = name
- })
- }
- //工单编号回车事件
- const JPgetCPMCsubmitedit = () => {
- if(JPformdataedit.工单编号!=''){
- ChanliangWorkorder({search:JPformdataedit['工单编号'],machine:JTMC}).then(response=>{
- if (response.code === 0) {
- if(response.data){
- JPformdataedit['产品名称'] = response.data[0].cpmc
- document.getElementById('产品名称').style.color = 'red';
- // JPgetYJMCsubmit()
- }else{
- ElMessage({
- type: 'error',
- message: response.msg
- })
- JPformdataedit['工单编号'] = '';
- JPformdataedit['产品名称'] = '';
- document.getElementById('产品名称').style.color = 'black';
- }
-
- }else{
- JPformdataedit['工单编号'] = '';
- JPformdataedit['产品名称'] = '';
- document.getElementById('产品名称').style.color = 'black';
- }
- });
- }else{
- ElMessage({
- type: 'error',
- message: '请注意, 工单编号输入空置, 除非有特殊需要!'
- })
- gxmc.value = '';
- document.getElementById('产品名称').style.color = 'black';
- }
- }
-
-
- //印件选择
- const JPdialogSelectVisible_Yjedit = ref(false)
- const JPselectData_Yjedit = reactive([])
- // 处理选择框
- const JPhandleSelectClick_Yjedit = (row, column, event) => {
- const { yjno, yjmc, ls } = row
- JPformdataedit['印件号'] = yjno
- JPformdataedit['印件名称'] = yjmc
- JPdialogSelectVisible_Yjedit.value = false
- }
- const JPselect_Yjedit = (event) => {
- if (event.keyCode === 40) { // 向下箭头
- if (currentIndex.value < JPselectData_Yjedit.length - 1) {
- currentIndex.value++;
- JPsetCurrent_Yjedit(JPselectData_Yjedit[currentIndex.value]);
- } else {
- currentIndex.value = 0;
- JPsetCurrent_Yjedit(JPselectData_Yjedit[currentIndex.value]); // 到达最后一行时回到第一行
- }
- } else if (event.keyCode === 38) { // 向上箭头
- if (currentIndex.value > 0) {
- currentIndex.value--;
- JPsetCurrent_Yjedit(JPselectData_Yjedit[currentIndex.value]);
- } else {
- currentIndex.value = JPselectData_Yjedit.length - 1;
- JPsetCurrent_Yjedit(JPselectData_Yjedit[currentIndex.value]); // 到达第一行时回到最后一行
- }
- } else if (event.keyCode === 13) { // 回车键
- JPdialogSelectVisible_Yjedit.value = false;
- }
- }
- const table_xgyj = ref();
- const JPsetCurrent_Yjedit = (row) => {
- setTimeout(() => {
- table_xgyj.value?.setCurrentRow(row);
- const { ls, yjno, yjmc } = row
- console.log(row)
- JPformdataedit['印件号'] = yjno
- JPformdataedit['印件名称'] = yjmc
- });
- };
- //工序选择
- const JPdialogSelectVisible_Gxedit = ref(false)
- const JPselectData_Gxedit = reactive([])
- const JPtable_Gxedit = ref()
- // 处理选择框
- const JPhandleSelectClick_Gxedit = (row, column, event) => {
- const { gxh, name, gxmc } = row
- JPformdataedit['工序号'] = gxh
- JPformdataedit['工序名称'] = name
- JPdialogSelectVisible_Gxedit.value = false
- }
- const currentIndex_gxedit = ref(0);
- //弹窗键盘事件
- const JPselect_xzedit = (event) => {
- if (event.keyCode === 40) { // 向下箭头
- if (currentIndex_gxedit.value < JPselectData_Gxedit.length - 1) {
- currentIndex_gxedit.value++;
- setCurrent_gxedit(JPselectData_Gxedit[currentIndex_gxedit.value]);
- } else {
- currentIndex_gxedit.value = 0;
- setCurrent_gxedit(JPselectData_Gxedit[currentIndex_gxedit.value]); // 到达最后一行时回到第一行
- }
- } else if (event.keyCode === 38) { // 向上箭头
- if (currentIndex_gxedit.value > 0) {
- currentIndex_gxedit.value--;
- setCurrent_gxedit(JPselectData_Gxedit[currentIndex_gxedit.value]);
- } else {
- currentIndex_gxedit.value = JPselectData_Gxedit.length - 1;
- setCurrent_gxedit(JPselectData_Gxedit[currentIndex_gxedit.value]); // 到达第一行时回到最后一行
- }
- } else if (event.keyCode === 13) { // 回车键
- JPdialogSelectVisible_Gxedit.value = false
- }
- }
- const table_gxedit = ref()
- const setCurrent_gxedit = (row) => {
- setTimeout(() => {
- table_gxedit.value?.setCurrentRow(row)
- const { gxh, name, gxmc } = row
- JPformdataedit['工序号'] = gxh
- JPformdataedit['工序名称'] = name
- })
- }
- const JPentedit = async (event,key,val) => {
- if(event.keyCode === 13){
- //组员及比例分配
- if(event.keyCode === 13 && val === '1'){
- let bzyg=''
- bzyg=`组员${key}`
- let bzxm=''
- bzxm=`组员${key}`
- if(JPformdataedit[bzyg]['编号']){
- const getYg_response = await getYg({sczl_bh:JPformdataedit[bzyg]['编号']});
- if (getYg_response.code === 0) {
- if(getYg_response.data.length === 1){
- JPformdataedit[bzyg]['姓名'] = getYg_response.data[0].ygxm
- JPformdataedit[bzyg]['编号'] = getYg_response.data[0].员工编号
- }else{
- JPblModellistedit.value = true;
- JPemployeeDatalistedit.value = getYg_response.data // 假设响应数据是数组
- }
- }
- }
- // 阻止回车键的默认行为
- event.preventDefault();
- event.stopPropagation();
-
- // 获取所有以 "bh" 开头的输入框
- const inputs = document.querySelectorAll('input[id^="bh"]');
- const currentIndex = Array.from(inputs).indexOf(event.target); // 获取当前触发事件的input索引
-
- // 判断是否是最后一个输入框
- if (currentIndex === inputs.length - 1) {
- console.log('当前是最后一个输入框');
- if(JPblModellist.value === false){
- // 弹出存盘确认框
- ElMessageBox.confirm('数据存盘?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- // 用户点击“确定”,执行存盘操作
- JPenterDialogedit();
- }).catch(() => {
- console.log('用户取消了存盘操作');
- });
- }
-
- }
- }
- if(event.target.id === '检验类别'){
- JPdialogSelectVisible_LXedit.value = true
- }
- if(event.target.id === '印件号'){
- if(JPformdataedit['工单编号']!=''){
- //获取印件名称
- ChanliangPrintDetail({gdbh:JPformdataedit['工单编号']}).then(response=>{
- if (response.code === 0) {
- if(response.data){
- if(response.data.length==1){
- JPformdataedit['印件号'] = response.data[0].yjno
- JPformdataedit['印件名称'] = response.data[0].yjmc
- setColorReadonly('印件名称')
- }else{
- JPselectData_Yjedit.splice(0, JPselectData_Yjedit.length, ...response.data)
- JPdialogSelectVisible_Yjedit.value=true
- }
-
- }else{
- ElMessage({
- type: 'error',
- message: response.msg
- })
- }
- }
- });
- }else{
- ElMessage({
- type: 'error',
- message: '印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!'
- })
- }
- }
- if(event.target.id === '工序号'){
- document.getElementById('工序名称').style.color = 'red';
- //弹出选择
- ChanliangProcessDetail({gdbh:JPformdataedit['工单编号'],yjno:JPformdataedit['印件号'],machine:''}).then(response=>{
- if (response.code === 0) {
- if(response.data){
- if(response.data.length === 1){
- JPformdataedit['工序号']=response.data[0].gxh
- JPformdataedit['工序名称']=response.data[0].name
- }else{
- JPselectData_Gxedit.splice(0, JPselectData_Gxedit.length, ...response.data)
- JPdialogSelectVisible_Gxedit.value = true
- }
- }else{
- ElMessage({
- type: 'error',
- message: response.msg
- })
- }
- }
- })
- }
- if (event.target.id === '机器') {
- // 获取当前输入框的值
- const machineInputValue = JPformdataedit['机器'];
-
- // 调用接口获取机台数据
- const MachineListdata = await gdzl_MachineList({ address: CJMC.value });
- console.log("MachineListdata", MachineListdata);
-
- //机台列表数据
- JPselectData_JTedit.value = MachineListdata.data.map((item, index) => ({
- ID: index + 1,
- 机台: item,
- }));
- JPselectData_JTedit.splice(0, JPselectData_JTedit.length, ...JPselectData_JTedit.value);
-
- // 检查输入的机器名称是否存在于接口返回的数据中
- const isMachineValid = JPselectData_JTedit.value.some(item => item.机台 === machineInputValue);
- //完全匹配时,输入错误在弹窗
- // const isMachineValid = JPselectData_JT.value.some(item => item.机台.split('-->')[0] === machineInputValue);
- if (!isMachineValid) {
- // 如果机器名称无效,则弹出弹窗
- JPdialogVisible_JTedit.value = true;
- // console.log('输入的机器不在列表中,弹出弹窗');
- } else {
- // console.log('输入的机器匹配列表,弹窗不显示');
- }
- }
- if (event.target.id === '定额代号') {
- if(JPformdataedit['机器'] === ''){
- ElMessage({
- type: 'error',
- message: '请先选择机台!'
- })
- //自动聚焦光标
- setTimeout(() => {
- const inputElement = document.getElementById('机器');
- if (inputElement) {
- inputElement.focus();
- }
- }, 100);
- }else{
- getDedhsubmitedit();
- }
- }
- if (event.target.id === 'bzdh') {
- console.log('检品修改选择班组')
- openBanzuDialog()
- }
- }
-
-
- const inputs = document.getElementsByTagName('input');
- const currentIndex = Array.from(inputs).indexOf(event.target);
- if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
- let nextIndex = currentIndex + 1;
- while (nextIndex < inputs.length) {
- if (inputs[nextIndex].disabled) {
- console.log("当前输入框为disabled,跳过");
- nextIndex++; // 跳过disabled的输入框
- continue;
- }
- if (!inputs[nextIndex].readOnly) {
- nextTick(() => {
- inputs[nextIndex].focus();
- inputs[nextIndex].select();
- });
- break;
- }
- nextIndex++;
- }
- }
- else if (event.keyCode === 38) { // 向上箭头
- for (let i = currentIndex - 1; i >= 0; i--) {
- if (!inputs[i].readOnly) {
- nextTick(()=>{
- inputs[i].focus();
- inputs[i].select();
- })
- break;
- }
- }
- // } else if (event.keyCode === 8) { // 删除箭头
- // if (event.target.selectionStart === 0) {
- // for (let i = currentIndex - 1; i >= 0; i--) {
- // if (!inputs[i].readOnly) {
- // nextTick(()=>{
- // inputs[i].focus();
- // inputs[i].setSelectionRange(0, 0);
- // })
- // break;
- // }
- // }
- // }
- } else if (event.keyCode === 37) { // 向左箭头
- if (event.target.selectionStart === 0) {
- for (let i = currentIndex - 1; i >= 0; i--) {
- if (!inputs[i].readOnly) {
- nextTick(()=>{
- inputs[i].focus();
- inputs[i].select();
- })
- break;
- }
- }
- }
- } else if (event.keyCode === 39) { // 向右箭头
- if (event.target.selectionStart === event.target.value.length) {
- for (let i = currentIndex + 1; i < inputs.length; i++) {
- if (!inputs[i].readOnly) {
- nextTick(()=>{
- inputs[i].focus();
- inputs[i].select();
- })
- break;
- }
- }
- }
- }
- }
- /*
- 机台机器选择修改
- */
- const JPdialogVisible_JTedit = ref(false) // 弹窗
- const JPselectData_JTedit = reactive([]) // table data
- const currentIndex_JTedit = ref(0);
- //双击事件
- const JPhandleSelectClick_JTedit = async (row) => {
- // 使用 split() 截取 '机器' 字符串中 '-->' 前面的部分
- const machineName = row['机台'].split('-->')[0];
- JPformdataedit['机器'] = machineName;
- }
- // 键盘事件
- const JPselect_JTedit = async (event) => {
- if (event.keyCode === 40) { // 向下箭头
- if (currentIndex_JTedit.value < JPselectData_JTedit.length - 1) {
- currentIndex_JTedit.value++;
- setCurrent_JTedit(JPselectData_JTedit[currentIndex_JTedit.value]);
- } else {
- currentIndex_JTedit.value = 0;
- setCurrent_JTedit(JPselectData_JTedit[currentIndex_JTedit.value]); // 到达最后一行时回到第一行
- }
- } else if (event.keyCode === 38) { // 向上箭头
- if (currentIndex_JTedit.value > 0) {
- currentIndex_JTedit.value--;
- setCurrent_JTedit(JPselectData_JTedit[currentIndex_JTedit.value]);
- } else {
- currentIndex_JTedit.value = JPselectData_JTedit.length - 1;
- setCurrent_JTedit(JPselectData_JTedit[currentIndex_JTedit.value]); // 到达第一行时回到最后一行
- }
- } else if (event.keyCode === 13) { // 回车键
- JPdialogVisible_JTedit.value = false;
- }
- }
- // ref属性
- const table_JTedit = ref();
- const setCurrent_JTedit = (row) => {
- setTimeout(() => {
- table_JTedit.value?.setCurrentRow(row);
- // 使用 split() 截取 '机器' 字符串中 '-->' 前面的部分
- const machineName = row['机台'].split('-->')[0];
- JPformdataedit['机器'] = machineName;
- });
- }
- //班组产量提报 打开新增页面
- const onADD = async() => {
- //判断是否为JP 检品机器【是检品机独立页面】
- if (JTMC.startsWith('JP')) {
- JPchanliangVisible.value = true
- //获取当天日期接口
- getTimelistss();
- //获取产量上报数据信息接口
- getMachineReportInfos();
- } else {
- type2.value="create"
- //通过车间名称查询机台【机器】
- gdzl_MachineList({address:CJMC.value}).then( MachineList_jitai =>{
- gdzl_MachineList_address.data = MachineList_jitai.data;
- });
- console.log('点击新增')
- //打开新增按钮获取
- qita_jitaidata();
-
- if(uid.value == undefined){
- initfordata3()
- chanliangVisible.value=true
- return
- }
- const response = await MachineChanliangDetail({UniqId:uid.value});
- if (response.code === 0) {
- chanliangVisible.value=true
- formdata3.value=response.data
- const result=formdata3.value.gxmc.match(/-(.{2})/)
- formdata3.value.gymc=result[1]
- formdata3.value.sczl_jtbh=JTMC
- formdata3.value.yjmc=response.data.印件名称
- formdata3.value.rq=date
- if (formdata3.value.bzdh === 'A班') {
- formdata3.value.starttime = ''; // 清空值
- setTimeout(()=>{
- formdata3.value.starttime = date + " 08:30:00"; // 设置为 20:30:00
- })
- } else if (formdata3.value.bzdh === 'B班') {
- formdata3.value.starttime = ''; // 清空值
- setTimeout(()=>{
- formdata3.value.starttime = date + " 20:30:00"; // 设置为 20:30:00
- })
- }
- //部分数据置空
- formdata3.value.产量 = '';
- formdata3.value.制程废品 = '0.0';
- formdata3.value.制程次品 = '0.0';
- formdata3.value.前工序废 = '0.0';
- formdata3.value.来料异常 = '0.0';
- formdata3.value.装版工时 = '0.00';
- formdata3.value.装版补产工时 = '0.00';
- formdata3.value.打样工时 = '0.00';
- formdata3.value.打样补产工时 = '0.00';
- formdata3.value.保养工时 = '0.00';
- formdata3.value.异常总工时 = '0.00';
- formdata3.value.通电工时 = '0.00';
- }
- }
- //自动聚焦光标
- setTimeout(() => {
- const inputElement = document.getElementById('新增工单编号');
- if (inputElement) {
- inputElement.focus();
- }
- }, 100);
- //自动聚焦光标
- setTimeout(() => {
- const inputElement = document.getElementById('工单编号');
- if (inputElement) {
- inputElement.focus();
- }
- }, 100);
- }
- //班组产量提报 获取当天日期接口
- const getTimelistss = async () => {
- const getTimelistss = await getTimelist();
- JPformdata['日期'] = getTimelistss.data.date
- }
- //班组产量提报 获取产量上报数据信息接口
- const getMachineReportInfos = async () => {
- const getMachineReportInfos = await reportInfo({machine:JTMC = JTMC.replace(/#/g, '')});
- JPformdata['bzdh'] = getMachineReportInfos.data.class.sczl_bzdh
- JPformdata['工单编号'] = _rclsb_gdbh.value
- JPformdata['产品名称'] = getMachineReportInfos.data.order_info.product_name
- // JPformdata['定额代号'] = getMachineReportInfos.data.order_info.dedh
-
- for (let i = 1; i <= 10; i++) {
- JPformdata[`组员${i}`]['比例'] = getMachineReportInfos.data.class[`sczl_rate${i}`];
- }
- }
- //工单编号回车事件
- const JPgetCPMCsubmit = () => {
- if(JPformdata.工单编号!=''){
- ChanliangWorkorder({search:JPformdata['工单编号'],machine:JTMC}).then(response=>{
- if (response.code === 0) {
- if(response.data){
- JPformdata['产品名称'] = response.data[0].cpmc
- document.getElementById('产品名称').style.color = 'red';
- // JPgetYJMCsubmit()
- }else{
- ElMessage({
- type: 'error',
- message: response.msg
- })
- JPformdata['工单编号'] = '';
- JPformdata['产品名称'] = '';
- document.getElementById('产品名称').style.color = 'black';
- }
-
- }else{
- JPformdata['工单编号'] = '';
- JPformdata['产品名称'] = '';
- document.getElementById('产品名称').style.color = 'black';
- }
- });
- }else{
- ElMessage({
- type: 'error',
- message: '请注意, 工单编号输入空置, 除非有特殊需要!'
- })
- gxmc.value = '';
- document.getElementById('产品名称').style.color = 'black';
- }
- }
-
- //印件选择
- const JPdialogSelectVisible_Yj = ref(false)
- const JPselectData_Yj = reactive([])
- // 处理选择框
- const JPhandleSelectClick_Yj = (row, column, event) => {
- const { yjno, yjmc, ls } = row
- JPformdata['印件号'] = yjno
- JPformdata['印件名称'] = yjmc
- JPdialogSelectVisible_Yj.value = false
- }
- const JPselect_Yj = (event) => {
- if (event.keyCode === 40) { // 向下箭头
- if (currentIndex.value < JPselectData_Yj.length - 1) {
- currentIndex.value++;
- JPsetCurrent_Yj(JPselectData_Yj[currentIndex.value]);
- } else {
- currentIndex.value = 0;
- JPsetCurrent_Yj(JPselectData_Yj[currentIndex.value]); // 到达最后一行时回到第一行
- }
- } else if (event.keyCode === 38) { // 向上箭头
- if (currentIndex.value > 0) {
- currentIndex.value--;
- JPsetCurrent_Yj(JPselectData_Yj[currentIndex.value]);
- } else {
- currentIndex.value = JPselectData_Yj.length - 1;
- JPsetCurrent_Yj(JPselectData_Yj[currentIndex.value]); // 到达第一行时回到最后一行
- }
- } else if (event.keyCode === 13) { // 回车键
- JPdialogSelectVisible_Yj.value = false;
- }
- }
- const table_xzyj = ref();
- const JPsetCurrent_Yj = (row) => {
- setTimeout(() => {
- table_xzyj.value?.setCurrentRow(row);
- const { ls, yjno, yjmc } = row
- console.log(row)
- JPformdata['印件号'] = yjno
- JPformdata['印件名称'] = yjmc
- });
- };
- /*
- 工序选择
- */
- const JPdialogSelectVisible_Gx = ref(false)//弹窗控件
- const JPselectData_Gx = reactive([])//表格data数据
- // const JPtable_Gx = ref()
- //点击事件
- const JPhandleSelectClick_Gx = (row, column, event) => {
- const { gxh, name, gxmc } = row
- JPformdata['工序号'] = gxh
- JPformdata['工序名称'] = name
- JPdialogSelectVisible_Gx.value = false
- }
- const currentIndex_gx = ref(0);
- //弹窗键盘事件
- const JPselect_xz = (event) => {
- if (event.keyCode === 40) { // 向下箭头
- if (currentIndex_gx.value < JPselectData_Gx.length - 1) {
- currentIndex_gx.value++;
- setCurrent_gx(JPselectData_Gx[currentIndex_gx.value]);
- } else {
- currentIndex_gx.value = 0;
- setCurrent_gx(JPselectData_Gx[currentIndex_gx.value]); // 到达最后一行时回到第一行
- }
- } else if (event.keyCode === 38) { // 向上箭头
- if (currentIndex_gx.value > 0) {
- currentIndex_gx.value--;
- setCurrent_gx(JPselectData_Gx[currentIndex_gx.value]);
- } else {
- currentIndex_gx.value = JPselectData_Gx.length - 1;
- setCurrent_gx(JPselectData_Gx[currentIndex_gx.value]); // 到达第一行时回到最后一行
- }
- } else if (event.keyCode === 13) { // 回车键
- JPdialogSelectVisible_Gx.value = false
- }
- }
- const table_gx = ref()
- const setCurrent_gx = (row) => {
- setTimeout(() => {
- table_gx.value?.setCurrentRow(row)
- const { gxh, name, gxmc } = row
- JPformdata['工序号'] = gxh
- JPformdata['工序名称'] = gxmc
- })
- }
-
- //班组产量提报 回车
- const JPblModellist = ref(false)
- const JPdialogSelectVisible_LX = ref(false)
- const JPtableData = reactive([
- { name: ' ', type: ' ' },
- { name: '废品版', type: '废品版' },
- { name: '正品版', type: '正品版' },
- { name: '次品版', type: '次品版' },
- ])
- const JPhandleRowClick = async (row) => {
- JPformdata['检验类别'] = row['name']
- JPdialogSelectVisible_LX.value = false
- const fplxs = await getRejectRate({order:JPformdata['工单编号'],yjno:JPformdata['印件号'],gxh:JPformdata['工序号'],type:JPformdata['检验类别']})
- if (fplxs.code === 0) {
- JPformdata['废品率系数'] = fplxs.data
- }
- }
- const currentIndex_jylb = ref(0);
- //弹窗键盘事件
- const JPselect_jylb = (event) => {
- if (event.keyCode === 40) { // 向下箭头
- if (currentIndex_jylb.value < JPtableData.length - 1) {
- currentIndex_jylb.value++;
- setCurrent_jylb(JPtableData[currentIndex_jylb.value]);
- } else {
- currentIndex_jylb.value = 0;
- setCurrent_jylb(JPtableData[currentIndex_jylb.value]); // 到达最后一行时回到第一行
- }
- } else if (event.keyCode === 38) { // 向上箭头
- if (currentIndex_jylb.value > 0) {
- currentIndex_jylb.value--;
- setCurrent_jylb(JPtableData[currentIndex_jylb.value]);
- } else {
- currentIndex_jylb.value = JPtableData.length - 1;
- setCurrent_jylb(JPtableData[currentIndex_jylb.value]); // 到达第一行时回到最后一行
- }
- } else if (event.keyCode === 13) { // 回车键
- JPdialogSelectVisible_LX.value = false
- }
- }
- const jylb_table = ref()
- const setCurrent_jylb = async (row) => {
- setTimeout(() => {
- jylb_table.value?.setCurrentRow(row)
- const {name} = row
- JPformdata['检验类别'] = name
- })
- }
- //日期获得焦点事件
- const rqHandleFocus = () => {
- if (JPformdata['日期'] == undefined || JPformdata['日期'] == '') {
- JPformdata['日期'] = new Date().toISOString().split('T')[0]
- }
- }
- //回车事件
- const JPent = async (event,key,val) => {
- if(event.keyCode === 13){
- //组员及比例分配
- if (val === '1') {
- let bzyg = `组员${key}`;
-
- if (JPformdata[bzyg] && JPformdata[bzyg]['编号']) {
- try {
- const getYg_response = await getYg({ sczl_bh: JPformdata[bzyg]['编号'] });
-
- if (getYg_response.code === 0) {
- if (getYg_response.data.length === 1) {
- JPformdata[bzyg]['姓名'] = getYg_response.data[0].ygxm;
- JPformdata[bzyg]['编号'] = getYg_response.data[0].员工编号;
- } else {
- // 显示员工选择列表
- JPblModellist.value = true;
- JPemployeeDatalist.value = getYg_response.data;
- }
- }
- } catch (error) {
- console.error("获取员工信息失败", error);
- }
- }
-
- // 阻止回车键的默认行为
- event.preventDefault();
- event.stopPropagation();
-
- // 获取所有以 "bh" 开头的输入框
- const inputs = document.querySelectorAll('input[id^="bh"]');
- const currentIndex = Array.from(inputs).indexOf(event.target); // 获取当前触发事件的input索引
-
- // 判断是否是最后一个输入框
- if (currentIndex === inputs.length - 1) {
- console.log('当前是最后一个输入框');
- if(JPblModellist.value === false){
- // 弹出存盘确认框
- ElMessageBox.confirm('数据存盘?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- // 用户点击“确定”,执行存盘操作
- JPenterDialog(); // 存盘函数
- }).catch(() => {
- console.log('用户取消了存盘操作');
- });
- }
-
- }
- }
- if(event.target.id === '检验类别'){
- JPdialogSelectVisible_LX.value = true
- }
- if(event.target.id === '印件号'){
- if(JPformdata['工单编号']!=''){
- //获取印件名称
- ChanliangPrintDetail({gdbh:JPformdata['工单编号']}).then(response=>{
- if (response.code === 0) {
- if(response.data){
- if(response.data.length==1){
- JPformdata['印件号'] = response.data[0].yjno
- JPformdata['印件名称'] = response.data[0].yjmc
- setColorReadonly('印件名称')
- }else{
- JPselectData_Yj.splice(0, JPselectData_Yj.length, ...response.data)
- JPdialogSelectVisible_Yj.value=true
- }
-
- }else{
- ElMessage({
- type: 'error',
- message: response.msg
- })
- }
- }
- });
- }else{
- ElMessage({
- type: 'error',
- message: '印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!'
- })
- }
- }
- if(event.target.id === '工序号'){
- document.getElementById('工序名称').style.color = 'red';
- //弹出选择
- ChanliangProcessDetail({gdbh:JPformdata['工单编号'],yjno:JPformdata['印件号'],machine: CJMC.value}).then(response=>{
- if (response.code === 0) {
- if(response.data){
- if(response.data.length === 1){
- JPformdata['工序号']=response.data[0].gxh
- JPformdata['工序名称']=response.data[0].name
- }else{
- JPselectData_Gx.splice(0, JPselectData_Gx.length, ...response.data)
- JPdialogSelectVisible_Gx.value = true
- }
- }else{
- ElMessage({
- type: 'error',
- message: response.msg
- })
- }
- }
- })
- }
- if (event.target.id === '机器') {
- // 获取当前输入框的值
- const machineInputValue = JPformdata['机器'];
-
- // 调用接口获取机台数据
- const MachineListdata = await gdzl_MachineList({ address: CJMC.value });
- console.log("MachineListdata", MachineListdata);
-
- //机台列表数据
- JPselectData_JT.value = MachineListdata.data.map((item, index) => ({
- ID: index + 1,
- 机台: item,
- }));
- JPselectData_JT.splice(0, JPselectData_JT.length, ...JPselectData_JT.value);
-
- // 检查输入的机器名称是否存在于接口返回的数据中
- const isMachineValid = JPselectData_JT.value.some(item => item.机台 === machineInputValue);
- //完全匹配时,输入错误在弹窗
- // const isMachineValid = JPselectData_JT.value.some(item => item.机台.split('-->')[0] === machineInputValue);
- if (!isMachineValid) {
- // 如果机器名称无效,则弹出弹窗
- JPdialogVisible_JT.value = true;
- // console.log('输入的机器不在列表中,弹出弹窗');
- } else {
- // console.log('输入的机器匹配列表,弹窗不显示');
- }
- }
- if (event.target.id === '定额代号') {
- if(JPformdata['机器'] === ''){
- ElMessage({
- type: 'error',
- message: '请先选择机台!'
- })
- //自动聚焦光标
- setTimeout(() => {
- const inputElement = document.getElementById('机器');
- if (inputElement) {
- inputElement.focus();
- }
- }, 100);
- }else{
- getDedhsubmit();
- }
- }
- if (event.target.id === 'bzdh') {
- console.log('检品新增选择班组')
- openBanzuDialog()
- }
- }
-
- const inputs = document.getElementsByTagName('input');
- const currentIndex = Array.from(inputs).indexOf(event.target);
- if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
- let nextIndex = currentIndex + 1;
- while (nextIndex < inputs.length) {
- if (inputs[nextIndex].disabled) {
- console.log("当前输入框为disabled,跳过");
- nextIndex++; // 跳过disabled的输入框
- continue;
- }
- if (!inputs[nextIndex].readOnly) {
- nextTick(() => {
- inputs[nextIndex].focus();
- inputs[nextIndex].select();
- });
- break;
- }
- nextIndex++;
- }
- }
- else if (event.keyCode === 38) { // 向上箭头
- for (let i = currentIndex - 1; i >= 0; i--) {
- if (!inputs[i].readOnly) {
- nextTick(()=>{
- inputs[i].focus();
- inputs[i].select();
- })
- break;
- }
- }
- // } else if (event.keyCode === 8) { // 删除箭头
- // if (event.target.selectionStart === 0) {
- // for (let i = currentIndex - 1; i >= 0; i--) {
- // if (!inputs[i].readOnly) {
- // nextTick(()=>{
- // inputs[i].focus();
- // inputs[i].setSelectionRange(0, 0);
- // })
- // break;
- // }
- // }
- // }
- } else if (event.keyCode === 37) { // 向左箭头
- if (event.target.selectionStart === 0) {
- for (let i = currentIndex - 1; i >= 0; i--) {
- if (!inputs[i].readOnly) {
- nextTick(()=>{
- inputs[i].focus();
- inputs[i].select();
- })
- break;
- }
- }
- }
- } else if (event.keyCode === 39) { // 向右箭头
- if (event.target.selectionStart === event.target.value.length) {
- for (let i = currentIndex + 1; i < inputs.length; i++) {
- if (!inputs[i].readOnly) {
- nextTick(()=>{
- inputs[i].focus();
- inputs[i].select();
- })
- break;
- }
- }
- }
- }
- }
- /*
- 机台机器选择新增
- */
- const JPdialogVisible_JT = ref(false) // 弹窗
- const JPselectData_JT = reactive([]) // table data
- const currentIndex_JT = ref(0);
- //双击事件
- const JPhandleSelectClick_JT = async (row) => {
- // 使用 split() 截取 '机器' 字符串中 '-->' 前面的部分
- const machineName = row['机台'].split('-->')[0];
- JPformdata['机器'] = machineName;
- }
- // 键盘事件
- const JPselect_JT = async (event) => {
- if (event.keyCode === 40) { // 向下箭头
- if (currentIndex_JT.value < JPselectData_JT.length - 1) {
- currentIndex_JT.value++;
- setCurrent_JT(JPselectData_JT[currentIndex_JT.value]);
- } else {
- currentIndex_JT.value = 0;
- setCurrent_JT(JPselectData_JT[currentIndex_JT.value]); // 到达最后一行时回到第一行
- }
- } else if (event.keyCode === 38) { // 向上箭头
- if (currentIndex_JT.value > 0) {
- currentIndex_JT.value--;
- setCurrent_JT(JPselectData_JT[currentIndex_JT.value]);
- } else {
- currentIndex_JT.value = JPselectData_JT.length - 1;
- setCurrent_JT(JPselectData_JT[currentIndex_JT.value]); // 到达第一行时回到最后一行
- }
- } else if (event.keyCode === 13) { // 回车键
- JPdialogVisible_JT.value = false;
- }
- }
- // ref属性
- const table_JT = ref();
- const setCurrent_JT = (row) => {
- setTimeout(() => {
- table_JT.value?.setCurrentRow(row);
- // 使用 split() 截取 '机器' 字符串中 '-->' 前面的部分
- const machineName = row['机台'].split('-->')[0];
- JPformdata['机器'] = machineName;
- });
- }
-
- /*
- 组员及分配比例弹窗
- */
- const JPclickedlist = ref(false);
- const JPemployeeDatalist = ref('')
-
- // 当前选中的行索引
- const currentIndex_zyfp = ref(0);
- // 表格引用
- const zyfp_table = ref(null);
- // 设置当前选中行
- const setCurrent_zyfp = (row) => {
- setTimeout(() => {
- zyfp_table.value?.setCurrentRow(row);
- console.log("当前选中行:", row);
- });
- };
-
- // 表格行点击处理(用于将数据填充到表单中)
- const JPtablebllickHandlerlist = (row, column, event) => {
- if (JPclickedlist.value) return; // 如果短时间内重复点击,直接退出
- let nextIndex = 1; // 从组员1开始检查
- while (JPformdata[`组员${nextIndex}`]['姓名'] !== "") {
- nextIndex++; // 找到下一个空的组员字段
- if (nextIndex > 10) return; // 如果超过最大组员数量(10个),直接退出
- }
- // 清空所有姓名为空的列的编号(避免之前的编号残留)
- for (let i = 1; i <= 10; i++) {
- if (JPformdata[`组员${i}`]['姓名'] === "") {
- JPformdata[`组员${i}`]['编号'] = ""; // 清空编号
- }
- }
- // 将选中的员工信息填充到表单中
- JPformdata[`组员${nextIndex}`]['编号'] = row.员工编号;
- JPformdata[`组员${nextIndex}`]['姓名'] = row.ygxm;
- JPblModellist.value = false; // 关闭弹窗
- // 防止短时间内重复点击(设置点击锁)
- JPclickedlist.value = true;
- setTimeout(() => (JPclickedlist.value = false), 300); // 300毫秒后解除锁定
- };
- // 键盘事件处理
- const JPselect_zyfp = (event) => {
- if (!JPemployeeDatalist.value.length) return;
- if (event.keyCode === 40) {
- // 向下箭头
- if (currentIndex_zyfp.value < JPemployeeDatalist.value.length - 1) {
- currentIndex_zyfp.value++;
- } else {
- currentIndex_zyfp.value = 0; // 到达最后一行时回到第一行
- }
- setCurrent_zyfp(JPemployeeDatalist.value[currentIndex_zyfp.value]);
- } else if (event.keyCode === 38) {
- // 向上箭头
- if (currentIndex_zyfp.value > 0) {
- currentIndex_zyfp.value--;
- } else {
- currentIndex_zyfp.value = JPemployeeDatalist.value.length - 1; // 到达第一行时回到最后一行
- }
- setCurrent_zyfp(JPemployeeDatalist.value[currentIndex_zyfp.value]);
- } else if (event.keyCode === 13) {
- // 回车键
- const currentRow = JPemployeeDatalist.value[currentIndex_zyfp.value];
- if (currentRow) {
- JPtablebllickHandlerlist(currentRow);
- }
- }
- };
-
- /*
- 修改组员及分配比例弹窗
- */
- const JPclickedlistedit = ref(false);
- const JPemployeeDatalistedit = ref('')
-
- // 当前选中的行索引
- const currentIndex_zyfpedit = ref(0);
- // 表格引用
- const zyfpedit_table = ref(null);
- // 设置当前选中行
- const setCurrent_zyfpedit = (row) => {
- setTimeout(() => {
- zyfpedit_table.value?.setCurrentRow(row);
- console.log("当前选中行:", row);
- });
- };
-
- // // 表格行点击处理(用于将数据填充到表单中)
- const JPtablebllickHandlerlistedit = (row, column, event) => {
- if (JPclickedlistedit.value) return; // 如果短时间内重复点击,直接退出
- // 判断并清空所有包含字母的编号及对应的姓名
- for (let i = 1; i <= 10; i++) {
- const current编号 = JPformdataedit[`组员${i}`]['编号'];
- if (/[a-zA-Z]/.test(current编号)) { // 使用正则检测编号中是否包含字母
- JPformdataedit[`组员${i}`]['编号'] = ""; // 清空编号
- JPformdataedit[`组员${i}`]['姓名'] = ""; // 清空姓名
- console.log(`组员${i}的编号包含字母,已清空编号和姓名`);
- }
- }
- // 从第1个组员开始检查空位
- let nextIndex = 1; // 从组员1开始检查
- while (JPformdataedit[`组员${nextIndex}`]['姓名'] !== "") {
- nextIndex++; // 找到下一个空的组员字段
- if (nextIndex > 10) return; // 如果超过最大组员数量(10个),直接退出
- }
- // 清空所有姓名为空的列的编号(避免之前的编号残留)
- for (let i = 1; i <= 10; i++) {
- if (JPformdataedit[`组员${i}`]['姓名'] === "") {
- JPformdataedit[`组员${i}`]['编号'] = ""; // 清空编号
- }
- }
- // 将选中的员工信息填充到表单中
- JPformdataedit[`组员${nextIndex}`]['编号'] = row.员工编号;
- JPformdataedit[`组员${nextIndex}`]['姓名'] = row.ygxm;
- console.log(`填充数据到组员${nextIndex}:`, {
- 编号: row.员工编号,
- 姓名: row.ygxm
- });
- JPblModellistedit.value = false; // 关闭弹窗
- // 防止短时间内重复点击(设置点击锁)
- JPclickedlistedit.value = true;
- setTimeout(() => (JPclickedlistedit.value = false), 300); // 300毫秒后解除锁定
- };
- // const JPtablebllickHandlerlistedit = (row, column, event) => {
- // if (JPclickedlistedit.value) return; // 如果短时间内重复点击,直接退出
-
- // let nextIndex = 1; // 从组员1开始检查
- // while (JPformdataedit[`组员${nextIndex}`]['姓名'] !== "") {
- // nextIndex++; // 找到下一个空的组员字段
- // if (nextIndex > 10) return; // 如果超过最大组员数量(10个),直接退出
- // }
-
- // // 清空所有姓名为空的列的编号(避免之前的编号残留)
- // for (let i = 1; i <= 10; i++) {
- // if (JPformdataedit[`组员${i}`]['姓名'] === "") {
- // JPformdataedit[`组员${i}`]['编号'] = ""; // 清空编号
- // }
- // }
-
- // // 将选中的员工信息填充到表单中
- // JPformdataedit[`组员${nextIndex}`]['编号'] = row.员工编号;
- // JPformdataedit[`组员${nextIndex}`]['姓名'] = row.ygxm;
-
- // JPblModellistedit.value = false; // 关闭弹窗
-
- // // 防止短时间内重复点击(设置点击锁)
- // JPclickedlistedit.value = true;
- // setTimeout(() => (JPclickedlistedit.value = false), 300); // 300毫秒后解除锁定
- // };
- // 键盘事件处理
- const JPselect_zyfpedit = (event) => {
- if (!JPemployeeDatalistedit.value.length) return;
- if (event.keyCode === 40) {
- // 向下箭头
- if (currentIndex_zyfpedit.value < JPemployeeDatalistedit.value.length - 1) {
- currentIndex_zyfpedit.value++;
- } else {
- currentIndex_zyfpedit.value = 0; // 到达最后一行时回到第一行
- }
- setCurrent_zyfpedit(JPemployeeDatalistedit.value[currentIndex_zyfpedit.value]);
- } else if (event.keyCode === 38) {
- // 向上箭头
- if (currentIndex_zyfpedit.value > 0) {
- currentIndex_zyfpedit.value--;
- } else {
- currentIndex_zyfpedit.value = JPemployeeDatalistedit.value.length - 1; // 到达第一行时回到最后一行
- }
- setCurrent_zyfpedit(JPemployeeDatalistedit.value[currentIndex_zyfpedit.value]);
- } else if (event.keyCode === 13) {
- // 回车键
- const currentRow = JPemployeeDatalistedit.value[currentIndex_zyfpedit.value];
- if (currentRow) {
- JPtablebllickHandlerlistedit(currentRow);
- }
- }
- };
- const multipleTable = ref(null) // 确保已经获取表格ref
- const JPmultipleTable = ref(null)
- const Selection_ids = ref('')
- const customer = ref('')
- // // 印件资料多选、工艺资料多选
- // const selectionChange = (selection) => {
- // if(selection.length !==0){
- // customer.value = selection[0].工单编号
- // }else{
- // customer.value = ''
- // }
- // const ids = selection.map(item => {
- // return item.UniqId
- // })
- // Selection_ids.value = ids.join(',')
- // }
- // const checkboxT = (row, index) => {
- // if(customer.value != ''){
- // return row.工单编号 === customer.value
- // }else{
- // return true
- // }
- // }
- // 复选框变化时记录工单编号
- const selectionChange = (selection) => {
- if (selection.length !== 0) {
- customer.value = selection[0].工单编号
- } else {
- customer.value = ''
- }
-
- const ids = selection.map(item => item.UniqId)
- Selection_ids.value = ids.join(',')
- }
- // 全选同工单(自动识别当前表格类型)
- const selectSameWorkOrder = () => {
- if (!customer.value) return ElMessage.warning('请先选择一条数据')
-
- // 动态获取当前表格数据
- const currentTableData = isJPJT.value ? JPgytableData.value : gytableData.value
-
- const validData = currentTableData.filter(item =>
- !item.isTotal &&
- !(item.产品名称?.includes('A班产量:') || item.产品名称?.includes('B班产量:'))
- )
-
- // 找出相同工单的数据
- const sameWorkOrderItems = validData.filter(item =>
- item.工单编号 === customer.value
- )
- // 根据 isJPJT.value 选择对应的表格引用
- const tableRef = isJPJT.value ? JPmultipleTable.value : multipleTable.value
-
- // 清除选择
- tableRef.clearSelection()
-
- // 选择相同工单的行
- sameWorkOrderItems.forEach(row => {
- tableRef.toggleRowSelection(row, true)
- })
-
- Selection_ids.value = sameWorkOrderItems.map(item => item.UniqId).join(',')
- }
- const invertSelection = async () => {
- // 动态获取当前表格数据
- const currentTableData = isJPJT.value ? JPgytableData.value : gytableData.value
-
- const validData = currentTableData.filter(item =>
- !item.isTotal &&
- !(item.产品名称?.includes('A班产量:') || item.产品名称?.includes('B班产量:'))
- )
-
- // 根据 isJPJT.value 选择对应的表格引用
- const tableRef = isJPJT.value ? JPmultipleTable.value : multipleTable.value
-
- // 获取当前选择
- const currentSelected = tableRef.getSelectionRows()
-
- // 清除选择
- tableRef.clearSelection()
- // 反选操作
- validData.forEach(row => {
- tableRef.toggleRowSelection(
- row,
- !currentSelected.some(selected => selected.UniqId === row.UniqId)
- )
- })
-
- Selection_ids.value = tableRef
- .getSelectionRows()
- .map(item => item.UniqId)
- .join(',')
- }
- //删除
- function onDel() {
- Chanliangdel()
- }
- // 日产量上报删除
- const Chanliangdel = async() => {
- if(!Selection_ids.value){
- ElMessage({
- type: 'warning',
- message: '请勾选要删除的数据'
- })
- return
- }
- const res = await ChanliangDel({ UniqId:Selection_ids.value})
- if (res.code === 0) {
- ElMessage({
- type: 'success',
- message: '成功'
- })
- FacilitychanLiang()
- }else{
- ElMessage({
- type: 'error',
- message: '失败'
- })
- }
- }
- //核算调整
- function hesuan(){
- hesuanVisible.value=true
- }
- //制程检验
- const zhichengstatus=ref(false)
- const xunchaData = ref([]);
- const zhichengVisible = ref(false)
- const zhichengtreeData=ref([{
- label: '首件与过程确认'
- },{
- label: '机台检验'
- },{
- label: 'IPQC检验'
- }])
- const onzhicheng = async () => {
- zhichengstatus.value=false
- xunchaData.value=[]
- const response = await reportProduceInfo({machine:JTMC.split("#")[0]});
- if (response.code === 0) {
- xunchaData.value.order=response.data.order
- xunchaData.value.yjno=response.data.yjno
- xunchaData.value.product_name=response.data.product_name
- xunchaData.value.gxmc=response.data.gxmc
- xunchaData.value.lcdh=0
- xunchaData.value.sczl_bh=''
- xunchaData.value.sczl_name=''
- xunchaData.value.remark=''
- zhichengVisible.value = true;
- }
- }
- const category =ref()
- const zhibiaoselectData=ref([])
- const fujiaselectData=ref([])
- const zhichengNodeClick = (node, check) => {
- if(node.label){
- zhichengstatus.value=true
- category.value=node.label
- processInspectionRecordsItem()
- }
- };
- //工单打印
- const pd_gdprintonClick = () => {
- if(formData.value.工单编号==''){
- ElMessage({ type: 'warning', message: '未获取到工单' });
- return
- }
- printPageRef.value.open(formData.value.工单编号)
- }
- const processInspectionRecordsItem = async (value) => {
- const response = await ProcessInspectionRecordsItem({ process: xunchaData.value.gxmc });
- if (response.code === 0) {
- zhibiaoselectData.value=response.data.首件.指标检验.map(item=>{
- item.notjc=true;
- item.zc=false;
- item.yc=false;
- item.remark=''
- item.category=category.value
- item.workOrder=xunchaData.value.order
- item.yjno=xunchaData.value.yjno
- item.flow=xunchaData.value.lcdh
- item.team=BZMC.value
- item.machine=JTMC.split("#")[0]
- item.selected = '不检测';
- return item
- })
- fujiaselectData.value=response.data.首件.附加.map(item=>{
- item.notjc=true;
- item.workOrder=xunchaData.value.order
- item.yjno=xunchaData.value.yjno
- item.flow=xunchaData.value.lcdh
- item.machine=JTMC.split("#")[0]
- return item
- })
- }
- };
- const zhichengDialog = async () => {
- let arr =[]
- zhibiaoselectData.value.map(item=>{
- if(item.zc==true){
- item.result='合格'
- item.item=item.检验项目
- item.instrument=item.检测方法
- item.standard=item.相关标准
- delete item.notjc
- delete item.zc
- delete item.yc
- delete item.检验项目
- delete item.检测方法
- delete item.相关标准
- delete item.检验频率
- arr.push(item)
- return item
- }
- if(item.yc==true){
- item.result='不合格'
- item.item=item.检验项目
- item.instrument=item.检测方法
- item.standard=item.相关标准
- delete item.notjc
- delete item.zc
- delete item.yc
- delete item.检验项目
- delete item.检测方法
- delete item.相关标准
- delete item.检验频率
- arr.push(item)
- return item
- }
- if(item.notjc==true){
- item.result='不检测'
- item.item=item.检验项目
- item.instrument=item.检测方法
- item.standard=item.相关标准
- delete item.notjc
- delete item.zc
- delete item.yc
- delete item.检验项目
- delete item.检测方法
- delete item.相关标准
- delete item.检验频率
- // arr.push(item)
- return item
- }
- })
- let arrs=[]
- let fujiastatus=0
- fujiaselectData.value.map(item=>{
- if(item.notjc==true){
- return item
- }else{
- fujiastatus=1
- item.remark=item.缺陷备注
- delete item.notjc
- delete item.缺陷备注
- delete item.编号
- arrs.push(item)
- return item
- }
- })
- // return
- if(fujiastatus==1){
- const responses = await AdditionalInspectionRecordAdd(arrs);
- fujiastatus=0
- }
- // 使用filter方法过滤掉所有result为"不检测"的对象
- const filteredData = zhibiaoselectData.value.filter(item => item.selected !== "不检测");
- const response = await ProcessInspectionRecordsItemAdd(filteredData);
- if (response.code === 0) {
- ElMessage({
- type: 'success',
- message: '成功'
- })
- zhichengVisible.value=false
- zhibiaoselectData.value=[]
- fujiaselectData.value=[]
- }
- }
- const closezhichengDialog = async () => {
- zhichengVisible.value=false
- }
- //设置机台状态
- const dialogSbyxgl=ref(false)
- function onstatus() {
- dialogSbyxgl.value=true
- SetMachineStatus()
- }
- //设置机台状态
- const SetMachineStatus = async () => {
- }
- //客诉记录
- const complaintsShow = ref(false)
- const complaintsData = reactive([])
- function oncomplaints() {
- Complaints()
- }
- // 客诉记录表格填充
- const Complaints = async() => {
- if(finishedcode.value==null){
- ElMessage({
- type: 'error',
- message: '请先选择产品',
- })
- return
- }
- const res = await ComplaintRecord({productCode :finishedcode.value})
- if (res.code === 0) {
- if(res.data==null){
- ElMessage({
- type: 'error',
- message: '此产品暂无客诉记录',
- })
- }else{
- complaintsData.splice(0, complaintsData.length, ...res.data);
- selectedRowData.value=complaintsData[0]
- complaintsShow.value=true
- }
- }
- }
- const selectedRowData = ref({
- })
- //客诉表格单击
- const complaintshandle = (val, row) => {
- selectedRowData.value=val
- };
- //换型清场
- const huanxingVisible = ref(false)
- const huanxingtreeData=ref([])
- const huanxingselectData = ref([])
- const huanxingstatus=ref(false)
- const activNames=ref('first')
- function onClear() {
- huanxingVisible.value=true
- RemodelGetTab()
- }
- // function onClear2() {
- // console.log(formData.value.工单编号)
- // console.log(BZMC)
- // }
- const RemodelGetTab = async() => {
- const response = await remodelGetTab()
- let arr=[]
- if (response.code === 0) {
- for(let key in response.data){
- if(response.data[key][0]){
- let children =[]
- for (let i = 0; i < response.data[key].length; i++) {
- children.push({label:response.data[key][i],machine:key})
- }
- arr.push({
- label:key,
- children:children
- })
- }else{
- arr.push({label:key})
- }
- }
- huanxingtreeData.value=arr
- }else{
- ElMessage({
- type: 'error',
- message: '请注意, 工单编号输入空置, 除非有特殊需要!'
- })
- }
- }
- const huanxingNodeClick = (node) => {
- //存放当前节点的nodeId
- if(node.machine){
- huanxingstatus.value=true
- remodelDetail(node.label.split('/')[1])
- modelChangeRecord(node.machine)
- }else{
- console.log('2')
- }
- }
- const huanxingData = ref({})
- const remodelDetail = async (val) => {
- const response = await RemodelDetail({UniqId:val});
- if (response.code === 0) {
- huanxingData.value=response.data
- if(response.data.项目1==1){
- huanxingData.value.项目1=true
- }else{
- huanxingData.value.项目1=false
- }
- if(response.data.项目2==1){
- huanxingData.value.项目2=true
- }else{
- huanxingData.value.项目2=false
- }
- if(response.data.项目3==1){
- huanxingData.value.项目3=true
- }else{
- huanxingData.value.项目3=false
- }
- if(response.data.项目4==1){
- huanxingData.value.项目4=true
- }else{
- huanxingData.value.项目4=false
- }
- if(response.data.项目5==1){
- huanxingData.value.项目5=true
- }else{
- huanxingData.value.项目5=false
- }
- }else{
- ElMessage({
- type: 'error',
- message: '请注意, 工单编号输入空置, 除非有特殊需要!'
- })
- }
- }
- const modelChangeRecord = async (val) => {
- const response = await ModelChangeRecord({machine:val});
- if (response.code === 0) {
- huanxingselectData.value=response.data
- }
- }
- import { nextTick } from 'vue';
- //设备点检
- function ondianjian() {
- getSpotCheckItem(JTMC).then(treeData => {
- if (treeData) {
- // 如果获取成功,treeData 就是我们需要的树形结构数据
- dianjiantreeData = treeData;
- // 使用 nextTick 来确保在更新 dianjianVisible 后立即刷新视图
- nextTick(() => {
- dianjianVisible.value = true;
- });
- // 这里可以处理treeData,例如将其赋值给某个状态管理变量或者用于渲染界面
- } else {
- // 如果获取失败,则treeData为null
- console.log('获取巡检项目树形结构数据失败');
- }
- });
- }
- const onyinban = async() => {
- console.log(formData.value.productCode)
- const res = await facilityPrintGetTab({productCode:formData.value.productCode})
- if(res.code===0){
- yinbantreeData.value=[{
- label:'产品印版库',
- children:res.data.map(item=>({
- label:item.印版分类,
- code:item.编号
- }))
- }]
- // console.log(res.data.map(item=>({
- // label:item.印版分类,
- // code:item.编号
- // })))
- yinbanVisible.value = true;
- }
- }
- const handleyinbanDialogClose = () =>{
- yinbanselectData.value = []
- }
- const onxuncha = async() => {
- xunchaVisible.value=true
- }
- //获取设备点检->检验项目
- const FacilityInspectionItem = async (value) => {
- try {
- // 调用接口获取巡检项目数据
- const response = await facilityInspectionItem({ unitName: value ,machine:JTMC.split("#")[0]});
- // 检查接口返回的状态码
- if (response.code === 0) {
- dianjianselectData.splice(0, dianjianselectData.length, ...response.data.map(item=>{
- item.notjc=true;
- item.zc=false;
- item.yc=false;
- item.remark=''
- item.unitName=value
- item.team=BZMC.value
- item.machine=JTMC
- return item
- }))
- }
- } catch (error) {
- // 捕获并打印异常
- console.error("获取巡检项目数据出错:" + error);
- return null;
- }
- };
- //机台印版领用->右侧详情
- const facilityPrintDetailItem = async (value) => {
- try {
- // 调用接口获取巡检项目数据
- const response = await facilityPrintDetail({ workOrder: formData.value.工单编号,code:value,productCode:formData.value.productCode,page:ybpage.value,limit:ybpageSize.value });
- // 检查接口返回的状态码
- if (response.code === 0) {
- ybtotal.value = response.data.total
- yinbanselectData.value=response.data.data
- }
- } catch (error) {
- // 捕获并打印异常
- console.error("获取数据出错:" + error);
- return null;
- }
- };
- let currentSelection = ref([]); // 存储选中的数据
- // 勾选回调
- const yinbanSelectionChange = (selection) => {
- currentSelection.value = selection; // 更新选中的数据
- console.log("当前勾选数据:", currentSelection.value);
- };
- const onout = async () => {
- try {
- console.log("当前选中数据:", currentSelection.value);
- // 检查必填字段
- const missingFields = [];
- const requestData = currentSelection.value.map((item, index) => {
- const 印数 = item.印数 != null ? item.印数.toString() : '0';
- // 定义必填字段及其映射关系
- const requiredFields = {
- '工单编号': formData.value.工单编号,
- '存货编码': item.存货编码,
- '供方批号': item.供方批号,
- '印数':印数,
- '印件号': formData.value.印件号,
- '系统ID': sys_id
- };
- // 检查必填字段是否为空
- Object.entries(requiredFields).forEach(([fieldName, value]) => {
- if (value === undefined || value === null || value === "") {
- missingFields.push(`第${index + 1}条数据的${fieldName}`);
- }
- });
- // 构建请求数据对象
- return {
- Yb_工单编号: formData.value.工单编号,
- Yb_存货编码: item.存货编码,
- Yb_供方批号: item.供方批号,
- Yb_领用机台: JTMC,
- Yb_印数: 印数,
- Yb_印件号: formData.value.印件号,
- Sys_id: sys_id
- };
- });
- // 如果有缺失字段,抛出错误
- if (missingFields.length > 0) {
- throw new Error(`以下字段为必填项且不能为空:\n${missingFields.join("\n")}`);
- }
- console.log("提交数据:", requestData);
- const response = await PrintDetailAdd(requestData);
-
- if (response?.code === 0) {
- ElMessage.success("领出成功!");
- facilityPrintDetailItem(yinbancode.value);
- } else {
- ElMessage.error(`领出失败: ${response?.msg || "未知错误"}`);
- }
- } catch (error) {
- console.error("领出失败:", error);
- ElMessage.error(`调用失败: ${error.message}`);
- }
- };
- const dialogwithdrawVisible = ref(false)
- const Plate = ref({ 印数: '' });
- const onwithdraw = async () => {
- console.log(currentSelection.value);
- // 检查是否有印数为 null 或 undefined
- const hasInvalidUniqId = currentSelection.value.some(item => {
- return item?.UniqId === null || item?.UniqId === undefined;
- });
- if (hasInvalidUniqId) {
- ElMessage.error("选择的数据中有未领用的印版,无法收回!");
- return;
- }
- // 所有 UniqId 都有效,才打开弹窗
- dialogwithdrawVisible.value = true;
- };
- // 删除操作
- const rawenterDialog = async () => {
- console.log(Plate.value.印数)
- try {
- await ElMessageBox.confirm('确定收回吗', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- })
- console.log('收回选中的数据:', currentSelection.value)
- const uniqIds = currentSelection.value.map(item => item.UniqId).join(',');
- console.log(uniqIds);
- // 调用收回API,假设是批量删除接口
- const res = await PrintDetailEdit({ id: uniqIds,number:Plate.value.印数})
-
- if (res.code === 0) {
- ElMessage.success('收回成功')
- facilityPrintDetailItem(yinbancode.value);
- rawcloseDialog()
- // 清空选中
- currentSelection.value = []
- } else {
- ElMessage.error(res.msg || '收回失败')
- }
- } catch (error) {
- if (error !== 'cancel') {
- console.error('收回失败:', error)
- ElMessage.error('收回操作已取消')
- }
- }
- }
- const rawcloseDialog = () => {
- Plate.value.印数 = ''
- console.log(Plate)
- dialogwithdrawVisible.value = false
- }
- const yinbanmultipleTable = ref(null); // 表格ref
- const yinbaninvertSelection = () => {
- // 1. 获取当前表格的所有有效数据(排除不需要的行)
- const validData = yinbanselectData.value.filter(item =>
- !item.isTotal &&
- !(item.产品名称?.includes('A班产量:') || item.产品名称?.includes('B班产量:'))
- );
- // 2. 获取当前已选中的行
- const currentSelected = yinbanmultipleTable.value?.getSelectionRows() || [];
-
- // 3. 清除当前所有选择
- yinbanmultipleTable.value?.clearSelection();
- // 4. 执行反选操作
- validData.forEach(row => {
- yinbanmultipleTable.value?.toggleRowSelection(
- row,
- !currentSelected.some(selected => selected.UniqId === row.UniqId)
- );
- });
- };
- //树形结构单机
- const dianjianselectData = reactive([])
- const yinbanselectData = ref([])
- const xunchaselectData = ref([])
- const yinbancode = ref('')
- const dianjianNodeClick = (node, check, nodeData) => {
- if (node.children && node.children.length > 0) {
- // 点击的是父节点,且有子节点
- } else {
- FacilityInspectionItem(node.label,)
- }
- };
- const yinbanNodeClick = (node, check, nodeData) => {
- if (node.children && node.children.length > 0) {
- // 点击的是父节点,且有子节点
- } else {
- yinbancode.value = node.code
- facilityPrintDetailItem(node.code)
- }
- };
- // 印版分页
- const ybpage = ref(1)
- const ybtotal = ref(0)
- const ybpageSize = ref(50)
- const ybhandleCurrentChange = (val) => {
- ybpage.value = val;
- facilityPrintDetailItem(yinbancode.value);
- };
- // 修改页面容量 点击多少条/页
- const ybhandleSizeChange = (val) => {
- // page.value = 10;
- ybpageSize.value = val;
- facilityPrintDetailItem(yinbancode.value);
- };
- const xunchaNodeClick = (node, check, nodeData) => {
- if(node){
- fieldInspectionRecord()
- }
- }
- const fieldInspectionRecord = async () => {
- let time = new Date();
- time.setDate(time.getDate() - 0); // 今天的前N天的日期,N自定义
- time= `${time.getFullYear()}-${time.getMonth() + 1}-${time.getDate()}`;
- const response = await FieldInspectionRecord({ workOrder: formData.value.工单编号,team:BZMC.value,start:time+' 08:30:00' });
- if (response.code === 0) {
- xunchaselectData.value=response.data
- }
- }
- let pandingfangfa=ref()
- //检验项目单击
- const dianjianhandle = (val, row) => {
- try {
- pandingfangfa.value = val.判定标准;
- } catch (error) {
- console.error('An error occurred:', error);
- }
- };
- const notjcClick = (val) => {
- console.log("不检测")
- val.notjc=true
- val.zc=false
- val.yc=false
- };
- const zcClick = (val) => {
- console.log("合格")
- val.notjc=false
- val.zc=true
- val.yc=false
- };
- const ycClick = (val) => {
- console.log("不合格")
- val.notjc=false
- val.zc=false
- val.yc=true
- };
- const rowClassName = (row, column) => {
- try {
- if (row.unchecked) {
- return 'row-yellow';
- }
- return '';
- } catch (error) {
- console.error('An error occurred:', error);
- return '';
- }
- };
- // 异步函数,用于获取指定设备的巡检项目,并且将结果格式化为树形结构数据
- const getSpotCheckItem = async (machineName) => {
- try {
- // 调用接口获取巡检项目数据
- const response = await facilitySpotCheckItem({ machine: machineName });
- // 检查接口返回的状态码
- if (response.code === 0) {
- // 构建树形结构数据
- const childrenData = Object.entries(response.data).map(([id, label]) => {
- return {
- id, // 子节点的唯一标识
- label, // 子节点的标签
- children: [] // 初始化子节点数组
- };
- });
- // 创建包含父节点的树形结构数据
- const treeData = [{
- id: machineName, // 父节点的唯一标识
- label: machineName, // 父节点的标签
- children: childrenData // 子节点数据
- }];
- // 返回构建好的树形结构数据
- return treeData;
- } else {
- // 如果接口返回的状态码不是0,打印错误信息
- console.error("接口返回错误:" + response.msg);
- return null;
- }
- } catch (error) {
- // 捕获并打印异常
- console.error("获取巡检项目数据出错:" + error);
- return null;
- }
- };
- const dianjianenterDialog = async () => {
- // 转换数据格式
- const formattedData = dianjianselectData.map(item => {
- // 判断状态
- let status;
- if (item.notjc) {
- status = "不检测";
- } else if (item.yc) {
- status = "不合格";
- } else if (item.zc) {
- status = "合格";
- } else {
- status = "";
- }
- // 返回接口需要的格式
- return {
- team: item.team,
- machine: item.machine,
- unitName: item.unitName,
- itemName: item.检验项目,
- method: item.点检方法,
- status: status,
- remark: item.remark,
- standard: item.判定标准,
- };
- });
- console.log("转换后的数据:", formattedData);
- // 调用接口提交数据
- try {
- const res = await InspectionItemAdd(formattedData); // 替换成你的 API 方法
- if (res.code === 0) {
- ElMessage.success("提交成功!");
- dianjianVisible.value = false;
- } else {
- ElMessage.error(res.msg || "提交失败!");
- }
- } catch (error) {
- ElMessage.error("请求出错:" + error.message);
- }
- };
- const dianjiancloseDialog = () => {
- dianjianVisible.value = false;
- }
- //班组维护
- // function onBZ() {
- const onBZ = async () => {
- FacilityTeam(JTMC)
- fetchData()
- detailShow.value=true
-
- }
- // 班组人员及分配比例
- const FacilityTeam = async (value) => {
- const response = await facilityTeam({ machine: value });
- if (response.code === 0) {
- BZMC.value=response.data[0]['班组号']
- InspectionRecord()
- FacilityDetail()
- // 清空 bzData 数组
- bzData.splice(0, bzData.length);
- FPData.splice(0, FPData.length);
- // 遍历接口返回的数据,并给每个对象添加 JTMC 属性
- const updatedData = response.data.map(item => {
- return { ...item, JTMC: value }; // 添加 JTMC 属性
- });
- // 将更新后的数据添加到 bzData 数组
- bzData.push(...updatedData)
- FPData.push(...updatedData)
- return 1
- }
- };
- //日产量批量维护
- function onRCL() {
- if(!Selection_ids.value){
- ElMessage({
- type: 'warning',
- message: '请先勾选数据'
- })
- return
- }
- FacilityTeam_rcl(JTMC)
- detailShow_rcl.value=true
- console.log('333')
- }
- let BZMC_rcl=ref()
- const bzData_rcl = reactive([])
- const selectedOption_rcl = ref('');
- // 班组人员及分配比例
- const FacilityTeam_rcl = async (value) => {
- const response = await facilityTeam({ machine: value });
- if (response.code === 0) {
- // formData.value.班组 = response.data[0]['班组号'];
- BZMC_rcl.value = response.data[0]['班组号']
- selectedOption_rcl.value = JTMC
- // 清空 bzData 数组
- bzData_rcl.splice(0, bzData_rcl.length);
- // 遍历接口返回的数据,并给每个对象添加 JTMC 属性
- const updatedData = response.data.map(item => {
- return { ...item, JTMC: value }; // 添加 JTMC 属性
- });
- // 将更新后的数据添加到 bzData 数组
- bzData_rcl.push(...updatedData);
- return 1
- }
- };
- //班组单击
- const currentBz_rcl ={}
- const BZvalue_rcl=ref()
- const BZhandle_rcl = (val) => {
- currentBz_rcl.value = val
- BZvalue_rcl.value=val.ID
- formDatas_rcl.value = {};
- let sczl_bhkey_rcl = ''
- let sczl_namekey_rcl = ''
- let percentagekey_rcl = ''
- if (currentBz_rcl.value[9]) {
- for (let i = 1; i <= 9; i++) {
- sczl_bhkey_rcl = `code${i}`
- sczl_namekey_rcl = `name${i}`
- percentagekey_rcl = `percentage${i}`
- formDatas_rcl.value[sczl_bhkey_rcl] = '';
- formDatas_rcl.value[sczl_namekey_rcl] = '';
- formDatas_rcl.value[percentagekey_rcl] = '';
- }
- formDatas_rcl.value.code8 = currentBz_rcl.value[9].split(' ')[0];
- formDatas_rcl.value.name8 = currentBz_rcl.value[9].split(' ')[1]
- formDatas_rcl.value.percentage8 = Math.round((parseFloat(currentBz_rcl.value[9].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
- for (let i = 1; i <= Math.min(Object.keys(currentBz_rcl.value).length - 5, 6); i++) {
- sczl_bhkey_rcl = `code${i}`
- sczl_namekey_rcl = `name${i}`
- percentagekey_rcl = `percentage${i}`
- formDatas_rcl.value[sczl_bhkey_rcl] = currentBz_rcl.value[i - 1].split(' ')[0];
- formDatas_rcl.value[sczl_namekey_rcl] = currentBz_rcl.value[i - 1].split(' ')[1];
- if(isNaN(parseFloat(currentBz_rcl.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]))){
- formDatas_rcl.value[percentagekey_rcl] = currentBz_rcl.value[i - 1].split(' ')[2].split('(')[1].split(')')[0];
- }else{
- formDatas_rcl.value[percentagekey_rcl] = Math.round((parseFloat(currentBz_rcl.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
- }
- }
- } else {
- for (let i = 1; i <= 10; i++) {
- sczl_bhkey_rcl = `code${i}`
- sczl_namekey_rcl = `name${i}`
- percentagekey_rcl = `percentage${i}`
- formDatas_rcl.value[sczl_bhkey_rcl] = '';
- formDatas_rcl.value[sczl_namekey_rcl] = '';
- formDatas_rcl.value[percentagekey_rcl] = '';
- }
- for (let i = 1; i <= Math.min(Object.keys(currentBz_rcl.value).length - 4, 6); i++) {
- sczl_bhkey_rcl = `code${i}`
- sczl_namekey_rcl = `name${i}`
- percentagekey_rcl = `percentage${i}`
- formDatas_rcl.value[sczl_bhkey_rcl] = currentBz_rcl.value[i - 1].split(' ')[0];
- formDatas_rcl.value[sczl_namekey_rcl] = currentBz_rcl.value[i - 1].split(' ')[1];
- if(isNaN(parseFloat(currentBz_rcl.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]))){
- formDatas_rcl.value[percentagekey_rcl] = currentBz_rcl.value[i - 1].split(' ')[2].split('(')[1].split(')')[0];
- }else{
- formDatas_rcl.value[percentagekey_rcl] = Math.round((parseFloat(currentBz_rcl.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
- }
- }
- }
- BZMC_rcl.value=val.班组号
- };
- const selectBz_rcl = () => {
- if(currentBz_rcl.value==undefined){
- ElMessage({
- type: 'warning',
- message: '请选择班组'
- })
- return
- }
- YieldTeamEdit({'Uniqid': Selection_ids.value, 'teamID': currentBz_rcl.value.ID}).then( res => {
- if(res.code==0){
- ElMessage({
- type: 'success',
- message: '成功'
- })
- closeDetailShow_rcl()
- FacilitychanLiang()
- }
- })
- }
- // =========== 流程单查询 ===========
- const pd_lcdlist = ref(false);
- const pd_lcdformData = reactive({
- gdbh: '',
- code: '',
- name: '',
- yjno: '',
- });
- // 流程单查询按钮
- const processList = ref([]);
- const pd_lcdlistonClick = async () => {
- if(formData.value.工单编号 === ''){
- ElMessage({
- type: 'warning',
- message: '请选择一条工单'
- })
- return;
- }
- console.log(formData)
- if(lcd_Gd_yjno.value === '' || lcd_Gd_yjno.value === null){
- console.log(formData.value.工单编号)
- console.log(formData.value.印件号)
- pd_lcdformData['gdbh'] = formData.value.工单编号;
- pd_lcdformData['yjno'] = formData.value.印件号;
- // ElMessage({type: 'warning',message: '请选择具体的工单,在进行操作'})
- // return false;
- }else{
- pd_lcdformData['gdbh'] = lcd_Gd_gdbh.value;
- pd_lcdformData['yjno'] = lcd_Gd_yjno.value;
- console.log(pd_lcdformData)
- }
- pd_lcdlist.value = true;
- processList.value = []
- _getOrderProcessLeft_list();
- }
- const pd_lcdProductValue = async () => {
- _getOrderProcessLeft_list();
- }
- const pd_lcd_treeData = ref([]);
- const _getOrderProcessLeft_list = async () => {
- const order = pd_lcdformData['gdbh'];
- const yjno = pd_lcdformData['yjno']
- // console.log(order)
- try {
- //5.1流程单查询-工单工序生产进程菜单栏
- const getOrderProcessLeft_list = await getOrderProcessLeft({ order:order,yjno:yjno});
- console.log(getOrderProcessLeft_list)
- pd_lcdformData['code'] = getOrderProcessLeft_list.data.Gd_info['code'];
- pd_lcdformData['name'] = getOrderProcessLeft_list.data.Gd_info['name'];
- pd_lcd_treeData.value = [{
- label: order + '-' + getOrderProcessLeft_list.data.Gd_info['name'],
- // label: order + '-' + getOrderProcessLeft_list.data.Gd_info['code'] + '-' + getOrderProcessLeft_list.data.Gd_info['name'],
- value: undefined,
- children: []
- }]
- const newData = [];
- for (let key in getOrderProcessLeft_list.data.Gy_info) {
- let temp = getOrderProcessLeft_list.data.Gy_info[key];
- let concatenatedValue = `${temp.Gy0_yjno}-${temp.Gy0_gxh} ---> ${temp.Gy0_gxmc}`;
- newData.push({ label: concatenatedValue,value: temp.Gy0_gxh });
- }
- pd_lcd_treeData.value[0].children = newData;
- //5.2流程单查询-获取工单工序生产进程右侧【进入页面默认显示第一个】
- const getOrderProcessRight_list = await getOrderProcessRight({order:order, gxNo:newData[0].value,yjno:yjno});
- processList.value = getOrderProcessRight_list.data
- } catch (error) {
- console.error(error);
- }
- };
- const pd_lcd_handleNodeClick = async (node) => {
- if (node.value === undefined) return
- const order = pd_lcdformData['gdbh'];
- const yjno = pd_lcdformData['yjno'];
- ////5.2流程单查询-获取工单工序生产进程右侧
- const getOrderProcessRight_list = await getOrderProcessRight({order:order, gxNo:node.value,yjno:yjno});
- console.log(getOrderProcessRight_list)
- processList.value = getOrderProcessRight_list.data
- };
- // 流程单查询退出
- const pd_lcdCancel = async () => {
- pd_lcdlist.value = false;
- }
- /*
- 工单生产批次信息查询
- */
- const scpconlist = ref(false);
- const scpconClick = async () => {
- console.log(formData.value.工单编号)
- if(lcd_Gd_gdbh.value){
- searchInfolcd.value = lcd_Gd_gdbh.value
- }else{
- searchInfolcd.value = formData.value.工单编号
- }
-
- scpconlist.value = true;
- tableDatalcd.splice(0,tableDatalcd.length,...[]);//表格数据
- onSubmitlcd()//调用接口
- }
- //进入页面默认光标加载
- setTimeout(() => {
- const inputElement = document.getElementById('searchInfo');
- if (inputElement) {
- inputElement.focus();
- }
- }, 100);
-
- //搜索
- const searchInfolcd = ref('');
- const tableDatalcd = reactive([])
- //查询按钮
- const onSubmitlcd = () => {
- _StaGetOrderList()
- };
- //搜索回车
- const Enterkeysearch = (event) => {
- if (event.key === 'Enter') {
- _StaGetOrderList();
- }
- };
- //调用接口
- const _StaGetOrderList = async (node) => {
- const StaGetOrderListdata = await StaGetOrderList({search:searchInfolcd.value});
- console.log(StaGetOrderListdata)
- if (StaGetOrderListdata.data === null) {
- ElMessage({
- type: 'warning',
- message: '未搜索具体查询条件',
- });
- }
- tableDatalcd.splice(0,tableDatalcd.length,...StaGetOrderListdata.data);//表格数据
- };
- // 树形节点属性映射
- const treeDatalcd = reactive([]);
- const defaultProps = {
- label: 'label',
- children: 'children',
- };
- //全局调用工单编号、印件号
- const _Gd_gdbhlcd = ref(null)
- const _Gd_yjnolcd = ref(null)
- const _GetorderDetail = ref(null)
- /*
- 弹窗页面
- */
- const popdialog = ref(false);
- const currentRow = ref('');
- // 获取当前行数据
- const tableRowClicklcd = (row) => {
- currentRow.value = row; // 保存当前选中行
- };
- // 按钮点击逻辑
- const onstatsuclick = async () => {
- console.log(currentRow)
- if (!currentRow.value) {
- ElMessage({
- type: "warning",
- message: "请先点击选择一行数据",
- });
- return;
- }
- await updateCompanyFunclcd(currentRow.value);
- };
- //双击
- const updateCompanyFunclcd = async (row) => {
- console.log("双击",row)
- _Gd_gdbhlcd.value = row['Gd_gdbh']
- _Gd_yjnolcd.value =row['行号']
-
- const StaGetOrderDetaildata = await StaGetOrderDetail({ gdbh: row['Gd_gdbh'], yjno: row['行号'] });
- let resultData = StaGetOrderDetaildata.data;
- // 遍历对象,将 null 值替换为空字符串
- Object.keys(resultData).forEach((key) => {
- if (resultData[key] === null) {
- resultData[key] = '';
- }
- });
- _GetorderDetail.value = resultData;
- // console.log("_GetorderDetail.value", _GetorderDetail.value);
- _StaGetList(row)
- }
- //左侧树形节点点击事件
- const handleNodeClicklcd = (node) => {
- _StaProcessList(node['num'])
- _StaProcessAnomaly()
- };
- //获取左侧菜单栏
- const _StaGetList = async (row) => {
- const StaGetListdata = await StaGetList({ gdbh: row['Gd_gdbh'], yjno: row['行号'] });
-
- if (StaGetListdata.msg === '成功') {
- // 转换数据:确保每个节点有 label 属性
- const formattedData = StaGetListdata.data.map(item => ({
- ...item,
- label: item.流程单 || `流程单-${item.num}`,
- }));
-
- treeDatalcd.splice(0, treeDatalcd.length, ...formattedData);
- popdialog.value = true;
- } else {
- ElMessage({ type: 'warning', message: StaGetListdata.msg });
- }
- };
- //工艺及生产班组
- const lcdtableData = reactive([])
- const _StaProcessList = async (node) => {
- const StaProcessListdata = await StaProcessList({gdbh:_Gd_gdbhlcd.value,yjno:_Gd_yjnolcd.value,num:node});
- lcdtableData.splice(0,lcdtableData.length,...StaProcessListdata.data);
- };
- //制程异常记录
- const zcycjltableData = reactive([])
- const _StaProcessAnomaly = async () => {
- const StaProcessAnomalydata = await StaProcessAnomaly({gdbh:_Gd_gdbhlcd.value,yjno:_Gd_yjnolcd.value});
- zcycjltableData.splice(0,zcycjltableData.length,...StaProcessAnomalydata.data);
- };
- //退出按钮
- const ontuicclick = async () => {
- popdialog.value = false
- };
- //退出按钮
- const ontuicclicks = async () => {
- scpconlist.value = false
- };
- /*
- 特殊机台组员及分配比例
- */
- const blModel = ref(false)
- const employeeData = ref('')
- const bz_Special = ref('')
- const getbzyg = async (value,key) => {
- bz_Special.value = key
- let bzyg=''
- bzyg=`code${key}`
- let bzxm=''
- bzxm=`name${key}`
- const response = await getYg({sczl_bh:formDatas.value[bzyg]});
- if (response.code === 0) {
- if(response.data.length === 1){
- formDatas.value[bzxm]= response.data[0].ygxm
- formDatas.value[bzyg]= response.data[0].员工编号
- }else{
- blModel.value = true;
- employeeData.value = response.data // 假设响应数据是数组
- }
- }
- }
- const clicked = ref(false);
- const currentIndex = ref(0);
- const tableBZRR = ref();
- // 模拟点击某一行
- const setCurrent = (row) => {
- setTimeout(() => {
- tableBZRR.value?.setCurrentRow(row);
- const { 员工编号, ygxm } = row;
- console.log("选中行数据:", row);
- });
- };
- // 键盘事件处理逻辑
- const selectBZRR = (event) => {
- if (event.keyCode === 40) {
- // 向下箭头
- if (currentIndex.value < employeeData.value.length - 1) {
- currentIndex.value++;
- } else {
- // 如果是最后一行,回到第一行
- currentIndex.value = 0;
- }
- } else if (event.keyCode === 38) {
- // 向上箭头
- if (currentIndex.value > 0) {
- currentIndex.value--;
- } else {
- // 如果是第一行,跳到最后一行
- currentIndex.value = employeeData.value.length - 1;
- }
- } else if (event.keyCode === 13) {
- // 回车键,模拟触发点击事件
- const row = employeeData.value[currentIndex.value];
- tablebllickHandler(row); // 手动调用行点击事件
- }
- //高亮当前选中的行
- setCurrent(employeeData.value[currentIndex.value]);
- };
- // 表格行点击事件处理
- const tablebllickHandler = async (row, column, event) => {
- if (clicked.value) {
- // 如果已经点击过一次,则不再执行操作
- return;
- }
- for (let i = 1; i <= 8; i++) {
- const codeKey = `code${i}`;
- const nameKey = `name${i}`;
- // 如果 code 有值,且对应的 name 没有值,则清空 code 的值
- if (formDatas.value[codeKey] !== '' && formDatas.value[nameKey] === '') {
- formDatas.value[codeKey] = '';
- // console.log(`清空了 ${codeKey} 的值,因为 ${nameKey} 为空`);
- }
- // 检查 code 是否包含字母(使用正则表达式)
- if (/[a-zA-Z]/.test(formDatas.value[codeKey])) {
- formDatas.value[codeKey] = ''; // 清空 code
- formDatas.value[nameKey] = ''; // 清空 name
- // console.log(`清空了 ${codeKey} 和 ${nameKey} 的值,因为 ${codeKey} 中包含字母`);
- }
- }
- let nextIndex = 1;
- // 找到下一个需要填充的空位置
- while (
- formDatas.value[`code${nextIndex}`] !== '' &&
- formDatas.value[`name${nextIndex}`] !== ''
- ) {
- nextIndex++;
- if (nextIndex > 8) { // 这里只处理8个输入框的情况
- // 如果所有字段都已经填满,则不做任何事情并退出函数
- return;
- }
- }
- // 特殊情况:直接填充到第8个位置
- if (bz_Special.value === "8") {
- formDatas.value.code8 = row.员工编号;
- formDatas.value.name8 = row.ygxm;
- // 弹窗关闭并防止重复点击
- setTimeout(() => {
- blModel.value = false;
- clicked.value = false;
- }, 300);
- } else {
- // 当前按下回车的输入框索引
- const currentInputIndex = currentIndex.value + 1;
- // 如果找到的空位不是当前输入框,则填充前面的空位
- if (nextIndex !== currentInputIndex) {
- // 填充前面空位
- formDatas.value[`code${nextIndex}`] = row.员工编号;
- formDatas.value[`name${nextIndex}`] = row.ygxm;
- // 检查当前输入框是否需要清空
- if (formDatas.value[`name${currentInputIndex}`] === '' &&formDatas.value[`code${currentInputIndex}`] !== '') {
- // 如果当前输入框的 name 为空,但 code 有值,清空当前输入框
- formDatas.value[`code${currentInputIndex}`] = '';
- }
- } else {
- // 如果当前输入框就是下一个空位,则直接填充到当前输入框
- formDatas.value[`code${currentInputIndex}`] = row.员工编号;
- formDatas.value[`name${currentInputIndex}`] = row.ygxm;
- }
- // 弹窗关闭并防止重复点击
- setTimeout(() => {
- blModel.value = false; // 延迟关闭弹窗
- clicked.value = false; // 恢复点击标志
- }, 300);
- }
- };
- /*
- 组员及分配比例规则算法
- */
- const fpsum = ref();
- const fpsum2 = ref();
- //自动计算分配系数和
- function updateTotal() {
- //机台班组维护中分配系数字段
- const relevantKeys = ['percentage1', 'percentage2', 'percentage3', 'percentage4', 'percentage5', 'percentage6', 'percentage7'];
- const values = relevantKeys.map(key => parseFloat(formDatas.value[key], 10) * 100 || 0); // 转换为百分比
- const sum = values.reduce((sum, value) => sum + value, 0);
- fpsum.value = Math.round(sum * 100) / 10000; // 四舍五入到2位小数
-
- //修改中分配系数字段
- const relevantKeys2 = ['组员1', '组员2','组员3','组员4','组员5','组员6','组员7','组员8','组员9',];
- const valuess = relevantKeys2.map(key => parseFloat(formdata3.value[key]['比例'], 10) * 100 || 0);
- const sum2 = valuess.reduce((sum, value) => sum + value, 0);
- fpsum2.value = Math.round(sum2 * 100) / 10000; // 四舍五入到2位小数
- }
- // 在组件初始化时就设置监听
- const setupWatchers = () => {
- for (let i = 1; i <= 8; i++) {
- const codeKey = `code${i}`;
- const nameKey = `name${i}`;
- const percentageKey = `percentage${i}`;
-
- watch(
- () => formDatas.value[codeKey],
- (newVal) => {
- if (!newVal) {
- formDatas.value[nameKey] = '';
- formDatas.value[percentageKey] = '';
- }
- }
- );
- }
- };
- // 在组件创建时调用
- onMounted(() => {
- setupWatchers();
- });
- //机台班组维护新增
- const addBz = async() => {
- //数据初始化
- updateTotal()
- //判断机台和班组是否为空
- if(!selectedOption.value || !BZMC.value){
- ElMessage({
- type: 'warning',
- message: '机台或者班组编号不能为空'
- })
- return;
- }
- const jt = selectedOption.value.split('|')[0]//获取车间数据
- //判断车间是否是【SY、PM】
- const shouldCheckLessThanOne = !jt.includes('SY') && !jt.includes('PM');
- let hasValidMember = false; // 标志变量,用于检查是否有有效的组员
- let hasEmptyBefore = false; // 标记是否已经出现过空项
-
- // 按1-10的顺序验证
- for (let i = 1; i <= 7; i++) {
- const codeKey = `code${i}`;
- const percentageKey = `percentage${i}`;
-
- const hasCode = formDatas.value[codeKey] && formDatas.value[codeKey].trim() !== '';
- const hasPercentage = formDatas.value[percentageKey] !== undefined &&
- formDatas.value[percentageKey] !== null &&
- formDatas.value[percentageKey] !== '';
-
- // 如果当前项为空,标记hasEmptyBefore为true
- if (!hasCode && !hasPercentage) {
- hasEmptyBefore = true;
- continue; // 跳过空项的进一步检查
- }
-
- // 如果当前项有值,但前面已经有空项了,报错
- if (hasEmptyBefore) {
- ElMessage({
- type: "error",
- message: `请按顺序填写组员信息,第${i}项之前不能有空项`,
- });
- return;
- }
-
- // 检查对应关系 - code和percentage必须同时有
- if (!hasCode || !hasPercentage) {
- ElMessage({
- type: "error",
- message: `第${i}项的工号和分配系数必须同时填写`,
- });
- return;
- }
-
- // 检查百分比值是否有效
- const percentageValue = parseFloat(formDatas.value[percentageKey]);
- if (isNaN(percentageValue) || percentageValue <= 0 || percentageValue > 1) {
- ElMessage({
- type: "error",
- message: `第${i}项分配系数必须在0到1之间`,
- });
- return;
- }
-
- hasValidMember = true;
- }
-
- // 循环结束后检查标志变量
- if (!hasValidMember) {
- ElMessage({
- type: "error",
- message: "至少需要填写一个有效的组员和分配系数",
- });
- return;
- } else if (shouldCheckLessThanOne && fpsum.value < 1) {
- ElMessage({
- type: "error",
- message: "分配系数相加不能小于1",
- });
- return;
- } else if(fpsum.value > 1) {
- ElMessage({
- type: "error",
- message: "分配系数相加不能大于1",
- });
- return;
- }
-
- const response = await MachineTeamAdd({
- sczl_jtbh: selectedOption.value.split('|')[0],
- sczl_bzdh: BZMC.value,
- sczl_bh1: formDatas.value.code1,
- sczl_bh2: formDatas.value.code2,
- sczl_bh3: formDatas.value.code3,
- sczl_bh4: formDatas.value.code4,
- sczl_bh5: formDatas.value.code5,
- sczl_bh6: formDatas.value.code6,
- sczl_bh7: formDatas.value.code7,
- sczl_bh8: formDatas.value.code10,
- sczl_bh9: formDatas.value.code9,
- sczl_bh10: formDatas.value.code8,
- sczl_rate1: formDatas.value.percentage1,
- sczl_rate2: formDatas.value.percentage2,
- sczl_rate3: formDatas.value.percentage3,
- sczl_rate4: formDatas.value.percentage4,
- sczl_rate5: formDatas.value.percentage5,
- sczl_rate6: formDatas.value.percentage6,
- sczl_rate7: formDatas.value.percentage7,
- sczl_rate8: formDatas.value.percentage10,
- sczl_rate9: formDatas.value.percentage9,
- sczl_rate10: formDatas.value.percentage8,
- sys_id: sys_id
- })
-
- if (response.code === 0) {
- ElMessage({
- type: 'success',
- message: '成功'
- })
- FacilityTeam(JTMC)
- fetchData()
- }
- }
- const currentBz ={}
- const selectBz = async() => {
- initfordata3()
- updateTotal()
- if(!selectedOption.value || !BZMC.value){
- ElMessage({
- type: 'warning',
- message: '机台或者班组不能为空'
- })
- return;
- }
- const jt = selectedOption.value.split('|')[0]//获取车间数据
- //判断车间分配比例【SY、PM】
- const shouldCheckLessThanOne = !jt.includes('SY') && !jt.includes('PM');
- const relevantKeys = ['percentage1', 'percentage2', 'percentage3', 'percentage4', 'percentage5', 'percentage6', 'percentage7', 'percentage8'];
- const values = relevantKeys.reduce((acc, key) => {
- const value = parseFloat(formDatas.value[key], 10);
- if (!isNaN(value)) {
- acc.push(value); // 只有当 value 不是 NaN 时才添加到数组中
- }
- return acc;
- }, []); // 初始化为空数组
- const hasInvalidValue = values.some(value => value <= 0 || value > 1);
- if (hasInvalidValue) {
- ElMessage({
- type: "error",
- message: "某人分配系数有误",
- });
- return;
- }
- if (fpsum.value > 1) {
- ElMessage({
- type: "error",
- message: "分配系数相加不能大于1",
- });
- return;
- }
- // 只有当 shouldCheckLessThanOne 为 true 时才检查 fpsum.value < 1
- if (shouldCheckLessThanOne && fpsum.value < 1) {
- ElMessage({
- type: "error",
- message: "分配系数相加不能小于1",
- });
- return;
- }
- if(currentBz.value){
- BZMC.value=currentBz.value.班组号
- let sczl_bhkey=''
- let sczl_namekey=''
- if (currentBz.value[9]) {
- for (let i = 1; i <= 9; i++) {
- sczl_bhkey=`sczl_bh${i}`
- sczl_namekey=`sczl_name${i}`
- formData.value[sczl_bhkey] = '';
- formData.value[sczl_namekey] = '';
- }
- formData.value.sczl_bh10 = currentBz.value[9].split(' ')[0];
- formData.value.sczl_name10=currentBz.value[9].split(' ')[1]
- for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length-5, 6); i++) {
- sczl_bhkey=`sczl_bh${i}`
- sczl_namekey=`sczl_name${i}`
- formData.value[sczl_bhkey] = currentBz.value[i-1].split(' ')[0];
- formData.value[sczl_namekey] = currentBz.value[i-1].split(' ')[1];
- classbz.value[i-1]=currentBz.value[i-1].split(' ')[0]
- }
- classbz.value.push(currentBz.value[9].split(' ')[0])
- formData.value.class=classbz.value.join(',')
- }else{
- for (let i = 1; i <= 10; i++) {
- sczl_bhkey=`sczl_bh${i}`
- sczl_namekey=`sczl_name${i}`
- formData.value[sczl_bhkey] = '';
- formData.value[sczl_namekey] = '';
- }
- for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length-4, 6); i++) {
- sczl_bhkey=`sczl_bh${i}`
- sczl_namekey=`sczl_name${i}`
- formData.value[sczl_bhkey] = currentBz.value[i-1].split(' ')[0];
- formData.value[sczl_namekey] = currentBz.value[i-1].split(' ')[1];
- classbz.value[i-1]=currentBz.value[i-1].split(' ')[0]
- }
- formData.value.class=classbz.value.join(',')
- }
- const response = await setMachineTeam({
- machine: JTMC.split("#")[0],
- order:formData.value.工单编号,
- yjno:formData.value.印件号,
- gy_name:formData.value.工序名称,
- sczl_bzdh:BZMC.value,
- status:'生产',
- production_now:0,
- production_all:0,
- team_id:currentBz.value.ID
- })
- if(response.code===0){
- ElMessage({
- type: 'success',
- message: '成功'
- })
- FacilityProduction()
- }
- // currentBz.value={}
- }
-
- detailShow.value = false;
- }
- const delBz = async() => {
- const UniqId=currentBz.value.ID
- if(currentBz.value){
- ElMessageBox.confirm('确定要删除吗?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- const response = teamDel({UniqId:UniqId})
- response.then(result => {
- if(result.code===0){
- let messageType = 'success';
- // 检查 result.msg 是否包含特定的错误提示
- if (result.msg.includes('无法删除正在生产的班组资料,请先切换班组')) {
- messageType = 'error';
- }
- ElMessage({
- type: messageType,
- message: result.msg
- })
- FacilityTeam(JTMC)
- fetchData()
- }
- });
- })
- currentBz.value={}
- }
- }
- const selected = ref('');
- // 下拉框选项数据
- const dropdownOptions = ref([]);
- // 选中的选项
- const selectedOption = ref('');
- // 获取接口数据并转换为下拉框需要的格式
- const fetchData = async () => {
- try {
- const response = await facilityMachineList();
- if (response.code === 0) {
- const options = response.data.map((item) => ({
- label: item,
- value: item
- }));
- const selectionValue = options.find(item => {
- return item.value.indexOf(JTMC) !== -1
- })
-
- selectedOption.value = selectionValue.value ?? options[0].value
- dropdownOptions.value = options
- }
- } catch (error) {
- console.error('Error fetching data:', error);
- // Handle the error appropriately
- }
- };
- // formData
- let BZMC=ref()
- let lastCellValue=ref()
- let parts =reactive([])
- // 自动化生成的字典(可能为空)以及字段
- const formData= ref({
- 工单编号:'',
- 印件编号:'',
- 工序名称:'',
- 产品名称:'',
- sczl_bh1:'',
- sczl_bh2:'',
- sczl_bh3:'',
- sczl_bh4:'',
- sczl_bh5:'',
- sczl_bh6:'',
- sczl_bh7:'',
- sczl_bh8:'',
- sczl_bh9:'',
- sczl_bh10:'',
- sczl_name1:'',
- sczl_name2:'',
- sczl_name3:'',
- sczl_name4:'',
- sczl_name5:'',
- sczl_name6:'',
- sczl_name7:'',
- sczl_name8:'',
- sczl_name9:'',
- sczl_name10:'',
- })
- const formDatasData= reactive([])
- const formDatas = ref({
- code1:'',
- code2:'',
- code3:'',
- code4:'',
- code5:'',
- code6:'',
- code7:'',
- code8:'',
- code9:'',
- code10:'',
- name1:'',
- name2:'',
- name3:'',
- name4:'',
- name5:'',
- name6:'',
- name7:'',
- name8:'',
- name9:'',
- name10:'',
- percentage1:'',
- percentage2:'',
- percentage3:'',
- percentage4:'',
- percentage5:'',
- percentage6:'',
- percentage7:'',
- percentage8:'',
- percentage9:'',
- percentage10:'',
- })
- const formDatas_rcl = ref({
- code1:'',
- code2:'',
- code3:'',
- code4:'',
- code5:'',
- code6:'',
- code7:'',
- code8:'',
- code9:'',
- code10:'',
- name1:'',
- name2:'',
- name3:'',
- name4:'',
- name5L:'',
- name6:'',
- name7:'',
- name8:'',
- name9:'',
- name10:'',
- percentage1:'',
- percentage2:'',
- percentage3:'',
- percentage4:'',
- percentage5:'',
- percentage6:'',
- percentage7:'',
- percentage8:'',
- percentage9:'',
- percentage10:'',
- })
- //班组单击
- const BZvalue=ref()
- const BZhandle = (val) => {
- currentBz.value = val
- BZvalue.value=val.ID
- formDatas.value = {};
- let sczl_bhkey = ''
- let sczl_namekey = ''
- let percentagekey = ''
- console.log(currentBz.value)
- if (currentBz.value[9]) {
- for (let i = 1; i <= 9; i++) {
- sczl_bhkey = `code${i}`
- sczl_namekey = `name${i}`
- percentagekey = `percentage${i}`
- formDatas.value[sczl_bhkey] = '';
- formDatas.value[sczl_namekey] = '';
- formDatas.value[percentagekey] = '';
- }
- formDatas.value.code8 = currentBz.value[9].split(' ')[0];
- formDatas.value.name8 = currentBz.value[9].split(' ')[1]
- formDatas.value.percentage8 = Math.round((parseFloat(currentBz.value[9].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
- for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length - 5, 6); i++) {
- sczl_bhkey = `code${i}`
- sczl_namekey = `name${i}`
- percentagekey = `percentage${i}`
- formDatas.value[sczl_bhkey] = currentBz.value[i - 1].split(' ')[0];
- formDatas.value[sczl_namekey] = currentBz.value[i - 1].split(' ')[1];
- if(isNaN(parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]))){
- formDatas.value[percentagekey] = currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0];
- }else{
- formDatas.value[percentagekey] = Math.round((parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
- }
- }
- } else {
- for (let i = 1; i <= 10; i++) {
- sczl_bhkey = `code${i}`
- sczl_namekey = `name${i}`
- percentagekey = `percentage${i}`
- formDatas.value[sczl_bhkey] = '';
- formDatas.value[sczl_namekey] = '';
- formDatas.value[percentagekey] = '';
- }
- for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length - 4, 6); i++) {
- sczl_bhkey = `code${i}`
- sczl_namekey = `name${i}`
- percentagekey = `percentage${i}`
- formDatas.value[sczl_bhkey] = currentBz.value[i - 1].split(' ')[0];
- formDatas.value[sczl_namekey] = currentBz.value[i - 1].split(' ')[1];
- if(isNaN(parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]))){
- formDatas.value[percentagekey] = currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0];
- }else{
- formDatas.value[percentagekey] = Math.round((parseFloat(currentBz.value[i - 1].split(' ')[2].split('(')[1].split(')')[0]) / 100 * 10000)) / 10000;
- }
- }
- }
- BZMC.value=val.班组号
- };
- const chanliangVisible = ref(false)
- const formdata3=reactive([])
- const initfordata3 = () => {
- formdata3.value = {
- '工单编号':'',
- 'cpmc':'',
- 'yjno':'',
- 'yjmc':'',
- 'gxmc':'',
- 'gxh':'',
- 'gymc':'',
- 'rq':'',
- 'sczl_jtbh':'',
- 'starttime':'',
- 'num':'',
- 'sj1':'',
- '色度数':'',
- '联数':'',
- '产量':'',
- '制程废品':'',
- '制程次品':'',
- '前工序废':'',
- '来料异常':'',
- '换型类型':'',
- '装版总工时':'',
- '装版工时':'',
- '打样总工时':'',
- '打样工时':'',
- '保养工时':'',
- '异常总工时':'',
- '异常类型':'',
- '异常补时':'',
- '通电工时':'',
- 'dedh':'',
- '码包':'',
- '码开始行':'',
- '码结束行':'',
- '主电表':'',
- '辅电表':'',
- '组员1':{
- '编号':'',
- '姓名':'',
- '比例':'',
- },
- '组员2':{
- '编号':'',
- '姓名':'',
- '比例':'',
- },
- '组员3':{
- '编号':'',
- '姓名':'',
- '比例':'',
- },
- '组员4':{
- '编号':'',
- '姓名':'',
- '比例':'',
- },
- '组员5':{
- '编号':'',
- '姓名':'',
- '比例':'',
- },
- '组员6':{
- '编号':'',
- '姓名':'',
- '比例':'',
- },
- '组员7':{
- '编号':'',
- '姓名':'',
- '比例':'',
- },
- '组员8':{
- '编号':'',
- '姓名':'',
- '比例':'',
- },
- '组员9':{
- '编号':'',
- '姓名':'',
- '比例':'',
- },
- '组员10':{
- '编号':'',
- '姓名':'',
- '比例':'',
- },
- '拉料':{
- '编号':'',
- '姓名':'',
- }
-
- }
- }
- initfordata3()
- for (let i = 1; i <= 10; i++) {
- (function(index) {
- watch(
- () => formdata3.value[`组员${index}`].编号,
- (newVal, oldVal) => {
- if (!newVal) {
- formdata3.value[`组员${index}`].姓名 = '';
- formdata3.value[`组员${index}`].比例 = '';
- }
- }
- );
- })(i); // 使用立即执行的函数表达式(IIFE)来捕获当前的i值
- }
- function gytableDatadoubleClick(row, column, event) {
- console.log("双击当日上报产量")
- type2.value="update"
- MachineChanliang(row.UniqId)
- }
- const uid=ref()
- const _Gd_gdbh=ref()
- function getUid(row, column, event) {
- console.log(row)
- uid.value=row['UniqId']
- _Gd_gdbh.value=row['工单编号']
- _gdbhlist.value=row['工单编号']
- lcd_Gd_gdbh.value = row['工单编号']
- lcd_Gd_yjno.value = row['yjno']
- console.log("工单编号"+lcd_Gd_gdbh.value)
- console.log("UniqId"+uid.value)
- }
- //班组产量提报 获取当天日期接口
- const qita_jitaidata = async () => {
- const qita_jitaidata = await getTimelist();
- formdata3.value.rq = qita_jitaidata.data.date
- }
-
- //班组长审核
- const leaderAuditDialog = ref(false)
- const leaderForm = reactive({
- coefficient: '',
- leader: '',
- Uniqid: '',
- 换版联拼数: '',
- 换版总工时: '',
- 换版类型: ''
- })
- const banzuzhang = async () => {
- leaderAuditDialog.value = true
- }
- //统计员审核
- const statAuditDialog = ref(false)
- const statForm = reactive({
- 装版补产工时: '',
- statistics: '',
- Uniqid: '',
- yieldUid: ''
- })
- const tongjiyuan = async () => {
- statAuditDialog.value = true
- }
- // 班组长审核提交
- const submitLeaderAudit = async () => {
- console.log('提交班组长审核参数:', leaderForm)
- // return;
- const res = await leaderConfirm(leaderForm)
-
- if (res.code === 0) {
- ElMessage.success('班组长审核成功')
- leaderAuditDialog.value = false
- } else {
- ElMessage.error(res.msg || '班组长审核失败')
- }
- }
- // 统计员审核提交
- const submitStatAudit = async () => {
- console.log('提交统计员审核参数:', statForm)
- // return;
- const res = await statisticsConfirm(statForm)
- if (res.code === 0) {
- ElMessage.success('统计员审核成功')
- statAuditDialog.value = false
- } else {
- ElMessage.error(res.msg || '统计员审核失败')
- }
- }
- // 关闭班组长审核
- const closeLeaderAudit = () => {
- leaderAuditDialog.value = false
- }
- // 关闭统计员审核
- const closeStatAudit = () => {
- statAuditDialog.value = false
- }
-
-
- //获取详细信息
- const MachineChanliang = async(value) => {
- //打开新增按钮获取
- qita_jitaidata();
- if(uid.value == undefined){
- initfordata3()
- chanliangVisible.value=true
- return
- }
- const response = await MachineChanliangDetail({UniqId:value});
- console.log('MachineChanliangDetail',response)
- leaderForm.coefficient = response.data['系数']
- leaderForm.leader = sys_id
- leaderForm.Uniqid = response.data['Uid']
- leaderForm.换版联拼数 = response.data['换版联拼数']
- leaderForm.换版总工时 = response.data['装版总工时']
- leaderForm.换版类型 = response.data['换版类型']
- statForm.装版补产工时 = response.data['装版补产工时']
- statForm.statistics = sys_id
- statForm.Uniqid = response.data['Uid']
- statForm.yieldUid = response.data['UniqId']
-
-
- if (response.code === 0) {
- chanliangVisible.value=true
- formdata3.value=response.data
- const result=formdata3.value.gxmc.match(/-(.{2})/)
- formdata3.value.gymc=result[1]
- formdata3.value.sczl_jtbh=JTMC
- formdata3.value.yjmc=response.data.印件名称
- formdata3.value.rq=date
- console.log("formdata3.value.换版类型",formdata3.value.换版类型)
- if(formdata3.value.换版类型 === '装新版'){
- console.log('装新版')
- formdata3.value.换版类型 = '装新版'
- }else if(formdata3.value.换版类型 === '装旧版'){
- console.log('装旧版')
- formdata3.value.换版类型 = '装旧版'
- }else if(formdata3.value.换版类型 === '换版'){
- console.log('换版')
- formdata3.value.换版类型 = '换版'
- }
-
- if (formdata3.value.bzdh === 'A班') {
- formdata3.value.starttime = ''; // 清空值
- setTimeout(()=>{
- formdata3.value.starttime = date + " 08:30:00"; // 设置为 20:30:00
- })
- } else if (formdata3.value.bzdh === 'B班') {
- formdata3.value.starttime = ''; // 清空值
- setTimeout(()=>{
- formdata3.value.starttime = date + " 20:30:00"; // 设置为 20:30:00
- })
- }
- }
- }
- const yjnoArr = ref([0])
- const gxmc = ref('')
- //工单编号回车事件
- const getCPMCsubmit = () => {
- if(formdata3.value.工单编号!=''){
- ChanliangWorkorder({search:formdata3.value.工单编号,machine:JTMC}).then(response=>{
- if (response.code === 0) {
- if(response.data){
- formdata3.value.cpmc = response.data[0].cpmc
- document.getElementById('产品名称').style.color = 'red';
- getYJMCsubmit()
- }else{
- ElMessage({
- type: 'error',
- message: response.msg
- })
- formdata3.value.工单编号 = '';
- formdata3.value.cpmc = '';
- document.getElementById('产品名称').style.color = 'black';
- }
-
- }else{
- formdata3.value.工单编号 = '';
- formdata3.value.cpmc = '';
- document.getElementById('产品名称').style.color = 'black';
- }
- });
- }else{
- ElMessage({
- type: 'error',
- message: '请注意, 工单编号输入空置, 除非有特殊需要!'
- })
- gxmc.value = '';
- document.getElementById('产品名称').style.color = 'black';
- }
- }
- const yjnoHandleFocus = () =>{
- if(yjnoArr.value[0] == 0){
- formdata3.value.yjno = 1;
- }else{
- formdata3.value.yjno = yjnoArr.value[0];
- }
- }
- //印件号失去焦点事件
- const getYJMCsubmit = () => {
- if(formdata3.value.工单编号!=''){
- //获取印件名称
- ChanliangPrintDetail({gdbh:formdata3.value.工单编号}).then(response=>{
- if (response.code === 0) {
- if(response.data){
- if(response.data.length==1){
- formdata3.value.yjmc = response.data[0].yjmc
- formdata3.value.yjno = response.data[0].yjno
- formdata3.value.联数 = response.data[0].ls
- setColorReadonly('印件名称')
- }else{
- selectData_Yj.splice(0, selectData_Yj.length, ...response.data)
- dialogSelectVisible_Yj.value=true
- }
-
- }else{
- ElMessage({
- type: 'error',
- message: response.msg
- })
- }
- }
- });
- }else{
- ElMessage({
- type: 'error',
- message: '印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!'
- })
- }
- }
- //印件选择
- const dialogSelectVisible_Yj = ref(false)
- const selectData_Yj = reactive([])
- // 处理选择框
- const handleSelectClick_Yj = (row, column, event) => {
- const { yjno, yjmc, ls } = row
- formdata3.value.yjno = yjno
- formdata3.value.yjmc = yjmc
- formdata3.value.联数 = ls
- dialogSelectVisible_Yj.value = false
- }
-
- const select_Yj = (event) => {
- if (event.keyCode === 40) { // 向下箭头
- if (currentIndex.value < selectData_Yj.length - 1) {
- currentIndex.value++;
- setCurrent_Yj(selectData_Yj[currentIndex.value]);
- } else {
- currentIndex.value = 0;
- setCurrent_Yj(selectData_Yj[currentIndex.value]); // 到达最后一行时回到第一行
- }
- } else if (event.keyCode === 38) { // 向上箭头
- if (currentIndex.value > 0) {
- currentIndex.value--;
- setCurrent_Yj(selectData_Yj[currentIndex.value]);
- } else {
- currentIndex.value = selectData_Yj.length - 1;
- setCurrent_Yj(selectData_Yj[currentIndex.value]); // 到达第一行时回到最后一行
- }
- } else if (event.keyCode === 13) { // 回车键
- dialogSelectVisible_Yj.value = false;
- }
- }
- const table_YJH = ref();
- const setCurrent_Yj = (row) => {
- setTimeout(() => {
- table_YJH.value?.setCurrentRow(row);
- const { ls, yjno, yjmc } = row
- console.log(row)
- console.log(yjno)
- formdata3.value.联数 = ls
- formdata3.value.yjno = yjno
- formdata3.value.yjmc = yjmc
- });
- };
-
- //工序选择
- const dialogSelectVisible_Gx = ref(false)
- const selectData_Gx = reactive([])
- const table_Gx = ref()
- // 处理选择框
- const handleSelectClick_Gx = (row, column, event) => {
- const { gxh, name, gxmc } = row
- formdata3.value.gxh = gxh
- formdata3.value.gxmc = name
- formdata3.value.gymc = gxmc
- dialogSelectVisible_Gx.value = false
- }
- const select_gxmc = (event) => {
- if (event.keyCode === 40) { // 向下箭头
- if (currentIndex.value < selectData_Gx.length - 1) {
- currentIndex.value++;
- setCurrent_GXMC(selectData_Gx[currentIndex.value]);
- } else {
- currentIndex.value = 0;
- setCurrent_GXMC(selectData_Gx[currentIndex.value]); // 到达最后一行时回到第一行
- }
- } else if (event.keyCode === 38) { // 向上箭头
- if (currentIndex.value > 0) {
- currentIndex.value--;
- setCurrent_GXMC(selectData_Gx[currentIndex.value]);
- } else {
- currentIndex.value = selectData_Gx.length - 1;
- setCurrent_GXMC(selectData_Gx[currentIndex.value]); // 到达第一行时回到最后一行
- }
- } else if (event.keyCode === 13) { // 回车键
- dialogSelectVisible_Gx.value = false;
- }
- }
- const table_GXMC = ref();
- const setCurrent_GXMC = (row) => {
- setTimeout(() => {
- table_GXMC.value?.setCurrentRow(row);
- const { gxh, name, gxmc } = row
- formdata3.value.gxh = row.gxh
- formdata3.value.gxmc = row.name
- formdata3.value.gymc = row.gxmc
- });
- };
-
- //工序失去焦点事件
- const getGXsubmit = () => {
- //弹出选择
- ChanliangProcessDetail({gdbh:formdata3.value.工单编号,yjno:formdata3.value.yjno,machine:''}).then(response=>{
- if (response.code === 0) {
- if(response.data){
- if(response.data.length==1){
- formdata3.value.gxmc=response.data[0].name
- formdata3.value.gxh=response.data[0].gxh
- formdata3.value.gymc=response.data[0].gxmc
- }else{
- selectData_Gx.splice(0, selectData_Gx.length, ...response.data)
- dialogSelectVisible_Gx.value = true
- }
- }else{
- ElMessage({
- type: 'error',
- message: response.msg
- })
- }
- }
- })
- }
- //机台编号失去焦点事件
- const GetjtbhVisible = ref(false)
- const JTBHselectData = reactive([])
- const getJtbhsubmit = () => {
- gdzl_MachineList({address:CJMC.value}).then(response=>{
- if(response.code==0){
- if(response.data.length!=0 && !response.data.some(item => item.jtbh === formData.value.sczl_jtbh)){
- JTBHselectData.splice(0, selectData.length, ...response.data)
- GetjtbhVisible.value=true
- }
- }
- });
-
- }
- const JTBHSelectClick = (row, column, event) => {
- const { jtbh, jtmc } = row
- formdata3.value.sczl_jtbh=jtbh
- GetjtbhVisible.value = false
- }
- //点击设备编号
- const gdzl_MachineList_address = reactive({
- data: []
- });
- //选择机台编号确定工艺以及开工时间
- const jtbh_change = () => {
- //弹出选择
- productionDedh({sczl_jtbh:formdata3.value.sczl_jtbh}).then(response=>{
- if (response.code === 0) {
- if(response.data){
- formdata3.value.dedh=response.data.sys_bh
- }else{
- formdata3.value.dedh=''
- }
- }
- })
- }
- //获取拉料人员
- const GetLl = (falg) => {
- let llyg = {
- '自备':'自备',
- '李有文':1027,
- '张杭强':1024,
- '朱喜文':2022,
- '刘旭青':2021,
- '刘芳民':2020,
- '李当林':2019,
- '王赞文':2018,
- }
- switch(falg){
- case 'create':
- if(formdata3.value.拉料['编号']){
- formdata3.value.拉料['姓名'] = formdata3.value.拉料['编号']
- formdata3.value.拉料['编号'] = llyg[formdata3.value.拉料['姓名']]
- }
- break;
- case create:
-
- break;
- }
- }
- /*
- 其他机台组员及分配比例
- */
- const blModellist = ref(false)
- const employeeDatalist = ref('')
- const Special = ref('')
- const GetYg = async (event,key) => {
- Special.value = key
- let bzyg=''
- bzyg=`组员${key}`
- let bzxm=''
- bzxm=`组员${key}`
- const response = await getYg({sczl_bh:formdata3.value[bzyg]['编号']});
- formdata3.value[bzyg]['编号'] = ""
- if (response.code === 0) {
- if(response.data.length === 1){
- formdata3.value[bzxm]['姓名'] = response.data[0].ygxm
- formdata3.value[bzyg]['编号'] = response.data[0].员工编号
- }else{
- blModellist.value = true;
- employeeDatalist.value = response.data // 假设响应数据是数组
- }
- }
- }
- const clickeds = ref(false);
- const currentIndexs = ref(0);
- const tableBZRRs = ref();
- // 模拟点击某一行
- const setCurrents = (row) => {
- setTimeout(() => {
- tableBZRRs .value?.setCurrentRow(row); // 高亮选中当前行
- const { 员工编号, ygxm } = row;
- console.log("选中行数据:", row);
- });
- };
- // 键盘事件处理逻辑
- const selectBZRRs = (event) => {
- if (event.keyCode === 40) {
- // 向下箭头
- if (currentIndexs.value < employeeDatalist.value.length - 1) {
- currentIndexs.value++;
- } else {
- // 如果是最后一行,回到第一行
- currentIndexs.value = 0;
- }
- } else if (event.keyCode === 38) {
- // 向上箭头
- if (currentIndexs.value > 0) {
- currentIndexs.value--;
- } else {
- // 如果是第一行,跳到最后一行
- currentIndexs.value = employeeDatalist.value.length - 1;
- }
- } else if (event.keyCode === 13) {
- // 回车键,模拟触发点击事件
- const row = employeeDatalist.value[currentIndexs.value];
- tablebllickHandlerlist(row); // 手动调用行点击事件
- }
- setCurrents(employeeDatalist.value[currentIndexs.value]); // 高亮当前选中的行
- };
- // 表格行点击事件处理
- const tablebllickHandlerlist = async (row, column, event) => {
- if (clickeds.value) {
- // 如果已经点击过一次,则不再执行操作
- return;
- }
- let nextIndex = 1;
- // 检查每个组员是否有空位
- while (formdata3.value[`组员${nextIndex}`]['编号'] !== '' && formdata3.value[`组员${nextIndex}`]['姓名'] !== '') {
- nextIndex++;
- if (nextIndex > 10) {
- // 如果所有组员字段已填满,则不做任何操作,直接退出
- return;
- }
- }
- // 在填充数据之前,检查当前组员编号是否包含字母,如果包含字母,则清空该组员的编号和姓名
- const current编号 = formdata3.value[`组员${nextIndex}`]['编号'];
- if (/[a-zA-Z]/.test(current编号)) { // 判断编号中是否包含字母
- formdata3.value[`组员${nextIndex}`]['编号'] = "";
- formdata3.value[`组员${nextIndex}`]['姓名'] = "";
- console.log(`组员${nextIndex}的编号包含字母,已清空编号和姓名`);
- }
- // 如果 Special 的值是 10,则直接填充到组员10
- if (Special.value === "10") {
- formdata3.value.组员10['编号'] = row.员工编号;
- formdata3.value.组员10['姓名'] = row.ygxm;
- blModellist.value = false;
- clickedlist.value = true;
- } else {
- // 否则填充到下一个空的组员位置
- formdata3.value[`组员${nextIndex}`]['编号'] = row.员工编号;
- formdata3.value[`组员${nextIndex}`]['姓名'] = row.ygxm;
- blModellist.value = false;
- clickedlist.value = true;
- }
- // 设置点击锁,防止短时间内重复点击
- setTimeout(() => {
- clickedlist.value = false;
- }, 300); // 300毫秒内再次点击不会触发事件,可以根据需要调整这个延迟时间
- };
- /*
- 除JP定额代号弹窗
- */
- const FJPGetDedhtreeData = reactive([]);
- const FJPGetDedhVisible = ref(false);
- const FJPtable_fplb = ref(null); // el-tree 的 ref
- const FJPgetDedhsubmit = async () => {
- try {
- const response = await productionDedh({
- sczl_jtbh: formdata3.value.sczl_jtbh, // 请求参数
- });
- if (response.code === 0) {
- const data = response.data;
- // 处理单条记录的情况,直接赋值
- if (!Array.isArray(data) && !data.bh_mc) {
- formdata3.value.dedh = data.sys_bh;
- return;
- }
- // 定义递归函数,用于构造树形结构
- const buildTree = (node) => {
- const treeNode = {
- id: node.sys_bh,
- label: node.sys_bh + (node.sys_mc ? `【${node.sys_mc}】` : ""), // 显示内容
- children: [],
- key: node.Key_ || node.sys_bh, // 保留 key 属性,用于操作
- };
- // 如果有子节点,递归处理
- if (node.bh_mc && Array.isArray(node.bh_mc)) {
- treeNode.children = node.bh_mc.map((childNode) => buildTree(childNode));
- }
- return treeNode;
- };
- // 处理数组数据结构,生成树形结构并展示弹窗
- if (Array.isArray(data)) {
- FJPGetDedhtreeData.splice(
- 0,
- FJPGetDedhtreeData.length,
- ...data.map((item) => ({
- id: item.sys_bh,
- label: item.sys_bh,
- children: [],
- key: item.sys_bh,
- }))
- );
- FJPGetDedhVisible.value = true; // 展示弹窗
- }
- // 处理嵌套的树形结构数据
- if (!Array.isArray(data) && data.bh_mc) {
- FJPGetDedhtreeData.splice(0, FJPGetDedhtreeData.length, buildTree(data));
- FJPGetDedhVisible.value = true; // 展示弹窗
- }
- // 使用 nextTick 确保树形组件渲染完成后执行操作
- nextTick(() => {
- const tree = FJPtable_fplb.value; // 获取树形组件实例
- if (tree) {
- const firstNode = tree.getNode(0); // 获取树形的第一个节点
- if (firstNode) {
- firstNode.el.focus(); // 聚焦到第一个节点
- }
- }
- });
- }
- } catch (error) {
- console.error("获取数据失败:", error);
- }
- };
- //键盘事件
- const FJPhandleTreeKeydown = (event) => {
- const tree = FJPtable_fplb.value; // 获取树实例
- if (!tree) {
- console.error("树组件未加载");
- return;
- }
- const focusedElement = document.activeElement;
- const focusedNodeId = focusedElement?.getAttribute("data-key"); // 获取 DOM 的 data-key 属性
- if (event.keyCode === 13 && focusedNodeId) { // 判断是否是回车键
- tree.setCurrentKey(focusedNodeId); // 设置当前节点为选中
- tree.$nextTick(() => {
- const currentNode = tree.getCurrentNode(); // 获取当前选中的节点
- if (!currentNode) {
- console.warn("没有选中的节点");
- return;
- }
- // 清除上一次的选中状态
- FJPclearPreviousSelection(tree);
- // 收起所有其他节点
- Object.keys(tree.store.nodesMap).forEach((key) => {
- tree.store.nodesMap[key].expanded = false; // 收起所有节点
- });
- // 展开当前节点
- tree.store.nodesMap[currentNode.id].expanded = true;
- // 如果当前节点有子节点,选中第一个子节点
- if (currentNode.children && currentNode.children.length > 0) {
- const firstChild = currentNode.children[0];
- if (firstChild) {
- const firstChildKey = firstChild.id.toString();
- tree.setCurrentKey(firstChildKey); // 设置第一个子节点为选中
- setTimeout(() => {
- const firstChildDom = tree.$el.querySelector(`[data-key="${firstChildKey}"]`);
- if (firstChildDom) {
- firstChildDom.focus();
- firstChildDom.scrollIntoView({ block: "nearest" });
- }
- });
- }
- } else {
- console.log("当前子节点:", currentNode.label);
- // 如果节点没有子节点,打印节点名称
- formdata3.value.dedh = currentNode.label.split("【")[0];
- FJPGetDedhVisible.value = false;
- }
- });
- } else if (event.keyCode === 38 || event.keyCode === 40) { // 上下箭头键
- const currentNode = tree.getCurrentNode();
- if (currentNode) {
- const currentNodeDom = tree.$el.querySelector(`[data-key="${currentNode.id}"]`);
- if (currentNodeDom) {
- currentNodeDom.focus();
- }
- }
- }
- };
- // 清除之前的选中状态
- const FJPclearPreviousSelection = (tree) => {
- const selectedNodes = tree.getCheckedNodes();
- selectedNodes.forEach(node => {
- tree.setChecked(node, false);
- });
- tree.setCurrentKey(null);
- };
- // 弹出框键盘事件
- const FJPent = (event) => {
- if (document.activeElement.id === "tableFplb") {
- if (FJPtable_fplb.value) {
- const tree = FJPtable_fplb.value?.$el;
- if (tree) {
- const node = tree.querySelector("[data-key]");
- if (event.keyCode === 13) {
- // GetDedhVisible.value = false;
- }
- if (node) {
- node.scrollIntoView({ block: "nearest" }); // 确保节点可见
- node.focus(); // 确保焦点正确
- }
- }
- }
- }
- };
- //点击事件
- const FJPhandleFplbClick = (nodeData, node, component) => {
- //存放当前节点的nodeId
- if (!nodeData.children || nodeData.children.length === 0) {
- // 如果节点没有子节点,打印节点名称
- formdata3.value.dedh= nodeData.label.split("【")[0];
- FJPGetDedhVisible.value = false;
- }
- };
- /*
- JP定额代号弹窗
- */
- const GetDedhtreeData = reactive([]);
- const GetDedhVisible = ref(false);
- const table_fplb = ref(null); // el-tree 的 ref
- const getDedhsubmit = async () => {
- try {
- const response = await JPproductionDedh({
- sczl_jtbh: JPformdata['机器']
- });
- if (response.code === 0) {
- const data = response.data;
- // 处理单条记录的情况,直接赋值
- if (!Array.isArray(data) && !data.bh_mc) {
- JPformdata['定额代号'] = data.sys_bh;
- return;
- }
- // 定义递归函数,用于构造树形结构
- const buildTree = (node) => {
- const treeNode = {
- id: node.sys_bh,
- label: node.sys_bh + (node.sys_mc ? `【${node.sys_mc}】` : ""), // 显示内容
- children: [],
- key: node.Key_ || node.sys_bh, // 保留 key 属性,用于操作
- };
- // 如果有子节点,递归处理
- if (node.bh_mc && Array.isArray(node.bh_mc)) {
- treeNode.children = node.bh_mc.map((childNode) => buildTree(childNode));
- }
- return treeNode;
- };
- // 处理数组数据结构,生成树形结构并展示弹窗
- if (Array.isArray(data)) {
- GetDedhtreeData.splice(
- 0,
- GetDedhtreeData.length,
- ...data.map((item) => ({
- id: item.sys_bh,
- label: item.sys_bh + (item.sys_mc ? `【${item.sys_mc}】` : ""),
- children: [],
- key: item.sys_bh,
- }))
- );
- GetDedhVisible.value = true; // 展示弹窗
- }
- // 处理嵌套的树形结构数据
- if (!Array.isArray(data) && data.bh_mc) {
- GetDedhtreeData.splice(0, GetDedhtreeData.length, buildTree(data));
- GetDedhVisible.value = true; // 展示弹窗
- }
- // 使用 nextTick 确保树形组件渲染完成后执行操作
- nextTick(() => {
- const tree = table_fplb.value; // 获取树形组件实例
- if (tree) {
- const firstNode = tree.getNode(0); // 获取树形的第一个节点
- if (firstNode) {
- firstNode.el.focus(); // 聚焦到第一个节点
- }
- }
- });
- }
- } catch (error) {
- console.error("获取数据失败:", error);
- }
- };
- //键盘事件
- const handleTreeKeydown = (event) => {
- const tree = table_fplb.value; // 获取树实例
- if (!tree) {
- console.error("树组件未加载");
- return;
- }
- const focusedElement = document.activeElement;
- const focusedNodeId = focusedElement?.getAttribute("data-key"); // 获取 DOM 的 data-key 属性
- if (event.keyCode === 13 && focusedNodeId) { // 判断是否是回车键
- tree.setCurrentKey(focusedNodeId); // 设置当前节点为选中
- tree.$nextTick(() => {
- const currentNode = tree.getCurrentNode(); // 获取当前选中的节点
- if (!currentNode) {
- console.warn("没有选中的节点");
- return;
- }
- // 清除上一次的选中状态
- clearPreviousSelection(tree);
- // 收起所有其他节点
- Object.keys(tree.store.nodesMap).forEach((key) => {
- tree.store.nodesMap[key].expanded = false; // 收起所有节点
- });
- // 展开当前节点
- tree.store.nodesMap[currentNode.id].expanded = true;
- // 如果当前节点有子节点,选中第一个子节点
- if (currentNode.children && currentNode.children.length > 0) {
- const firstChild = currentNode.children[0];
- if (firstChild) {
- const firstChildKey = firstChild.id.toString();
- tree.setCurrentKey(firstChildKey); // 设置第一个子节点为选中
- setTimeout(() => {
- const firstChildDom = tree.$el.querySelector(`[data-key="${firstChildKey}"]`);
- if (firstChildDom) {
- firstChildDom.focus();
- firstChildDom.scrollIntoView({ block: "nearest" });
- }
- });
- }
- } else {
- console.log("当前子节点:", currentNode.label);
- // 如果节点没有子节点,打印节点名称
- JPformdata['定额代号'] = currentNode.label.split("【")[0];
- GetDedhVisible.value = false;
- }
- });
- } else if (event.keyCode === 38 || event.keyCode === 40) { // 上下箭头键
- const currentNode = tree.getCurrentNode();
- if (currentNode) {
- const currentNodeDom = tree.$el.querySelector(`[data-key="${currentNode.id}"]`);
- if (currentNodeDom) {
- currentNodeDom.focus();
- }
- }
- }
- };
- // 清除之前的选中状态
- const clearPreviousSelection = (tree) => {
- const selectedNodes = tree.getCheckedNodes();
- selectedNodes.forEach(node => {
- tree.setChecked(node, false);
- });
- tree.setCurrentKey(null);
- };
- // 弹出框键盘事件
- const ent = (event) => {
- if (document.activeElement.id === "tableFplb") {
- if (table_fplb.value) {
- const tree = table_fplb.value?.$el;
- if (tree) {
- const node = tree.querySelector("[data-key]");
- if (event.keyCode === 13) {
- // GetDedhVisible.value = false;
- }
- if (node) {
- node.scrollIntoView({ block: "nearest" }); // 确保节点可见
- node.focus(); // 确保焦点正确
- }
- }
- }
- }
- };
- //点击事件
- const handleFplbClick = (nodeData, node, component) => {
- //存放当前节点的nodeId
- if (!nodeData.children || nodeData.children.length === 0) {
- // 如果节点没有子节点,打印节点名称
- JPformdata['定额代号']= nodeData.label.split("【")[0];
- GetDedhVisible.value = false;
- }
- };
- /*
- JP修改定额代号弹窗
- */
- const GetDedhtreeDataedit = reactive([]);
- const GetDedhVisibleedit = ref(false);
- const table_fplbedit = ref(null); // el-tree 的 ref
-
- const getDedhsubmitedit = async () => {
- try {
- const response = await JPproductionDedh({
- sczl_jtbh: JPformdataedit['机器']
- });
- console.log(response)
- if (response.code === 0) {
- const data = response.data;
- // 处理单条记录的情况,直接赋值
- if (!Array.isArray(data) && !data.bh_mc) {
- JPformdataedit['定额代号'] = data.sys_bh;
- return;
- }
- // 定义递归函数,用于构造树形结构
- const buildTree = (node) => {
- const treeNode = {
- id: node.sys_bh,
- // label: node.sys_bh + (node.sys_mc ? `【${node.sys_mc}】` : ""), // 显示内容
- label: node.sys_bh + (node.sys_mc ? `【${node.sys_mc}】` : ""),
- children: [],
- key: node.Key_ || node.sys_bh, // 保留 key 属性,用于操作
- };
- // 如果有子节点,递归处理
- if (node.bh_mc && Array.isArray(node.bh_mc)) {
- treeNode.children = node.bh_mc.map((childNode) => buildTree(childNode));
- }
- return treeNode;
- };
- // 处理数组数据结构,生成树形结构并展示弹窗
- if (Array.isArray(data)) {
- GetDedhtreeDataedit.splice(
- 0,
- GetDedhtreeDataedit.length,
- ...data.map((item) => ({
- id: item.sys_bh,
- // label: item.sys_bh,
- label: item.sys_bh + (item.sys_mc ? `【${item.sys_mc}】` : ""),
- children: [],
- key: item.sys_bh,
- }))
- );
- GetDedhVisibleedit.value = true; // 展示弹窗
- }
- // 处理嵌套的树形结构数据
- if (!Array.isArray(data) && data.bh_mc) {
- GetDedhtreeDataedit.splice(0, GetDedhtreeDataedit.length, buildTree(data));
- GetDedhVisibleedit.value = true; // 展示弹窗
- }
- // 使用 nextTick 确保树形组件渲染完成后执行操作
- nextTick(() => {
- const tree = table_fplb.value; // 获取树形组件实例
- if (tree) {
- const firstNode = tree.getNode(0); // 获取树形的第一个节点
- if (firstNode) {
- firstNode.el.focus(); // 聚焦到第一个节点
- }
- }
- });
- }
- } catch (error) {
- console.error("获取数据失败:", error);
- }
- };
- //键盘事件
- const handleTreeKeydownedit = (event) => {
- const tree = table_fplbedit.value; // 获取树实例
- if (!tree) {
- console.error("树组件未加载");
- return;
- }
- const focusedElement = document.activeElement;
- const focusedNodeId = focusedElement?.getAttribute("data-key"); // 获取 DOM 的 data-key 属性
- if (event.keyCode === 13 && focusedNodeId) { // 判断是否是回车键
- tree.setCurrentKey(focusedNodeId); // 设置当前节点为选中
- tree.$nextTick(() => {
- const currentNode = tree.getCurrentNode(); // 获取当前选中的节点
- if (!currentNode) {
- console.warn("没有选中的节点");
- return;
- }
- // 清除上一次的选中状态
- clearPreviousSelectionedit(tree);
- // 收起所有其他节点
- Object.keys(tree.store.nodesMap).forEach((key) => {
- tree.store.nodesMap[key].expanded = false; // 收起所有节点
- });
- // 展开当前节点
- tree.store.nodesMap[currentNode.id].expanded = true;
- // 如果当前节点有子节点,选中第一个子节点
- if (currentNode.children && currentNode.children.length > 0) {
- const firstChild = currentNode.children[0];
- if (firstChild) {
- const firstChildKey = firstChild.id.toString();
- tree.setCurrentKey(firstChildKey); // 设置第一个子节点为选中
- setTimeout(() => {
- const firstChildDom = tree.$el.querySelector(`[data-key="${firstChildKey}"]`);
- if (firstChildDom) {
- firstChildDom.focus();
- firstChildDom.scrollIntoView({ block: "nearest" });
- }
- });
- }
- } else {
- console.log("当前子节点:", currentNode.label);
- // 如果节点没有子节点,打印节点名称
- JPformdataedit['定额代号'] = currentNode.label.split("【")[0];
- GetDedhVisibleedit.value = false;
- }
- });
- } else if (event.keyCode === 38 || event.keyCode === 40) { // 上下箭头键
- const currentNode = tree.getCurrentNode();
- if (currentNode) {
- const currentNodeDom = tree.$el.querySelector(`[data-key="${currentNode.id}"]`);
- if (currentNodeDom) {
- currentNodeDom.focus();
- }
- }
- }
- };
- // 清除之前的选中状态
- const clearPreviousSelectionedit = (tree) => {
- const selectedNodes = tree.getCheckedNodes();
- selectedNodes.forEach(node => {
- tree.setChecked(node, false);
- });
- tree.setCurrentKey(null);
- };
- // 弹出框键盘事件
- const entedit = (event) => {
- if (document.activeElement.id === "tableFplb") {
- if (table_fplbedit.value) {
- const tree = table_fplbedit.value?.$el;
- if (tree) {
- const node = tree.querySelector("[data-key]");
- if (event.keyCode === 13) {
- // GetDedhVisibleedit.value = false;
- }
- if (node) {
- node.scrollIntoView({ block: "nearest" }); // 确保节点可见
- node.focus(); // 确保焦点正确
- }
- }
- }
- }
- };
- //点击事件
- const handleFplbClickedit = (nodeData, node, component) => {
- //存放当前节点的nodeId
- if (!nodeData.children || nodeData.children.length === 0) {
- // 如果节点没有子节点,打印节点名称
- JPformdataedit['定额代号']= nodeData.label.split("【")[0];
- GetDedhVisibleedit.value = false;
- }
- };
- //追加字体颜色和不可输入
- const setColorReadonly = (id) => {
- const newInput = document.getElementById(id)
- newInput.style.color = 'red';
- newInput.setAttribute('readonly', true);
- }
- //追加字体颜色和可输入
- const unsetColorReadonly = (id) => {
- const newInput = document.getElementById(id)
- newInput.style.color = 'black';
- newInput.removeAttribute('readonly');
- }
-
-
-
- //日报表修改弹窗确定
- const chanliangenterDialog = async () => {
- // console.log(formdata3.value.换版类型)
- // return;
-
- updateTotal()
- const jt = formdata3.value.sczl_jtbh
- // 定义一个变量来决定是否应该检查 fpsum2.value < 1
- const shouldCheckLessThanOne = !jt.includes('SY') && !jt.includes('PM');
- const relevantKeys2 = ['组员1', '组员2','组员3','组员4','组员5','组员6','组员7','组员8','组员9',];
- const values = relevantKeys2.reduce((acc, key) => {
- const value = parseFloat(formDatas.value[key], 10);
- if (!isNaN(value)) {
- acc.push(value); // 只有当 value 不是 NaN 时才添加到数组中
- }
- return acc;
- }, []); // 初始化为空数组
-
- const hasInvalidValue = values.some(value => value <= 0 || value > 1);
- if (hasInvalidValue) {
- ElMessage({
- type: "error",
- message: "某人分配系数有误",
- });
- return;
- }
- console.log(1145,fpsum2)
- if (fpsum2.value > 1) {
- ElMessage({
- type: "error",
- message: "分配系数相加不能大于1",
- });
- return;
- }
-
- // 只有当 shouldCheckLessThanOne 为 true 时才检查 fpsum2.value < 1
- if (shouldCheckLessThanOne && fpsum2.value < 1) {
- ElMessage({
- type: "error",
- message: "分配系数相加不能小于1",
- });
- return;
- }
- //判断是否选择了拉料人员
- if(formdata3.value.拉料['编号'] === ''){
- ElMessage({
- type: "error",
- message: "请选择拉料人员",
- });
- }else if (type2.value === 'update') {
- SubmitDailyProduction()
- } else if (type2.value === 'create') {
- add()
- }
- }
- //日报表新增
- const add = async () => {
- const rate1=(parseFloat(formdata3.value.组员1['比例'])).toFixed(5)
- const rate2=(parseFloat(formdata3.value.组员2['比例'])).toFixed(5)
- const rate3=(parseFloat(formdata3.value.组员3['比例'])).toFixed(5)
- const rate4=(parseFloat(formdata3.value.组员4['比例'])).toFixed(5)
- const rate5=(parseFloat(formdata3.value.组员5['比例'])).toFixed(5)
- const rate6=(parseFloat(formdata3.value.组员6['比例'])).toFixed(5)
- const rate7=(parseFloat(formdata3.value.组员7['比例'])).toFixed(5)
- const rate8=(parseFloat(formdata3.value.组员8['比例'])).toFixed(5)
- const rate9=(parseFloat(formdata3.value.组员9['比例'])).toFixed(5)
- const rate10=(parseFloat(formdata3.value.组员10['比例'])).toFixed(5)
- const restoredData = {
- sczl_gdbh:formdata3.value.工单编号,
- sczl_yjno:formdata3.value.yjno,
- sczl_gxh:formdata3.value.gxh,
- sczl_gxmc: formdata3.value.gxmc,
- sczl_bzdh: formdata3.value.bzdh,
- sczl_bh1: formdata3.value.组员1['编号'],
- sczl_bh2: formdata3.value.组员2['编号'],
- sczl_bh3: formdata3.value.组员3['编号'],
- sczl_bh4: formdata3.value.组员4['编号'],
- sczl_bh5: formdata3.value.组员5['编号'],
- sczl_bh6: formdata3.value.组员6['编号'],
- sczl_bh7: formdata3.value.组员7['编号'],
- sczl_bh8: formdata3.value.组员8['编号'],
- sczl_bh9: formdata3.value.组员9['编号'],
- sczl_bh10: formdata3.value.组员10['编号'],
- // sczl_bh98: formdata3.value.拉料['编号'],
- sczl_bh98:formdata3.value.拉料['编号'] === '自备' ? '' : formdata3.value.拉料['编号'],
- sczl_rate1: rate1,
- sczl_rate2: rate2,
- sczl_rate3: rate3,
- sczl_rate4: rate4,
- sczl_rate5: rate5,
- sczl_rate6: rate6,
- sczl_rate7: rate7,
- sczl_rate8: rate8,
- sczl_rate9: rate9,
- sczl_rate10: rate10,
- sczl_jtbh: formdata3.value.sczl_jtbh,
- 开工时间:formdata3.value.starttime,
- 码开始行:formdata3.value.码开始行,
- 码结束行:formdata3.value.码结束行,
- sys_id:sys_id,
- sczl_装版工时:formdata3.value.装版工时,
- sczl_打样工时:formdata3.value.打样工时,
- sczl_异常类型1:formdata3.value.异常类型,
- sczl_异常停机工时:formdata3.value.异常总工时,
- sczl_异常工时1:formdata3.value.异常补时,
- sczl_保养工时:formdata3.value.保养工时,
- sczl_dedh:formdata3.value.dedh,
- sczl_rq: formdata3.value.rq,
- sczl_num: formdata3.value.num,
- sczl_cl: formdata3.value.产量,
- sczl_zcfp: formdata3.value.制程废品,
- sczl_zccp: formdata3.value.制程次品,
- sczl_前工序废: formdata3.value.前工序废,
- sczl_来料少数: formdata3.value.来料异常,
- sczl_ls: formdata3.value.联数,
- sczl_ms: formdata3.value.色度数,
- sczl_装版总工时: formdata3.value.装版总工时,
- sczl_打样总工时: formdata3.value.打样总工时,
- sczl_设备运行工时: formdata3.value.通电工时,
- 码包: formdata3.value.码包,
- 辅电表: formdata3.value.辅电表,
- 主电表:formdata3.value.主电表,
- 换版类型:formdata3.value.换版类型,
- sczl_换版联拼数:formdata3.value.换版联拼数,
- }
- if(restoredData.开工时间==undefined){
- restoredData.开工时间 = '1900-01-01 00:00:00'
- }
-
- console.log('新增数据打印',restoredData);
- // return;
- const response = await ChanliangAdd(restoredData);
- if (response.code === 0) {
- ElMessage({type: 'success',message: '成功'})
- FacilitychanLiang()
- FacilityDetail()
- chanliangVisible.value=false
- }
- }
- //日报表上传
- const SubmitDailyProduction = async () => {
- const rate1=(parseFloat(formdata3.value.组员1['比例'])).toFixed(5)
- const rate2=(parseFloat(formdata3.value.组员2['比例'])).toFixed(5)
- const rate3=(parseFloat(formdata3.value.组员3['比例'])).toFixed(5)
- const rate4=(parseFloat(formdata3.value.组员4['比例'])).toFixed(5)
- const rate5=(parseFloat(formdata3.value.组员5['比例'])).toFixed(5)
- const rate6=(parseFloat(formdata3.value.组员6['比例'])).toFixed(5)
- const rate7=(parseFloat(formdata3.value.组员7['比例'])).toFixed(5)
- const rate8=(parseFloat(formdata3.value.组员8['比例'])).toFixed(5)
- const rate9=(parseFloat(formdata3.value.组员9['比例'])).toFixed(5)
- const rate10=(parseFloat(formdata3.value.组员10['比例'])).toFixed(5)
- const restoredData = {
- sczl_gdbh:formdata3.value.工单编号,
- sczl_yjno:formdata3.value.yjno,
- sczl_gxh:formdata3.value.gxh,
- sczl_gxmc: formdata3.value.gxmc,
- sczl_bzdh: formdata3.value.bzdh,
- sczl_bh1: formdata3.value.组员1['编号'],
- sczl_bh2: formdata3.value.组员2['编号'],
- sczl_bh3: formdata3.value.组员3['编号'],
- sczl_bh4: formdata3.value.组员4['编号'],
- sczl_bh5: formdata3.value.组员5['编号'],
- sczl_bh6: formdata3.value.组员6['编号'],
- sczl_bh7: formdata3.value.组员7['编号'],
- sczl_bh8: formdata3.value.组员8['编号'],
- sczl_bh9: formdata3.value.组员9['编号'],
- sczl_bh10: formdata3.value.组员10['编号'],
- sczl_bh98:formdata3.value.拉料['编号'] === '自备' ? '' : formdata3.value.拉料['编号'],
- sczl_rate1: rate1,
- sczl_rate2: rate2,
- sczl_rate3: rate3,
- sczl_rate4: rate4,
- sczl_rate5: rate5,
- sczl_rate6: rate6,
- sczl_rate7: rate7,
- sczl_rate8: rate8,
- sczl_rate9: rate9,
- sczl_rate10: rate10,
- sczl_jtbh: formdata3.value.sczl_jtbh,
- 开工时间:"2024-03-12 08:30:00",
- 码开始行:formdata3.value.码开始行,
- 码结束行:formdata3.value.码结束行,
- sys_id:sys_id,
- sczl_装版工时:formdata3.value.装版工时,
- sczl_打样工时:formdata3.value.打样工时,
- sczl_异常类型1:formdata3.value.异常类型,
- sczl_异常停机工时:formdata3.value.异常总工时,
- sczl_异常工时1:formdata3.value.异常补时,
- sczl_保养工时:formdata3.value.保养工时,
- sczl_dedh:formdata3.value.dedh,
- sczl_rq: formdata3.value.rq,
- // sczl_rq: date,
- sczl_num: formdata3.value.num,
- // sczl_rq: formData3.value.sczl_rq,
- sczl_cl: formdata3.value.产量,
- sczl_zcfp: formdata3.value.制程废品,
- sczl_zccp: formdata3.value.制程次品,
- sczl_前工序废: formdata3.value.前工序废,
- sczl_来料少数: formdata3.value.来料异常,
- sczl_ls: formdata3.value.联数,
- sczl_ms: formdata3.value.色度数,
- sczl_装版总工时: formdata3.value.装版总工时,
- sczl_打样总工时: formdata3.value.打样总工时,
- sczl_设备运行工时: formdata3.value.通电工时,
- 码包: formdata3.value.码包,
- 辅电表: formdata3.value.辅电表,
- 主电表:formdata3.value.主电表,
- UniqId:uid.value,
- 换版类型:formdata3.value.换版类型,
- sczl_换版联拼数:formdata3.value.换版联拼数,
- }
- const response = await MachineChanliangDetailEdit(restoredData);
- if (response.code === 0) {
- ElMessage({
- type: 'success',
- message: '成功'
- })
- FacilitychanLiang()
- FacilityDetail()
- chanliangVisible.value=false
- }
- }
- selected.value='难度调整系数'
- const SFType=ref(false)
- const CPType=ref(false)
- const SDType=ref(false)
- const FPlxs=ref(false)
- if(selected.value==='难度调整系数'){
- SFType.value=true
- CPType.value=false
- SDType.value=false
- }else if(selected.value=== '凹印版距'){
- CPType.value=true
- SFType.value=false
- SDType.value=false
- }else if(selected.value=== '色度数'){
- SDType.value=true
- SFType.value=false
- CPType.value=false
- }
- //选择变化
- const agreeChange = async () => {
- if(selected.value=== '难度调整系数'){
- SFType.value=true
- CPType.value=false
- SDType.value=false
- FPlxs.value=false
- }else if(selected.value=== '凹印版距'){
- CPType.value=true
- SFType.value=false
- SDType.value=false
- FPlxs.value=false
- }else if(selected.value=== '色度数'){
- SDType.value=true
- SFType.value=false
- CPType.value=false
- FPlxs.value=false
- }else if(selected.value=== '废品率系数'){
- FPlxs.value=true
- SFType.value= false
- SDType.value= false
- CPType.value=false
- }
- }
- //核算调整弹窗确定
- const hesuanenterDialog = async () => {
- if(selected.value==='难度调整系数'){
- const res = await CoefficientEdit({id:Selection_ids.value,工价系数:hesuanValue.缩放系数 })
- if(res.code===0){
- ElMessage({
- type: 'success',
- message: '成功'
- })
- hesuanVisible.value=false
- FacilitychanLiang()
- }else{
- ElMessage({
- type: 'error',
- message: '失败'
- })
- }
- }else if(selected.value=== '凹印版距'){
- const res = await PrintingModeDataEdit({id:Selection_ids.value,plate:hesuanValue.产品板距,mode:hesuanValue.印刷方式 })
- if(res.code===0){
- ElMessage({
- type: 'success',
- message: '成功'
- })
- hesuanVisible.value=false
- FacilitychanLiang()
- }else{
- ElMessage({
- type: 'error',
- message: '失败'
- })
- }
- }else if(selected.value=== '色度数'){
- const res = await ChromaDataEdit({id:Selection_ids.value,ms:hesuanValue.色度数 })
- if(res.code===0){
- ElMessage({
- type: 'success',
- message: '成功'
- })
- hesuanVisible.value=false
- FacilitychanLiang()
- }else{
- ElMessage({
- type: 'error',
- message: '失败'
- })
- }
- }else if(selected.value=== '废品率系数'){
- const res = await RejectionEdit({id:Selection_ids.value,rejection:hesuanValue.废品率系数 })
- if(res.code===0){
- ElMessage({
- type: 'success',
- message: '成功'
- })
- hesuanVisible.value=false
- FacilitychanLiang()
- }else{
- ElMessage({
- type: 'error',
- message: '失败'
- })
- }
- }
- }
-
- // 核算参数调整取消
- const hesuanVisiblecloseDialog = async () => {
- hesuanVisible.value = false
- }
-
- // 班组选择相关变量
- const dialogSelectVisible_Bz = ref(false)
- const selectData_Bz = reactive([
- { code: 'A 班', name: 'A 班' },
- { code: 'B 班', name: 'B 班' }
- ])
- const currentBzIndex = ref(0)
- const table_BZMC = ref()
- // 打开班组选择弹窗
- const openBanzuDialog = () => {
- dialogSelectVisible_Bz.value = true
- nextTick(() => {
- currentBzIndex.value = 0
- setCurrent_BZMC(selectData_Bz[0])
- })
- }
- // 处理班组选择
- const handleSelectClick_Bz = (row) => {
- formdata3.value.bzdh = row.code
- JPformdata['bzdh'] = row.code
- JPformdataedit['bzdh'] = row.code
- // formdata3.value.bzmc = row.name
- dialogSelectVisible_Bz.value = false
- }
- // 班组键盘选择
- const select_bzmc = (event) => {
- if (event.keyCode === 40) { // 向下箭头
- if (currentBzIndex.value < selectData_Bz.length - 1) {
- currentBzIndex.value++
- setCurrent_BZMC(selectData_Bz[currentBzIndex.value])
- } else {
- currentBzIndex.value = 0
- setCurrent_BZMC(selectData_Bz[currentBzIndex.value])
- }
- } else if (event.keyCode === 38) { // 向上箭头
- if (currentBzIndex.value > 0) {
- currentBzIndex.value--
- setCurrent_BZMC(selectData_Bz[currentBzIndex.value])
- } else {
- currentBzIndex.value = selectData_Bz.length - 1
- setCurrent_BZMC(selectData_Bz[currentBzIndex.value])
- }
- } else if (event.keyCode === 13) { // 回车键
- if (selectData_Bz[currentBzIndex.value]) {
- handleSelectClick_Bz(selectData_Bz[currentBzIndex.value])
- }
- dialogSelectVisible_Bz.value = false
- }
- }
- // 设置当前选中班组
- const setCurrent_BZMC = (row) => {
- setTimeout(() => {
- table_BZMC.value?.setCurrentRow(row)
- })
- }
-
- const ent1 = async (event) => {
- const inputs = document.getElementsByTagName('input');
- const currentIndex = Array.from(inputs).indexOf(event.target);
- if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
- if (event.target.id === '定额代号') {
- if(formdata3.value.sczl_jtbh === ''){
- ElMessage({
- type: 'error',
- message: '请先选择机台!'
- })
- //自动聚焦光标
- setTimeout(() => {
- const inputElement = document.getElementById('机器');
- if (inputElement) {
- inputElement.focus();
- }
- }, 100);
- }else{
- FJPgetDedhsubmit();
- }
- }else if (event.target.id === 'bzdh') {
- console.log('选择班组')
- openBanzuDialog()
- }
- let nextIndex = currentIndex + 1;
- while (nextIndex < inputs.length) {
- if (inputs[nextIndex].disabled) {
- console.log("当前输入框为disabled,跳过");
- nextIndex++; // 跳过disabled的输入框
- continue;
- }
- if (!inputs[nextIndex].readOnly) {
- nextTick(() => {
- inputs[nextIndex].focus();
- inputs[nextIndex].select();
- });
- break;
- }
- nextIndex++;
- }
- }
- else if (event.keyCode === 38) { // 向上箭头
- for (let i = currentIndex - 1; i >= 0; i--) {
- if (!inputs[i].readOnly) {
- nextTick(()=>{
- inputs[i].focus();
- inputs[i].select();
- })
- break;
- }
- }
- // } else if (event.keyCode === 8) { // 删除箭头
- // if (event.target.selectionStart === 0) {
- // for (let i = currentIndex - 1; i >= 0; i--) {
- // if (!inputs[i].readOnly) {
- // nextTick(()=>{
- // inputs[i].focus();
- // inputs[i].setSelectionRange(0, 0);
- // })
- // break;
- // }
- // }
- // }
- } else if (event.keyCode === 37) { // 向左箭头
- if (event.target.selectionStart === 0) {
- for (let i = currentIndex - 1; i >= 0; i--) {
- if (!inputs[i].readOnly) {
- nextTick(()=>{
- inputs[i].focus();
- inputs[i].select();
- })
- break;
- }
- }
- }
- } else if (event.keyCode === 39) { // 向右箭头
- if (event.target.selectionStart === event.target.value.length) {
- for (let i = currentIndex + 1; i < inputs.length; i++) {
- if (!inputs[i].readOnly) {
- nextTick(()=>{
- inputs[i].focus();
- inputs[i].select();
- })
- break;
- }
- }
- }
- }
- }
- // =========== 修正核算参数 ===========
- const xzhstableColumns = ref(
- [
- { label: '方案', prop: '方案', width: '65' },
- { label: '印件号及工序名称', prop: '印件号及工序名称', width: '300' },
- { label: '参照设备', prop: '参照设备', width: '90' },
- { label: '难度系数', prop: 'sxzhscsold_难度系数', width: '90' },
- { label: '新难度系数', prop: '难度系数', width: '100' },
- { label: '原损耗代号', prop: 'sxzhscsold_损耗代号', width: '150' },
- { label: '基础损耗', prop: '基础损耗', width: '90' },
- { label: '新损耗代号', prop: '损耗代号', width: '150' },
- { label: '原印刷方式', prop: 'sxzhscsold_印刷方式', width: '150' },
- { label: '原来版距', prop: 'sxzhscsold_版距', width: '100' },
- { label: '新印刷方式', prop: '印刷方式', width: '100' },
- { label: '新来版距', prop: '版距', width: '90' },
- { label: '原计损色数', prop: 'sxzhscsold_计损色数', width: '100' },
- { label: '新计损色数', prop: '计损色数', width: '100' },
- { label: '原损耗系数', prop: 'sxzhscsold_损耗系数', width: '100' },
- { label: '新损耗系数', prop: '损耗系数', width: '100' },
- ]
- )
- const handleKeyDown = (event, x, y, prop) => {
- const currentElement = document.getElementById(`input${x}${y}`);
- if (currentElement === null && currentElement === undefined) return
- let move = 0
- switch (event.keyCode) {
- case 13: // Enter
- case 40: // 向下箭头
- if (y < sxzhscstableData.value.length )
- document.getElementById(`input${x}${y + 1}`).focus();
- break;
- case 38: // 向上箭头
- if ( y > 0) {
- document.getElementById(`input${x}${y - 1}`).focus();
- }
- break;
- case 39: // 向左箭头
- if ( x === 4) {
- move = x + 3
- } else if(x === 7){
- move = x + 3
- } else if( x === 10){
- move = x + 1
- }else if( x === 11){
- move = x + 2
- }else if( x === 13){
- move = x + 2
- }
- document.getElementById(`input${move}${y}`).focus();
- break;
- case 37: // 向右箭头
- if ( x === 15) {
- move = x - 2
- } else if (x=== 13) {
- move = x - 2
- }else if (x=== 11) {
- move = x - 1
- }else if (x=== 10) {
- move = x - 3
- }else if (x=== 7) {
- move = x - 3
- }
- document.getElementById(`input${move}${y}`).focus();
- break;
- default:
- break;
- }
- }
- const xzhscslist = ref(false);
- const xzhscsformData = reactive({
- gdbh: '',
- cpdh: '',
- gdmc: '',
- yjdh:'',
- yjmc:'',
- });
- const sxzhscstableData = ref([]);
- //修正核算参数按钮
- const onxzhscsclick = () => {
- if(_gdbhlist.value == null || _gdbhlist.value == ''){
- xzhscslist.value = false;
- ElMessage({type: 'warning',message: '请选择 设备作业清单工单后,再操作此功能' })
- }else{
- xzhscsformData['gdbh'] = _gdbhlist.value;
- _AccountingParameterdata();
- xzhscslist.value = true;
- }
- };
- //修正核算参数回车
- const xzhscsgetProductValue = () => {
- _AccountingParameterdata()
- };
- // 修正工单核算参数表格数据
- const _AccountingParameterdata = async ()=>{
- const ProductNamedata = await ProductNameData({workOrder:xzhscsformData['gdbh']});
- if(ProductNamedata.code===0){
- xzhscsformData['cpdh']=ProductNamedata.data.产品代号
- xzhscsformData['gdmc']=ProductNamedata.data.产品名称
- xzhscsformData['yjdh']=ProductNamedata.data.印件代号
- xzhscsformData['yjmc']=ProductNamedata.data.印件名称
- }
- let workOrder = xzhscsformData['gdbh'];
- try {
- const AccountingParameterdata = await AccountingParameter({workOrder:workOrder});
- sxzhscstableData.value = AccountingParameterdata.data;
- const formattedData = AccountingParameterdata.data.map(item=>{
- item.sxzhscsold_难度系数 = item.难度系数;
- item.sxzhscsold_损耗代号 = item.损耗代号;
- item.sxzhscsold_印刷方式 = item.印刷方式;
- item.sxzhscsold_版距 = item.版距;
- item.sxzhscsold_计损色数 = item.计损色数;
- item.sxzhscsold_损耗系数 = item.损耗系数;
- return item
- });
- } catch (error) {
- console.error(error);
- }
- }
- //修正核算参数更新
- const xzhscsConfirm = async () => {
- const firstCharValid = sxzhscstableData.value.map(item => {
- const firstChar = item["损耗代号"] ? item["损耗代号"].charAt(0) : '';
- return firstChar === '0' || firstChar === '';
- });
- if (sxzhscstableData.value) {
- const formattedData = sxzhscstableData.value.map(item => {
- return {
- Uniqid: parseInt(item.UniqId),
- chromatic: parseFloat(item.计损色数) ?? '',
- difficulty: parseFloat(item.难度系数) ?? '',
- loss: item.损耗代号 ??'',
- plate: parseInt(item.版距) ?? '',
- printMode: item.印刷方式 ?? '',
- wastage: parseFloat(item.损耗系数),
- }
- });
- const AccountingParameterEditdata = await AccountingParameterEdit(formattedData);
- if (AccountingParameterEditdata.code === 0) {
- xzhscslist.value = false;
- ElMessage({ type: 'success', message: '更新成功' });
- sxzhscstableData.value =''
- xzhscsformData=''
- } else {
- ElMessage({ type: 'error', message: '更新失败' });
- }
- } else {
- console.error("数据错误");
- }
- };
- //修正核算参数退出
- const sxzhscsCancel = () => {
- xzhscslist.value = false;
- sxzhscstableData.value =''
- xzhscsformData=''
- };
- //修正核算参数颜色
- const sxzhscsCellClass = ({row, column, rowIndex, columnIndex}) =>{
- if (column.label === '新难度系数' || column.label === '新损耗代号' || column.label === '新印刷方式' || column.label === '新来版距' || column.label === '新计损色数' || column.label === '新损耗系数') {
- return 'background-plan-usage-low';
- }
- }
- //=========工序产量核查===========
- const gd_gxclhclist = ref(false);
- const gxclhc_Data = ref([]);
- const gxclhc_Columns = ref(
- [
- { label: '印件及工序名称', prop: 'concatenatedData', width: '380' },
- // { label: '印件', prop: 'Gy0_yjno', width: '130' },
- // { label: '工序', prop: 'Gy0_gxh', width: '130' },
- // { label: '名称', prop: 'Gy0_gxmc', width: '130' },
- { label: '工序计划产量', prop: 'Gy0_计划接货数', width: '120' },
- { label: '联数', prop: 'Gy0_ls', width: '70' },
- { label: '折算车头产量', prop: '折算车头产量', width: '120' },
- { label: '实际上报产量', prop: 'sczl_cl', width: '120' },
- { label: '制程废品', prop: 'sczl_zcfp', width: '120' },
- { label: '制程废品率', prop: '制程废品率', width: '120' },
- { label: '来料异常', prop: '来料异常', width: '90' },
- { label: '流程单数', prop: 'process_num', width: '90' },
- { label: '当前设备', prop: 'Gy0_sbbh', width: '120' },
- { label: '工序状态', prop: 'PD_WG', width: '90'},
- { label: '首板生产日期', prop: 'sczl_rq', width: '160' },
- ]
- )
- const gxclhcformData = reactive({
- gdbh: '',
- gdmc: '',
- yjno: '',
- });
- const gdwhformData = reactive({
- // 下拉框选项数据
- yinjian: [],
- // 设置默认值
- yjno: '',
- });
- const inputCpmc = ref('')
- // 工序产量核查按钮
- const gd_gxclhconClick = async () => {
- if(_rclsb_gdbh.value === '' || _rclsb_gdbh.value === null){
- ElMessage({type: 'warning',message: '请选择具体的工单,在进行操作'})
- return false;
- }
- gxclhcformData['gdbh'] = _rclsb_gdbh.value;
- gxclhcformData['yjno'] = _rclsb_yjno.value;
- gd_gxclhclist.value = true;
- const response = await PrintDetailList ({workOrder:_Gd_gdbh.value});
- gdwhformData.yjno = response.data[0].no
- inputCpmc.value = response.data[0].name
- if (response.code === 0) {
- const noFields = response.data.map(item => item.no);
- gdwhformData.yinjian = noFields
- } else {
- console.error('查询失败:', response.msg);
- }
- _getOrderProcessCount();
- };
- //点击印件下拉框
- const ongdwhfanclick = async() => {
- _PrintDetailList();
- _getOrderProcessCount();
- }
- //工序产量核查回车
- const gxclhcProductValue = async () => {
- const response = await PrintDetailList ({workOrder:gxclhcformData['gdbh']});
- gdwhformData.yjno = response.data[0].no
- inputCpmc.value = response.data[0].name
- if (response.code === 0) {
- const noFields = response.data.map(item => item.no);
- gdwhformData.yinjian = noFields
- } else {
- console.error('查询失败:', response.msg);
- }
- _getOrderProcessCount();
- _PrintDetailList();
- }
- //工序产量核查退出
- const gxclhcCancel = async () => {
- gd_gxclhclist.value = false;
- };
- //印件编号获取方法接口
- const _PrintDetailList = async () => {
- const order = gxclhcformData['gdbh'];
- const response = await PrintDetailList ({workOrder:order});
- const matchingItem = response.data.find(item => item.no === gdwhformData.yjno);
- if (matchingItem) {
- inputCpmc.value = matchingItem.name;
- } else {
- console.log(`No matching item found for no: ${gdwhformData.yjno}`);
- }
- }
- //工序产量核查方法接口
- const _getOrderProcessCount = async () => {
- const order = gxclhcformData['gdbh'];
- const yjno = gdwhformData.yjno;
- const getOrderProcessCount_list = await getOrderProcessCount({order:order,yjno:yjno});
- const concatenatedData = getOrderProcessCount_list.data.map(item => {
- // 优化后的代码,使用模板字符串连接字段值并在单个数字前添加零
- const formattedYjno = item.Gy0_yjno.length === 1 ? `0${item.Gy0_yjno}` : item.Gy0_yjno;
- const formattedGxh = item.Gy0_gxh.length === 1 ? `0${item.Gy0_gxh}` : item.Gy0_gxh;
- const concatenatedValue = `${formattedYjno}-${formattedGxh} ${item.Gy0_gxmc} 【${item.Add_gxmc} 】`;
- return {
- ...item,
- concatenatedData: concatenatedValue, // 使用新属性名
- };
- });
- gxclhc_Data.value = concatenatedData;
- };
- // 获取需要的字典 可能为空 按需保留
- const setOptions = async () =>{
- }
- // 获取需要的字典 可能为空 按需保留
- setOptions()
- // 多选数据
- const multipleSelection = reactive([])
- // 多选
- const handleSelectionChange = (val) => {
- multipleSelection.value= val
- }
- // 删除行
- const deleteRow = (row) => {
- ElMessageBox.confirm('确定要删除吗?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- deleteCompanyFunc(row)
- })
- }
- // 批量删除控制标记
- const deleteVisible = ref(false)
- // 多选删除
- const onDelete = async() => {
- const ids = []
- if (multipleSelection.value.length === 0) {
- ElMessage({
- type: 'warning',
- message: '请选择要删除的数据'
- })
- return
- }
- multipleSelection.value &&
- multipleSelection.value.map(item => {
- ids.push(item.ID)
- })
- const res = await deleteCompanyByIds({ ids })
- if (res.code === 0) {
- ElMessage({
- type: 'success',
- message: '删除成功'
- })
- if (tableData.value.length === ids.length && page.value > 1) {
- page.value--
- }
- deleteVisible.value = false
- getTableData()
- }
- }
- // 行为控制标记(弹窗内部需要增还是改)
- const type = ref('')
- // 更新行
- const updateCompanyFunc = async(row) => {
- const res = await findCompany({ ID: row.ID })
- type.value = 'update'
- if (res.code === 0) {
- formData.value = res.data.recompany
- dialogFormVisible.value = true
- }
- }
- const cpcode=ref('')
- const finishedcode=ref()
- const _gdbhlist = ref('')
- const lcd_Gd_gdbh = ref(null)
- const lcd_Gd_yjno = ref(null)
- const ybtableData = reactive([])
- const yjupdateCompanyFunc = async(row) => {
- console.log(row)
- lcd_Gd_gdbh.value = row['工单编号|质量信息'].replace(/\|$/, '')
- lcd_Gd_yjno.value = row['印件号'].slice(0, 2)
- const Procedurelist = await Procedure({ Gd_gdbh: row['工单编号|质量信息'].replace(/\|$/, '') })
- selectData.value = Procedurelist.data;
- cpcode.value=row.产品代号
- formData.value.工单编号 = row['工单编号|质量信息'].replace(/\|$/, '')
- formData.value.印件号 = row['印件号'].slice(0, 2)
- formData.value.productCode = row.产品代号
- formData.value.产品名称 = row.产品名称
- _gdbhlist.value = row['工单编号|质量信息'].split('|')[0]
- finishedcode.value=row.产品代号
- const res = await getProductData({product_code:row.产品代号});
- ybtableData.splice(0, ybtableData.length, ...res.data.ybData);
- const response = await facilityPrintDetail({ workOrder: lcd_Gd_gdbh.value,code:'',productCode:row.产品代号,page:ybpage.value,limit:ybpageSize.value });
- // 检查接口返回的状态码
- if (response.code === 0) {
- ybtotal.value = response.data.total
- yinbanselectData.value=response.data.data
- }
- }
- //印版管理领用
- const record_outRow = async (row, index) => {
- console.log(row);
-
- // 使用 ElMessageBox 提示确认删除
- ElMessageBox.confirm('确定领出此印版?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(async () => {
- // 点击确认领出,检查当前机台是否为空
- if (row.领用机台 != null || row.供方批号 === null) {
- ElMessage({
- type: 'error',
- message: '此印版已停用或已被领用'
- });
- } else {
- console.log('调用领出');
- const requestData = [{
- Yb_工单编号: formData.value?.工单编号 || '',
- Yb_存货编码: row.存货编码 || '',
- Yb_供方批号: row.供方批号 || '',
- Yb_领用机台: JTMC || '',
- Yb_印数: row.印数 ? Number(row.印数).toFixed(2) : "0.00",
- Yb_印件号: row.YB_Yjno || '',
- Sys_id: sys_id || ''
- }];
- console.log('领出请求参数:', requestData);
- const Bomdel_del = await PrintDetailAdd(requestData);
- if (Bomdel_del.code === 0) {
- ElMessage({
- type: 'success',
- message: '领出成功'
- });
- const res = await getProductData({product_code:cpcode.value});
- ybtableData.splice(0, ybtableData.length, ...res.data.ybData);
- } else {
- ElMessage({
- type: 'error',
- message: '领出失败'
- });
- }
- }
- }).catch(() => {
- // 取消删除
- ElMessage({
- type: 'info',
- message: '已取消删除'
- });
- });
- }
- // 删除行
- const deleteCompanyFunc = async (row) => {
- const res = await deleteCompany({ ID: row.ID })
- if (res.code === 0) {
- ElMessage({
- type: 'success',
- message: '删除成功'
- })
- if (tableData.value.length === 1 && page.value > 1) {
- page.value--
- }
- getTableData()
- }
- }
- // 弹窗控制标记
- const dialogFormVisible = ref(false)
- const dianjianVisible = ref(false)
- const yinbanVisible = ref(false)
- // 查看详情控制标记
- const detailShow = ref(false)
- const bzData = reactive([])
- // 打开详情弹窗
- const openDetailShow = () => {
- detailShow.value = true
- }
- // 打开详情
- const getDetails = async (row) => {
- // 打开弹窗
- const res = await findCompany({ ID: row.ID })
- if (res.code === 0) {
- formData.value = res.data.recompany
- openDetailShow()
- }
- }
- // 关闭详情弹窗
- const closeDetailShow = () => {
- detailShow.value = false
- }
- const detailShow_rcl = ref(false)
- // 关闭详情弹窗
- const closeDetailShow_rcl = () => {
- detailShow_rcl.value = false
- }
- // 打开弹窗
- const openDialog = () => {
- FacilityInspect()
- FacilitychanLiang()
- dialogFormVisible.value = true
- }
- let drzcData=[]
- let columnNames=[]
- //当日制程检验记录
- const FacilityInspect = async () => {
- const response = await facilityInspect({machine:JTMC,date:date});
- if(response.code==0){
- columnNames = response.data.InspectionTime;
- for (const key in response.data.row[0]) {
- if (key !== 'InspectionTime') {
- const item = response.data.row[0][key];
- const rowData = {
- '工单编号': item['工单编号'],
- '印件号': item['印件号'],
- '工序名称': item['工序名称'],
- '检验项目': item['检验项目']
- };
- columnNames.forEach(time => {
- rowData[time] = '';
- });
- const results = item['time'].split(',');
- results.forEach(result => {
- if (columnNames.includes(result)) {
- rowData[result] = '√';
- }else{rowData[result] = ''}
- });
- drzcData.push(rowData);
- }
- }
- drzcDatas.value=drzcData
- }
- }
- const _rclsb_gdbh = ref('')
- const _rclsb_yjno = ref('')
- // 当日上报产量数据
- const FacilitychanLiang = async () => {
- const response = await facilitychanLiang({machine:JTMC,date:date});
- _rclsb_gdbh.value = response.data[0]['工单编号']
- _rclsb_yjno.value = response.data[0]['yjno']
- if(response.code==0){
- let totalA = response.data['totalA']
- let totalB = response.data['totalB']
- let 保养工时A = response.data['保养工时A']
- let 保养工时B = response.data['保养工时B']
- let 制程废品A = response.data['制程废品A']
- let 制程废品B = response.data['制程废品B']
- let 制程次品A = response.data['制程次品A']
- let 制程次品B = response.data['制程次品B']
- let 前工序废A = response.data['前工序废A']
- let 前工序废B = response.data['前工序废B']
- let 异常工时A = response.data['异常工时A']
- let 异常工时B = response.data['异常工时B']
- let 异常补时工时A = response.data['异常补时工时A']
- let 异常补时工时B = response.data['异常补时工时B']
- let 打样工时A = response.data['打样工时A']
- let 打样工时B = response.data['打样工时B']
- let 来料异常A = response.data['来料异常A']
- let 来料异常B = response.data['来料异常B']
- let 装版工时A = response.data['装版工时A']
- let 装版工时B = response.data['装版工时B']
- let 通电工时A = response.data['通电工时A']
- let 通电工时B = response.data['通电工时B']
- delete response.data['totalA']
- delete response.data['totalB']
- delete response.data['保养工时A']
- delete response.data['保养工时B']
- delete response.data['制程废品A']
- delete response.data['制程废品B']
- delete response.data['制程次品A']
- delete response.data['制程次品B']
- delete response.data['前工序废A']
- delete response.data['前工序废B']
- delete response.data['异常工时A']
- delete response.data['异常工时B']
- delete response.data['异常补时工时A']
- delete response.data['异常补时工时B']
- delete response.data['打样工时A']
- delete response.data['打样工时B']
- delete response.data['来料异常A']
- delete response.data['来料异常B']
- delete response.data['装版工时A']
- delete response.data['装版工时B']
- delete response.data['通电工时A']
- delete response.data['通电工时B']
- gytableData.value=Object.values(response.data)
- if(totalA){
- let rowA = {
- 产品名称: 'A班产量:',
- UniqId: "",bzdh: "",cpmc: "",dedh: "",gxh: "",gxmc: "",num: "",sczl_bh98: "",sj1: "",sj2: "",yjno: "",
- 主电表: "",产量:totalA,保养工时: 保养工时A,制程废品: 制程废品A,制程次品:制程次品A,前工序废: 前工序废A,千件工价: "",印刷方式: "",备注: "",
- 工单编号: "",工序: "",异常总工时: 异常工时A,异常类型: "",异常补时: 异常补时工时A,打样工时: 打样工时A,日定额: "",更新时间: "",来料异常: 来料异常A,用户: "",码包: "",
- 码开始行: "",码结束行: "",组员1: "",组员2: "",组员3: "",色度数: "",装版工时: 装版工时A,辅电表: "",通电工时: 通电工时A,难度系数: "",isTotal: true,
- }
- gytableData.value.push(rowA)
- }
- if(totalB){
- let rowB = {
- 产品名称: 'B班产量:',
- UniqId: "",bzdh: "",cpmc: "",dedh: "",gxh: "",gxmc: "",num: "",sczl_bh98: "",sj1: "",sj2: "",yjno: "",
- 主电表: "",产量:totalB,保养工时: 保养工时B,制程废品: 制程废品B,制程次品:制程次品B,前工序废: 前工序废B,千件工价: "",印刷方式: "",备注: "",
- 工单编号: "",工序: "",异常总工时: 异常工时B,异常类型: "",异常补时: 异常补时工时B,打样工时: 打样工时B,日定额: "",更新时间: "",来料异常: 来料异常B,用户: "",码包: "",
- 码开始行: "",码结束行: "",组员1: "",组员2: "",组员3: "",色度数: "",装版工时: 装版工时B,辅电表: "",通电工时: 通电工时B,难度系数: "",isTotal: true,
- }
- gytableData.value.push(rowB)
- }
- }
- }
- // 关闭弹窗
- const closeDialog = () => {
- dialogFormVisible.value = false
- chanliangVisible.value=false
- formData.value = {
- address: '',
- image: '',
- name: '',
- }
- }
- // 弹窗确定
- const enterDialog = async () => {
- elFormRef.value?.validate( async (valid) => {
- if (!valid) return
- let res
- switch (type.value) {
- case 'create':
- res = await createCompany(formData.value)
- break
- case 'update':
- res = await updateCompany(formData.value)
- break
- default:
- res = await createCompany(formData.value)
- break
- }
- if (res.code === 0) {
- ElMessage({
- type: 'success',
- message: '创建/更改成功'
- })
- closeDialog()
- getTableData()
- }
- })
- }
- //点击label获取表格数据
- function duohandleClick(table) {
- if(table.props.label === '设备作业清单'){
- FacilityWorklist();
- }
- if(table.props.label === '班组人员及分配比例'){
- FacilityTeam(JTMC)
- }
- if(table.props.label === '检验记录'){
- InspectionRecord()
- }
- }
- /*
- 样式事件
- */
- const blplanUsageCellClass = ({row, column, rowIndex, columnIndex}) =>{
- if (column.property === '员工编号' || column.property === 'ygxm') {
- return 'plan-usage-low';
- }
- }
- const JPblplanUsageCellClass = ({row, column, rowIndex, columnIndex}) =>{
- if (column.property === '员工编号' || column.property === 'ygxm') {
- return 'plan-usage-low';
- }
- }
- //修改 JP检品机 当日上报产量 组员及分配比例
- const JPblplanUsageCellClassedit = ({row, column, rowIndex, columnIndex}) =>{
- if (column.property === '员工编号' || column.property === 'ygxm') {
- return 'plan-usage-low';
- }
- }
- //设备作业清单 正在生产中 背景颜色
- const sbzyqdsatusCellClass = ({row, column, rowIndex, columnIndex}) =>{
- if (row.status === 1) {
- return 'status-plan-usage-low';
- }
- }
- //工序产量核查
- const gxclhcCellClass = ({row, column, rowIndex, columnIndex}) =>{
- if (column.label === '实际上报产量' ||column.label === '制程废品' || column.label === '制程废品率' ||
- column.label === '来料异常' || column.label === '流程单数' || column.label === '当前设备') {
- return 'lan-plan-usage-lows';
- }
- if (column.label === '折算车头产量') {
- return 'gxclhc—color-column-red';
- }
- // 如果不是 'PD_WG' 列,返回空字符串或其他样式类
- if (column.label === '工序状态'){
- if(row['PD_WG'] === '完工'){
- return 'lan-plan-usage-lowshui';
- }else{
- return 'pczccolor-column-lan';
- }
- }
- }
- //拉料导出弹窗
- const onllexcel = ref(false)
- const onllexcelrq = ref('')
- const llexporttoExcel = async () => {
- console.log('导出')
- onllexcelrq.value = currentDates.split('-').slice(0, 2).join('-')
- onllexcel.value = true
- }
- //选择日期
- const onchange_data = (val) => {
- if (val) {
- // 将日期对象转换为本地时间的年月格式
- const year = val.getFullYear()
- const month = (val.getMonth() + 1).toString().padStart(2, '0')
- onllexcelrq.value = `${year}-${month}`
- } else {
- onllexcelrq.value = ''
- }
- }
- //导出确认
- const rcgdsjonDialog = async () => {
- try {
- // 获取数据
- const response = await LazhiGongData({ mouth: onllexcelrq.value });
- const originalData = response.data;
-
- // 创建工作表
- const worksheet = XLSX.utils.json_to_sheet(originalData);
- //从某列开始转化成数字
- //设置从C列开始为数字格式
- const range = XLSX.utils.decode_range(worksheet['!ref']);
- for (let col = 2; col <= range.e.c; col++) { // 从C列(索引2)开始
- for (let row = range.s.r + 1; row <= range.e.r; row++) { // 跳过表头行
- const cellAddress = XLSX.utils.encode_cell({ r: row, c: col });
- if (worksheet[cellAddress]) {
- // 尝试转换为数字
- const cellValue = worksheet[cellAddress].v;
- const numValue = Number(cellValue);
-
- if (!isNaN(numValue)) {
- worksheet[cellAddress].t = 'n'; // 数字类型
- worksheet[cellAddress].v = numValue; // 更新值
- worksheet[cellAddress].z = '0.0'; // 数字格式
- }
- }
- }
- }
-
- // 创建并导出工作簿
- const workbook = XLSX.utils.book_new();
- XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
- XLSX.writeFile(workbook, '拉料人员数据.xlsx');
-
- } catch (error) {
- console.error('导出失败:', error);
- ElMessage.error('导出数据失败,请重试');
- }
- };
- const rcgdsjcloseDialog = () => {onllexcel.value = false}
-
- </script>
- <style scoped>
- /* .button-container {
- display: flex;
- flex-wrap: wrap;
- } */
- .bt{
- /* margin-left: 2px !important;
- padding: 3px !important;
- font-size: 12px; */
- margin-bottom: 5px !important;
- }
- .button-container {
- display: flex;
- flex-wrap: wrap;
- justify-content: flex-start;
- }
- .custom-button {
- display: flex;
- flex-direction: column;
- align-items: center;
- text-align: center;
- flex: 0 0 150px;
- height: 170px;
- margin: 7px;
- }
- .custom-button img {
- max-width: 100%;
- }
- .JKWTree-container {
- display: flex;
- }
- .JKWTree-tree {
- width: 440px;
- background-color: #fff;
- padding: 10px;
- margin-right: 20px;
- }
- .JKWTree-tree h3 {
- font-size: 15px;
- font-weight: 700;
- margin: 10px 0;
- }
- .JKWTree-content {
- flex: 1;
- }
- /*!* 选中某行时的背景色*/
- :deep(.el-table__body tr.current-row)>td {
- background: #ff80ff !important;
- }
- :deep(.statusy-plan-usage-low div) {
- color: #8c939d !important;
- }
- /* 设备作业清单 正在生产中 背景颜色 */
- :deep(.status-plan-usage-low ) {
- background: yellow !important;
- }
- ::v-deep .el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
- color: white;
- background-color: #4d70ff;
- }
- .groupbox{
- margin:10px;
- width:500px;
- height:500px;
- border:thin solid black;
- padding:10px
- }
- .grouptitle{
- display:block;
- margin-top:-24px;
- margin-left:20px;
- width:150px;
- text-align:center;
- background-color:white
- }
- /*工序产量核查*/
- :deep(.gxclhc—color-column-red div) {
- color: red !important;
- }
- :deep(.lan-plan-usage-lows div) {
- color: blue !important;
- font-weight: bold;
- }
- :deep(.lan-plan-usage-lowshui div) {
- color: #8c939d !important;
- }
- :deep(.plan-usage-low div) {
- color: blue !important;
- font-size: 16px;
- font-weight: bold;
- }
- </style>
- <style scoped>
- :deep(.el-table td .cell) {
- line-height: 20px !important;
- }
- :deep(.el-tabs__header) {
- margin-bottom: 0;
- }
- .search {
- margin-left: 0px !important;
- margin-right: 10px !important;
- }
- /* .bt {
- margin-left: 2px !important;
- padding: 3px !important;
- font-size: 12px;
- } */
- .el-tabs__header {
- margin: 0px !important;
- }
- .gva-table-box {
- padding: 0px !important;
- }
- :deep(.total-row) {
- background-color: yellow !important;
- }
- :deep(.plan-usage-low div) {
- color: red !important;
- font-size: 14px;
- font-weight: normal;
- }
- /* tree组件背景高亮 */
- :deep(.el-tree-node:focus > .el-tree-node__content){
- background: #ff80ff !important;
- }
- /*!* 流程单查询按钮颜色控制未完成*/
- :deep(.custom-buttons.el-button--info) {
- background-color: palegreen !important;
- color: #155724;
- font-size: 20px;
- border-color: #c3e6cb;
- }
- /* 已完成 */
- :deep(.custom-buttons.el-button--danger) {
- background-color: rgb(236, 135, 135) !important;
- color: #721c24;
- font-size: 20px;
- border-color: #f5c6cb;
- }
- </style>
|