rewards.vue 35 KB

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