chengpinrucang.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029
  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="onDel">删除</el-button>
  22. <el-button type="primary" @click="onSMB">入仓末板数据统计</el-button>
  23. <el-button type="primary" @click="onDay">各日统计</el-button>
  24. <el-button type="primary" @click="onAdd">新增</el-button>
  25. <div style="margin-left: auto;">
  26. <el-button type="primary" :icon="Download" @click="exportExcel">导出到Excel</el-button>
  27. </div>
  28. </div>
  29. <!-- 数据展示 -->
  30. <el-table ref="multipleTable" style="width: 100%" tooltip-effect="dark" :data="tableData" row-key="ID" @row-click="Click"
  31. highlight-current-row="true" border @selection-change="handleSelectionChange" :show-overflow-tooltip="true" @row-dblclick="doubleClick">
  32. <el-table-column type="selection" width="55" />
  33. <el-table-column align="left" sortable label="入仓类型" prop="入仓类型" width="120"/>
  34. <el-table-column align="left" sortable label="仓库编号" prop="仓库编号" width="120"/>
  35. <el-table-column align="left" sortable label="仓库名称" prop="仓库名称" width="120"/>
  36. <el-table-column align="left" sortable label="入仓单号" prop="jjcp_num" width="120"/>
  37. <el-table-column align="left" sortable label="工单编号" prop="jjcp_gdbh" width="160"/>
  38. <el-table-column align="left" sortable label="印件号" prop="jjcp_yjno" width="160"/>
  39. <el-table-column align="left" sortable label="入仓数量" prop="jjcp_sl" width="120"/>
  40. <el-table-column align="left" sortable label="累计入仓数量" prop="jjcp_sls" width="120"/>
  41. <el-table-column align="left" sortable label="订单数量" prop="订单数量" width="120"/>
  42. <el-table-column align="left" sortable label="完成率" prop="完成率" width="120"/>
  43. <el-table-column align="left" sortable label="单位" prop="jjcp_dw" width="120"/>
  44. <el-table-column align="left" sortable label="入仓日期" prop="jjcp_sj" width="160"/>
  45. <el-table-column align="left" sortable label="首末版" prop="jjcp_smb" width="160"/>
  46. <el-table-column align="left" sortable label="印件代号" prop="jjcp_cpdh" width="120"/>
  47. <el-table-column align="left" sortable label="印件名称" prop="jjcp_cpmc" width="120"/>
  48. <el-table-column align="left" sortable label="产品编号" prop="成品编码" width="120"/>
  49. <el-table-column align="left" sortable label="产品名称" prop="成品名称" width="120"/>
  50. <el-table-column align="left" sortable label="客户料号" prop="客户料号" width="120"/>
  51. <el-table-column align="left" sortable label="备注" prop="jjcp_desc" width="160"/>
  52. <el-table-column align="left" sortable label="客户编号" prop="客户编号" width="160"/>
  53. <el-table-column align="left" sortable label="客户名称" prop="Gd_客户名称" width="120"/>
  54. <el-table-column align="left" sortable label="最近入仓日期" prop="最近入仓日期" width="120"/>
  55. <el-table-column align="left" sortable label="机型备注" prop="机型备注" width="120"/>
  56. <el-table-column align="left" sortable label="创建用户" prop="Sys_id" width="120"/>
  57. <el-table-column align="left" sortable label="创建时间" prop="sys_rq" width="160"/>
  58. <el-table-column align="left" sortable label="修改时间" prop="mod_rq" width="160"/>
  59. <el-table-column align="left" sortable label="UNIQID" prop="UniqId" width="120"/>
  60. </el-table>
  61. <!-- 分页 -->
  62. <div class="gva-pagination">
  63. <el-pagination layout="total, sizes, prev, pager, next, jumper" v-model:current-page="page"
  64. v-model:page-size="limit"
  65. :page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
  66. @size-change="handleSizeChange" />
  67. </div>
  68. </div>
  69. <!-- 弹出框 -->
  70. <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="type === 'create' ? '添加' : '详情'"
  71. destroy-on-close width="1200px">
  72. <!-- <el-scrollbar height="500px"> -->
  73. <el-form :model="formData" label-position="left" ref="elFormRef" :rules="rule">
  74. <el-row :gutter="20">
  75. <el-col :span="4">
  76. <el-form-item label="入仓类型" prop="id">
  77. <el-input v-model="formData.入仓类型" id="入仓类型" @keydown="ent($event, '入仓备注', '入仓类型', '仓库编号')" :clearable="true" placeholder="" />
  78. </el-form-item>
  79. </el-col>
  80. <el-col :span="6">
  81. <el-form-item label="仓库" prop="name">
  82. <el-row :gutter="20">
  83. <el-col :span="12">
  84. <el-input v-model="formData.仓库编号" id="仓库编号" @keydown="ent($event, '入仓类型', '仓库编号', '仓库名称')" @keyup.enter.native="getCKsubmit" :clearable="true" placeholder="ZT01733" />
  85. </el-col>
  86. <el-col :span="12">
  87. <el-input v-model="formData.仓库名称" id="仓库名称" @keydown="ent($event, '仓库编号', '仓库名称', '单据编号')" :clearable="true" placeholder="" />
  88. </el-col>
  89. </el-row>
  90. </el-form-item>
  91. </el-col>
  92. </el-row>
  93. <el-row :gutter="20">
  94. <el-col :span="4">
  95. <el-form-item label="单据编号" prop="id">
  96. <el-input v-model="formData.jjcp_num" id="单据编号" @keydown="ent($event, '仓库名称', '单据编号', '工单编号')" :clearable="true" placeholder="" />
  97. </el-form-item>
  98. </el-col>
  99. </el-row>
  100. <el-row :gutter="20">
  101. <el-col :span="4">
  102. <el-form-item label="工单编号" prop="id">
  103. <el-input v-model="formData.jjcp_gdbh" id="工单编号" @keydown="ent($event, '单据编号', '工单编号', '印件号')" @keyup.enter.native="getGDsubmit" :clearable="true" placeholder="" />
  104. </el-form-item>
  105. </el-col>
  106. <el-col :span="6">
  107. <el-form-item label="印件号" prop="name">
  108. <el-row :gutter="20">
  109. <el-col :span="12">
  110. <el-input v-model="formData.jjcp_yjno" id="印件号" @keydown="ent($event, '工单编号', '印件号', '订单编号')" :clearable="true" placeholder="" />
  111. </el-col>
  112. </el-row>
  113. </el-form-item>
  114. </el-col>
  115. <el-col :span="10">
  116. <el-form-item label="订单编号" prop="name">
  117. <el-row :gutter="20">
  118. <el-col :span="20">
  119. <el-input v-model="formData.订单编号" id="订单编号" @keydown="ent($event, '印件号', '订单编号', '印件编号')" :clearable="true" placeholder="" />
  120. </el-col>
  121. </el-row>
  122. </el-form-item>
  123. </el-col>
  124. </el-row>
  125. <el-row :gutter="20">
  126. <el-col :span="4">
  127. <el-form-item label="印件编号" prop="id">
  128. <el-input v-model="formData.jjcp_cpdh" id="印件编号" @keydown="ent($event, '订单编号', '印件编号', 'jjcp_cpmc')" :clearable="true" placeholder="" />
  129. </el-form-item>
  130. </el-col>
  131. <el-col :span="10">
  132. <el-input v-model="formData.jjcp_cpmc" id="jjcp_cpmc" @keydown="ent($event, '印件编号', 'jjcp_cpmc', '产品编号')" :clearable="true" placeholder="" />
  133. </el-col>
  134. </el-row>
  135. <el-row :gutter="20">
  136. <el-col :span="4">
  137. <el-form-item label="产品编号" prop="id">
  138. <el-input v-model="formData.成品编码" id="产品编号" @keydown="ent($event, 'jjcp_cpmc', '产品编号', '成品名称')" @keyup.enter.native="getSLsubmit" :clearable="true" placeholder="" />
  139. </el-form-item>
  140. </el-col>
  141. <el-col :span="10">
  142. <el-input v-model="formData.成品名称" id="成品名称" @keydown="ent($event, '产品编号', '成品名称', '客户料号')" :clearable="true" placeholder="" />
  143. </el-col>
  144. </el-row>
  145. <el-row :gutter="20">
  146. <el-col :span="4">
  147. <el-form-item label="客户料号" prop="id">
  148. <el-input v-model="formData.客户料号" id="客户料号" @keydown="ent($event, '成品名称', '客户料号', '首末版')" :clearable="true" placeholder="" />
  149. </el-form-item>
  150. </el-col>
  151. </el-row>
  152. <el-row :gutter="20">
  153. <el-col :span="4">
  154. <el-form-item label="首末版" prop="id">
  155. <el-select v-model="formData.jjcp_smb" placeholder="" style="width: 190px;" id="首末版"
  156. @keydown="ent($event, '客户料号', '首末版', '入仓时间')"
  157. >
  158. <el-option label="首 版" value="首 版"></el-option>
  159. <el-option label="末 板" value="末 板"></el-option>
  160. <el-option label="首末板" value="首末板"></el-option>
  161. </el-select>
  162. <!-- <el-input v-model="formData.jjcp_smb" id="首末版" @keydown="ent($event, '客户料号', '首末版', '入仓时间')" :clearable="true" placeholder="" /> -->
  163. </el-form-item>
  164. </el-col>
  165. <el-col :span="4">
  166. <el-form-item label="入仓时间" prop="id">
  167. <el-input v-model="formData.jjcp_sj" id="入仓时间" @keydown="ent($event, '首末版', '入仓时间', '入仓数量')" :clearable="true" placeholder="" />
  168. </el-form-item>
  169. </el-col>
  170. </el-row>
  171. <el-row :gutter="20">
  172. <el-col :span="4">
  173. <el-form-item label="入仓数量" prop="id">
  174. <el-input v-model="formData.jjcp_sl" id="入仓数量" @keydown="ent($event, '入仓时间', '入仓数量', '入仓单位')" :clearable="true" placeholder="" />
  175. </el-form-item>
  176. </el-col>
  177. <el-col :span="4">
  178. <el-form-item label="入仓单位" prop="id">
  179. <el-input v-model="formData.jjcp_dw" id="入仓单位" @keydown="ent($event, '入仓数量', '入仓单位', '订单数量')" :clearable="true" placeholder="" />
  180. </el-form-item>
  181. </el-col>
  182. </el-row>
  183. <el-row :gutter="20">
  184. <el-col :span="4">
  185. <el-form-item label="订单数量" prop="id">
  186. <el-input v-model="formData.订单数量" id="订单数量" @keydown="ent($event, '入仓单位', '订单数量', '已完工')" :clearable="true" placeholder="" />
  187. </el-form-item>
  188. </el-col>
  189. <el-col :span="4">
  190. <el-form-item label="已完工" prop="id">
  191. <el-input v-model="formData.jjcp_sls" id="已完工" @keydown="ent($event, '订单数量', '已完工', '机型备注')" :clearable="true" placeholder="" />
  192. </el-form-item>
  193. </el-col>
  194. <el-col :span="4">
  195. <el-form-item label="机型备注" prop="id">
  196. <el-input v-model="formData.机型备注" id="机型备注" @keydown="ent($event, '已完工', '机型备注', '入仓备注')" :clearable="true" placeholder="" />
  197. </el-form-item>
  198. </el-col>
  199. </el-row>
  200. <el-row :gutter="20">
  201. <el-col :span="4">
  202. <el-form-item label="入仓备注" prop="id">
  203. <el-input v-model="formData.jjcp_desc" id="入仓备注" @keydown="ent($event, '机型备注', '入仓备注', '入仓类型')":clearable="true" placeholder="" />
  204. </el-form-item>
  205. </el-col>
  206. </el-row>
  207. </el-form>
  208. <!-- </el-scrollbar> -->
  209. <template #footer>
  210. <div class="dialog-footer">
  211. <el-button @click="closeDialog">取 消</el-button>
  212. <el-button type="primary" @click="enterDialog">确 定</el-button>
  213. </div>
  214. </template>
  215. </el-dialog>
  216. <el-dialog
  217. v-model="CKVisible"
  218. title="选择"
  219. destroy-on-close
  220. width="600px"
  221. >
  222. <el-table
  223. tooltip-effect="dark"
  224. :data="CKselectData"
  225. row-key="ID"
  226. highlight-current-row="true"
  227. border
  228. style="width:100%"
  229. @row-dblclick="CKSelectClick"
  230. >
  231. <el-table-column
  232. prop="编号"
  233. label="编号"
  234. width="200"
  235. />
  236. <el-table-column
  237. prop="名称"
  238. label="名称"
  239. width="200"
  240. />
  241. </el-table>
  242. </el-dialog>
  243. <el-dialog
  244. v-model="GDVisible"
  245. title="选择"
  246. destroy-on-close
  247. width="600px"
  248. >
  249. <el-table
  250. tooltip-effect="dark"
  251. :data="GDselectData"
  252. row-key="ID"
  253. highlight-current-row="true"
  254. border
  255. style="width:100%"
  256. @row-dblclick="GDSelectClick"
  257. >
  258. <el-table-column
  259. prop="gdyj"
  260. label="工单印件"
  261. width="600"
  262. />
  263. <el-table-column
  264. prop="Gd_gdbh"
  265. label="工单编号"
  266. width="200"
  267. />
  268. <el-table-column
  269. prop="yj_yjno"
  270. label="印件号"
  271. width="200"
  272. />
  273. <el-table-column
  274. prop="销售订单号"
  275. label="销售订单号"
  276. width="200"
  277. />
  278. <el-table-column
  279. prop="yj_Yjdh"
  280. label="印件编码"
  281. width="200"
  282. />
  283. <el-table-column
  284. prop="yj_yjmc"
  285. label="印件名称"
  286. width="200"
  287. />
  288. <el-table-column
  289. prop="成品代号"
  290. label="成品代号"
  291. width="200"
  292. />
  293. <el-table-column
  294. prop="成品名称"
  295. label="成品名称"
  296. width="200"
  297. />
  298. <el-table-column
  299. prop="客户料号"
  300. label="客户料号"
  301. width="200"
  302. />
  303. </el-table>
  304. </el-dialog>
  305. <el-dialog
  306. v-model="TJVisible"
  307. title="各日统计"
  308. destroy-on-close
  309. width="80%px;"
  310. style="height: 80%;"
  311. >
  312. <el-row :gutter="20">
  313. <el-col :span="41">
  314. <el-form-item label="关键字" prop="id">
  315. <el-input v-model="keywords" :clearable="true" placeholder="2023.12.14" />
  316. </el-form-item>
  317. </el-col>
  318. </el-row>
  319. <el-table
  320. tooltip-effect="dark"
  321. :data="TJselectData"
  322. row-key="ID"
  323. highlight-current-row="true"
  324. border
  325. style="width:100%"
  326. height="300px"
  327. @row-dblclick="TJSelectClick"
  328. >
  329. <el-table-column
  330. prop="jjcp_sj"
  331. label="完工日期"
  332. width="200"
  333. />
  334. <el-table-column
  335. prop="jjcp_gdbh"
  336. label="工单编号"
  337. width="200"
  338. />
  339. <el-table-column
  340. prop="jjcp_cpmc"
  341. label="印件(产品名称)"
  342. width="200"
  343. />
  344. <el-table-column
  345. prop="实际投料"
  346. label="实际投料"
  347. width="200"
  348. />
  349. <el-table-column
  350. prop="入仓数量"
  351. label="入仓数量"
  352. width="200"
  353. />
  354. <el-table-column
  355. prop="投入产出率"
  356. label="投入产出率"
  357. width="200"
  358. />
  359. </el-table>
  360. </el-dialog>
  361. <el-dialog
  362. v-model="SMVisible"
  363. title="选择"
  364. destroy-on-close
  365. width="600px"
  366. >
  367. <el-table
  368. tooltip-effect="dark"
  369. :data="SMselectData"
  370. row-key="ID"
  371. highlight-current-row="true"
  372. border
  373. style="width:100%"
  374. @row-dblclick="SMSelectClick"
  375. >
  376. <el-table-column
  377. prop="gdyj"
  378. label="工单编号"
  379. width="180"
  380. />
  381. <el-table-column
  382. prop="Gd_gdbh"
  383. label="印件号"
  384. width="200"
  385. />
  386. <el-table-column
  387. prop="yj_yjno"
  388. label="印件名称"
  389. width="200"
  390. />
  391. <el-table-column
  392. prop="销售订单号"
  393. label="计划交货数量"
  394. width="200"
  395. />
  396. <el-table-column
  397. prop="yj_Yjdh"
  398. label="印件投料"
  399. width="200"
  400. />
  401. <el-table-column
  402. prop="yj_yjmc"
  403. label="包装产量"
  404. width="200"
  405. />
  406. <el-table-column
  407. prop="成品代号"
  408. label="入仓数量"
  409. width="200"
  410. />
  411. <el-table-column
  412. prop="成品名称"
  413. label="缺数"
  414. width="200"
  415. />
  416. <el-table-column
  417. prop="客户料号"
  418. label="完工"
  419. width="200"
  420. />
  421. <el-table-column
  422. prop="客户料号"
  423. label="最近入仓时间"
  424. width="200"
  425. />
  426. </el-table>
  427. </el-dialog>
  428. </el-main>
  429. </el-container>
  430. </el-container>
  431. </div>
  432. </template>
  433. <script setup>
  434. import {
  435. finishedTab,
  436. finishedTabByGdbh,
  437. finishedList,
  438. finishedlocate,
  439. finishedInfo,
  440. finishedgetCk,
  441. finishedgetGd,
  442. finishedgetGdsl,
  443. finisheddel,
  444. getDayList,
  445. mbList,
  446. finishedadd
  447. } from '@/api/jixiaoguanli/jitairibaobiao'
  448. // 全量引入格式化工具 请按需保留
  449. import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
  450. import { ElMessage, ElMessageBox } from 'element-plus'
  451. import { Search, Refresh, Download } from '@element-plus/icons-vue'
  452. import { ref, reactive, onMounted, onBeforeMount } from 'vue'
  453. import { getPackingSideTable, getPackingTable } from '@/api/mes_api_gty/myapi'
  454. import { TRUE } from 'sass'
  455. defineOptions({
  456. name: '06-packingDocuments'
  457. })
  458. // 侧边栏数据请求
  459. const treeData = reactive([]);
  460. const getTabdata = async () => {
  461. //接口调用函数
  462. const response = await finishedTab();
  463. console.log(response)
  464. const transformedData = response.data.map(item => ({
  465. label: `${item.date.replace(/-/g, '.')}【单据数: ${item.counts}张】`,
  466. children: item.sys.map(sysItem => ({
  467. label: `${sysItem.sys_id} 【记录数: ${sysItem.count}张】`,
  468. params: {
  469. date: item.date.replace(/\./g, '-'),
  470. sys_id: sysItem.sys_id,
  471. total: sysItem.count,
  472. },
  473. })),
  474. }));
  475. treeData.splice(0, treeData.length, ...transformedData);
  476. }
  477. getTabdata();
  478. // 自动化生成的字典(可能为空)以及字段
  479. const formData = ref({
  480. })
  481. // 验证规则
  482. const rule = reactive({
  483. })
  484. const elFormRef = ref()
  485. const elSearchFormRef = ref()
  486. // =========== 表格控制部分 ===========
  487. const tableData = reactive([])
  488. const detailData = reactive([
  489. ])
  490. const total = ref(0)
  491. const page = ref(1)
  492. const limit = ref(10)
  493. const searchInfo = ref('')
  494. const params = {
  495. type: '',
  496. date: '',
  497. sys_id: '',
  498. gdbh: '',
  499. }
  500. // 分页设置
  501. const handleSizeChange = (val) => {
  502. switch (params.type) {
  503. case 'getTableData':
  504. getTableData()
  505. break
  506. case 'getLocateTable':
  507. GetmachineLocate()
  508. break
  509. default:
  510. break
  511. }
  512. }
  513. // 页面跳转
  514. const handleCurrentChange = (val) => {
  515. switch (params.type) {
  516. case 'getTableData':
  517. getTableData()
  518. break
  519. case 'getLocateTable':
  520. GetmachineLocate()
  521. break
  522. default:
  523. break
  524. }
  525. }
  526. // 查询
  527. const getTableData = async () => {
  528. const response = await finishedList(params);
  529. console.log(response)
  530. if (response.code === 0) {
  531. tableData.splice(0, tableData.length, ...response.data.rows);
  532. }
  533. }
  534. const handleNodeClick = (node, check) => {
  535. //存放当前节点的nodeId
  536. if (node.params) {
  537. params.date = node.params.date;
  538. params.sys_id = node.params.sys_id;
  539. total.value = node.params.total;
  540. getTableData();
  541. }
  542. }
  543. let positionvalue=ref()
  544. let keywords=ref()
  545. // 搜索
  546. function onSearch() {
  547. params.gdbh = positionvalue.value
  548. params.type = 'getLocateTable'
  549. page.value = 1
  550. GetmachineLocate()
  551. }
  552. const ADD=ref('0')
  553. //新增
  554. function onAdd() {
  555. GetInfo(lastCellValue)
  556. ADD.value='新增'
  557. type.value='create'
  558. console.log(ADD.value)
  559. dialogFormVisible.value = true
  560. // Productionadd()
  561. }
  562. //删除
  563. function onDel() {
  564. Del()
  565. }
  566. //删除
  567. const Del = async () => {
  568. const response = await finisheddel({UniqId:lastCellValue});
  569. if (response.code === 0) {
  570. ElMessage({
  571. type: 'success',
  572. message: '删除成功',
  573. })
  574. }
  575. getTableData()
  576. }
  577. const TJVisible = ref(false)
  578. const TJselectData = ref([]);
  579. //每日统计
  580. function onDay() {
  581. GetDayList()
  582. TJVisible.value=true
  583. }
  584. const GetDayList = async (value) => {
  585. const response = await getDayList({key_word:'',page:page.value,limit:limit.value});
  586. console.log(response.data)
  587. if (response.code === 0) {
  588. TJselectData.value=response.data.rows
  589. console.log(TJselectData)
  590. }
  591. }
  592. const SMVisible = ref(false)
  593. const SMselectData = ref([]);
  594. //首末版统计
  595. function onSMB() {
  596. MbList()
  597. SMVisible.value=true
  598. }
  599. const MbList = async (value) => {
  600. const response = await mbList({page:page.value,limit:limit.value});
  601. console.log(response.data)
  602. if (response.code === 0) {
  603. SMselectData.value=response.data.rows
  604. console.log(TJselectData)
  605. }
  606. }
  607. //定位
  608. const GetmachineLocate = async () => {
  609. const response = await finishedlocate({
  610. gdbh: params.gdbh,
  611. page: page.value.toString(), limit: limit.value.toString(),
  612. })
  613. console.log(response)
  614. if (response.code === 0) {
  615. const processedData = response.data.rows.map(item => {
  616. return {
  617. ...item,
  618. combinedProp: item.sczl_gdbh + '--'+item.yj_yjmc,
  619. combinedProp2: item.sczl_yjgx + '-'+item.sczl_gxmc
  620. };
  621. });
  622. total.value = response.data.total
  623. tableData.splice(0, tableData.length, ...processedData);
  624. }
  625. }
  626. //仓库编号回车事件
  627. const getCKsubmit = (event) => {
  628. GetCK()
  629. }
  630. const CKVisible = ref(false)
  631. const CKselectData = reactive([])
  632. //获取仓库信息
  633. const GetCK = async () => {
  634. const response = await finishedgetCk();
  635. console.log(response)
  636. if (response.code === 0) {
  637. CKselectData.splice(0, CKselectData.length, ...response.data)
  638. CKVisible.value=true
  639. }
  640. }
  641. //选择
  642. const CKSelectClick = (row, column, event) => {
  643. const { 编号,名称 } = row
  644. formData.value.仓库编号=编号
  645. formData.value.仓库名称=名称
  646. CKVisible.value = false
  647. }
  648. //工单编号回车事件
  649. const getGDsubmit = (event) => {
  650. GetGD()
  651. }
  652. const GDVisible = ref(false)
  653. const GDselectData = reactive([])
  654. //获取工单信息
  655. const GetGD = async () => {
  656. console.log(formData.value.jjcp_gdbh)
  657. const response = await finishedgetGd({gdbh:formData.value.jjcp_gdbh});
  658. console.log(response)
  659. if (response.code === 0) {
  660. GDselectData.splice(0, GDselectData.length, ...response.data)
  661. GDVisible.value=true
  662. }
  663. }
  664. //选择
  665. const GDSelectClick = (row, column, event) => {
  666. const { Gd_gdbh,yj_yjno,销售订单号,yj_Yjdh,yj_yjmc,成品代号,成品名称,客户料号,gdyj } = row
  667. formData.value.jjcp_gdbh=Gd_gdbh
  668. formData.value.jjcp_yjno=yj_yjno
  669. formData.value.订单编号=销售订单号
  670. formData.value.jjcp_cpdh=yj_Yjdh
  671. formData.value.jjcp_cpmc=yj_yjmc
  672. formData.value.成品编码=成品代号
  673. formData.value.成品名称=成品名称
  674. formData.value.客户料号=客户料号
  675. GDVisible.value = false
  676. }
  677. //产品编号回车事件
  678. const getSLsubmit = (event) => {
  679. GetSL()
  680. }
  681. //获取工单数量信息
  682. const GetSL = async () => {
  683. console.log(formData.value.jjcp_gdbh)
  684. const response = await finishedgetGdsl({gdbh:formData.value.jjcp_gdbh,cpdh:formData.value.jjcp_cpdh});
  685. console.log(response)
  686. if (response.code === 0) {
  687. formData.value.订单数量=response.data.订单数量
  688. formData.value.jjcp_sls=response.data.jjcp_sls
  689. }
  690. }
  691. // ============== 表格控制部分结束 ===============
  692. // 获取需要的字典 可能为空 按需保留
  693. const setOptions = async () => {}
  694. // 获取需要的字典 可能为空 按需保留
  695. setOptions()
  696. // 多选数据
  697. const multipleSelection = ref([])
  698. // 多选
  699. const handleSelectionChange = (val) => {
  700. if(val.length>0){
  701. // multipleSelection.value = val
  702. const lenth=val.length
  703. // ScrapFactor.gdbh=val[lenth-1].combinedProp.split('-')[0];
  704. // const parts = val[lenth-1].combinedProp2.split('-')
  705. // ScrapFactor.yjno=parts[0];
  706. // ScrapFactor.gxh=parts[1];
  707. // ScrapFactor.type=val[lenth-1].sczl_检验类别
  708. // console.log(ScrapFactor)
  709. lastCellValue=val[lenth-1].UniqId
  710. console.log(val)
  711. val.splice(0, val.length); // 清空 val 数组
  712. console.log(lastCellValue)
  713. }
  714. }
  715. // 批量删除控制标记
  716. const deleteVisible = ref(false)
  717. // 多选删除
  718. const onDelete = async () => {
  719. const ids = []
  720. if (multipleSelection.value.length === 0) {
  721. ElMessage({
  722. type: 'warning',
  723. message: '请选择要删除的数据'
  724. })
  725. return
  726. }
  727. multipleSelection.value &&
  728. multipleSelection.value.map(item => {
  729. ids.push(item.ID)
  730. })
  731. const res = await deleteCompanyByIds({ ids })
  732. if (res.code === 0) {
  733. ElMessage({
  734. type: 'success',
  735. message: '删除成功'
  736. })
  737. if (tableData.value.length === ids.length && page.value > 1) {
  738. page.value--
  739. }
  740. deleteVisible.value = false
  741. getTableData()
  742. }
  743. }
  744. // 行为控制标记(弹窗内部需要增还是改)
  745. const type = ref('')
  746. // 更新行
  747. const updateCompanyFunc = async (row) => {
  748. const res = await findCompany({ ID: row.ID })
  749. type.value = 'update'
  750. if (res.code === 0) {
  751. formData.value = res.data.recompany
  752. dialogFormVisible.value = true
  753. }
  754. }
  755. // 弹窗控制标记
  756. const dialogFormVisible = ref(false)
  757. // 打开弹窗
  758. const openDialog = () => {
  759. type.value = 'create'
  760. dialogFormVisible.value = true
  761. }
  762. // 关闭弹窗
  763. const closeDialog = () => {
  764. dialogFormVisible.value = false
  765. formData.value = {
  766. address: '',
  767. image: '',
  768. name: '',
  769. }
  770. }
  771. // 弹窗确定
  772. const enterDialog = async () => {
  773. // elFormRef.value?.validate(async (valid) => {
  774. // if (!valid) return
  775. // let res
  776. // switch (type.value) {
  777. // case 'create':
  778. // res = await createCompany(formData.value)
  779. // break
  780. // case 'update':
  781. // res = await updateCompany(formData.value)
  782. // break
  783. // default:
  784. // res = await createCompany(formData.value)
  785. // break
  786. // }
  787. // if (res.code === 0) {
  788. // ElMessage({
  789. // type: 'success',
  790. // message: '创建/更改成功'
  791. // })
  792. // closeDialog()
  793. // getTableData()
  794. // }
  795. // })
  796. // dialogFormVisible.value=false
  797. updateDetailData()
  798. }
  799. // 更新数据
  800. const updateDetailData = async() => {
  801. const restoredData = {
  802. UniqId: lastCellValue,
  803. Sys_id:'[1035/刘晓庆]',
  804. 入仓类型:formData.value.入仓类型,
  805. 仓库编号:formData.value.仓库编号,
  806. 仓库名称:formData.value.仓库名称,
  807. jjcp_num:formData.value.jjcp_num,
  808. jjcp_gdbh:formData.value.jjcp_gdbh,
  809. jjcp_yjno:formData.value.jjcp_yjno,
  810. 订单编号:formData.value.订单编号,
  811. jjcp_cpdh:formData.value.jjcp_cpdh,
  812. jjcp_cpmc:formData.value.jjcp_cpmc,
  813. 成品编码:formData.value.成品编码,
  814. 成品名称:formData.value.成品名称,
  815. 客户料号:formData.value.客户料号,
  816. jjcp_smb:formData.value.jjcp_smb,
  817. jjcp_sj:formData.value.jjcp_sj,
  818. jjcp_sl:formData.value.jjcp_sl,
  819. jjcp_dw:formData.value.jjcp_dw,
  820. 机型备注:formData.value.机型备注,
  821. jjcp_desc:formData.value.jjcp_desc,
  822. }
  823. if(ADD.value=='新增'){
  824. // console.log('新增')
  825. console.log('新增')
  826. console.log(ADD.value)
  827. console.log(restoredData)
  828. const response = await finishedadd(restoredData);
  829. // ADD.value='1'
  830. // console.log(ADD.value)
  831. // ADD.value='0'
  832. console.log(response)
  833. if(response.code==0){
  834. ElMessage({
  835. type: 'success',
  836. message: '新增成功',
  837. })
  838. }
  839. dialogFormVisible.value = false
  840. getTableData()
  841. }else{
  842. // const response = await productionedit(restoredData);
  843. console.log('修改')
  844. console.log(ADD.value)
  845. // console.log(response)
  846. // ADD.value='0'
  847. // console.log(ADD.value)
  848. }
  849. // console.log(restoredData)
  850. // console.log(lastCellValue)
  851. // formData.value.UniqId=lastCellValue
  852. // console.log(formData)
  853. // restoredData.UniqId='5'
  854. // console.log(FormData)
  855. // console.log(response)
  856. }
  857. //键盘 input框跳转
  858. const ent = (event,id1,id2,id3) => {
  859. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  860. if(id2=='仓库编号'&&event.keyCode === 13){
  861. getCKsubmit()
  862. }if(id2=='工单编号'&&event.keyCode === 13){
  863. getGDsubmit()
  864. }if(id2=='产品编号'&&event.keyCode === 13){
  865. getSLsubmit()
  866. }else if(id3!=''){
  867. document.getElementById(id3).focus()
  868. }
  869. } else if (event.keyCode === 38) { // 向上箭头
  870. if(id1!=''){
  871. document.getElementById(id1).focus()
  872. }
  873. }else if (event.keyCode === 8) { // 删除箭头
  874. if(id1!='' && document.getElementById(id2).value==''){
  875. document.getElementById(id1).focus()
  876. }
  877. console.log(document.getElementById(id2).value)
  878. }else if (event.keyCode === 37) { // 向左箭头
  879. if(id1!='' && document.getElementById(id2).selectionStart==0){
  880. document.getElementById(id1).focus()
  881. }
  882. }else if (event.keyCode === 39) { // 向右箭头
  883. if(id3!='' && document.getElementById(id2).selectionStart == document.getElementById(id2).value.length){
  884. document.getElementById(id3).focus()
  885. }
  886. }
  887. }
  888. let table=ref(5);
  889. let lastCellValue=ref()
  890. // 双击表格操作
  891. function doubleClick(row, column, event) {
  892. type.value = 'update';
  893. lastCellValue= row['UniqId'];
  894. console.log(lastCellValue)
  895. table.value=lastCellValue
  896. dialogFormVisible.value = true
  897. // dialogSelectVisible.value = true
  898. GetInfo(table.value)
  899. // dialogFormVisible.value = true
  900. }
  901. // 单击表格操作
  902. function Click(row, column, event) {
  903. lastCellValue= row['UniqId'];
  904. console.log(lastCellValue)
  905. }
  906. //获取详细信息
  907. const GetInfo = async (value) => {
  908. const response = await finishedInfo({UniqId:value});
  909. console.log(response)
  910. if (response.code === 0) {
  911. formData.value=response.data;
  912. }
  913. }
  914. // 导出excel
  915. function exportExcel() {
  916. console.log('导出到excel');
  917. }
  918. function openFolderDialog() {
  919. console.log('导出到excel');
  920. }
  921. // 生命周期钩子
  922. onMounted(async () => {
  923. });
  924. </script>
  925. <style>
  926. .JKWTree-container {
  927. display: flex;
  928. }
  929. .JKWTree-tree {
  930. width: 300px;
  931. background-color: #fff;
  932. padding: 10px;
  933. margin-right: 20px;
  934. }
  935. .JKWTree-tree h3 {
  936. font-size: 15px;
  937. font-weight: 700;
  938. margin: 10px 0;
  939. }
  940. .JKWTree-content {
  941. flex: 1;
  942. }
  943. /* 选中某行时的背景色*/
  944. .el-table__body tr.current-row>td {
  945. background: #ff80ff !important;
  946. /* 背景颜色 */
  947. }
  948. </style>