Dayreports.vue 90 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954
  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">
  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. <div style="margin-left: auto">
  52. <el-button
  53. type="primary"
  54. class="bt"
  55. icon="download"
  56. @click="exportToExcel2"
  57. >导出到Excel</el-button
  58. >
  59. </div>
  60. </el-form-item>
  61. <!-- 数据展示 -->
  62. <el-table
  63. ref="multipleTable"
  64. style="width: 100%"
  65. tooltip-effect="dark"
  66. :data="tableData"
  67. id="tab"
  68. row-key="ID"
  69. highlight-current-row="true"
  70. border
  71. :row-style="{ height: '0px' }"
  72. :header-row-style="{ height: '20px' }"
  73. :header-cell-style="{ padding: '0px' }"
  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="77"
  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. >
  393. <!-- <el-scrollbar height="500px"> -->
  394. <el-form
  395. :model="formData"
  396. label-position="right"
  397. ref="elFormRef"
  398. label-width="120px"
  399. :rules="rule"
  400. >
  401. <el-row :gutter="24">
  402. <el-col :span="6">
  403. <el-form-item label="工单编号:" prop="flatFeed" class="mab">
  404. <el-input
  405. v-model="formData.sczl_gdbh"
  406. id="工单编号"
  407. placeholder="Enter回车"
  408. @blur="getCPMCsubmit()"
  409. @keydown="ent1($event)"
  410. :clearable="true"
  411. />
  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.Gd_cpmc"
  423. id="产品名称"
  424. @keydown="ent1($event)"
  425. :clearable="true"
  426. />
  427. </el-form-item>
  428. </el-col>
  429. </el-row>
  430. <el-row :gutter="24">
  431. <el-col :span="6">
  432. <el-form-item label="印件号:" prop="flatFeed" class="mab">
  433. <el-input
  434. v-model="formData.sczl_yjno"
  435. id="印件号"
  436. @focus="yjnoHandleFocus()"
  437. @blur="getYJMCsubmit()"
  438. @keydown="ent1($event)"
  439. :clearable="true"
  440. />
  441. </el-form-item>
  442. </el-col>
  443. <el-col :span="18">
  444. <el-form-item
  445. label="印件名称:"
  446. prop="perTenThousand"
  447. class="mab"
  448. label-width="150"
  449. >
  450. <el-input
  451. v-model="formData.yj_yjmc"
  452. id="印件名称"
  453. @keydown="ent1($event)"
  454. :clearable="true"
  455. />
  456. </el-form-item>
  457. </el-col>
  458. </el-row>
  459. <el-row :gutter="24">
  460. <el-col :span="14">
  461. <el-form-item label="工序名称:" prop="flatFeed" class="mab">
  462. <el-input
  463. v-model="formData.sczl_gxmc"
  464. id="工序名称"
  465. @focus="gxmcHandleFocus()"
  466. @blur="getGXsubmit()"
  467. @keydown="ent1($event)"
  468. :clearable="true"
  469. style="width: 350px"
  470. />
  471. <el-input
  472. v-model="formData.sczl_gxh"
  473. id="工序号"
  474. :readonly="true"
  475. :clearable="true"
  476. style="width: 50px; margin-left: 10px"
  477. />
  478. </el-form-item>
  479. </el-col>
  480. <el-col :span="10">
  481. <el-form-item
  482. label="工艺名称:"
  483. prop="perTenThousand"
  484. class="mab"
  485. >
  486. <el-input
  487. v-model="formData.sczl_type"
  488. id="工艺名称"
  489. :readonly="true"
  490. :clearable="true"
  491. style="width: 200px"
  492. />
  493. </el-form-item>
  494. </el-col>
  495. </el-row>
  496. <el-row :gutter="24">
  497. <el-col :span="6">
  498. <el-form-item label="日期:" prop="flatFeed" class="mab">
  499. <el-input
  500. type="date"
  501. max="9999-12-31"
  502. v-model="formData.sczl_rq"
  503. id="日期"
  504. @focus="rqHandleFocus()"
  505. @keydown="ent1($event)"
  506. :clearable="true"
  507. style="width: 200px"
  508. />
  509. </el-form-item>
  510. </el-col>
  511. <el-col :span="8">
  512. <el-form-item label="机器:" prop="flatFeed" class="mab">
  513. <el-input
  514. v-model="formData.sczl_jtbh"
  515. id="机器"
  516. @keydown="ent1($event)"
  517. @blur="getJtbhsubmit()"
  518. :clearable="true"
  519. style="width: 100px"
  520. />
  521. </el-form-item>
  522. </el-col>
  523. <el-col :span="10">
  524. <el-form-item label="组别:" prop="flatFeed" class="mab">
  525. <el-input
  526. v-model="formData.sczl_bzdh"
  527. id="组别"
  528. @keydown="ent1($event)"
  529. @blur="getBzsubmit()"
  530. :clearable="true"
  531. style="width: 200px"
  532. />
  533. </el-form-item>
  534. </el-col>
  535. </el-row>
  536. <el-row :gutter="24">
  537. <el-col :span="6">
  538. <el-form-item label="墨色:" prop="flatFeed" class="mab">
  539. <el-input
  540. v-model="formData.sczl_ms"
  541. id="墨色"
  542. @keydown="ent1($event)"
  543. :clearable="true"
  544. style="width: 200px"
  545. />
  546. </el-form-item>
  547. </el-col>
  548. <el-col :span="8">
  549. <el-form-item label="加工联数:" prop="flatFeed" class="mab">
  550. <el-input
  551. v-model="formData.sczl_ls"
  552. id="加工联数"
  553. @keydown="ent1($event)"
  554. :clearable="true"
  555. style="width: 100px; margin-right: 30px"
  556. />
  557. <el-input
  558. v-model="mult1"
  559. id="mult1"
  560. @keydown="ent1($event)"
  561. @blur="mult()"
  562. style="width: 50px"
  563. />X
  564. <el-input
  565. v-model="mult2"
  566. id="mult2"
  567. @keydown="ent1($event)"
  568. @blur="mult()"
  569. style="width: 60px"
  570. />
  571. </el-form-item>
  572. </el-col>
  573. <el-col :span="5">
  574. <el-form-item label="产量:" prop="flatFeed" class="mab">
  575. <el-input
  576. v-model="formData.sczl_cl"
  577. id="产量"
  578. @keydown="ent1($event)"
  579. :clearable="true"
  580. style="width: 200px"
  581. />
  582. </el-form-item>
  583. </el-col>
  584. <el-col :span="5">
  585. <el-form-item label="制程废品:" prop="flatFeed" class="mab">
  586. <el-input
  587. v-model="formData.sczl_zcfp"
  588. id="制程废品"
  589. @keydown="ent1($event)"
  590. :clearable="true"
  591. style="width: 200px"
  592. />
  593. </el-form-item>
  594. </el-col>
  595. </el-row>
  596. <el-row :gutter="24">
  597. <el-col :span="6">
  598. <el-form-item label="装版总工时:" prop="flatFeed" class="mab">
  599. <el-input
  600. v-model="formData.sczl_装版总工时"
  601. id="装版总工时"
  602. @keydown="ent1($event)"
  603. :clearable="true"
  604. style="width: 200px"
  605. />
  606. </el-form-item>
  607. </el-col>
  608. <el-col :span="8">
  609. <el-form-item
  610. label="装版补产工时:"
  611. prop="flatFeed"
  612. class="mab"
  613. >
  614. <el-input
  615. v-model="formData.sczl_装版工时"
  616. id="装版补产工时"
  617. @keydown="ent1($event)"
  618. :clearable="true"
  619. style="width: 200px"
  620. />
  621. </el-form-item>
  622. </el-col>
  623. <el-col :span="5">
  624. <el-form-item label="保养工时:" prop="flatFeed" class="mab">
  625. <el-input
  626. v-model="formData.sczl_保养工时"
  627. id="保养工时"
  628. @keydown="ent1($event)"
  629. :clearable="true"
  630. style="width: 200px"
  631. />
  632. </el-form-item>
  633. </el-col>
  634. <el-col :span="5">
  635. <el-form-item label="异常停机:" prop="flatFeed" class="mab">
  636. <el-input
  637. v-model="formData.sczl_异常停机工时"
  638. id="异常停机"
  639. @keydown="ent1($event)"
  640. :clearable="true"
  641. style="width: 200px"
  642. />
  643. </el-form-item>
  644. </el-col>
  645. </el-row>
  646. <el-row :gutter="24">
  647. <el-col :span="6">
  648. <el-form-item label="打样总工时:" prop="flatFeed" class="mab">
  649. <el-input
  650. v-model="formData.sczl_打样总工时"
  651. id="打样总工时"
  652. @keydown="ent1($event)"
  653. :clearable="true"
  654. style="width: 200px"
  655. />
  656. </el-form-item>
  657. </el-col>
  658. <el-col :span="8">
  659. <el-form-item
  660. label="打样补产工时:"
  661. prop="flatFeed"
  662. class="mab"
  663. >
  664. <el-input
  665. v-model="formData.sczl_打样工时"
  666. id="打样补产工时"
  667. @keydown="
  668. ent1($event, '打样总工时', '打样补产工时', '通电时间')
  669. "
  670. :clearable="true"
  671. style="width: 200px"
  672. />
  673. </el-form-item>
  674. </el-col>
  675. <el-col :span="10">
  676. <el-form-item label="通电时间:" prop="flatFeed" class="mab">
  677. <el-input
  678. v-model="formData.sczl_设备运行工时"
  679. id="通电时间"
  680. @keydown="
  681. ent1($event, '打样补产工时', '通电时间', '拆片联拼系数')
  682. "
  683. :clearable="true"
  684. style="width: 200px"
  685. />
  686. </el-form-item>
  687. </el-col>
  688. </el-row>
  689. <el-row :gutter="24" style="height: 40px">
  690. <el-col :span="14" v-if="showFormItems">
  691. <el-form-item
  692. label="拆片联拼系数:"
  693. prop="flatFeed"
  694. class="mab"
  695. label-width="417px"
  696. >
  697. <el-input
  698. v-model="formData.拆片联拼系数"
  699. id="拆片联拼系数"
  700. @keydown="
  701. ent1(
  702. $event,
  703. '通电时间',
  704. '拆片联拼系数',
  705. '拆片条小盒系数'
  706. )
  707. "
  708. :clearable="true"
  709. style="width: 200px"
  710. />
  711. </el-form-item>
  712. </el-col>
  713. <el-col :span="10" v-if="showFormItems">
  714. <el-form-item
  715. label="拆片条小盒系数:"
  716. prop="flatFeed"
  717. class="mab"
  718. >
  719. <el-input
  720. v-model="formData.拆片条小盒系数"
  721. id="拆片条小盒系数"
  722. @keydown="
  723. ent1(
  724. $event,
  725. '拆片联拼系数',
  726. '拆片条小盒系数',
  727. '定额代号'
  728. )
  729. "
  730. :clearable="true"
  731. style="width: 200px"
  732. />
  733. </el-form-item>
  734. </el-col>
  735. </el-row>
  736. <el-row :gutter="24">
  737. <el-col :span="14">
  738. <el-form-item
  739. label="定额代号:"
  740. prop="flatFeed"
  741. class="mab"
  742. label-width="417px"
  743. >
  744. <el-input
  745. v-model="formData.sczl_dedh"
  746. id="定额代号"
  747. @keydown="
  748. ent1($event, '拆片条小盒系数', '定额代号', '工价系数')
  749. "
  750. @blur="getDedhsubmit()"
  751. :clearable="true"
  752. style="width: 200px"
  753. />
  754. </el-form-item>
  755. </el-col>
  756. <el-col :span="5">
  757. <el-form-item
  758. label="工价系数:"
  759. v-if="showFormItems"
  760. prop="flatFeed"
  761. class="mab"
  762. >
  763. <el-input
  764. v-model="formData.sczl_工价系数"
  765. id="工价系数"
  766. @keydown="
  767. ent1($event, '定额代号', '工价系数', '计产系数')
  768. "
  769. :clearable="true"
  770. style="width: 200px"
  771. />
  772. </el-form-item>
  773. </el-col>
  774. <el-col :span="5">
  775. <el-form-item
  776. label="计产系数:"
  777. v-if="showFormItems"
  778. prop="flatFeed"
  779. class="mab"
  780. >
  781. <el-input
  782. v-model="formData.sczl_计产系数"
  783. id="计产系数"
  784. @keydown="
  785. ent1($event, '工价系数', '计产系数', 'sczl_bh1')
  786. "
  787. :clearable="true"
  788. style="width: 200px"
  789. />
  790. </el-form-item>
  791. </el-col>
  792. </el-row>
  793. <el-row :gutter="22" style="margin-top: 10px">
  794. <el-col :span="2"></el-col>
  795. <el-col :span="2"><span>员工姓名1</span></el-col>
  796. <el-col :span="2"><span>员工姓名2</span></el-col>
  797. <el-col :span="2"><span>员工姓名3</span></el-col>
  798. <el-col :span="2"><span>员工姓名4</span></el-col>
  799. <el-col :span="2"><span>员工姓名5</span></el-col>
  800. <el-col :span="2"><span>员工姓名6</span></el-col>
  801. <el-col :span="2"><span>员工姓名7</span></el-col>
  802. <el-col :span="2"><span>员工姓名8</span></el-col>
  803. <el-col :span="2"><span>员工姓名9</span></el-col>
  804. <el-col :span="2"
  805. ><span><b>特殊组员</b></span></el-col
  806. >
  807. </el-row>
  808. <el-row :gutter="22" style="margin-top: 10px">
  809. <el-col :span="2"><span>班组成员</span></el-col>
  810. <el-col :span="2">
  811. <el-input
  812. v-model="formData.sczl_bh1"
  813. id="sczl_bh1"
  814. @blur="GetYg($event, '1')"
  815. @keydown="getGxMcsubmit($event, '1')"
  816. />
  817. </el-col>
  818. <el-col :span="2">
  819. <el-input
  820. v-model="formData.sczl_bh2"
  821. id="sczl_bh2"
  822. @blur="GetYg($event, '2')"
  823. @keydown="getGxMcsubmit($event, '2')"
  824. />
  825. </el-col>
  826. <el-col :span="2">
  827. <el-input
  828. v-model="formData.sczl_bh3"
  829. id="sczl_bh3"
  830. @blur="GetYg($event, '3')"
  831. @keydown="getGxMcsubmit($event, '3')"
  832. />
  833. </el-col>
  834. <el-col :span="2">
  835. <el-input
  836. v-model="formData.sczl_bh4"
  837. id="sczl_bh4"
  838. @blur="GetYg($event, '4')"
  839. @keydown="getGxMcsubmit($event, '4')"
  840. />
  841. </el-col>
  842. <el-col :span="2">
  843. <el-input
  844. v-model="formData.sczl_bh5"
  845. id="sczl_bh5"
  846. @blur="GetYg($event, '5')"
  847. @keydown="getGxMcsubmit($event, '5')"
  848. />
  849. </el-col>
  850. <el-col :span="2">
  851. <el-input
  852. v-model="formData.sczl_bh6"
  853. id="sczl_bh6"
  854. @blur="GetYg($event, '6')"
  855. @keydown="getGxMcsubmit($event, '6')"
  856. />
  857. </el-col>
  858. <el-col :span="2">
  859. <el-input
  860. v-model="formData.sczl_bh7"
  861. id="sczl_bh7"
  862. @blur="GetYg($event, '7')"
  863. @keydown="getGxMcsubmit($event, '7')"
  864. />
  865. </el-col>
  866. <el-col :span="2">
  867. <el-input
  868. v-model="formData.sczl_bh8"
  869. id="sczl_bh8"
  870. @blur="GetYg($event, '8')"
  871. @keydown="getGxMcsubmit($event, '8')"
  872. />
  873. </el-col>
  874. <el-col :span="2">
  875. <el-input
  876. v-model="formData.sczl_bh9"
  877. id="sczl_bh9"
  878. @blur="GetYg($event, '9')"
  879. @keydown="getGxMcsubmit($event, '9')"
  880. />
  881. </el-col>
  882. <el-col :span="2">
  883. <el-input
  884. v-model="formData.sczl_bh10"
  885. id="sczl_bh10"
  886. @blur="GetYg($event, '10')"
  887. @keydown="getGxMcsubmit($event, '10')"
  888. />
  889. </el-col>
  890. </el-row>
  891. </el-form>
  892. <el-row :gutter="22" style="margin-top: 10px">
  893. <el-col :span="2"></el-col>
  894. <el-col :span="2">
  895. <el-input
  896. v-model="formData.sczl_bh1_name"
  897. id="name1"
  898. :readonly="true"
  899. />
  900. </el-col>
  901. <el-col :span="2">
  902. <el-input
  903. v-model="formData.sczl_bh2_name"
  904. id="name2"
  905. :readonly="true"
  906. />
  907. </el-col>
  908. <el-col :span="2">
  909. <el-input
  910. v-model="formData.sczl_bh3_name"
  911. id="name3"
  912. :readonly="true"
  913. />
  914. </el-col>
  915. <el-col :span="2">
  916. <el-input
  917. v-model="formData.sczl_bh4_name"
  918. id="name4"
  919. :readonly="true"
  920. />
  921. </el-col>
  922. <el-col :span="2">
  923. <el-input
  924. v-model="formData.sczl_bh5_name"
  925. id="name5"
  926. :readonly="true"
  927. />
  928. </el-col>
  929. <el-col :span="2">
  930. <el-input
  931. v-model="formData.sczl_bh6_name"
  932. id="name6"
  933. :readonly="true"
  934. />
  935. </el-col>
  936. <el-col :span="2">
  937. <el-input
  938. v-model="formData.sczl_bh7_name"
  939. id="name7"
  940. :readonly="true"
  941. />
  942. </el-col>
  943. <el-col :span="2">
  944. <el-input
  945. v-model="formData.sczl_bh8_name"
  946. id="name8"
  947. :readonly="true"
  948. />
  949. </el-col>
  950. <el-col :span="2">
  951. <el-input
  952. v-model="formData.sczl_bh9_name"
  953. id="name9"
  954. :readonly="true"
  955. />
  956. </el-col>
  957. <el-col :span="2">
  958. <el-input
  959. v-model="formData.sczl_bh10_name"
  960. id="name10"
  961. :readonly="true"
  962. />
  963. </el-col>
  964. </el-row>
  965. <el-row :gutter="22" style="margin-top: 10px">
  966. <el-col :span="2"></el-col>
  967. <el-col :span="2">
  968. <el-input
  969. v-model="formData.sczl_rate1"
  970. id="rate1"
  971. @keydown="rate($event, '1')"
  972. />
  973. </el-col>
  974. <el-col :span="2">
  975. <el-input
  976. v-model="formData.sczl_rate2"
  977. id="rate2"
  978. @keydown="rate($event, '2')"
  979. />
  980. </el-col>
  981. <el-col :span="2">
  982. <el-input
  983. v-model="formData.sczl_rate3"
  984. id="rate3"
  985. @keydown="rate($event, '3')"
  986. />
  987. </el-col>
  988. <el-col :span="2">
  989. <el-input
  990. v-model="formData.sczl_rate4"
  991. id="rate4"
  992. @keydown="rate($event, '4')"
  993. />
  994. </el-col>
  995. <el-col :span="2">
  996. <el-input
  997. v-model="formData.sczl_rate5"
  998. id="rate5"
  999. @keydown="rate($event, '5')"
  1000. />
  1001. </el-col>
  1002. <el-col :span="2">
  1003. <el-input
  1004. v-model="formData.sczl_rate6"
  1005. id="rate6"
  1006. @keydown="rate($event, '6')"
  1007. />
  1008. </el-col>
  1009. <el-col :span="2">
  1010. <el-input
  1011. v-model="formData.sczl_rate7"
  1012. id="rate7"
  1013. @keydown="rate($event, '7')"
  1014. />
  1015. </el-col>
  1016. <el-col :span="2">
  1017. <el-input
  1018. v-model="formData.sczl_rate8"
  1019. id="rate8"
  1020. @keydown="rate($event, '8')"
  1021. />
  1022. </el-col>
  1023. <el-col :span="2">
  1024. <el-input
  1025. v-model="formData.sczl_rate9"
  1026. id="rate9"
  1027. @keydown="rate($event, '9')"
  1028. />
  1029. </el-col>
  1030. <el-col :span="2">
  1031. <el-input
  1032. v-model="formData.sczl_rate10"
  1033. id="rate10"
  1034. @keydown="rate($event, '10')"
  1035. />
  1036. </el-col>
  1037. </el-row>
  1038. <template #footer>
  1039. <div class="dialog-footer">
  1040. <el-button @click="closeDialog">取 消</el-button>
  1041. <el-button type="primary" @click="enterDialog">确 定</el-button>
  1042. </div>
  1043. </template>
  1044. </el-dialog>
  1045. <!-- 员工选择 -->
  1046. <el-dialog
  1047. v-model="dialogSelectVisible_Yg"
  1048. title="选择"
  1049. destroy-on-close
  1050. width="300px"
  1051. @keydown="selectGX_Yg($event)"
  1052. >
  1053. <el-table
  1054. tooltip-effect="dark"
  1055. :data="selectData_Yg"
  1056. row-key="ID"
  1057. highlight-current-row="true"
  1058. border
  1059. style="width: 100%"
  1060. @row-dblclick="handleSelectClick_Yg"
  1061. ref="table_Yg"
  1062. >
  1063. <el-table-column prop="员工编号" label="员工编号" width="100" />
  1064. <el-table-column prop="ygxm" label="员工姓名" width="200" />
  1065. </el-table>
  1066. </el-dialog>
  1067. <el-dialog
  1068. v-model="GetDedhVisible"
  1069. title="选择"
  1070. destroy-on-close
  1071. width="600px"
  1072. >
  1073. <el-aside width="250px">
  1074. <div class="JKWTree-tree">
  1075. <el-tree
  1076. :data="GetDedhtreeData"
  1077. :props="defaultProps"
  1078. highlight-current="true"
  1079. @node-click="GetDedhhandleNodeClick"
  1080. @node-dblclick="handleNodeDoubleClick"
  1081. ></el-tree>
  1082. </div>
  1083. </el-aside>
  1084. </el-dialog>
  1085. <el-dialog
  1086. v-model="GXVisible"
  1087. title="选择"
  1088. destroy-on-close
  1089. width="800px"
  1090. >
  1091. <el-table
  1092. ref="tableRef"
  1093. tooltip-effect="dark"
  1094. :data="selectData"
  1095. row-key="ID"
  1096. highlight-current-row="true"
  1097. border
  1098. style="width: 100%"
  1099. @row-dblclick="SelectClick"
  1100. >
  1101. <el-table-column prop="sczl_gxmc" label="工序名称" width="750" />
  1102. </el-table>
  1103. </el-dialog>
  1104. <el-dialog
  1105. v-model="JtbhVisible"
  1106. title="选择"
  1107. destroy-on-close
  1108. width="800px"
  1109. >
  1110. <el-table
  1111. tooltip-effect="dark"
  1112. :data="selectDataJtbh"
  1113. row-key="ID"
  1114. highlight-current-row="true"
  1115. border
  1116. style="width: 100%"
  1117. @row-dblclick="SelectClickJtbh"
  1118. >
  1119. <el-table-column prop="jtbh" label="设备编号" width="150" />
  1120. <el-table-column prop="设备名称" label="设备名称" width="600" />
  1121. </el-table>
  1122. </el-dialog>
  1123. <el-dialog
  1124. v-model="BzVisible"
  1125. title="选择"
  1126. destroy-on-close
  1127. width="200px"
  1128. @keydown="selectBZ($event)"
  1129. >
  1130. <el-table
  1131. tooltip-effect="dark"
  1132. :data="selectDataBz"
  1133. row-key="ID"
  1134. highlight-current-row="true"
  1135. border
  1136. style="width: 100%"
  1137. @row-dblclick="SelectClickBz"
  1138. ref="table2"
  1139. >
  1140. <el-table-column prop="sczl_bzdh" label="班组" width="150" />
  1141. </el-table>
  1142. </el-dialog>
  1143. </el-main>
  1144. </el-container>
  1145. </el-container>
  1146. </div>
  1147. </template>
  1148. <script setup>
  1149. import {
  1150. getproductionCount,
  1151. getproductionList,
  1152. productionlocate,
  1153. productionByGdbh,
  1154. productionInfo,
  1155. productionGdmc,
  1156. productionYjmc,
  1157. productionGx,
  1158. productionDedh,
  1159. productionedit,
  1160. productiondel,
  1161. getYg,
  1162. productionadd,
  1163. reportGetJtbh,
  1164. dedhGetRate,
  1165. Export,
  1166. ProductionData,
  1167. } from "@/api/jixiaoguanli/jitairibaobiao";
  1168. // 全量引入格式化工具 请按需保留
  1169. import {
  1170. getDictFunc,
  1171. formatDate,
  1172. formatBoolean,
  1173. filterDict,
  1174. ReturnArrImg,
  1175. onDownloadFile,
  1176. } from "@/utils/format";
  1177. import { ElMessage, ElMessageBox } from "element-plus";
  1178. import { Search, Refresh, Download } from "@element-plus/icons-vue";
  1179. import * as XLSX from 'xlsx'
  1180. import FileSaver from 'file-saver'
  1181. import { ref, reactive, nextTick, onMounted, onBeforeMount } from "vue";
  1182. import { getPackingSideTable, getPackingTable } from "@/api/mes_api_gty/myapi";
  1183. import {
  1184. Layout,
  1185. LayoutContent,
  1186. LayoutHeader,
  1187. LayoutSider,
  1188. } from "@arco-design/web-vue";
  1189. import { exportExcelFile } from "@/utils/excel";
  1190. import { useUserStore } from "@/pinia/modules/user";
  1191. const userStore = useUserStore();
  1192. const sys_id =
  1193. "[" + userStore.userInfo.userName + "/" + userStore.userInfo.nickName + "]";
  1194. defineOptions({
  1195. name: "06-packingDocuments",
  1196. });
  1197. const GetDedhVisible = ref(false);
  1198. // 侧边栏数据请求
  1199. const treeData = reactive([]);
  1200. const getTabdata = async () => {
  1201. //接口调用函数
  1202. const response = await getproductionCount();
  1203. const transformedData = response.data.map((item) => ({
  1204. label: `${item.date.replace(/-/g, ".")}【单据数: ${item.counts}张】`,
  1205. children: Object.keys(item.sys).map((sysItem) => {
  1206. const matchResult = sysItem.match(/\[(.*?)\]/);
  1207. const sysLabel = matchResult ? matchResult[1] : "";
  1208. return {
  1209. label: `${sysLabel}【记录数: ${item.sys[sysItem]}张】`,
  1210. params: {
  1211. date: item.date.replace(/\./g, "-"),
  1212. sys_id: sysItem,
  1213. total: item.sys[sysItem],
  1214. },
  1215. };
  1216. }),
  1217. }));
  1218. treeData.splice(0, treeData.length, ...transformedData);
  1219. displayMod.value = "date";
  1220. };
  1221. getTabdata();
  1222. const mult1 = ref("0.00");
  1223. const mult2 = ref("0.000");
  1224. // 自动化生成的字典(可能为空)以及字段
  1225. const formData = ref({
  1226. sczl_gdbh: "",
  1227. Gd_cpmc: "",
  1228. sczl_yjno: "",
  1229. yj_yjmc: "",
  1230. sczl_gxmc: "",
  1231. sczl_gxh: "",
  1232. sczl_type: "",
  1233. sczl_rq: "",
  1234. sczl_jtbh: "",
  1235. sczl_bzdh: "",
  1236. sczl_ms: "",
  1237. sczl_ls: "",
  1238. sczl_cl: "0.0",
  1239. sczl_zcfp: "0",
  1240. sczl_装版总工时: "0.00",
  1241. sczl_装版工时: "0.00",
  1242. sczl_保养工时: "0.00",
  1243. sczl_异常停机工时: "0.00",
  1244. sczl_打样总工时: "",
  1245. sczl_打样工时: "0.00",
  1246. sczl_设备运行工时: "0.00",
  1247. 拆片联拼系数: "1",
  1248. 拆片条小盒系数: "",
  1249. sczl_dedh: "",
  1250. sczl_工价系数: "",
  1251. sczl_计产系数: "",
  1252. sczl_bh1: "",
  1253. sczl_bh2: "",
  1254. sczl_bh3: "",
  1255. sczl_bh4: "",
  1256. sczl_bh5: "",
  1257. sczl_bh6: "",
  1258. sczl_bh7: "",
  1259. sczl_bh8: "",
  1260. sczl_bh9: "",
  1261. sczl_bh10: "",
  1262. sczl_rate1: "",
  1263. sczl_rate2: "",
  1264. sczl_rate3: "",
  1265. sczl_rate4: "",
  1266. sczl_rate5: "",
  1267. sczl_rate6: "",
  1268. sczl_rate7: "",
  1269. sczl_rate8: "",
  1270. sczl_rate9: "",
  1271. sczl_rate10: "",
  1272. sczl_bh1_name: "",
  1273. sczl_bh2_name: "",
  1274. sczl_bh3_name: "",
  1275. sczl_bh4_name: "",
  1276. sczl_bh5_name: "",
  1277. sczl_bh6_name: "",
  1278. sczl_bh7_name: "",
  1279. sczl_bh8_name: "",
  1280. sczl_bh9_name: "",
  1281. sczl_bh10_name: "",
  1282. });
  1283. const initFormData = () => {
  1284. formData.value = {
  1285. sczl_gdbh: "",
  1286. Gd_cpmc: "",
  1287. sczl_yjno: "",
  1288. yj_yjmc: "",
  1289. sczl_gxmc: "",
  1290. sczl_gxh: "",
  1291. sczl_type: "",
  1292. sczl_rq: "",
  1293. sczl_jtbh: "",
  1294. sczl_bzdh: "",
  1295. sczl_ms: "",
  1296. sczl_ls: "",
  1297. sczl_cl: "0.0",
  1298. sczl_zcfp: "0",
  1299. sczl_装版总工时: "0.00",
  1300. sczl_装版工时: "0.00",
  1301. sczl_保养工时: "0.00",
  1302. sczl_异常停机工时: "0.00",
  1303. sczl_打样总工时: "",
  1304. sczl_打样工时: "0.00",
  1305. sczl_设备运行工时: "0.00",
  1306. 拆片联拼系数: "1",
  1307. 拆片条小盒系数: "",
  1308. sczl_dedh: "",
  1309. sczl_工价系数: "",
  1310. sczl_计产系数: "",
  1311. sczl_bh1: "",
  1312. sczl_bh2: "",
  1313. sczl_bh3: "",
  1314. sczl_bh4: "",
  1315. sczl_bh5: "",
  1316. sczl_bh6: "",
  1317. sczl_bh7: "",
  1318. sczl_bh8: "",
  1319. sczl_bh9: "",
  1320. sczl_bh10: "",
  1321. sczl_rate1: "",
  1322. sczl_rate2: "",
  1323. sczl_rate3: "",
  1324. sczl_rate4: "",
  1325. sczl_rate5: "",
  1326. sczl_rate6: "",
  1327. sczl_rate7: "",
  1328. sczl_rate8: "",
  1329. sczl_rate9: "",
  1330. sczl_rate10: "",
  1331. sczl_bh1_name: "",
  1332. sczl_bh2_name: "",
  1333. sczl_bh3_name: "",
  1334. sczl_bh4_name: "",
  1335. sczl_bh5_name: "",
  1336. sczl_bh6_name: "",
  1337. sczl_bh7_name: "",
  1338. sczl_bh8_name: "",
  1339. sczl_bh9_name: "",
  1340. sczl_bh10_name: "",
  1341. };
  1342. };
  1343. // 验证规则
  1344. const rule = reactive({
  1345. sczl_gdbh: [
  1346. {
  1347. required: true,
  1348. message: "",
  1349. trigger: [],
  1350. },
  1351. ],
  1352. sczl_yjno: [
  1353. {
  1354. required: true,
  1355. message: "",
  1356. trigger: [],
  1357. },
  1358. ],
  1359. sczl_gxmc: [
  1360. {
  1361. required: true,
  1362. message: "",
  1363. trigger: [],
  1364. },
  1365. ],
  1366. sczl_gxh: [
  1367. {
  1368. required: true,
  1369. message: "",
  1370. trigger: [],
  1371. },
  1372. ],
  1373. sczl_type: [
  1374. {
  1375. required: true,
  1376. message: "",
  1377. trigger: [],
  1378. },
  1379. ],
  1380. sczl_rq: [
  1381. {
  1382. required: true,
  1383. message: "",
  1384. trigger: [],
  1385. },
  1386. ],
  1387. sczl_bzdh: [
  1388. {
  1389. required: true,
  1390. message: "",
  1391. trigger: [],
  1392. },
  1393. ],
  1394. sczl_cl: [
  1395. {
  1396. required: true,
  1397. message: "",
  1398. trigger: [],
  1399. },
  1400. ],
  1401. sczl_dedh: [
  1402. {
  1403. required: true,
  1404. message: "",
  1405. trigger: [],
  1406. },
  1407. ],
  1408. });
  1409. const elFormRef = ref();
  1410. const elSearchFormRef = ref();
  1411. // =========== 表格控制部分 ===========
  1412. const tableData = reactive([]);
  1413. const detailData = reactive([]);
  1414. const total = ref(0);
  1415. const page = ref(1);
  1416. const limit = ref(10);
  1417. const searchInfo = ref("");
  1418. const params = {
  1419. type: "",
  1420. date: "",
  1421. sys_id: "",
  1422. gdbh: "",
  1423. };
  1424. // 分页设置
  1425. const handleSizeChange = (val) => {
  1426. switch (params.type) {
  1427. case "getTableData":
  1428. getTableData();
  1429. break;
  1430. case "getLocateTable":
  1431. GetLocate();
  1432. break;
  1433. default:
  1434. break;
  1435. }
  1436. };
  1437. // 页面跳转
  1438. const handleCurrentChange = (val) => {
  1439. switch (params.type) {
  1440. case "getTableData":
  1441. getTableData();
  1442. break;
  1443. case "getLocateTable":
  1444. GetLocate();
  1445. break;
  1446. default:
  1447. break;
  1448. }
  1449. };
  1450. //定位
  1451. // const GetLocate = async () => {
  1452. // const response = await productionlocate({
  1453. // gdbh: params.gdbh,
  1454. // page: page.value.toString(), limit: limit.value.toString(),
  1455. // })
  1456. // if (response.code === 0) {
  1457. // console.log(response)
  1458. // const processedData = response.data.rows.map(item => {
  1459. // return {
  1460. // ...item,
  1461. // combinedProp: item.sczl_gdbh + '--'+item.yj_yjmc,
  1462. // combinedProp2: item.sczl_yjgx + '-'+item.sczl_gxmc
  1463. // };
  1464. // });
  1465. // total.value = response.data.total
  1466. // tableData.splice(0, tableData.length, ...processedData);
  1467. // }
  1468. // }
  1469. const GetLocate = async () => {
  1470. console.log(params.gdbh);
  1471. console.log(page.value.toString());
  1472. console.log(limit.value.toString());
  1473. const response = await productionlocate({
  1474. gdbh: params.gdbh,
  1475. page: page.value.toString(),
  1476. limit: limit.value.toString(),
  1477. });
  1478. console.log(response);
  1479. if (response.code === 0) {
  1480. const processedData = response.data.rows.map((item) => {
  1481. return {
  1482. ...item,
  1483. combinedProp: item.sczl_gdbh + "--" + item.yj_yjmc,
  1484. combinedProp2: item.sczl_yjgx + "-" + item.sczl_gxmc,
  1485. };
  1486. });
  1487. total.value = parseInt(response.data.total);
  1488. // limit.value=response.data.total
  1489. tableData.splice(0, tableData.length, ...processedData);
  1490. }
  1491. };
  1492. let positionvalue = ref();
  1493. //获取列表
  1494. const getTableData = async () => {
  1495. const response = await getproductionList({
  1496. date: params.date,
  1497. sys_id: params.sys_id,
  1498. page: page.value.toString(),
  1499. limit: limit.value.toString(),
  1500. });
  1501. if (response.code === 0) {
  1502. tableData.splice(0, tableData.length, ...response.data.rows);
  1503. console.log(tableData);
  1504. }
  1505. };
  1506. const handleNodeClick = (node, check) => {
  1507. //存放当前节点的nodeId
  1508. if (node.params) {
  1509. params.date = node.params.date;
  1510. params.sys_id = node.params.sys_id;
  1511. params.type = "getTableData";
  1512. total.value = node.params.total;
  1513. page.value = 1;
  1514. getTableData();
  1515. }
  1516. };
  1517. //键盘 input框跳转
  1518. // const ent = (event,id1,id2,id3) => {
  1519. // if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  1520. // if(id3!=''){
  1521. // document.getElementById(id3).focus()
  1522. // }
  1523. // } else if (event.keyCode === 38) { // 向上箭头
  1524. // if(id1!=''){
  1525. // document.getElementById(id1).focus()
  1526. // }
  1527. // }else if (event.keyCode === 8) { // 删除箭头
  1528. // if(id1!='' && document.getElementById(id2).value===''){
  1529. // document.getElementById(id1).focus()
  1530. // }
  1531. // }else if (event.keyCode === 37) { // 向左箭头
  1532. // if(id1!='' && document.getElementById(id2).selectionStart==0){
  1533. // document.getElementById(id1).focus()
  1534. // }
  1535. // }else if (event.keyCode === 39) { // 向右箭头
  1536. // if(id3!='' && document.getElementById(id2).selectionStart == document.getElementById(id2).value.length){
  1537. // document.getElementById(id3).focus()
  1538. // }
  1539. // }
  1540. // }
  1541. const ent1 = (event) => {
  1542. const inputs = document.getElementsByTagName("input");
  1543. const currentIndex = Array.from(inputs).indexOf(event.target);
  1544. if (event.keyCode === 13 || event.keyCode === 40) {
  1545. // Enter 或向下箭头
  1546. for (let i = currentIndex + 1; i < inputs.length; i++) {
  1547. if (!inputs[i].readOnly) {
  1548. nextTick(() => {
  1549. inputs[i].focus();
  1550. inputs[i].select();
  1551. });
  1552. break;
  1553. }
  1554. }
  1555. } else if (event.keyCode === 38) {
  1556. // 向上箭头
  1557. for (let i = currentIndex - 1; i >= 0; i--) {
  1558. if (!inputs[i].readOnly) {
  1559. nextTick(() => {
  1560. inputs[i].focus();
  1561. inputs[i].select();
  1562. });
  1563. break;
  1564. }
  1565. }
  1566. } else if (event.keyCode === 8) {
  1567. // 删除箭头
  1568. if (event.target.selectionStart === 0) {
  1569. for (let i = currentIndex - 1; i >= 0; i--) {
  1570. if (!inputs[i].readOnly) {
  1571. nextTick(() => {
  1572. inputs[i].focus();
  1573. inputs[i].setSelectionRange(0, 0);
  1574. inputs[i].select(); // 全选输入框内容
  1575. });
  1576. break;
  1577. }
  1578. }
  1579. }
  1580. } else if (event.keyCode === 37) {
  1581. // 向左箭头
  1582. if (event.target.selectionStart === 0) {
  1583. for (let i = currentIndex - 1; i >= 0; i--) {
  1584. if (!inputs[i].readOnly) {
  1585. nextTick(() => {
  1586. inputs[i].focus();
  1587. inputs[i].select();
  1588. });
  1589. break;
  1590. }
  1591. }
  1592. }
  1593. } else if (event.keyCode === 39) {
  1594. // 向右箭头
  1595. if (event.target.selectionStart === event.target.value.length) {
  1596. for (let i = currentIndex + 1; i < inputs.length; i++) {
  1597. if (!inputs[i].readOnly) {
  1598. nextTick(() => {
  1599. inputs[i].focus();
  1600. inputs[i].select();
  1601. });
  1602. break;
  1603. }
  1604. }
  1605. }
  1606. }
  1607. };
  1608. //追加字体颜色和不可输入
  1609. const setColorReadonly = (id) => {
  1610. const newInput = document.getElementById(id);
  1611. newInput.style.color = "red";
  1612. newInput.setAttribute("readonly", true);
  1613. };
  1614. //追加字体颜色和可输入
  1615. const unsetColorReadonly = (id) => {
  1616. const newInput = document.getElementById(id);
  1617. newInput.style.color = "black";
  1618. newInput.removeAttribute("readonly");
  1619. };
  1620. //工单编号回车事件
  1621. const getCPMCsubmit = () => {
  1622. if (formData.value.sczl_gdbh != "") {
  1623. productionGdmc({
  1624. gdbh: formData.value.sczl_gdbh,
  1625. }).then((response) => {
  1626. if (response.code === 0) {
  1627. formData.value.Gd_cpmc = response.data.Gd_cpmc;
  1628. yjnoArr.value = response.data.yjno;
  1629. document.getElementById("产品名称").style.color = "red";
  1630. } else {
  1631. formData.value.sczl_gdbh = "";
  1632. formData.value.Gd_cpmc = "";
  1633. gxmc.value = "";
  1634. document.getElementById("产品名称").style.color = "black";
  1635. }
  1636. });
  1637. } else {
  1638. ElMessage({
  1639. type: "error",
  1640. message: "请注意, 工单编号输入空置, 除非有特殊需要!",
  1641. });
  1642. gxmc.value = "";
  1643. document.getElementById("产品名称").style.color = "black";
  1644. }
  1645. };
  1646. //印件号数组
  1647. const yjnoArr = ref([0]);
  1648. //印件号获得焦点事件
  1649. const yjnoHandleFocus = () => {
  1650. if (yjnoArr.value[0] == 0) {
  1651. formData.value.sczl_yjno = 1;
  1652. } else {
  1653. formData.value.sczl_yjno = yjnoArr.value[0];
  1654. }
  1655. };
  1656. //印件号失去焦点事件
  1657. const getYJMCsubmit = () => {
  1658. if (formData.value.sczl_gdbh != "" && formData.value.sczl_yjno != "") {
  1659. //获取印件名称
  1660. productionYjmc({
  1661. gdbh: formData.value.sczl_gdbh,
  1662. yjno: formData.value.sczl_yjno,
  1663. }).then((response) => {
  1664. if (response.code === 0) {
  1665. formData.value.yj_yjmc = response.data.yj_yjmc;
  1666. gxmc.value = response.data.gxmc;
  1667. formData.value.sczl_gxmc = gxmc.value.sczl_gxmc;
  1668. setColorReadonly("印件名称");
  1669. } else {
  1670. ElMessage({
  1671. type: "error",
  1672. message: "印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!",
  1673. });
  1674. formData.value.sczl_yjno = yjnoArr.value[0];
  1675. formData.value.yj_yjmc = "";
  1676. gxmc.value = "";
  1677. }
  1678. });
  1679. } else {
  1680. ElMessage({
  1681. type: "error",
  1682. message: "印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!",
  1683. });
  1684. formData.value.sczl_yjno = yjnoArr.value[0];
  1685. formData.value.yj_yjmc = "";
  1686. gxmc.value = "";
  1687. }
  1688. };
  1689. //工序数组
  1690. const gxmc = ref("");
  1691. const showFormItems = ref(true);
  1692. const tableRef = ref();
  1693. //工序数组
  1694. const gxArr = ref({});
  1695. //工序名称获得焦点事件
  1696. const gxmcHandleFocus = () => {
  1697. if (gxmc.value != "") {
  1698. formData.value.sczl_gxmc = gxmc.value.sczl_gxmc;
  1699. } else {
  1700. formData.value.sczl_gxmc = "";
  1701. }
  1702. };
  1703. //工序失去焦点事件
  1704. const getGXsubmit = () => {
  1705. setColorReadonly("工序号");
  1706. setColorReadonly("工艺名称");
  1707. //工序名称为空
  1708. if (formData.value.sczl_gxmc == "") {
  1709. formData.value.sczl_gxh = 0;
  1710. formData.value.sczl_type = "";
  1711. formData.value.sczl_ls = 0;
  1712. //设置字体和输入
  1713. unsetColorReadonly("制程废品");
  1714. unsetColorReadonly("装版总工时");
  1715. unsetColorReadonly("装版补产工时");
  1716. unsetColorReadonly("保养工时");
  1717. unsetColorReadonly("异常停机");
  1718. unsetColorReadonly("打样补产工时");
  1719. unsetColorReadonly("通电时间");
  1720. } else {
  1721. //工序名称为印件默认值
  1722. if (formData.value.sczl_gxmc == gxmc.value.sczl_gxmc) {
  1723. formData.value.sczl_gxh = gxmc.value.sczl_gxh;
  1724. formData.value.sczl_type = gxmc.value.sczl_type;
  1725. formData.value.sczl_ls = gxmc.value.sczl_ls;
  1726. formData.value.sczl_jtbh = "";
  1727. formData.value.sczl_zcfp = 0;
  1728. formData.value.sczl_装版总工时 = 0;
  1729. formData.value.sczl_装版工时 = 0;
  1730. formData.value.sczl_保养工时 = 0;
  1731. formData.value.sczl_异常停机工时 = 0;
  1732. formData.value.sczl_打样工时 = 0;
  1733. formData.value.sczl_设备运行工时 = 0;
  1734. //设置字体和输入
  1735. setColorReadonly("机器");
  1736. setColorReadonly("制程废品");
  1737. setColorReadonly("装版总工时");
  1738. setColorReadonly("装版补产工时");
  1739. setColorReadonly("保养工时");
  1740. setColorReadonly("异常停机");
  1741. setColorReadonly("打样总工时");
  1742. setColorReadonly("打样补产工时");
  1743. setColorReadonly("通电时间");
  1744. //显示联拼
  1745. showFormItems.value = true;
  1746. } else {
  1747. //弹出选择
  1748. productionGx({
  1749. gdbh: formData.value.sczl_gdbh,
  1750. yjno: formData.value.sczl_yjno,
  1751. }).then((response) => {
  1752. if (response.code === 0) {
  1753. selectData.splice(0, selectData.length, ...response.data);
  1754. GXVisible.value = true;
  1755. // nextTick(()=>{
  1756. // console.log(tableRef)
  1757. // console.log(selectData)
  1758. // tableRef.value.setCurrentRow(selectData[0]);
  1759. // tableRef.value.focus();
  1760. // });
  1761. }
  1762. });
  1763. }
  1764. }
  1765. };
  1766. //工序选择JtbhVisible
  1767. const selectData = reactive([]);
  1768. const GXVisible = ref(false);
  1769. const SelectClick = (row, column, event) => {
  1770. const { sczl_gxmc } = row;
  1771. if (row.sczl_type == "拆片") {
  1772. formData.value.sczl_type = row.sczl_type;
  1773. formData.value.sczl_gxmc = row.sczl_gxmc;
  1774. formData.value.sczl_gxh = row.sczl_gxh;
  1775. formData.value.sczl_ls = row.sczl_ls;
  1776. formData.value.sczl_jtbh = "";
  1777. formData.value.sczl_zcfp = 0;
  1778. formData.value.sczl_装版总工时 = 0;
  1779. formData.value.sczl_装版工时 = 0;
  1780. formData.value.sczl_保养工时 = 0;
  1781. formData.value.sczl_异常停机工时 = 0;
  1782. formData.value.sczl_打样工时 = 0;
  1783. formData.value.sczl_设备运行工时 = 0;
  1784. //设置字体和输入
  1785. setColorReadonly("机器");
  1786. setColorReadonly("制程废品");
  1787. setColorReadonly("装版总工时");
  1788. setColorReadonly("装版补产工时");
  1789. setColorReadonly("保养工时");
  1790. setColorReadonly("异常停机");
  1791. setColorReadonly("打样总工时");
  1792. setColorReadonly("打样补产工时");
  1793. setColorReadonly("通电时间");
  1794. //显示联拼
  1795. showFormItems.value = true;
  1796. } else {
  1797. formData.value.sczl_type = row.sczl_type;
  1798. formData.value.sczl_gxmc = row.sczl_gxmc;
  1799. formData.value.sczl_gxh = row.sczl_gxh;
  1800. formData.value.sczl_ls = row.sczl_ls;
  1801. formData.value.sczl_ms = 0;
  1802. //设置字体和输入
  1803. unsetColorReadonly("机器");
  1804. unsetColorReadonly("制程废品");
  1805. unsetColorReadonly("装版总工时");
  1806. unsetColorReadonly("装版补产工时");
  1807. unsetColorReadonly("保养工时");
  1808. unsetColorReadonly("异常停机");
  1809. unsetColorReadonly("打样总工时");
  1810. unsetColorReadonly("打样补产工时");
  1811. unsetColorReadonly("通电时间");
  1812. //隐藏联拼
  1813. showFormItems.value = false;
  1814. }
  1815. GXVisible.value = false;
  1816. };
  1817. const rqHandleFocus = () => {
  1818. if (formData.value.sczl_rq == "") {
  1819. formData.value.sczl_rq = new Date().toISOString().split("T")[0];
  1820. }
  1821. };
  1822. //机台失去焦点事件
  1823. const getJtbhsubmit = () => {
  1824. if (BzVisible.value) {
  1825. return false;
  1826. }
  1827. //弹出选择
  1828. reportGetJtbh({
  1829. sczl_type: formData.value.sczl_type,
  1830. key_word: "",
  1831. }).then((response) => {
  1832. if (response.code === 0) {
  1833. if (
  1834. response.data.length != 0 &&
  1835. !response.data.some((item) => item.jtbh === formData.value.sczl_jtbh)
  1836. ) {
  1837. selectDataJtbh.splice(0, selectDataJtbh.length, ...response.data);
  1838. JtbhVisible.value = true;
  1839. }
  1840. }
  1841. });
  1842. };
  1843. //机台选择
  1844. const selectDataJtbh = reactive([]);
  1845. const JtbhVisible = ref(false);
  1846. const SelectClickJtbh = (row, column, event) => {
  1847. const { jtbh, 设备编号 } = row;
  1848. formData.value.sczl_jtbh = row.jtbh;
  1849. JtbhVisible.value = false;
  1850. };
  1851. //班组失去焦点事件
  1852. const getBzsubmit = () => {
  1853. //弹出选择
  1854. const data = [
  1855. {
  1856. sczl_bzdh: "A班",
  1857. },
  1858. {
  1859. sczl_bzdh: "B班",
  1860. },
  1861. ];
  1862. selectDataBz.splice(0, selectDataBz.length, ...data);
  1863. if (!JtbhVisible.value) {
  1864. BzVisible.value = true;
  1865. setCurrent(selectDataBz[0]);
  1866. }
  1867. };
  1868. //班组选择
  1869. const selectDataBz = reactive([]);
  1870. const BzVisible = ref(false);
  1871. const SelectClickBz = (row, column, event) => {
  1872. const { sczl_bzdh } = row;
  1873. formData.value.sczl_bzdh = row.sczl_bzdh;
  1874. BzVisible.value = false;
  1875. };
  1876. const table2 = ref();
  1877. const setCurrent = (row) => {
  1878. setTimeout(() => {
  1879. table2.value?.setCurrentRow(row);
  1880. // SelectClick(row)
  1881. // console.log(row)
  1882. // console.log(table)
  1883. const { sczl_bzdh } = row;
  1884. formData.value.sczl_bzdh = row.sczl_bzdh;
  1885. console.log(row);
  1886. });
  1887. };
  1888. const selectBZ = (event) => {
  1889. // console.log(selectDataBz.length);
  1890. if (event.keyCode === 40) {
  1891. // Enter 或向下箭头
  1892. setCurrent(selectDataBz[1]);
  1893. } else if (event.keyCode === 38) {
  1894. setCurrent(selectDataBz[0]);
  1895. } else if (event.keyCode === 13) {
  1896. BzVisible.value = false;
  1897. }
  1898. };
  1899. //mult失去焦点事件
  1900. const mult = () => {
  1901. formData.value.sczl_cl = parseFloat(mult1.value * mult2.value);
  1902. };
  1903. let GetDedhtreeData = reactive([]);
  1904. //定额代号回车事件
  1905. const getDedhsubmit = () => {
  1906. //弹出选择
  1907. let treeData = [];
  1908. productionDedh({
  1909. sczl_jtbh: formData.value.sczl_jtbh,
  1910. }).then((response) => {
  1911. if (response.code === 0) {
  1912. if (formData.value.sczl_jtbh == "") {
  1913. const data = [];
  1914. data[0] = response.data;
  1915. // 递归函数来构建树形结构
  1916. const buildTree = (node) => {
  1917. const treeNode = {
  1918. label: node.sys_bh + "【" + node.sys_mc + "】",
  1919. children: [],
  1920. };
  1921. // 如果存在子节点,递归地添加它们
  1922. if (node.bh_mc && Array.isArray(node.bh_mc)) {
  1923. node.bh_mc.forEach((childNode) => {
  1924. treeNode.children.push(buildTree(childNode)); // 递归调用
  1925. });
  1926. }
  1927. return treeNode;
  1928. };
  1929. // 构建树形结构的根节点
  1930. const treeData = data.map(buildTree);
  1931. GetDedhtreeData = treeData; // 假设这是外部可访问的变量
  1932. GetDedhVisible.value = true; // 假设这是一个响应式引用
  1933. console.log(GetDedhtreeData);
  1934. } else {
  1935. formData.value.sczl_dedh = response.data["sys_bh"];
  1936. }
  1937. }
  1938. });
  1939. };
  1940. //定额代号树形结构单机
  1941. const GetDedhhandleNodeClick = (nodeData, node, component) => {
  1942. //存放当前节点的nodeId
  1943. //存放当前节点的nodeId
  1944. if (!nodeData.children || nodeData.children.length === 0) {
  1945. // 如果节点没有子节点,打印节点名称
  1946. formData.value.sczl_dedh = nodeData.label.split("【")[0];
  1947. dedhGetRate({
  1948. dedh: nodeData.label.split("【")[0],
  1949. }).then((response) => {
  1950. if (response.code === 0) {
  1951. //设置比例
  1952. formData.value.sczl_rate1 = response.data.sczl_rate1;
  1953. formData.value.sczl_rate2 = response.data.sczl_rate2;
  1954. formData.value.sczl_rate3 = response.data.sczl_rate3;
  1955. formData.value.sczl_rate4 = response.data.sczl_rate4;
  1956. formData.value.sczl_rate5 = response.data.sczl_rate5;
  1957. formData.value.sczl_rate6 = response.data.sczl_rate6;
  1958. formData.value.sczl_rate7 = response.data.sczl_rate7;
  1959. formData.value.sczl_rate8 = response.data.sczl_rate8;
  1960. formData.value.sczl_rate9 = response.data.sczl_rate9;
  1961. formData.value.sczl_rate10 = response.data.sczl_rate10;
  1962. }
  1963. });
  1964. GetDedhVisible.value = false;
  1965. }
  1966. };
  1967. //员工编号回车事件
  1968. const getGxMcsubmit = (event, inputName) => {
  1969. if (event.target.value != "") {
  1970. if (event.keyCode === 13 || event.keyCode === 40) {
  1971. // Enter 或向下箭头
  1972. //设置光标
  1973. document.getElementById("rate" + inputName).focus();
  1974. document.getElementById("rate" + inputName).select();
  1975. } else if (event.keyCode === 38) {
  1976. // 向上箭头
  1977. if (inputName == 1) {
  1978. //设置光标
  1979. document.getElementById("定额代号").focus();
  1980. document.getElementById("定额代号").select();
  1981. } else if (inputName == 10) {
  1982. for (var i = 9; i >= 1; i--) {
  1983. if (formData.value["sczl_bh" + i] != "") {
  1984. document.getElementById("rate" + (parseInt(i) + 1)).focus();
  1985. document.getElementById("rate" + (parseInt(i) + 1)).select();
  1986. break;
  1987. } else {
  1988. if (i == 1) {
  1989. document.getElementById("sczl_bh1").focus();
  1990. document.getElementById("sczl_bh1").select();
  1991. break;
  1992. }
  1993. }
  1994. }
  1995. } else {
  1996. document.getElementById("rate" + (parseInt(inputName) - 1)).focus();
  1997. document.getElementById("rate" + (parseInt(inputName) - 1)).select();
  1998. }
  1999. } else if (event.keyCode === 8) {
  2000. // 删除箭头
  2001. if (event.target.selectionStart === 0) {
  2002. if (inputName == 1) {
  2003. //设置光标
  2004. document.getElementById("定额代号").focus();
  2005. document.getElementById("定额代号").setSelectionRange(0, 0);
  2006. } else if (inputName == 10) {
  2007. for (var i = 9; i >= 1; i--) {
  2008. if (formData.value["sczl_bh" + i] != "") {
  2009. document.getElementById("rate" + (parseInt(i) + 1)).focus();
  2010. document
  2011. .getElementById("rate" + (parseInt(i) + 1))
  2012. .setSelectionRange(0, 0);
  2013. break;
  2014. } else {
  2015. if (i == 1) {
  2016. document.getElementById("sczl_bh1").focus();
  2017. document.getElementById("sczl_bh1").setSelectionRange(0, 0);
  2018. break;
  2019. }
  2020. }
  2021. }
  2022. } else {
  2023. document.getElementById("rate" + (parseInt(inputName) - 1)).focus();
  2024. document
  2025. .getElementById("rate" + (parseInt(inputName) - 1))
  2026. .setSelectionRange(0, 0);
  2027. }
  2028. }
  2029. } else if (event.keyCode === 37) {
  2030. // 向左箭头
  2031. if (event.target.selectionStart === 0) {
  2032. if (inputName == 1) {
  2033. //设置光标
  2034. document.getElementById("定额代号").focus();
  2035. document.getElementById("定额代号").select();
  2036. } else if (inputName == 10) {
  2037. for (var i = 9; i >= 1; i--) {
  2038. if (formData.value["sczl_bh" + i] != "") {
  2039. document.getElementById("rate" + (parseInt(i) + 1)).focus();
  2040. document.getElementById("rate" + (parseInt(i) + 1)).select();
  2041. break;
  2042. } else {
  2043. if (i == 1) {
  2044. document.getElementById("sczl_bh1").focus();
  2045. document.getElementById("sczl_bh1").select();
  2046. break;
  2047. }
  2048. }
  2049. }
  2050. } else {
  2051. document.getElementById("rate" + (parseInt(inputName) - 1)).focus();
  2052. document.getElementById("rate" + (parseInt(inputName) - 1)).select();
  2053. }
  2054. }
  2055. } else if (event.keyCode === 39) {
  2056. // 向右箭头
  2057. if (event.target.selectionStart === event.target.value.length) {
  2058. //设置光标
  2059. document.getElementById("rate" + inputName).focus();
  2060. document.getElementById("rate" + inputName).select();
  2061. }
  2062. }
  2063. } else {
  2064. if (event.keyCode === 13 || event.keyCode === 40) {
  2065. // Enter 或向下箭头
  2066. if (inputName == 10) {
  2067. //设置光标
  2068. document.getElementById("rate" + inputName).focus();
  2069. document.getElementById("rate" + inputName).select();
  2070. } else {
  2071. //设置光标
  2072. document.getElementById("sczl_bh10").focus();
  2073. document.getElementById("sczl_bh10").select();
  2074. }
  2075. } else if (event.keyCode === 38) {
  2076. // 向上箭头
  2077. if (inputName == 1) {
  2078. //设置光标
  2079. document.getElementById("定额代号").focus();
  2080. document.getElementById("定额代号").select();
  2081. } else if (inputName == 10) {
  2082. for (var i = 9; i >= 1; i--) {
  2083. if (formData.value["sczl_bh" + i] != "") {
  2084. document.getElementById("sczl_bh" + (parseInt(i) + 1)).focus();
  2085. document.getElementById("sczl_bh" + (parseInt(i) + 1)).select();
  2086. break;
  2087. } else {
  2088. if (i == 1) {
  2089. document.getElementById("sczl_bh1").focus();
  2090. document.getElementById("sczl_bh1").select();
  2091. break;
  2092. }
  2093. }
  2094. }
  2095. } else {
  2096. document.getElementById("rate" + (parseInt(inputName) - 1)).focus();
  2097. document.getElementById("rate" + (parseInt(inputName) - 1)).select();
  2098. }
  2099. } else if (event.keyCode === 8) {
  2100. // 删除箭头
  2101. if (event.target.selectionStart === 0) {
  2102. if (inputName == 1) {
  2103. //设置光标
  2104. document.getElementById("定额代号").focus();
  2105. document.getElementById("定额代号").setSelectionRange(0, 0);
  2106. } else if (inputName == 10) {
  2107. for (var i = 9; i >= 1; i--) {
  2108. if (formData.value["sczl_bh" + i] != "") {
  2109. document.getElementById("sczl_bh" + (parseInt(i) + 1)).focus();
  2110. document
  2111. .getElementById("sczl_bh" + (parseInt(i) + 1))
  2112. .setSelectionRange(0, 0);
  2113. break;
  2114. } else {
  2115. if (i == 1) {
  2116. document.getElementById("sczl_bh1").focus();
  2117. document.getElementById("sczl_bh1").setSelectionRange(0, 0);
  2118. break;
  2119. }
  2120. }
  2121. }
  2122. } else {
  2123. document.getElementById("rate" + (parseInt(inputName) - 1)).focus();
  2124. document
  2125. .getElementById("rate" + (parseInt(inputName) - 1))
  2126. .setSelectionRange(0, 0);
  2127. }
  2128. }
  2129. } else if (event.keyCode === 37) {
  2130. // 向左箭头
  2131. if (event.target.selectionStart === 0) {
  2132. if (inputName == 1) {
  2133. //设置光标
  2134. document.getElementById("定额代号").focus();
  2135. document.getElementById("定额代号").select();
  2136. } else if (inputName == 10) {
  2137. for (var i = 9; i >= 1; i--) {
  2138. if (formData.value["sczl_bh" + i] != "") {
  2139. document.getElementById("sczl_bh" + (parseInt(i) + 1)).focus();
  2140. document.getElementById("sczl_bh" + (parseInt(i) + 1)).select();
  2141. break;
  2142. } else {
  2143. if (i == 1) {
  2144. document.getElementById("sczl_bh1").focus();
  2145. document.getElementById("sczl_bh1").select();
  2146. break;
  2147. }
  2148. }
  2149. }
  2150. } else {
  2151. document.getElementById("rate" + (parseInt(inputName) - 1)).focus();
  2152. document.getElementById("rate" + (parseInt(inputName) - 1)).select();
  2153. }
  2154. }
  2155. } else if (event.keyCode === 39) {
  2156. // 向右箭头
  2157. if (event.target.selectionStart === event.target.value.length) {
  2158. if (inputName == 10) {
  2159. //设置光标
  2160. document.getElementById("rate" + inputName).focus();
  2161. document.getElementById("rate" + inputName).select();
  2162. } else {
  2163. //设置光标
  2164. document.getElementById("sczl_bh10").focus();
  2165. document.getElementById("sczl_bh10").select();
  2166. }
  2167. }
  2168. }
  2169. }
  2170. };
  2171. //获取员工信息
  2172. const GetYg = (event, inputName) => {
  2173. if (formData.value["sczl_bh" + inputName] != "") {
  2174. getYg({
  2175. sczl_bh: event.target.value,
  2176. }).then((response) => {
  2177. if (response.code == 0) {
  2178. if (response.data.length == 1) {
  2179. formData.value["sczl_bh" + inputName + "_name"] =
  2180. response.data[0].ygxm;
  2181. formData.value["sczl_bh" + inputName] = response.data[0].员工编号;
  2182. } else if (response.data.length > 1) {
  2183. index_Yg = inputName;
  2184. selectData_Yg.splice(0, selectData_Yg.length, ...response.data);
  2185. setGXCurrent_Yg(selectData_Yg[0]);
  2186. dialogSelectVisible_Yg.value = true;
  2187. } else {
  2188. ElMessage({
  2189. type: "warning",
  2190. message: "未查询到该员工",
  2191. });
  2192. formData.value["sczl_bh" + inputName + "_name"] = "";
  2193. formData.value["sczl_bh" + inputName] = "";
  2194. }
  2195. } else {
  2196. formData.value["sczl_bh" + inputName + "_name"] = "";
  2197. formData.value["sczl_bh" + inputName] = "";
  2198. }
  2199. });
  2200. }
  2201. };
  2202. let index_Yg = "";
  2203. const dialogSelectVisible_Yg = ref(false);
  2204. const selectData_Yg = reactive([]);
  2205. // 处理选择框
  2206. const handleSelectClick_Yg = (row, column, event) => {
  2207. formData.value["sczl_bh" + index_Yg + "_name"] = row.ygxm;
  2208. formData.value["sczl_bh" + index_Yg] = row.员工编号;
  2209. dialogSelectVisible_Yg.value = false;
  2210. };
  2211. const currentIndex_Yg = ref(0);
  2212. const GXCurrent_Yg = ref(0);
  2213. const selectGX_Yg = (event) => {
  2214. if (event.keyCode === 40) {
  2215. // 向下箭头
  2216. if (currentIndex_Yg.value < selectData_Yg.length - 1) {
  2217. currentIndex_Yg.value++;
  2218. setGXCurrent_Yg(selectData_Yg[currentIndex_Yg.value]);
  2219. } else {
  2220. currentIndex_Yg.value = 0;
  2221. setGXCurrent_Yg(selectData_Yg[currentIndex_Yg.value]); // 到达最后一行时回到第一行
  2222. }
  2223. } else if (event.keyCode === 38) {
  2224. // 向上箭头
  2225. if (currentIndex_Yg.value > 0) {
  2226. currentIndex_Yg.value--;
  2227. setGXCurrent_Yg(selectData_Yg[currentIndex_Yg.value]);
  2228. } else {
  2229. currentIndex_Yg.value = selectData_Yg.length - 1;
  2230. setGXCurrent_Yg(selectData_Yg[currentIndex_Yg.value]); // 到达第一行时回到最后一行
  2231. }
  2232. } else if (event.keyCode === 13) {
  2233. // 回车键
  2234. dialogSelectVisible_Yg.value = false;
  2235. }
  2236. };
  2237. const table_Yg = ref();
  2238. const setGXCurrent_Yg = (row) => {
  2239. setTimeout(() => {
  2240. table_Yg.value?.setCurrentRow(row);
  2241. formData.value["sczl_bh" + index_Yg + "_name"] = row.ygxm;
  2242. formData.value["sczl_bh" + index_Yg] = row.员工编号;
  2243. });
  2244. };
  2245. //比例失去焦点
  2246. const rate = (event, inputName) => {
  2247. if (event.keyCode === 13 || event.keyCode === 40) {
  2248. // Enter 或向下箭头
  2249. if (inputName == 10) {
  2250. ElMessageBox.confirm("数据存盘?", "提示", {
  2251. confirmButtonText: "确定",
  2252. cancelButtonText: "取消",
  2253. type: "warning",
  2254. }).then(() => {
  2255. enterDialog();
  2256. });
  2257. } else {
  2258. //设置光标
  2259. document.getElementById("sczl_bh" + (parseInt(inputName) + 1)).focus();
  2260. document.getElementById("sczl_bh" + (parseInt(inputName) + 1)).select();
  2261. }
  2262. } else if (event.keyCode === 38) {
  2263. // 向上箭头
  2264. document.getElementById("sczl_bh" + inputName).focus();
  2265. document.getElementById("sczl_bh" + inputName).select();
  2266. } else if (event.keyCode === 8) {
  2267. // 删除箭头
  2268. if (event.target.selectionStart === 0) {
  2269. document.getElementById("sczl_bh" + inputName).focus();
  2270. document.getElementById("sczl_bh" + inputName).setSelectionRange(0, 0);
  2271. }
  2272. } else if (event.keyCode === 37) {
  2273. // 向左箭头
  2274. if (event.target.selectionStart === 0) {
  2275. document.getElementById("sczl_bh" + inputName).focus();
  2276. document.getElementById("sczl_bh" + inputName).select();
  2277. }
  2278. } else if (event.keyCode === 39) {
  2279. // 向右箭头
  2280. if (event.target.selectionStart === event.target.value.length) {
  2281. if (inputName == 10) {
  2282. //设置光标
  2283. } else {
  2284. document.getElementById("sczl_bh" + inputName).focus();
  2285. document.getElementById("sczl_bh" + inputName).select();
  2286. }
  2287. }
  2288. }
  2289. };
  2290. // 搜索
  2291. function onSearch() {
  2292. params.gdbh = positionvalue.value;
  2293. params.type = "getLocateTable";
  2294. page.value = 1;
  2295. console.log("123");
  2296. GetLocate();
  2297. }
  2298. const ADD = ref("0");
  2299. //新增
  2300. function onAdd() {
  2301. ADD.value = "新增";
  2302. type.value = "create";
  2303. if (table_type == "db_sczl") {
  2304. if (typeof lastCellValue == "number") {
  2305. GetInfo(lastCellValue);
  2306. }
  2307. initFormData();
  2308. dialogFormVisible.value = true;
  2309. } else {
  2310. // GetInfo(table.value)
  2311. // console.log(['table_type'])
  2312. // console.log('此数据无法新增')
  2313. dialogFormVisible.value = true;
  2314. }
  2315. // Productionadd()
  2316. }
  2317. //新增
  2318. const Productionadd = async () => {
  2319. const response = await productionadd();
  2320. if (response.code === 0) {
  2321. }
  2322. getTableData();
  2323. };
  2324. //删除
  2325. function onDel() {
  2326. Del();
  2327. }
  2328. //删除
  2329. const Del = () => {
  2330. if (typeof lastCellValue == "object") {
  2331. ElMessage({
  2332. type: "warning",
  2333. message: "未选中记录",
  2334. });
  2335. return;
  2336. }
  2337. ElMessageBox.confirm(`确认删除这条数据么?`, "警告", {
  2338. confirmButtonText: "确认",
  2339. cancelButtonText: "取消",
  2340. type: "warning",
  2341. }).then(async () => {
  2342. const response = await productiondel({
  2343. UniqId: lastCellValue,
  2344. });
  2345. if (response.code === 0) {
  2346. ElMessage({
  2347. type: "success",
  2348. message: "删除成功",
  2349. });
  2350. //刷新侧边栏
  2351. getTabdata();
  2352. //刷新页面
  2353. getTableData();
  2354. }
  2355. });
  2356. };
  2357. //同步
  2358. function synchronous() {
  2359. Synchronous();
  2360. }
  2361. //同步
  2362. const Synchronous = async () => {
  2363. const response = await ProductionData();
  2364. if (response.code === 0) {
  2365. ElMessage({
  2366. type: "success",
  2367. message: "同步成功",
  2368. });
  2369. }
  2370. // getTableData()
  2371. };
  2372. const displayMod = ref("");
  2373. // 按工单显示
  2374. function onCountByGdbh() {
  2375. if (displayMod.value === "date") {
  2376. displayMod.value = "gd";
  2377. CountByGdbh();
  2378. } else {
  2379. getTabdata();
  2380. }
  2381. }
  2382. //按工单显示
  2383. const CountByGdbh = async () => {
  2384. const response = await productionByGdbh();
  2385. if (response.code === 0) {
  2386. // console.log(displayMod.value)
  2387. treeData.splice(0, treeData.length);
  2388. // 遍历接口返回的数据
  2389. response.data.forEach((item) => {
  2390. // 创建父节点
  2391. treeData[item.sczl_gdbh] = {
  2392. label: item.sczl_gdbh + "【" + item.yj_yjmc + "】",
  2393. children: [],
  2394. params: {
  2395. date: item.sczl_gdbh,
  2396. sys_id: "",
  2397. total: "",
  2398. },
  2399. };
  2400. // 添加子节点
  2401. for (const key in item.sys) {
  2402. const childNode = {
  2403. name: key,
  2404. label: key + " 【记录数" + item.sys[key] + "张】",
  2405. params: {
  2406. date: item.sczl_gdbh,
  2407. sys_id: key,
  2408. total: item.sys[key],
  2409. },
  2410. };
  2411. treeData[item.sczl_gdbh].children.push(childNode);
  2412. }
  2413. });
  2414. // console.log(treeData)
  2415. // // // 打印树形结构
  2416. // console.log(JSON.stringify(tree, null, 2));
  2417. // // 将父子关系转换为数组
  2418. // const transformedData = Object.values(tree);
  2419. // console.log(transformedData);
  2420. // treeData = transformedData;
  2421. }
  2422. // // 将父子关系转换为数组
  2423. // const transformedData = Object.values(tree);
  2424. // console.log(transformedData)
  2425. // treeData = transformedData;
  2426. // getTableData()
  2427. };
  2428. // ============== 表格控制部分结束 ===============
  2429. // 获取需要的字典 可能为空 按需保留
  2430. const setOptions = async () => {};
  2431. // 获取需要的字典 可能为空 按需保留
  2432. setOptions();
  2433. // 多选数据
  2434. const multipleSelection = ref([]);
  2435. // 多选
  2436. const handleSelectionChange = (val) => {
  2437. // multipleSelection.value = val
  2438. if (val.length > 0) {
  2439. // multipleSelection.value = val
  2440. const lenth = val.length;
  2441. // ScrapFactor.gdbh=val[lenth-1].combinedProp.split('-')[0];
  2442. // const parts = val[lenth-1].combinedProp2.split('-')
  2443. // ScrapFactor.yjno=parts[0];
  2444. // ScrapFactor.gxh=parts[1];
  2445. // ScrapFactor.type=val[lenth-1].sczl_检验类别
  2446. // console.log(ScrapFactor)
  2447. lastCellValue = val[lenth - 1].UniqId;
  2448. // console.log(val)
  2449. val.splice(0, val.length); // 清空 val 数组
  2450. console.log(lastCellValue);
  2451. }
  2452. };
  2453. // 批量删除控制标记
  2454. const deleteVisible = ref(false);
  2455. // 多选删除
  2456. const onDelete = async () => {
  2457. const ids = [];
  2458. if (multipleSelection.value.length === 0) {
  2459. ElMessage({
  2460. type: "warning",
  2461. message: "请选择要删除的数据",
  2462. });
  2463. return;
  2464. }
  2465. multipleSelection.value &&
  2466. multipleSelection.value.map((item) => {
  2467. ids.push(item.ID);
  2468. });
  2469. const res = await deleteCompanyByIds({
  2470. ids,
  2471. });
  2472. if (res.code === 0) {
  2473. ElMessage({
  2474. type: "success",
  2475. message: "删除成功",
  2476. });
  2477. if (tableData.value.length === ids.length && page.value > 1) {
  2478. page.value--;
  2479. }
  2480. deleteVisible.value = false;
  2481. getTableData();
  2482. }
  2483. };
  2484. // 行为控制标记(弹窗内部需要增还是改)
  2485. // const type = ref('')
  2486. // 更新行
  2487. const updateCompanyFunc = async (row) => {
  2488. const res = await findCompany({
  2489. ID: row.ID,
  2490. });
  2491. type.value = "update";
  2492. if (res.code === 0) {
  2493. formData.value = res.data.recompany;
  2494. dialogFormVisible.value = true;
  2495. }
  2496. };
  2497. // 弹窗控制标记
  2498. const dialogFormVisible = ref(false);
  2499. // 打开弹窗
  2500. const openDialog = () => {
  2501. type.value = "create";
  2502. dialogFormVisible.value = true;
  2503. };
  2504. // 关闭弹窗
  2505. const closeDialog = () => {
  2506. dialogFormVisible.value = false;
  2507. };
  2508. // 弹窗确定
  2509. const enterDialog = async () => {
  2510. //弹窗提示确认
  2511. ElMessageBox.confirm("数据存盘?", "提示", {
  2512. confirmButtonText: "确定",
  2513. cancelButtonText: "取消",
  2514. type: "warning",
  2515. }).then(() => {
  2516. if (formData.value.sczl_gdbh == "") {
  2517. ElMessage({
  2518. type: "error",
  2519. message: "请填写工单编号",
  2520. });
  2521. document.getElementById("工单编号").focus();
  2522. document.getElementById("工单编号").select();
  2523. return;
  2524. }
  2525. if (formData.value.sczl_yjno == "") {
  2526. ElMessage({
  2527. type: "error",
  2528. message: "请填写印件号",
  2529. });
  2530. document.getElementById("印件号").focus();
  2531. document.getElementById("印件号").select();
  2532. return;
  2533. }
  2534. if (formData.value.sczl_gxmc == "") {
  2535. ElMessage({
  2536. type: "error",
  2537. message: "请填写工序名称",
  2538. });
  2539. document.getElementById("工序名称").focus();
  2540. document.getElementById("工序名称").select();
  2541. return;
  2542. }
  2543. if (formData.value.sczl_rq == "") {
  2544. ElMessage({
  2545. type: "error",
  2546. message: "请填写日期",
  2547. });
  2548. document.getElementById("日期").focus();
  2549. document.getElementById("日期").select();
  2550. return;
  2551. }
  2552. if (formData.value.sczl_bzdh == "") {
  2553. ElMessage({
  2554. type: "error",
  2555. message: "请选择班组",
  2556. });
  2557. document.getElementById("组别").focus();
  2558. document.getElementById("组别").select();
  2559. return;
  2560. }
  2561. if (formData.value.sczl_cl == "") {
  2562. ElMessage({
  2563. type: "error",
  2564. message: "请填写产量",
  2565. });
  2566. document.getElementById("产量").focus();
  2567. document.getElementById("产量").select();
  2568. return;
  2569. }
  2570. if (formData.value.sczl_dedh == "") {
  2571. ElMessage({
  2572. type: "error",
  2573. message: "请选择定额代号",
  2574. });
  2575. document.getElementById("定额代号").focus();
  2576. document.getElementById("定额代号").select();
  2577. return;
  2578. }
  2579. updateDetailData();
  2580. });
  2581. // elFormRef.value?.validate(async (valid) => {
  2582. // if (!valid) return
  2583. // let res
  2584. // switch (type.value) {
  2585. // case 'create':
  2586. // res = await createCompany(formData.value)
  2587. // break
  2588. // case 'update':
  2589. // res = await updateCompany(formData.value)
  2590. // break
  2591. // default:
  2592. // res = await createCompany(formData.value)
  2593. // break
  2594. // }
  2595. // if (res.code === 0) {
  2596. // ElMessage({
  2597. // type: 'success',
  2598. // message: '创建/更改成功'
  2599. // })
  2600. // closeDialog()
  2601. // getTableData()
  2602. // }
  2603. // updateDetailData()
  2604. // })
  2605. };
  2606. // 更新数据
  2607. const updateDetailData = async () => {
  2608. const restoredData = {
  2609. UniqId: lastCellValue,
  2610. sczl_gdbh: formData.value.sczl_gdbh,
  2611. Gd_cpmc: formData.value.Gd_cpmc,
  2612. sczl_yjno: formData.value.sczl_yjno,
  2613. yj_yjmc: formData.value.yj_yjmc,
  2614. sczl_gxmc: formData.value.sczl_gxmc,
  2615. sczl_gxh: formData.value.sczl_gxh,
  2616. sczl_type: formData.value.sczl_type,
  2617. sczl_rq: formData.value.sczl_rq,
  2618. sczl_jtbh: formData.value.sczl_jtbh,
  2619. sczl_bzdh: formData.value.sczl_bzdh,
  2620. sczl_ms: formData.value.sczl_ms,
  2621. sczl_ls: formData.value.sczl_ls,
  2622. sczl_cl: formData.value.sczl_cl,
  2623. sczl_fp: formData.value.sczl_zcfp,
  2624. sczl_装版总工时: formData.value.sczl_装版总工时,
  2625. sczl_装版工时: formData.value.sczl_装版工时,
  2626. sczl_保养工时: formData.value.sczl_保养工时,
  2627. sczl_异常停机工时: formData.value.sczl_异常停机工时,
  2628. sczl_打样总工时: formData.value.sczl_打样总工时,
  2629. sczl_打样工时: formData.value.sczl_打样工时,
  2630. sczl_设备运行工时: formData.value.sczl_设备运行工时,
  2631. 拆片联拼系数: formData.value.拆片联拼系数,
  2632. 拆片条小盒系数: formData.value.拆片条小盒系数,
  2633. sczl_dedh: formData.value.sczl_dedh,
  2634. sczl_工价系数: formData.value.sczl_工价系数,
  2635. sczl_计产系数: formData.value.sczl_计产系数,
  2636. sczl_bh1: formData.value.sczl_bh1,
  2637. sczl_bh2: formData.value.sczl_bh2,
  2638. sczl_bh3: formData.value.sczl_bh3,
  2639. sczl_bh4: formData.value.sczl_bh4,
  2640. sczl_bh5: formData.value.sczl_bh5,
  2641. sczl_bh6: formData.value.sczl_bh6,
  2642. sczl_bh7: formData.value.sczl_bh7,
  2643. sczl_bh8: formData.value.sczl_bh8,
  2644. sczl_bh9: formData.value.sczl_bh9,
  2645. sczl_bh10: formData.value.sczl_bh10,
  2646. sczl_rate1: formData.value.sczl_rate1,
  2647. sczl_rate2: formData.value.sczl_rate2,
  2648. sczl_rate3: formData.value.sczl_rate3,
  2649. sczl_rate4: formData.value.sczl_rate4,
  2650. sczl_rate5: formData.value.sczl_rate5,
  2651. sczl_rate6: formData.value.sczl_rate6,
  2652. sczl_rate7: formData.value.sczl_rate7,
  2653. sczl_rate8: formData.value.sczl_rate8,
  2654. sczl_rate9: formData.value.sczl_rate9,
  2655. sczl_rate10: formData.value.sczl_rate10,
  2656. sys_id: sys_id,
  2657. };
  2658. // detailData.table.forEach((item, index, array) => {
  2659. // const num = index + 1
  2660. // restoredData[`sczl_gdbh${num}`] = item.sczl_gdbh
  2661. // restoredData[`sczl_yjGx${num}`] = item.sczl_yjGx
  2662. // restoredData[`sczl_gxmc${num}`] = item.sczl_gxmc
  2663. // // restoredData[`Gd_cpmc${num}`] = item.Gd_cpmc
  2664. // restoredData[`sczl_cl${num}`] = item.sczl_cl
  2665. // restoredData[`sczl_PgCl${num}`] = item.sczl_PgCl
  2666. // restoredData[`sczl_clAdd${num}`] = item.sczl_clAdd
  2667. // })
  2668. if (ADD.value == "新增") {
  2669. // console.log('新增')
  2670. const response = await productionadd(restoredData);
  2671. // ADD.value='1'
  2672. // console.log(ADD.value)
  2673. ADD.value = "0";
  2674. if (response.code == 0) {
  2675. ElMessage({
  2676. type: "success",
  2677. message: "新增成功",
  2678. });
  2679. dialogFormVisible.value = false;
  2680. //刷新侧边栏
  2681. getTabdata();
  2682. if (params.date != "") {
  2683. //刷新页面
  2684. getTableData();
  2685. }
  2686. }
  2687. } else {
  2688. const response = await productionedit(restoredData);
  2689. if (response.code == 0) {
  2690. ElMessage({
  2691. type: "success",
  2692. message: "更新成功",
  2693. });
  2694. }
  2695. dialogFormVisible.value = false;
  2696. // ADD.value='0'
  2697. // console.log(ADD.value)
  2698. }
  2699. formData.value = [];
  2700. // console.log(restoredData)
  2701. // console.log(lastCellValue)
  2702. // formData.value.UniqId=lastCellValue
  2703. // console.log(formData)
  2704. // restoredData.UniqId='5'
  2705. // console.log(FormData)
  2706. };
  2707. let table = ref(5);
  2708. let lastCellValue = ref();
  2709. let table_type = ref();
  2710. // 双击表格操作
  2711. const type = ref("");
  2712. function doubleClick(row, column, event) {
  2713. type.value = "update";
  2714. lastCellValue = row["UniqId"];
  2715. table.value = lastCellValue;
  2716. if (row["table_type"] == "db_sczl") {
  2717. console.log(["table_type"]);
  2718. dialogFormVisible.value = true;
  2719. GetInfo(table.value);
  2720. } else {
  2721. // GetInfo(table.value)
  2722. ElMessage({
  2723. type: "error",
  2724. message: "此工单不展示详细数据",
  2725. });
  2726. }
  2727. }
  2728. // 单击表格操作
  2729. function Click(row, column, event) {
  2730. lastCellValue = row["UniqId"];
  2731. console.log(lastCellValue);
  2732. table_type = row["table_type"];
  2733. // if(row['table_type']=='db_sczl'){
  2734. // dialogFormVisible.value = true
  2735. // GetInfo(table.value)
  2736. // }else{
  2737. // console.log('此数据不展示详细信息')
  2738. // }
  2739. }
  2740. //获取详细信息
  2741. const GetInfo = async (value) => {
  2742. const response = await productionInfo({
  2743. UniqId: value,
  2744. });
  2745. if (response.code === 0) {
  2746. console.log(response);
  2747. formData.value = response.data;
  2748. console.log(formData);
  2749. }
  2750. };
  2751. const exportToExcel2 = () => {
  2752. const el = document.getElementById("tab");
  2753. // 文件名
  2754. const filename = "导出到excel.xlsx";
  2755. const wb = XLSX.utils.table_to_book(el, { raw: true });
  2756. const wbout = XLSX.write(wb, {
  2757. bookType: "xlsx",
  2758. bookSST: true,
  2759. type: "array",
  2760. });
  2761. try {
  2762. FileSaver.saveAs(
  2763. new Blob([wbout], { type: "application/octet-stream" }),
  2764. filename
  2765. );
  2766. } catch (e) {
  2767. console.log(e);
  2768. }
  2769. return wbout;
  2770. };
  2771. // 导出excel
  2772. // function exportExcel() {
  2773. // Execelport()
  2774. // // exportExcelFile(data);
  2775. // }
  2776. // const Execelport = async (value) => {
  2777. // const response = await Export({
  2778. // file_name: '111',
  2779. // date: '2024-01-13',
  2780. // sys_id: '[1002/郑小丽]',
  2781. // fields: ['sczl_gdbh', 'Gd_cpmc', 'jyno_gxmc',
  2782. // 'sczl_rq', 'sczl_jtbh', 'sczl_bzdh', 'sczl_num', 'sczl_cl', 'sczl_ms',
  2783. // 'sczl_zcfp', 'sczl_zccp', 'sczl_来料异常', 'sczl_装版工时', 'sczl_保养工时', 'sczl_打样工时',
  2784. // 'sczl_异常停机工时', 'sczl_设备运行工时', 'sczl_bh1', 'sczl_bh1_name', 'sczl_bh2', 'sczl_bh2_name',
  2785. // 'sczl_bh3', 'sczl_bh3_name', 'sczl_bh4', 'sczl_bh4_name', 'sczl_bh5', 'sczl_bh5_name',
  2786. // 'sczl_bh6', 'sczl_bh6_name',
  2787. // '拆片联拼系数', '拆片条小盒系数', 'sczl_工价系数', '日定额', '千件工价', '补产标准'
  2788. // ]
  2789. // });
  2790. // console.log(response)
  2791. // }
  2792. // 生命周期钩子
  2793. onMounted(async () => {});
  2794. </script>
  2795. <style>
  2796. .JKWTree-container {
  2797. display: flex;
  2798. }
  2799. .JKWTree-tree {
  2800. width: 300px;
  2801. background-color: #fff;
  2802. padding: 10px;
  2803. margin-right: 20px;
  2804. }
  2805. .JKWTree-tree h3 {
  2806. font-size: 15px;
  2807. font-weight: 700;
  2808. margin: 10px 0;
  2809. }
  2810. .JKWTree-content {
  2811. flex: 1;
  2812. }
  2813. /* 选中某行时的背景色*/
  2814. .el-table__body tr.current-row > td {
  2815. background: #ff80ff !important;
  2816. /* 背景颜色 */
  2817. }
  2818. </style>
  2819. <style scoped>
  2820. :deep(.el-table td .cell) {
  2821. line-height: 20px !important;
  2822. }
  2823. :deep(.el-tabs__header) {
  2824. margin-bottom: 0;
  2825. }
  2826. .search {
  2827. margin-left: 0px !important;
  2828. margin-right: 10px !important;
  2829. }
  2830. .bt {
  2831. margin-left: 2px !important;
  2832. padding: 3px !important;
  2833. font-size: 12px;
  2834. }
  2835. .el-tabs__header {
  2836. margin: 0px !important;
  2837. }
  2838. .gva-table-box {
  2839. padding: 0px !important;
  2840. }
  2841. .mab {
  2842. margin-bottom: 5px;
  2843. }
  2844. :deep(.plan-usage-low div) {
  2845. color: blue !important;
  2846. font-size: 16px;
  2847. font-weight: bold;
  2848. }
  2849. </style>