rewards.vue 35 KB

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