Dayreports.vue 108 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413
  1. <template>
  2. <div>
  3. <!-- 左侧树形结构 -->
  4. <el-container>
  5. <layout-sider
  6. :resize-directions="['right']"
  7. :width="220"
  8. style="margin-right: 10px"
  9. >
  10. <div class="JKWTree-tree" style="height: 70vh;width:100vh" >
  11. <h3>机台生产日报表维护</h3>
  12. <el-tree
  13. :data="treeData"
  14. highlight-current
  15. @node-click="handleNodeClick"
  16. />
  17. </div>
  18. </layout-sider>
  19. <el-container>
  20. <el-main>
  21. <!-- 按钮区域 -->
  22. <div class="gva-table-box">
  23. <el-form-item>
  24. <el-input
  25. v-model="positionvalue"
  26. placeholder="输入工单编号或产品名称"
  27. style="width: 180px"
  28. />
  29. <el-button
  30. type="primary"
  31. class="search"
  32. icon="search"
  33. @click="onSearch"
  34. ></el-button>
  35. <el-button type="primary" class="bt" icon="plus" @click="onAdd"
  36. >新增</el-button
  37. >
  38. <el-button
  39. type="primary"
  40. class="bt"
  41. icon="copy-document"
  42. @click="onCountByGdbh"
  43. >切换显示方式</el-button
  44. >
  45. <el-button type="primary" class="bt" icon="delete" @click="onDel"
  46. >删除</el-button
  47. >
  48. <el-button type="primary" class="bt" @click="synchronous"
  49. >同步</el-button
  50. >
  51. <el-button type="primary" icon="edit" @click="gd_gxclhconClick" class="bt" title="工序产量核查">工序产量核查</el-button>
  52. <div style="margin-left: auto">
  53. <el-button
  54. type="primary"
  55. class="bt"
  56. icon="download"
  57. @click="exportToExcel2"
  58. >导出到Excel</el-button
  59. >
  60. </div>
  61. </el-form-item>
  62. <!-- 数据展示 -->
  63. <el-table
  64. ref="multipleTable"
  65. style="width: 100%;height: 65vh"
  66. tooltip-effect="dark"
  67. :data="tableData"
  68. id="tab"
  69. row-key="ID"
  70. highlight-current-row="true"
  71. border
  72. :row-style="{ height: '20px' }" :header-cell-style="{ padding: '0px' }"
  73. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  74. :show-overflow-tooltip="true"
  75. @row-click="Click"
  76. @selection-change="handleSelectionChange"
  77. @row-dblclick="doubleClick"
  78. >
  79. <!-- <el-table-column type="selection" width="55" /> -->
  80. <el-table-column
  81. fixed
  82. align="left"
  83. sortable
  84. label="工单编号"
  85. prop="sczl_gdbh"
  86. width="105"
  87. />
  88. <el-table-column
  89. fixed
  90. align="left"
  91. sortable
  92. label="产品名称"
  93. prop="Gd_cpmc"
  94. width="250"
  95. />
  96. <el-table-column
  97. align="left"
  98. sortable
  99. label="印件及工序"
  100. prop="jyno_gxmc"
  101. width="120"
  102. />
  103. <el-table-column
  104. align="left"
  105. sortable
  106. label="生产日期"
  107. prop="sczl_rq"
  108. width="120"
  109. />
  110. <el-table-column
  111. align="left"
  112. sortable
  113. label="机台"
  114. prop="sczl_jtbh"
  115. width="85"
  116. />
  117. <el-table-column
  118. align="left"
  119. sortable
  120. label="班组"
  121. prop="sczl_bzdh"
  122. width="77"
  123. />
  124. <el-table-column
  125. align="left"
  126. sortable
  127. label="流程单"
  128. prop="sczl_num"
  129. width="91"
  130. />
  131. <el-table-column
  132. align="left"
  133. sortable
  134. label="车头产量"
  135. prop="sczl_cl"
  136. width="120"
  137. />
  138. <el-table-column
  139. align="left"
  140. sortable
  141. label="色度数"
  142. prop="sczl_ms"
  143. width="91"
  144. />
  145. <el-table-column
  146. align="left"
  147. sortable
  148. label="制程废"
  149. prop="sczl_zcfp"
  150. width="91"
  151. />
  152. <el-table-column
  153. align="left"
  154. sortable
  155. label="次品"
  156. prop="sczl_zccp"
  157. width="77"
  158. />
  159. <el-table-column
  160. align="left"
  161. sortable
  162. label="来料异常"
  163. prop="incomingerror"
  164. width="105"
  165. />
  166. <el-table-column
  167. align="left"
  168. sortable
  169. label="装版工时"
  170. prop="sczl_装版工时"
  171. width="105"
  172. />
  173. <el-table-column
  174. align="left"
  175. sortable
  176. label="保养工时"
  177. prop="sczl_保养工时"
  178. width="105"
  179. />
  180. <el-table-column
  181. align="left"
  182. sortable
  183. label="打样工时"
  184. prop="sczl_打样工时"
  185. width="105"
  186. />
  187. <el-table-column
  188. align="left"
  189. sortable
  190. label="异常停机工时"
  191. prop="sczl_异常停机工时"
  192. width="133"
  193. />
  194. <el-table-column
  195. align="left"
  196. sortable
  197. label="设备运行工时"
  198. prop="sczl_设备运行工时"
  199. width="133"
  200. />
  201. <el-table-column
  202. align="left"
  203. sortable
  204. label="组员编号1"
  205. prop="sczl_bh1"
  206. width="113"
  207. />
  208. <el-table-column
  209. align="left"
  210. sortable
  211. label="组员姓名1"
  212. prop="name1"
  213. width="113"
  214. />
  215. <el-table-column
  216. align="left"
  217. sortable
  218. label="组员编号2"
  219. prop="sczl_bh2"
  220. width="113"
  221. />
  222. <el-table-column
  223. align="left"
  224. sortable
  225. label="组员姓名2"
  226. prop="name2"
  227. width="113"
  228. />
  229. <el-table-column
  230. align="left"
  231. sortable
  232. label="组员编号3"
  233. prop="sczl_bh3"
  234. width="113"
  235. />
  236. <el-table-column
  237. align="left"
  238. sortable
  239. label="组员姓名3"
  240. prop="name3"
  241. width="113"
  242. />
  243. <el-table-column
  244. align="left"
  245. sortable
  246. label="组员编号4"
  247. prop="sczl_bh4"
  248. width="113"
  249. />
  250. <el-table-column
  251. align="left"
  252. sortable
  253. label="组员姓名4"
  254. prop="name4"
  255. width="113"
  256. />
  257. <el-table-column
  258. align="left"
  259. sortable
  260. label="组员编号5"
  261. prop="sczl_bh5"
  262. width="113"
  263. />
  264. <el-table-column
  265. align="left"
  266. sortable
  267. label="组员姓名5"
  268. prop="name5"
  269. width="113"
  270. />
  271. <el-table-column
  272. align="left"
  273. sortable
  274. label="组员编号6"
  275. prop="sczl_bh6"
  276. width="113"
  277. />
  278. <el-table-column
  279. align="left"
  280. sortable
  281. label="组员姓名6"
  282. prop="name6"
  283. width="113"
  284. />
  285. <el-table-column
  286. align="left"
  287. sortable
  288. label="拆片联拼系数"
  289. prop="拆片联拼系数"
  290. width="133"
  291. />
  292. <el-table-column
  293. align="left"
  294. sortable
  295. label="拆片条小盒系数"
  296. prop="拆片条小盒系数"
  297. width="147"
  298. />
  299. <el-table-column
  300. align="left"
  301. sortable
  302. label="工价系数"
  303. prop="sczl_工价系数"
  304. width="105"
  305. />
  306. <el-table-column
  307. align="left"
  308. sortable
  309. label="日定额"
  310. prop="日定额"
  311. width="91"
  312. />
  313. <el-table-column
  314. align="left"
  315. sortable
  316. label="千件工价"
  317. prop="千件工价"
  318. width="105"
  319. />
  320. <el-table-column
  321. align="left"
  322. sortable
  323. label="补产标准"
  324. prop="补产标准"
  325. width="105"
  326. />
  327. <el-table-column
  328. align="left"
  329. sortable
  330. label="创建用户"
  331. prop="sys_id"
  332. width="120"
  333. />
  334. <el-table-column
  335. align="left"
  336. sortable
  337. label="创建时间"
  338. prop="sys_rq"
  339. width="160"
  340. />
  341. <el-table-column
  342. align="left"
  343. sortable
  344. label="修改时间"
  345. prop="mod_rq"
  346. width="160"
  347. />
  348. <el-table-column
  349. align="left"
  350. sortable
  351. label="UNIQID"
  352. prop="UniqId"
  353. width="100"
  354. />
  355. <!-- <el-table-column align="left" label="table_type" prop="table_type" width="120"/> -->
  356. <tbody>
  357. <tr v-for="row in filteredRows" :key="row.sczl_gdbh">
  358. <td>{{ row.sczl_gdbh }}</td>
  359. <td>{{ row.sczl_rq }}</td>
  360. <td>{{ row.sczl_bzdh }}</td>
  361. <td>{{ row.sczl_cl }}</td>
  362. <!-- 其他列 -->
  363. </tr>
  364. </tbody>
  365. </el-table>
  366. <!-- 分页 -->
  367. <!-- <div class="gva-pagination">
  368. <el-pagination layout="total, sizes, prev, pager, next, jumper" v-model:current-page="page"
  369. v-model:page-size="limit"
  370. :page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
  371. @size-change="handleSizeChange"/>
  372. </div> -->
  373. <div class="gva-pagination">
  374. <el-pagination
  375. layout="total, sizes, prev, pager, next, jumper"
  376. v-model:current-page="page"
  377. v-model:page-size="limit"
  378. :page-sizes="[10, 30, 50, 100,1000]"
  379. :total="total"
  380. @current-change="handleCurrentChange"
  381. @size-change="handleSizeChange"
  382. />
  383. </div>
  384. </div>
  385. <!-- 弹出框 -->
  386. <el-dialog
  387. v-model="dialogFormVisible"
  388. :before-close="closeDialog"
  389. :title="type === 'create' ? '新增' : '修改'"
  390. destroy-on-close
  391. width="1200px" >
  392. <!-- <el-scrollbar height="500px"> -->
  393. <el-form :model="formData" label-position="right" ref="elFormRef" label-width="120px" :rules="rule" >
  394. <el-row :gutter="24">
  395. <el-col :span="6">
  396. <el-form-item label="工单编号:" prop="flatFeed" class="mab">
  397. <el-input v-model="formData.sczl_gdbh" id="工单编号" placeholder="Enter回车" @keydown="ent1($event,'工单编号')" :clearable="true" />
  398. </el-form-item>
  399. </el-col>
  400. <el-col :span="18">
  401. <el-form-item label="产品名称:" prop="perTenThousand" class="mab" label-width="150" >
  402. <el-input v-model="formData.Gd_cpmc" id="产品名称" @keydown="ent1($event)" :clearable="true"/>
  403. </el-form-item>
  404. </el-col>
  405. <!-- @blur="getYJMCsubmit()" -->
  406. </el-row>
  407. <el-row :gutter="24">
  408. <el-col :span="6">
  409. <el-form-item label="印件号:" prop="flatFeed" class="mab">
  410. <el-input v-model="formData.sczl_yjno" id="印件号" @focus="yjnoHandleFocus()"
  411. @keydown="ent1($event,'印件号')" :clearable="true" />
  412. </el-form-item>
  413. </el-col>
  414. <el-col :span="18">
  415. <el-form-item
  416. label="印件名称:"
  417. prop="perTenThousand"
  418. class="mab"
  419. label-width="150"
  420. >
  421. <el-input
  422. v-model="formData.yj_yjmc"
  423. id="印件名称"
  424. @keydown="ent1($event)"
  425. :clearable="true"
  426. />
  427. </el-form-item>
  428. </el-col>
  429. </el-row>
  430. <!-- @blur="getGXsubmit()" -->
  431. <el-row :gutter="24">
  432. <el-col :span="14">
  433. <el-form-item label="工序名称:" prop="flatFeed" class="mab">
  434. <el-input
  435. v-model="formData.sczl_gxmc"
  436. id="工序名称"
  437. @focus="gxmcHandleFocus()"
  438. @keydown="ent1($event,'工序名称')"
  439. :clearable="true"
  440. style="width: 350px"
  441. />
  442. <el-input
  443. v-model="formData.sczl_gxh"
  444. id="工序号"
  445. :readonly="true"
  446. :clearable="true"
  447. style="width: 50px; margin-left: 10px"
  448. />
  449. </el-form-item>
  450. </el-col>
  451. <el-col :span="10">
  452. <el-form-item
  453. label="工艺名称:"
  454. prop="perTenThousand"
  455. class="mab"
  456. >
  457. <el-input
  458. v-model="formData.sczl_type"
  459. id="工艺名称"
  460. :readonly="true"
  461. :clearable="true"
  462. style="width: 200px"
  463. />
  464. </el-form-item>
  465. </el-col>
  466. </el-row>
  467. <el-row :gutter="24">
  468. <el-col :span="6">
  469. <el-form-item label="日期:" prop="flatFeed" class="mab">
  470. <el-input
  471. type="date"
  472. max="9999-12-31"
  473. v-model="formData.sczl_rq"
  474. id="日期"
  475. @focus="rqHandleFocus()"
  476. @keydown="ent1($event)"
  477. :clearable="true"
  478. style="width: 200px"
  479. />
  480. </el-form-item>
  481. </el-col>
  482. <!-- @blur="getJtbhsubmit()" -->
  483. <el-col :span="8">
  484. <el-form-item label="机器:" prop="flatFeed" class="mab">
  485. <el-input
  486. v-model="formData.sczl_jtbh"
  487. id="机器"
  488. @keydown="ent1($event,'机器')"
  489. :clearable="true"
  490. style="width: 100px"
  491. />
  492. </el-form-item>
  493. </el-col>
  494. <!-- @blur="getBzsubmit()" -->
  495. <el-col :span="10">
  496. <el-form-item label="组别:" prop="flatFeed" class="mab">
  497. <el-input
  498. v-model="formData.sczl_bzdh"
  499. id="组别"
  500. @keydown="ent1($event,'组别')"
  501. :clearable="true"
  502. style="width: 200px"
  503. />
  504. </el-form-item>
  505. </el-col>
  506. </el-row>
  507. <el-row :gutter="24">
  508. <el-col :span="6">
  509. <el-form-item label="墨色:" prop="flatFeed" class="mab">
  510. <el-input
  511. v-model="formData.sczl_ms"
  512. id="墨色"
  513. @keydown="ent1($event)"
  514. :clearable="true"
  515. style="width: 200px"
  516. />
  517. </el-form-item>
  518. </el-col>
  519. <el-col :span="8">
  520. <el-form-item label="加工联数:" prop="flatFeed" class="mab">
  521. <el-input
  522. v-model="formData.sczl_ls"
  523. id="加工联数"
  524. @keydown="ent1($event)"
  525. :clearable="true"
  526. style="width: 100px; margin-right: 30px"
  527. />
  528. <el-input
  529. v-model="mult1"
  530. id="mult1"
  531. @keydown="ent1($event)"
  532. @blur="mult()"
  533. style="width: 50px"
  534. />
  535. <el-input
  536. v-model="mult2"
  537. id="mult2"
  538. @keydown="ent1($event)"
  539. @blur="mult()"
  540. style="width: 60px"
  541. />
  542. </el-form-item>
  543. </el-col>
  544. <el-col :span="5">
  545. <el-form-item label="产量:" prop="flatFeed" class="mab">
  546. <el-input
  547. v-model="formData.sczl_cl"
  548. id="产量"
  549. @keydown="ent1($event)"
  550. :clearable="true"
  551. style="width: 200px"
  552. />
  553. </el-form-item>
  554. </el-col>
  555. <el-col :span="5">
  556. <el-form-item label="制程废品:" prop="flatFeed" class="mab">
  557. <el-input
  558. v-model="formData.sczl_zcfp"
  559. id="制程废品"
  560. @keydown="ent1($event)"
  561. :clearable="true"
  562. style="width: 200px"
  563. />
  564. </el-form-item>
  565. </el-col>
  566. </el-row>
  567. <el-row :gutter="24">
  568. <el-col :span="6">
  569. <el-form-item label="装版总工时:" prop="flatFeed" class="mab">
  570. <el-input
  571. v-model="formData.sczl_装版总工时"
  572. id="装版总工时"
  573. @keydown="ent1($event)"
  574. :clearable="true"
  575. style="width: 200px"
  576. />
  577. </el-form-item>
  578. </el-col>
  579. <el-col :span="8">
  580. <el-form-item
  581. label="装版补产工时:"
  582. prop="flatFeed"
  583. class="mab"
  584. >
  585. <el-input
  586. v-model="formData.sczl_装版工时"
  587. id="装版补产工时"
  588. @keydown="ent1($event)"
  589. :clearable="true"
  590. style="width: 200px"
  591. />
  592. </el-form-item>
  593. </el-col>
  594. <el-col :span="5">
  595. <el-form-item label="保养工时:" prop="flatFeed" class="mab">
  596. <el-input
  597. v-model="formData.sczl_保养工时"
  598. id="保养工时"
  599. @keydown="ent1($event)"
  600. :clearable="true"
  601. style="width: 200px"
  602. />
  603. </el-form-item>
  604. </el-col>
  605. <el-col :span="5">
  606. <el-form-item label="异常停机:" prop="flatFeed" class="mab">
  607. <el-input
  608. v-model="formData.sczl_异常停机工时"
  609. id="异常停机"
  610. @keydown="ent1($event)"
  611. :clearable="true"
  612. style="width: 200px"
  613. />
  614. </el-form-item>
  615. </el-col>
  616. </el-row>
  617. <el-row :gutter="24">
  618. <el-col :span="6">
  619. <el-form-item label="打样总工时:" prop="flatFeed" class="mab">
  620. <el-input
  621. v-model="formData.sczl_打样总工时"
  622. id="打样总工时"
  623. @keydown="ent1($event)"
  624. :clearable="true"
  625. style="width: 200px"
  626. />
  627. </el-form-item>
  628. </el-col>
  629. <el-col :span="8">
  630. <el-form-item
  631. label="打样补产工时:"
  632. prop="flatFeed"
  633. class="mab"
  634. >
  635. <el-input
  636. v-model="formData.sczl_打样工时"
  637. id="打样补产工时"
  638. @keydown="
  639. ent1($event, '打样总工时', '打样补产工时', '通电时间')
  640. "
  641. :clearable="true"
  642. style="width: 200px"
  643. />
  644. </el-form-item>
  645. </el-col>
  646. <el-col :span="10">
  647. <el-form-item label="通电时间:" prop="flatFeed" class="mab">
  648. <el-input
  649. v-model="formData.sczl_设备运行工时"
  650. id="通电时间"
  651. @keydown="
  652. ent1($event, '打样补产工时', '通电时间', '拆片联拼系数')
  653. "
  654. :clearable="true"
  655. style="width: 200px"
  656. />
  657. </el-form-item>
  658. </el-col>
  659. </el-row>
  660. <el-row :gutter="24" style="height: 40px">
  661. <el-col :span="14" v-if="showFormItems">
  662. <el-form-item
  663. label="拆片联拼系数:"
  664. prop="flatFeed"
  665. class="mab"
  666. label-width="417px"
  667. >
  668. <el-input
  669. v-model="formData.拆片联拼系数"
  670. id="拆片联拼系数"
  671. @keydown="
  672. ent1(
  673. $event,
  674. '通电时间',
  675. '拆片联拼系数',
  676. '拆片条小盒系数'
  677. )
  678. "
  679. :clearable="true"
  680. style="width: 200px"
  681. />
  682. </el-form-item>
  683. </el-col>
  684. <el-col :span="10" v-if="showFormItems">
  685. <el-form-item
  686. label="拆片条小盒系数:"
  687. prop="flatFeed"
  688. class="mab"
  689. >
  690. <el-input
  691. v-model="formData.拆片条小盒系数"
  692. id="拆片条小盒系数"
  693. @keydown="
  694. ent1(
  695. $event,
  696. '拆片联拼系数',
  697. '拆片条小盒系数',
  698. '定额代号'
  699. )
  700. "
  701. :clearable="true"
  702. style="width: 200px"
  703. />
  704. </el-form-item>
  705. </el-col>
  706. </el-row>
  707. <el-row :gutter="24">
  708. <el-col :span="14">
  709. <el-form-item
  710. label="定额代号:"
  711. prop="flatFeed"
  712. class="mab"
  713. label-width="417px"
  714. >
  715. <el-input
  716. v-model="formData.sczl_dedh"
  717. id="定额代号"
  718. @keydown="
  719. ent1($event, '拆片条小盒系数', '定额代号', '工价系数');
  720. "
  721. :clearable="true"
  722. style="width: 200px"
  723. />
  724. </el-form-item>
  725. </el-col>
  726. <el-col :span="5">
  727. <el-form-item
  728. label="工价系数:"
  729. v-if="showFormItems"
  730. prop="flatFeed"
  731. class="mab"
  732. >
  733. <el-input
  734. v-model="formData.sczl_工价系数"
  735. id="工价系数"
  736. @keydown="
  737. ent1($event, '定额代号', '工价系数', '计产系数')
  738. "
  739. :clearable="true"
  740. style="width: 200px"
  741. />
  742. </el-form-item>
  743. </el-col>
  744. <el-col :span="5">
  745. <el-form-item
  746. label="计产系数:"
  747. v-if="showFormItems"
  748. prop="flatFeed"
  749. class="mab"
  750. >
  751. <el-input
  752. v-model="formData.sczl_计产系数"
  753. id="计产系数"
  754. @keydown="
  755. ent1($event, '工价系数', '计产系数', 'sczl_bh1')
  756. "
  757. :clearable="true"
  758. style="width: 200px"
  759. />
  760. </el-form-item>
  761. </el-col>
  762. </el-row>
  763. <el-row :gutter="22" style="margin-top: 10px">
  764. <el-col :span="2"></el-col>
  765. <el-col :span="2"><span>员工姓名1</span></el-col>
  766. <el-col :span="2"><span>员工姓名2</span></el-col>
  767. <el-col :span="2"><span>员工姓名3</span></el-col>
  768. <el-col :span="2"><span>员工姓名4</span></el-col>
  769. <el-col :span="2"><span>员工姓名5</span></el-col>
  770. <el-col :span="2"><span>员工姓名6</span></el-col>
  771. <el-col :span="2"><span>员工姓名7</span></el-col>
  772. <el-col :span="2"><span>员工姓名8</span></el-col>
  773. <el-col :span="2"><span>员工姓名9</span></el-col>
  774. <el-col :span="2"
  775. ><span><b>特殊组员</b></span></el-col
  776. >
  777. </el-row>
  778. <el-row :gutter="22" style="margin-top: 10px">
  779. <el-col :span="2"><span>班组成员</span></el-col>
  780. <el-col :span="2">
  781. <el-input
  782. v-model="formData.sczl_bh1"
  783. id="sczl_bh1"
  784. @blur="GetYg($event, '1')"
  785. @keydown="getGxMcsubmit($event, '1')"
  786. />
  787. </el-col>
  788. <el-col :span="2">
  789. <el-input
  790. v-model="formData.sczl_bh2"
  791. id="sczl_bh2"
  792. @blur="GetYg($event, '2')"
  793. @keydown="getGxMcsubmit($event, '2')"
  794. />
  795. </el-col>
  796. <el-col :span="2">
  797. <el-input
  798. v-model="formData.sczl_bh3"
  799. id="sczl_bh3"
  800. @blur="GetYg($event, '3')"
  801. @keydown="getGxMcsubmit($event, '3')"
  802. />
  803. </el-col>
  804. <el-col :span="2">
  805. <el-input
  806. v-model="formData.sczl_bh4"
  807. id="sczl_bh4"
  808. @blur="GetYg($event, '4')"
  809. @keydown="getGxMcsubmit($event, '4')"
  810. />
  811. </el-col>
  812. <el-col :span="2">
  813. <el-input
  814. v-model="formData.sczl_bh5"
  815. id="sczl_bh5"
  816. @blur="GetYg($event, '5')"
  817. @keydown="getGxMcsubmit($event, '5')"
  818. />
  819. </el-col>
  820. <el-col :span="2">
  821. <el-input
  822. v-model="formData.sczl_bh6"
  823. id="sczl_bh6"
  824. @blur="GetYg($event, '6')"
  825. @keydown="getGxMcsubmit($event, '6')"
  826. />
  827. </el-col>
  828. <el-col :span="2">
  829. <el-input
  830. v-model="formData.sczl_bh7"
  831. id="sczl_bh7"
  832. @blur="GetYg($event, '7')"
  833. @keydown="getGxMcsubmit($event, '7')"
  834. />
  835. </el-col>
  836. <el-col :span="2">
  837. <el-input
  838. v-model="formData.sczl_bh8"
  839. id="sczl_bh8"
  840. @blur="GetYg($event, '8')"
  841. @keydown="getGxMcsubmit($event, '8')"
  842. />
  843. </el-col>
  844. <el-col :span="2">
  845. <el-input
  846. v-model="formData.sczl_bh9"
  847. id="sczl_bh9"
  848. @blur="GetYg($event, '9')"
  849. @keydown="getGxMcsubmit($event, '9')"
  850. />
  851. </el-col>
  852. <el-col :span="2">
  853. <el-input
  854. v-model="formData.sczl_bh10"
  855. id="sczl_bh10"
  856. @blur="GetYg($event, '10')"
  857. @keydown="getGxMcsubmit($event, '10')"
  858. />
  859. </el-col>
  860. </el-row>
  861. </el-form>
  862. <el-row :gutter="22" style="margin-top: 10px">
  863. <el-col :span="2"></el-col>
  864. <el-col :span="2">
  865. <el-input
  866. v-model="formData.sczl_bh1_name"
  867. id="name1"
  868. :readonly="true"
  869. />
  870. </el-col>
  871. <el-col :span="2">
  872. <el-input
  873. v-model="formData.sczl_bh2_name"
  874. id="name2"
  875. :readonly="true"
  876. />
  877. </el-col>
  878. <el-col :span="2">
  879. <el-input
  880. v-model="formData.sczl_bh3_name"
  881. id="name3"
  882. :readonly="true"
  883. />
  884. </el-col>
  885. <el-col :span="2">
  886. <el-input
  887. v-model="formData.sczl_bh4_name"
  888. id="name4"
  889. :readonly="true"
  890. />
  891. </el-col>
  892. <el-col :span="2">
  893. <el-input
  894. v-model="formData.sczl_bh5_name"
  895. id="name5"
  896. :readonly="true"
  897. />
  898. </el-col>
  899. <el-col :span="2">
  900. <el-input
  901. v-model="formData.sczl_bh6_name"
  902. id="name6"
  903. :readonly="true"
  904. />
  905. </el-col>
  906. <el-col :span="2">
  907. <el-input
  908. v-model="formData.sczl_bh7_name"
  909. id="name7"
  910. :readonly="true"
  911. />
  912. </el-col>
  913. <el-col :span="2">
  914. <el-input
  915. v-model="formData.sczl_bh8_name"
  916. id="name8"
  917. :readonly="true"
  918. />
  919. </el-col>
  920. <el-col :span="2">
  921. <el-input
  922. v-model="formData.sczl_bh9_name"
  923. id="name9"
  924. :readonly="true"
  925. />
  926. </el-col>
  927. <el-col :span="2">
  928. <el-input
  929. v-model="formData.sczl_bh10_name"
  930. id="name10"
  931. :readonly="true"
  932. />
  933. </el-col>
  934. </el-row>
  935. <el-row :gutter="22" style="margin-top: 10px">
  936. <el-col :span="2"></el-col>
  937. <el-col :span="2">
  938. <el-input
  939. v-model="formData.sczl_rate1"
  940. id="rate1"
  941. @input="updateTotal"
  942. @keydown="rate($event, '1')"
  943. />
  944. </el-col>
  945. <el-col :span="2">
  946. <el-input
  947. v-model="formData.sczl_rate2"
  948. id="rate2"
  949. @input="updateTotal"
  950. @keydown="rate($event, '2')"
  951. />
  952. </el-col>
  953. <el-col :span="2">
  954. <el-input
  955. v-model="formData.sczl_rate3"
  956. id="rate3"
  957. @input="updateTotal"
  958. @keydown="rate($event, '3')"
  959. />
  960. </el-col>
  961. <el-col :span="2">
  962. <el-input
  963. v-model="formData.sczl_rate4"
  964. id="rate4"
  965. @input="updateTotal"
  966. @keydown="rate($event, '4')"
  967. />
  968. </el-col>
  969. <el-col :span="2">
  970. <el-input
  971. v-model="formData.sczl_rate5"
  972. id="rate5"
  973. @input="updateTotal"
  974. @keydown="rate($event, '5')"
  975. />
  976. </el-col>
  977. <el-col :span="2">
  978. <el-input
  979. v-model="formData.sczl_rate6"
  980. id="rate6"
  981. @input="updateTotal"
  982. @keydown="rate($event, '6')"
  983. />
  984. </el-col>
  985. <el-col :span="2">
  986. <el-input
  987. v-model="formData.sczl_rate7"
  988. id="rate7"
  989. @input="updateTotal"
  990. @keydown="rate($event, '7')"
  991. />
  992. </el-col>
  993. <el-col :span="2">
  994. <el-input
  995. v-model="formData.sczl_rate8"
  996. id="rate8"
  997. @input="updateTotal"
  998. @keydown="rate($event, '8')"
  999. />
  1000. </el-col>
  1001. <el-col :span="2">
  1002. <el-input
  1003. v-model="formData.sczl_rate9"
  1004. id="rate9"
  1005. @input="updateTotal"
  1006. @keydown="rate($event, '9')"
  1007. />
  1008. </el-col>
  1009. <el-col :span="2">
  1010. <el-input
  1011. v-model="formData.sczl_rate10"
  1012. id="rate10"
  1013. @input="updateTotal"
  1014. @keydown="rate($event, '10')"
  1015. />
  1016. </el-col>
  1017. </el-row>
  1018. <template #footer>
  1019. <div class="dialog-footer">
  1020. <el-button @click="closeDialog">取 消</el-button>
  1021. <el-button type="primary" @click="enterDialog" :disabled="!clickedlist">确 定</el-button>
  1022. </div>
  1023. </template>
  1024. </el-dialog>
  1025. <!-- 员工选择 -->
  1026. <el-dialog
  1027. v-model="dialogSelectVisible_Yg"
  1028. title="选择"
  1029. destroy-on-close
  1030. width="300px"
  1031. @keydown="selectGX_Yg($event)"
  1032. >
  1033. <el-table
  1034. tooltip-effect="dark"
  1035. :data="selectData_Yg"
  1036. row-key="ID"
  1037. highlight-current-row="true"
  1038. border
  1039. style="width: 100%"
  1040. @row-dblclick="handleSelectClick_Yg"
  1041. ref="table_Yg"
  1042. >
  1043. <el-table-column prop="员工编号" label="员工编号" width="100" />
  1044. <el-table-column prop="ygxm" label="员工姓名" width="200" />
  1045. </el-table>
  1046. </el-dialog>
  1047. <el-dialog
  1048. v-model="GetDedhVisible"
  1049. title="选择"
  1050. destroy-on-close
  1051. width="600px"
  1052. @open="handleDialogOpen"
  1053. >
  1054. <el-aside width="250px">
  1055. <div class="JKWTree-tree">
  1056. <el-tree
  1057. ref="treeRef"
  1058. :data="GetDedhtreeData"
  1059. :props="defaultProps"
  1060. node-key="sys_bh"
  1061. highlight-current="true"
  1062. @node-click="GetDedhhandleNodeClick"
  1063. @node-dblclick="handleNodeDoubleClick"
  1064. ></el-tree>
  1065. </div>
  1066. </el-aside>
  1067. </el-dialog>
  1068. <el-dialog v-model="GXVisible" title="选择" destroy-on-close width="800px" @keydown="selectGxmc($event)">
  1069. <el-table
  1070. tooltip-effect="dark"
  1071. :data="selectData"
  1072. row-key="ID" highlight-current-row="true"
  1073. border style="width: 100%"
  1074. ref="tablesczl_gxmc"
  1075. @row-dblclick="SelectClick" >
  1076. <el-table-column prop="sczl_gxmc" label="工序名称" width="750" />
  1077. </el-table>
  1078. </el-dialog>
  1079. <el-dialog
  1080. v-model="JtbhVisible"
  1081. title="选择"
  1082. destroy-on-close
  1083. width="800px"
  1084. @keydown="selectSb($event)"
  1085. >
  1086. <el-table
  1087. tooltip-effect="dark"
  1088. :data="selectDataJtbh"
  1089. row-key="ID"
  1090. highlight-current-row="true"
  1091. border
  1092. style="width: 100%"
  1093. @row-dblclick="SelectClickJtbh"
  1094. ref="tablesb"
  1095. >
  1096. <el-table-column prop="jtbh" label="设备编号" width="150" />
  1097. <el-table-column prop="设备名称" label="设备名称" width="600" />
  1098. </el-table>
  1099. </el-dialog>
  1100. <el-dialog
  1101. v-model="BzVisible"
  1102. title="选择"
  1103. destroy-on-close
  1104. width="200px"
  1105. @keydown="selectBZ($event)"
  1106. >
  1107. <el-table
  1108. tooltip-effect="dark"
  1109. :data="selectDataBz"
  1110. row-key="ID"
  1111. highlight-current-row="true"
  1112. border
  1113. style="width: 100%"
  1114. @row-dblclick="SelectClickBz"
  1115. ref="table2"
  1116. >
  1117. <el-table-column prop="sczl_bzdh" label="班组" width="150" />
  1118. </el-table>
  1119. </el-dialog>
  1120. <el-dialog v-model="YjhVisible" title="选择" destroy-on-close width="200px" @keydown="selectYjh($event)" >
  1121. <el-table
  1122. tooltip-effect="dark"
  1123. :data="selectDataYjh"
  1124. row-key="ID"
  1125. highlight-current-row="true"
  1126. border
  1127. style="width: 100%;"
  1128. @row-dblclick="SelectClickYjh"
  1129. ref="tablesczl_yjno" >
  1130. <el-table-column prop="yjno" label="印件号" width="170"/>
  1131. </el-table>
  1132. </el-dialog>
  1133. <!--工序产量核查【弹窗】-->
  1134. <el-dialog v-model="gd_gxclhclist" title="工序产量核查" style="width: 100%;height: 100%;margin: 0px;padding: 0px">
  1135. <el-button type="" @click="gxclhcCancel">退出</el-button>
  1136. <div style="width: 100%; height: 60px; padding: 0px; margin: 10px 0px 0px 0px; display: flex; align-items: center;">
  1137. <div style="width: 100%; height: 60px; padding: 0px; display: flex; align-items: center;">
  1138. <el-form-item label="工单编号" prop="currentProcess" style="margin-right: 20px; padding: 20px 0 0 0 ">
  1139. <el-input v-model="gxclhcformData['gdbh']" @keyup.enter="gxclhcProductValue" />
  1140. </el-form-item>
  1141. 印件选择:
  1142. <el-select v-model="gdwhformData.yjno" placeholder="请选择" allow-create filterable style="width: 100px;margin-right: 20px; padding: 0px;">
  1143. <el-option v-for="option in gdwhformData.yinjian" @click="ongdwhfanclick" :key="option" :label="option" :value="option" />
  1144. </el-select>
  1145. <el-input v-model="inputCpmc" readonly style="width: 50vw; margin-right: 0px;" />
  1146. </div>
  1147. </div>
  1148. <el-table ref="paichengRef"
  1149. :show-overflow-tooltip="true"
  1150. :row-style="{ height: '0px' }"
  1151. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '0px' }"
  1152. :header-cell-style="{ padding: '0px' }"
  1153. style="width: 100%;height: 70vh" border tooltip-effect="dark"
  1154. highlight-current-row="true"
  1155. @row-click="gxclhc_tableRowClick"
  1156. :data="gxclhc_Data" row-key="ID"
  1157. :cell-class-name="gxclhcCellClass">
  1158. <template v-for="(item, idx) in gxclhc_Columns">
  1159. <el-table-column #default="{ row, column, $index }" align="left" :label="item.label" :width="item.width" >
  1160. {{row[item.prop]}}
  1161. </el-table-column>
  1162. </template>
  1163. </el-table>
  1164. </el-dialog>
  1165. </el-main>
  1166. </el-container>
  1167. </el-container>
  1168. </div>
  1169. </template>
  1170. <script setup>
  1171. import {
  1172. getproductionCount,
  1173. getproductionList,
  1174. productionlocate,
  1175. productionByGdbh,
  1176. productionInfo,
  1177. productionGdmc,
  1178. productionYjmc,
  1179. productionGx,
  1180. productionDedh,
  1181. productionedit,
  1182. productiondel,
  1183. getYg,
  1184. productionadd,
  1185. reportGetJtbh,
  1186. dedhGetRate,
  1187. Export,
  1188. ProductionData,
  1189. } from "@/api/jixiaoguanli/jitairibaobiao";
  1190. // 全量引入格式化工具 请按需保留
  1191. import {
  1192. getDictFunc,
  1193. formatDate,
  1194. formatBoolean,
  1195. filterDict,
  1196. ReturnArrImg,
  1197. onDownloadFile,
  1198. } from "@/utils/format";
  1199. import { ElMessage, ElMessageBox } from "element-plus";
  1200. import { Search, Refresh, Download } from "@element-plus/icons-vue";
  1201. import * as XLSX from 'xlsx'
  1202. import FileSaver from 'file-saver'
  1203. import { ref, reactive, nextTick, onMounted, onBeforeMount } from "vue";
  1204. import { getPackingSideTable, getPackingTable } from "@/api/mes_api_gty/myapi";
  1205. import {
  1206. Layout,
  1207. LayoutContent,
  1208. LayoutHeader,
  1209. LayoutSider,
  1210. } from "@arco-design/web-vue";
  1211. import {getOrderProcessCount,PrintDetailList} from '@/api/yunyin/yunying'
  1212. import { exportExcelFile } from "@/utils/excel";
  1213. import { useUserStore } from "@/pinia/modules/user";
  1214. const userStore = useUserStore();
  1215. const sys_id =
  1216. "[" + userStore.userInfo.userName + "/" + userStore.userInfo.nickName + "]";
  1217. defineOptions({
  1218. name: "06-packingDocuments",
  1219. });
  1220. const GetDedhVisible = ref(false);
  1221. // 侧边栏数据请求
  1222. const treeData = reactive([]);
  1223. const getTabdata = async () => {
  1224. //接口调用函数
  1225. const response = await getproductionCount();
  1226. const transformedData = response.data.map((item) => ({
  1227. label: `${item.date.replace(/-/g, ".")}【单据数: ${item.counts}张】`,
  1228. children: Object.keys(item.sys).map((sysItem) => {
  1229. const matchResult = sysItem.match(/\[(.*?)\]/);
  1230. const sysLabel = matchResult ? matchResult[1] : "";
  1231. return {
  1232. label: `${sysLabel}【记录数: ${item.sys[sysItem]}张】`,
  1233. params: {
  1234. date: item.date.replace(/\./g, "-"),
  1235. sys_id: sysItem,
  1236. total: item.sys[sysItem],
  1237. },
  1238. };
  1239. }),
  1240. }));
  1241. treeData.splice(0, treeData.length, ...transformedData);
  1242. displayMod.value = "date";
  1243. };
  1244. getTabdata();
  1245. const mult1 = ref("0.00");
  1246. const mult2 = ref("0.000");
  1247. // 自动化生成的字典(可能为空)以及字段
  1248. const formData = ref({
  1249. sczl_gdbh: "",
  1250. Gd_cpmc: "",
  1251. sczl_yjno: "",
  1252. yj_yjmc: "",
  1253. sczl_gxmc: "",
  1254. sczl_gxh: "",
  1255. sczl_type: "",
  1256. sczl_rq: "",
  1257. sczl_jtbh: "",
  1258. sczl_bzdh: "",
  1259. sczl_ms: "",
  1260. sczl_ls: "",
  1261. sczl_cl: "0.0",
  1262. sczl_zcfp: "0",
  1263. sczl_装版总工时: "0.00",
  1264. sczl_装版工时: "0.00",
  1265. sczl_保养工时: "0.00",
  1266. sczl_异常停机工时: "0.00",
  1267. sczl_打样总工时: "",
  1268. sczl_打样工时: "0.00",
  1269. sczl_设备运行工时: "0.00",
  1270. 拆片联拼系数: "",
  1271. 拆片条小盒系数: "",
  1272. sczl_dedh: "",
  1273. sczl_工价系数: "",
  1274. sczl_计产系数: "",
  1275. sczl_bh1: "",
  1276. sczl_bh2: "",
  1277. sczl_bh3: "",
  1278. sczl_bh4: "",
  1279. sczl_bh5: "",
  1280. sczl_bh6: "",
  1281. sczl_bh7: "",
  1282. sczl_bh8: "",
  1283. sczl_bh9: "",
  1284. sczl_bh10: "",
  1285. sczl_rate1: "",
  1286. sczl_rate2: "",
  1287. sczl_rate3: "",
  1288. sczl_rate4: "",
  1289. sczl_rate5: "",
  1290. sczl_rate6: "",
  1291. sczl_rate7: "",
  1292. sczl_rate8: "",
  1293. sczl_rate9: "",
  1294. sczl_rate10: "",
  1295. sczl_bh1_name: "",
  1296. sczl_bh2_name: "",
  1297. sczl_bh3_name: "",
  1298. sczl_bh4_name: "",
  1299. sczl_bh5_name: "",
  1300. sczl_bh6_name: "",
  1301. sczl_bh7_name: "",
  1302. sczl_bh8_name: "",
  1303. sczl_bh9_name: "",
  1304. sczl_bh10_name: "",
  1305. });
  1306. const initFormData = () => {
  1307. formData.value = {
  1308. sczl_gdbh: "",
  1309. Gd_cpmc: "",
  1310. sczl_yjno: "",
  1311. yj_yjmc: "",
  1312. sczl_gxmc: "",
  1313. sczl_gxh: "",
  1314. sczl_type: "",
  1315. sczl_rq: "",
  1316. sczl_jtbh: "",
  1317. sczl_bzdh: "",
  1318. sczl_ms: "",
  1319. sczl_ls: "",
  1320. sczl_cl: "0.0",
  1321. sczl_zcfp: "0",
  1322. sczl_装版总工时: "0.00",
  1323. sczl_装版工时: "0.00",
  1324. sczl_保养工时: "0.00",
  1325. sczl_异常停机工时: "0.00",
  1326. sczl_打样总工时: "",
  1327. sczl_打样工时: "0.00",
  1328. sczl_设备运行工时: "0.00",
  1329. 拆片联拼系数: "1",
  1330. 拆片条小盒系数: "",
  1331. sczl_dedh: "",
  1332. sczl_工价系数: "",
  1333. sczl_计产系数: "",
  1334. // sczl_bh1: "",
  1335. // sczl_bh2: "",
  1336. // sczl_bh3: "",
  1337. // sczl_bh4: "",
  1338. // sczl_bh5: "",
  1339. // sczl_bh6: "",
  1340. // sczl_bh7: "",
  1341. // sczl_bh8: "",
  1342. // sczl_bh9: "",
  1343. // sczl_bh10: "",
  1344. // sczl_rate1: "",
  1345. // sczl_rate2: "",
  1346. // sczl_rate3: "",
  1347. // sczl_rate4: "",
  1348. // sczl_rate5: "",
  1349. // sczl_rate6: "",
  1350. // sczl_rate7: "",
  1351. // sczl_rate8: "",
  1352. // sczl_rate9: "",
  1353. // sczl_rate10: "",
  1354. // sczl_bh1_name: "",
  1355. // sczl_bh2_name: "",
  1356. // sczl_bh3_name: "",
  1357. // sczl_bh4_name: "",
  1358. // sczl_bh5_name: "",
  1359. // sczl_bh6_name: "",
  1360. // sczl_bh7_name: "",
  1361. // sczl_bh8_name: "",
  1362. // sczl_bh9_name: "",
  1363. // sczl_bh10_name: "",
  1364. };
  1365. };
  1366. // 验证规则
  1367. const rule = reactive({
  1368. sczl_gdbh: [
  1369. {
  1370. required: true,
  1371. message: "",
  1372. trigger: [],
  1373. },
  1374. ],
  1375. sczl_yjno: [
  1376. {
  1377. required: true,
  1378. message: "",
  1379. trigger: [],
  1380. },
  1381. ],
  1382. sczl_gxmc: [
  1383. {
  1384. required: true,
  1385. message: "",
  1386. trigger: [],
  1387. },
  1388. ],
  1389. sczl_gxh: [
  1390. {
  1391. required: true,
  1392. message: "",
  1393. trigger: [],
  1394. },
  1395. ],
  1396. sczl_type: [
  1397. {
  1398. required: true,
  1399. message: "",
  1400. trigger: [],
  1401. },
  1402. ],
  1403. sczl_rq: [
  1404. {
  1405. required: true,
  1406. message: "",
  1407. trigger: [],
  1408. },
  1409. ],
  1410. sczl_bzdh: [
  1411. {
  1412. required: true,
  1413. message: "",
  1414. trigger: [],
  1415. },
  1416. ],
  1417. sczl_cl: [
  1418. {
  1419. required: true,
  1420. message: "",
  1421. trigger: [],
  1422. },
  1423. ],
  1424. sczl_dedh: [
  1425. {
  1426. required: true,
  1427. message: "",
  1428. trigger: [],
  1429. },
  1430. ],
  1431. });
  1432. const elFormRef = ref();
  1433. const elSearchFormRef = ref();
  1434. // =========== 表格控制部分 ===========
  1435. const tableData = reactive([]);
  1436. const detailData = reactive([]);
  1437. const total = ref(0);
  1438. const page = ref(1);
  1439. const limit = ref(50);
  1440. const searchInfo = ref("");
  1441. const params = {
  1442. type: "",
  1443. date: "",
  1444. sys_id: "",
  1445. gdbh: "",
  1446. };
  1447. // 分页设置
  1448. const handleSizeChange = (val) => {
  1449. switch (params.type) {
  1450. case "getTableData":
  1451. getTableData();
  1452. break;
  1453. case "getLocateTable":
  1454. GetLocate();
  1455. break;
  1456. default:
  1457. break;
  1458. }
  1459. };
  1460. // 页面跳转
  1461. const handleCurrentChange = (val) => {
  1462. switch (params.type) {
  1463. case "getTableData":
  1464. getTableData();
  1465. break;
  1466. case "getLocateTable":
  1467. GetLocate();
  1468. break;
  1469. default:
  1470. break;
  1471. }
  1472. };
  1473. //定位
  1474. // const GetLocate = async () => {
  1475. // const response = await productionlocate({
  1476. // gdbh: params.gdbh,
  1477. // page: page.value.toString(), limit: limit.value.toString(),
  1478. // })
  1479. // if (response.code === 0) {
  1480. // console.log(response)
  1481. // const processedData = response.data.rows.map(item => {
  1482. // return {
  1483. // ...item,
  1484. // combinedProp: item.sczl_gdbh + '--'+item.yj_yjmc,
  1485. // combinedProp2: item.sczl_yjgx + '-'+item.sczl_gxmc
  1486. // };
  1487. // });
  1488. // total.value = response.data.total
  1489. // tableData.splice(0, tableData.length, ...processedData);
  1490. // }
  1491. // }
  1492. const GetLocate = async () => {
  1493. console.log(params.gdbh);
  1494. console.log(page.value.toString());
  1495. console.log(limit.value.toString());
  1496. const response = await productionlocate({
  1497. gdbh: params.gdbh,
  1498. page: page.value.toString(),
  1499. limit: limit.value.toString(),
  1500. });
  1501. console.log(response);
  1502. if (response.code === 0) {
  1503. const processedData = response.data.rows.map((item) => {
  1504. return {
  1505. ...item,
  1506. combinedProp: item.sczl_gdbh + "--" + item.yj_yjmc,
  1507. combinedProp2: item.sczl_yjgx + "-" + item.sczl_gxmc,
  1508. };
  1509. });
  1510. total.value = parseInt(response.data.total);
  1511. // limit.value=response.data.total
  1512. tableData.splice(0, tableData.length, ...processedData);
  1513. }
  1514. };
  1515. let positionvalue = ref();
  1516. //获取列表
  1517. const getTableData = async () => {
  1518. const response = await getproductionList({
  1519. date: params.date,
  1520. sys_id: params.sys_id,
  1521. page: page.value.toString(),
  1522. limit: limit.value.toString(),
  1523. });
  1524. if (response.code === 0) {
  1525. tableData.splice(0, tableData.length, ...response.data.rows);
  1526. console.log(tableData);
  1527. }
  1528. };
  1529. const handleNodeClick = (node, check) => {
  1530. //存放当前节点的nodeId
  1531. if (node.params) {
  1532. params.date = node.params.date;
  1533. params.sys_id = node.params.sys_id;
  1534. params.type = "getTableData";
  1535. total.value = node.params.total;
  1536. page.value = 1;
  1537. getTableData();
  1538. }
  1539. };
  1540. //新增键盘事件
  1541. const ent1 = (event,id,id2) => {
  1542. const inputs = document.getElementsByTagName("input");
  1543. const currentIndex = Array.from(inputs).indexOf(event.target);
  1544. // console.log(inputs)
  1545. if(event.keyCode === 13 && id ==='工单编号'){
  1546. //调用印件号选择方法
  1547. getCPMCsubmit()
  1548. }
  1549. if(event.keyCode === 13 && id ==='印件号'){
  1550. console.log("回车印件号")
  1551. //调用印件号选择方法
  1552. getYJMCsubmit()
  1553. }
  1554. if(event.keyCode === 13 && id ==='工序名称'){
  1555. console.log(formData.value.sczl_gxmc)
  1556. //调用工序选择方法
  1557. getGXsubmit()
  1558. }
  1559. if(event.keyCode === 13 && id ==='组别'){
  1560. console.log("回车组别")
  1561. //调用工序选择方法
  1562. getBzsubmit()
  1563. }
  1564. if(event.keyCode === 13 && id ==='机器'){
  1565. console.log("回车机器")
  1566. //调用工序选择方法
  1567. getJtbhsubmit()
  1568. }
  1569. if(event.keyCode === 13 && id2 ==='定额代号'){
  1570. console.log("定额代号")
  1571. if(formData.value.sczl_gxmc.includes('拆片')){
  1572. formData.value.sczl_dedh = "030001001"
  1573. }else{
  1574. getDedhsubmit()
  1575. }
  1576. }
  1577. if (event.keyCode === 13 || event.keyCode === 40) {
  1578. // Enter 或向下箭头
  1579. for (let i = currentIndex + 1; i < inputs.length; i++) {
  1580. if (!inputs[i].readOnly) {
  1581. nextTick(() => {
  1582. inputs[i].focus();
  1583. inputs[i].select();
  1584. });
  1585. break;
  1586. }
  1587. }
  1588. } else if (event.keyCode === 38) {
  1589. // 向上箭头
  1590. for (let i = currentIndex - 1; i >= 0; i--) {
  1591. if (!inputs[i].readOnly) {
  1592. nextTick(() => {
  1593. inputs[i].focus();
  1594. inputs[i].select();
  1595. });
  1596. break;
  1597. }
  1598. }
  1599. } else if (event.keyCode === 8) {
  1600. // 删除箭头
  1601. if (event.target.selectionStart === 0) {
  1602. for (let i = currentIndex - 1; i >= 0; i--) {
  1603. if (!inputs[i].readOnly) {
  1604. nextTick(() => {
  1605. inputs[i].focus();
  1606. inputs[i].setSelectionRange(0, 0);
  1607. inputs[i].select(); // 全选输入框内容
  1608. });
  1609. break;
  1610. }
  1611. }
  1612. }
  1613. } else if (event.keyCode === 37) {
  1614. // 向左箭头
  1615. if (event.target.selectionStart === 0) {
  1616. for (let i = currentIndex - 1; i >= 0; i--) {
  1617. if (!inputs[i].readOnly) {
  1618. nextTick(() => {
  1619. inputs[i].focus();
  1620. inputs[i].select();
  1621. });
  1622. break;
  1623. }
  1624. }
  1625. }
  1626. } else if (event.keyCode === 39) {
  1627. // 向右箭头
  1628. if (event.target.selectionStart === event.target.value.length) {
  1629. for (let i = currentIndex + 1; i < inputs.length; i++) {
  1630. if (!inputs[i].readOnly) {
  1631. nextTick(() => {
  1632. inputs[i].focus();
  1633. inputs[i].select();
  1634. });
  1635. break;
  1636. }
  1637. }
  1638. }
  1639. }
  1640. };
  1641. //追加字体颜色和不可输入
  1642. const setColorReadonly = (id) => {
  1643. const newInput = document.getElementById(id);
  1644. newInput.style.color = "red";
  1645. newInput.setAttribute("readonly", true);
  1646. };
  1647. //追加字体颜色和可输入
  1648. const unsetColorReadonly = (id) => {
  1649. const newInput = document.getElementById(id);
  1650. newInput.style.color = "black";
  1651. newInput.removeAttribute("readonly");
  1652. };
  1653. //工单编号回车事件
  1654. const getCPMCsubmit = () => {
  1655. if (formData.value.sczl_gdbh != "") {
  1656. productionGdmc({
  1657. gdbh: formData.value.sczl_gdbh,
  1658. }).then((response) => {
  1659. if (response.code === 0) {
  1660. formData.value.Gd_cpmc = response.data.Gd_cpmc;
  1661. yjnoArr.value = response.data.yjno;
  1662. document.getElementById("产品名称").style.color = "red";
  1663. } else {
  1664. formData.value.sczl_gdbh = "";
  1665. formData.value.Gd_cpmc = "";
  1666. gxmc.value = "";
  1667. document.getElementById("产品名称").style.color = "black";
  1668. }
  1669. });
  1670. } else {
  1671. ElMessage({
  1672. type: "error",
  1673. message: "请注意, 工单编号输入空置, 除非有特殊需要!",
  1674. });
  1675. gxmc.value = "";
  1676. document.getElementById("产品名称").style.color = "black";
  1677. }
  1678. };
  1679. //印件号数组
  1680. const yjnoArr = ref([0]);
  1681. //印件号弹窗
  1682. const selectDataYjh = reactive([]);
  1683. const YjhVisible = ref(false);
  1684. const currentIndex = ref(0);
  1685. // 工序名称选择
  1686. const currentIndexgx = ref(0);
  1687. const selectGxmc = (event) => {
  1688. console.log(event)
  1689. if (event.keyCode === 40) {
  1690. // 向下箭头
  1691. currentIndexgx.value = (currentIndexgx.value + 1) % selectData.length;
  1692. setCurrentgxmc(selectData[currentIndexgx.value]);
  1693. } else if (event.keyCode === 38) {
  1694. // 向上箭头
  1695. currentIndexgx.value = (currentIndexgx.value - 1) % selectData.length;
  1696. setCurrentgxmc(selectData[currentIndexgx.value]);
  1697. } else if (event.keyCode === 13) {
  1698. // Enter 键
  1699. GXVisible.value = false
  1700. }
  1701. }
  1702. const tablesczl_gxmc = ref();
  1703. const setCurrentgxmc = (row) => {
  1704. console.log(row)
  1705. console.log(123)
  1706. setTimeout(() => {
  1707. tablesczl_gxmc.value?.setCurrentRow(row);
  1708. const { sczl_gxmc } = row;
  1709. formData.value.sczl_type = row.sczl_type;
  1710. formData.value.sczl_gxmc = row.sczl_gxmc;
  1711. formData.value.sczl_gxh = row.sczl_gxh;
  1712. formData.value.sczl_ls = row.sczl_ls;
  1713. // console.log(row);
  1714. // YjhVisible.value = false;
  1715. });
  1716. };
  1717. const selectYjh = (event) => {
  1718. if (event.keyCode === 40) {
  1719. // 向下箭头
  1720. currentIndex.value = (currentIndex.value + 1) % selectDataYjh.length;
  1721. setCurrents(selectDataYjh[currentIndex.value]);
  1722. } else if (event.keyCode === 38) {
  1723. // 向上箭头
  1724. currentIndex.value = (currentIndex.value - 1 + selectDataYjh.length) % selectDataYjh.length;
  1725. setCurrents(selectDataYjh[currentIndex.value]);
  1726. } else if (event.keyCode === 13) {
  1727. // Enter 键
  1728. if (formData.value.sczl_gdbh != "" && formData.value.sczl_yjno != "") {
  1729. //获取印件名称
  1730. productionYjmc({
  1731. gdbh: formData.value.sczl_gdbh,
  1732. yjno: formData.value.sczl_yjno,
  1733. }).then((response) => {
  1734. if (response.code === 0) {
  1735. console.log(response)
  1736. console.log(666)
  1737. formData.value.yj_yjmc = response.data.yj_yjmc;
  1738. formData.value.sczl_ls = response.data.gxmc.sczl_ls;
  1739. formData.value.拆片联拼系数 = response.data.gxmc.拆片联拼系数;
  1740. formData.value.拆片条小盒系数 = response.data.gxmc.拆片条小盒系数;
  1741. if(formData.value.sczl_gxmc === ''){
  1742. gxmc.value = response.data.gxmc;
  1743. formData.value.sczl_gxmc = gxmc.value.sczl_gxmc;
  1744. // formData.value.sczl_gxmc = '01';
  1745. }
  1746. // gxmc.value = response.data.gxmc;
  1747. // formData.value.sczl_gxmc = gxmc.value.sczl_gxmc;
  1748. // formData.value.sczl_gxmc = '01';
  1749. setColorReadonly("印件名称");
  1750. } else {
  1751. ElMessage({
  1752. type: "error",
  1753. message: "印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!",
  1754. });
  1755. formData.value.sczl_yjno = yjnoArr.value[0];
  1756. formData.value.yj_yjmc = "";
  1757. gxmc.value = "";
  1758. }
  1759. });
  1760. } else {
  1761. ElMessage({
  1762. type: "error",
  1763. message: "印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!",
  1764. });
  1765. formData.value.sczl_yjno = yjnoArr.value[0];
  1766. formData.value.yj_yjmc = "";
  1767. gxmc.value = "";
  1768. }
  1769. YjhVisible.value = false;
  1770. }
  1771. };
  1772. const tablesczl_yjno = ref();
  1773. const setCurrents = (row) => {
  1774. setTimeout(() => {
  1775. tablesczl_yjno.value?.setCurrentRow(row);
  1776. // SelectClick(row)
  1777. // console.log(row)
  1778. // console.log(table)
  1779. const { yjno } = row;
  1780. formData.value.sczl_yjno = row.yjno;
  1781. console.log(row);
  1782. });
  1783. };
  1784. //印件号选择
  1785. const SelectClickYjh = (row, column, event) => {
  1786. const { sczl_yjno } = row;
  1787. console.log(row)
  1788. formData.value.sczl_yjno = row.yjno;
  1789. YjhVisible.value = false;
  1790. };
  1791. //印件号失去焦点事件
  1792. const getYJMCsubmit = async () => {
  1793. if (formData.value.sczl_gdbh != "") {
  1794. const response = await productionGdmc({gdbh:formData.value.sczl_gdbh})
  1795. console.log(response)
  1796. YjhVisible.value = true;
  1797. // 将数组转换为对象数组
  1798. const formattedData = response.data.yjno.map(item => ({ yjno: item }));
  1799. selectDataYjh.splice(0, selectDataYjh.length, ...formattedData);
  1800. }
  1801. if (formData.value.sczl_gdbh != "" && formData.value.sczl_yjno != "") {
  1802. //获取印件名称
  1803. productionYjmc({
  1804. gdbh: formData.value.sczl_gdbh,
  1805. yjno: formData.value.sczl_yjno,
  1806. }).then((response) => {
  1807. if (response.code === 0) {
  1808. console.log(response.data.gxmc.拆片条小盒系数)
  1809. formData.value.yj_yjmc = response.data.yj_yjmc;
  1810. // gxmc.value = response.data.gxmc;
  1811. // formData.value.sczl_gxmc = gxmc.value.sczl_gxmc;
  1812. setColorReadonly("印件名称");
  1813. } else {
  1814. // ElMessage({ type: "error", message: "印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!",});
  1815. formData.value.sczl_yjno = yjnoArr.value[0];
  1816. formData.value.yj_yjmc = "";
  1817. gxmc.value = "";
  1818. }
  1819. });
  1820. } else {
  1821. // ElMessage({
  1822. // type: "error",
  1823. // message: "印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!",
  1824. // });
  1825. formData.value.sczl_yjno = yjnoArr.value[0];
  1826. formData.value.yj_yjmc = "";
  1827. formData.value.sczl_yjno = "";
  1828. gxmc.value = "";
  1829. }
  1830. };
  1831. //工序数组
  1832. const gxmc = ref("");
  1833. const showFormItems = ref(true);
  1834. const tableRef = ref();
  1835. //工序数组
  1836. const gxArr = ref({});
  1837. //工序名称获得焦点事件
  1838. // const gxmcHandleFocus = () => {
  1839. // if (gxmc.value != "") {
  1840. // formData.value.sczl_gxmc = gxmc.value.sczl_gxmc;
  1841. // } else {
  1842. // formData.value.sczl_gxmc = "";
  1843. // }
  1844. // };
  1845. //工序失去焦点事件
  1846. const getGXsubmit = () => {
  1847. setColorReadonly("工序号");
  1848. setColorReadonly("工艺名称");
  1849. //工序名称为空
  1850. if (formData.value.sczl_gxmc == "") {
  1851. formData.value.sczl_gxh = 0;
  1852. formData.value.sczl_type = "";
  1853. formData.value.sczl_ls = 0;
  1854. //设置字体和输入
  1855. unsetColorReadonly("制程废品");
  1856. unsetColorReadonly("装版总工时");
  1857. unsetColorReadonly("装版补产工时");
  1858. unsetColorReadonly("保养工时");
  1859. unsetColorReadonly("异常停机");
  1860. unsetColorReadonly("打样补产工时");
  1861. unsetColorReadonly("通电时间");
  1862. } else {
  1863. //弹出选择
  1864. productionGx({
  1865. gdbh: formData.value.sczl_gdbh,
  1866. yjno: formData.value.sczl_yjno,
  1867. }).then((response) => {
  1868. if (response.code === 0) {
  1869. selectData.splice(0, selectData.length, ...response.data);
  1870. GXVisible.value = true;
  1871. // nextTick(()=>{
  1872. // console.log(tableRef)
  1873. // console.log(selectData)
  1874. // tableRef.value.setCurrentRow(selectData[0]);
  1875. // tableRef.value.focus();
  1876. // });
  1877. }
  1878. });
  1879. //工序名称为印件默认值
  1880. if (formData.value.sczl_gxmc == gxmc.value.sczl_gxmc) {
  1881. formData.value.sczl_gxh = gxmc.value.sczl_gxh;
  1882. formData.value.sczl_type = gxmc.value.sczl_type;
  1883. formData.value.sczl_ls = gxmc.value.sczl_ls;
  1884. formData.value.sczl_jtbh = "";
  1885. formData.value.sczl_zcfp = 0;
  1886. formData.value.sczl_装版总工时 = 0;
  1887. formData.value.sczl_装版工时 = 0;
  1888. formData.value.sczl_保养工时 = 0;
  1889. formData.value.sczl_异常停机工时 = 0;
  1890. formData.value.sczl_打样工时 = 0;
  1891. formData.value.sczl_设备运行工时 = 0;
  1892. //设置字体和输入
  1893. setColorReadonly("机器");
  1894. setColorReadonly("制程废品");
  1895. setColorReadonly("装版总工时");
  1896. setColorReadonly("装版补产工时");
  1897. setColorReadonly("保养工时");
  1898. setColorReadonly("异常停机");
  1899. setColorReadonly("打样总工时");
  1900. setColorReadonly("打样补产工时");
  1901. setColorReadonly("通电时间");
  1902. //显示联拼
  1903. showFormItems.value = true;
  1904. } else {
  1905. //弹出选择
  1906. productionGx({
  1907. gdbh: formData.value.sczl_gdbh,
  1908. yjno: formData.value.sczl_yjno,
  1909. }).then((response) => {
  1910. if (response.code === 0) {
  1911. selectData.splice(0, selectData.length, ...response.data);
  1912. GXVisible.value = true;
  1913. // nextTick(()=>{
  1914. // console.log(tableRef)
  1915. // console.log(selectData)
  1916. // tableRef.value.setCurrentRow(selectData[0]);
  1917. // tableRef.value.focus();
  1918. // });
  1919. }
  1920. });
  1921. }
  1922. }
  1923. };
  1924. //工序选择JtbhVisible
  1925. const selectData = reactive([]);
  1926. const GXVisible = ref(false);
  1927. const SelectClick = (row, column, event) => {
  1928. const { sczl_gxmc } = row;
  1929. if (row.sczl_type == "拆片") {
  1930. formData.value.sczl_type = row.sczl_type;
  1931. formData.value.sczl_gxmc = row.sczl_gxmc;
  1932. formData.value.sczl_gxh = row.sczl_gxh;
  1933. formData.value.sczl_ls = row.sczl_ls;
  1934. formData.value.sczl_jtbh = "";
  1935. formData.value.sczl_zcfp = 0;
  1936. formData.value.sczl_装版总工时 = 0;
  1937. formData.value.sczl_装版工时 = 0;
  1938. formData.value.sczl_保养工时 = 0;
  1939. formData.value.sczl_异常停机工时 = 0;
  1940. formData.value.sczl_打样工时 = 0;
  1941. formData.value.sczl_设备运行工时 = 0;
  1942. //设置字体和输入
  1943. setColorReadonly("机器");
  1944. setColorReadonly("制程废品");
  1945. setColorReadonly("装版总工时");
  1946. setColorReadonly("装版补产工时");
  1947. setColorReadonly("保养工时");
  1948. setColorReadonly("异常停机");
  1949. setColorReadonly("打样总工时");
  1950. setColorReadonly("打样补产工时");
  1951. setColorReadonly("通电时间");
  1952. //显示联拼
  1953. showFormItems.value = true;
  1954. } else {
  1955. formData.value.sczl_type = row.sczl_type;
  1956. formData.value.sczl_gxmc = row.sczl_gxmc;
  1957. formData.value.sczl_gxh = row.sczl_gxh;
  1958. formData.value.sczl_ls = row.sczl_ls;
  1959. formData.value.sczl_ms = 0;
  1960. //设置字体和输入
  1961. unsetColorReadonly("机器");
  1962. unsetColorReadonly("制程废品");
  1963. unsetColorReadonly("装版总工时");
  1964. unsetColorReadonly("装版补产工时");
  1965. unsetColorReadonly("保养工时");
  1966. unsetColorReadonly("异常停机");
  1967. unsetColorReadonly("打样总工时");
  1968. unsetColorReadonly("打样补产工时");
  1969. unsetColorReadonly("通电时间");
  1970. //隐藏联拼
  1971. showFormItems.value = false;
  1972. }
  1973. GXVisible.value = false;
  1974. };
  1975. const rqHandleFocus = () => {
  1976. if (formData.value.sczl_rq == "") {
  1977. formData.value.sczl_rq = new Date().toISOString().split("T")[0];
  1978. }
  1979. };
  1980. //=============机台选择===============
  1981. const selectDataJtbh = reactive([]);
  1982. const JtbhVisible = ref(false);
  1983. //鼠标点击选择
  1984. const SelectClickJtbh = (row, column, event) => {
  1985. const { jtbh, 设备编号 } = row;
  1986. formData.value.sczl_jtbh = row.jtbh;
  1987. JtbhVisible.value = false;
  1988. };
  1989. // 机器上下选择
  1990. const tablesb = ref();
  1991. const currentIndexsb = ref(0);
  1992. const selectSb = (event) => {
  1993. if (event.keyCode === 40) {
  1994. // 向下箭头
  1995. currentIndexsb.value = (currentIndexsb.value + 1) % selectDataJtbh.length;
  1996. setCurrentsb(selectDataJtbh[currentIndexsb.value]);
  1997. } else if (event.keyCode === 38) {
  1998. // 向上箭头
  1999. currentIndexsb.value = (currentIndexsb.value - 1 + selectDataJtbh.length) % selectDataJtbh.length;
  2000. setCurrentsb(selectDataJtbh[currentIndexsb.value]);
  2001. } else if (event.keyCode === 13) {
  2002. // Enter键【关闭机器弹窗】
  2003. JtbhVisible.value = false;
  2004. }
  2005. };
  2006. const setCurrentsb = (row) => {
  2007. setTimeout(() => {
  2008. tablesb.value?.setCurrentRow(row);
  2009. const { sczl_jtbh } = row;
  2010. formData.value.sczl_jtbh = row.jtbh;
  2011. });
  2012. };
  2013. //机台失去焦点事件
  2014. const getJtbhsubmit = () => {
  2015. if (BzVisible.value) {return false;}
  2016. //弹出选择
  2017. reportGetJtbh({
  2018. sczl_type: formData.value.sczl_type,
  2019. key_word: "",
  2020. }).then((response) => {
  2021. if (response.code === 0) {
  2022. if (
  2023. response.data.length != 0 &&
  2024. !response.data.some((item) => item.jtbh === formData.value.sczl_jtbh)
  2025. ) {
  2026. selectDataJtbh.splice(0, selectDataJtbh.length, ...response.data);
  2027. JtbhVisible.value = true;
  2028. }
  2029. }
  2030. });
  2031. };
  2032. //==============班组弹窗============
  2033. const getBzsubmit = () => {
  2034. //班组弹出选择
  2035. const data = [
  2036. {sczl_bzdh: "A班",},
  2037. {sczl_bzdh: "B班",},
  2038. ];
  2039. selectDataBz.splice(0, selectDataBz.length, ...data);
  2040. if (!JtbhVisible.value) {
  2041. BzVisible.value = true;
  2042. setCurrent(selectDataBz[0]);
  2043. }
  2044. };
  2045. //班组选择
  2046. const selectDataBz = reactive([]);
  2047. const BzVisible = ref(false);
  2048. const SelectClickBz = (row, column, event) => {
  2049. const { sczl_bzdh } = row;
  2050. formData.value.sczl_bzdh = row.sczl_bzdh;
  2051. BzVisible.value = false;
  2052. };
  2053. const table2 = ref();
  2054. const setCurrent = (row) => {
  2055. setTimeout(() => {
  2056. table2.value?.setCurrentRow(row);
  2057. const { sczl_bzdh } = row;
  2058. formData.value.sczl_bzdh = row.sczl_bzdh;
  2059. console.log(row);
  2060. });
  2061. };
  2062. // 班组弹窗
  2063. const selectBZ = (event) => {
  2064. if (event.keyCode === 40) {
  2065. // Enter 或向下箭头
  2066. setCurrent(selectDataBz[1]);
  2067. } else if (event.keyCode === 38) {
  2068. setCurrent(selectDataBz[0]);
  2069. } else if (event.keyCode === 13) {
  2070. BzVisible.value = false;
  2071. }
  2072. };
  2073. //mult失去焦点事件
  2074. const mult = () => {
  2075. formData.value.sczl_cl = parseFloat(mult1.value * mult2.value);
  2076. };
  2077. let GetDedhtreeData = reactive([]);
  2078. const treeRef = ref(null);
  2079. //定额代号回车事件
  2080. // const getDedhsubmit = () => {
  2081. // //弹出选择
  2082. // let treeData = [];
  2083. // productionDedh({
  2084. // sczl_jtbh: formData.value.sczl_jtbh,
  2085. // }).then((response) => {
  2086. // if (response.code === 0) {
  2087. // if (formData.value.sczl_jtbh == "") {
  2088. // const data = [];
  2089. // data[0] = response.data;
  2090. // // 递归函数来构建树形结构
  2091. // const buildTree = (node) => {
  2092. // const treeNode = {
  2093. // label: node.sys_bh + "【" + node.sys_mc + "】",
  2094. // children: [],
  2095. // };
  2096. // // 如果存在子节点,递归地添加它们
  2097. // if (node.bh_mc && Array.isArray(node.bh_mc)) {
  2098. // node.bh_mc.forEach((childNode) => {
  2099. // treeNode.children.push(buildTree(childNode)); // 递归调用
  2100. // });
  2101. // }
  2102. // return treeNode;
  2103. // };
  2104. // // 构建树形结构的根节点
  2105. // const treeData = data.map(buildTree);
  2106. // GetDedhtreeData = treeData; // 假设这是外部可访问的变量
  2107. // GetDedhVisible.value = true; // 假设这是一个响应式引用
  2108. // console.log(GetDedhtreeData);
  2109. // } else {
  2110. // formData.value.sczl_dedh = response.data["sys_bh"];
  2111. // }
  2112. // }
  2113. // });
  2114. // };
  2115. const getDedhsubmit = async () => {
  2116. try {
  2117. const response = await productionDedh({
  2118. sczl_jtbh: formData.value.sczl_jtbh,
  2119. });
  2120. if (response.code === 0) {
  2121. if (formData.value.sczl_jtbh === "") {
  2122. const data = [response.data];
  2123. console.log(123,response.data.sys_bh)
  2124. const buildTree = (node) => {
  2125. const treeNode = {
  2126. label: node.sys_bh + "【" + node.sys_mc + "】",
  2127. children: [],
  2128. key: node.sys_bh // 添加key属性,用于设置当前节点
  2129. };
  2130. if (node.bh_mc && Array.isArray(node.bh_mc)) {
  2131. node.bh_mc.forEach((childNode) => {
  2132. treeNode.children.push(buildTree(childNode));
  2133. });
  2134. }
  2135. return treeNode;
  2136. };
  2137. GetDedhtreeData = data.map(buildTree);
  2138. GetDedhVisible.value = true;
  2139. } else {
  2140. formData.value.sczl_dedh = response.data.sys_bh;
  2141. }
  2142. }
  2143. } catch (error) {
  2144. console.error(error);
  2145. }
  2146. };
  2147. const handleDialogOpen = () => {
  2148. nextTick(() => {
  2149. if (treeRef.value && GetDedhtreeData.length > 0) {
  2150. // 假设你希望聚焦到第一个节点,可以使用第一个节点的key
  2151. console.log(treeRef.value,GetDedhtreeData.length)
  2152. const firstNodeKey = GetDedhtreeData[0].key;
  2153. console.log(firstNodeKey)
  2154. treeRef.value.setCurrentKey(firstNodeKey);
  2155. }
  2156. });
  2157. };
  2158. //定额代号树形结构单机
  2159. const GetDedhhandleNodeClick = (nodeData, node, component) => {
  2160. //存放当前节点的nodeId
  2161. //存放当前节点的nodeId
  2162. if (!nodeData.children || nodeData.children.length === 0) {
  2163. // 如果节点没有子节点,打印节点名称
  2164. formData.value.sczl_dedh = nodeData.label.split("【")[0];
  2165. dedhGetRate({
  2166. dedh: nodeData.label.split("【")[0],
  2167. }).then((response) => {
  2168. if (response.code === 0) {
  2169. //设置比例
  2170. formData.value.sczl_rate1 = response.data.sczl_rate1;
  2171. formData.value.sczl_rate2 = response.data.sczl_rate2;
  2172. formData.value.sczl_rate3 = response.data.sczl_rate3;
  2173. formData.value.sczl_rate4 = response.data.sczl_rate4;
  2174. formData.value.sczl_rate5 = response.data.sczl_rate5;
  2175. formData.value.sczl_rate6 = response.data.sczl_rate6;
  2176. formData.value.sczl_rate7 = response.data.sczl_rate7;
  2177. formData.value.sczl_rate8 = response.data.sczl_rate8;
  2178. formData.value.sczl_rate9 = response.data.sczl_rate9;
  2179. formData.value.sczl_rate10 = response.data.sczl_rate10;
  2180. }
  2181. });
  2182. GetDedhVisible.value = false;
  2183. }
  2184. };
  2185. //员工编号回车事件
  2186. const getGxMcsubmit = (event, inputName) => {
  2187. if (event.target.value != "") {
  2188. if (event.keyCode === 13 || event.keyCode === 40) {
  2189. // Enter 或向下箭头
  2190. //设置光标
  2191. document.getElementById("rate" + inputName).focus();
  2192. document.getElementById("rate" + inputName).select();
  2193. } else if (event.keyCode === 38) {
  2194. // 向上箭头
  2195. if (inputName == 1) {
  2196. //设置光标
  2197. document.getElementById("定额代号").focus();
  2198. document.getElementById("定额代号").select();
  2199. } else if (inputName == 10) {
  2200. for (var i = 9; i >= 1; i--) {
  2201. if (formData.value["sczl_bh" + i] != "") {
  2202. document.getElementById("rate" + (parseInt(i) + 1)).focus();
  2203. document.getElementById("rate" + (parseInt(i) + 1)).select();
  2204. break;
  2205. } else {
  2206. if (i == 1) {
  2207. document.getElementById("sczl_bh1").focus();
  2208. document.getElementById("sczl_bh1").select();
  2209. break;
  2210. }
  2211. }
  2212. }
  2213. } else {
  2214. document.getElementById("rate" + (parseInt(inputName) - 1)).focus();
  2215. document.getElementById("rate" + (parseInt(inputName) - 1)).select();
  2216. }
  2217. } else if (event.keyCode === 8) {
  2218. // 删除箭头
  2219. if (event.target.selectionStart === 0) {
  2220. if (inputName == 1) {
  2221. //设置光标
  2222. document.getElementById("定额代号").focus();
  2223. document.getElementById("定额代号").setSelectionRange(0, 0);
  2224. } else if (inputName == 10) {
  2225. for (var i = 9; i >= 1; i--) {
  2226. if (formData.value["sczl_bh" + i] != "") {
  2227. document.getElementById("rate" + (parseInt(i) + 1)).focus();
  2228. document
  2229. .getElementById("rate" + (parseInt(i) + 1))
  2230. .setSelectionRange(0, 0);
  2231. break;
  2232. } else {
  2233. if (i == 1) {
  2234. document.getElementById("sczl_bh1").focus();
  2235. document.getElementById("sczl_bh1").setSelectionRange(0, 0);
  2236. break;
  2237. }
  2238. }
  2239. }
  2240. } else {
  2241. document.getElementById("rate" + (parseInt(inputName) - 1)).focus();
  2242. document
  2243. .getElementById("rate" + (parseInt(inputName) - 1))
  2244. .setSelectionRange(0, 0);
  2245. }
  2246. }
  2247. } else if (event.keyCode === 37) {
  2248. // 向左箭头
  2249. if (event.target.selectionStart === 0) {
  2250. if (inputName == 1) {
  2251. //设置光标
  2252. document.getElementById("定额代号").focus();
  2253. document.getElementById("定额代号").select();
  2254. } else if (inputName == 10) {
  2255. for (var i = 9; i >= 1; i--) {
  2256. if (formData.value["sczl_bh" + i] != "") {
  2257. document.getElementById("rate" + (parseInt(i) + 1)).focus();
  2258. document.getElementById("rate" + (parseInt(i) + 1)).select();
  2259. break;
  2260. } else {
  2261. if (i == 1) {
  2262. document.getElementById("sczl_bh1").focus();
  2263. document.getElementById("sczl_bh1").select();
  2264. break;
  2265. }
  2266. }
  2267. }
  2268. } else {
  2269. document.getElementById("rate" + (parseInt(inputName) - 1)).focus();
  2270. document.getElementById("rate" + (parseInt(inputName) - 1)).select();
  2271. }
  2272. }
  2273. } else if (event.keyCode === 39) {
  2274. // 向右箭头
  2275. if (event.target.selectionStart === event.target.value.length) {
  2276. //设置光标
  2277. document.getElementById("rate" + inputName).focus();
  2278. document.getElementById("rate" + inputName).select();
  2279. }
  2280. }
  2281. } else {
  2282. if (event.keyCode === 13 || event.keyCode === 40) {
  2283. // Enter 或向下箭头
  2284. if (inputName == 10) {
  2285. //设置光标
  2286. document.getElementById("rate" + inputName).focus();
  2287. document.getElementById("rate" + inputName).select();
  2288. } else {
  2289. //设置光标
  2290. document.getElementById("sczl_bh10").focus();
  2291. document.getElementById("sczl_bh10").select();
  2292. }
  2293. } else if (event.keyCode === 38) {
  2294. // 向上箭头
  2295. if (inputName == 1) {
  2296. //设置光标
  2297. document.getElementById("定额代号").focus();
  2298. document.getElementById("定额代号").select();
  2299. } else if (inputName == 10) {
  2300. for (var i = 9; i >= 1; i--) {
  2301. if (formData.value["sczl_bh" + i] != "") {
  2302. document.getElementById("sczl_bh" + (parseInt(i) + 1)).focus();
  2303. document.getElementById("sczl_bh" + (parseInt(i) + 1)).select();
  2304. break;
  2305. } else {
  2306. if (i == 1) {
  2307. document.getElementById("sczl_bh1").focus();
  2308. document.getElementById("sczl_bh1").select();
  2309. break;
  2310. }
  2311. }
  2312. }
  2313. } else {
  2314. document.getElementById("rate" + (parseInt(inputName) - 1)).focus();
  2315. document.getElementById("rate" + (parseInt(inputName) - 1)).select();
  2316. }
  2317. } else if (event.keyCode === 8) {
  2318. // 删除箭头
  2319. if (event.target.selectionStart === 0) {
  2320. if (inputName == 1) {
  2321. //设置光标
  2322. document.getElementById("定额代号").focus();
  2323. document.getElementById("定额代号").setSelectionRange(0, 0);
  2324. } else if (inputName == 10) {
  2325. for (var i = 9; i >= 1; i--) {
  2326. if (formData.value["sczl_bh" + i] != "") {
  2327. document.getElementById("sczl_bh" + (parseInt(i) + 1)).focus();
  2328. document
  2329. .getElementById("sczl_bh" + (parseInt(i) + 1))
  2330. .setSelectionRange(0, 0);
  2331. break;
  2332. } else {
  2333. if (i == 1) {
  2334. document.getElementById("sczl_bh1").focus();
  2335. document.getElementById("sczl_bh1").setSelectionRange(0, 0);
  2336. break;
  2337. }
  2338. }
  2339. }
  2340. } else {
  2341. document.getElementById("rate" + (parseInt(inputName) - 1)).focus();
  2342. document
  2343. .getElementById("rate" + (parseInt(inputName) - 1))
  2344. .setSelectionRange(0, 0);
  2345. }
  2346. }
  2347. } else if (event.keyCode === 37) {
  2348. // 向左箭头
  2349. if (event.target.selectionStart === 0) {
  2350. if (inputName == 1) {
  2351. //设置光标
  2352. document.getElementById("定额代号").focus();
  2353. document.getElementById("定额代号").select();
  2354. } else if (inputName == 10) {
  2355. for (var i = 9; i >= 1; i--) {
  2356. if (formData.value["sczl_bh" + i] != "") {
  2357. document.getElementById("sczl_bh" + (parseInt(i) + 1)).focus();
  2358. document.getElementById("sczl_bh" + (parseInt(i) + 1)).select();
  2359. break;
  2360. } else {
  2361. if (i == 1) {
  2362. document.getElementById("sczl_bh1").focus();
  2363. document.getElementById("sczl_bh1").select();
  2364. break;
  2365. }
  2366. }
  2367. }
  2368. } else {
  2369. document.getElementById("rate" + (parseInt(inputName) - 1)).focus();
  2370. document.getElementById("rate" + (parseInt(inputName) - 1)).select();
  2371. }
  2372. }
  2373. } else if (event.keyCode === 39) {
  2374. // 向右箭头
  2375. if (event.target.selectionStart === event.target.value.length) {
  2376. if (inputName == 10) {
  2377. //设置光标
  2378. document.getElementById("rate" + inputName).focus();
  2379. document.getElementById("rate" + inputName).select();
  2380. } else {
  2381. //设置光标
  2382. document.getElementById("sczl_bh10").focus();
  2383. document.getElementById("sczl_bh10").select();
  2384. }
  2385. }
  2386. }
  2387. }
  2388. };
  2389. //获取员工信息
  2390. const GetYg = (event, inputName) => {
  2391. if (formData.value["sczl_bh" + inputName] != "") {
  2392. getYg({
  2393. sczl_bh: event.target.value,
  2394. }).then((response) => {
  2395. if (response.code == 0) {
  2396. if (response.data.length == 1) {
  2397. formData.value["sczl_bh" + inputName + "_name"] =
  2398. response.data[0].ygxm;
  2399. formData.value["sczl_bh" + inputName] = response.data[0].员工编号;
  2400. } else if (response.data.length > 1) {
  2401. index_Yg = inputName;
  2402. selectData_Yg.splice(0, selectData_Yg.length, ...response.data);
  2403. setGXCurrent_Yg(selectData_Yg[0]);
  2404. dialogSelectVisible_Yg.value = true;
  2405. } else {
  2406. ElMessage({
  2407. type: "warning",
  2408. message: "未查询到该员工",
  2409. });
  2410. formData.value["sczl_bh" + inputName + "_name"] = "";
  2411. formData.value["sczl_bh" + inputName] = "";
  2412. }
  2413. } else {
  2414. formData.value["sczl_bh" + inputName + "_name"] = "";
  2415. formData.value["sczl_bh" + inputName] = "";
  2416. }
  2417. });
  2418. }
  2419. };
  2420. let index_Yg = "";
  2421. const dialogSelectVisible_Yg = ref(false);
  2422. const selectData_Yg = reactive([]);
  2423. // 处理选择框
  2424. const handleSelectClick_Yg = (row, column, event) => {
  2425. formData.value["sczl_bh" + index_Yg + "_name"] = row.ygxm;
  2426. formData.value["sczl_bh" + index_Yg] = row.员工编号;
  2427. dialogSelectVisible_Yg.value = false;
  2428. };
  2429. const currentIndex_Yg = ref(0);
  2430. const GXCurrent_Yg = ref(0);
  2431. const selectGX_Yg = (event) => {
  2432. if (event.keyCode === 40) {
  2433. // 向下箭头
  2434. if (currentIndex_Yg.value < selectData_Yg.length - 1) {
  2435. currentIndex_Yg.value++;
  2436. setGXCurrent_Yg(selectData_Yg[currentIndex_Yg.value]);
  2437. } else {
  2438. currentIndex_Yg.value = 0;
  2439. setGXCurrent_Yg(selectData_Yg[currentIndex_Yg.value]); // 到达最后一行时回到第一行
  2440. }
  2441. } else if (event.keyCode === 38) {
  2442. // 向上箭头
  2443. if (currentIndex_Yg.value > 0) {
  2444. currentIndex_Yg.value--;
  2445. setGXCurrent_Yg(selectData_Yg[currentIndex_Yg.value]);
  2446. } else {
  2447. currentIndex_Yg.value = selectData_Yg.length - 1;
  2448. setGXCurrent_Yg(selectData_Yg[currentIndex_Yg.value]); // 到达第一行时回到最后一行
  2449. }
  2450. } else if (event.keyCode === 13) {
  2451. // 回车键
  2452. dialogSelectVisible_Yg.value = false;
  2453. }
  2454. };
  2455. const table_Yg = ref();
  2456. const setGXCurrent_Yg = (row) => {
  2457. setTimeout(() => {
  2458. table_Yg.value?.setCurrentRow(row);
  2459. formData.value["sczl_bh" + index_Yg + "_name"] = row.ygxm;
  2460. formData.value["sczl_bh" + index_Yg] = row.员工编号;
  2461. });
  2462. };
  2463. //比例失去焦点
  2464. const rate = (event, inputName) => {
  2465. if (event.keyCode === 13 || event.keyCode === 40) {
  2466. // Enter 或向下箭头
  2467. if (inputName == 10) {
  2468. ElMessageBox.confirm("数据存盘?", "提示", {
  2469. confirmButtonText: "确定",
  2470. cancelButtonText: "取消",
  2471. type: "warning",
  2472. }).then(() => {
  2473. enterDialog();
  2474. });
  2475. } else {
  2476. //设置光标
  2477. document.getElementById("sczl_bh" + (parseInt(inputName) + 1)).focus();
  2478. document.getElementById("sczl_bh" + (parseInt(inputName) + 1)).select();
  2479. }
  2480. } else if (event.keyCode === 38) {
  2481. // 向上箭头
  2482. document.getElementById("sczl_bh" + inputName).focus();
  2483. document.getElementById("sczl_bh" + inputName).select();
  2484. } else if (event.keyCode === 8) {
  2485. // 删除箭头
  2486. if (event.target.selectionStart === 0) {
  2487. document.getElementById("sczl_bh" + inputName).focus();
  2488. document.getElementById("sczl_bh" + inputName).setSelectionRange(0, 0);
  2489. }
  2490. } else if (event.keyCode === 37) {
  2491. // 向左箭头
  2492. if (event.target.selectionStart === 0) {
  2493. document.getElementById("sczl_bh" + inputName).focus();
  2494. document.getElementById("sczl_bh" + inputName).select();
  2495. }
  2496. } else if (event.keyCode === 39) {
  2497. // 向右箭头
  2498. if (event.target.selectionStart === event.target.value.length) {
  2499. if (inputName == 10) {
  2500. //设置光标
  2501. } else {
  2502. document.getElementById("sczl_bh" + inputName).focus();
  2503. document.getElementById("sczl_bh" + inputName).select();
  2504. }
  2505. }
  2506. }
  2507. };
  2508. // 搜索
  2509. function onSearch() {
  2510. params.gdbh = positionvalue.value;
  2511. params.type = "getLocateTable";
  2512. page.value = 1;
  2513. console.log("123");
  2514. GetLocate();
  2515. }
  2516. const ADD = ref("0");
  2517. //新增
  2518. function onAdd() {
  2519. ADD.value = "新增";
  2520. type.value = "create";
  2521. if (table_type == "db_sczl") {
  2522. if (typeof lastCellValue == "number") {
  2523. GetInfo(lastCellValue);
  2524. }
  2525. initFormData();
  2526. dialogFormVisible.value = true;
  2527. setTimeout(() => {
  2528. const inputElement = document.getElementById('工单编号');
  2529. if (inputElement) {
  2530. inputElement.focus();
  2531. }
  2532. }, 100);
  2533. } else {
  2534. // GetInfo(table.value)
  2535. // console.log(['table_type'])
  2536. // console.log('此数据无法新增')
  2537. dialogFormVisible.value = true;
  2538. setTimeout(() => {
  2539. const inputElement = document.getElementById('工单编号');
  2540. if (inputElement) {
  2541. inputElement.focus();
  2542. }
  2543. }, 100);
  2544. }
  2545. // Productionadd()
  2546. }
  2547. //新增
  2548. const Productionadd = async () => {
  2549. const response = await productionadd();
  2550. if (response.code === 0) {
  2551. }
  2552. getTableData();
  2553. };
  2554. //删除
  2555. function onDel() {
  2556. Del();
  2557. }
  2558. //删除
  2559. const Del = () => {
  2560. if (typeof lastCellValue == "object") {
  2561. ElMessage({
  2562. type: "warning",
  2563. message: "未选中记录",
  2564. });
  2565. return;
  2566. }
  2567. ElMessageBox.confirm(`确认删除这条数据么?`, "警告", {
  2568. confirmButtonText: "确认",
  2569. cancelButtonText: "取消",
  2570. type: "warning",
  2571. }).then(async () => {
  2572. const response = await productiondel({
  2573. UniqId: lastCellValue,
  2574. });
  2575. if (response.code === 0) {
  2576. ElMessage({
  2577. type: "success",
  2578. message: "删除成功",
  2579. });
  2580. //刷新侧边栏
  2581. getTabdata();
  2582. //刷新页面
  2583. getTableData();
  2584. }
  2585. });
  2586. };
  2587. //同步
  2588. function synchronous() {
  2589. Synchronous();
  2590. }
  2591. //同步
  2592. const Synchronous = async () => {
  2593. const response = await ProductionData();
  2594. if (response.code === 0) {
  2595. ElMessage({
  2596. type: "success",
  2597. message: "同步成功",
  2598. });
  2599. }
  2600. // getTableData()
  2601. };
  2602. const displayMod = ref("");
  2603. // 按工单显示
  2604. function onCountByGdbh() {
  2605. if (displayMod.value === "date") {
  2606. displayMod.value = "gd";
  2607. CountByGdbh();
  2608. } else {
  2609. getTabdata();
  2610. }
  2611. }
  2612. //按工单显示
  2613. const CountByGdbh = async () => {
  2614. const response = await productionByGdbh();
  2615. if (response.code === 0) {
  2616. // console.log(displayMod.value)
  2617. treeData.splice(0, treeData.length);
  2618. // 遍历接口返回的数据
  2619. response.data.forEach((item) => {
  2620. // 创建父节点
  2621. treeData[item.sczl_gdbh] = {
  2622. label: item.sczl_gdbh + "【" + item.yj_yjmc + "】",
  2623. children: [],
  2624. params: {
  2625. date: item.sczl_gdbh,
  2626. sys_id: "",
  2627. total: "",
  2628. },
  2629. };
  2630. // 添加子节点
  2631. for (const key in item.sys) {
  2632. const childNode = {
  2633. name: key,
  2634. label: key + " 【记录数" + item.sys[key] + "张】",
  2635. params: {
  2636. date: item.sczl_gdbh,
  2637. sys_id: key,
  2638. total: item.sys[key],
  2639. },
  2640. };
  2641. treeData[item.sczl_gdbh].children.push(childNode);
  2642. }
  2643. });
  2644. // console.log(treeData)
  2645. // // // 打印树形结构
  2646. // console.log(JSON.stringify(tree, null, 2));
  2647. // // 将父子关系转换为数组
  2648. // const transformedData = Object.values(tree);
  2649. // console.log(transformedData);
  2650. // treeData = transformedData;
  2651. }
  2652. // // 将父子关系转换为数组
  2653. // const transformedData = Object.values(tree);
  2654. // console.log(transformedData)
  2655. // treeData = transformedData;
  2656. // getTableData()
  2657. };
  2658. // ============== 表格控制部分结束 ===============
  2659. //=========工序产量核查===========
  2660. const gd_gxclhclist = ref(false);
  2661. const gxclhc_Data = ref([]);
  2662. const gxclhc_Columns = ref(
  2663. [
  2664. { label: '印件及工序名称', prop: 'concatenatedData', width: '380' },
  2665. // { label: '印件', prop: 'Gy0_yjno', width: '130' },
  2666. // { label: '工序', prop: 'Gy0_gxh', width: '130' },
  2667. // { label: '名称', prop: 'Gy0_gxmc', width: '130' },
  2668. { label: '工序计划产量', prop: 'Gy0_计划接货数', width: '120' },
  2669. { label: '联数', prop: 'Gy0_ls', width: '70' },
  2670. { label: '折算车头产量', prop: '折算车头产量', width: '120' },
  2671. { label: '实际上报产量', prop: 'sczl_cl', width: '120' },
  2672. { label: '制程废品', prop: 'sczl_zcfp', width: '120' },
  2673. { label: '制程废品率', prop: '制程废品率', width: '120' },
  2674. { label: '来料异常', prop: '来料异常', width: '90' },
  2675. { label: '流程单数', prop: 'process_num', width: '90' },
  2676. { label: '当前设备', prop: 'Gy0_sbbh', width: '120' },
  2677. { label: '工序状态', prop: 'PD_WG', width: '90'},
  2678. { label: '首板生产日期', prop: 'sczl_rq', width: '160' },
  2679. ]
  2680. )
  2681. const gxclhcformData = reactive({
  2682. gdbh: '',
  2683. gdmc: '',
  2684. });
  2685. const gdwhformData = reactive({
  2686. // 下拉框选项数据
  2687. yinjian: [],
  2688. // 设置默认值
  2689. yjno: '',
  2690. });
  2691. const inputCpmc = ref('')
  2692. // 工序产量核查按钮
  2693. const gd_gxclhconClick = async () => {
  2694. if(_Gd_gdbh.value === '' || _Gd_gdbh.value === null){
  2695. ElMessage({type: 'warning',message: '请选择具体的工单,在进行操作'})
  2696. return false;
  2697. }
  2698. gxclhcformData['gdbh'] = _Gd_gdbh.value;
  2699. gxclhcformData['yjno'] = 1;
  2700. gd_gxclhclist.value = true;
  2701. const response = await PrintDetailList ({workOrder:_Gd_gdbh.value});
  2702. console.log(response)
  2703. gdwhformData.yjno = response.data[0].no
  2704. inputCpmc.value = response.data[0].name
  2705. if (response.code === 0) {
  2706. const noFields = response.data.map(item => item.no);
  2707. gdwhformData.yinjian = noFields
  2708. } else {
  2709. console.error('查询失败:', response.msg);
  2710. }
  2711. _getOrderProcessCount();
  2712. };
  2713. //点击印件下拉框
  2714. const ongdwhfanclick = async() => {
  2715. _PrintDetailList();
  2716. _getOrderProcessCount();
  2717. }
  2718. //工序产量核查回车
  2719. const gxclhcProductValue = async () => {
  2720. const response = await PrintDetailList ({workOrder:gxclhcformData['gdbh']});
  2721. gdwhformData.yjno = response.data[0].no
  2722. inputCpmc.value = response.data[0].name
  2723. if (response.code === 0) {
  2724. const noFields = response.data.map(item => item.no);
  2725. gdwhformData.yinjian = noFields
  2726. } else {
  2727. console.error('查询失败:', response.msg);
  2728. }
  2729. _getOrderProcessCount();
  2730. _PrintDetailList();
  2731. }
  2732. //工序产量核查退出
  2733. const gxclhcCancel = async () => {
  2734. gd_gxclhclist.value = false;
  2735. };
  2736. //印件编号获取方法接口
  2737. const _PrintDetailList = async () => {
  2738. const order = gxclhcformData['gdbh'];
  2739. const response = await PrintDetailList ({workOrder:order});
  2740. const matchingItem = response.data.find(item => item.no === gdwhformData.yjno);
  2741. if (matchingItem) {
  2742. console.log(matchingItem.name)
  2743. inputCpmc.value = matchingItem.name;
  2744. } else {
  2745. console.log(`No matching item found for no: ${gdwhformData.yjno}`);
  2746. }
  2747. }
  2748. //工序产量核查方法接口
  2749. const _getOrderProcessCount = async () => {
  2750. const order = gxclhcformData['gdbh'];
  2751. const yjno = gdwhformData.yjno;
  2752. const getOrderProcessCount_list = await getOrderProcessCount({order:order,yjno:yjno});
  2753. const concatenatedData = getOrderProcessCount_list.data.map(item => {
  2754. // 优化后的代码,使用模板字符串连接字段值并在单个数字前添加零
  2755. const formattedYjno = item.Gy0_yjno.length === 1 ? `0${item.Gy0_yjno}` : item.Gy0_yjno;
  2756. const formattedGxh = item.Gy0_gxh.length === 1 ? `0${item.Gy0_gxh}` : item.Gy0_gxh;
  2757. const concatenatedValue = `${formattedYjno}-${formattedGxh} ${item.Gy0_gxmc} 【${item.Add_gxmc} 】`;
  2758. return {
  2759. ...item,
  2760. concatenatedData: concatenatedValue, // 使用新属性名
  2761. };
  2762. });
  2763. gxclhc_Data.value = concatenatedData;
  2764. };
  2765. //工序产量核查
  2766. const gxclhcCellClass = ({row, column, rowIndex, columnIndex}) =>{
  2767. if (column.label === '实际上报产量' ||column.label === '制程废品' || column.label === '制程废品率' ||
  2768. column.label === '来料异常' || column.label === '流程单数' || column.label === '当前设备') {
  2769. return 'lan-plan-usage-lows';
  2770. }
  2771. if (column.label === '折算车头产量') {
  2772. return 'gxclhc—color-column-red';
  2773. }
  2774. // 如果不是 'PD_WG' 列,返回空字符串或其他样式类
  2775. if (column.label === '工序状态'){
  2776. if(row['PD_WG'] === '完工'){
  2777. return 'lan-plan-usage-lowshui';
  2778. }else{
  2779. return 'pczccolor-column-lan';
  2780. }
  2781. }
  2782. }
  2783. // 获取需要的字典 可能为空 按需保留
  2784. const setOptions = async () => {};
  2785. // 获取需要的字典 可能为空 按需保留
  2786. setOptions();
  2787. // 多选数据
  2788. const multipleSelection = ref([]);
  2789. // 多选
  2790. const handleSelectionChange = (val) => {
  2791. // multipleSelection.value = val
  2792. if (val.length > 0) {
  2793. // multipleSelection.value = val
  2794. const lenth = val.length;
  2795. // ScrapFactor.gdbh=val[lenth-1].combinedProp.split('-')[0];
  2796. // const parts = val[lenth-1].combinedProp2.split('-')
  2797. // ScrapFactor.yjno=parts[0];
  2798. // ScrapFactor.gxh=parts[1];
  2799. // ScrapFactor.type=val[lenth-1].sczl_检验类别
  2800. // console.log(ScrapFactor)
  2801. lastCellValue = val[lenth - 1].UniqId;
  2802. // console.log(val)
  2803. val.splice(0, val.length); // 清空 val 数组
  2804. console.log(lastCellValue);
  2805. }
  2806. };
  2807. // 批量删除控制标记
  2808. const deleteVisible = ref(false);
  2809. // 多选删除
  2810. const onDelete = async () => {
  2811. const ids = [];
  2812. if (multipleSelection.value.length === 0) {
  2813. ElMessage({
  2814. type: "warning",
  2815. message: "请选择要删除的数据",
  2816. });
  2817. return;
  2818. }
  2819. multipleSelection.value &&
  2820. multipleSelection.value.map((item) => {
  2821. ids.push(item.ID);
  2822. });
  2823. const res = await deleteCompanyByIds({
  2824. ids,
  2825. });
  2826. if (res.code === 0) {
  2827. ElMessage({
  2828. type: "success",
  2829. message: "删除成功",
  2830. });
  2831. if (tableData.value.length === ids.length && page.value > 1) {
  2832. page.value--;
  2833. }
  2834. deleteVisible.value = false;
  2835. getTableData();
  2836. }
  2837. };
  2838. // 行为控制标记(弹窗内部需要增还是改)
  2839. // const type = ref('')
  2840. // 更新行
  2841. const updateCompanyFunc = async (row) => {
  2842. const res = await findCompany({
  2843. ID: row.ID,
  2844. });
  2845. type.value = "update";
  2846. if (res.code === 0) {
  2847. formData.value = res.data.recompany;
  2848. dialogFormVisible.value = true;
  2849. }
  2850. };
  2851. // 弹窗控制标记
  2852. const dialogFormVisible = ref(false);
  2853. // 打开弹窗
  2854. const openDialog = () => {
  2855. type.value = "create";
  2856. dialogFormVisible.value = true;
  2857. };
  2858. // 关闭弹窗
  2859. const closeDialog = () => {
  2860. dialogFormVisible.value = false;
  2861. };
  2862. const fpsum = ref();
  2863. //自动计算分配系数和
  2864. function updateTotal() {
  2865. // 直接指定要累加的属性名
  2866. const relevantKeys = ['sczl_rate1', 'sczl_rate2', 'sczl_rate3', 'sczl_rate4', 'sczl_rate5', 'sczl_rate6', 'sczl_rate7', 'sczl_rate8', 'sczl_rate9', 'sczl_rate10'];
  2867. const values = relevantKeys.map(key => parseFloat(formData.value[key], 10) || 0); // 使用 || 0 来处理可能的 NaN 或 undefined/null
  2868. fpsum.value = values.reduce((sum, value) => sum + value, 0);
  2869. }
  2870. //默认启用按钮可点击
  2871. const clickedlist = ref(true);
  2872. //存储定时器时间
  2873. let clickTimer = null;
  2874. //新增确定
  2875. const enterDialog = async () => {
  2876. //防止重复点击
  2877. if (!clickedlist.value) {
  2878. // 如果按钮已经被禁用,则不执行任何操作
  2879. return;
  2880. }
  2881. clickedlist.value = false;
  2882. // 清除之前的定时器(如果有的话),以避免重复设置
  2883. if (clickTimer) {
  2884. clearTimeout(clickTimer);
  2885. }
  2886. //设置定时器,在3秒后重新启用按钮
  2887. clickTimer = setTimeout(() => {
  2888. clickedlist.value = true;
  2889. clickTimer = null;
  2890. }, 3000);
  2891. //弹窗提示确认
  2892. ElMessageBox.confirm("数据存盘?", "提示", {
  2893. confirmButtonText: "确定",
  2894. cancelButtonText: "取消",
  2895. type: "warning",
  2896. }).then(() => {
  2897. if (formData.value.sczl_gdbh == "") {
  2898. ElMessage({
  2899. type: "error",
  2900. message: "请填写工单编号",
  2901. });
  2902. document.getElementById("工单编号").focus();
  2903. document.getElementById("工单编号").select();
  2904. return;
  2905. }
  2906. if (formData.value.sczl_yjno == "") {
  2907. ElMessage({
  2908. type: "error",
  2909. message: "请填写印件号",
  2910. });
  2911. document.getElementById("印件号").focus();
  2912. document.getElementById("印件号").select();
  2913. return;
  2914. }
  2915. if (formData.value.sczl_gxmc == "") {
  2916. ElMessage({
  2917. type: "error",
  2918. message: "请填写工序名称",
  2919. });
  2920. document.getElementById("工序名称").focus();
  2921. document.getElementById("工序名称").select();
  2922. return;
  2923. }
  2924. if (formData.value.sczl_rq == "") {
  2925. ElMessage({
  2926. type: "error",
  2927. message: "请填写日期",
  2928. });
  2929. document.getElementById("日期").focus();
  2930. document.getElementById("日期").select();
  2931. return;
  2932. }
  2933. if (formData.value.sczl_bzdh == "") {
  2934. ElMessage({
  2935. type: "error",
  2936. message: "请选择班组",
  2937. });
  2938. document.getElementById("组别").focus();
  2939. document.getElementById("组别").select();
  2940. return;
  2941. }
  2942. if (formData.value.sczl_cl == "") {
  2943. ElMessage({
  2944. type: "error",
  2945. message: "请填写产量",
  2946. });
  2947. document.getElementById("产量").focus();
  2948. document.getElementById("产量").select();
  2949. return;
  2950. }
  2951. if (formData.value.sczl_dedh == "") {
  2952. ElMessage({
  2953. type: "error",
  2954. message: "请选择定额代号",
  2955. });
  2956. document.getElementById("定额代号").focus();
  2957. document.getElementById("定额代号").select();
  2958. return;
  2959. }
  2960. updateDetailData();
  2961. });
  2962. // elFormRef.value?.validate(async (valid) => {
  2963. // if (!valid) return
  2964. // let res
  2965. // switch (type.value) {
  2966. // case 'create':
  2967. // res = await createCompany(formData.value)
  2968. // break
  2969. // case 'update':
  2970. // res = await updateCompany(formData.value)
  2971. // break
  2972. // default:
  2973. // res = await createCompany(formData.value)
  2974. // break
  2975. // }
  2976. // if (res.code === 0) {
  2977. // ElMessage({
  2978. // type: 'success',
  2979. // message: '创建/更改成功'
  2980. // })
  2981. // closeDialog()
  2982. // getTableData()
  2983. // }
  2984. // updateDetailData()
  2985. // })
  2986. };
  2987. // 更新数据
  2988. const updateDetailData = async () => {
  2989. const restoredData = {
  2990. UniqId: lastCellValue,
  2991. sczl_gdbh: formData.value.sczl_gdbh,
  2992. Gd_cpmc: formData.value.Gd_cpmc,
  2993. sczl_yjno: formData.value.sczl_yjno,
  2994. yj_yjmc: formData.value.yj_yjmc,
  2995. sczl_gxmc: formData.value.sczl_gxmc,
  2996. sczl_gxh: formData.value.sczl_gxh,
  2997. sczl_type: formData.value.sczl_type,
  2998. sczl_rq: formData.value.sczl_rq,
  2999. sczl_jtbh: formData.value.sczl_jtbh,
  3000. sczl_bzdh: formData.value.sczl_bzdh,
  3001. sczl_ms: formData.value.sczl_ms,
  3002. sczl_ls: formData.value.sczl_ls,
  3003. sczl_cl: formData.value.sczl_cl,
  3004. sczl_fp: formData.value.sczl_zcfp,
  3005. sczl_装版总工时: formData.value.sczl_装版总工时,
  3006. sczl_装版工时: formData.value.sczl_装版工时,
  3007. sczl_保养工时: formData.value.sczl_保养工时,
  3008. sczl_异常停机工时: formData.value.sczl_异常停机工时,
  3009. sczl_打样总工时: formData.value.sczl_打样总工时,
  3010. sczl_打样工时: formData.value.sczl_打样工时,
  3011. sczl_设备运行工时: formData.value.sczl_设备运行工时,
  3012. 拆片联拼系数: formData.value.拆片联拼系数,
  3013. 拆片条小盒系数: formData.value.拆片条小盒系数,
  3014. sczl_dedh: formData.value.sczl_dedh,
  3015. sczl_工价系数: formData.value.sczl_工价系数,
  3016. sczl_计产系数: formData.value.sczl_计产系数,
  3017. sczl_bh1: formData.value.sczl_bh1,
  3018. sczl_bh2: formData.value.sczl_bh2,
  3019. sczl_bh3: formData.value.sczl_bh3,
  3020. sczl_bh4: formData.value.sczl_bh4,
  3021. sczl_bh5: formData.value.sczl_bh5,
  3022. sczl_bh6: formData.value.sczl_bh6,
  3023. sczl_bh7: formData.value.sczl_bh7,
  3024. sczl_bh8: formData.value.sczl_bh8,
  3025. sczl_bh9: formData.value.sczl_bh9,
  3026. sczl_bh10: formData.value.sczl_bh10,
  3027. sczl_rate1: formData.value.sczl_rate1,
  3028. sczl_rate2: formData.value.sczl_rate2,
  3029. sczl_rate3: formData.value.sczl_rate3,
  3030. sczl_rate4: formData.value.sczl_rate4,
  3031. sczl_rate5: formData.value.sczl_rate5,
  3032. sczl_rate6: formData.value.sczl_rate6,
  3033. sczl_rate7: formData.value.sczl_rate7,
  3034. sczl_rate8: formData.value.sczl_rate8,
  3035. sczl_rate9: formData.value.sczl_rate9,
  3036. sczl_rate10: formData.value.sczl_rate10,
  3037. sys_id: sys_id,
  3038. };
  3039. updateTotal()
  3040. console.log(11123,fpsum.value)
  3041. if(fpsum.value > 1){
  3042. ElMessage({
  3043. type: "error",
  3044. message: "分配系数相加不能大于0",
  3045. });
  3046. }else{
  3047. // detailData.table.forEach((item, index, array) => {
  3048. // const num = index + 1
  3049. // restoredData[`sczl_gdbh${num}`] = item.sczl_gdbh
  3050. // restoredData[`sczl_yjGx${num}`] = item.sczl_yjGx
  3051. // restoredData[`sczl_gxmc${num}`] = item.sczl_gxmc
  3052. // // restoredData[`Gd_cpmc${num}`] = item.Gd_cpmc
  3053. // restoredData[`sczl_cl${num}`] = item.sczl_cl
  3054. // restoredData[`sczl_PgCl${num}`] = item.sczl_PgCl
  3055. // restoredData[`sczl_clAdd${num}`] = item.sczl_clAdd
  3056. // })
  3057. if (ADD.value == "新增") {
  3058. // console.log('新增')
  3059. const response = await productionadd(restoredData);
  3060. // ADD.value='1'
  3061. // console.log(ADD.value)
  3062. ADD.value = "0";
  3063. if (response.code == 0) {
  3064. ElMessage({
  3065. type: "success",
  3066. message: "新增成功",
  3067. });
  3068. dialogFormVisible.value = false;
  3069. //刷新侧边栏
  3070. getTabdata();
  3071. if (params.date != "") {
  3072. //刷新页面
  3073. getTableData();
  3074. }
  3075. }
  3076. } else {
  3077. const response = await productionedit(restoredData);
  3078. if (response.code == 0) {
  3079. ElMessage({
  3080. type: "success",
  3081. message: "更新成功",
  3082. });
  3083. }
  3084. dialogFormVisible.value = false;
  3085. // ADD.value='0'
  3086. // console.log(ADD.value)
  3087. }
  3088. formData.value = [];
  3089. // console.log(restoredData)
  3090. // console.log(lastCellValue)
  3091. // formData.value.UniqId=lastCellValue
  3092. // console.log(formData)
  3093. // restoredData.UniqId='5'
  3094. // console.log(FormData)
  3095. }
  3096. };
  3097. let table = ref(5);
  3098. let lastCellValue = ref();
  3099. let table_type = ref();
  3100. // 双击表格操作
  3101. const type = ref("");
  3102. function doubleClick(row, column, event) {
  3103. type.value = "update";
  3104. lastCellValue = row["UniqId"];
  3105. table.value = lastCellValue;
  3106. if (row["table_type"] == "db_sczl") {
  3107. console.log(["table_type"]);
  3108. dialogFormVisible.value = true;
  3109. GetInfo(table.value);
  3110. } else {
  3111. // GetInfo(table.value)
  3112. ElMessage({
  3113. type: "error",
  3114. message: "此工单不展示详细数据",
  3115. });
  3116. }
  3117. }
  3118. // 单击表格操作
  3119. //全局调用工单编号
  3120. const _Gd_gdbh = ref(null)
  3121. function Click(row, column, event) {
  3122. lastCellValue = row["UniqId"];
  3123. console.log(lastCellValue);
  3124. _Gd_gdbh.value = row.sczl_gdbh;
  3125. table_type = row["table_type"];
  3126. // if(row['table_type']=='db_sczl'){
  3127. // dialogFormVisible.value = true
  3128. // GetInfo(table.value)
  3129. // }else{
  3130. // console.log('此数据不展示详细信息')
  3131. // }
  3132. }
  3133. //获取详细信息
  3134. const GetInfo = async (value) => {
  3135. const response = await productionInfo({
  3136. UniqId: value,
  3137. });
  3138. if (response.code === 0) {
  3139. console.log(response);
  3140. formData.value = response.data;
  3141. console.log(formData);
  3142. }
  3143. };
  3144.     const exportToExcel2 = () => {
  3145. const el = document.getElementById("tab");
  3146.         if (!el) {
  3147.             console.error('Table element not found!');
  3148.             return;
  3149.         }
  3150.     const filename = '机台日报表.xlsx';
  3151.     const wb = XLSX.utils.table_to_book(el, { raw: true });
  3152.     const ws = wb.Sheets[wb.SheetNames[0]]; // 获取第一个工作表
  3153. // 获取工作表的范围
  3154. const range = XLSX.utils.decode_range(ws['!ref']);
  3155. // 遍历每一行(从第二行开始)
  3156. for (let R = range.s.r + 1; R <= range.e.r + 1; ++R) {
  3157. // 定义要处理的列的起始和结束字符
  3158. const startCol = 'G'.charCodeAt(0); // G 的 ASCII 码
  3159. const endCol = 'Q'.charCodeAt(0); // Q 的 ASCII 码
  3160. // 遍历从 G 到 Q 的每一列
  3161. for (let colCode = startCol; colCode <= endCol; ++colCode) {
  3162. // 将 ASCII 码转换回列字母
  3163. const colLetter = String.fromCharCode(colCode);
  3164. const cell = ws[`${colLetter}${R}`];
  3165. // 检查单元格是否存在且其值是字符串类型
  3166. if (cell && typeof cell.v === 'string') {
  3167. const num = Number(cell.v);
  3168. if (!isNaN(num)) {
  3169. // 修改单元格类型为数字,并更新值
  3170. cell.t = 'n';
  3171. cell.v = num;
  3172. }
  3173. }
  3174. }
  3175. }
  3176.     const wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' });
  3177.     try {
  3178.     FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), filename);
  3179.     } catch (e) {
  3180.     console.error('Error saving file:', e);
  3181.     }
  3182.     };
  3183. // 导出excel
  3184. // function exportExcel() {
  3185. // Execelport()
  3186. // // exportExcelFile(data);
  3187. // }
  3188. // const Execelport = async (value) => {
  3189. // const response = await Export({
  3190. // file_name: '111',
  3191. // date: '2024-01-13',
  3192. // sys_id: '[1002/郑小丽]',
  3193. // fields: ['sczl_gdbh', 'Gd_cpmc', 'jyno_gxmc',
  3194. // 'sczl_rq', 'sczl_jtbh', 'sczl_bzdh', 'sczl_num', 'sczl_cl', 'sczl_ms',
  3195. // 'sczl_zcfp', 'sczl_zccp', 'sczl_来料异常', 'sczl_装版工时', 'sczl_保养工时', 'sczl_打样工时',
  3196. // 'sczl_异常停机工时', 'sczl_设备运行工时', 'sczl_bh1', 'sczl_bh1_name', 'sczl_bh2', 'sczl_bh2_name',
  3197. // 'sczl_bh3', 'sczl_bh3_name', 'sczl_bh4', 'sczl_bh4_name', 'sczl_bh5', 'sczl_bh5_name',
  3198. // 'sczl_bh6', 'sczl_bh6_name',
  3199. // '拆片联拼系数', '拆片条小盒系数', 'sczl_工价系数', '日定额', '千件工价', '补产标准'
  3200. // ]
  3201. // });
  3202. // console.log(response)
  3203. // }
  3204. // 生命周期钩子
  3205. onMounted(async () => {});
  3206. </script>
  3207. <style>
  3208. .JKWTree-container {
  3209. display: flex;
  3210. }
  3211. .JKWTree-tree {
  3212. width: 300px;
  3213. background-color: #fff;
  3214. padding: 10px;
  3215. margin-right: 20px;
  3216. }
  3217. .JKWTree-tree h3 {
  3218. font-size: 15px;
  3219. font-weight: 700;
  3220. margin: 10px 0;
  3221. }
  3222. .JKWTree-content {
  3223. flex: 1;
  3224. }
  3225. /* 选中某行时的背景色*/
  3226. .el-table__body tr.current-row > td {
  3227. background: #ff80ff !important;
  3228. /* 背景颜色 */
  3229. }
  3230. </style>
  3231. <style scoped>
  3232. :deep(.el-table td .cell) {
  3233. line-height: 20px !important;
  3234. }
  3235. :deep(.el-tabs__header) {
  3236. margin-bottom: 0;
  3237. }
  3238. .search {
  3239. margin-left: 0px !important;
  3240. margin-right: 10px !important;
  3241. }
  3242. .bt {
  3243. margin-left: 2px !important;
  3244. padding: 3px !important;
  3245. font-size: 12px;
  3246. }
  3247. .el-tabs__header {
  3248. margin: 0px !important;
  3249. }
  3250. .gva-table-box {
  3251. padding: 0px !important;
  3252. }
  3253. .mab {
  3254. margin-bottom: 5px;
  3255. }
  3256. :deep(.plan-usage-low div) {
  3257. color: blue !important;
  3258. font-size: 16px;
  3259. font-weight: bold;
  3260. }
  3261. /* 工序产量核查高亮 */
  3262. :deep(.lan-plan-usage-lows div) {
  3263. color: blue !important;
  3264. font-weight: bold;
  3265. }
  3266. </style>