Dayreports.vue 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170
  1. <template>
  2. <div>
  3. <!-- 左侧树形结构 -->
  4. <el-container>
  5. <el-aside width="250px">
  6. <div class="JKWTree-tree">
  7. <h3>机台生产日报表维护</h3>
  8. <el-tree :data="treeData" :props="defaultProps" highlight-current="true"
  9. @node-click="handleNodeClick"></el-tree>
  10. </div>
  11. </el-aside>
  12. <el-container>
  13. <el-main>
  14. <!-- 按钮区域 -->
  15. <div class="gva-table-box">
  16. <div class="gva-btn-list">
  17. <el-row :span="6">
  18. <el-input v-model="positionvalue" placeholder="输入工单编号或产品名称" />
  19. </el-row>
  20. <el-button type="primary" :icon="Search" @click="onSearch">搜索</el-button>
  21. <el-button type="primary" @click="onCountByGdbh">按工单显示</el-button>
  22. <el-button type="primary" @click="onDel">删除</el-button>
  23. <div style="margin-left: auto;">
  24. <el-button type="primary" :icon="Download" @click="exportExcel">导出到Excel</el-button>
  25. </div>
  26. </div>
  27. <!-- 数据展示 -->
  28. <el-table ref="multipleTable" style="width: 100%" tooltip-effect="dark" :data="tableData" row-key="ID"
  29. highlight-current-row="true" border
  30. :show-overflow-tooltip="true"
  31. @selection-change="handleSelectionChange" @row-dblclick="doubleClick">
  32. <el-table-column type="selection" width="55" />
  33. <el-table-column align="left" label="工单编号" prop="sczl_gdbh" width="120"/>
  34. <el-table-column align="left" label="产品名称" prop="Gd_cpmc" width="340"/>
  35. <el-table-column align="left" label="印件及工序" prop="jyno_gxmc" width="120"/>
  36. <el-table-column align="left" label="生产日期" prop="sczl_rq" width="120"/>
  37. <el-table-column align="left" label="机台" prop="sczl_jtbh" width="120"/>
  38. <el-table-column align="left" label="班组" prop="sczl_bzdh" width="120"/>
  39. <el-table-column align="left" label="流程单" prop="sczl_num" width="120"/>
  40. <el-table-column align="left" label="车头产量" prop="sczl_cl" width="120"/>
  41. <el-table-column align="left" label="色度数" prop="sczl_ms" width="120" />
  42. <el-table-column align="left" label="制程废" prop="sczl_zcfp" width="120" />
  43. <el-table-column align="left" label="次品" prop="sczl_zccp" width="120"/>
  44. <el-table-column align="left" label="来料异常" prop="incomingerror" width="120"/>
  45. <el-table-column align="left" label="装版工时" prop="sczl_装版工时" width="120"/>
  46. <el-table-column align="left" label="保养工时" prop="sczl_保养工时" width="120"/>
  47. <el-table-column align="left" label="打样工时" prop="sczl_打样工时" width="120"/>
  48. <el-table-column align="left" label="异常停机工时" prop="sczl_异常停机工时" width="120"/>
  49. <el-table-column align="left" label="设备运行工时" prop="sczl_设备运行工时" width="120"/>
  50. <el-table-column align="left" label="组员编号1" prop="sczl_bh1" width="120"/>
  51. <el-table-column align="left" label="组员姓名1" prop="name1" width="120"/>
  52. <el-table-column align="left" label="组员编号2" prop="sczl_bh2" width="120"/>
  53. <el-table-column align="left" label="组员姓名2" prop="name1" width="120" />
  54. <el-table-column align="left" label="组员编号3" prop="sczl_bh3" width="120"/>
  55. <el-table-column align="left" label="组员姓名3" prop="name3" width="120"/>
  56. <el-table-column align="left" label="组员编号4" prop="sczl_bh4" width="120"/>
  57. <el-table-column align="left" label="组员姓名4" prop="name4"width="120" />
  58. <el-table-column align="left" label="组员编号5" prop="sczl_bh5" width="120"/>
  59. <el-table-column align="left" label="组员姓名5" prop="name5" width="120"/>
  60. <el-table-column align="left" label="组员编号6" prop="sczl_bh6"width="120" />
  61. <el-table-column align="left" label="组员姓名6" prop="name6" width="120"/>
  62. <el-table-column align="left" label="拆片联拼系数" prop="拆片联拼系数" width="120"/>
  63. <el-table-column align="left" label="拆片条小盒系数" prop="拆片条小盒系数" width="120"/>
  64. <el-table-column align="left" label="工价系数" prop="sczl_工价系数" width="160"/>
  65. <el-table-column align="left" label="日定额" prop="日定额" width="120"/>
  66. <el-table-column align="left" label="千件工价" prop="piecesprice " width="120"/>
  67. <el-table-column align="left" label="补产标准" prop="addstandards " width="120"/>
  68. <el-table-column align="left" label="创建用户" prop="sys_id" width="120"/>
  69. <el-table-column align="left" label="创建时间" prop="sys_rq" width="160"/>
  70. <el-table-column align="left" label="修改时间" prop="mod_rq" width="160"/>
  71. <el-table-column align="left" label="UNIQID" prop="UniqId" width="160"/>
  72. <tbody>
  73. <tr v-for="row in filteredRows" :key="row.sczl_gdbh">
  74. <td>{{ row.sczl_gdbh }}</td>
  75. <td>{{ row.sczl_rq }}</td>
  76. <td>{{ row.sczl_bzdh }}</td>
  77. <td>{{ row.sczl_cl }}</td>
  78. <!-- 其他列 -->
  79. </tr>
  80. </tbody>
  81. </el-table>
  82. <!-- 分页 -->
  83. <div class="gva-pagination">
  84. <el-pagination layout="total, sizes, prev, pager, next, jumper" v-model:current-page="page"
  85. v-model:page-size="limit"
  86. :page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
  87. @size-change="handleSizeChange" />
  88. </div>
  89. </div>
  90. <!-- 弹出框 -->
  91. <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="type === 'create' ? '添加' : '修改'"
  92. destroy-on-close width="1200px">
  93. <!-- <el-scrollbar height="500px"> -->
  94. <el-form :model="formData" label-position="left" ref="elFormRef" :rules="rule">
  95. <el-row :gutter="20">
  96. <el-col :span="4">
  97. <el-form-item label="工单编号" prop="id">
  98. <el-input v-model="formData.sczl_gdbh" @keyup.enter.native="getCPMCsubmit" :clearable="true" placeholder="2023.12.14" />
  99. </el-form-item>
  100. </el-col>
  101. <el-col :span="6">
  102. <el-form-item label="产品名称" prop="name">
  103. <el-row :gutter="20">
  104. <el-col :span="12">
  105. <el-input v-model="formData.Gd_cpmc" :clearable="true" placeholder="ZT01733" />
  106. </el-col>
  107. </el-row>
  108. </el-form-item>
  109. </el-col>
  110. </el-row>
  111. <el-row :gutter="20">
  112. <el-col :span="8">
  113. <el-row :gutter="20">
  114. <el-col :span="14">
  115. <el-form-item label="印件号" prop="id">
  116. <el-input v-model="formData.sczl_yjno" @keyup.enter.native="getYJMCsubmit" :clearable="true" placeholder="0.00" />
  117. </el-form-item>
  118. </el-col>
  119. <el-col :span="10">
  120. <el-form-item label="印件名称" prop="id">
  121. <el-input v-model="formData.yj_yjmc" :clearable="true" placeholder="是" />
  122. </el-form-item>
  123. </el-col>
  124. </el-row>
  125. </el-col>
  126. </el-row>
  127. <el-row :gutter="20">
  128. <el-col :span="4">
  129. <el-form-item label="工序名称" prop="id">
  130. <el-input v-model="formData.sczl_gxmc" @keyup.enter.native="getGXsubmit" :clearable="true" placeholder="2023.12.14" />
  131. </el-form-item>
  132. </el-col>
  133. <el-col :span="6">
  134. <el-row :gutter="20">
  135. <el-col :span="12">
  136. <el-input v-model="formData.sczl_gxh" :clearable="true" placeholder="ZT01733" />
  137. </el-col>
  138. </el-row>
  139. </el-col>
  140. <el-col :span="3">
  141. <el-form-item label="工艺名称" prop="name">
  142. <el-input v-model="formData.sczl_type" :clearable="true" placeholder="A班" />
  143. </el-form-item>
  144. </el-col>
  145. </el-row>
  146. <el-row :gutter="20">
  147. <el-col :span="4">
  148. <el-form-item label="日期" prop="id">
  149. <el-input v-model="formData.sczl_rq" :clearable="true" placeholder="2023.12.14" />
  150. </el-form-item>
  151. </el-col>
  152. <el-col :span="6">
  153. <el-row :gutter="20">
  154. <el-col :span="12">
  155. <el-form-item label="机器" prop="id">
  156. <el-input v-model="formData.sczl_jtbh" :clearable="true" placeholder="ZT01733" />
  157. </el-form-item>
  158. </el-col>
  159. </el-row>
  160. </el-col>
  161. <el-col :span="3">
  162. <el-form-item label="组别" prop="name">
  163. <el-input v-model="formData.sczl_bzdh" :clearable="true" placeholder="A班" />
  164. </el-form-item>
  165. </el-col>
  166. </el-row>
  167. <el-row :gutter="20">
  168. <el-col :span="4">
  169. <el-form-item label="墨色" prop="id">
  170. <el-input v-model="formData.sczl_ms" :clearable="true" placeholder="2023.12.14" />
  171. </el-form-item>
  172. </el-col>
  173. <el-col :span="6">
  174. <el-row :gutter="20">
  175. <el-col :span="12">
  176. <el-form-item label="加工联数" prop="id">
  177. <el-input v-model="formData.sczl_ls" :clearable="true" placeholder="ZT01733" />
  178. </el-form-item>
  179. </el-col>
  180. </el-row>
  181. </el-col>
  182. <el-col :span="3">
  183. <el-form-item label="产量" prop="name">
  184. <el-input v-model="formData.sczl_cl" :clearable="true" placeholder="A班" />
  185. </el-form-item>
  186. </el-col>
  187. <el-col :span="3">
  188. <el-form-item label="制程废品" prop="name">
  189. <el-input v-model="formData.sczl_zcfp" :clearable="true" placeholder="A班" />
  190. </el-form-item>
  191. </el-col>
  192. </el-row>
  193. <el-row :gutter="20">
  194. <el-col :span="4">
  195. <el-form-item label="装版总工时" prop="id">
  196. <el-input v-model="formData.sczl_装版总工时" :clearable="true" placeholder="2023.12.14" />
  197. </el-form-item>
  198. </el-col>
  199. <el-col :span="6">
  200. <el-row :gutter="20">
  201. <el-col :span="12">
  202. <el-form-item label="装版补产工时" prop="id">
  203. <el-input v-model="formData.sczl_装版工时" :clearable="true" placeholder="ZT01733" />
  204. </el-form-item>
  205. </el-col>
  206. </el-row>
  207. </el-col>
  208. <el-col :span="3">
  209. <el-form-item label="保养工时" prop="name">
  210. <el-input v-model="formData.sczl_保养工时" :clearable="true" placeholder="A班" />
  211. </el-form-item>
  212. </el-col>
  213. <el-col :span="3">
  214. <el-form-item label="异常停机" prop="name">
  215. <el-input v-model="formData.sczl_异常停机工时" :clearable="true" placeholder="A班" />
  216. </el-form-item>
  217. </el-col>
  218. </el-row>
  219. <el-row :gutter="20">
  220. <el-col :span="4">
  221. <el-form-item label="打样总工时" prop="id">
  222. <el-input v-model="formData.sczl_打样总工时" :clearable="true" placeholder="2023.12.14" />
  223. </el-form-item>
  224. </el-col>
  225. <el-col :span="6">
  226. <el-row :gutter="20">
  227. <el-col :span="12">
  228. <el-form-item label="打样补产工时" prop="id">
  229. <el-input v-model="formData.sczl_打样工时" :clearable="true" placeholder="ZT01733" />
  230. </el-form-item>
  231. </el-col>
  232. </el-row>
  233. </el-col>
  234. <el-col :span="3">
  235. <el-form-item label="通电时间" prop="name">
  236. <el-input v-model="formData.sczl_设备运行工时" :clearable="true" placeholder="A班" />
  237. </el-form-item>
  238. </el-col>
  239. </el-row>
  240. <el-row :gutter="20">
  241. <el-col :span="4">
  242. </el-col>
  243. <el-col :span="6">
  244. <el-row :gutter="20">
  245. <el-col :span="12">
  246. <el-form-item label="拆片联拼系数" prop="id">
  247. <el-input v-model="formData.拆片联拼系数" :clearable="true" placeholder="ZT01733" />
  248. </el-form-item>
  249. </el-col>
  250. </el-row>
  251. </el-col>
  252. <el-col :span="3">
  253. <el-form-item label="拆片条小盒系数" prop="name">
  254. <el-input v-model="formData.拆片条小盒系数" :clearable="true" placeholder="A班" />
  255. </el-form-item>
  256. </el-col>
  257. </el-row>
  258. <el-row :gutter="20">
  259. <el-col :span="4">
  260. </el-col>
  261. <el-col :span="6">
  262. <el-row :gutter="20">
  263. <el-col :span="12">
  264. <el-form-item label="定额代号" prop="id">
  265. <el-input v-model="formData.sczl_dedh" @keyup.enter.native="getDedhsubmit" :clearable="true" placeholder="ZT01733" />
  266. </el-form-item>
  267. </el-col>
  268. </el-row>
  269. </el-col>
  270. <el-col :span="3">
  271. <el-form-item label="工价系数" prop="name">
  272. <el-input v-model="formData.sczl_工价系数" :clearable="true" placeholder="A班" />
  273. </el-form-item>
  274. </el-col>
  275. <el-col :span="3">
  276. <el-form-item label="计产系数" prop="name">
  277. <el-input v-model="formData.sczl_计产系数" :clearable="true" placeholder="A班" />
  278. </el-form-item>
  279. </el-col>
  280. </el-row>
  281. <el-row :gutter="10">
  282. <el-col :span="2">
  283. </el-col>
  284. <el-col :span="2">
  285. <span>员工姓名1</span>
  286. </el-col>
  287. <el-col :span="2">
  288. <span>员工姓名2</span>
  289. </el-col>
  290. <el-col :span="2">
  291. <span>员工姓名3</span>
  292. </el-col>
  293. <el-col :span="2">
  294. <span>员工姓名4</span>
  295. </el-col>
  296. <el-col :span="2">
  297. <span>员工姓名5</span>
  298. </el-col>
  299. <el-col :span="2">
  300. <span>员工姓名6</span>
  301. </el-col>
  302. <el-col :span="2">
  303. <span>员工姓名7</span>
  304. </el-col>
  305. <el-col :span="2">
  306. <span>员工姓名8</span>
  307. </el-col>
  308. <el-col :span="2">
  309. <span>员工姓名9</span>
  310. </el-col>
  311. <el-col :span="2">
  312. <span>特殊组员</span>
  313. </el-col>
  314. </el-row>
  315. <el-row :gutter="10" style="margin-top: 10px;">
  316. <el-col :span="2">
  317. <span>班组成员</span>
  318. </el-col>
  319. <el-col :span="2">
  320. <el-input v-model="formData.sczl_bh1" @keyup.enter.native="getGxMcsubmit($event, '1')":clearable="true" placeholder="ZI00401" />
  321. </el-col>
  322. <el-col :span="2">
  323. <el-input v-model="formData.sczl_bh2" @keyup.enter.native="getGxMcsubmit($event, '2')" :clearable="true" placeholder="瞿春生" />
  324. </el-col>
  325. <el-col :span="2">
  326. <el-input v-model="formData.sczl_bh3" @keyup.enter.native="getGxMcsubmit($event, '3')" :clearable="true" placeholder="11.0" />
  327. </el-col>
  328. <el-col :span="2">
  329. <el-input v-model="formData.sczl_bh4" @keyup.enter.native="getGxMcsubmit($event, '4')" :clearable="true" placeholder="打包废纸" />
  330. </el-col>
  331. <el-col :span="2">
  332. <el-input v-model="formData.sczl_bh5" @keyup.enter.native="getGxMcsubmit($event, '5')" :clearable="true" placeholder="是" />
  333. </el-col>
  334. <el-col :span="2">
  335. <el-input v-model="formData.sczl_bh6" @keyup.enter.native="getGxMcsubmit($event, '6')" :clearable="true" placeholder="ZI00401" />
  336. </el-col>
  337. <el-col :span="2">
  338. <el-input v-model="formData.sczl_bh7" @keyup.enter.native="getGxMcsubmit($event, '7')" :clearable="true" placeholder="瞿春生" />
  339. </el-col>
  340. <el-col :span="2">
  341. <el-input v-model="formData.sczl_bh8" @keyup.enter.native="getGxMcsubmit($event, '8')" :clearable="true" placeholder="11.0" />
  342. </el-col>
  343. <el-col :span="2">
  344. <el-input v-model="formData.sczl_bh9" @keyup.enter.native="getGxMcsubmit($event, '9')" :clearable="true" placeholder="打包废纸" />
  345. </el-col>
  346. <el-col :span="2">
  347. <el-input v-model="formData.sczl_bh10" @keyup.enter.native="getGxMcsubmit($event, '10')" :clearable="true" placeholder="是" />
  348. </el-col>
  349. </el-row>
  350. </el-form>
  351. <el-row :gutter="10" style="margin-top: 10px;">
  352. <el-col :span="2">
  353. </el-col>
  354. <el-col :span="2">
  355. <el-input v-model="formData.sczl_bh1_name" :clearable="true" placeholder="ZI00401" />
  356. </el-col>
  357. <el-col :span="2">
  358. <el-input v-model="formData.sczl_bh2_name" :clearable="true" placeholder="瞿春生" />
  359. </el-col>
  360. <el-col :span="2">
  361. <el-input v-model="formData.sczl_bh3_name" :clearable="true" placeholder="11.0" />
  362. </el-col>
  363. <el-col :span="2">
  364. <el-input v-model="formData.sczl_bh4_name" :clearable="true" placeholder="打包废纸" />
  365. </el-col>
  366. <el-col :span="2">
  367. <el-input v-model="formData.sczl_bh5_name" :clearable="true" placeholder="是" />
  368. </el-col>
  369. <el-col :span="2">
  370. <el-input v-model="formData.sczl_bh6_name" :clearable="true" placeholder="ZI00401" />
  371. </el-col>
  372. <el-col :span="2">
  373. <el-input v-model="formData.sczl_bh7_name" :clearable="true" placeholder="瞿春生" />
  374. </el-col>
  375. <el-col :span="2">
  376. <el-input v-model="formData.sczl_bh8_name" :clearable="true" placeholder="11.0" />
  377. </el-col>
  378. <el-col :span="2">
  379. <el-input v-model="formData.sczl_bh9_name" :clearable="true" placeholder="打包废纸" />
  380. </el-col>
  381. <el-col :span="2">
  382. <el-input v-model="formData.sczl_bh10_name" :clearable="true" placeholder="是" />
  383. </el-col>
  384. </el-row>
  385. <el-row :gutter="10" style="margin-top: 10px;">
  386. <el-col :span="2">
  387. </el-col>
  388. <el-col :span="2">
  389. <el-input v-model="formData.sczl_rate1" :clearable="true" placeholder="ZI00401" />
  390. </el-col>
  391. <el-col :span="2">
  392. <el-input v-model="formData.sczl_rate2" :clearable="true" placeholder="瞿春生" />
  393. </el-col>
  394. <el-col :span="2">
  395. <el-input v-model="formData.sczl_rate3" :clearable="true" placeholder="11.0" />
  396. </el-col>
  397. <el-col :span="2">
  398. <el-input v-model="formData.sczl_rate4" :clearable="true" placeholder="打包废纸" />
  399. </el-col>
  400. <el-col :span="2">
  401. <el-input v-model="formData.sczl_rate5" :clearable="true" placeholder="是" />
  402. </el-col>
  403. <el-col :span="2">
  404. <el-input v-model="formData.sczl_rate6" :clearable="true" placeholder="ZI00401" />
  405. </el-col>
  406. <el-col :span="2">
  407. <el-input v-model="formData.sczl_rate7" :clearable="true" placeholder="瞿春生" />
  408. </el-col>
  409. <el-col :span="2">
  410. <el-input v-model="formData.sczl_rate8" :clearable="true" placeholder="11.0" />
  411. </el-col>
  412. <el-col :span="2">
  413. <el-input v-model="formData.sczl_rate9" :clearable="true" placeholder="打包废纸" />
  414. </el-col>
  415. <el-col :span="2">
  416. <el-input v-model="formData.sczl_rate10" :clearable="true" placeholder="是" />
  417. </el-col>
  418. </el-row>
  419. <template #footer>
  420. <div class="dialog-footer">
  421. <el-button @click="closeDialog">取 消</el-button>
  422. <el-button type="primary" @click="enterDialog">确 定</el-button>
  423. </div>
  424. </template>
  425. </el-dialog>
  426. <el-dialog
  427. v-model="GetDedhVisible"
  428. title="选择"
  429. destroy-on-close
  430. width="600px"
  431. >
  432. <el-aside width="250px">
  433. <div class="JKWTree-tree">
  434. <el-tree :data="GetDedhtreeData" :props="defaultProps" highlight-current="true"
  435. @node-click="GetDedhhandleNodeClick" @node-dblclick="handleNodeDoubleClick"></el-tree>
  436. </div>
  437. </el-aside>
  438. </el-dialog>
  439. <el-dialog
  440. v-model="GXVisible"
  441. title="选择"
  442. destroy-on-close
  443. width="800px"
  444. >
  445. <el-table
  446. tooltip-effect="dark"
  447. :data="selectData"
  448. row-key="ID"
  449. highlight-current-row="true"
  450. border
  451. style="width:100%"
  452. @row-dblclick="SelectClick"
  453. >
  454. <el-table-column
  455. prop="sczl_gxmc"
  456. label="工序名称"
  457. width="800"
  458. />
  459. </el-table>
  460. </el-dialog>
  461. </el-main>
  462. </el-container>
  463. </el-container>
  464. </div>
  465. </template>
  466. <script setup>
  467. import {
  468. getproductionCount,
  469. getproductionList,
  470. productionlocate,
  471. productionByGdbh,
  472. productionInfo,
  473. productionGdmc,
  474. productionYjmc,
  475. productionGx,
  476. productionDedh,
  477. productionedit,
  478. productiondel,
  479. getYg
  480. } from '@/api/jixiaoguanli/jitairibaobiao'
  481. // 全量引入格式化工具 请按需保留
  482. import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
  483. import { ElMessage, ElMessageBox } from 'element-plus'
  484. import { Search, Refresh, Download } from '@element-plus/icons-vue'
  485. import { ref, reactive, onMounted, onBeforeMount } from 'vue'
  486. import { getPackingSideTable, getPackingTable } from '@/api/mes_api_gty/myapi'
  487. defineOptions({
  488. name: '06-packingDocuments'
  489. })
  490. const GetDedhVisible = ref(false)
  491. // 侧边栏数据请求
  492. const treeData = reactive([]);
  493. const getTabdata = async () => {
  494. //接口调用函数
  495. const response = await getproductionCount();
  496. console.log(response.data)
  497. const transformedData = response.data.map(item => ({
  498. label: `${item.date.replace(/-/g, '.')}【单据数: ${item.counts}张】`,
  499. children: Object.keys(item.sys).map(sysItem => {
  500. const matchResult = sysItem.match(/\[(.*?)\]/);
  501. const sysLabel = matchResult ? matchResult[1] : "";
  502. return {
  503. label: `${sysLabel}【记录数: ${item.sys[sysItem]}张】`,
  504. params: {
  505. date: item.date.replace(/\./g, '-'),
  506. sys_id: sysItem,
  507. total: item.sys[sysItem],
  508. },
  509. };
  510. }),
  511. }));
  512. treeData.splice(0, treeData.length, ...transformedData);
  513. console.log(treeData);
  514. }
  515. getTabdata();
  516. // 自动化生成的字典(可能为空)以及字段
  517. const formData = ref({
  518. sczl_gdbh: '',
  519. Gd_cpmc: '',
  520. sczl_yjno: '',
  521. yj_yjmc: '',
  522. sczl_gxmc: '',
  523. sczl_gxh: '',
  524. sczl_type: '',
  525. sczl_rq: '',
  526. sczl_jtbh: '',
  527. sczl_bzdh: '',
  528. sczl_ms: '',
  529. sczl_ls: '',
  530. sczl_cl: '',
  531. sczl_zcfp: '',
  532. sczl_装版总工时: '',
  533. sczl_装版工时: '',
  534. sczl_保养工时: '',
  535. sczl_异常停机工时: '',
  536. sczl_打样总工时: '',
  537. sczl_打样工时: '',
  538. sczl_设备运行工时: '',
  539. 拆片联拼系数: '',
  540. 拆片条小盒系数: '',
  541. sczl_dedh: '',
  542. sczl_工价系数: '',
  543. sczl_计产系数: '',
  544. sczl_bh1: '',
  545. sczl_bh2: '',
  546. sczl_bh3: '',
  547. sczl_bh4: '',
  548. sczl_bh5: '',
  549. sczl_bh6: '',
  550. sczl_bh7: '',
  551. sczl_bh8: '',
  552. sczl_bh9: '',
  553. sczl_bh10: '',
  554. sczl_rate1: '',
  555. sczl_rate2: '',
  556. sczl_rate3: '',
  557. sczl_rate4: '',
  558. sczl_rate5: '',
  559. sczl_rate6: '',
  560. sczl_rate7: '',
  561. sczl_rate8: '',
  562. sczl_rate9: '',
  563. sczl_rate10: '',
  564. sczl_bh1_name: '',
  565. sczl_bh2_name: '',
  566. sczl_bh3_name: '',
  567. sczl_bh4_name: '',
  568. sczl_bh5_name: '',
  569. sczl_bh6_name: '',
  570. sczl_bh7_name: '',
  571. sczl_bh8_name: '',
  572. sczl_bh9_name: '',
  573. sczl_bh10_name: '',
  574. })
  575. // 验证规则
  576. const rule = reactive({
  577. })
  578. const elFormRef = ref()
  579. const elSearchFormRef = ref()
  580. // =========== 表格控制部分 ===========
  581. const tableData = reactive([])
  582. const detailData = reactive([])
  583. const total = ref(0)
  584. const page = ref(1)
  585. const limit = ref(10)
  586. const searchInfo = ref('')
  587. const params = {
  588. type: '',
  589. date: '',
  590. sys_id: '',
  591. gdbh: '',
  592. }
  593. // 分页设置
  594. const handleSizeChange = (val) => {
  595. switch (params.type) {
  596. case 'getTableData':
  597. getTableData()
  598. break
  599. case 'getLocateTable':
  600. GetLocate()
  601. break
  602. default:
  603. break
  604. }
  605. }
  606. // 页面跳转
  607. const handleCurrentChange = (val) => {
  608. switch (params.type) {
  609. case 'getTableData':
  610. getTableData()
  611. break
  612. case 'getLocateTable':
  613. GetLocate()
  614. break
  615. default:
  616. break
  617. }
  618. }
  619. //定位
  620. const GetLocate = async () => {
  621. const response = await productionlocate({
  622. gdbh: params.gdbh,
  623. page: page.value.toString(), limit: limit.value.toString(),
  624. })
  625. console.log(response)
  626. if (response.code === 0) {
  627. const processedData = response.data.rows.map(item => {
  628. return {
  629. ...item,
  630. combinedProp: item.sczl_gdbh + '--'+item.yj_yjmc,
  631. combinedProp2: item.sczl_yjgx + '-'+item.sczl_gxmc
  632. };
  633. });
  634. total.value = response.data.total
  635. tableData.splice(0, tableData.length, ...processedData);
  636. }
  637. }
  638. let positionvalue=ref()
  639. //获取列表
  640. const getTableData = async() => {
  641. const response = await getproductionList({date: params.date, sys_id: params.sys_id,
  642. page: page.value.toString(), limit: limit.value.toString()});
  643. console.log(response)
  644. if (response.code === 0) {
  645. tableData.splice(0, tableData.length, ...response.data.rows);
  646. }
  647. }
  648. const handleNodeClick = (node,check) => {
  649. //存放当前节点的nodeId
  650. if (node.params) {
  651. params.date = node.params.date;
  652. params.sys_id = node.params.sys_id;
  653. total.value = node.params.total;
  654. console.log(params)
  655. getTableData();
  656. }
  657. }
  658. //员工编号回车事件
  659. const getGxMcsubmit = (event, inputName) => {
  660. console.log(inputName)
  661. let combinedString = 'sczl_bh' + inputName;
  662. console.log(combinedString)
  663. // let variableName = 'sczl_gdbh'+inputName;
  664. let variableValue = eval('formData.value.' + combinedString);
  665. console.log(variableValue)
  666. GetYg(variableValue,inputName)
  667. }
  668. //获取员工信息
  669. const GetYg = async (value,inputName) => {
  670. const response = await getYg({sczl_bh:value});
  671. console.log(response)
  672. if (response.code === 0) {
  673. console.log(response.data.ygxm)
  674. let Bname = 'sczl_bh' + inputName+'_name';
  675. formData.value[Bname]=response.data.ygxm
  676. // console.log(formData.value[Bname])
  677. }
  678. }
  679. //定额代号回车事件
  680. const getDedhsubmit = () => {
  681. GetDedh()
  682. }
  683. let GetDedhtreeData = reactive([]);
  684. //获取定额代号
  685. const GetDedh = async () => {
  686. const response = await productionDedh();
  687. console.log(response);
  688. // Initialize the tree structure
  689. let treeData = [];
  690. if (response.code === 0) {
  691. const data = response.data;
  692. // 递归函数来构建树形结构
  693. const buildTree = (node) => {
  694. const treeNode = {
  695. label: node.sys_bh + '【' + node.sys_mc+'】',
  696. children: []
  697. };
  698. // 如果存在子节点,递归地添加它们
  699. if (node.bh_mc && Array.isArray(node.bh_mc)) {
  700. node.bh_mc.forEach(childNode => {
  701. treeNode.children.push(buildTree(childNode)); // 递归调用
  702. });
  703. }
  704. return treeNode;
  705. };
  706. // 构建树形结构的根节点
  707. const treeData = data.bh_mc.map(buildTree);
  708. console.log(treeData);
  709. GetDedhtreeData = treeData; // 假设这是外部可访问的变量
  710. GetDedhVisible.value = true; // 假设这是一个响应式引用
  711. }
  712. }
  713. //定额代号树形结构单机
  714. const GetDedhhandleNodeClick = (nodeData, node, component) => {
  715. //存放当前节点的nodeId
  716. //存放当前节点的nodeId
  717. if (!nodeData.children || nodeData.children.length === 0) {
  718. // 如果节点没有子节点,打印节点名称
  719. console.log(nodeData.label.split("【")[0]);
  720. formData.value.sczl_dedh=nodeData.label.split("【")[0]
  721. GetDedhVisible.value = false
  722. }
  723. }
  724. //工序回车事件
  725. const getGXsubmit = () => {
  726. GetGxMc()
  727. }
  728. const selectData = reactive([])
  729. const GXVisible = ref(false)
  730. //查询印件工序及产品名称
  731. const GetGxMc = async () => {
  732. console.log(formData.value.sczl_gdbh)
  733. const response = await productionGx({gdbh:formData.value.sczl_gdbh,yjno:formData.value.sczl_yjno});
  734. console.log(response)
  735. if (response.code === 0) {
  736. selectData.splice(0, selectData.length, ...response.data)
  737. GXVisible.value=true
  738. }
  739. }
  740. //工序选择
  741. const SelectClick = (row, column, event) => {
  742. const {sczl_gxmc } = row
  743. formData.value.sczl_gxmc=sczl_gxmc
  744. formData.value.sczl_gxh=sczl_gxmc.split("-")[0]
  745. console.log(formData.value.sczl_gxmc)
  746. console.log(formData.value.sczl_gxh)
  747. GXVisible.value = false
  748. }
  749. //工单编号回车事件
  750. const getCPMCsubmit = () => {
  751. GetCPMC()
  752. }
  753. //获取工单名称
  754. const GetCPMC = async () => {
  755. console.log(formData.value.sczl_gdbh)
  756. const response = await productionGdmc({gdbh:formData.value.sczl_gdbh});
  757. console.log(response)
  758. if (response.code === 0) {
  759. formData.value.Gd_cpmc=response.data.Gd_cpmc
  760. }
  761. }
  762. //印件号回车事件
  763. const getYJMCsubmit = () => {
  764. GetYJMC()
  765. }
  766. //获取印件名称
  767. const GetYJMC = async () => {
  768. console.log(formData.value.sczl_gdbh)
  769. const response = await productionYjmc({gdbh:formData.value.sczl_gdbh,yjno:formData.value.sczl_yjno});
  770. console.log(response)
  771. if (response.code === 0) {
  772. formData.value.yj_yjmc=response.data.yj_yjmc
  773. }
  774. }
  775. // 搜索
  776. function onSearch() {
  777. params.gdbh = positionvalue.value
  778. params.type = 'getLocateTable'
  779. page.value = 1
  780. GetLocate()
  781. }
  782. //删除
  783. function onDel() {
  784. Del()
  785. }
  786. //删除
  787. const Del = async () => {
  788. const response = await productiondel({UniqId:lastCellValue});
  789. if (response.code === 0) {
  790. console.log(333)
  791. }
  792. getTableData()
  793. }
  794. // 按工单显示
  795. function onCountByGdbh() {
  796. CountByGdbh()
  797. }
  798. //按工单显示
  799. const CountByGdbh = async () => {
  800. const response = await productionByGdbh();
  801. // let tree = {}; // 将 tree 声明为 let 变量,以便后续可以重新赋值
  802. // console.log(response)
  803. if (response.code === 0) {
  804. // console.log(response)
  805. // const transformedData = response.data.map(item => ({
  806. // label: `${item.sys.value}`,
  807. // // children: item.sys(sysItem => ({
  808. // // label: `${sysItem.sys} 【记录数: ${sysItem.sys}张】`,
  809. // params: {
  810. // date: item.sczl_gdbh,
  811. // sys_id: item.sczl_gdbh,
  812. // total: '1',
  813. // },
  814. // // })),
  815. // }));
  816. // treeData.splice(0, treeData.length, ...transformedData);
  817. // 假设您有一个名为"tree"的空对象来存储树形结构
  818. treeData.splice(0, treeData.length);
  819. // 遍历接口返回的数据
  820. response.data.forEach(item => {
  821. // 创建父节点
  822. treeData[item.sczl_gdbh] = {
  823. label: item.sczl_gdbh+'【'+item.yj_yjmc+'】',
  824. children: [],
  825. params:{
  826. date: item.sczl_gdbh,
  827. sys_id:'' ,
  828. total: '',
  829. }
  830. };
  831. // 添加子节点
  832. for (const key in item.sys) {
  833. const childNode = {
  834. name: key,
  835. label: key+' 【记录数'+item.sys[key]+'张】',
  836. params:{
  837. date: item.sczl_gdbh,
  838. sys_id:key ,
  839. total: item.sys[key],
  840. }
  841. };
  842. treeData[item.sczl_gdbh].children.push(childNode);
  843. }
  844. });
  845. // console.log(treeData)
  846. // // // 打印树形结构
  847. // console.log(JSON.stringify(tree, null, 2));
  848. // // 将父子关系转换为数组
  849. // const transformedData = Object.values(tree);
  850. // console.log(transformedData);
  851. // treeData = transformedData;
  852. }
  853. // // 将父子关系转换为数组
  854. // const transformedData = Object.values(tree);
  855. // console.log(transformedData)
  856. // treeData = transformedData;
  857. getTableData()
  858. }
  859. // ============== 表格控制部分结束 ===============
  860. // 获取需要的字典 可能为空 按需保留
  861. const setOptions = async () => {
  862. }
  863. // 获取需要的字典 可能为空 按需保留
  864. setOptions()
  865. // 多选数据
  866. const multipleSelection = ref([])
  867. // 多选
  868. const handleSelectionChange = (val) => {
  869. // multipleSelection.value = val
  870. if(val.length>0){
  871. // multipleSelection.value = val
  872. const lenth=val.length
  873. // ScrapFactor.gdbh=val[lenth-1].combinedProp.split('-')[0];
  874. // const parts = val[lenth-1].combinedProp2.split('-')
  875. // ScrapFactor.yjno=parts[0];
  876. // ScrapFactor.gxh=parts[1];
  877. // ScrapFactor.type=val[lenth-1].sczl_检验类别
  878. // console.log(ScrapFactor)
  879. lastCellValue=val[lenth-1].UniqId
  880. // console.log(val)
  881. val.splice(0, val.length); // 清空 val 数组
  882. console.log(lastCellValue)
  883. }
  884. }
  885. // 批量删除控制标记
  886. const deleteVisible = ref(false)
  887. // 多选删除
  888. const onDelete = async () => {
  889. const ids = []
  890. if (multipleSelection.value.length === 0) {
  891. ElMessage({
  892. type: 'warning',
  893. message: '请选择要删除的数据'
  894. })
  895. return
  896. }
  897. multipleSelection.value &&
  898. multipleSelection.value.map(item => {
  899. ids.push(item.ID)
  900. })
  901. const res = await deleteCompanyByIds({ ids })
  902. if (res.code === 0) {
  903. ElMessage({
  904. type: 'success',
  905. message: '删除成功'
  906. })
  907. if (tableData.value.length === ids.length && page.value > 1) {
  908. page.value--
  909. }
  910. deleteVisible.value = false
  911. getTableData()
  912. }
  913. }
  914. // 行为控制标记(弹窗内部需要增还是改)
  915. const type = ref('')
  916. // 更新行
  917. const updateCompanyFunc = async (row) => {
  918. const res = await findCompany({ ID: row.ID })
  919. type.value = 'update'
  920. if (res.code === 0) {
  921. formData.value = res.data.recompany
  922. dialogFormVisible.value = true
  923. }
  924. }
  925. // 弹窗控制标记
  926. const dialogFormVisible = ref(false)
  927. // 打开弹窗
  928. const openDialog = () => {
  929. type.value = 'create'
  930. dialogFormVisible.value = true
  931. }
  932. // 关闭弹窗
  933. const closeDialog = () => {
  934. dialogFormVisible.value = false
  935. formData.value = {
  936. address: '',
  937. image: '',
  938. name: '',
  939. }
  940. }
  941. // 弹窗确定
  942. const enterDialog = async () => {
  943. // elFormRef.value?.validate(async (valid) => {
  944. // if (!valid) return
  945. // let res
  946. // switch (type.value) {
  947. // case 'create':
  948. // res = await createCompany(formData.value)
  949. // break
  950. // case 'update':
  951. // res = await updateCompany(formData.value)
  952. // break
  953. // default:
  954. // res = await createCompany(formData.value)
  955. // break
  956. // }
  957. // if (res.code === 0) {
  958. // ElMessage({
  959. // type: 'success',
  960. // message: '创建/更改成功'
  961. // })
  962. // closeDialog()
  963. // getTableData()
  964. // }
  965. // })
  966. updateDetailData()
  967. }
  968. // 更新数据
  969. const updateDetailData = async() => {
  970. const restoredData = {
  971. UniqId: lastCellValue,
  972. sczl_gdbh: formData.value.sczl_gdbh,
  973. Gd_cpmc: formData.value.Gd_cpmc,
  974. sczl_yjno: formData.value.sczl_yjno,
  975. yj_yjmc: formData.value.yj_yjmc,
  976. sczl_gxmc: formData.value.sczl_gxmc,
  977. sczl_gxh: formData.value.sczl_gxh,
  978. sczl_type: formData.value.sczl_type,
  979. sczl_rq: formData.value.sczl_rq,
  980. sczl_jtbh: formData.value.sczl_jtbh,
  981. sczl_bzdh: formData.value.sczl_bzdh,
  982. sczl_ms: formData.value.sczl_ms,
  983. sczl_ls: formData.value.sczl_ls,
  984. sczl_cl: formData.value.sczl_cl,
  985. sczl_zcfp: formData.value.sczl_zcfp,
  986. sczl_装版总工时: formData.value.sczl_装版总工时,
  987. sczl_装版工时: formData.value.sczl_装版工时,
  988. sczl_保养工时: formData.value.sczl_保养工时,
  989. sczl_异常停机工时: formData.value.sczl_异常停机工时,
  990. sczl_打样总工时: formData.value.sczl_打样总工时,
  991. sczl_打样工时: formData.value.sczl_打样工时,
  992. sczl_设备运行工时: formData.value.sczl_设备运行工时,
  993. 拆片联拼系数: formData.value.拆片联拼系数,
  994. 拆片条小盒系数: formData.value.拆片条小盒系数,
  995. sczl_dedh: formData.value.sczl_dedh,
  996. sczl_工价系数: formData.value.sczl_工价系数,
  997. sczl_计产系数: formData.value.sczl_计产系数,
  998. sczl_bh1: formData.value.sczl_bh1,
  999. sczl_bh2: formData.value.sczl_bh2,
  1000. sczl_bh3: formData.value.sczl_bh3,
  1001. sczl_bh4: formData.value.sczl_bh4,
  1002. sczl_bh5: formData.value.sczl_bh5,
  1003. sczl_bh6: formData.value.sczl_bh6,
  1004. sczl_bh7: formData.value.sczl_bh7,
  1005. sczl_bh8: formData.value.sczl_bh8,
  1006. sczl_bh9: formData.value.sczl_bh9,
  1007. sczl_bh10: formData.value.sczl_bh10,
  1008. sczl_rate1: formData.value.sczl_rate1,
  1009. sczl_rate2: formData.value.sczl_rate2,
  1010. sczl_rate3: formData.value.sczl_rate3,
  1011. sczl_rate4: formData.value.sczl_rate4,
  1012. sczl_rate5: formData.value.sczl_rate5,
  1013. sczl_rate6: formData.value.sczl_rate6,
  1014. sczl_rate7: formData.value.sczl_rate7,
  1015. sczl_rate8: formData.value.sczl_rate8,
  1016. sczl_rate9: formData.value.sczl_rate9,
  1017. sczl_rate10: formData.value.sczl_rate10,
  1018. }
  1019. // detailData.table.forEach((item, index, array) => {
  1020. // const num = index + 1
  1021. // restoredData[`sczl_gdbh${num}`] = item.sczl_gdbh
  1022. // restoredData[`sczl_yjGx${num}`] = item.sczl_yjGx
  1023. // restoredData[`sczl_gxmc${num}`] = item.sczl_gxmc
  1024. // // restoredData[`Gd_cpmc${num}`] = item.Gd_cpmc
  1025. // restoredData[`sczl_cl${num}`] = item.sczl_cl
  1026. // restoredData[`sczl_PgCl${num}`] = item.sczl_PgCl
  1027. // restoredData[`sczl_clAdd${num}`] = item.sczl_clAdd
  1028. // })
  1029. console.log(restoredData)
  1030. console.log(lastCellValue)
  1031. formData.value.UniqId=lastCellValue
  1032. console.log(formData)
  1033. restoredData.UniqId='5'
  1034. const response = await productionedit(restoredData);
  1035. // console.log(FormData)
  1036. console.log(response)
  1037. }
  1038. let table=ref(5);
  1039. let lastCellValue=ref()
  1040. // 双击表格操作
  1041. function doubleClick(row, column, event) {
  1042. type.value = 'update';
  1043. lastCellValue= row['UniqId'];
  1044. console.log(lastCellValue)
  1045. table.value=lastCellValue
  1046. dialogFormVisible.value = true
  1047. GetInfo(table.value)
  1048. }
  1049. //获取详细信息
  1050. const GetInfo = async (value) => {
  1051. const response = await productionInfo({UniqId:value});
  1052. console.log(response)
  1053. if (response.code === 0) {
  1054. formData.value=response.data;
  1055. }
  1056. }
  1057. // 导出excel
  1058. function exportExcel() {
  1059. console.log('导出到excel');
  1060. }
  1061. // 生命周期钩子
  1062. onMounted(async () => {
  1063. });
  1064. </script>
  1065. <style>
  1066. .JKWTree-container {
  1067. display: flex;
  1068. }
  1069. .JKWTree-tree {
  1070. width: 300px;
  1071. background-color: #fff;
  1072. padding: 10px;
  1073. margin-right: 20px;
  1074. }
  1075. .JKWTree-tree h3 {
  1076. font-size: 15px;
  1077. font-weight: 700;
  1078. margin: 10px 0;
  1079. }
  1080. .JKWTree-content {
  1081. flex: 1;
  1082. }
  1083. /* 选中某行时的背景色*/
  1084. .el-table__body tr.current-row>td {
  1085. background: #ff80ff !important;
  1086. /* 背景颜色 */
  1087. }
  1088. </style>