shebeiyunxing.vue 142 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911
  1. <template>
  2. <div>
  3. <header>
  4. <el-button type="primary" class="bt" @click="onBZ">班组维护</el-button>
  5. <el-button type="primary" class="bt" @click="onzhicheng" >制程检验</el-button>
  6. <el-button type="primary" class="bt" @click="onxuncha">管理巡查</el-button>
  7. <el-button type="primary" class="bt" @click="ondianjian">设备点检</el-button>
  8. <el-button type="primary" class="bt" @click="onyinban">印版领退</el-button>
  9. <!-- <el-button type="primary" @click="onstatus" >设置机台状态</el-button> -->
  10. <el-button type="primary" class="bt" @click="oncomplaints" >客诉记录</el-button>
  11. <el-button type="primary" class="bt" @click="onClear" >换型清场</el-button>
  12. <el-button type="primary" class="bt" @click="onDel" v-if="DelType === true" >删除</el-button>
  13. <el-button type="primary" class="bt" @click="onADD" v-if="AddType === true">新增</el-button>
  14. <el-button type="primary" class="bt" @click="onADD" v-if="AddType === true">核算参数调整</el-button>
  15. <el-button type="primary" class="bt" @click="onADD" v-if="AddType === true">修正核算参数</el-button>
  16. <!-- <el-button type="primary" @click="onClear2" >换型清场</el-button> -->
  17. </header>
  18. <el-container>
  19. <layout-sider
  20. :resize-directions="['right']"
  21. :width="220"
  22. style="margin-right: 10px;"
  23. >
  24. <div
  25. class="JKWTree-tree"
  26. style="height: 70vh;"
  27. >
  28. <h3>设备运行跟踪</h3>
  29. <el-tree
  30. :data="treeData"
  31. highlight-current
  32. @node-click="handleNodeClick"
  33. />
  34. </div>
  35. </layout-sider>
  36. <el-container>
  37. <el-main>
  38. <div class="button-container" v-if="showbutton" style="height: 50%;width: 100%; flex: 1; border: 0px magenta solid; margin: 0; padding: 0;">
  39. <button v-for="(item, index) in machineData" :key="index" class="custom-button" @click="handleButtonClick(item.设备编号)">
  40. <img :src="`/src/assets/${item.状态}.png`" :alt="altText" style="max-width: 100%; height: auto;"/>
  41. <span style="margin-top: 8px;">{{ item.设备编号 + ' - ' + item.设备名称 }}</span>
  42. </button>
  43. </div>
  44. <div class="gva-search-box" v-if="JTMCOn" style="overflow: hidden; padding: 0; display: flex;">
  45. <div style="flex: 1; border: 0px magenta solid; margin: 0; padding: 0;">
  46. <el-row :gutter="20">
  47. <el-col :span="24">
  48. <el-form-item label="工单编号" prop="name">
  49. <el-row :gutter="20">
  50. <el-col :span="6">
  51. <el-input v-model="formData.工单编号" disabled :clearable="true" />
  52. </el-col>
  53. <el-col :span="18">
  54. <el-input v-model="formData.产品名称" disabled :clearable="true" />
  55. </el-col>
  56. </el-row>
  57. </el-form-item>
  58. </el-col>
  59. </el-row>
  60. <el-row :gutter="20">
  61. <el-col :span="6">
  62. <el-form-item label="印件编号" prop="id">
  63. <el-input v-model="formData.印件编号" disabled :clearable="true" />
  64. </el-form-item>
  65. </el-col>
  66. <el-col :span="17">
  67. <el-form-item label="工序名称" prop="name">
  68. <el-input v-model="formData.工序名称" disabled :clearable="true" />
  69. </el-form-item>
  70. </el-col>
  71. </el-row>
  72. <el-row :gutter="20">
  73. <el-col :span="4">
  74. <el-form-item label="班组成员" prop="id">
  75. </el-form-item>
  76. </el-col>
  77. </el-row>
  78. <el-row :gutter="1">
  79. <el-col :span="4">
  80. <el-input v-model="formData.sczl_bh1" disabled :clearable="true" />
  81. </el-col>
  82. <el-col :span="4">
  83. <el-input v-model="formData.sczl_bh2" disabled :clearable="true" />
  84. </el-col>
  85. <el-col :span="4">
  86. <el-input v-model="formData.sczl_bh3" disabled :clearable="true" />
  87. </el-col>
  88. <el-col :span="4">
  89. <el-input v-model="formData.sczl_bh4" disabled :clearable="true" />
  90. </el-col>
  91. <el-col :span="4">
  92. <el-input v-model="formData.sczl_bh5" disabled :clearable="true" />
  93. </el-col>
  94. <el-col :span="4">
  95. <el-input v-model="formData.sczl_bh6" disabled :clearable="true" />
  96. </el-col>
  97. </el-row>
  98. <el-row :gutter="1">
  99. <el-col :span="4">
  100. <el-input v-model="formData.sczl_name1" disabled :clearable="true" />
  101. </el-col>
  102. <el-col :span="4">
  103. <el-input v-model="formData.sczl_name2" disabled :clearable="true" />
  104. </el-col>
  105. <el-col :span="4">
  106. <el-input v-model="formData.sczl_name3" disabled :clearable="true" />
  107. </el-col>
  108. <el-col :span="4">
  109. <el-input v-model="formData.sczl_name4" disabled :clearable="true" />
  110. </el-col>
  111. <el-col :span="4">
  112. <el-input v-model="formData.sczl_name5" disabled :clearable="true" />
  113. </el-col>
  114. <el-col :span="4">
  115. <el-input v-model="formData.sczl_name6" disabled :clearable="true" />
  116. </el-col>
  117. </el-row>
  118. </div>
  119. <div style="flex: 1; border: 0px lawngreen solid; margin: 0; padding: 0; overflow: hidden;">
  120. <el-table
  121. tooltip-effect="dark"
  122. :data="selectData"
  123. row-key="ID"
  124. highlight-current-row="true"
  125. border
  126. style="width:100%;height: 30vh;"
  127. @row-dblclick="handleSelectClick"
  128. >
  129. <el-table-column
  130. prop="process"
  131. label="印件及工序"
  132. width="340"
  133. />
  134. <el-table-column
  135. prop="completed"
  136. label="已完成板数"
  137. width="150"
  138. />
  139. </el-table>
  140. </div>
  141. </div>
  142. <div v-if="JTMCOn" class="gva-table-box" >
  143. <div class="gva-btn-list">
  144. </div>
  145. <el-tabs v-model="activName" type="card" @tab-click="handleClick">
  146. <el-tab-pane label="设备作业清单" @click="showTable('印件资料')" name="first">
  147. <el-table ref="multipleTable"
  148. :show-overflow-tooltip="true"
  149. highlight-current-row="true"
  150. :row-style="{ height: '20px' }"
  151. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  152. :header-cell-style="{ padding: '0px' }"
  153. @row-click="yjupdateCompanyFunc"
  154. style="width: 100%;height: 330px" border tooltip-effect="dark" :data="sbzyData" row-key="ID" @selection-change="handleSelectionChange">
  155. <!-- <el-table-column type="selection" width="55" />-->
  156. <!-- <el-table-column align="left" label="选择" prop="bh" width="80"/> -->
  157. <el-table-column align="left" sortable label="工单编号|质量信息" prop="工单编号|质量信息" width="145" />
  158. <el-table-column align="left" sortable label="印件资料" prop="印件资料" width="240" />
  159. <el-table-column align="left" sortable label="工序名称" prop="工序名称" width="100" />
  160. <el-table-column align="left" sortable label="计划产量/已完成" prop="计划产量/已完成" width="130"/>
  161. <el-table-column align="left" sortable label="装版时数" prop="装版时数" width="85"/>
  162. <el-table-column align="left" sortable label="工序产能" prop="工序产能" width="85"/>
  163. <el-table-column align="left" sortable label="计划工时" prop="计划工时" width="85"/>
  164. <el-table-column align="left" sortable label="计划生产时段" prop="计划生产时段" width="210" />
  165. <el-table-column align="left" sortable label="排产备注" prop="排产备注" width="100" />
  166. <el-table-column align="left" sortable label="产品名称" prop="产品名称" width="240" />
  167. </el-table>
  168. </el-tab-pane>
  169. <el-tab-pane label="班组人员及分配比例" @click="showTable('工艺资料')" name="second">
  170. <el-table ref="multipleTable"
  171. highlight-current-row="true"
  172. :show-overflow-tooltip="true"
  173. :row-style="{ height: '20px' }"
  174. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  175. :header-cell-style="{ padding: '0px' }"
  176. @row-dblclick="gyupdateCompanyFunc"
  177. :row-class-name="rowClassStyle"
  178. style="width: 100%;height: 400px" border tooltip-effect="dark" :data="FPData" row-key="ID" @selection-change="handleSelectionChange"
  179. @row-click="clickybupdate">
  180. <!-- <el-table-column type="selection" width="55" />-->
  181. <!-- <el-table-column align="left" label="选择" prop="方案" width="70"/> -->
  182. <el-table-column align="left" sortable label="班组号" prop="班组号" width="70" />
  183. <el-table-column align="left" sortable label="组员1" prop="0" width="200" />
  184. <el-table-column align="left" sortable label="组员2" prop="1" width="200" />
  185. <el-table-column align="left" sortable label="组员3" prop="2" width="200" />
  186. <el-table-column align="left" sortable label="组员4" prop="3" width="200" />
  187. <el-table-column align="left" sortable label="组员5" prop="4" width="200" />
  188. <el-table-column align="left" sortable label="组员6" prop="5" width="70" />
  189. <el-table-column align="left" sortable label="组员7" prop="6" width="70" />
  190. <el-table-column align="left" sortable label="组员8" prop="7" width="70" />
  191. <el-table-column align="left" sortable label="组员9" prop="8" width="70" />
  192. <el-table-column align="left" sortable label="组员10" prop="9_正品版" width="70" />
  193. </el-table>
  194. </el-tab-pane>
  195. <el-tab-pane label="当班产量明细" @click="showTable('印版资料')" name="third">
  196. <el-table ref="multipleTable"
  197. highlight-current-row="true"
  198. :show-overflow-tooltip="true"
  199. :row-style="{ height: '20px' }"
  200. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  201. :header-cell-style="{ padding: '0px' }"
  202. @row-dblclick="ybupdateCompanyFunc"
  203. style="width: 100%;height: 400px" border tooltip-effect="dark" :data="CLMXData" row-key="ID" @selection-change="handleSelectionChange"
  204. >
  205. <!-- <el-table-column type="selection" width="55" />-->
  206. <el-table-column align="left" sortable label="生产时段" prop="生产时间段" width="180"/>
  207. <el-table-column align="left" sortable label="工单编号" prop="工单编号" width="85" />
  208. <el-table-column align="left" sortable label="产品名称" prop="产品名称" width="150" />
  209. <el-table-column align="left" sortable label="印件及工序" prop="印件及工序" width="320"/>
  210. <el-table-column align="left" sortable label="标牌号" prop="标牌号" width="80"/>
  211. <el-table-column align="left" sortable label="产量" prop="产量" width="100"/>
  212. <el-table-column align="left" sortable label="制程废品" prop="制程废品" width="100" />
  213. <el-table-column align="left" sortable label="制程次品" prop="制程次品" width="100" />
  214. <el-table-column align="left" sortable label="前工序废" prop="前工序废" width="100" />
  215. <el-table-column align="left" sortable label="来料异常" prop="来料异常" width="100"/>
  216. <el-table-column align="left" sortable label="装版工时" prop="装版工时" width="100" />
  217. <el-table-column align="left" sortable label="保养工时" prop="保养工时" width="100" />
  218. <el-table-column align="left" sortable label="打样工时" prop="打样工时" width="100"/>
  219. <el-table-column align="left" sortable label="异常停机工时" prop="异常停机工时" width="120"/>
  220. <el-table-column align="left" sortable label="通电工时" prop="通电工时" width="100"/>
  221. <el-table-column align="left" sortable label="码开始行" prop="码开始行" width="100" />
  222. <el-table-column align="left" sortable label="码结束行" prop="码结束行" width="100" />
  223. <el-table-column align="left" sortable label="码包" prop="码包" width="100" />
  224. <el-table-column align="left" sortable label="主电表" prop="主电表" width="100"/>
  225. <el-table-column align="left" sortable label="辅电表" prop="辅电表" width="100" />
  226. <el-table-column align="left" sortable label="色度数" prop="色度数" width="100" />
  227. </el-table>
  228. </el-tab-pane>
  229. <el-tab-pane label="检验记录" @click="showTable('技术资料附件')" name="fourth">
  230. <el-table ref="multipleTable"
  231. :row-style="{ height: '20px' }"
  232. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  233. :header-cell-style="{ padding: '0px' }"
  234. :show-overflow-tooltip="true"
  235. highlight-current-row="true"
  236. style="width: 100%;height: 400px" border tooltip-effect="dark" :data="JYData" row-key="ID" @selection-change="handleSelectionChange">
  237. <!-- <el-table-column type="selection" width="55" />-->
  238. <el-table-column align="left" sortable label="工单编号" prop="工单编号" width="85"/>
  239. <el-table-column align="left" sortable label="印件号" prop="印件号" width="70" />
  240. <el-table-column align="left" sortable label="工序名称" prop="工序名称" width="85" />
  241. <el-table-column align="left" sortable label="检验项目" prop="检验项目" width="85"/>
  242. <el-table-column
  243. v-for="time in columnNames"
  244. :key="time"
  245. :label="time"
  246. :prop="time"
  247. align="center"
  248. width="80"
  249. ></el-table-column>
  250. </el-table>
  251. </el-tab-pane>
  252. </el-tabs>
  253. </div>
  254. <el-dialog v-model="detailShow" style="width: 1000px" lock-scroll :before-close="closeDetailShow" title="机台班组维护" destroy-on-close>
  255. <el-table ref="multipleTable"
  256. :row-style="{ height: '20px' }"
  257. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  258. :header-cell-style="{ padding: '0px' }"
  259. :show-overflow-tooltip="true"
  260. highlight-current-row="true" @row-click="BZhandle"
  261. style="width: 100%;height: 250px;margin-top: 0px;" border tooltip-effect="dark"
  262. :data="bzData" row-key="ID" @selection-change="BZSelectionChange">
  263. <!-- <el-table-column type="selection" width="55" /> -->
  264. <el-table-column align="left" label="机台" prop="JTMC" width="70"/>
  265. <el-table-column align="left" label="班组" prop="班组号" width="60"/>
  266. <el-table-column align="left" label="组员1" prop="0" width="195"/>
  267. <el-table-column align="left" label="组员2" prop="1" width="195"/>
  268. <el-table-column align="left" label="组员3" prop="2" width="195"/>
  269. <el-table-column align="left" label="组员4" prop="3" width="195"/>
  270. <el-table-column align="left" label="组员5" prop="4" width="70"/>
  271. <el-table-column align="left" label="组员6" prop="5" width="70"/>
  272. <el-table-column align="left" label="组员7" prop="6" width="70"/>
  273. <el-table-column align="left" label="组员8" prop="7" width="70"/>
  274. <el-table-column align="left" label="组员9" prop="8" width="70"/>
  275. <el-table-column align="left" label="特殊组员" prop="9" width="85"/>
  276. <el-table-column align="left" label="UNIQID" prop="ID" width="75"/>
  277. </el-table>
  278. <el-row :gutter="20">
  279. <el-col :span="10">
  280. <el-form-item label="机台编号" prop="id">
  281. <el-select v-model="selectedOption" placeholder="请选择">
  282. <el-option
  283. v-for="item in dropdownOptions"
  284. :key="item.value"
  285. :label="item.label"
  286. :value="item.value"
  287. ></el-option>
  288. </el-select>
  289. </el-form-item>
  290. </el-col>
  291. <el-col :span="10">
  292. <el-form-item label="班组编号" prop="id">
  293. <el-input v-model="BZMC" :clearable="true" placeholder="" />
  294. </el-form-item>
  295. </el-col>
  296. </el-row>
  297. <div style="display: flex;">
  298. <div class="groupbox float-div" style="height: 17vh; width: 800px;">
  299. <span class="grouptitle">组员及分配比例</span>
  300. <el-row :gutter="10" style="margin-top: 0px; height: 5vh;">
  301. <el-col :span="2">
  302. <span></span>
  303. </el-col>
  304. <el-col :span="2">
  305. </el-col>
  306. <el-col :span="2">
  307. </el-col>
  308. <el-col :span="2">
  309. </el-col>
  310. <el-col :span="2">
  311. </el-col>
  312. <el-col :span="2">
  313. </el-col>
  314. <el-col :span="2">
  315. </el-col>
  316. <el-col :span="2">
  317. </el-col>
  318. <el-col :span="2">
  319. </el-col>
  320. <el-col :span="3">
  321. </el-col>
  322. <el-col :span="3">
  323. <el-form-item label="特殊组员" prop="id">
  324. </el-form-item>
  325. </el-col>
  326. </el-row>
  327. <el-row :gutter="10" style="margin-top: 0px;">
  328. <!-- <el-col :span="1">
  329. <span></span>
  330. </el-col> -->
  331. <el-col :span="3">
  332. <el-input v-model="formDatas.code1" :clearable="true" placeholder="" />
  333. </el-col>
  334. <el-col :span="3">
  335. <el-input v-model="formDatas.code2" :clearable="true" placeholder="" />
  336. </el-col>
  337. <el-col :span="3">
  338. <el-input v-model="formDatas.code3" :clearable="true" placeholder="" />
  339. </el-col>
  340. <el-col :span="3">
  341. <el-input v-model="formDatas.code4" :clearable="true" placeholder="" />
  342. </el-col>
  343. <el-col :span="3">
  344. <el-input v-model="formDatas.code5" :clearable="true" placeholder="" />
  345. </el-col>
  346. <el-col :span="3">
  347. <el-input v-model="formDatas.code6" :clearable="true" placeholder="" />
  348. </el-col>
  349. <el-col :span="3">
  350. <el-input v-model="formDatas.code7" :clearable="true" placeholder="" />
  351. </el-col>
  352. <el-col :span="3">
  353. <el-input v-model="formDatas.code8" :clearable="true" placeholder="" />
  354. </el-col>
  355. <!-- <el-col :span="2">
  356. <el-input v-model="formData.name" :clearable="true" placeholder="瞿春生" />
  357. </el-col>
  358. <el-col :span="2">
  359. <el-input v-model="percentage" :clearable="true" placeholder="11.0" />
  360. </el-col>
  361. <el-col :span="2">
  362. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="打包废纸" />
  363. </el-col>
  364. <el-col :span="2">
  365. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="是" />
  366. </el-col>
  367. <el-col :span="2">
  368. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="ZI00401" />
  369. </el-col>
  370. <el-col :span="2">
  371. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="瞿春生" />
  372. </el-col>
  373. <el-col :span="2">
  374. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="11.0" />
  375. </el-col>
  376. <el-col :span="2">
  377. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="11.0" />
  378. </el-col>
  379. <el-col :span="2">
  380. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="11.0" />
  381. </el-col> -->
  382. </el-row>
  383. <el-row :gutter="10" style="margin-top: 1px;">
  384. <!-- <el-col :span="2">
  385. <span></span>
  386. </el-col> -->
  387. <el-col :span="3">
  388. <el-input v-model="formDatas.name1" :clearable="true" placeholder="" />
  389. </el-col>
  390. <el-col :span="3">
  391. <el-input v-model="formDatas.name2" :clearable="true" placeholder="" />
  392. </el-col>
  393. <el-col :span="3">
  394. <el-input v-model="formDatas.name3" :clearable="true" placeholder="" />
  395. </el-col>
  396. <el-col :span="3">
  397. <el-input v-model="formDatas.name4" :clearable="true" placeholder="" />
  398. </el-col>
  399. <el-col :span="3">
  400. <el-input v-model="formDatas.name5" :clearable="true" placeholder="" />
  401. </el-col>
  402. <el-col :span="3">
  403. <el-input v-model="formDatas.name6" :clearable="true" placeholder="" />
  404. </el-col>
  405. <el-col :span="3">
  406. <el-input v-model="formDatas.name7" :clearable="true" placeholder="" />
  407. </el-col>
  408. <el-col :span="3">
  409. <el-input v-model="formDatas.name8" :clearable="true" placeholder="" />
  410. </el-col>
  411. <!-- <el-col :span="2">
  412. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="是" />
  413. </el-col>
  414. <el-col :span="2">
  415. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="ZI00401" />
  416. </el-col>
  417. <el-col :span="2">
  418. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="瞿春生" />
  419. </el-col>
  420. <el-col :span="2">
  421. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="11.0" />
  422. </el-col>
  423. <el-col :span="2">
  424. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="11.0" />
  425. </el-col>
  426. <el-col :span="2">
  427. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="11.0" />
  428. </el-col> -->
  429. </el-row>
  430. <el-row :gutter="10" style="margin-top: 1px;">
  431. <!-- <el-col :span="2">
  432. <span></span>
  433. </el-col> -->
  434. <el-col :span="3">
  435. <el-input v-model="formDatas.percentage1" :clearable="true" placeholder="" />
  436. </el-col>
  437. <el-col :span="3">
  438. <el-input v-model="formDatas.percentage2" :clearable="true" placeholder="" />
  439. </el-col>
  440. <el-col :span="3">
  441. <el-input v-model="formDatas.percentage3" :clearable="true" placeholder="" />
  442. </el-col>
  443. <el-col :span="3">
  444. <el-input v-model="formDatas.percentage4" :clearable="true" placeholder="" />
  445. </el-col>
  446. <el-col :span="3">
  447. <el-input v-model="formDatas.percentage5" :clearable="true" placeholder="" />
  448. </el-col>
  449. <el-col :span="3">
  450. <el-input v-model="formDatas.percentage6" :clearable="true" placeholder="" />
  451. </el-col>
  452. <el-col :span="3">
  453. <el-input v-model="formDatas.percentage5" :clearable="true" placeholder="" />
  454. </el-col>
  455. <el-col :span="3">
  456. <el-input v-model="formDatas.percentage6" :clearable="true" placeholder="" />
  457. </el-col>
  458. <!-- <el-col :span="2">
  459. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="是" />
  460. </el-col>
  461. <el-col :span="2">
  462. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="ZI00401" />
  463. </el-col>
  464. <el-col :span="2">
  465. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="瞿春生" />
  466. </el-col>
  467. <el-col :span="2">
  468. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="11.0" />
  469. </el-col>
  470. <el-col :span="2">
  471. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="11.0" />
  472. </el-col>
  473. <el-col :span="2">
  474. <el-input v-model="formData.qczl_NumDesc" :clearable="true" placeholder="11.0" />
  475. </el-col> -->
  476. </el-row>
  477. </div>
  478. <div style="height: 17vh; width: 100px;margin-top: 30px;">
  479. <el-button type="text"></el-button>
  480. <!-- <el-button style="margin-bottom: 5px;" @click="" >新增</el-button> -->
  481. <el-button style="margin-bottom: 5px;" @click="selectBz" >更新当前班组</el-button>
  482. <!-- <el-button @click="delBz" >删除当前班组</el-button> -->
  483. </div>
  484. </div>
  485. </el-dialog>
  486. <el-dialog
  487. v-model="dianjianVisible"
  488. title="设备点检记录"
  489. destroy-on-close
  490. width="1300px"
  491. style="height: 80%;"
  492. >
  493. <el-row :gutter="24">
  494. <el-col :span="3">
  495. <el-form-item label="设备编号" prop="id">
  496. <el-input v-model="formData.JTMC" :clearable="true" />
  497. </el-form-item>
  498. </el-col>
  499. <el-col :span="10">
  500. <el-row>
  501. <el-col>
  502. <el-input v-model="formData.产品名称" :clearable="true" />
  503. </el-col>
  504. </el-row>
  505. </el-col>
  506. </el-row>
  507. <div style="display: flex;">
  508. <div style="flex: 0.1;">
  509. <el-aside width="200px" style="margin: 0;">
  510. <div class="JKWTree-tree" style="height: 100%; border-right: 1px solid #ebeef5;">
  511. <el-tree :data="dianjiantreeData" :props="defaultProps" highlight-current="true"
  512. @node-click="dianjianNodeClick" @node-dblclick="handleNodeDoubleClick"></el-tree>
  513. </div>
  514. </el-aside>
  515. </div>
  516. <div style="flex: 1; margin: 0;">
  517. <el-table
  518. tooltip-effect="dark"
  519. :data="dianjianselectData"
  520. row-key="ID"
  521. highlight-current-row="true"
  522. :show-overflow-tooltip="true"
  523. border @row-click="dianjianhandle"
  524. style="width:100%; height:400px;"
  525. @row-dblclick="handleSelectClick"
  526. :row-class-name="rowClassName"
  527. >
  528. <el-table-column
  529. prop="检验项目"
  530. label="检验项目"
  531. width="300"
  532. />
  533. <el-table-column
  534. prop="点检方法"
  535. label="点检方法"
  536. width="180"
  537. />
  538. <el-table-column
  539. v-slot="scope"
  540. label="正常"
  541. width="80"
  542. >
  543. <el-checkbox v-model="scope.row.zc" @change="zcClick(scope.row)"></el-checkbox>
  544. </el-table-column>
  545. <el-table-column
  546. v-slot="scope"
  547. label="异常"
  548. width="80"
  549. >
  550. <el-checkbox v-model="scope.row.yc" @change="ycClick(scope.row)"></el-checkbox>
  551. </el-table-column>
  552. <el-table-column
  553. label="备注说明"
  554. width="180"
  555. >
  556. </el-table-column>
  557. <el-table-column
  558. v-slot="scope"
  559. label="不检测"
  560. width="80"
  561. >
  562. <el-checkbox v-model="scope.row.notjc" @change="notjcClick(scope.row)"></el-checkbox>
  563. </el-table-column>
  564. </el-table>
  565. <el-row :gutter="20">
  566. <el-col :span="20">
  567. <el-input v-model="pandingfangfa" style="height: 50px;" :clearable="true" />
  568. </el-col>
  569. </el-row>
  570. </div>
  571. </div>
  572. </el-dialog>
  573. <el-dialog
  574. v-model="yinbanVisible"
  575. title="选择"
  576. destroy-on-close
  577. width="1300px"
  578. style="height: 110%;"
  579. >
  580. <el-row :gutter="24">
  581. <el-col :span="4">
  582. <el-form-item label="工单编号" prop="id">
  583. <el-input v-model="formData.工单编号" :clearable="true" />
  584. </el-form-item>
  585. </el-col>
  586. <el-col :span="6">
  587. <el-form-item prop="id">
  588. <el-input v-model="formData.productCode" :clearable="true" />
  589. </el-form-item>
  590. </el-col>
  591. <el-col :span="14">
  592. <el-form-item prop="id">
  593. <el-input v-model="formData.产品名称" :clearable="true" />
  594. </el-form-item>
  595. </el-col>
  596. </el-row>
  597. <div style="display: flex;">
  598. <div style="flex: 1;">
  599. <el-aside width="250px" style="margin: 0;">
  600. <div class="JKWTree-tree" style="height: 100%; border-right: 1px solid #ebeef5;">
  601. <el-tree :data="yinbantreeData" :props="defaultProps" highlight-current="true"
  602. @node-click="yinbanNodeClick" @node-dblclick="handleNodeDoubleClick"></el-tree>
  603. </div>
  604. </el-aside>
  605. </div>
  606. <div style="flex: 1; margin: 0;">
  607. <el-table
  608. tooltip-effect="dark"
  609. :data="yinbanselectData"
  610. row-key="ID"
  611. highlight-current-row="true"
  612. border @row-click="dianjianhandle"
  613. style="width:1000px; height:400px;"
  614. @row-dblclick="handleSelectClick"
  615. :row-class-name="rowClassName"
  616. >
  617. <el-table-column
  618. prop="存货编码"
  619. label="存货编码"
  620. width="180"
  621. />
  622. <el-table-column
  623. prop="存货名称"
  624. label="存货名称"
  625. width="180"
  626. />
  627. <el-table-column
  628. prop="印版名称"
  629. label="印版名称"
  630. width="180"
  631. />
  632. <el-table-column
  633. prop="供方批号"
  634. label="供方批号"
  635. width="180"
  636. />
  637. <el-table-column
  638. prop="制造日期"
  639. label="制造日期"
  640. width="180"
  641. />
  642. <el-table-column
  643. prop="印数"
  644. label="印数"
  645. width="180"
  646. />
  647. <el-table-column
  648. prop="印版类别"
  649. label="印版类别"
  650. width="180"
  651. />
  652. <el-table-column
  653. prop="客户编号"
  654. label="客户编号"
  655. width="180"
  656. />
  657. <el-table-column
  658. prop="客户名称"
  659. label="客户名称"
  660. width="180"
  661. />
  662. <el-table-column
  663. prop="产品编号"
  664. label="产品编号"
  665. width="180"
  666. />
  667. <el-table-column
  668. prop="产品名称"
  669. label="产品名称"
  670. width="180"
  671. />
  672. <el-table-column
  673. prop="点检方法"
  674. label="备注说明"
  675. width="180"
  676. />
  677. <el-table-column
  678. prop="点检方法"
  679. label="备注说明"
  680. width="180"
  681. />
  682. </el-table>
  683. </div>
  684. </div>
  685. </el-dialog>
  686. <el-dialog
  687. v-model="xunchaVisible"
  688. title="管理人员现场巡查记录"
  689. destroy-on-close
  690. width="1300px"
  691. style="height: 65%;"
  692. >
  693. <div style="display: flex;">
  694. <div style="flex: 1;">
  695. <el-aside width="250px" style="margin: 0;">
  696. <div class="JKWTree-tree" style="height: 100%; border-right: 1px solid #ebeef5;">
  697. <el-tree :data="xunchatreeData" :props="defaultProps" highlight-current="true"
  698. @node-click="xunchaNodeClick"></el-tree>
  699. </div>
  700. </el-aside>
  701. </div>
  702. <div style="flex: 1; margin: 0;">
  703. <el-table
  704. tooltip-effect="dark"
  705. :data="xunchaselectData"
  706. row-key="ID"
  707. highlight-current-row="true"
  708. border @row-click="dianjianhandle"
  709. style="width:1000px; height:400px;"
  710. @row-dblclick="handleSelectClick"
  711. :row-class-name="rowClassName"
  712. :show-overflow-tooltip="true"
  713. >
  714. <el-table-column
  715. prop="工单编号"
  716. label="工序编号"
  717. width="85"
  718. />
  719. <el-table-column
  720. prop="印件号"
  721. label="印件号"
  722. width="70"
  723. />
  724. <el-table-column
  725. prop="工序名称"
  726. label="工序名称"
  727. width="180"
  728. />
  729. <el-table-column
  730. prop="流程单号"
  731. label="流程单号"
  732. width="85"
  733. />
  734. <el-table-column
  735. prop="设备编号"
  736. label="设备编号"
  737. width="85"
  738. />
  739. <el-table-column
  740. prop="班组编号"
  741. label="班组编号"
  742. width="85"
  743. />
  744. <el-table-column
  745. prop="检验备注"
  746. label="检验备注"
  747. width="85"
  748. />
  749. <el-table-column
  750. prop="现场管理人员"
  751. label="现场管理人员"
  752. width="145"
  753. />
  754. <el-table-column
  755. prop="提交时间"
  756. label="提交时间"
  757. width="160"
  758. />
  759. <el-table-column
  760. prop="开工时间"
  761. label="开工时间"
  762. width="160"
  763. />
  764. <el-table-column
  765. prop="分钟差数"
  766. label="分钟差数"
  767. width="85"
  768. />
  769. <el-table-column
  770. prop="归属时段"
  771. label="归属时段"
  772. width="160"
  773. />
  774. </el-table>
  775. </div>
  776. </div>
  777. <template #footer>
  778. <div class="dialog-footer">
  779. <!-- <el-button @click="closeDialog">关 闭</el-button> -->
  780. <!-- <el-button type="primary" @click="xunjianerDialog">提 交</el-button> -->
  781. </div>
  782. </template>
  783. </el-dialog>
  784. <el-dialog
  785. v-model="zhichengVisible"
  786. title="制程检验记录"
  787. destroy-on-close
  788. width="1100px"
  789. style="height: 78%;"
  790. >
  791. <el-row :gutter="24" style="margin-top=0px; margin-bottom: 1px;">
  792. <el-col :span="4" style="margin-top=0px; margin-bottom: 0px;">
  793. <el-form-item label="工单编号" prop="id" style="margin-top=0px; margin-bottom: 0px;">
  794. <el-input v-model="xunchaData.order" :clearable="true" placeholder="" style="margin-top=0px; margin-bottom: 0px;"/>
  795. </el-form-item>
  796. </el-col>
  797. <el-col :span="9" style="margin-top=0px; margin-bottom: 0px;">
  798. <el-row style="margin-top=0px; margin-bottom: 0px;">
  799. <el-col style="margin-top=0px; margin-bottom: 0px;">
  800. <el-input v-model="xunchaData.product_name" :clearable="true" placeholder="" style="margin-top=0px; margin-bottom: 0px;"/>
  801. </el-col>
  802. </el-row>
  803. </el-col>
  804. <el-col :span="4" style="margin-top=0px; margin-bottom: 0px;">
  805. <el-form-item label="流程单" prop="id" style="margin-top=0px; margin-bottom: 0px;">
  806. <el-input v-model="xunchaData.lcdh" :clearable="true" placeholder="" style="margin-top=0px; margin-bottom: 0px;"/>
  807. </el-form-item>
  808. </el-col>
  809. </el-row>
  810. <el-row :gutter="24" style="margin-top=0px; margin-bottom: 1px;">
  811. <el-col :span="3" style="margin-top=0px; margin-bottom: 0px;">
  812. <el-form-item label="印件编号" prop="id" style="margin-top=0px; margin-bottom: 0px;">
  813. <el-input v-model="xunchaData.yjno" :clearable="true" placeholder="" style="margin-top=0px; margin-bottom: 0px;"/>
  814. </el-form-item>
  815. </el-col>
  816. <el-col :span="10" style="margin-top=0px; margin-bottom: 0px;">
  817. <el-row style="margin-top=0px; margin-bottom: 0px;">
  818. <el-col style="margin-top=0px; margin-bottom: 0px;">
  819. <el-input v-model="xunchaData.gxmc" :clearable="true" placeholder="" style="margin-top=0px; margin-bottom: 0px;"/>
  820. </el-col>
  821. </el-row>
  822. </el-col>
  823. </el-row>
  824. <div style="display: flex;">
  825. <div style="flex: 0.1;">
  826. <el-aside width="180px" style="margin: 0;">
  827. <div class="JKWTree-tree" style="height: 100%; border-right: 1px solid #ebeef5;">
  828. <el-tree :data="zhichengtreeData" :props="defaultProps" highlight-current="true"
  829. @node-click="zhichengNodeClick"></el-tree>
  830. </div>
  831. </el-aside>
  832. </div>
  833. <div v-if="zhichengstatus" style="flex: 0; margin: 0;">
  834. <el-tabs v-model="activNames" type="card" @tab-click="handleClick">
  835. <el-tab-pane label="指标检验" @click="showTable('指标检验')" name="first">
  836. <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>
  837. </el-tab-pane>
  838. <el-tab-pane label="附加检验记录" @click="showTable('附加检验记录')" name="second">
  839. <el-table
  840. tooltip-effect="dark"
  841. :data="fujiaselectData"
  842. row-key="ID"
  843. highlight-current-row="true"
  844. :show-overflow-tooltip="true"
  845. border @row-click="dianjianhandle"
  846. style="width:100%; height:320px;"
  847. @row-dblclick="handleSelectClick"
  848. :row-class-name="rowClassName"
  849. >
  850. <el-table-column
  851. v-slot="scope"
  852. label="不检测"
  853. width="75"
  854. >
  855. <el-checkbox v-model="scope.row.notjc"></el-checkbox>
  856. </el-table-column>
  857. <el-table-column
  858. prop="缺陷备注"
  859. label="缺陷及记录"
  860. width="720"
  861. />
  862. <el-table-column
  863. prop="编号"
  864. label="编号"
  865. width="80"
  866. />
  867. </el-table>
  868. </el-tab-pane>
  869. </el-tabs>
  870. </div>
  871. </div>
  872. <template #footer>
  873. <div v-if="zhichengstatus" class="dialog-footer">
  874. <el-button @click="closezhichengDialog">关 闭</el-button>
  875. <el-button type="primary" @click="zhichengDialog">提 交</el-button>
  876. </div>
  877. </template>
  878. </el-dialog>
  879. <div v-if="dateOn" >
  880. <el-tabs v-model="activName" type="card" @tab-click="handleClick">
  881. <el-tab-pane label="当日上报产量" @click="showTable('工艺资料')" name="first">
  882. <el-table ref="multipleTable"
  883. :show-overflow-tooltip="true"
  884. :row-style="{ height: '20px' }"
  885. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  886. :header-cell-style="{ padding: '0px' }" @row-click="getUid"
  887. highlight-current-row="true" @row-dblclick="gytableDatadoubleClick"
  888. style="width: 100%;height: 400px" border tooltip-effect="dark" :data="gytableData" row-key="ID" @selection-change="handleSelectionChange">
  889. <el-table-column type="selection" width="55" />
  890. <!-- <el-table-column align="left" label="选择" prop="工单编号" width="100"/> -->
  891. <el-table-column align="left" label="产品名称" prop="产品名称" width="200"/>
  892. <el-table-column align="left" label="工序" prop="工序" width="100"/>
  893. <el-table-column align="left" label="备注" prop="备注" width="100"/>
  894. <el-table-column align="left" label="产量" prop="产量" width="70"/>
  895. <el-table-column align="left" label="千件工价" prop="千件工价" width="85"/>
  896. <el-table-column align="left" label="日定额" prop="日定额" width="85"/>
  897. <el-table-column align="left" label="补产标准" prop="补产标准" width="85"/>
  898. <el-table-column align="left" label="难度系数" prop="难度系数" width="85"/>
  899. <el-table-column align="left" label="印刷方式" prop="印刷方式" width="85"/>
  900. <el-table-column align="left" label="组员1" prop="组员1" width="170" />
  901. <el-table-column align="left" label="组员2" prop="组员2" width="170" />
  902. <el-table-column align="left" label="组员3" prop="组员3" width="170" />
  903. <el-table-column align="left" label="组员4" prop="组员4" width="170" />
  904. <el-table-column align="left" label="组员5" prop="组员5" width="70" />
  905. <el-table-column align="left" label="组员6" prop="组员6" width="70" />
  906. <el-table-column align="left" label="组员7" prop="组员7" width="70" />
  907. <el-table-column align="left" label="组员8" prop="组员8" width="70" />
  908. <el-table-column align="left" label="组员9" prop="组员9" width="70" />
  909. <el-table-column align="left" label="组员10" prop="组员10" width="70" />
  910. <el-table-column align="left" label="制程废品" prop="制程废品" width="85" />
  911. <el-table-column align="left" label="制程次品" prop="制程次品" width="85" />
  912. <el-table-column align="left" label="前工序废" prop="前工序废" width="85" />
  913. <el-table-column align="left" label="来料异常" prop="来料异常" width="85"/>
  914. <el-table-column align="left" label="装版工时" prop="装版工时" width="85" />
  915. <el-table-column align="left" label="保养工时" prop="保养工时" width="85" />
  916. <el-table-column align="left" label="打样工时" prop="打样工时" width="85"/>
  917. <el-table-column align="left" label="异常总工时" prop="异常总工时" width="85"/>
  918. <el-table-column align="left" label="异常补时" prop="异常补时" width="85"/>
  919. <el-table-column align="left" label="异常类型" prop="异常类型" width="110"/>
  920. <el-table-column align="left" label="通电工时" prop="通电工时" width="85"/>
  921. <el-table-column align="left" label="码开始行" prop="码开始行" width="85" />
  922. <el-table-column align="left" label="码结束行" prop="码结束行" width="85" />
  923. <el-table-column align="left" label="码包" prop="码包" width="70" />
  924. <el-table-column align="left" label="主电表" prop="主电表" width="70"/>
  925. <el-table-column align="left" label="辅电表" prop="辅电表" width="70" />
  926. <el-table-column align="left" label="色度数" prop="色度数" width="70" />
  927. <el-table-column align="left" label="用户" prop="用户" width="210" />
  928. <el-table-column align="left" label="更新时间" prop="更新时间" width="160" />
  929. </el-table>
  930. </el-tab-pane>
  931. <el-tab-pane label="当日制程检验记录" @click="showTable('印件资料')" name="second">
  932. <el-table ref="multipleTable"
  933. :row-style="{ height: '20px' }"
  934. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  935. :header-cell-style="{ padding: '0px' }"
  936. :show-overflow-tooltip="true"
  937. highlight-current-row="true"
  938. style="width: 100%;height: 400px" border tooltip-effect="dark" :data="drzcDatas" row-key="ID" @selection-change="handleSelectionChange">
  939. <el-table-column type="selection" width="55" />
  940. <el-table-column align="left" label="工单编号" prop="工单编号" width="85"/>
  941. <el-table-column align="left" label="印件号" prop="印件号" width="70" />
  942. <el-table-column align="left" label="工序名称" prop="工序名称" width="85" />
  943. <el-table-column align="left" label="检验项目" prop="检验项目" width="85"/>
  944. <el-table-column
  945. v-for="time in columnNames"
  946. :key="time"
  947. :label="time"
  948. :prop="time"
  949. align="center"
  950. width="80"
  951. ></el-table-column>
  952. </el-table>
  953. </el-tab-pane>
  954. </el-tabs>
  955. </div>
  956. <el-dialog v-model="complaintsShow" style="width: 1000px" lock-scroll :before-close="closecomplaintsShow" title="=客诉记录" destroy-on-close>
  957. <el-table ref="multipleTable"
  958. :row-style="{ height: '20px' }"
  959. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  960. :header-cell-style="{ padding: '0px' }"
  961. :show-overflow-tooltip="true"
  962. highlight-current-row="true" @row-click="complaintshandle"
  963. style="width: 100%;height: 250px;margin-top: 0px;" border tooltip-effect="dark"
  964. :data="complaintsData" row-key="ID" @selection-change="complaintsSelectionChange">
  965. <!-- <el-table-column type="selection" width="55" /> -->
  966. <el-table-column align="left" label="产品编号" prop="产品编号" width="120"/>
  967. <el-table-column align="left" label="产品名称" prop="产品名称" width="200"/>
  968. <el-table-column align="left" label="客诉日期" prop="客诉日期" width="120"/>
  969. <el-table-column align="left" label="客诉单号" prop="客诉单号" width="120"/>
  970. <el-table-column align="left" label="客诉方式" prop="客诉方式" width="100"/>
  971. <el-table-column align="left" label="订单编号" prop="订单编号" width="100"/>
  972. <el-table-column align="left" label="缺陷关键字" prop="缺陷关键字" width="140"/>
  973. <el-table-column align="left" label="客诉性质" prop="客诉性质" width="100"/>
  974. <el-table-column align="left" label="主要责任部门" prop="主要责任部门" width="140"/>
  975. <el-table-column align="left" label="次要责任部门" prop="次要责任部门" width="140"/>
  976. </el-table>
  977. <el-row :gutter="20">
  978. <el-col :span="6">
  979. <el-form-item label="客户编号" prop="id">
  980. <el-input v-model="selectedRowData.客户编号" :clearable="true" placeholder="" />
  981. </el-form-item>
  982. </el-col>
  983. <el-col :span="15">
  984. <el-form-item label="客户名称" prop="id">
  985. <el-input v-model="selectedRowData.客户名称" :clearable="true" placeholder="" />
  986. </el-form-item>
  987. </el-col>
  988. </el-row>
  989. <el-row :gutter="20">
  990. <el-col :span="6">
  991. <el-form-item label="客诉单号" prop="id">
  992. <el-input v-model="selectedRowData.客诉单号" :clearable="true" placeholder="" />
  993. </el-form-item>
  994. </el-col>
  995. <el-col :span="5">
  996. <el-form-item label="客诉日期" prop="id">
  997. <el-input v-model="selectedRowData.客诉日期" :clearable="true" placeholder="" />
  998. </el-form-item>
  999. </el-col>
  1000. <el-col :span="5">
  1001. <el-form-item label="方式" prop="id">
  1002. <el-input v-model="selectedRowData.客诉方式" :clearable="true" placeholder="" />
  1003. </el-form-item>
  1004. </el-col>
  1005. <el-col :span="5">
  1006. <el-form-item label="批次号" prop="id">
  1007. <el-input v-model="selectedRowData.订单编号" :clearable="true" placeholder="" />
  1008. </el-form-item>
  1009. </el-col>
  1010. </el-row>
  1011. <el-row :gutter="20">
  1012. <el-col :span="20">
  1013. <el-form-item label="反馈问题" prop="id">
  1014. <el-input v-model="selectedRowData.客诉描述" :clearable="true" placeholder="" />
  1015. </el-form-item>
  1016. </el-col>
  1017. </el-row>
  1018. <el-row :gutter="20">
  1019. <el-col :span="20">
  1020. <el-form-item label="缺陷关键字" prop="id">
  1021. <el-input v-model="selectedRowData.缺陷关键字" :clearable="true" placeholder="" />
  1022. </el-form-item>
  1023. </el-col>
  1024. </el-row>
  1025. <el-row :gutter="20">
  1026. <el-col :span="5">
  1027. <el-form-item label="性质" prop="id">
  1028. <el-input v-model="selectedRowData.客诉性质" :clearable="true" placeholder="" />
  1029. </el-form-item>
  1030. </el-col>
  1031. <el-col :span="5">
  1032. <el-form-item label="扣分" prop="id">
  1033. <el-input v-model="selectedRowData.扣分" :clearable="true" placeholder="" />
  1034. </el-form-item>
  1035. </el-col>
  1036. </el-row>
  1037. <div style="display: flex;">
  1038. </div>
  1039. </el-dialog>
  1040. <el-dialog
  1041. v-model="huanxingVisible"
  1042. title="换型清场"
  1043. destroy-on-close
  1044. width="145vh"
  1045. style="height: 78vh;"
  1046. :before-close="closehuanxingVisible"
  1047. >
  1048. <div style="display: flex;">
  1049. <div style="flex: 0.1;">
  1050. <el-aside width="26vh" style="margin: 0;">
  1051. <div class="JKWTree-tree" style="height: 60vh; border-right: 1px solid #ebeef5;">
  1052. <el-tree :data="huanxingtreeData" :props="defaultProps" highlight-current="true"
  1053. @node-click="huanxingNodeClick"></el-tree>
  1054. </div>
  1055. </el-aside>
  1056. </div>
  1057. <div v-if="huanxingstatus" style="flex: 0; margin: 0;">
  1058. <el-tabs v-model="activNames" type="card" @tab-click="handleClick">
  1059. <el-tab-pane label="换型清场明细信息" @click="showTable('换型清场明细信息')" name="first">
  1060. <div style="width:110vh">
  1061. <el-descriptions :column="9" border>
  1062. <el-descriptions-item :span="9">
  1063. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  1064. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  1065. <el-form-item label="日期:" prop="id" style="margin-top=0px; margin-bottom: 0px;">
  1066. <el-input v-model="huanxingData.日期" placeholder="" style="margin-top=0px; margin-bottom: 0px;"/>
  1067. </el-form-item>
  1068. </el-col>
  1069. <el-col :span="2" style="margin-bottom: 0px;margin-top: 0px;">
  1070. </el-col>
  1071. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  1072. <el-form-item label="机台编号:" prop="id" style="margin-top=0px; margin-bottom: 0px;">
  1073. <el-input v-model="huanxingData.机台编号" placeholder="" style="margin-top=0px; margin-bottom: 0px;"/>
  1074. </el-form-item>
  1075. </el-col>
  1076. <el-col :span="1" style="margin-bottom: 0px;margin-top: 0px;">
  1077. </el-col>
  1078. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  1079. <el-form-item label="班组:" prop="id" style="margin-top=0px; margin-bottom: 0px;">
  1080. <el-input v-model="huanxingData.班组" placeholder="" style="margin-top=0px; margin-bottom: 0px;"/>
  1081. </el-form-item>
  1082. </el-col>
  1083. </el-row>
  1084. </el-descriptions-item>
  1085. <el-descriptions-item label="清场原因 从" :span="9">
  1086. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  1087. <el-col :span="8" style="margin-bottom: 0px;margin-top: 0px;">
  1088. <el-form-item label="工单编号:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1089. <el-input v-model="huanxingData.工单编号A" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  1090. </el-form-item>
  1091. </el-col>
  1092. <el-col :span="16" style="margin-bottom: 0px;margin-top: 0px;">
  1093. <el-form-item label="印件名称:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1094. <el-input v-model="huanxingData.印件名称A" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  1095. </el-form-item>
  1096. </el-col>
  1097. </el-row>
  1098. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  1099. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  1100. <el-form-item label="印件工序:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1101. <el-input v-model="huanxingData.印件工序A" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  1102. </el-form-item>
  1103. </el-col>
  1104. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  1105. </el-col>
  1106. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  1107. <el-form-item label="码包号" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1108. <el-input v-model="huanxingData.码包号A" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  1109. </el-form-item>
  1110. </el-col>
  1111. </el-row>
  1112. </el-descriptions-item>
  1113. <el-descriptions-item label="清场原因 到" :span="9">
  1114. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  1115. <el-col :span="8" style="margin-bottom: 0px;margin-top: 0px;">
  1116. <el-form-item label="工单编号:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1117. <el-input v-model="huanxingData.工单编号B" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  1118. </el-form-item>
  1119. </el-col>
  1120. <el-col :span="16" style="margin-bottom: 0px;margin-top: 0px;">
  1121. <el-form-item label="印件名称:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1122. <el-input v-model="huanxingData.印件名称B" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  1123. </el-form-item>
  1124. </el-col>
  1125. </el-row>
  1126. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  1127. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  1128. <el-form-item label="印件工序:" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1129. <el-input v-model="huanxingData.印件工序B" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  1130. </el-form-item>
  1131. </el-col>
  1132. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  1133. </el-col>
  1134. <el-col :span="6" style="margin-bottom: 0px;margin-top: 0px;">
  1135. <el-form-item label="码包号" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1136. <el-input v-model="huanxingData.码包B" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  1137. </el-form-item>
  1138. </el-col>
  1139. </el-row>
  1140. </el-descriptions-item>
  1141. <el-descriptions-item label="清场确认项目" :span="9">
  1142. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  1143. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  1144. <el-form-item label="菲林_标样_签样品_留样品" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1145. <el-checkbox v-model="huanxingData.项目1"></el-checkbox>
  1146. </el-form-item>
  1147. </el-col>
  1148. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  1149. <el-form-item label="版材_纸张_电化铝_油墨" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1150. <el-checkbox v-model="huanxingData.项目2"></el-checkbox>
  1151. </el-form-item>
  1152. </el-col>
  1153. </el-row>
  1154. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  1155. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  1156. <el-form-item label="过版纸_废品_次品" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1157. <el-checkbox v-model="huanxingData.项目3"></el-checkbox>
  1158. </el-form-item>
  1159. </el-col>
  1160. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  1161. <el-form-item label="半成品_成品_零头" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1162. <el-checkbox v-model="huanxingData.项目4"></el-checkbox>
  1163. </el-form-item>
  1164. </el-col>
  1165. </el-row>
  1166. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  1167. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  1168. <el-form-item label="操作台桌面_抽屉_地面" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1169. <el-checkbox v-model="huanxingData.项目5"></el-checkbox>
  1170. </el-form-item>
  1171. </el-col>
  1172. </el-row>
  1173. </el-descriptions-item>
  1174. <el-descriptions-item label="清场确认人" :span="9">
  1175. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  1176. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  1177. <el-form-item label="机长签字" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1178. <el-input v-model="huanxingData.机长" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  1179. </el-form-item>
  1180. </el-col>
  1181. </el-row>
  1182. <el-row :gutter="24" style="margin-bottom: 0px;margin-top: 0px;">
  1183. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  1184. <el-form-item label="带班主管签字" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1185. <el-input v-model="huanxingData.班长" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  1186. </el-form-item>
  1187. </el-col>
  1188. <el-col :span="12" style="margin-bottom: 0px;margin-top: 0px;">
  1189. <el-form-item label="质量巡查员签字" prop="id" style="margin-bottom: 0px;margin-top: 0px;">
  1190. <el-input v-model="huanxingData.质量巡查员" placeholder="" style="margin-bottom: 0px;margin-top: 0px;"/>
  1191. </el-form-item>
  1192. </el-col>
  1193. </el-row>
  1194. </el-descriptions-item>
  1195. </el-descriptions>
  1196. </div>
  1197. </el-tab-pane>
  1198. <el-tab-pane label="当前设备换型记录" @click="showTable('当前设备换型记录')" name="second">
  1199. <el-table
  1200. tooltip-effect="dark"
  1201. :data="huanxingselectData"
  1202. row-key="ID"
  1203. highlight-current-row="true"
  1204. :show-overflow-tooltip="true"
  1205. border @row-click="dianjianhandle"
  1206. style="width:115vh; height:50vh;"
  1207. @row-dblclick="handleSelectClick"
  1208. :row-class-name="rowClassName"
  1209. >
  1210. <el-table-column
  1211. prop="日期"
  1212. label="日期"
  1213. width="160"
  1214. />
  1215. <el-table-column
  1216. prop="机台编号"
  1217. label="机台编号"
  1218. width="90"
  1219. />
  1220. <el-table-column
  1221. prop="班组"
  1222. label="班组"
  1223. width="70"
  1224. />
  1225. <el-table-column
  1226. prop="工单编号A"
  1227. label="工单编号A"
  1228. width="95"
  1229. />
  1230. <el-table-column
  1231. prop="印件名称A"
  1232. label="印件名称A"
  1233. width="130"
  1234. />
  1235. <el-table-column
  1236. prop="印件工序A"
  1237. label="印件工序A"
  1238. width="150"
  1239. />
  1240. <el-table-column
  1241. prop="码包号A"
  1242. label="码包号A"
  1243. width="80"
  1244. />
  1245. <el-table-column
  1246. prop="工单编号B"
  1247. label="工单编号B"
  1248. width="100"
  1249. />
  1250. <el-table-column
  1251. prop="印件名称B"
  1252. label="印件名称B"
  1253. width="100"
  1254. />
  1255. <el-table-column
  1256. prop="印件工序B"
  1257. label="印件工序B"
  1258. width="150"
  1259. />
  1260. <el-table-column
  1261. prop="码包号B"
  1262. label="码包号B"
  1263. width="80"
  1264. />
  1265. <el-table-column
  1266. prop="清场项目A"
  1267. label="菲林_标样_签样品_留样品"
  1268. width="190"
  1269. />
  1270. <el-table-column
  1271. prop="清场项目B"
  1272. label="版材_纸张_电化铝_油墨"
  1273. width="190"
  1274. />
  1275. <el-table-column
  1276. prop="清场项目C"
  1277. label="过版纸_废品_次品"
  1278. width="170"
  1279. />
  1280. <el-table-column
  1281. prop="清场项目D"
  1282. label="半成品_成品_零头"
  1283. width="170"
  1284. />
  1285. <el-table-column
  1286. prop="清场项目E"
  1287. label="操作台桌面_抽屉_地面"
  1288. width="180"
  1289. />
  1290. <el-table-column
  1291. prop="机长"
  1292. label="机长"
  1293. width="80"
  1294. />
  1295. <el-table-column
  1296. prop="班长"
  1297. label="带班长"
  1298. width="80"
  1299. />
  1300. <el-table-column
  1301. prop="质量巡查员"
  1302. label="质量巡查员"
  1303. width="100"
  1304. />
  1305. <el-table-column
  1306. prop="创建时间"
  1307. label="创建时间"
  1308. width="120"
  1309. />
  1310. <el-table-column
  1311. prop="UNIQID"
  1312. label="UNIQID"
  1313. width="80"
  1314. />
  1315. </el-table>
  1316. </el-tab-pane>
  1317. </el-tabs>
  1318. </div>
  1319. </div>
  1320. </el-dialog>
  1321. <el-dialog
  1322. v-model="chanliangVisible"
  1323. destroy-on-close
  1324. width="60%"
  1325. style="height: 110vh;"
  1326. :before-close="closechanliangVisible"
  1327. :title="type2 === 'create' ? '新增' : '修改'"
  1328. >
  1329. <el-row :gutter="24">
  1330. <el-col :span="6">
  1331. <el-form-item label="工单编号:" prop="flatFeed" class="mab">
  1332. <el-input v-model="formdata3.value.工单编号" id="工单编号" @blur="getCPMCsubmit()" @keydown="ent1($event)" :clearable="true" />
  1333. </el-form-item>
  1334. </el-col>
  1335. <el-col :span="18">
  1336. <el-form-item label="产品名称:" prop="perTenThousand" class="mab" label-width="150">
  1337. <el-input v-model="formdata3.value.cpmc" id="产品名称" @keydown="ent1($event)" :clearable="true" />
  1338. </el-form-item>
  1339. </el-col>
  1340. </el-row>
  1341. <el-row :gutter="24">
  1342. <el-col :span="6">
  1343. <el-form-item label="印件号:" prop="flatFeed" class="mab">
  1344. <el-input v-model="formdata3.value.yjno" id="印件号" @keydown="ent1($event)" :clearable="true" />
  1345. </el-form-item>
  1346. </el-col>
  1347. <el-col :span="18">
  1348. <el-form-item label="印件名称:" prop="perTenThousand" class="mab" label-width="150">
  1349. <el-input v-model="formdata3.value.cpmc" id="印件名称" @keydown="ent1($event)" :clearable="true" />
  1350. </el-form-item>
  1351. </el-col>
  1352. </el-row>
  1353. <el-row :gutter="24">
  1354. <el-col :span="14">
  1355. <el-form-item label="工序名称:" prop="flatFeed" class="mab">
  1356. <el-input v-model="formdata3.value.gxmc" id="工序名称" @focus="gxmcHandleFocus()" @blur="getGXsubmit()" @keydown="ent1($event)" :clearable="true" style="width: 350px;" />
  1357. <el-input v-model="formdata3.value.gxh" id="工序号" :readonly=true :clearable="true" style="width: 50px; margin-left: 10px;" />
  1358. </el-form-item>
  1359. </el-col>
  1360. <el-col :span="10">
  1361. <el-form-item label="工艺名称:" prop="perTenThousand" class="mab">
  1362. <el-input v-model="formdata3.value.gymc" id="工艺名称" @keydown="ent1($event)" :readonly=true :clearable="true" style="width: 200px;" />
  1363. </el-form-item>
  1364. </el-col>
  1365. </el-row>
  1366. <el-row :gutter="24">
  1367. <el-col :span="6">
  1368. <el-form-item label="日期:" prop="flatFeed" class="mab">
  1369. <!-- <el-input v-model="formdata3.value.rq" id="日期" @keydown="ent1($event)" @blur="getJtbhsubmit()" :clearable="true" style="width: 100px;" /> -->
  1370. <el-date-picker
  1371. v-model="formdata3.value.rq"
  1372. type="datetime"
  1373. format="YYYY/MM/DD"
  1374. value-format="YYYY-MM-DD"
  1375. @keydown="ent1($event)"
  1376. />
  1377. </el-form-item>
  1378. </el-col>
  1379. <el-col :span="6">
  1380. <el-form-item label="机器:" prop="flatFeed" class="mab">
  1381. <el-input v-model="formdata3.value.sczl_jtbh" id="机器" @keydown="ent1($event)" @blur="getJtbhsubmit()" :clearable="true" style="width: 100px;" />
  1382. </el-form-item>
  1383. </el-col>
  1384. <el-col :span="7">
  1385. <el-form-item label="开工时间:" prop="flatFeed" class="mab">
  1386. <!-- <el-input v-model="formdata3.value.starttime" id="日期" @keydown="ent1($event)" @blur="getJtbhsubmit()" style="width: 100px;" /> -->
  1387. <!-- <el-date-picker
  1388. v-model="formdata3.value.starttime"
  1389. type="datetime"
  1390. format="YYYY/MM/DD hh:mm:ss"
  1391. value-format="YYYY-MM-DD h:m:s"
  1392. @keydown="ent1($event)"
  1393. /> -->
  1394. <el-date-picker
  1395. v-model="formdata3.value.starttime"
  1396. type="datetime"
  1397. placeholder="Pick a Date"
  1398. format="YYYY/MM/DD HH:mm:ss"
  1399. @keydown="ent1($event)"
  1400. />
  1401. </el-form-item>
  1402. </el-col>
  1403. <el-col :span="5" style="margin-top=0px; margin-bottom: 1px;">
  1404. <el-form-item label="流程单号" prop="id" style="margin-top=0px; margin-bottom: 1px;">
  1405. <el-input v-model="formdata3.value.num" id="流程单号" style="margin-top=0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="" />
  1406. </el-form-item>
  1407. </el-col>
  1408. </el-row>
  1409. <el-row :gutter="24">
  1410. <el-col :span="9">
  1411. <el-form-item label="上机时间:" prop="flatFeed" class="mab">
  1412. <!-- <el-input v-model="formdata3.value.sj1" id="日期" @keydown="ent1($event)" :clearable="true" style="width: 170px;" /> -->
  1413. <el-date-picker
  1414. v-model="formdata3.value.sj1"
  1415. type="datetime"
  1416. format="YYYY/MM/DD hh:mm:ss"
  1417. value-format="YYYY-MM-DD h:m:s"
  1418. @keydown="ent1($event)"
  1419. />
  1420. </el-form-item>
  1421. </el-col>
  1422. <el-col :span="6">
  1423. <el-form-item label="下机时间:" prop="flatFeed" class="mab">
  1424. <!-- <el-input v-model="formdata3.value.sj2" id="机器" @keydown="ent1($event)" :clearable="true" style="width: 170px;" /> -->
  1425. <el-date-picker
  1426. v-model="formdata3.value.sj2"
  1427. type="datetime"
  1428. format="YYYY/MM/DD hh:mm:ss"
  1429. value-format="YYYY-MM-DD h:m:s"
  1430. @keydown="ent1($event)"
  1431. />
  1432. </el-form-item>
  1433. </el-col>
  1434. </el-row>
  1435. <el-row :gutter="24">
  1436. <el-col :span="6">
  1437. <el-form-item label="墨色:" prop="flatFeed" class="mab">
  1438. <el-input v-model="formdata3.value.色度数" id="墨色" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  1439. </el-form-item>
  1440. </el-col>
  1441. <el-col :span="8">
  1442. <el-form-item label="加工联数:" prop="flatFeed" class="mab" >
  1443. <el-input v-model="formdata3.value.联数" id="加工联数" @keydown="ent1($event)" :clearable="true" style="width: 100px; margin-right: 30px;" />
  1444. </el-form-item>
  1445. </el-col>
  1446. <el-col :span="5">
  1447. <el-form-item label="产量:" prop="flatFeed" class="mab">
  1448. <el-input v-model="formdata3.value.产量" id="产量" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  1449. </el-form-item>
  1450. </el-col>
  1451. <el-col :span="5">
  1452. <el-form-item label="制程废品:" prop="flatFeed" class="mab">
  1453. <el-input v-model="formdata3.value.制程废品" id="制程废品" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  1454. </el-form-item>
  1455. </el-col>
  1456. </el-row>
  1457. <el-row :gutter="24">
  1458. <el-col :span="4">
  1459. <el-form-item label="制程次品:" prop="flatFeed" class="mab">
  1460. <el-input v-model="formdata3.value.制程次品" id="制程次品" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  1461. </el-form-item>
  1462. </el-col>
  1463. <el-col :span="4">
  1464. <el-form-item label="前工序废:" prop="flatFeed" class="mab" >
  1465. <el-input v-model="formdata3.value.前工序废" id="前工序废" @keydown="ent1($event)" :clearable="true" style="width: 100px; margin-right: 30px;" />
  1466. </el-form-item>
  1467. </el-col>
  1468. <el-col :span="5">
  1469. <el-form-item label="来料异常:" prop="flatFeed" class="mab">
  1470. <el-input v-model="formdata3.value.来料异常" id="来料异常" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  1471. </el-form-item>
  1472. </el-col>
  1473. <el-col :span="10">
  1474. <el-form-item label="换型类型:" prop="flatFeed" class="mab">
  1475. <el-input v-model="formdata3.value.换型类型" id="换型类型" disabled :clearable="true" style="width: 200px;" />
  1476. </el-form-item>
  1477. </el-col>
  1478. </el-row>
  1479. <el-row :gutter="30">
  1480. <el-col :span="5">
  1481. <el-form-item label="装版总工时:" prop="flatFeed" class="mab">
  1482. <el-input v-model="formdata3.value.装版工时" id="装版总工时" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  1483. </el-form-item>
  1484. </el-col>
  1485. <el-col :span="5">
  1486. <el-form-item label="装版补产工时:" prop="flatFeed" class="mab" >
  1487. <el-input v-model="formdata3.value.装版补产工时" id="装版补产工时" @keydown="ent1($event)" :clearable="true" style="width: 100px; margin-right: 30px;" />
  1488. </el-form-item>
  1489. </el-col>
  1490. <el-col :span="5">
  1491. <el-form-item label="打样总工时:" prop="flatFeed" class="mab">
  1492. <el-input v-model="formdata3.value.打样工时" id="打样工时" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  1493. </el-form-item>
  1494. </el-col>
  1495. <el-col :span="5">
  1496. <el-form-item label="打样补产工时:" prop="flatFeed" class="mab">
  1497. <el-input v-model="formdata3.value.打样补产工时" id="打样补产工时" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  1498. </el-form-item>
  1499. </el-col>
  1500. <el-col :span="4">
  1501. <el-form-item label="保养工时:" prop="flatFeed" class="mab">
  1502. <el-input v-model="formdata3.value.保养工时" id="保养工时" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  1503. </el-form-item>
  1504. </el-col>
  1505. </el-row>
  1506. <el-row :gutter="24">
  1507. <el-col :span="6">
  1508. <el-form-item label="异常总工时:" prop="flatFeed" class="mab">
  1509. <el-input v-model="formdata3.value.异常总工时" id="异常总工时" style="margin-top=0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="" />
  1510. </el-form-item>
  1511. </el-col>
  1512. <el-col :span="8">
  1513. <el-form-item label="异常类型:" prop="flatFeed" class="mab">
  1514. <el-input v-model="formdata3.value.异常类型" disabled id="异常类型" :clearable="true" style="width: 100px;" />
  1515. </el-form-item>
  1516. </el-col>
  1517. <el-col :span="5" style="margin-top=0px; margin-bottom: 1px;">
  1518. <el-form-item label="异常补贴工时" prop="id" style="margin-top=0px; margin-bottom: 1px;">
  1519. <el-input v-model="formdata3.value.异常补时" id="异常补贴工时" style="margin-top=0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="" />
  1520. </el-form-item>
  1521. </el-col>
  1522. </el-row>
  1523. <el-row :gutter="24">
  1524. <el-col :span="8">
  1525. <el-form-item label="通电时间:" prop="flatFeed" class="mab">
  1526. <el-input v-model="formdata3.value.通电工时" id="通电时间" @keydown="ent1($event)" :clearable="true" style="width: 100px;" />
  1527. </el-form-item>
  1528. </el-col>
  1529. <el-col :span="5" style="margin-top=0px; margin-bottom: 1px;">
  1530. <el-form-item label="定额代号" prop="id" style="margin-top=0px; margin-bottom: 1px;">
  1531. <el-input v-model="formdata3.value.dedh" id="定额代号" style="margin-top=0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="" />
  1532. </el-form-item>
  1533. </el-col>
  1534. <el-col :span="3" style="margin-top=0px; margin-bottom: 1px;">
  1535. <el-form-item label="码包" prop="id" style="margin-top=0px; margin-bottom: 1px;">
  1536. <el-input v-model="formdata3.value.码包" id="码包" style="margin-top=0px; margin-bottom: 1px;" @keydown="ent1($event)" placeholder="" />
  1537. </el-form-item>
  1538. </el-col>
  1539. </el-row>
  1540. <el-row :gutter="24">
  1541. <el-col :span="4">
  1542. <el-form-item label="码开始行:" prop="flatFeed" class="mab">
  1543. <el-input v-model="formdata3.value.码开始行" id="码开始行" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  1544. </el-form-item>
  1545. </el-col>
  1546. <el-col :span="4">
  1547. <el-form-item label="码结束行:" prop="flatFeed" class="mab" >
  1548. <el-input v-model="formdata3.value.码结束行" id="码结束行" @keydown="ent1($event)" :clearable="true" style="width: 100px; margin-right: 30px;" />
  1549. </el-form-item>
  1550. </el-col>
  1551. <el-col :span="5">
  1552. <el-form-item label="主电表:" prop="flatFeed" class="mab">
  1553. <el-input v-model="formdata3.value.主电表" id="主电表" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  1554. </el-form-item>
  1555. </el-col>
  1556. <el-col :span="10">
  1557. <el-form-item label="辅电表:" prop="flatFeed" class="mab">
  1558. <el-input v-model="formdata3.value.辅电表" id="辅电表" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  1559. </el-form-item>
  1560. </el-col>
  1561. </el-row>
  1562. <div style="display: flex;">
  1563. <div style="width: 131vh;">组员及分配比例</div>
  1564. <div style="width: 13vh;">特殊组员</div>
  1565. <div>拉料人员</div>
  1566. </div>
  1567. <el-row :gutter="10" style="margin-top: 1vh;">
  1568. <el-col :span="2">
  1569. <el-input v-model="formdata3.value.bzdh" id="bzdh" @keydown="ent1($event)" placeholder="" />
  1570. </el-col>
  1571. <el-col :span="2">
  1572. <el-input v-model="formdata3.value.组员1['编号']" id="bh1" @keydown="ent($event, 'bzdh', 'bh1', 'bh2')" @keyup.enter.native="GetYg($event, '1')" placeholder="" />
  1573. </el-col>
  1574. <el-col :span="2">
  1575. <el-input v-model="formdata3.value.组员2['编号']" id="bh2" @keydown="ent($event, 'bh1', 'bh2', 'bh3')" @keyup.enter.native="GetYg($event, '2')" placeholder="" />
  1576. </el-col>
  1577. <el-col :span="2">
  1578. <el-input v-model="formdata3.value.组员3['编号']" id="bh3" @keydown="ent($event, 'bh2', 'bh3', 'bh4')" @keyup.enter.native="GetYg($event, '3')" placeholder="" />
  1579. </el-col>
  1580. <el-col :span="2">
  1581. <el-input v-model="formdata3.value.组员4['编号']" id="bh4" @keydown="ent($event, 'bh3', 'bh4', 'bh5')" @keyup.enter.native="GetYg($event, '4')" placeholder="" />
  1582. </el-col>
  1583. <el-col :span="2">
  1584. <el-input v-model="formdata3.value.组员5['编号']" id="bh5" @keydown="ent($event, 'bh4', 'bh5', 'bh6')" @keyup.enter.native="GetYg($event, '5')" placeholder="" />
  1585. </el-col>
  1586. <el-col :span="2">
  1587. <el-input v-model="formdata3.value.组员6['编号']" id="bh6" @keydown="ent($event, 'bh5', 'bh6', 'bh7')" @keyup.enter.native="GetYg($event, '6')" placeholder="" />
  1588. </el-col>
  1589. <el-col :span="2">
  1590. <el-input v-model="formdata3.value.组员7['编号']" id="bh7" @keydown="ent($event, 'bh6', 'bh7', 'bh8')" @keyup.enter.native="GetYg($event, '7')" placeholder="" />
  1591. </el-col>
  1592. <el-col :span="2">
  1593. <el-input v-model="formdata3.value.组员8['编号']" id="bh8" @keydown="ent($event, 'bh7', 'bh8', 'bh9')" @keyup.enter.native="GetYg($event, '8')" placeholder="" />
  1594. </el-col>
  1595. <el-col :span="2">
  1596. <el-input v-model="formdata3.value.组员9['编号']" id="bh9" @keydown="ent($event, 'bh8', 'bh9', 'bh10')" @keyup.enter.native="GetYg($event, '9')" placeholder="" />
  1597. </el-col>
  1598. <el-col :span="2">
  1599. <el-input v-model="formdata3.value.组员10['编号']" id="bh10" @keydown="ent($event, 'bh9', 'bh10', 'bh11')" @keyup.enter.native="GetYg($event, '10')" placeholder="" />
  1600. </el-col>
  1601. <el-col :span="2">
  1602. <el-input v-model="formdata3.value.拉料['编号']" id="bh11" @keydown="ent($event, 'bh10', 'bh11', 'rate1')" @keyup.enter.native="GetYg($event, '11')" placeholder="" />
  1603. </el-col>
  1604. </el-row>
  1605. <el-row :gutter="10" style="margin-top: 10px;">
  1606. <el-col :span="2">
  1607. </el-col>
  1608. <el-col :span="2">
  1609. <el-input v-model="formdata3.value.组员1['姓名']" id="name1" placeholder="" />
  1610. </el-col>
  1611. <el-col :span="2">
  1612. <el-input v-model="formdata3.value.组员2['姓名']" id="name2" placeholder="" />
  1613. </el-col>
  1614. <el-col :span="2">
  1615. <el-input v-model="formdata3.value.组员3['姓名']" id="name3" placeholder="" />
  1616. </el-col>
  1617. <el-col :span="2">
  1618. <el-input v-model="formdata3.value.组员4['姓名']" id="name4" placeholder="" />
  1619. </el-col>
  1620. <el-col :span="2">
  1621. <el-input v-model="formdata3.value.组员5['姓名']" id="name5" placeholder="" />
  1622. </el-col>
  1623. <el-col :span="2">
  1624. <el-input v-model="formdata3.value.组员6['姓名']" id="name6" placeholder="" />
  1625. </el-col>
  1626. <el-col :span="2">
  1627. <el-input v-model="formdata3.value.组员7['姓名']" id="name7" placeholder="" />
  1628. </el-col>
  1629. <el-col :span="2">
  1630. <el-input v-model="formdata3.value.组员8['姓名']" id="name8" placeholder="" />
  1631. </el-col>
  1632. <el-col :span="2">
  1633. <el-input v-model="formdata3.value.组员9['姓名']" id="name9" placeholder="" />
  1634. </el-col>
  1635. <el-col :span="2">
  1636. <el-input v-model="formdata3.value.组员10['姓名']" id="name10" placeholder="" />
  1637. </el-col>
  1638. <el-col :span="2">
  1639. <el-input v-model="formdata3.value.拉料['姓名']" id="name11" placeholder="" />
  1640. </el-col>
  1641. </el-row>
  1642. <el-row :gutter="10" style="margin-top: 10px;">
  1643. <el-col :span="2">
  1644. </el-col>
  1645. <el-col :span="2">
  1646. <el-input v-model="formdata3.value.组员1['比例']" id="rate1" @keydown="ent($event, 'bh11', 'rate1', 'rate2')" placeholder="" />
  1647. </el-col>
  1648. <el-col :span="2">
  1649. <el-input v-model="formdata3.value.组员2['比例']" id="rate2" @keydown="ent($event, 'rate1', 'rate2', 'rate3')" placeholder="" />
  1650. </el-col>
  1651. <el-col :span="2">
  1652. <el-input v-model="formdata3.value.组员3['比例']" id="rate3" @keydown="ent($event, 'rate2', 'rate3', 'rate4')" placeholder="" />
  1653. </el-col>
  1654. <el-col :span="2">
  1655. <el-input v-model="formdata3.value.组员4['比例']" id="rate4" @keydown="ent($event, 'rate3', 'rate4', 'rate5')" placeholder="" />
  1656. </el-col>
  1657. <el-col :span="2">
  1658. <el-input v-model="formdata3.value.组员5['比例']" id="rate5" @keydown="ent($event, 'rate4', 'rate5', 'rate6')" placeholder="" />
  1659. </el-col>
  1660. <el-col :span="2">
  1661. <el-input v-model="formdata3.value.组员6['比例']" id="rate6" @keydown="ent($event, 'rate5', 'rate6', 'rate7')" placeholder="" />
  1662. </el-col>
  1663. <el-col :span="2">
  1664. <el-input v-model="formdata3.value.组员7['比例']" id="rate7" @keydown="ent($event, 'rate6', 'rate7', 'rate8')" placeholder="" />
  1665. </el-col>
  1666. <el-col :span="2">
  1667. <el-input v-model="formdata3.value.组员8['比例']" id="rate8" @keydown="ent($event, 'rate7', 'rate8', 'rate9')" placeholder="" />
  1668. </el-col>
  1669. <el-col :span="2">
  1670. <el-input v-model="formdata3.value.组员9['比例']" id="rate9" @keydown="ent($event, 'rate8', 'rate9', 'rate10')" placeholder="" />
  1671. </el-col>
  1672. <el-col :span="2">
  1673. <el-input v-model="formdata3.value.组员10['比例']" id="rate10" @keydown="ent($event, 'rate9', 'rate10', '工单编号')" placeholder="" />
  1674. </el-col>
  1675. <el-col :span="2">
  1676. </el-col>
  1677. </el-row>
  1678. <!-- </el-scrollbar> -->
  1679. <template #footer>
  1680. <div class="dialog-footer">
  1681. <el-button @click="closeDialog">取 消</el-button>
  1682. <el-button type="primary" @click="chanliangenterDialog">确 定</el-button>
  1683. </div>
  1684. </template>
  1685. </el-dialog>
  1686. <el-dialog v-model="MachineVisible" :before-close="closeMachineVisible" :title="type === '0' ? '新增' : '机台状态显示'"
  1687. destroy-on-close width="80%" style="height: 100%;">
  1688. <div class="button-container">
  1689. <button v-for="(item, index) in machineData" :key="index" class="custom-button" @click="handleButtonClick(item.设备编号)">
  1690. <img :src="`/src/assets/${item.状态}.png`" :alt="altText" style="max-width: 100%; height: auto;"/>
  1691. <span style="margin-top: 8px;">{{ item.设备编号 + ' - ' + item.设备名称 }}</span>
  1692. </button>
  1693. </div>
  1694. </el-dialog>
  1695. <el-dialog v-model="hesuanVisible" :before-close="closehesuanVisible" title="核算参数调整"
  1696. destroy-on-close width="80%" style="height: 100%;">
  1697. </el-dialog>
  1698. <Shebeizhuangtai
  1699. v-if="dialogSbyxgl"
  1700. v-model="dialogSbyxgl"
  1701. :title="titinfo"
  1702. :formData="formData"
  1703. />
  1704. </el-main>
  1705. </el-container>
  1706. </el-container>
  1707. </div>
  1708. </template>
  1709. <script setup>
  1710. import {
  1711. createCompany,
  1712. deleteCompany,
  1713. deleteCompanyByIds,
  1714. updateCompany,
  1715. findCompany,
  1716. getCompanyList
  1717. } from '@/api/company'
  1718. import {
  1719. facilityTab,
  1720. facilitychanLiang,
  1721. facilityInspect,
  1722. facilityProduction,
  1723. facilityTeam,
  1724. facilityMachineList,
  1725. facilitySpotCheckItem,
  1726. facilityInspectionItem,
  1727. reportProduceInfo,
  1728. reportName,
  1729. reportInfo,
  1730. reportMachineMac,
  1731. facilityWorklist,
  1732. setProcessStatus,
  1733. submitDailyProduction,
  1734. facilityDetail,
  1735. inspectionRecord,
  1736. getYg,
  1737. facilityProcedure,
  1738. facilityPrintGetTab,
  1739. facilityPrintDetail,
  1740. ProcessInspectionRecordsItem,
  1741. MachineDetailList,
  1742. ComplaintRecord,
  1743. remodelGetTab,
  1744. ModelChangeRecord,
  1745. MachineChanliangDetail,
  1746. chanliangEdit,
  1747. productionGdmc,
  1748. productionYjmc,
  1749. ChanliangDel,
  1750. ChanliangAdd,
  1751. MachineChanliangDetailEdit,
  1752. ChanliangWorkorder,
  1753. ChanliangPrintDetail,
  1754. ChanliangProcessDetail,
  1755. EmployeeData,
  1756. RemodelDetail,
  1757. AdditionalInspectionRecordAdd,
  1758. ProcessInspectionRecordsItemAdd
  1759. } from '@/api/jixiaoguanli/jitairibaobiao'
  1760. import {
  1761. FieldInspectionRecord
  1762. } from "@/api/mes/job";
  1763. import Shebeizhuangtai from '@/view/performance/09-workOrderVerification/componets/shebeizhuangtai.vue'
  1764. // 全量引入格式化工具 请按需保留
  1765. import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
  1766. import { Layout, LayoutContent, LayoutHeader, LayoutSider } from '@arco-design/web-vue'
  1767. import { ElMessage, ElMessageBox } from 'element-plus'
  1768. import { ref, reactive } from 'vue'
  1769. import { useUserStore } from '@/pinia/modules/user'
  1770. const userStore = useUserStore()
  1771. const sys_id='['+userStore.userInfo.userName+'/'+userStore.userInfo.nickName+']'
  1772. defineOptions({
  1773. name: 'Company'
  1774. })
  1775. const DelType = ref(false)
  1776. const AddType = ref(false)
  1777. const gytableData = ref([])
  1778. const drzcDatas =ref([])
  1779. const detailData = reactive([])
  1780. const treeData=ref([])
  1781. const yinbantreeData=ref([])
  1782. let dianjiantreeData;
  1783. let JTMC=ref()
  1784. let date=ref()
  1785. let titinfo=ref()
  1786. let JTMCOn=ref()
  1787. let showbutton=ref()
  1788. let dateOn=ref()
  1789. const activName = ref('first')
  1790. let productCode=ref()
  1791. const sbzyData = reactive([])
  1792. const FPData = reactive([])
  1793. const CLMXData = reactive([])
  1794. let JYData = reactive([])
  1795. const selectData = ref([])
  1796. const handleNodeClick = (nodeData,node) => {
  1797. //存放当前节点的nodeId
  1798. if (nodeData.level === 1) {
  1799. console.log(node.label); // 第一级节点
  1800. CJMC.value=node.label
  1801. showbutton.value=true
  1802. JTMCOn.value=false
  1803. dateOn.value=false
  1804. MachinelList()
  1805. DelType.value = false
  1806. AddType.value = false
  1807. // MachineVisible.value=true
  1808. } else if (nodeData.level === 2) {
  1809. console.log(node.label); // 第二级节点
  1810. JTMC=node.label.split("-")[0]
  1811. JTMCOn.value=true
  1812. dateOn.value=false
  1813. showbutton.value=false
  1814. FacilityProduction()
  1815. FacilityWorklist()
  1816. // FacilityTeam(JTMC)
  1817. // console.log('123')
  1818. // console.log(JTMC)
  1819. DelType.value = false
  1820. AddType.value = false
  1821. } else if (nodeData.level === 3) {
  1822. JTMC=nodeData.machineName.split("-")[0]
  1823. JTMCOn.value=false
  1824. dateOn.value=true
  1825. date=node.label
  1826. gytableData.value=[]
  1827. drzcDatas.value=[]
  1828. columnNames=[]
  1829. drzcData=[]
  1830. showbutton.value=false
  1831. FacilityInspect()
  1832. FacilitychanLiang()
  1833. DelType.value = true
  1834. AddType.value = true
  1835. // FacilityTeam(JTMC)
  1836. // InspectionRecord()
  1837. // FacilityDetail()
  1838. console.log(node.label); // 第三级节点
  1839. }
  1840. }
  1841. const MachineVisible = ref(false)
  1842. const machineData = reactive([])
  1843. const MachinelList = async () => {
  1844. const response = await MachineDetailList({workshop:CJMC.value});
  1845. if (response.code === 0) {
  1846. machineData.splice(0, machineData.length, ...response.data);
  1847. console.log(machineData)
  1848. // return require(`@/assets/${machineData.状态}.png`);
  1849. // MachineVisible.value=true
  1850. }
  1851. }
  1852. //设置机台状态
  1853. function handleButtonClick(deviceId) {
  1854. console.log(deviceId);
  1855. MachineVisible.value=false
  1856. // dialogSbyxgl.value=true
  1857. JTMC=deviceId.split("-")[0]
  1858. // JTMCOn.value=true
  1859. // dateOn.value=false
  1860. console.log(JTMC)
  1861. GetdialogSbyxgl()
  1862. // GetdialogSbyxgl(deviceId)
  1863. }
  1864. const GetdialogSbyxgl = async () => {
  1865. const response = await facilityProduction({machine:JTMC});
  1866. if (response.code === 0) {
  1867. console.log(response)
  1868. // 填充formData对象的基本字段
  1869. // formData.value.工单编号 = response.data.工单编号;
  1870. // formData.value.印件编号 = response.data.印件号;
  1871. // formData.value.工序名称 = response.data.工序名称;
  1872. // formData.value.产品名称 = response.data.产品名称;
  1873. // formData.value.班组 = response.data.班组编号;
  1874. formData.value.工单编号 = response.data.工单编号;
  1875. formData.value.印件号 = response.data.印件号;
  1876. formData.value.工序号 = response.data.工序名称.substring(0,2);
  1877. formData.value.工序名称 = response.data.工序名称;
  1878. formData.value.产品名称 = response.data.产品名称;
  1879. formData.value.班组Id=response.data.班组Id
  1880. formData.value.machine=JTMC
  1881. formData.value.状态=response.data.状态
  1882. let time = new Date();
  1883. time.setDate(time.getDate() - 0); // 今天的前N天的日期,N自定义
  1884. titinfo = `${time.getFullYear()}-${time.getMonth() + 1}-${time.getDate()}`;
  1885. titinfo+='【'+JTMC+response.data.工单编号+response.data.产品名称+'】'+response.data.工序名称
  1886. let sczl_bhkey=''
  1887. let sczl_namekey=''
  1888. if (response.data.班组成员) {
  1889. for (let i = 0; i < Math.min(Object.keys(response.data.班组成员).length, 6); i++) {
  1890. sczl_bhkey=`sczl_bh${i+1}`
  1891. sczl_namekey=`sczl_name${i+1}`
  1892. formData.value[sczl_bhkey] = response.data.班组成员[i]['编号'];
  1893. formData.value[sczl_namekey] = response.data.班组成员[i]['姓名'];
  1894. console.log(response.data.班组成员[i]['编号'])
  1895. classbz.value[i]=response.data.班组成员[i]['编号']
  1896. }
  1897. }
  1898. formData.value.class=classbz.value.join(',')
  1899. console.log(formData.value.class)
  1900. formData.value.JTMC=JTMC
  1901. const responses = await MachineDetailList({workshop:'胶印车间'});
  1902. if(responses.code===0){
  1903. responses.data.map(item=>{
  1904. if(item.设备编号==JTMC){
  1905. formData.value.status=item.状态
  1906. }
  1907. })
  1908. }
  1909. // console.log(formData.value.工单编号)
  1910. }
  1911. FacilityWorklist()
  1912. onstatus()
  1913. }
  1914. // const getImagePath = async (machineData.状态) => {
  1915. // return require(`@/assets/${status}.png`);
  1916. // }
  1917. const classbz=ref([])
  1918. const GDBH=ref()
  1919. //当前生产订单
  1920. const FacilityProduction = async () => {
  1921. const response = await facilityProduction({machine:JTMC});
  1922. if (response.code === 0) {
  1923. console.log(response)
  1924. // 填充formData对象的基本字段
  1925. // formData.value.工单编号 = response.data.工单编号;
  1926. // formData.value.印件编号 = response.data.印件号;
  1927. // formData.value.工序名称 = response.data.工序名称;
  1928. // formData.value.产品名称 = response.data.产品名称;
  1929. // formData.value.班组 = response.data.班组编号;
  1930. formData.value.工单编号 = response.data.工单编号;
  1931. formData.value.印件号 = response.data.印件号;
  1932. formData.value.工序号 = response.data.工序名称.substring(0,2);
  1933. formData.value.工序名称 = response.data.工序名称;
  1934. formData.value.产品名称 = response.data.产品名称;
  1935. formData.value.班组Id=response.data.班组Id
  1936. formData.value.machine=JTMC
  1937. formData.value.状态=response.data.状态
  1938. let sczl_bhkey=''
  1939. let sczl_namekey=''
  1940. if (response.data.班组成员) {
  1941. for (let i = 0; i < Math.min(Object.keys(response.data.班组成员).length, 6); i++) {
  1942. sczl_bhkey=`sczl_bh${i+1}`
  1943. sczl_namekey=`sczl_name${i+1}`
  1944. formData.value[sczl_bhkey] = response.data.班组成员[i]['编号'];
  1945. formData.value[sczl_namekey] = response.data.班组成员[i]['姓名'];
  1946. console.log(response.data.班组成员[i]['编号'])
  1947. classbz.value[i]=response.data.班组成员[i]['编号']
  1948. }
  1949. }
  1950. formData.value.class=classbz.value.join(',')
  1951. console.log(formData.value.class)
  1952. formData.value.JTMC=JTMC
  1953. const responses = await MachineDetailList({workshop:'胶印车间'});
  1954. if(responses.code===0){
  1955. responses.data.map(item=>{
  1956. if(item.设备编号==JTMC){
  1957. formData.value.status=item.状态
  1958. }
  1959. })
  1960. }
  1961. // console.log(formData.value.工单编号)
  1962. }
  1963. // getTableData()
  1964. }
  1965. let CJMC=ref()
  1966. //设备工作清单
  1967. const FacilityWorklist = async () => {
  1968. const response = await facilityWorklist({machine:JTMC});
  1969. if (response.code === 0) {
  1970. console.log(response)
  1971. sbzyData.splice(0, sbzyData.length, ...response.data);
  1972. const res = await facilityProcedure({ Gd_gdbh: sbzyData[0]['工单编号|质量信息'].substring(0, 7) })
  1973. formData.value.productCode= response.data[0]['产品代号']
  1974. console.log(res)
  1975. if (res.code === 0) {
  1976. selectData.value = res.data
  1977. }
  1978. console.log('22222222')
  1979. FacilityTeam(JTMC)
  1980. }
  1981. }
  1982. //检验记录
  1983. const InspectionRecord = async () => {
  1984. console.log(formData.value.班组)
  1985. const response = await inspectionRecord({machine:JTMC,Gd_gdbh:formData.value.工单编号,team:BZMC.value});
  1986. // const response = await inspectionRecord({machine:'JY01#',Gd_gdbh:'2311114',team:'A班'});
  1987. // const response = await inspectionRecord({machine:'JY01#',Gd_gdbh:'2312191',team:'A班'});
  1988. console.log(response)
  1989. if(response.code==0){
  1990. // 提取 inspectiontime 作为列名
  1991. // Extract inspectiontime as columnNames
  1992. columnNames = response.data.inspectiontime;
  1993. // Populate drzcData with row data
  1994. for (const key in response.data) {
  1995. if (key !== 'inspectiontime') {
  1996. const item = response.data[key];
  1997. const rowData = {
  1998. '工单编号': item['工单编号'],
  1999. '印件号': item['印件号'],
  2000. '工序名称': item['工序名称'],
  2001. '检验项目': item['检验项目']
  2002. };
  2003. // Initialize time columns with '—'
  2004. columnNames.forEach(time => {
  2005. rowData[time] = '';
  2006. });
  2007. // Split inspectresult and fill the corresponding time columns
  2008. const results = item['inspectresult'].split(',');
  2009. results.forEach(result => {
  2010. if (columnNames.includes(result)) {
  2011. rowData[result] = '√';
  2012. }else{rowData[result] = ''}
  2013. });
  2014. // Add the row data to drzcData
  2015. JYData.push(rowData);
  2016. }
  2017. }
  2018. console.log(JYData);
  2019. }
  2020. }
  2021. //当班产量明细
  2022. const FacilityDetail = async () => {
  2023. console.log('123123')
  2024. console.log(JTMC)
  2025. console.log('123123')
  2026. console.log(formData.value.工单编号)
  2027. console.log('123123')
  2028. console.log(formData.value.班组)
  2029. formData.value.production_now=0
  2030. formData.value.production_all=0
  2031. // const response = await facilityDetail({ machine: JTMC, Gd_gdbh: formData.value.工单编号, team: formData.value.班组 });
  2032. const response = await facilityDetail({ machine: JTMC, Gd_gdbh: formData.value.工单编号, team: BZMC.value });
  2033. // const response = await facilityDetail({ machine: JTMC, Gd_gdbh: '2311114', team:'A班' });
  2034. if (response.code === 0) {
  2035. console.log('123123')
  2036. console.log(response);
  2037. CLMXData.splice(0, CLMXData.length, ...Object.values(response.data));
  2038. formData.value.production_now=response.data[0].产量
  2039. formData.value.production_all=response.data.total.产量
  2040. }
  2041. };
  2042. // 验证规则
  2043. const rule = reactive({
  2044. })
  2045. const searchRule = reactive({
  2046. createdAt: [
  2047. { validator: (rule, value, callback) => {
  2048. if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
  2049. callback(new Error('请填写结束日期'))
  2050. } else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
  2051. callback(new Error('请填写开始日期'))
  2052. } else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
  2053. callback(new Error('开始日期应当早于结束日期'))
  2054. } else {
  2055. callback()
  2056. }
  2057. }, trigger: 'change' }
  2058. ],
  2059. })
  2060. const elFormRef = ref()
  2061. const elSearchFormRef = ref()
  2062. // =========== 表格控制部分 ===========
  2063. const page = ref(1)
  2064. const total = ref(0)
  2065. const pageSize = ref(10)
  2066. const tableData = ref([])
  2067. const searchInfo = ref({})
  2068. const xunchaVisible = ref(false)
  2069. const xunchatreeData=ref([{label: '现场巡查记录',} ])
  2070. // 重置
  2071. const onReset = () => {
  2072. searchInfo.value = {}
  2073. getTableData()
  2074. }
  2075. // 搜索
  2076. const onSubmit = () => {
  2077. elSearchFormRef.value?.validate(async(valid) => {
  2078. if (!valid) return
  2079. page.value = 1
  2080. pageSize.value = 10
  2081. getTableData()
  2082. })
  2083. }
  2084. // 分页
  2085. const handleSizeChange = (val) => {
  2086. pageSize.value = val
  2087. getTableData()
  2088. }
  2089. // 修改页面容量
  2090. const handleCurrentChange = (val) => {
  2091. page.value = val
  2092. getTableData()
  2093. }
  2094. const getTableData = async () => {
  2095. const response = await facilityTab();
  2096. if (response.code === 0 && response.data) {
  2097. const workshops = response.data; // 车间数据
  2098. // 在推送新项之前将 treeData 重置为空数组
  2099. treeData.value = []; // 使用 .value 访问响应式引用的值
  2100. for (const workshopName in workshops) {
  2101. const workshopNode = {
  2102. label: workshopName,
  2103. children: [],
  2104. level: 1 // 添加层级属性
  2105. };
  2106. const machines = workshops[workshopName]; // 车间下的机器
  2107. for (const machineName in machines) {
  2108. const machineNode = {
  2109. label: machineName,
  2110. children: [],
  2111. level: 2, // 添加层级属性
  2112. parentNode: workshopNode
  2113. };
  2114. // Now that machineNode is initialized, you can refer to it
  2115. const childrenNodes = machines[machineName].map(dateTime => {
  2116. const dateOnly = dateTime.split(' ')[0];
  2117. return {
  2118. label: dateOnly,
  2119. machineName:machineName,
  2120. level: 3, // 添加层级属性
  2121. parentNode: machineNode
  2122. };
  2123. });
  2124. // Assign the childrenNodes to the machineNode's children property
  2125. machineNode.children = childrenNodes;
  2126. // Finally, push the machineNode to the workshopNode's children array
  2127. workshopNode.children.push(machineNode);
  2128. }
  2129. // 将 workshopNode 推送到响应式 treeData 数组
  2130. treeData.value.push(workshopNode);
  2131. }
  2132. }
  2133. };
  2134. // 查询
  2135. const getTableList = async() => {
  2136. const table = await getCompanyList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
  2137. if (table.code === 0) {
  2138. tableData.value = table.data.list
  2139. total.value = table.data.total
  2140. page.value = table.data.page
  2141. pageSize.value = table.data.pageSize
  2142. }
  2143. }
  2144. getTableData()
  2145. const type2 = ref('')
  2146. //新增
  2147. function onADD(){
  2148. type2.value="create"
  2149. MachineChanliang(uid.value)
  2150. }
  2151. //删除
  2152. function onDel() {
  2153. Chanliangdel()
  2154. }
  2155. // 日产量上报删除
  2156. const Chanliangdel = async() => {
  2157. const res = await ChanliangDel({ UniqId:uid.value})
  2158. if (res.code === 0) {
  2159. ElMessage({
  2160. type: 'success',
  2161. message: '成功'
  2162. })
  2163. FacilitychanLiang()
  2164. }else{
  2165. ElMessage({
  2166. type: 'error',
  2167. message: '失败'
  2168. })
  2169. }
  2170. }
  2171. //制程检验
  2172. const zhichengstatus=ref(false)
  2173. const xunchaData = ref([]);
  2174. const zhichengVisible = ref(false)
  2175. const zhichengtreeData=ref([{
  2176. label: '首件与过程确认'
  2177. },{
  2178. label: '机台检验'
  2179. },{
  2180. label: 'IPQC检验'
  2181. }])
  2182. const onzhicheng = async () => {
  2183. zhichengstatus.value=false
  2184. xunchaData.value=[]
  2185. const response = await reportProduceInfo({machine:JTMC.split("#")[0]});
  2186. if (response.code === 0) {
  2187. xunchaData.value.order=response.data.order
  2188. xunchaData.value.yjno=response.data.yjno
  2189. xunchaData.value.product_name=response.data.product_name
  2190. xunchaData.value.gxmc=response.data.gxmc
  2191. xunchaData.value.lcdh=0
  2192. xunchaData.value.sczl_bh=''
  2193. xunchaData.value.sczl_name=''
  2194. xunchaData.value.remark=''
  2195. zhichengVisible.value = true;
  2196. }
  2197. }
  2198. const category =ref()
  2199. const zhibiaoselectData=ref([])
  2200. const fujiaselectData=ref([])
  2201. const zhichengNodeClick = (node, check) => {
  2202. if(node.label){
  2203. zhichengstatus.value=true
  2204. category.value=node.label
  2205. processInspectionRecordsItem()
  2206. }
  2207. };
  2208. const processInspectionRecordsItem = async (value) => {
  2209. const response = await ProcessInspectionRecordsItem({ process: xunchaData.value.gxmc });
  2210. if (response.code === 0) {
  2211. zhibiaoselectData.value=response.data.首件.指标检验.map(item=>{
  2212. item.notjc=true;
  2213. item.zc=false;
  2214. item.yc=false;
  2215. item.remark=''
  2216. item.category=category.value
  2217. item.workOrder=xunchaData.value.order
  2218. item.yjno=xunchaData.value.yjno
  2219. item.flow=xunchaData.value.lcdh
  2220. item.team=BZMC.value
  2221. item.machine=JTMC.split("#")[0]
  2222. item.selected = '不检测';
  2223. return item
  2224. })
  2225. fujiaselectData.value=response.data.首件.附加.map(item=>{
  2226. item.notjc=true;
  2227. item.workOrder=xunchaData.value.order
  2228. item.yjno=xunchaData.value.yjno
  2229. item.flow=xunchaData.value.lcdh
  2230. item.machine=JTMC.split("#")[0]
  2231. return item
  2232. })
  2233. }
  2234. };
  2235. const zhichengDialog = async () => {
  2236. console.log(fujiaselectData.value)
  2237. let arr =[]
  2238. zhibiaoselectData.value.map(item=>{
  2239. if(item.zc==true){
  2240. item.result='合格'
  2241. item.item=item.检验项目
  2242. item.instrument=item.检测方法
  2243. item.standard=item.相关标准
  2244. delete item.notjc
  2245. delete item.zc
  2246. delete item.yc
  2247. delete item.检验项目
  2248. delete item.检测方法
  2249. delete item.相关标准
  2250. delete item.检验频率
  2251. arr.push(item)
  2252. return item
  2253. }
  2254. if(item.yc==true){
  2255. item.result='不合格'
  2256. item.item=item.检验项目
  2257. item.instrument=item.检测方法
  2258. item.standard=item.相关标准
  2259. delete item.notjc
  2260. delete item.zc
  2261. delete item.yc
  2262. delete item.检验项目
  2263. delete item.检测方法
  2264. delete item.相关标准
  2265. delete item.检验频率
  2266. arr.push(item)
  2267. return item
  2268. }
  2269. if(item.notjc==true){
  2270. item.result='不检测'
  2271. item.item=item.检验项目
  2272. item.instrument=item.检测方法
  2273. item.standard=item.相关标准
  2274. delete item.notjc
  2275. delete item.zc
  2276. delete item.yc
  2277. delete item.检验项目
  2278. delete item.检测方法
  2279. delete item.相关标准
  2280. delete item.检验频率
  2281. // arr.push(item)
  2282. return item
  2283. }
  2284. })
  2285. let arrs=[]
  2286. let fujiastatus=0
  2287. fujiaselectData.value.map(item=>{
  2288. if(item.notjc==true){
  2289. return item
  2290. }else{
  2291. fujiastatus=1
  2292. item.remark=item.缺陷备注
  2293. delete item.notjc
  2294. delete item.缺陷备注
  2295. delete item.编号
  2296. arrs.push(item)
  2297. return item
  2298. }
  2299. })
  2300. if(fujiastatus==1){
  2301. const responses = await AdditionalInspectionRecordAdd(arrs);
  2302. fujiastatus=0
  2303. }
  2304. // const response = await ProcessInspectionRecordsItemAdd(arr);
  2305. const response = await ProcessInspectionRecordsItemAdd(zhibiaoselectData.value);
  2306. // const responses = await AdditionalInspectionRecordAdd(zhibiaoselectData.value);
  2307. if (response.code === 0) {
  2308. ElMessage({
  2309. type: 'success',
  2310. message: '成功'
  2311. })
  2312. zhichengVisible.value=false
  2313. zhibiaoselectData.value=[]
  2314. fujiaselectData.value=[]
  2315. }
  2316. }
  2317. const closezhichengDialog = async () => {
  2318. zhichengVisible.value=false
  2319. }
  2320. //设置机台状态
  2321. const dialogSbyxgl=ref(false)
  2322. function onstatus() {
  2323. dialogSbyxgl.value=true
  2324. SetMachineStatus()
  2325. // ReportProduceInfo()
  2326. }
  2327. //设置机台状态
  2328. const SetMachineStatus = async () => {
  2329. // const response = await setMachineStatus({
  2330. // machine:'JY03',
  2331. // gy_name:'02-胶印〖白、黑、哑油【预干】、NT光油',
  2332. // order:'2311114',
  2333. // yjno:'1',
  2334. // class:'ZM00545,ZM01351,ZM01170',
  2335. // status:'维修',
  2336. // production_now:'',
  2337. // production_all:'',
  2338. // });
  2339. // if (response.code === 0) {
  2340. // }
  2341. }
  2342. //客诉记录
  2343. const complaintsShow = ref(false)
  2344. const complaintsData = reactive([])
  2345. function oncomplaints() {
  2346. Complaints()
  2347. }
  2348. // 客诉记录表格填充
  2349. const Complaints = async() => {
  2350. // console.log(sbzyData[0].产品代号)
  2351. // console.log(sbzyData[0].产品代号)
  2352. // console.log(sbzyData[0].产品代号)
  2353. // const res = await ComplaintRecord({productCode :cpcode.value})
  2354. if(finishedcode.value==null){
  2355. ElMessage({
  2356. type: 'error',
  2357. message: '请先选择产品',
  2358. })
  2359. return
  2360. }
  2361. const res = await ComplaintRecord({productCode :finishedcode.value})
  2362. if (res.code === 0) {
  2363. if(res.data==null){
  2364. ElMessage({
  2365. type: 'error',
  2366. message: '此产品暂无客诉记录',
  2367. })
  2368. }else{
  2369. complaintsData.splice(0, complaintsData.length, ...res.data);
  2370. console.log(complaintsData);
  2371. console.log(complaintsData[0].产品编号)
  2372. selectedRowData.value=complaintsData[0]
  2373. console.log(selectedRowData)
  2374. complaintsShow.value=true
  2375. }
  2376. }
  2377. }
  2378. const selectedRowData = ref({
  2379. })
  2380. //客诉表格单击
  2381. const complaintshandle = (val, row) => {
  2382. console.log(val)
  2383. selectedRowData.value=val
  2384. };
  2385. //换型清场
  2386. const huanxingVisible = ref(false)
  2387. const huanxingtreeData=ref([])
  2388. const huanxingselectData = ref([])
  2389. const huanxingstatus=ref(false)
  2390. const activNames=ref('first')
  2391. function onClear() {
  2392. huanxingVisible.value=true
  2393. RemodelGetTab()
  2394. }
  2395. function onClear2() {
  2396. console.log(formData.value.工单编号)
  2397. console.log(BZMC)
  2398. }
  2399. const RemodelGetTab = async() => {
  2400. const response = await remodelGetTab()
  2401. let arr=[]
  2402. if (response.code === 0) {
  2403. for(let key in response.data){
  2404. if(response.data[key][0]){
  2405. let children =[]
  2406. for (let i = 0; i < response.data[key].length; i++) {
  2407. children.push({label:response.data[key][i],machine:key})
  2408. }
  2409. arr.push({
  2410. label:key,
  2411. children:children
  2412. })
  2413. console.log(response.data[key].length)
  2414. }else{
  2415. arr.push({label:key})
  2416. }
  2417. }
  2418. huanxingtreeData.value=arr
  2419. }else{
  2420. ElMessage({
  2421. type: 'error',
  2422. message: '请注意, 工单编号输入空置, 除非有特殊需要!'
  2423. })
  2424. }
  2425. }
  2426. const huanxingNodeClick = (node) => {
  2427. //存放当前节点的nodeId
  2428. //存放当前节点的nodeId
  2429. if(node.machine){
  2430. // console.log(node.label.split('/')[1])
  2431. huanxingstatus.value=true
  2432. remodelDetail(node.label.split('/')[1])
  2433. modelChangeRecord(node.machine)
  2434. }else{
  2435. console.log('2')
  2436. }
  2437. }
  2438. const huanxingData = ref({})
  2439. const remodelDetail = async (val) => {
  2440. const response = await RemodelDetail({UniqId:val});
  2441. if (response.code === 0) {
  2442. huanxingData.value=response.data
  2443. if(response.data.项目1==1){
  2444. huanxingData.value.项目1=true
  2445. }else{
  2446. huanxingData.value.项目1=false
  2447. }
  2448. if(response.data.项目2==1){
  2449. huanxingData.value.项目2=true
  2450. }else{
  2451. huanxingData.value.项目2=false
  2452. }
  2453. if(response.data.项目3==1){
  2454. huanxingData.value.项目3=true
  2455. }else{
  2456. huanxingData.value.项目3=false
  2457. }
  2458. if(response.data.项目4==1){
  2459. huanxingData.value.项目4=true
  2460. }else{
  2461. huanxingData.value.项目4=false
  2462. }
  2463. if(response.data.项目5==1){
  2464. huanxingData.value.项目5=true
  2465. }else{
  2466. huanxingData.value.项目5=false
  2467. }
  2468. }else{
  2469. ElMessage({
  2470. type: 'error',
  2471. message: '请注意, 工单编号输入空置, 除非有特殊需要!'
  2472. })
  2473. }
  2474. }
  2475. const modelChangeRecord = async (val) => {
  2476. const response = await ModelChangeRecord({machine:val});
  2477. if (response.code === 0) {
  2478. huanxingselectData.value=response.data
  2479. }
  2480. }
  2481. import { nextTick } from 'vue';
  2482. //设备点检
  2483. function ondianjian() {
  2484. getSpotCheckItem(JTMC).then(treeData => {
  2485. if (treeData) {
  2486. // 如果获取成功,treeData 就是我们需要的树形结构数据
  2487. dianjiantreeData = treeData;
  2488. console.log('222');
  2489. console.log(dianjiantreeData);
  2490. // 使用 nextTick 来确保在更新 dianjianVisible 后立即刷新视图
  2491. nextTick(() => {
  2492. dianjianVisible.value = true;
  2493. });
  2494. // 这里可以处理treeData,例如将其赋值给某个状态管理变量或者用于渲染界面
  2495. } else {
  2496. // 如果获取失败,则treeData为null
  2497. console.log('获取巡检项目树形结构数据失败');
  2498. }
  2499. });
  2500. }
  2501. const onyinban = async() => {
  2502. console.log(formData.value.productCodes)
  2503. const res = await facilityPrintGetTab({productCode:formData.value.productCode})
  2504. if(res.code===0){
  2505. yinbantreeData.value=[{
  2506. label:'产品印版库',
  2507. children:res.data.map(item=>({
  2508. label:item.印版分类,
  2509. code:item.编号
  2510. }))
  2511. }]
  2512. console.log(res.data.map(item=>({
  2513. label:item.印版分类,
  2514. code:item.编号
  2515. })))
  2516. yinbanVisible.value = true;
  2517. }
  2518. }
  2519. const onxuncha = async() => {
  2520. xunchaVisible.value=true
  2521. }
  2522. //获取设备点检->检验项目
  2523. // const FacilityInspectionItem = async (value) => {
  2524. // try {
  2525. // // 调用接口获取巡检项目数据
  2526. // const response = await facilityInspectionItem({ unitName: value });
  2527. // // 检查接口返回的状态码
  2528. // if (response.code === 0) {
  2529. // dianjianselectData.splice(0, dianjianselectData.length, ...response.data.map(item=>{
  2530. // item.notjc=true;
  2531. // item.zc=false;
  2532. // item.yc=false;
  2533. // return item
  2534. // }))
  2535. // console.log(dianjianselectData)
  2536. // }
  2537. // } catch (error) {
  2538. // // 捕获并打印异常
  2539. // console.error("获取巡检项目数据出错:" + error);
  2540. // return null;
  2541. // }
  2542. // };
  2543. //获取设备点检->检验项目
  2544. const FacilityInspectionItem = async (value) => {
  2545. try {
  2546. // 调用接口获取巡检项目数据
  2547. const response = await facilityInspectionItem({ unitName: value ,machine:JTMC.split("#")[0]});
  2548. // 检查接口返回的状态码
  2549. if (response.code === 0) {
  2550. console.log(response)
  2551. dianjianselectData.splice(0, dianjianselectData.length, ...response.data.map(item=>{
  2552. item.notjc=true;
  2553. item.zc=false;
  2554. item.yc=false;
  2555. item.remark=''
  2556. item.unitName=value
  2557. item.team=BZMC.value
  2558. item.machine=JTMC
  2559. return item
  2560. }))
  2561. }
  2562. } catch (error) {
  2563. // 捕获并打印异常
  2564. console.error("获取巡检项目数据出错:" + error);
  2565. return null;
  2566. }
  2567. };
  2568. //机台印版领用->右侧详情
  2569. const facilityPrintDetailItem = async (value) => {
  2570. try {
  2571. // 调用接口获取巡检项目数据
  2572. // const response = await facilityPrintDetail({ workOrder: formData.value.工单编号,code:value,productCode:productCode.value });
  2573. const response = await facilityPrintDetail({ workOrder: formData.value.工单编号,code:value,productCode:formData.value.productCode });
  2574. // 检查接口返回的状态码
  2575. if (response.code === 0) {
  2576. console.log(response)
  2577. yinbanselectData.value=response.data
  2578. }
  2579. } catch (error) {
  2580. // 捕获并打印异常
  2581. console.error("获取数据出错:" + error);
  2582. return null;
  2583. }
  2584. };
  2585. //树形结构单机
  2586. const dianjianselectData = reactive([])
  2587. const yinbanselectData = ref([])
  2588. const xunchaselectData = ref([])
  2589. const dianjianNodeClick = (node, check, nodeData) => {
  2590. if (node.children && node.children.length > 0) {
  2591. // 点击的是父节点,且有子节点
  2592. // 执行相应的父节点单击事件处理逻辑
  2593. // 这里可以添加你想要的处理逻辑,比如展开/折叠节点等
  2594. } else {
  2595. // 点击的是子节点,或者没有子节点
  2596. // 执行相应的子节点单击事件处理逻辑
  2597. console.log(node.label)
  2598. console.log(JTMC.split("#")[0])
  2599. // FacilityInspectionItem({unitName:node.label ,machine:JTMC.split("#")[0]})
  2600. FacilityInspectionItem(node.label,)
  2601. }
  2602. };
  2603. const yinbanNodeClick = (node, check, nodeData) => {
  2604. if (node.children && node.children.length > 0) {
  2605. // 点击的是父节点,且有子节点
  2606. // 执行相应的父节点单击事件处理逻辑
  2607. // 这里可以添加你想要的处理逻辑,比如展开/折叠节点等
  2608. } else {
  2609. // 点击的是子节点,或者没有子节点
  2610. // 执行相应的子节点单击事件处理逻辑
  2611. facilityPrintDetailItem(node.code)
  2612. // console.log()
  2613. }
  2614. };
  2615. const xunchaNodeClick = (node, check, nodeData) => {
  2616. if(node){
  2617. fieldInspectionRecord()
  2618. }
  2619. }
  2620. const fieldInspectionRecord = async () => {
  2621. let time = new Date();
  2622. time.setDate(time.getDate() - 0); // 今天的前N天的日期,N自定义
  2623. time= `${time.getFullYear()}-${time.getMonth() + 1}-${time.getDate()}`;
  2624. console.log(time+' 08:30:00')
  2625. const response = await FieldInspectionRecord({ workOrder: formData.value.工单编号,team:BZMC.value,start:time+' 08:30:00' });
  2626. if (response.code === 0) {
  2627. xunchaselectData.value=response.data
  2628. }
  2629. }
  2630. let pandingfangfa=ref()
  2631. //检验项目单击
  2632. const dianjianhandle = (val, row) => {
  2633. try {
  2634. pandingfangfa.value = val.判定标准;
  2635. } catch (error) {
  2636. console.error('An error occurred:', error);
  2637. }
  2638. };
  2639. const notjcClick = (val) => {
  2640. console.log("不检测")
  2641. val.notjc==true
  2642. val.zc=false
  2643. val.yc==false
  2644. // try {
  2645. // if(val.notjc==false){
  2646. // val.zc=true
  2647. // }else{
  2648. // val.zc=false
  2649. // val.yc==false
  2650. // }
  2651. // } catch (error) {
  2652. // console.error('An error occurred:', error);
  2653. // }
  2654. };
  2655. const zcClick = (val) => {
  2656. console.log("合格")
  2657. val.notjc==false
  2658. val.zc=true
  2659. val.yc==false
  2660. // try {
  2661. // if(val.zc==false){
  2662. // val.zc=true
  2663. // }else{
  2664. // val.zc=false
  2665. // val.yc==false
  2666. // }
  2667. // } catch (error) {
  2668. // console.error('An error occurred:', error);
  2669. // }
  2670. };
  2671. const ycClick = (val) => {
  2672. console.log("不合格")
  2673. val.notjc==false
  2674. val.zc=false
  2675. val.yc==true
  2676. // try {
  2677. // if(val.yc==false){
  2678. // val.zc=true
  2679. // }else{
  2680. // val.zc=false
  2681. // val.notjc==false
  2682. // }
  2683. // } catch (error) {
  2684. // console.error('An error occurred:', error);
  2685. // }
  2686. };
  2687. const rowClassName = (row, column) => {
  2688. try {
  2689. if (row.unchecked) {
  2690. return 'row-yellow';
  2691. }
  2692. return '';
  2693. } catch (error) {
  2694. console.error('An error occurred:', error);
  2695. return '';
  2696. }
  2697. };
  2698. // 异步函数,用于获取指定设备的巡检项目,并且将结果格式化为树形结构数据
  2699. const getSpotCheckItem = async (machineName) => {
  2700. try {
  2701. // 调用接口获取巡检项目数据
  2702. const response = await facilitySpotCheckItem({ machine: machineName });
  2703. // 检查接口返回的状态码
  2704. if (response.code === 0) {
  2705. // 构建树形结构数据
  2706. const childrenData = Object.entries(response.data).map(([id, label]) => {
  2707. return {
  2708. id, // 子节点的唯一标识
  2709. label, // 子节点的标签
  2710. children: [] // 初始化子节点数组
  2711. };
  2712. });
  2713. // 创建包含父节点的树形结构数据
  2714. const treeData = [{
  2715. id: machineName, // 父节点的唯一标识
  2716. label: machineName, // 父节点的标签
  2717. children: childrenData // 子节点数据
  2718. }];
  2719. // 返回构建好的树形结构数据
  2720. return treeData;
  2721. } else {
  2722. // 如果接口返回的状态码不是0,打印错误信息
  2723. console.error("接口返回错误:" + response.msg);
  2724. return null;
  2725. }
  2726. } catch (error) {
  2727. // 捕获并打印异常
  2728. console.error("获取巡检项目数据出错:" + error);
  2729. return null;
  2730. }
  2731. };
  2732. // 班组人员及分配比例
  2733. const FacilityTeam = async (value) => {
  2734. const response = await facilityTeam({ machine: value });
  2735. if (response.code === 0) {
  2736. // formData.value.班组 = response.data[0]['班组号'];
  2737. BZMC.value=response.data[0]['班组号']
  2738. // if(response.data[0][2]){
  2739. // // console.log(response.data[0][2].split(' '));
  2740. // for (let i = 1; i <= 3; i++) {
  2741. // const sczl_bh = `sczl_bh${i}`;
  2742. // const sczl_name = `sczl_name${i}`;
  2743. // formData.value[sczl_bh] = response.data[0][i-1].split(' ')[0];
  2744. // formData.value[sczl_name] = response.data[0][i-1].split(' ')[1];
  2745. // }
  2746. // }
  2747. // if(response.data[0][0]){
  2748. // // console.log(response.data[0][2].split(' '));
  2749. // for (let i = 1; i <= 1; i++) {
  2750. // const sczl_bh = `sczl_bh${i}`;
  2751. // const sczl_name = `sczl_name${i}`;
  2752. // formData.value[sczl_bh] = response.data[0][i-1].split(' ')[0];
  2753. // formData.value[sczl_name] = response.data[0][i-1].split(' ')[1];
  2754. // }
  2755. // }
  2756. // if(response.data[0][1]){
  2757. // // console.log(response.data[0][2].split(' '));
  2758. // for (let i = 1; i <= 2; i++) {
  2759. // const sczl_bh = `sczl_bh${i}`;
  2760. // const sczl_name = `sczl_name${i}`;
  2761. // formData.value[sczl_bh] = response.data[0][i-1].split(' ')[0];
  2762. // formData.value[sczl_name] = response.data[0][i-1].split(' ')[1];
  2763. // }
  2764. // }
  2765. // if(response.data[0][3]){
  2766. // // console.log(response.data[0][2].split(' '));
  2767. // for (let i = 1; i <= 4; i++) {
  2768. // const sczl_bh = `sczl_bh${i}`;
  2769. // const sczl_name = `sczl_name${i}`;
  2770. // formData.value[sczl_bh] = response.data[0][i-1].split(' ')[0];
  2771. // formData.value[sczl_name] = response.data[0][i-1].split(' ')[1];
  2772. // }
  2773. // }
  2774. InspectionRecord()
  2775. FacilityDetail()
  2776. // 清空 bzData 数组
  2777. bzData.splice(0, bzData.length);
  2778. // 遍历接口返回的数据,并给每个对象添加 JTMC 属性
  2779. const updatedData = response.data.map(item => {
  2780. return { ...item, JTMC: value }; // 添加 JTMC 属性
  2781. });
  2782. // 将更新后的数据添加到 bzData 数组
  2783. bzData.push(...updatedData);
  2784. FPData.push(...updatedData)
  2785. return 1
  2786. }
  2787. };
  2788. //班组维护
  2789. function onBZ() {
  2790. FacilityTeam(JTMC)
  2791. fetchData()
  2792. detailShow.value=true
  2793. console.log('2222')
  2794. }
  2795. const currentBz ={}
  2796. const selectBz = async() => {
  2797. if(currentBz.value){
  2798. BZMC.value=currentBz.value.班组号
  2799. let sczl_bhkey=''
  2800. let sczl_namekey=''
  2801. if (currentBz.value) {
  2802. for (let i = 1; i <= 6; i++) {
  2803. sczl_bhkey=`sczl_bh${i}`
  2804. sczl_namekey=`sczl_name${i}`
  2805. formData.value[sczl_bhkey] = '';
  2806. formData.value[sczl_namekey] = '';
  2807. }
  2808. for (let i = 1; i <= Math.min(Object.keys(currentBz.value).length-4, 6); i++) {
  2809. sczl_bhkey=`sczl_bh${i}`
  2810. sczl_namekey=`sczl_name${i}`
  2811. console.log(currentBz.value[i-1].split(' '))
  2812. formData.value[sczl_bhkey] = currentBz.value[i-1].split(' ')[0];
  2813. formData.value[sczl_namekey] = currentBz.value[i-1].split(' ')[1];
  2814. classbz.value[i-1]=currentBz.value[i-1].split(' ')[0]
  2815. }
  2816. formData.value.class=classbz.value.join(',')
  2817. }
  2818. currentBz.value={}
  2819. }
  2820. }
  2821. // 下拉框选项数据
  2822. const dropdownOptions = ref([]);
  2823. // 选中的选项
  2824. const selectedOption = ref('');
  2825. // 获取接口数据并转换为下拉框需要的格式
  2826. const fetchData = async () => {
  2827. try {
  2828. // Simulate API call
  2829. const response = await facilityMachineList();
  2830. if (response.code === 0) {
  2831. // Transform data format
  2832. const options = response.data.map((item) => ({
  2833. label: item,
  2834. value: item
  2835. }));
  2836. dropdownOptions.value = options;
  2837. // Default to selecting the first option
  2838. const defaultOption = options.find(option => option.value === JTMC);
  2839. if (defaultOption) {
  2840. selectedOption.value = defaultOption.value;
  2841. } else if (options.length > 0) {
  2842. // 如果 myDefaultValue 不在选项中,选择第一个选项
  2843. selectedOption.value = options[0].value;
  2844. }
  2845. }
  2846. } catch (error) {
  2847. console.error('Error fetching data:', error);
  2848. // Handle the error appropriately
  2849. }
  2850. };
  2851. // formData
  2852. let BZMC=ref()
  2853. let lastCellValue=ref()
  2854. let parts =reactive([])
  2855. // 自动化生成的字典(可能为空)以及字段
  2856. const formData= ref({
  2857. 工单编号:'',
  2858. 印件编号:'',
  2859. 工序名称:'',
  2860. 产品名称:'',
  2861. sczl_bh1:'',
  2862. sczl_bh2:'',
  2863. sczl_bh3:'',
  2864. sczl_bh4:'',
  2865. sczl_bh5:'',
  2866. sczl_bh6:'',
  2867. sczl_bh7:'',
  2868. sczl_bh8:'',
  2869. sczl_bh9:'',
  2870. sczl_bh10:'',
  2871. sczl_name1:'',
  2872. sczl_name2:'',
  2873. sczl_name3:'',
  2874. sczl_name4:'',
  2875. sczl_name5:'',
  2876. sczl_name6:'',
  2877. sczl_name7:'',
  2878. sczl_name8:'',
  2879. sczl_name9:'',
  2880. sczl_name10:'',
  2881. })
  2882. const formDatasData= reactive([])
  2883. const formDatas = ref({
  2884. code1:'',
  2885. code2:'',
  2886. code3:'',
  2887. code4:'',
  2888. code5:'',
  2889. code6:'',
  2890. code7:'',
  2891. code8:'',
  2892. code9:'',
  2893. code10:'',
  2894. name1:'',
  2895. name2:'',
  2896. name3:'',
  2897. name4:'',
  2898. name5L:'',
  2899. name6:'',
  2900. name7:'',
  2901. name8:'',
  2902. name9:'',
  2903. name10:'',
  2904. percentage1:'',
  2905. percentage2:'',
  2906. percentage3:'',
  2907. percentage4:'',
  2908. percentage5:'',
  2909. percentage6:'',
  2910. percentage7:'',
  2911. percentage8:'',
  2912. percentage9:'',
  2913. percentage10:'',
  2914. })
  2915. //班组单击
  2916. const BZhandle = (val, row) => {
  2917. formDatas.value = {};
  2918. for (const key in val) {
  2919. if (val[key] === 0) {
  2920. break;
  2921. }
  2922. const parts = val[key].split(/[\s()]+/);
  2923. const code = parts[0];
  2924. const name = parts[1];
  2925. const percentage = parts[2];
  2926. // 根据索引填充不同的字段
  2927. const index = parseInt(key) + 1; // 索引从1开始
  2928. formDatas.value['code' + index] = code;
  2929. formDatas.value['name' + index] = name;
  2930. formDatas.value['percentage' + index] = percentage;
  2931. }
  2932. };
  2933. const chanliangVisible = ref(false)
  2934. const formdata3=reactive([])
  2935. function gytableDatadoubleClick(row, column, event) {
  2936. console.log(row)
  2937. type2.value="update"
  2938. MachineChanliang(row.UniqId)
  2939. }
  2940. const uid=ref()
  2941. function getUid(row, column, event) {
  2942. uid.value=row.UniqId
  2943. console.log(uid.value)
  2944. }
  2945. //获取详细信息
  2946. const MachineChanliang = async(value) => {
  2947. const response = await MachineChanliangDetail({UniqId:value});
  2948. if (response.code === 0) {
  2949. chanliangVisible.value=true
  2950. formdata3.value=response.data
  2951. const result=formdata3.value.gxmc.match(/-(.{2})/)
  2952. // const pattern = /-(.*?)〖(.*?)$/;
  2953. // const matches = formdata3.value.gxmc.match(pattern);
  2954. formdata3.value.gymc=result[1]
  2955. formdata3.value.sczl_jtbh=JTMC
  2956. formdata3.value.rq=date
  2957. console.log(formdata3.value.bzdh)
  2958. if (formdata3.value.bzdh === 'A班') {
  2959. console.log(date + " 08:00:00");
  2960. formdata3.value.starttime = ''; // 清空值
  2961. setTimeout(()=>{
  2962. formdata3.value.starttime = date + " 08:30:00"; // 设置为 20:30:00
  2963. })
  2964. } else if (formdata3.value.bzdh === 'B班') {
  2965. console.log(date + " 20:30:00");
  2966. formdata3.value.starttime = ''; // 清空值
  2967. setTimeout(()=>{
  2968. formdata3.value.starttime = date + " 20:30:00"; // 设置为 20:30:00
  2969. })
  2970. }
  2971. console.log(formdata3.value)
  2972. }
  2973. }
  2974. const yjnoArr = ref([0])
  2975. const gxmc = ref('')
  2976. //工单编号回车事件
  2977. const getCPMCsubmit = () => {
  2978. if(formdata3.value.工单编号!=''){
  2979. ChanliangWorkorder({search:formdata3.value.工单编号,machine:JTMC}).then(response=>{
  2980. if (response.code === 0) {
  2981. formdata3.value.cpmc = response.data[0].cpmc
  2982. document.getElementById('产品名称').style.color = 'red';
  2983. getYJMCsubmit()
  2984. }else{
  2985. formdata3.value.工单编号 = '';
  2986. formdata3.value.cpmc = '';
  2987. document.getElementById('产品名称').style.color = 'black';
  2988. }
  2989. });
  2990. }else{
  2991. ElMessage({
  2992. type: 'error',
  2993. message: '请注意, 工单编号输入空置, 除非有特殊需要!'
  2994. })
  2995. gxmc.value = '';
  2996. document.getElementById('产品名称').style.color = 'black';
  2997. }
  2998. }
  2999. const yjnoHandleFocus = () =>{
  3000. if(yjnoArr.value[0] == 0){
  3001. formdata3.value.yjno = 1;
  3002. }else{
  3003. formdata3.value.yjno = yjnoArr.value[0];
  3004. }
  3005. }
  3006. //印件号失去焦点事件
  3007. const getYJMCsubmit = () => {
  3008. if(formdata3.value.工单编号!='' && formdata3.value.yjno!=''){
  3009. //获取印件名称
  3010. ChanliangPrintDetail({gdbh:formdata3.value.工单编号}).then(response=>{
  3011. if (response.code === 0) {
  3012. formdata3.value.yjmc = response.data[0].yjmc
  3013. formdata3.value.yjno = response.data[0].yjno
  3014. setColorReadonly('印件名称')
  3015. }else{
  3016. ElMessage({
  3017. type: 'error',
  3018. message: '印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!'
  3019. })
  3020. }
  3021. });
  3022. }else{
  3023. ElMessage({
  3024. type: 'error',
  3025. message: '印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!'
  3026. })
  3027. }
  3028. }
  3029. //工序名称获得焦点事件
  3030. const gxmcHandleFocus = () =>{
  3031. if(gxmc.value != ''){
  3032. formdata3.value.gxmc = gxmc.value.sczl_gxmc;
  3033. }else{
  3034. formdata3.value.gxmc = '';
  3035. }
  3036. }
  3037. //工序失去焦点事件
  3038. const getGXsubmit = () => {
  3039. setColorReadonly('工序号')
  3040. setColorReadonly('工艺名称')
  3041. //弹出选择
  3042. ChanliangProcessDetail({gdbh:formdata3.value.工单编号,yjno:formdata3.value.yjno,machine:JTMC}).then(response=>{
  3043. if (response.code === 0) {
  3044. formdata3.value.gxmc=response.data[0].name
  3045. formdata3.value.gxh=response.data[0].gxh
  3046. const res=response.data[0].name.match(/>(.{2})/)
  3047. formdata3.value.gymc=res[1]
  3048. // selectData.splice(0, selectData.length, ...response.data)
  3049. // GXVisible.value=true
  3050. // nextTick(()=>{
  3051. // console.log(tableRef)
  3052. // console.log(selectData)
  3053. // tableRef.value.setCurrentRow(selectData[0]);
  3054. // tableRef.value.focus();
  3055. // });
  3056. }
  3057. })
  3058. }
  3059. //获取员工信息
  3060. const GetYg = (event,inputName) => {
  3061. // console.log(eval(`formdata3.value.组员${inputName}['编号']`))
  3062. if(eval(`formdata3.value.组员${inputName}['编号']`)===""){
  3063. console.log("123")
  3064. }else{
  3065. const value=ref()
  3066. if(inputName==='11'){
  3067. value.value=formdata3.value.拉料['编号']
  3068. }else{
  3069. value.value= eval(`formdata3.value.组员${inputName}['编号']`)
  3070. }
  3071. EmployeeData({code:value.value}).then(response=>{
  3072. if (response.code === 0) {
  3073. if(inputName==='1'){
  3074. formdata3.value.组员1['姓名']=response.data[0].员工姓名;
  3075. }else if(inputName==='2'){
  3076. formdata3.value.组员2['姓名']=response.data[0].员工姓名;
  3077. }else if(inputName==='3'){
  3078. formdata3.value.组员3['姓名']=response.data[0].员工姓名;
  3079. }else if(inputName==='4'){
  3080. formdata3.value.组员4['姓名']=response.data[0].员工姓名;
  3081. }else if(inputName==='5'){
  3082. formdata3.value.组员5['姓名']=response.data[0].员工姓名;
  3083. }else if(inputName==='6'){
  3084. formdata3.value.组员6['姓名']=response.data[0].员工姓名;
  3085. }else if(inputName==='7'){
  3086. formdata3.value.组员7['姓名']=response.data[0].员工姓名;
  3087. }else if(inputName==='8'){
  3088. formdata3.value.组员8['姓名']=response.data[0].员工姓名;
  3089. }else if(inputName==='9'){
  3090. formdata3.value.组员9['姓名']=response.data[0].员工姓名;
  3091. }else if(inputName==='10'){
  3092. formdata3.value.组员10['姓名']=response.data[0].员工姓名;
  3093. }else if(inputName==='11'){
  3094. formdata3.value.拉料['姓名']=response.data[0].员工姓名;
  3095. }
  3096. }else{
  3097. // formdata3.value['sczl_bh'+inputName+'_name'] = '';
  3098. }
  3099. })
  3100. }
  3101. }
  3102. //追加字体颜色和不可输入
  3103. const setColorReadonly = (id) => {
  3104. const newInput = document.getElementById(id)
  3105. newInput.style.color = 'red';
  3106. newInput.setAttribute('readonly', true);
  3107. }
  3108. //追加字体颜色和可输入
  3109. const unsetColorReadonly = (id) => {
  3110. const newInput = document.getElementById(id)
  3111. newInput.style.color = 'black';
  3112. newInput.removeAttribute('readonly');
  3113. }
  3114. //日报表修改弹窗确定
  3115. const chanliangenterDialog = async () => {
  3116. // SubmitDailyProduction()
  3117. if (type2.value === 'update') {
  3118. SubmitDailyProduction()
  3119. } else if (type2.value === 'create') {
  3120. add()
  3121. }
  3122. }
  3123. //日报表新增
  3124. const add = async () => {
  3125. // console.log(date+''+formdata3.value.starttime)
  3126. const rate1=(parseFloat(formdata3.value.组员1['比例']) / 100).toFixed(5)
  3127. const rate2=(parseFloat(formdata3.value.组员2['比例']) / 100).toFixed(5)
  3128. const rate3=(parseFloat(formdata3.value.组员3['比例']) / 100).toFixed(5)
  3129. const rate4=(parseFloat(formdata3.value.组员4['比例']) / 100).toFixed(5)
  3130. const rate5=(parseFloat(formdata3.value.组员5['比例']) / 100).toFixed(5)
  3131. const rate6=(parseFloat(formdata3.value.组员6['比例']) / 100).toFixed(5)
  3132. const rate7=(parseFloat(formdata3.value.组员7['比例']) / 100).toFixed(5)
  3133. const rate8=(parseFloat(formdata3.value.组员8['比例']) / 100).toFixed(5)
  3134. const rate9=(parseFloat(formdata3.value.组员9['比例']) / 100).toFixed(5)
  3135. const rate10=(parseFloat(formdata3.value.组员10['比例']) / 100).toFixed(5)
  3136. const restoredData = {
  3137. sczl_gdbh:formdata3.value.工单编号,
  3138. sczl_yjno:formdata3.value.yjno,
  3139. sczl_gxh:formdata3.value.gxh,
  3140. sczl_gxmc: formdata3.value.gxmc,
  3141. sczl_bzdh: formdata3.value.bzdh,
  3142. sczl_bh1: formdata3.value.组员1['编号'],
  3143. sczl_bh2: formdata3.value.组员2['编号'],
  3144. sczl_bh3: formdata3.value.组员3['编号'],
  3145. sczl_bh4: formdata3.value.组员4['编号'],
  3146. sczl_bh5: formdata3.value.组员5['编号'],
  3147. sczl_bh6: formdata3.value.组员6['编号'],
  3148. sczl_bh7: formdata3.value.组员7['编号'],
  3149. sczl_bh8: formdata3.value.组员8['编号'],
  3150. sczl_bh9: formdata3.value.组员9['编号'],
  3151. sczl_bh10: formdata3.value.组员10['编号'],
  3152. sczl_bh98:formdata3.value.组员1['编号'],
  3153. sczl_rate1: rate1,
  3154. sczl_rate2: rate2,
  3155. sczl_rate3: rate3,
  3156. sczl_rate4: rate4,
  3157. sczl_rate5: rate5,
  3158. sczl_rate6: rate6,
  3159. sczl_rate7: rate7,
  3160. sczl_rate8: rate8,
  3161. sczl_rate9: rate9,
  3162. sczl_rate10: rate10,
  3163. sczl_jtbh: formdata3.value.sczl_jtbh,
  3164. 开工时间:formdata3.value.starttime,
  3165. 码开始行:formdata3.value.码开始行,
  3166. 码结束行:formdata3.value.码结束行,
  3167. sys_id:sys_id,
  3168. sczl_装版工时:formdata3.value.装版补产工时,
  3169. sczl_打样工时:formdata3.value.打样补产工时,
  3170. sczl_异常类型1:formdata3.value.异常类型,
  3171. sczl_异常工时1:formdata3.value.异常总工时,
  3172. sczl_保养工时:formdata3.value.保养工时,
  3173. sczl_dedh:formdata3.value.dedh,
  3174. sczl_rq: date,
  3175. sczl_num: formdata3.value.num,
  3176. // sczl_rq: formData3.value.sczl_rq,
  3177. sczl_cl: formdata3.value.产量,
  3178. sczl_zcfp: formdata3.value.制程废品,
  3179. sczl_zccp: formdata3.value.制程次品,
  3180. sczl_前工序废: formdata3.value.前工序废,
  3181. sczl_来料少数: formdata3.value.来料异常,
  3182. sczl_ls: formdata3.value.联数,
  3183. sczl_ms: formdata3.value.色度数,
  3184. sczl_装版总工时: formdata3.value.装版工时,
  3185. sczl_打样总工时: formdata3.value.打样工时,
  3186. sczl_设备运行工时: formdata3.value.通电工时,
  3187. 码包: formdata3.value.码包,
  3188. 辅电表: formdata3.value.辅电表,
  3189. 主电表:formdata3.value.主电表,
  3190. sczl_bh98: formdata3.value.拉料['编号'],
  3191. }
  3192. console.log(restoredData)
  3193. const response = await ChanliangAdd(restoredData);
  3194. if (response.code === 0) {
  3195. ElMessage({
  3196. type: 'success',
  3197. message: '成功'
  3198. })
  3199. FacilitychanLiang()
  3200. FacilityDetail()
  3201. chanliangVisible.value=false
  3202. }
  3203. }
  3204. //日报表上传
  3205. const SubmitDailyProduction = async () => {
  3206. const rate1=(parseFloat(formdata3.value.组员1['比例']) / 100).toFixed(5)
  3207. const rate2=(parseFloat(formdata3.value.组员2['比例']) / 100).toFixed(5)
  3208. const rate3=(parseFloat(formdata3.value.组员3['比例']) / 100).toFixed(5)
  3209. const rate4=(parseFloat(formdata3.value.组员4['比例']) / 100).toFixed(5)
  3210. const rate5=(parseFloat(formdata3.value.组员5['比例']) / 100).toFixed(5)
  3211. const rate6=(parseFloat(formdata3.value.组员6['比例']) / 100).toFixed(5)
  3212. const rate7=(parseFloat(formdata3.value.组员7['比例']) / 100).toFixed(5)
  3213. const rate8=(parseFloat(formdata3.value.组员8['比例']) / 100).toFixed(5)
  3214. const rate9=(parseFloat(formdata3.value.组员9['比例']) / 100).toFixed(5)
  3215. const rate10=(parseFloat(formdata3.value.组员10['比例']) / 100).toFixed(5)
  3216. const restoredData = {
  3217. sczl_gdbh:formdata3.value.工单编号,
  3218. sczl_yjno:formdata3.value.yjno,
  3219. sczl_gxh:formdata3.value.gxh,
  3220. sczl_gxmc: formdata3.value.gxmc,
  3221. sczl_bzdh: formdata3.value.bzdh,
  3222. sczl_bh1: formdata3.value.组员1['编号'],
  3223. sczl_bh2: formdata3.value.组员2['编号'],
  3224. sczl_bh3: formdata3.value.组员3['编号'],
  3225. sczl_bh4: formdata3.value.组员4['编号'],
  3226. sczl_bh5: formdata3.value.组员5['编号'],
  3227. sczl_bh6: formdata3.value.组员6['编号'],
  3228. sczl_bh7: formdata3.value.组员7['编号'],
  3229. sczl_bh8: formdata3.value.组员8['编号'],
  3230. sczl_bh9: formdata3.value.组员9['编号'],
  3231. sczl_bh10: formdata3.value.组员10['编号'],
  3232. sczl_bh98:formdata3.value.组员1['编号'],
  3233. sczl_rate1: rate1,
  3234. sczl_rate2: rate2,
  3235. sczl_rate3: rate3,
  3236. sczl_rate4: rate4,
  3237. sczl_rate5: rate5,
  3238. sczl_rate6: rate6,
  3239. sczl_rate7: rate7,
  3240. sczl_rate8: rate8,
  3241. sczl_rate9: rate9,
  3242. sczl_rate10: rate10,
  3243. sczl_jtbh: formdata3.value.sczl_jtbh,
  3244. 开工时间:"2024-03-12 08:30:00",
  3245. 码开始行:formdata3.value.码开始行,
  3246. 码结束行:formdata3.value.码结束行,
  3247. sys_id:sys_id,
  3248. sczl_装版工时:formdata3.value.装版补产工时,
  3249. sczl_打样工时:formdata3.value.打样补产工时,
  3250. sczl_异常类型1:formdata3.value.异常类型,
  3251. sczl_异常工时1:formdata3.value.异常总工时,
  3252. sczl_保养工时:formdata3.value.保养工时,
  3253. sczl_dedh:formdata3.value.dedh,
  3254. sczl_rq: date,
  3255. sczl_num: formdata3.value.num,
  3256. // sczl_rq: formData3.value.sczl_rq,
  3257. sczl_cl: formdata3.value.产量,
  3258. sczl_zcfp: formdata3.value.制程废品,
  3259. sczl_zccp: formdata3.value.制程次品,
  3260. sczl_前工序废: formdata3.value.前工序废,
  3261. sczl_来料少数: formdata3.value.来料异常,
  3262. sczl_ls: formdata3.value.联数,
  3263. sczl_ms: formdata3.value.色度数,
  3264. sczl_装版总工时: formdata3.value.装版工时,
  3265. sczl_打样总工时: formdata3.value.打样工时,
  3266. sczl_设备运行工时: formdata3.value.通电工时,
  3267. 码包: formdata3.value.码包,
  3268. 辅电表: formdata3.value.辅电表,
  3269. 主电表:formdata3.value.主电表,
  3270. sczl_bh98: formdata3.value.拉料['编号'],
  3271. UniqId:uid.value
  3272. }
  3273. console.log(restoredData)
  3274. // console.log(formData3.value.formattedArray)
  3275. const response = await MachineChanliangDetailEdit(restoredData);
  3276. console.log(response)
  3277. if (response.code === 0) {
  3278. ElMessage({
  3279. type: 'success',
  3280. message: '成功'
  3281. })
  3282. FacilitychanLiang()
  3283. FacilityDetail()
  3284. chanliangVisible.value=false
  3285. }
  3286. }
  3287. const ent1 = (event) => {
  3288. const inputs = document.getElementsByTagName('input');
  3289. const currentIndex = Array.from(inputs).indexOf(event.target);
  3290. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  3291. let nextIndex = currentIndex + 1;
  3292. while (nextIndex < inputs.length) {
  3293. if (inputs[nextIndex].disabled) {
  3294. console.log("当前输入框为disabled,跳过");
  3295. nextIndex++; // 跳过disabled的输入框
  3296. continue;
  3297. }
  3298. if (!inputs[nextIndex].readOnly) {
  3299. nextTick(() => {
  3300. inputs[nextIndex].focus();
  3301. inputs[nextIndex].select();
  3302. });
  3303. break;
  3304. }
  3305. nextIndex++;
  3306. }
  3307. }
  3308. else if (event.keyCode === 38) { // 向上箭头
  3309. for (let i = currentIndex - 1; i >= 0; i--) {
  3310. if (!inputs[i].readOnly) {
  3311. nextTick(()=>{
  3312. inputs[i].focus();
  3313. inputs[i].select();
  3314. })
  3315. break;
  3316. }
  3317. }
  3318. } else if (event.keyCode === 8) { // 删除箭头
  3319. if (event.target.selectionStart === 0) {
  3320. for (let i = currentIndex - 1; i >= 0; i--) {
  3321. if (!inputs[i].readOnly) {
  3322. nextTick(()=>{
  3323. inputs[i].focus();
  3324. inputs[i].setSelectionRange(0, 0);
  3325. })
  3326. break;
  3327. }
  3328. }
  3329. }
  3330. } else if (event.keyCode === 37) { // 向左箭头
  3331. if (event.target.selectionStart === 0) {
  3332. for (let i = currentIndex - 1; i >= 0; i--) {
  3333. if (!inputs[i].readOnly) {
  3334. nextTick(()=>{
  3335. inputs[i].focus();
  3336. inputs[i].select();
  3337. })
  3338. break;
  3339. }
  3340. }
  3341. }
  3342. } else if (event.keyCode === 39) { // 向右箭头
  3343. if (event.target.selectionStart === event.target.value.length) {
  3344. for (let i = currentIndex + 1; i < inputs.length; i++) {
  3345. if (!inputs[i].readOnly) {
  3346. nextTick(()=>{
  3347. inputs[i].focus();
  3348. inputs[i].select();
  3349. })
  3350. break;
  3351. }
  3352. }
  3353. }
  3354. }
  3355. }
  3356. // ============== 表格控制部分结束 ===============
  3357. // 获取需要的字典 可能为空 按需保留
  3358. const setOptions = async () =>{
  3359. }
  3360. // 获取需要的字典 可能为空 按需保留
  3361. setOptions()
  3362. // 多选数据
  3363. const multipleSelection = ref([])
  3364. // 多选
  3365. const handleSelectionChange = (val) => {
  3366. multipleSelection.value = val
  3367. console.log(val)
  3368. }
  3369. // 删除行
  3370. const deleteRow = (row) => {
  3371. ElMessageBox.confirm('确定要删除吗?', '提示', {
  3372. confirmButtonText: '确定',
  3373. cancelButtonText: '取消',
  3374. type: 'warning'
  3375. }).then(() => {
  3376. deleteCompanyFunc(row)
  3377. })
  3378. }
  3379. // 批量删除控制标记
  3380. const deleteVisible = ref(false)
  3381. // 多选删除
  3382. const onDelete = async() => {
  3383. const ids = []
  3384. if (multipleSelection.value.length === 0) {
  3385. ElMessage({
  3386. type: 'warning',
  3387. message: '请选择要删除的数据'
  3388. })
  3389. return
  3390. }
  3391. multipleSelection.value &&
  3392. multipleSelection.value.map(item => {
  3393. ids.push(item.ID)
  3394. })
  3395. const res = await deleteCompanyByIds({ ids })
  3396. if (res.code === 0) {
  3397. ElMessage({
  3398. type: 'success',
  3399. message: '删除成功'
  3400. })
  3401. if (tableData.value.length === ids.length && page.value > 1) {
  3402. page.value--
  3403. }
  3404. deleteVisible.value = false
  3405. getTableData()
  3406. }
  3407. }
  3408. // 行为控制标记(弹窗内部需要增还是改)
  3409. const type = ref('')
  3410. // 更新行
  3411. const updateCompanyFunc = async(row) => {
  3412. const res = await findCompany({ ID: row.ID })
  3413. type.value = 'update'
  3414. if (res.code === 0) {
  3415. formData.value = res.data.recompany
  3416. dialogFormVisible.value = true
  3417. }
  3418. }
  3419. const cpcode=ref('')
  3420. const finishedcode=ref()
  3421. const yjupdateCompanyFunc = async(row) => {
  3422. const res = await facilityProcedure({ Gd_gdbh: row['工单编号|质量信息'].substring(0, 7) })
  3423. console.log(res)
  3424. if (res.code === 0) {
  3425. selectData.value = res.data
  3426. }
  3427. console.log(row)
  3428. cpcode.value=row.产品代号
  3429. console.log(cpcode)
  3430. // console.log(row.产品代号)
  3431. finishedcode.value=row.产品代号
  3432. console.log(finishedcode.value)
  3433. }
  3434. // 删除行
  3435. const deleteCompanyFunc = async (row) => {
  3436. const res = await deleteCompany({ ID: row.ID })
  3437. if (res.code === 0) {
  3438. ElMessage({
  3439. type: 'success',
  3440. message: '删除成功'
  3441. })
  3442. if (tableData.value.length === 1 && page.value > 1) {
  3443. page.value--
  3444. }
  3445. getTableData()
  3446. }
  3447. }
  3448. //键盘 input框跳转
  3449. const ent = (event,id1,id2,id3) => {
  3450. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  3451. if(id3!=''){
  3452. document.getElementById(id3).focus()
  3453. }
  3454. } else if (event.keyCode === 38) { // 向上箭头
  3455. if(id1!=''){
  3456. document.getElementById(id1).focus()
  3457. }
  3458. }else if (event.keyCode === 8) { // 删除箭头
  3459. if(id1!='' && document.getElementById(id2).value===''){
  3460. document.getElementById(id1).focus()
  3461. }
  3462. }else if (event.keyCode === 37) { // 向左箭头
  3463. if(id1!='' && document.getElementById(id2).selectionStart==0){
  3464. document.getElementById(id1).focus()
  3465. }
  3466. }else if (event.keyCode === 39) { // 向右箭头
  3467. if(id3!='' && document.getElementById(id2).selectionStart == document.getElementById(id2).value.length){
  3468. document.getElementById(id3).focus()
  3469. }
  3470. }
  3471. }
  3472. // 弹窗控制标记
  3473. const dialogFormVisible = ref(false)
  3474. const dianjianVisible = ref(false)
  3475. const yinbanVisible = ref(false)
  3476. // 查看详情控制标记
  3477. const detailShow = ref(false)
  3478. const bzData = reactive([])
  3479. // 打开详情弹窗
  3480. const openDetailShow = () => {
  3481. detailShow.value = true
  3482. }
  3483. // 打开详情
  3484. const getDetails = async (row) => {
  3485. // 打开弹窗
  3486. const res = await findCompany({ ID: row.ID })
  3487. if (res.code === 0) {
  3488. formData.value = res.data.recompany
  3489. openDetailShow()
  3490. }
  3491. }
  3492. // 关闭详情弹窗
  3493. const closeDetailShow = () => {
  3494. detailShow.value = false
  3495. }
  3496. // 打开弹窗
  3497. const openDialog = () => {
  3498. // type.value = 'create'
  3499. console.log('222')
  3500. FacilityInspect()
  3501. FacilitychanLiang()
  3502. dialogFormVisible.value = true
  3503. }
  3504. let drzcData=[]
  3505. let columnNames=[]
  3506. //当日制程检验记录
  3507. const FacilityInspect = async () => {
  3508. const response = await facilityInspect({machine:JTMC,date:date});
  3509. console.log(response)
  3510. if(response.code==0){
  3511. // 提取 inspectiontime 作为列名
  3512. // Extract inspectiontime as columnNames
  3513. columnNames = response.data.InspectionTime;
  3514. // Populate drzcData with row data
  3515. for (const key in response.data.row[0]) {
  3516. if (key !== 'InspectionTime') {
  3517. const item = response.data.row[0][key];
  3518. const rowData = {
  3519. '工单编号': item['工单编号'],
  3520. '印件号': item['印件号'],
  3521. '工序名称': item['工序名称'],
  3522. '检验项目': item['检验项目']
  3523. };
  3524. // Initialize time columns with '—'
  3525. columnNames.forEach(time => {
  3526. rowData[time] = '';
  3527. });
  3528. // Split inspectresult and fill the corresponding time columns
  3529. const results = item['time'].split(',');
  3530. results.forEach(result => {
  3531. if (columnNames.includes(result)) {
  3532. rowData[result] = '√';
  3533. }else{rowData[result] = ''}
  3534. });
  3535. // Add the row data to drzcData
  3536. drzcData.push(rowData);
  3537. }
  3538. }
  3539. drzcDatas.value=drzcData
  3540. console.log(drzcData);
  3541. }
  3542. }
  3543. const FacilitychanLiang = async () => {
  3544. const response = await facilitychanLiang({machine:JTMC,date:date});
  3545. if(response.code==0){
  3546. delete response.data['totalA']
  3547. delete response.data['totalB']
  3548. gytableData.value=Object.values(response.data)
  3549. }
  3550. }
  3551. // 关闭弹窗
  3552. const closeDialog = () => {
  3553. dialogFormVisible.value = false
  3554. chanliangVisible.value=false
  3555. formData.value = {
  3556. address: '',
  3557. image: '',
  3558. name: '',
  3559. }
  3560. }
  3561. // 弹窗确定
  3562. const enterDialog = async () => {
  3563. elFormRef.value?.validate( async (valid) => {
  3564. if (!valid) return
  3565. let res
  3566. switch (type.value) {
  3567. case 'create':
  3568. res = await createCompany(formData.value)
  3569. break
  3570. case 'update':
  3571. res = await updateCompany(formData.value)
  3572. break
  3573. default:
  3574. res = await createCompany(formData.value)
  3575. break
  3576. }
  3577. if (res.code === 0) {
  3578. ElMessage({
  3579. type: 'success',
  3580. message: '创建/更改成功'
  3581. })
  3582. closeDialog()
  3583. getTableData()
  3584. }
  3585. })
  3586. }
  3587. </script>
  3588. <style>
  3589. /* .button-container {
  3590. display: flex;
  3591. flex-wrap: wrap;
  3592. } */
  3593. .button-container {
  3594. display: flex;
  3595. flex-wrap: wrap;
  3596. justify-content: flex-start; /* Align buttons from left to right */
  3597. }
  3598. .custom-button {
  3599. display: flex;
  3600. flex-direction: column;
  3601. align-items: center;
  3602. text-align: center; /* Center the text horizontally */
  3603. flex: 0 0 150px; /* Set the width of each button */
  3604. height: 170px; /* Allow the height to adjust based on content */
  3605. margin: 7px; /* Set spacing between buttons */
  3606. }
  3607. .custom-button img {
  3608. max-width: 100%; /* Ensure the image doesn't exceed the button width */
  3609. }
  3610. .JKWTree-container {
  3611. display: flex;
  3612. }
  3613. .JKWTree-tree {
  3614. width: 300px;
  3615. background-color: #fff;
  3616. padding: 10px;
  3617. margin-right: 20px;
  3618. }
  3619. .JKWTree-tree h3 {
  3620. font-size: 15px;
  3621. font-weight: 700;
  3622. margin: 10px 0;
  3623. }
  3624. .JKWTree-content {
  3625. flex: 1;
  3626. }
  3627. /* 选中某行时的背景色*/
  3628. .el-table__body tr.current-row>td {
  3629. background: #ff80ff !important;
  3630. }
  3631. .groupbox
  3632. {margin:10px;
  3633. width:500px;
  3634. height:500px;
  3635. border:thin solid black;
  3636. padding:10px}
  3637. .grouptitle
  3638. {display:block;
  3639. margin-top:-24px;
  3640. margin-left:20px;
  3641. width:150px;
  3642. text-align:center;
  3643. background-color:white}
  3644. </style>