rewards.vue 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237
  1. <template>
  2. <div>
  3. <el-container>
  4. <!-- <el-scrollbar height="550px">
  5. <el-aside>
  6. <div class="JKWTree-tree">
  7. <h3>工序大废品奖惩记录</h3>
  8. <el-tree
  9. :data="treeData"
  10. :props="defaultProps"
  11. @node-click="handleNodeClick"
  12. />
  13. </div>
  14. </el-aside>
  15. </el-scrollbar> -->
  16. <layout-sider
  17. :resize-directions="['right']"
  18. :width="220"
  19. style="margin-right: 10px;"
  20. >
  21. <div
  22. class="JKWTree-tree"
  23. style="height: 70vh;"
  24. >
  25. <h3>工序大废品奖惩记录</h3>
  26. <el-tree
  27. :data="treeData"
  28. highlight-current
  29. @node-click="handleNodeClick"
  30. />
  31. </div>
  32. </layout-sider>
  33. <el-container>
  34. <!-- <el-header>dd</el-header>-->
  35. <el-main>
  36. <div class="gva-search-box">
  37. <el-form
  38. ref="elSearchFormRef"
  39. :inline="true"
  40. :model="searchInfo"
  41. class="demo-form-inline"
  42. :rules="searchRule"
  43. @keyup.enter="onSubmit"
  44. >
  45. <el-form-item>
  46. <el-input
  47. v-model="detailData.image"
  48. :clearable="true"
  49. placeholder="输入工单编号或产品名称"
  50. />
  51. </el-form-item>
  52. <el-form-item>
  53. <el-button
  54. type="primary"
  55. icon="search"
  56. @click="onSubmit"
  57. >查询</el-button>
  58. <el-button
  59. type="primary"
  60. icon="search"
  61. @click="onAdd"
  62. >新增</el-button>
  63. <el-button
  64. type="primary"
  65. icon="search"
  66. @click="onDel"
  67. >删除</el-button>
  68. <el-button
  69. icon="refresh"
  70. @click="onReset"
  71. >切换显示方式</el-button>
  72. </el-form-item>
  73. </el-form>
  74. </div>
  75. <div class="gva-table-box">
  76. <el-table
  77. ref="multipleTable"
  78. style="width: 100%"
  79. border
  80. tooltip-effect="dark"
  81. :data="tableData"
  82. row-key="ID"
  83. :show-overflow-tooltip="true"
  84. highlight-current-row
  85. :row-style="{ height: '20px' }"
  86. :cell-style="{ padding: '0px' }"
  87. :header-row-style="{ height: '20px' }"
  88. :header-cell-style="{ padding: '0px' }"
  89. @selection-change="handleSelectionChange"
  90. @row-dblclick="handleDoubleClick"
  91. >
  92. <el-table-column
  93. type="selection"
  94. width="55"
  95. />
  96. <el-table-column
  97. align="left"
  98. label="工单编号"
  99. prop="sczl_gdbh"
  100. width="90" sortable
  101. />
  102. <el-table-column
  103. align="left"
  104. label="印件名称"
  105. prop="yj_yjmc"
  106. width="210" sortable
  107. />
  108. <el-table-column
  109. align="left"
  110. label="日期"
  111. prop="sczl_rq"
  112. width="100" sortable
  113. />
  114. <el-table-column
  115. align="left"
  116. label="流程单备注"
  117. prop="sczl_numDesc"
  118. width="100" sortable
  119. />
  120. <el-table-column
  121. align="left"
  122. label="联数"
  123. prop="sczl_ls"
  124. width="70" sortable
  125. />
  126. <el-table-column
  127. align="left"
  128. label="责任部门"
  129. prop="责任部门"
  130. width="90" sortable
  131. />
  132. <el-table-column
  133. align="left"
  134. label="大废品数"
  135. prop="sczl_cl"
  136. width="90" sortable
  137. />
  138. <el-table-column
  139. align="left"
  140. label="废品类型"
  141. prop="sczl_fplxA"
  142. width="100" sortable
  143. />
  144. <el-table-column
  145. align="left"
  146. label="废品来源"
  147. prop="sczl_fplxB"
  148. width="90" sortable
  149. />
  150. <el-table-column
  151. align="left"
  152. label="奖励班组"
  153. prop="Jl_bzdh"
  154. width="90" sortable
  155. />
  156. <el-table-column
  157. align="left"
  158. label="检验员工"
  159. prop="JL_bh1"
  160. width="90" sortable
  161. />
  162. <el-table-column
  163. align="left"
  164. label="责任班组"
  165. prop="sczl_bzdh"
  166. width="90" sortable
  167. />
  168. <el-table-column
  169. align="left"
  170. label="责任员工1"
  171. prop="sczl_bh1"
  172. width="90" sortable
  173. />
  174. <el-table-column
  175. align="left"
  176. label="责任员工2"
  177. prop="sczl_bh2"
  178. width="90" sortable
  179. />
  180. <el-table-column
  181. align="left"
  182. label="创建用户"
  183. prop="sys_id"
  184. width="120" sortable
  185. />
  186. <el-table-column
  187. align="left"
  188. label="创建时间"
  189. prop="sys_rq"
  190. width="160" sortable
  191. />
  192. <el-table-column
  193. align="left"
  194. label="UNIQID"
  195. prop="UniqId"
  196. width="80" sortable
  197. />
  198. </el-table>
  199. <div class="gva-pagination">
  200. <el-pagination
  201. layout="total, sizes, prev, pager, next, jumper"
  202. :current-page="page"
  203. :page-size="pageSize"
  204. :page-sizes="[10, 30, 50, 100]"
  205. :total="total"
  206. @current-change="handleCurrentChange"
  207. @size-change="handleSizeChange"
  208. />
  209. </div>
  210. </div>
  211. <el-dialog
  212. v-model="dialogFormVisible"
  213. :before-close="closeDialog"
  214. title="详情"
  215. destroy-on-close
  216. style="width: 1020px;position: fixed; top: 35%; left: 50%; transform: translate(-50%, -50%);"
  217. >
  218. <el-scrollbar height="70vh">
  219. <el-form
  220. ref="elFormRef"
  221. :model="detailData"
  222. :inline="true"
  223. style="margin-bottom: 0px;"
  224. label-position="right"
  225. :rules="rule"
  226. label-width="80px"
  227. aria-readonly="true"
  228. >
  229. <el-form-item
  230. label="工单编号:"
  231. prop="address"
  232. style="margin-right: 120px;"
  233. >
  234. <el-input
  235. v-model="detailData.sczl_gdbh"
  236. readonly
  237. style="width: 120px;"
  238. />
  239. </el-form-item>
  240. <el-form-item
  241. label="产品名称:"
  242. prop="image"
  243. >
  244. <el-input
  245. v-model="detailData.Gd_cpmc"
  246. readonly
  247. placeholder="请输入产品名称"
  248. style="width: 450px;"
  249. />
  250. </el-form-item>
  251. </el-form>
  252. <el-form
  253. ref="elFormRef"
  254. :model="detailData"
  255. :inline="true"
  256. label-position="right"
  257. :rules="rule"
  258. label-width="80px"
  259. >
  260. <el-form-item
  261. label="印件号:"
  262. prop="address"
  263. style="margin-right: 120px;"
  264. >
  265. <el-input
  266. v-model="detailData.sczl_yjno"
  267. readonly
  268. style="width: 120px;"
  269. />
  270. </el-form-item>
  271. <el-form-item
  272. label="印件名称:"
  273. prop="image"
  274. >
  275. <el-input
  276. v-model="detailData.yj_yjmc"
  277. readonly
  278. style="width: 450px;"
  279. />
  280. </el-form-item>
  281. </el-form>
  282. <el-form
  283. ref="elFormRef"
  284. :model="detailData"
  285. :inline="true"
  286. label-position="right"
  287. :rules="rule"
  288. label-width="90px"
  289. >
  290. <el-form-item
  291. label="工序名称:"
  292. prop="address"
  293. >
  294. <el-input
  295. v-model="detailData.sczl_gxmc"
  296. readonly
  297. style="width: 300px;"
  298. />
  299. </el-form-item>
  300. <el-form-item prop="image">
  301. <el-input
  302. v-model="detailData.sczl_gxh"
  303. readonly
  304. style="width: 50px;"
  305. />
  306. </el-form-item>
  307. <el-form-item
  308. label="流程单备注:"
  309. prop="image"
  310. >
  311. <el-input
  312. v-model="detailData.sczl_numDesc"
  313. readonly
  314. />
  315. </el-form-item>
  316. </el-form>
  317. <el-form
  318. ref="elFormRef"
  319. :model="detailData"
  320. :inline="true"
  321. label-position="right"
  322. :rules="rule"
  323. label-width="80px"
  324. >
  325. <el-form-item
  326. label="日期:"
  327. prop="address"
  328. style="margin-right: 120px;"
  329. >
  330. <el-input
  331. v-model="detailData.sczl_rq"
  332. readonly
  333. style="width: 120px;"
  334. />
  335. </el-form-item>
  336. <el-form-item
  337. label="废品数量:"
  338. prop="image"
  339. >
  340. <el-input
  341. v-model="detailData.sczl_cl"
  342. readonly
  343. style="width: 120px;"
  344. />
  345. </el-form-item>
  346. <el-form-item
  347. label="联数:"
  348. prop="image"
  349. >
  350. <el-input
  351. v-model="detailData.sczl_ls"
  352. readonly
  353. style="width: 120px;"
  354. />
  355. </el-form-item>
  356. </el-form>
  357. <el-form
  358. ref="elFormRef"
  359. :model="detailData"
  360. :inline="true"
  361. label-position="right"
  362. :rules="rule"
  363. label-width="90px"
  364. >
  365. <el-form-item
  366. label="废品备注:"
  367. prop="address"
  368. >
  369. <el-input
  370. v-model="detailData.sczl_fplxA"
  371. readonly
  372. style="width: 300px;"
  373. />
  374. </el-form-item>
  375. <el-form-item>
  376. <el-checkbox
  377. v-model="detailData"
  378. style="width: 30px;"
  379. >制程废</el-checkbox>
  380. </el-form-item>
  381. <el-form-item
  382. label="责任部门:"
  383. prop="image"
  384. >
  385. <el-input
  386. v-model="detailData.责任部门"
  387. readonly
  388. style="width: 250px;"
  389. />
  390. </el-form-item>
  391. </el-form>
  392. <el-form
  393. ref="elFormRef"
  394. :model="detailData"
  395. :inline="true"
  396. label-position="right"
  397. :rules="rule"
  398. >
  399. <el-form-item>
  400. <div
  401. class="sub-title"
  402. style="width: 193px; height: 10px;"
  403. />
  404. <div
  405. class="sub-title"
  406. style="width: 83.5px; height: 10px;"
  407. >组员1</div>
  408. <div
  409. class="sub-title"
  410. style="width: 83.5px; height: 10px;"
  411. >组员2</div>
  412. <div
  413. class="sub-title"
  414. style="width: 83.5px; height: 10px;"
  415. >组员3</div>
  416. <div
  417. class="sub-title"
  418. style="width: 83.5px; height: 10px;"
  419. >组员4</div>
  420. <div
  421. class="sub-title"
  422. style="width: 83.5px; height: 10px;"
  423. >组员5</div>
  424. <div
  425. class="sub-title"
  426. style="width: 83.5px; height: 10px;"
  427. >组员6</div>
  428. <div
  429. class="sub-title"
  430. style="width: 83.5px; height: 10px;"
  431. >组员7</div>
  432. <div
  433. class="sub-title"
  434. style="width: 83.5px; height: 10px;"
  435. >组员8</div>
  436. <div
  437. class="sub-title"
  438. style="width: 83.5px; height: 10px;"
  439. >组员9</div>
  440. </el-form-item>
  441. </el-form>
  442. <el-form
  443. ref="elFormRef"
  444. :model="detailData"
  445. :inline="true"
  446. label-position="right"
  447. :rules="rule"
  448. >
  449. <el-form-item>
  450. <div class="sub-title">奖励班组:</div>
  451. <el-input
  452. v-model="detailData.Jl_bzdh"
  453. readonly
  454. style="width: 45px;"
  455. />
  456. <el-input
  457. v-model="detailData.jl_jtbh"
  458. readonly
  459. style="width: 65px;"
  460. />
  461. <el-input
  462. v-model="detailData.JL_bh1"
  463. readonly
  464. style="width: 85px;"
  465. />
  466. <el-input
  467. v-model="detailData.JL_bh2"
  468. readonly
  469. style="width: 85px;"
  470. />
  471. <el-input
  472. v-model="detailData.JL_bh3"
  473. readonly
  474. style="width: 85px;"
  475. />
  476. <el-input
  477. v-model="detailData.JL_bh4"
  478. readonly
  479. style="width: 85px;"
  480. />
  481. <el-input
  482. v-model="detailData.JL_bh5"
  483. readonly
  484. style="width: 85px;"
  485. />
  486. <el-input
  487. v-model="detailData.JL_bh6"
  488. readonly
  489. style="width: 85px;"
  490. />
  491. <el-input
  492. v-model="detailData.JL_bh7"
  493. readonly
  494. style="width: 85px;"
  495. />
  496. <el-input
  497. v-model="detailData.JL_bh8"
  498. readonly
  499. style="width: 85px;"
  500. />
  501. <el-input
  502. v-model="detailData.JL_bh9"
  503. readonly
  504. style="width: 85px;"
  505. />
  506. </el-form-item>
  507. </el-form>
  508. <el-form
  509. ref="elFormRef"
  510. :model="detailData"
  511. :inline="true"
  512. label-position="right"
  513. :rules="rule"
  514. >
  515. <el-form-item>
  516. <div
  517. class="sub-title"
  518. style="width: 182px;"
  519. />
  520. <el-input
  521. v-model="detailData.jlname1"
  522. readonly
  523. style="width: 85px;"
  524. />
  525. <el-input
  526. v-model="detailData.jlname2"
  527. readonly
  528. style="width: 85px;"
  529. />
  530. <el-input
  531. v-model="detailData.jlname3"
  532. readonly
  533. style="width: 85px;"
  534. />
  535. <el-input
  536. v-model="detailData.jlname4"
  537. readonly
  538. style="width: 85px;"
  539. />
  540. <el-input
  541. v-model="detailData.jlname5"
  542. readonly
  543. style="width: 85px;"
  544. />
  545. <el-input
  546. v-model="detailData.jlname6"
  547. readonly
  548. style="width: 85px;"
  549. />
  550. <el-input
  551. v-model="detailData.jlname7"
  552. readonly
  553. style="width: 85px;"
  554. />
  555. <el-input
  556. v-model="detailData.jlname8"
  557. readonly
  558. style="width: 85px;"
  559. />
  560. <el-input
  561. v-model="detailData.jlname9"
  562. readonly
  563. style="width: 85px;"
  564. />
  565. </el-form-item>
  566. </el-form>
  567. <el-form
  568. ref="elFormRef"
  569. :model="detailData"
  570. :inline="true"
  571. label-position="right"
  572. :rules="rule"
  573. >
  574. <el-form-item>
  575. <div
  576. class="sub-title"
  577. style="width: 182px;"
  578. >奖励金额:</div>
  579. <el-input
  580. v-model="detailData.JL_Je1"
  581. readonly
  582. style="width: 85px;"
  583. />
  584. <el-input
  585. v-model="detailData.JL_Je2"
  586. readonly
  587. style="width: 85px;"
  588. />
  589. <el-input
  590. v-model="detailData.JL_Je3"
  591. readonly
  592. style="width: 85px;"
  593. />
  594. <el-input
  595. v-model="detailData.JL_Je4"
  596. readonly
  597. style="width: 85px;"
  598. />
  599. <el-input
  600. v-model="detailData.JL_Je5"
  601. readonly
  602. style="width: 85px;"
  603. />
  604. <el-input
  605. v-model="detailData.JL_Je6"
  606. readonly
  607. style="width: 85px;"
  608. />
  609. <el-input
  610. v-model="detailData.JL_Je7"
  611. readonly
  612. style="width: 85px;"
  613. />
  614. <el-input
  615. v-model="detailData.JL_Je8"
  616. readonly
  617. style="width: 85px;"
  618. />
  619. <el-input
  620. v-model="detailData.JL_Je9"
  621. readonly
  622. style="width: 85px;"
  623. />
  624. </el-form-item>
  625. </el-form>
  626. <el-form
  627. ref="elFormRef"
  628. :model="detailData"
  629. :inline="true"
  630. label-position="right"
  631. :rules="rule"
  632. >
  633. <el-form-item>
  634. <div
  635. class="sub-title"
  636. style="width: 193px; height: 10px;"
  637. />
  638. <div
  639. class="sub-title"
  640. style="width: 83.5px; height: 10px;"
  641. >组员1</div>
  642. <div
  643. class="sub-title"
  644. style="width: 83.5px; height: 10px;"
  645. >组员2</div>
  646. <div
  647. class="sub-title"
  648. style="width: 83.5px; height: 10px;"
  649. >组员3</div>
  650. <div
  651. class="sub-title"
  652. style="width: 83.5px; height: 10px;"
  653. >组员4</div>
  654. <div
  655. class="sub-title"
  656. style="width: 83.5px; height: 10px;"
  657. >组员5</div>
  658. <div
  659. class="sub-title"
  660. style="width: 83.5px; height: 10px;"
  661. >组员6</div>
  662. <div
  663. class="sub-title"
  664. style="width: 83.5px; height: 10px;"
  665. >组员7</div>
  666. <div
  667. class="sub-title"
  668. style="width: 83.5px; height: 10px;"
  669. >组员8</div>
  670. <div
  671. class="sub-title"
  672. style="width: 83.5px; height: 10px;"
  673. >组员9</div>
  674. </el-form-item>
  675. </el-form>
  676. <el-form
  677. ref="elFormRef"
  678. :model="detailData"
  679. :inline="true"
  680. label-position="right"
  681. :rules="rule"
  682. >
  683. <el-form-item>
  684. <div class="sub-title">责任班组:</div>
  685. <el-input
  686. v-model="detailData.sczl_bzdh"
  687. readonly
  688. style="width: 45px;"
  689. />
  690. <el-input
  691. v-model="detailData.sczl_jtbh"
  692. readonly
  693. style="width: 65px;"
  694. />
  695. <el-input
  696. v-model="detailData.sczl_bh1"
  697. readonly
  698. style="width: 85px;"
  699. />
  700. <el-input
  701. v-model="detailData.sczl_bh2"
  702. readonly
  703. style="width: 85px;"
  704. />
  705. <el-input
  706. v-model="detailData.sczl_bh3"
  707. readonly
  708. style="width: 85px;"
  709. />
  710. <el-input
  711. v-model="detailData.sczl_bh4"
  712. readonly
  713. style="width: 85px;"
  714. />
  715. <el-input
  716. v-model="detailData.sczl_bh5"
  717. readonly
  718. style="width: 85px;"
  719. />
  720. <el-input
  721. v-model="detailData.sczl_bh6"
  722. readonly
  723. style="width: 85px;"
  724. />
  725. <el-input
  726. v-model="detailData.sczl_bh7"
  727. readonly
  728. style="width: 85px;"
  729. />
  730. <el-input
  731. v-model="detailData.sczl_bh8"
  732. readonly
  733. style="width: 85px;"
  734. />
  735. <el-input
  736. v-model="detailData.sczl_bh9"
  737. readonly
  738. style="width: 85px;"
  739. />
  740. </el-form-item>
  741. </el-form>
  742. <el-form
  743. ref="elFormRef"
  744. :model="detailData"
  745. :inline="true"
  746. label-position="right"
  747. :rules="rule"
  748. >
  749. <el-form-item>
  750. <div
  751. class="sub-title"
  752. style="width: 182px;"
  753. />
  754. <el-input
  755. v-model="detailData.zrname1"
  756. readonly
  757. style="width: 85px;"
  758. />
  759. <el-input
  760. v-model="detailData.zrname2"
  761. readonly
  762. style="width: 85px;"
  763. />
  764. <el-input
  765. v-model="detailData.zrname3"
  766. readonly
  767. style="width: 85px;"
  768. />
  769. <el-input
  770. v-model="detailData.zrname4"
  771. readonly
  772. style="width: 85px;"
  773. />
  774. <el-input
  775. v-model="detailData.zrname5"
  776. readonly
  777. style="width: 85px;"
  778. />
  779. <el-input
  780. v-model="detailData.zrname6"
  781. readonly
  782. style="width: 85px;"
  783. />
  784. <el-input
  785. v-model="detailData.zrname7"
  786. readonly
  787. style="width: 85px;"
  788. />
  789. <el-input
  790. v-model="detailData.zrname8"
  791. readonly
  792. style="width: 85px;"
  793. />
  794. <el-input
  795. v-model="detailData.zrname9"
  796. readonly
  797. style="width: 85px;"
  798. />
  799. </el-form-item>
  800. </el-form>
  801. <el-form
  802. ref="elFormRef"
  803. :model="detailData"
  804. :inline="true"
  805. label-position="right"
  806. :rules="rule"
  807. >
  808. <el-form-item>
  809. <div
  810. class="sub-title"
  811. style="width: 182px;"
  812. >处罚金额:</div>
  813. <el-input
  814. v-model="detailData.sczl_je1"
  815. readonly
  816. style="width: 85px;"
  817. />
  818. <el-input
  819. v-model="detailData.sczl_je2"
  820. readonly
  821. style="width: 85px;"
  822. />
  823. <el-input
  824. v-model="detailData.sczl_je3"
  825. readonly
  826. style="width: 85px;"
  827. />
  828. <el-input
  829. v-model="detailData.sczl_je4"
  830. readonly
  831. style="width: 85px;"
  832. />
  833. <el-input
  834. v-model="detailData.sczl_je5"
  835. readonly
  836. style="width: 85px;"
  837. />
  838. <el-input
  839. v-model="detailData.sczl_je6"
  840. readonly
  841. style="width: 85px;"
  842. />
  843. <el-input
  844. v-model="detailData.sczl_je7"
  845. readonly
  846. style="width: 85px;"
  847. />
  848. <el-input
  849. v-model="detailData.sczl_je8"
  850. readonly
  851. style="width: 85px;"
  852. />
  853. <el-input
  854. v-model="detailData.sczl_je9"
  855. readonly
  856. style="width: 85px;"
  857. />
  858. </el-form-item>
  859. </el-form>
  860. </el-scrollbar>
  861. <template #footer>
  862. <div class="dialog-footer">
  863. <el-button @click="closeDialog">取 消</el-button>
  864. <el-button
  865. type="primary"
  866. @click="enterDialog"
  867. >确 定</el-button>
  868. </div>
  869. </template>
  870. </el-dialog>
  871. <el-dialog
  872. v-model="detailShow"
  873. style="width: 800px"
  874. lock-scroll
  875. :before-close="closeDetailShow"
  876. title="查看详情"
  877. destroy-on-close
  878. >
  879. <el-scrollbar height="550px">
  880. <el-descriptions
  881. column="1"
  882. border
  883. >
  884. <el-descriptions-item label="address字段">
  885. {{ detailData.address }}
  886. </el-descriptions-item>
  887. <el-descriptions-item label="image字段">
  888. {{ detailData.image }}
  889. </el-descriptions-item>
  890. <el-descriptions-item label="name字段">
  891. {{ detailData.name }}
  892. </el-descriptions-item>
  893. </el-descriptions>
  894. </el-scrollbar>
  895. </el-dialog>
  896. </el-main>
  897. </el-container>
  898. </el-container>
  899. </div>
  900. </template>
  901. <script setup>
  902. import { getRewardDetail, getRewardList, getRewardTab, getRewardTabByGd } from '@/api/mes/job'
  903. import { createCompany, deleteCompany, deleteCompanyByIds, findCompany, updateCompany } from '@/api/company'
  904. import { Layout, LayoutContent, LayoutHeader, LayoutSider } from '@arco-design/web-vue'
  905. // 全量引入格式化工具 请按需保留
  906. import { ElMessage, ElMessageBox } from 'element-plus'
  907. import { reactive, ref } from 'vue'
  908. defineOptions({
  909. name: 'Company'
  910. })
  911. const treeData = ref([])
  912. const displayMod = ref('')
  913. // 侧边栏
  914. const RewardTab = async() => {
  915. const getRewardTabs = await getRewardTab()
  916. if (getRewardTabs.code === 0) {
  917. treeData.value = getRewardTabs.data.map((item) => ({
  918. label: `${item.date.replace(/-/g, '.')}【单据数: ${item.counts}张】`,
  919. params: {
  920. date: item.date.replace(/\./g, '-'),
  921. }
  922. }))
  923. displayMod.value = 'date'
  924. }
  925. }
  926. RewardTab()
  927. const RewardTabByGd = async() => {
  928. const getRewardTabs = await getRewardTabByGd()
  929. if (getRewardTabs.code === 0) {
  930. treeData.value = getRewardTabs.data.map((item) => ({
  931. label: item.label,
  932. params: {
  933. date: item.sczl_gdbh
  934. }
  935. }))
  936. displayMod.value = 'gd'
  937. }
  938. }
  939. const handleNodeClick = (node, check) => {
  940. // 存放当前节点的nodeId
  941. // console.log(node, check)
  942. if (node.params) {
  943. params.date = node.params.date
  944. getTableData()
  945. }
  946. }
  947. // 切换显示方式
  948. const onReset = () => {
  949. if (displayMod.value === 'date') {
  950. RewardTabByGd()
  951. } else {
  952. RewardTab()
  953. }
  954. }
  955. // 验证规则
  956. const rule = reactive({
  957. })
  958. const searchRule = reactive({
  959. createdAt: [
  960. { validator: (rule, value, callback) => {
  961. if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
  962. callback(new Error('请填写结束日期'))
  963. } else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
  964. callback(new Error('请填写开始日期'))
  965. } else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
  966. callback(new Error('开始日期应当早于结束日期'))
  967. } else {
  968. callback()
  969. }
  970. }, trigger: 'change' }
  971. ],
  972. })
  973. const elFormRef = ref()
  974. const elSearchFormRef = ref()
  975. // =========== 表格控制部分 ===========
  976. const page = ref(1)
  977. const total = ref(0)
  978. const pageSize = ref(10)
  979. const tableData = ref([])
  980. const searchInfo = ref({})
  981. const params = {
  982. date: '',
  983. page: page.value.toString(),
  984. limit: pageSize.value.toString(),
  985. }
  986. // 搜索
  987. const onSubmit = () => {
  988. elSearchFormRef.value?.validate(async(valid) => {
  989. if (!valid) return
  990. page.value = 1
  991. pageSize.value = 10
  992. getTableData()
  993. })
  994. }
  995. // 分页
  996. const handleSizeChange = (val) => {
  997. pageSize.value = val
  998. params.limit = val.toString()
  999. getTableData()
  1000. }
  1001. // 修改页面容量
  1002. const handleCurrentChange = (val) => {
  1003. page.value = val
  1004. params.page = val.toString()
  1005. getTableData()
  1006. }
  1007. // 查看详情
  1008. const detailData = reactive({})
  1009. const handleDoubleClick = async(row) => {
  1010. const { UniqId } = row
  1011. console.log(UniqId)
  1012. const res = await getRewardDetail({ UniqId })
  1013. console.log(res)
  1014. if (res.code === 0) {
  1015. console.log(res)
  1016. Object.assign(detailData, res.data[0])
  1017. dialogFormVisible.value = true
  1018. }
  1019. }
  1020. // 查询
  1021. const getTableData = async() => {
  1022. const table = await getRewardList(params)
  1023. if (table.code === 0) {
  1024. tableData.value = table.data.rows
  1025. total.value = table.data.total
  1026. }
  1027. }
  1028. // getTableData()
  1029. // ============== 表格控制部分结束 ===============
  1030. // 获取需要的字典 可能为空 按需保留
  1031. const setOptions = async() => {
  1032. }
  1033. // 获取需要的字典 可能为空 按需保留
  1034. setOptions()
  1035. // 多选数据
  1036. const multipleSelection = ref([])
  1037. // 多选
  1038. const handleSelectionChange = (val) => {
  1039. multipleSelection.value = val
  1040. }
  1041. // 删除行
  1042. const deleteRow = (row) => {
  1043. ElMessageBox.confirm('确定要删除吗?', '提示', {
  1044. confirmButtonText: '确定',
  1045. cancelButtonText: '取消',
  1046. type: 'warning'
  1047. }).then(() => {
  1048. deleteCompanyFunc(row)
  1049. })
  1050. }
  1051. // 批量删除控制标记
  1052. const deleteVisible = ref(false)
  1053. // 多选删除
  1054. const onDelete = async() => {
  1055. const ids = []
  1056. if (multipleSelection.value.length === 0) {
  1057. ElMessage({
  1058. type: 'warning',
  1059. message: '请选择要删除的数据'
  1060. })
  1061. return
  1062. }
  1063. multipleSelection.value &&
  1064. multipleSelection.value.map(item => {
  1065. ids.push(item.ID)
  1066. })
  1067. const res = await deleteCompanyByIds({ ids })
  1068. if (res.code === 0) {
  1069. ElMessage({
  1070. type: 'success',
  1071. message: '删除成功'
  1072. })
  1073. if (tableData.value.length === ids.length && page.value > 1) {
  1074. page.value--
  1075. }
  1076. deleteVisible.value = false
  1077. getTableData()
  1078. }
  1079. }
  1080. // 行为控制标记(弹窗内部需要增还是改)
  1081. const type = ref('')
  1082. // 删除行
  1083. const deleteCompanyFunc = async(row) => {
  1084. const res = await deleteCompany({ ID: row.ID })
  1085. if (res.code === 0) {
  1086. ElMessage({
  1087. type: 'success',
  1088. message: '删除成功'
  1089. })
  1090. if (tableData.value.length === 1 && page.value > 1) {
  1091. page.value--
  1092. }
  1093. getTableData()
  1094. }
  1095. }
  1096. // 弹窗控制标记
  1097. const dialogFormVisible = ref(false)
  1098. // 查看详情控制标记
  1099. const detailShow = ref(false)
  1100. // 打开详情弹窗
  1101. const openDetailShow = () => {
  1102. detailShow.value = true
  1103. }
  1104. // 打开详情
  1105. const getDetails = async(row) => {
  1106. // 打开弹窗
  1107. const res = await findCompany({ ID: row.ID })
  1108. if (res.code === 0) {
  1109. detailData.value = res.data.recompany
  1110. openDetailShow()
  1111. }
  1112. }
  1113. // 关闭详情弹窗
  1114. const closeDetailShow = () => {
  1115. detailShow.value = false
  1116. detailData.value = {
  1117. address: '',
  1118. image: '',
  1119. name: '',
  1120. }
  1121. }
  1122. // 打开弹窗
  1123. const openDialog = () => {
  1124. type.value = 'create'
  1125. dialogFormVisible.value = true
  1126. }
  1127. // 关闭弹窗
  1128. const closeDialog = () => {
  1129. dialogFormVisible.value = false
  1130. detailData.value = {
  1131. address: '',
  1132. image: '',
  1133. name: '',
  1134. }
  1135. }
  1136. // 弹窗确定
  1137. const enterDialog = async() => {
  1138. elFormRef.value?.validate(async(valid) => {
  1139. if (!valid) return
  1140. let res
  1141. switch (type.value) {
  1142. case 'create':
  1143. res = await createCompany(detailData.value)
  1144. break
  1145. case 'update':
  1146. res = await updateCompany(detailData.value)
  1147. break
  1148. default:
  1149. res = await createCompany(detailData.value)
  1150. break
  1151. }
  1152. if (res.code === 0) {
  1153. ElMessage({
  1154. type: 'success',
  1155. message: '创建/更改成功'
  1156. })
  1157. closeDialog()
  1158. getTableData()
  1159. }
  1160. })
  1161. }
  1162. </script>
  1163. <style scoped>
  1164. :deep(.el-table td .cell) {
  1165. line-height: 30px !important;
  1166. }
  1167. .JKWTree-container {
  1168. display: flex;
  1169. }
  1170. /* 选中某行时的背景色 */
  1171. :deep(.el-table__body tr.current-row) > td {
  1172. background: #ff80ff !important;
  1173. }
  1174. .JKWTree-tree {
  1175. width: 300px;
  1176. background-color: #fff;
  1177. padding: 10px;
  1178. margin-right: 20px;
  1179. }
  1180. .JKWTree-tree h3 {
  1181. font-size: 15px;
  1182. font-weight: 700;
  1183. margin: 10px 0;
  1184. }
  1185. .JKWTree-content {
  1186. flex: 1;
  1187. }
  1188. </style>