Packagingoutput.vue 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080
  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" :icon="Refresh">重置</el-button>
  22. <el-button type="primary" :icon="Search" @click="positioningVisible">定位</el-button>
  23. <el-button type="primary" :icon="Search" @click="onAdd">新增</el-button>
  24. <el-button type="primary" :icon="Delete" @click="Del">删除</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"
  31. highlight-current-row="true" :cell-style="cellStyle" border @selection-change="handleSelectionChange"
  32. :show-overflow-tooltip="true" @row-click="Click" @row-dblclick="doubleClick">
  33. <el-table-column type="selection" width="55" />
  34. <!-- <el-table-column align="left" label="创建用户" prop="sys_id" width="120" />
  35. <el-table-column align="left" label="日期" prop="sczl_rq" width="120"/>
  36. <el-table-column align="left" label="包装产量" prop="sczl_cl" width="120"/>
  37. <el-table-column align="left" label="包装数量" prop="sczl_PgCl" width="120"/>
  38. <el-table-column align="left" label="创建时间" prop="sys_rq" width="160"/>
  39. <el-table-column align="left" label="修改时间" prop="mod_rq" width="160"/>
  40. <el-table-column align="left" label="UNIQID" prop="UniqId" width="120"/> -->
  41. <!-- 循环渲染列 -->
  42. <el-table-column
  43. v-for=" column in tableColumns "
  44. :key="column.prop"
  45. :prop="column.prop"
  46. :label="column.label"
  47. :width="column.width"
  48. show-overflow-tooltip="true"
  49. />
  50. </el-table>
  51. <!-- 分页 -->
  52. <div class="gva-pagination">
  53. <el-pagination layout="total, sizes, prev, pager, next, jumper" v-model:current-page="page"
  54. v-model:page-size="limit"
  55. :page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
  56. @size-change="handleSizeChange" />
  57. </div>
  58. </div>
  59. <!-- 弹出框 -->
  60. <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="type === 'create' ? '添加' : '修改'"
  61. destroy-on-close width="1200px">
  62. <!-- <el-scrollbar height="500px"> -->
  63. <el-form :model="gdbhformData" label-position="left" ref="elFormRef" :rules="rule">
  64. <el-row :gutter="20">
  65. <el-col :span="6">
  66. <el-form-item label="日期" prop="name">
  67. <el-row :gutter="20">
  68. <el-col :span="12">
  69. <el-input v-model="sczl_rqValue" :clearable="true" placeholder="" />
  70. </el-col>
  71. </el-row>
  72. </el-form-item>
  73. </el-col>
  74. </el-row>
  75. <el-table
  76. :data="detailData.table"
  77. border
  78. tooltip-effect="dark"
  79. :row-style="{ height: '20px' }"
  80. :cell-style="{ padding: '0px' }"
  81. :header-row-style="{ height: '20px' }"
  82. :header-cell-style="{ padding: '0px' }"
  83. >
  84. <el-table-column
  85. label="工单编号"
  86. width="100"
  87. >
  88. <template #default="{ row, $index }">
  89. <el-input
  90. v-model="row.sczl_gdbh"
  91. id="工单编号" @keydown="ent($event, '零头', '工单编号', '印件工序')"
  92. @keyup.enter="handleEnter($index, row)"
  93. />
  94. </template>
  95. </el-table-column>
  96. <el-table-column
  97. label="印件工序"
  98. width="100"
  99. >
  100. <template #default="{ row }">
  101. <el-input v-model="row.sczl_yjGx" id="印件工序" @keydown="ent($event, '工单编号', '印件工序', '工序名称')" />
  102. </template>
  103. </el-table-column>
  104. <el-table-column
  105. label="工序名称"
  106. width="100"
  107. >
  108. <template #default="{ row }">
  109. <el-input v-model="row.sczl_gxmc" id="工序名称" @keydown="ent($event, '印件工序', '工序名称', '印件名称')"/>
  110. </template>
  111. </el-table-column>
  112. <el-table-column label="印件名称">
  113. <template #default="{ row }">
  114. <el-input v-model="row.Gd_cpmc" id="印件名称" @keydown="ent($event, '工序名称', '印件名称', '包装产量')" />
  115. </template>
  116. </el-table-column>
  117. <el-table-column
  118. label="包装产量"
  119. width="100"
  120. >
  121. <template #default="{ row }">
  122. <el-input v-model="row.sczl_cl" id="包装产量" @keydown="ent($event, '印件名称', '包装产量', '每箱数量')" />
  123. </template>
  124. </el-table-column>
  125. <el-table-column
  126. label="每箱数量"
  127. width="100"
  128. >
  129. <template #default="{ row }">
  130. <el-input v-model="row.sczl_PgCl" id="每箱数量" @keydown="ent($event, '包装产量', '每箱数量', '零头')" />
  131. </template>
  132. </el-table-column>
  133. <el-table-column
  134. label="零头"
  135. width="100"
  136. >
  137. <template #default="{ row }">
  138. <el-input v-model="row.sczl_clAdd" id="零头" @keydown="ent($event, '每箱数量', '零头', '工单编号')" />
  139. </template>
  140. </el-table-column>
  141. </el-table>
  142. <!-- 标题栏 -->
  143. <!-- <el-row :gutter="10">
  144. <el-col :span="3">
  145. <span>工单编号</span>
  146. </el-col>
  147. <el-col :span="3">
  148. <span>印件工序</span>
  149. </el-col>
  150. <el-col :span="3">
  151. <span>工序名称</span>
  152. </el-col>
  153. <el-col :span="9">
  154. <span>印件名称</span>
  155. </el-col>
  156. <el-col :span="2">
  157. <span>包装产量</span>
  158. </el-col>
  159. <el-col :span="2">
  160. <span>每箱数量</span>
  161. </el-col>
  162. <el-col :span="2">
  163. <span>零头</span>
  164. </el-col>
  165. </el-row> -->
  166. <!-- 员工1 -->
  167. <!-- <el-row :gutter="5" style="margin-top: 10px;">
  168. <el-col :span="3">
  169. <el-input v-model="formData.sczl_gdbh1" :clearable="true" @keyup.enter.native="getGxMcsubmit($event, '1')" placeholder="ZI00401" />
  170. </el-col>
  171. <el-col :span="3">
  172. <el-input v-model="formData.sczl_yjGx1" :clearable="true" placeholder="瞿春生" />
  173. </el-col>
  174. <el-col :span="3">
  175. <el-input v-model="formData.sczl_gxmc1" :clearable="true" placeholder="11.0" />
  176. </el-col>
  177. <el-col :span="9">
  178. <el-input v-model="formData.Gd_cpmc1" :clearable="true" placeholder="打包废纸" />
  179. </el-col>
  180. <el-col :span="2">
  181. <el-input v-model="formData.sczl_cl1" :clearable="true" placeholder="是" />
  182. </el-col>
  183. <el-col :span="2">
  184. <el-input v-model="formData.sczl_PgCl1" :clearable="true" placeholder="是" />
  185. </el-col>
  186. <el-col :span="2">
  187. <el-input v-model="formData.sczl_clAdd1" :clearable="true" placeholder="是" />
  188. </el-col>
  189. </el-row> -->
  190. <!-- 员工2 -->
  191. <!-- <el-row :gutter="5" style="margin-top: 10px;">
  192. <el-col :span="3">
  193. <el-input v-model="formData.sczl_gdbh2" :clearable="true" @keyup.enter.native="getGxMcsubmit($event, '2')" placeholder="ZI00401" />
  194. </el-col>
  195. <el-col :span="3">
  196. <el-input v-model="formData.sczl_yjGx2" :clearable="true" placeholder="瞿春生" data-="" />
  197. </el-col>
  198. <el-col :span="3">
  199. <el-input v-model="formData.sczl_gxmc2" :clearable="true" placeholder="11.0" />
  200. </el-col>
  201. <el-col :span="9">
  202. <el-input v-model="formData.Gd_cpmc2" :clearable="true" placeholder="打包废纸" />
  203. </el-col>
  204. <el-col :span="2">
  205. <el-input v-model="formData.sczl_cl2" :clearable="true" placeholder="是" />
  206. </el-col>
  207. <el-col :span="2">
  208. <el-input v-model="formData.sczl_PgCl2" :clearable="true" placeholder="是" />
  209. </el-col>
  210. <el-col :span="2">
  211. <el-input v-model="formData.sczl_clAdd2" :clearable="true" placeholder="是" />
  212. </el-col>
  213. </el-row> -->
  214. <!-- 员工3 -->
  215. <!-- <el-row :gutter="5" style="margin-top: 10px;">
  216. <el-col :span="3">
  217. <el-input v-model="formData.sczl_gdbh3" :clearable="true" @keyup.enter.native="getGxMcsubmit($event, '3')" placeholder="ZI00401" />
  218. </el-col>
  219. <el-col :span="3">
  220. <el-input v-model="formData.sczl_yjGx3" :clearable="true" placeholder="瞿春生" data-="" />
  221. </el-col>
  222. <el-col :span="3">
  223. <el-input v-model="formData.sczl_gxmc3" :clearable="true" placeholder="11.0" />
  224. </el-col>
  225. <el-col :span="9">
  226. <el-input v-model="formData.Gd_cpmc3" :clearable="true" placeholder="打包废纸" />
  227. </el-col>
  228. <el-col :span="2">
  229. <el-input v-model="formData.sczl_cl3" :clearable="true" placeholder="是" />
  230. </el-col>
  231. <el-col :span="2">
  232. <el-input v-model="formData.sczl_PgCl3" :clearable="true" placeholder="是" />
  233. </el-col>
  234. <el-col :span="2">
  235. <el-input v-model="formData.sczl_clAdd3" :clearable="true" placeholder="是" />
  236. </el-col>
  237. </el-row> -->
  238. <!-- 员工4 -->
  239. <!-- <el-row :gutter="5" style="margin-top: 10px;">
  240. <el-col :span="3">
  241. <el-input v-model="formData.sczl_gdbh4" :clearable="true" @keyup.enter.native="getGxMcsubmit($event, '4')" placeholder="ZI00401" />
  242. </el-col>
  243. <el-col :span="3">
  244. <el-input v-model="formData.sczl_yjGx4" :clearable="true" placeholder="瞿春生" data-="" />
  245. </el-col>
  246. <el-col :span="3">
  247. <el-input v-model="formData.sczl_gxmc4" :clearable="true" placeholder="11.0" />
  248. </el-col>
  249. <el-col :span="9">
  250. <el-input v-model="formData.Gd_cpmc4" :clearable="true" placeholder="打包废纸" />
  251. </el-col>
  252. <el-col :span="2">
  253. <el-input v-model="formData.sczl_cl4" :clearable="true" placeholder="是" />
  254. </el-col>
  255. <el-col :span="2">
  256. <el-input v-model="formData.sczl_PgCl4" :clearable="true" placeholder="是" />
  257. </el-col>
  258. <el-col :span="2">
  259. <el-input v-model="formData.sczl_clAdd4" :clearable="true" placeholder="是" />
  260. </el-col>
  261. </el-row>
  262. -->
  263. <!-- 员工5 -->
  264. <!-- <el-row :gutter="5" style="margin-top: 10px;">
  265. <el-col :span="3">
  266. <el-input v-model="formData.sczl_gdbh5" @keyup.enter.native="getGxMcsubmit($event, '5')" :clearable="true" placeholder="ZI00401" />
  267. </el-col>
  268. <el-col :span="3">
  269. <el-input v-model="formData.sczl_yjGx5" :clearable="true" placeholder="瞿春生" data-="" />
  270. </el-col>
  271. <el-col :span="3">
  272. <el-input v-model="formData.sczl_gxmc5" :clearable="true" placeholder="11.0" />
  273. </el-col>
  274. <el-col :span="9">
  275. <el-input v-model="formData.Gd_cpmc5" :clearable="true" placeholder="打包废纸" />
  276. </el-col>
  277. <el-col :span="2">
  278. <el-input v-model="formData.sczl_cl5" :clearable="true" placeholder="是" />
  279. </el-col>
  280. <el-col :span="2">
  281. <el-input v-model="formData.sczl_PgCl5" :clearable="true" placeholder="是" />
  282. </el-col>
  283. <el-col :span="2">
  284. <el-input v-model="formData.sczl_clAdd5" :clearable="true" placeholder="是" />
  285. </el-col>
  286. </el-row> -->
  287. <!-- 员工6 -->
  288. <!-- <el-row :gutter="5" style="margin-top: 10px;">
  289. <el-col :span="3">
  290. <el-input v-model="formData.sczl_gdbh6" :clearable="true" @keyup.enter.native="getGxMcsubmit($event, '6')" placeholder="ZI00401" />
  291. </el-col>
  292. <el-col :span="3">
  293. <el-input v-model="formData.sczl_yjGx6" :clearable="true" placeholder="瞿春生" data-="" />
  294. </el-col>
  295. <el-col :span="3">
  296. <el-input v-model="formData.sczl_gxmc6" :clearable="true" placeholder="11.0" />
  297. </el-col>
  298. <el-col :span="9">
  299. <el-input v-model="formData.Gd_cpmc6" :clearable="true" placeholder="打包废纸" />
  300. </el-col>
  301. <el-col :span="2">
  302. <el-input v-model="formData.sczl_cl6" :clearable="true" placeholder="是" />
  303. </el-col>
  304. <el-col :span="2">
  305. <el-input v-model="formData.sczl_PgCl6" :clearable="true" placeholder="是" />
  306. </el-col>
  307. <el-col :span="2">
  308. <el-input v-model="formData.sczl_clAdd6" :clearable="true" placeholder="是" />
  309. </el-col>
  310. </el-row> -->
  311. </el-form>
  312. <!-- </el-scrollbar> -->
  313. <template #footer>
  314. <div class="dialog-footer">
  315. <el-button @click="closeDialog">取 消</el-button>
  316. <el-button type="primary" @click="enterDialog">确 定</el-button>
  317. </div>
  318. </template>
  319. </el-dialog>
  320. <el-dialog v-model="positioningVisibleshow" :before-close="closepositioningVisible" :title="type==='create'?'添加':'修改'" destroy-on-close>
  321. <el-card>
  322. <el-form-item label="工单编号" prop="name">
  323. <el-row :gutter="20">
  324. <el-col :span="12">
  325. <el-input v-model="positionvalue" :clearable="true" placeholder="ZT01733" />
  326. </el-col>
  327. </el-row>
  328. </el-form-item>
  329. </el-card>
  330. <el-button type="primary" @click="enterpositioning">确 定</el-button>
  331. </el-dialog>
  332. <el-dialog v-model="getGxMcshow" :before-close="closegetGxMcshow" :title="type==='create'?'添加':'修改'" destroy-on-close>
  333. <el-table
  334. tooltip-effect="dark"
  335. :data="selectData"
  336. row-key="ID"
  337. highlight-current-row="true"
  338. border
  339. style="width:100%"
  340. @row-dblclick="handleSelectClick"
  341. >
  342. <el-table-column
  343. prop="Gd_cpmc"
  344. label="产品名称"
  345. width="300"
  346. />
  347. <el-table-column
  348. prop="Gy0_gxmc"
  349. label="产品名称"
  350. width="100"
  351. />
  352. <el-table-column
  353. prop="jyGx"
  354. label="产品名称"
  355. width="100"
  356. />
  357. </el-table>
  358. <template #footer>
  359. <div class="dialog-footer">
  360. <el-button @click="closegetGxMcshow">取 消</el-button>
  361. </div>
  362. </template>
  363. </el-dialog>
  364. </el-main>
  365. </el-container>
  366. </el-container>
  367. </div>
  368. </template>
  369. <script setup>
  370. import {
  371. getList,
  372. getTab,
  373. locate,
  374. getInfo,
  375. getGxMc,
  376. edit,
  377. del,
  378. packagingAdd
  379. } from '@/api/jixiaoguanli/jitairibaobiao'
  380. // 全量引入格式化工具 请按需保留
  381. import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
  382. import { ElMessage, ElMessageBox, LAST_KEYS } from 'element-plus'
  383. import { Search, Refresh, Download } from '@element-plus/icons-vue'
  384. import { ref, reactive, onMounted, onBeforeMount } from 'vue'
  385. import { getPackingSideTable, getPackingTable } from '@/api/mes_api_gty/myapi'
  386. defineOptions({
  387. name: '06-packingDocuments'
  388. })
  389. // 侧边栏数据请求
  390. const treeData = reactive([]);
  391. const getTabdata = async () => {
  392. //接口调用函数
  393. const response = await getTab();
  394. console.log(response)
  395. const transformedData = response.data.map(item => ({
  396. label: `${item.date.replace(/-/g, '.')}【单据数: ${item.counts}张】`,
  397. children: item.sys.map(sysItem => ({
  398. label: `${sysItem.sys_id} 【记录数: ${sysItem.count}张】`,
  399. params: {
  400. date: item.date.replace(/\./g, '-'),
  401. sys_id: sysItem.sys_id,
  402. total: sysItem.count,
  403. },
  404. })),
  405. }));
  406. treeData.splice(0, treeData.length, ...transformedData);
  407. }
  408. getTabdata();
  409. // 自动化生成的字典(可能为空)以及字段
  410. const formData = ref({
  411. sczl_rq: '',
  412. sczl_gdbh1: '',
  413. sczl_gdbh2: '',
  414. sczl_gdbh3: '',
  415. sczl_gdbh4: '',
  416. sczl_gdbh5: '',
  417. sczl_gdbh6: '',
  418. sczl_yjGx1: '',
  419. sczl_yjGx2: '',
  420. sczl_yjGx3: '',
  421. sczl_yjGx4: '',
  422. sczl_yjGx5: '',
  423. sczl_yjGx6: '',
  424. sczl_cl1: '',
  425. sczl_cl2: '',
  426. sczl_cl3: '',
  427. sczl_cl4: '',
  428. sczl_cl5: '',
  429. sczl_cl6: '',
  430. sczl_PgCl1:'',
  431. sczl_PgCl2: '',
  432. sczl_PgCl3: '',
  433. sczl_PgCl4: '',
  434. sczl_PgCl5: '',
  435. sczl_PgCl6: '',
  436. Gd_cpmc1: '',
  437. Gd_cpmc2: '',
  438. Gd_cpmc3: '',
  439. Gd_cpmc4: '',
  440. Gd_cpmc5: '',
  441. Gd_cpmc6: '',
  442. sczl_clAdd1: '',
  443. sczl_clAdd2: '',
  444. sczl_clAdd3: '',
  445. sczl_clAdd4: '',
  446. sczl_clAdd5:'',
  447. sczl_clAdd6: '',
  448. UniqId:'000',
  449. })
  450. const formData2 = ref({
  451. UniqId:'0',
  452. sczl_rq: '2025-01-01 00:00:00',
  453. sczl_gdbh1: '2311232',
  454. sczl_gdbh2: '2311232',
  455. sczl_gdbh3: '2311232',
  456. sczl_gdbh4: '2311232',
  457. sczl_gdbh5: '2311232',
  458. sczl_gdbh6: '2311232',
  459. sczl_yjGx1: '01-71',
  460. sczl_yjGx2: '01-71',
  461. sczl_yjGx3: '01-71',
  462. sczl_yjGx4: '01-71',
  463. sczl_yjGx5: '01-71',
  464. sczl_yjGx6: '01-71',
  465. sczl_gxmc1: '包装',
  466. sczl_gxmc2: '包装',
  467. sczl_gxmc3: '包装',
  468. sczl_gxmc4: '包装',
  469. sczl_gxmc5: '包装',
  470. sczl_gxmc6: '包装',
  471. sczl_cl1: '6.00',
  472. sczl_cl2: '6.00',
  473. sczl_cl3: '6.00',
  474. sczl_cl4: '6.00',
  475. sczl_cl5: '6.00',
  476. sczl_cl6: '6.00',
  477. sczl_PgCl1:'500',
  478. sczl_PgCl2: '500',
  479. sczl_PgCl3: '500',
  480. sczl_PgCl4: '500',
  481. sczl_PgCl5: '500',
  482. sczl_PgCl6: '500',
  483. sczl_clAdd1: '500',
  484. sczl_clAdd2: '500',
  485. sczl_clAdd3: '500',
  486. sczl_clAdd4: '500',
  487. sczl_clAdd5:'500',
  488. sczl_clAdd6: '500',
  489. })
  490. // 验证规则
  491. const rule = reactive({
  492. })
  493. const elFormRef = ref()
  494. const elSearchFormRef = ref()
  495. // =========== 表格控制部分 ===========
  496. const tableData = reactive([])
  497. const GxMctableData = reactive([])
  498. const tableColumns = [
  499. { label: '创建用户', prop: 'sys_id', width: '240' },
  500. { label: '日期', prop: 'sczl_rq', width: '100' },
  501. { label: '包装产量', prop: 'sczl_cl', width: '100' },
  502. { label: '包装数量', prop: 'sczl_PgCl', width: '100' },
  503. { label: '创建时间', prop: 'sys_rq', width: '180' },
  504. { label: '修改时间', prop: 'mod_rq', width: '180' },
  505. { label: 'UNIQID', prop: 'UniqId', width: '100' },
  506. ]
  507. const detailData = reactive([])
  508. const total=ref(0)
  509. const inputname=ref(0)
  510. const page = ref(1)
  511. const limit = ref(10)
  512. const searchInfo = ref('')
  513. const params = {
  514. type: '',
  515. date: '',
  516. sys_id: '',
  517. gdbh: '',
  518. }
  519. const locatevalue={
  520. gdbh:'',
  521. cpmc:'',
  522. page:page.value.toString(),
  523. limit:limit.value.toString(),
  524. }
  525. let table=ref(5);
  526. let positionvalue=ref()
  527. let GxMcvalue=ref()
  528. // 分页设置
  529. const handleSizeChange = (val) => {
  530. switch (params.type) {
  531. case 'getTableData':
  532. getTableData()
  533. break
  534. case 'getLocateTable':
  535. GetmachineLocate()
  536. break
  537. default:
  538. break
  539. }
  540. }
  541. // 页面跳转
  542. const handleCurrentChange = (val) => {
  543. switch (params.type) {
  544. case 'getTableData':
  545. getTableData()
  546. break
  547. case 'getLocateTable':
  548. GetmachineLocate()
  549. break
  550. default:
  551. break
  552. }
  553. }
  554. // 查询
  555. const getTableData = async () => {
  556. const response = await getList(params);
  557. console.log(response.data.rows)
  558. if (response.code === 0) {
  559. tableData.splice(0, tableData.length, ...response.data.rows);
  560. }
  561. }
  562. const handleNodeClick = (node, check) => {
  563. //存放当前节点的nodeId
  564. if (node.params) {
  565. params.date = node.params.date;
  566. params.sys_id = node.params.sys_id;
  567. total.value = node.params.total;
  568. getTableData();
  569. }
  570. }
  571. const Getlocate = async () => {
  572. // const response = await locate(locatevalue);
  573. // console.log(locatevalue)
  574. // console.log(response)
  575. // if (response.code === 0) {
  576. // tableData.splice(0, tableData.length, ...response.data.rows);
  577. // }
  578. const response = await locate({
  579. gdbh: params.gdbh,
  580. page: page.value.toString(), limit: limit.value.toString(),
  581. })
  582. if (response.code === 0) {
  583. total.value = response.data.total
  584. tableData.splice(0, tableData.length, ...response.data.rows)
  585. }
  586. }
  587. const enterpositioning = async () => {
  588. locatevalue.gdbh=positionvalue.value;
  589. console.log(locatevalue.gdbh)
  590. Getlocate()
  591. closepositioningVisible()
  592. }
  593. // 处理回车
  594. const handleEnter = (index, row) => {
  595. GetGxMc(index, row)
  596. }
  597. let sczl_rqValue=ref()
  598. const getpickInfo = async (value) => {
  599. const response = await getInfo({UniqId:value});
  600. if (response.code === 0) {
  601. const { sczl_rq,...rest } = response.data
  602. // 直接赋值基础属性
  603. sczl_rqValue.value=response.data.sczl_rq
  604. console.log(response.data.sczl_rq)
  605. Object.assign(detailData, { sczl_rq,})
  606. // 生成表格数据
  607. detailData.table = Array.from({ length: 6 }, (_, i) => i + 1) // 创建一个长度为6的数组 [1, 2, 3, 4, 5, 6]
  608. .map(num => {
  609. return {
  610. sczl_gdbh: rest[`sczl_gdbh${num}`],
  611. sczl_yjGx: rest[`sczl_yjGx${num}`],
  612. sczl_gxmc: rest[`sczl_gxmc${num}`],
  613. Gd_cpmc: rest[`Gd_cpmc${num}`],
  614. sczl_cl: rest[`sczl_cl${num}`],
  615. sczl_PgCl: rest[`sczl_PgCl${num}`],
  616. sczl_clAdd: rest[`sczl_clAdd${num}`],
  617. }
  618. })
  619. // .filter(item => item.sczl_gdbh !== '') // 过滤掉空的工单编号
  620. dialogFormVisible.value = true
  621. }
  622. }
  623. // 更新数据
  624. const updateDetailData = async() => {
  625. const restoredData = {
  626. UniqId: lastCellValue,
  627. sczl_rq: detailData.sczl_rq,
  628. sczl_gdbh: detailData.sczl_gdbh,
  629. sczl_yjGx: detailData.sczl_yjGx,
  630. sczl_gxmc: detailData.sczl_gxmc,
  631. sczl_cl: detailData.sczl_cl,
  632. sczl_PgCl: detailData.sczl_PgCl,
  633. sczl_clAdd: detailData.sczl_clAdd,
  634. sys_id:'[1084/胡庆司]',
  635. }
  636. detailData.table.forEach((item, index, array) => {
  637. const num = index + 1
  638. restoredData[`sczl_gdbh${num}`] = item.sczl_gdbh
  639. restoredData[`sczl_yjGx${num}`] = item.sczl_yjGx
  640. restoredData[`sczl_gxmc${num}`] = item.sczl_gxmc
  641. // restoredData[`Gd_cpmc${num}`] = item.Gd_cpmc
  642. restoredData[`sczl_cl${num}`] = item.sczl_cl
  643. restoredData[`sczl_PgCl${num}`] = item.sczl_PgCl
  644. restoredData[`sczl_clAdd${num}`] = item.sczl_clAdd
  645. })
  646. if(ADD.value=='新增'){
  647. // console.log('新增')
  648. // 生成表格数据
  649. console.log('新增')
  650. console.log(ADD.value)
  651. console.log(restoredData)
  652. const response = await packagingAdd(restoredData);
  653. // ADD.value='1'
  654. // console.log(ADD.value)
  655. ADD.value='0'
  656. console.log(response)
  657. if(response.code==0){
  658. ElMessage({
  659. type: 'success',
  660. message: '新增成功',
  661. })
  662. }
  663. dialogFormVisible.value = false
  664. }else{
  665. // restoredData.UniqId = 1
  666. const res = await edit(restoredData)
  667. console.log(restoredData)
  668. console.log(res)
  669. if(res.code==0){
  670. ElMessage({
  671. type: 'success',
  672. message: '更新成功',
  673. })
  674. }
  675. dialogFormVisible.value = false
  676. // ADD.value='0'
  677. // console.log(ADD.value)
  678. }
  679. }
  680. const GxMcdel = async () => {
  681. const response = await del({UniqId:lastCellValue});
  682. if (response.code === 0) {
  683. ElMessage({
  684. type: 'success',
  685. message: '删除成功',
  686. })
  687. }
  688. getTableData()
  689. }
  690. //键盘 input框跳转
  691. const ent = (event,id1,id2,id3) => {
  692. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  693. if(id3!=''){
  694. document.getElementById(id3).focus()
  695. }
  696. } else if (event.keyCode === 38) { // 向上箭头
  697. if(id1!=''){
  698. document.getElementById(id1).focus()
  699. }
  700. }else if (event.keyCode === 8) { // 删除箭头
  701. if(id1!='' && document.getElementById(id2).value==''){
  702. document.getElementById(id1).focus()
  703. }
  704. console.log(document.getElementById(id2).value)
  705. }else if (event.keyCode === 37) { // 向左箭头
  706. if(id1!='' && document.getElementById(id2).selectionStart==0){
  707. document.getElementById(id1).focus()
  708. }
  709. }else if (event.keyCode === 39) { // 向右箭头
  710. if(id3!='' && document.getElementById(id2).selectionStart == document.getElementById(id2).value.length){
  711. document.getElementById(id3).focus()
  712. }
  713. }
  714. }
  715. const selectData = reactive([
  716. {
  717. Gd_cpmc: '黄金叶(乐途硬)小盒(二维码改版)',
  718. Gy0_gxmc: '包装',
  719. jyGx: '01-71',
  720. },
  721. ])
  722. let tableIndex = 0
  723. // 处理选择框
  724. const handleSelectClick = (row, column, event) => {
  725. const { Gd_cpmc, Gy0_gxmc, jyGx } = row
  726. detailData.table[tableIndex].Gd_cpmc = Gd_cpmc
  727. detailData.table[tableIndex].sczl_yjGx = jyGx
  728. detailData.table[tableIndex].sczl_gxmc = Gy0_gxmc
  729. getGxMcshow.value = false
  730. }
  731. const GetGxMc = async (index, row) => {
  732. console.log(row)
  733. const response = await getGxMc({gdbh: row.sczl_gdbh })
  734. if (response.code === 0) {
  735. const { Gd_cpmc, Gy0_gxmc, jyGx } = response.data[0]
  736. if (response.data.length === 1) {
  737. detailData.table[index].Gd_cpmc = Gd_cpmc
  738. detailData.table[index].sczl_yjGx = jyGx
  739. detailData.table[index].sczl_gxmc = Gy0_gxmc
  740. } else {
  741. selectData.splice(0, selectData.length, ...response.data)
  742. tableIndex = index
  743. getGxMcshow.value = true
  744. }
  745. }
  746. // const response = await getGxMc({gdbh: value});
  747. // console.log(response);
  748. // if (response.code === 0) {
  749. // if (response.data.length > 1) {
  750. // GxMctableData.splice(0, GxMctableData.length, ...response.data);
  751. // getGxMcshow.value = true;
  752. // }
  753. // // 取出 data 中的第一个元素
  754. // const item = response.data[0];
  755. // // 将数据拆分成变量名和内容
  756. // const variableName = Object.keys(item)[0]; // 变量名
  757. // const variableContent = item[variableName]; // 变量内容
  758. // const variableName1 = Object.keys(item)[1]; // 变量名
  759. // const variableContent1 = item[variableName1]; // 变量内容
  760. // const variableName2 = Object.keys(item)[2]; // 变量名
  761. // const variableContent2 = item[variableName2]; // 变量内容
  762. // console.log(variableContent2); // 输出生成的 Vue 代码
  763. // // 根据 response.data.length 的值动态给 formData 中的变量赋值
  764. // let Bname = 'Gd_cpmc' + num;
  765. // let Bname2= 'sczl_gxmc' + num;
  766. // let Bname3 = 'sczl_yjGx' + num;
  767. // formData.value[Bname] = variableContent; // 假设要赋的值是 123
  768. // formData.value[Bname2] = variableContent1;
  769. // formData.value[Bname3] = variableContent2;
  770. // console.log(formData.value[Bname]);
  771. // }
  772. }
  773. const getGxMcsubmit = (event, inputName) => {
  774. if(formData.value.sczl_gdbh6.length!=7||formData.value.sczl_gdbh5.length!=7||formData.value.sczl_gdbh3.length!=7||formData.value.sczl_gdbh4.length!=7||formData.value.sczl_gdbh2.length!=7||formData.value.sczl_gdbh1.length!=7){
  775. return false
  776. }
  777. // console.log(inputName);
  778. inputname.value=inputName
  779. console.log(inputname.value)
  780. let combinedString = 'formData.value.sczl_gdbh' + inputName;
  781. // console.log(combinedString)
  782. let variableName = 'sczl_gdbh'+inputName;
  783. let variableValue = eval('formData.value.' + variableName);
  784. console.log(variableValue)
  785. GetGxMc(variableValue,inputName)
  786. }
  787. // 搜索
  788. function onSearch() {
  789. params.gdbh = positionvalue.value
  790. params.type = 'getLocateTable'
  791. page.value = 1
  792. Getlocate()
  793. }
  794. // ============== 表格控制部分结束 ===============
  795. // 获取需要的字典 可能为空 按需保留
  796. const setOptions = async () => {
  797. }
  798. // 获取需要的字典 可能为空 按需保留
  799. setOptions()
  800. // 多选数据
  801. const multipleSelection = ref([])
  802. // 多选
  803. const handleSelectionChange = (val) => {
  804. if(val.length>0){
  805. multipleSelection.value = val
  806. const lenth=val.length
  807. lastCellValue=val[lenth-1].UniqId
  808. console.log(val)
  809. val.splice(0, val.length); // 清空 val 数组
  810. console.log(lastCellValue)
  811. }
  812. }
  813. // 批量删除控制标记
  814. const deleteVisible = ref(false)
  815. // 多选删除
  816. const onDelete = async () => {
  817. const ids = []
  818. if (multipleSelection.value.length === 0) {
  819. ElMessage({
  820. type: 'warning',
  821. message: '请选择要删除的数据'
  822. })
  823. return
  824. }
  825. multipleSelection.value &&
  826. multipleSelection.value.map(item => {
  827. ids.push(item.ID)
  828. })
  829. const res = await deleteCompanyByIds({ ids })
  830. if (res.code === 0) {
  831. ElMessage({
  832. type: 'success',
  833. message: '删除成功'
  834. })
  835. if (tableData.value.length === ids.length && page.value > 1) {
  836. page.value--
  837. }
  838. deleteVisible.value = false
  839. getTableData()
  840. }
  841. }
  842. // 弹窗控制标记
  843. const dialogFormVisible = ref(false)
  844. // 行为控制标记(弹窗内部需要增还是改)
  845. const type = ref('')
  846. // 更新行
  847. const updateCompanyFunc = async (row) => {
  848. const res = await findCompany({ ID: row.ID })
  849. type.value = 'update'
  850. if (res.code === 0) {
  851. formData.value = res.data.recompany
  852. dialogFormVisible.value = true
  853. }
  854. }
  855. // 弹窗控制标记
  856. const positioningVisibleshow = ref(false)
  857. const getGxMcshow = ref(false)
  858. const positioningVisible = () => {
  859. type.value = 'create'
  860. positioningVisibleshow.value = true
  861. }
  862. const ADD=ref('0')
  863. //新增
  864. function onAdd() {
  865. ADD.value='新增'
  866. console.log(ADD.value)
  867. getpickInfo(lastCellValue)
  868. dialogFormVisible.value = true
  869. // Productionadd()
  870. }
  871. const Del = () => {
  872. GxMcdel()
  873. }
  874. const closepositioningVisible = () => {
  875. positioningVisibleshow.value = false
  876. formData.value = {
  877. address: '',
  878. image: '',
  879. name: '',
  880. }
  881. }
  882. const closegetGxMcshow = () => {
  883. getGxMcshow.value = false
  884. }
  885. // 打开弹窗
  886. const openDialog = () => {
  887. type.value = 'create'
  888. dialogFormVisible.value = true
  889. }
  890. // 关闭弹窗
  891. const closeDialog = () => {
  892. dialogFormVisible.value = false
  893. formData.value = {
  894. address: '',
  895. image: '',
  896. name: '',
  897. }
  898. }
  899. // 弹窗确定
  900. const enterDialog = async () => {
  901. // formData.value.UniqId=lastCellValue
  902. updateDetailData()
  903. // GxMcedit(lastCellValue)
  904. // closeDialog()
  905. // getTableData()
  906. }
  907. let lastCellValue=ref()
  908. // 双击表格操作
  909. function doubleClick(row) {
  910. // console.log(row, column, event);
  911. // updateCompanyFunc(row);
  912. type.value = 'update';
  913. lastCellValue= row['UniqId'];
  914. console.log(lastCellValue)
  915. table.value=lastCellValue
  916. getpickInfo(table.value)
  917. }
  918. // 单击表格操作
  919. function Click(row, column, event) {
  920. lastCellValue= row['UniqId'];
  921. console.log(lastCellValue)
  922. // if(row['table_type']=='db_sczl'){
  923. // dialogFormVisible.value = true
  924. // GetInfo(table.value)
  925. // }else{
  926. // console.log('此数据不展示详细信息')
  927. // }
  928. }
  929. function GxMcdoubleClick(row) {
  930. GxMcvalue=row
  931. closegetGxMcshow()
  932. console.log(GxMcvalue.Gd_cpmc)
  933. // 根据 response.data.length 的值动态给 formData 中的变量赋值
  934. let Bname = 'Gd_cpmc' + inputname.value;
  935. let Bname2= 'sczl_gxmc' + inputname.value;
  936. let Bname3 = 'sczl_yjGx' + inputname.value;
  937. formData.value[Bname] =GxMcvalue.Gd_cpmc; // 假设要赋的值是 123
  938. formData.value[Bname2] = GxMcvalue.Gy0_gxmc;
  939. formData.value[Bname3] = GxMcvalue.jyGx;
  940. }
  941. // 导出excel
  942. function exportExcel() {
  943. console.log('导出到excel');
  944. }
  945. // 生命周期钩子
  946. onMounted(async () => {
  947. });
  948. </script>
  949. <style>
  950. .JKWTree-container {
  951. display: flex;
  952. }
  953. .JKWTree-tree {
  954. width: 300px;
  955. background-color: #fff;
  956. padding: 10px;
  957. margin-right: 20px;
  958. }
  959. .JKWTree-tree h3 {
  960. font-size: 15px;
  961. font-weight: 700;
  962. margin: 10px 0;
  963. }
  964. .JKWTree-content {
  965. flex: 1;
  966. }
  967. /* 选中某行时的背景色*/
  968. .el-table__body tr.current-row>td {
  969. background: #ff80ff !important;
  970. /* 背景颜色 */
  971. }
  972. </style>