index.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911
  1. <template>
  2. <div class="ele-body">
  3. <el-card shadow="never" v-loading="loading">
  4. <productionPlan-search
  5. @search="reload"
  6. ref="searchRef"
  7. :statusOpt="statusOpt"
  8. :planType="planType"
  9. :activeName="activeName"
  10. >
  11. </productionPlan-search>
  12. <div class="btn_box">
  13. <el-button type="success" size="mini">齐套性检查</el-button>
  14. <el-button type="primary" size="mini" @click="disassemblePlan"
  15. >计划分解</el-button
  16. >
  17. <el-button type="primary" size="mini">补单计划</el-button>
  18. <el-button type="info" size="mini">计划行事历</el-button>
  19. <el-button type="warning" size="mini">预警设置</el-button>
  20. <el-button type="primary" size="mini" @click="handleMerge"
  21. >合批</el-button
  22. >
  23. <el-button type="danger" size="mini">延期申请</el-button>
  24. <el-button type="danger" size="mini">变更申请</el-button>
  25. <el-button
  26. type="success"
  27. size="mini"
  28. v-if="timeDimensionPlanType == 3"
  29. @click="factAdd(1)"
  30. >新增</el-button
  31. >
  32. </div>
  33. <el-tabs v-model="activeName" type="card" size="mini">
  34. <el-tab-pane label="未发布" name="first"></el-tab-pane>
  35. <el-tab-pane label="已发布" name="second"></el-tab-pane>
  36. <el-tab-pane label="已变更" name="change"></el-tab-pane>
  37. </el-tabs>
  38. <!-- 数据表格 -->
  39. <ele-pro-table
  40. ref="table"
  41. :key="activeName"
  42. :initLoad="false"
  43. :columns="newColumns"
  44. :datasource="datasource"
  45. row-key="code"
  46. :selection.sync="selection"
  47. :cache-key="`${activeName}ProductionPlanTable`"
  48. @sort-change="onSortChange"
  49. autoAmendPage
  50. :parse-data="parseData"
  51. @update:selection="handleSelectionChange"
  52. >
  53. <template v-slot:batchNo="{ row }">
  54. <el-link type="primary" :underline="false">
  55. <!-- @click.stop="splitDetails(1, row)" -->
  56. <el-tag type="success" size="mini" v-if="row.joinPlanCode">
  57. 拆</el-tag
  58. >
  59. <el-tag
  60. type="danger"
  61. size="mini"
  62. v-if="row.splitBatch == 2"
  63. @click.stop="splitDetails(2, row)"
  64. >
  65. 合</el-tag
  66. >
  67. {{ row.batchNo }}
  68. </el-link>
  69. </template>
  70. <template v-slot:selection="{ row }">
  71. <div class="check_box" @click="handOneSelection(row)">
  72. <div class="check act_check" v-if="selectionFilter(row)">
  73. <i class="el-icon-check"></i>
  74. </div>
  75. <div class="check" v-else></div>
  76. </div>
  77. </template>
  78. <template v-slot:code="{ row }">
  79. <el-link type="primary" :underline="false" @click="goDetail(row)">
  80. {{ row.code }}
  81. </el-link>
  82. </template>
  83. <template v-slot:salesCode="{ row }">
  84. {{ row.salesCode }}
  85. </template>
  86. <template v-slot:priority="{ row }">
  87. <div style="display: flex">
  88. <el-input
  89. v-model="row.priority"
  90. type="number"
  91. size="mini"
  92. :min="0"
  93. :max="10"
  94. @change="priorityChange(row)"
  95. style="width: 80px"
  96. >
  97. </el-input>
  98. <el-popover
  99. placement="right"
  100. width="200"
  101. trigger="hover"
  102. content="数值越大优先级越高(0-3普通, 4-6优先, 7-10紧急)"
  103. >
  104. <div class="sort-wrap" slot="reference">
  105. <i class="el-icon-caret-top" @click="sortTop(row)"></i>
  106. <i class="el-icon-caret-bottom" @click="sortBottom(row)"></i>
  107. </div>
  108. </el-popover>
  109. </div>
  110. </template>
  111. <template v-slot:productNum="{ row }">
  112. {{ row.productNum }} {{ row.unit }}
  113. </template>
  114. <template v-slot:productWeight="{ row }">
  115. {{ row.productWeight }} {{ row.weightUnit }}
  116. </template>
  117. <template v-slot:requiredFormingNum="{ row }">
  118. {{ row.requiredFormingNum }} {{ row.unit }}
  119. </template>
  120. <template v-slot:newSumOrderWeight="{ row }">
  121. {{ row.newSumOrderWeight }} {{ row.newWeightUnit }}
  122. </template>
  123. <template v-slot:status="{ row }">
  124. <span :class="{ 'ele-text-danger': row.status == 3 }">
  125. {{ statusFormatter(row.status) }}
  126. </span>
  127. </template>
  128. <!-- 操作列 -->
  129. <template v-slot:action="{ row }">
  130. <el-link
  131. type="primary"
  132. :underline="false"
  133. v-if="row.status == 2 && row.splitBatch != 1"
  134. @click="handleOrderPublish(1, row)"
  135. >
  136. 发布
  137. </el-link>
  138. <el-link
  139. type="primary"
  140. v-if="row.status == 3"
  141. :underline="false"
  142. @click="handleOrderPublish(2, row)"
  143. >
  144. 重新发布
  145. </el-link>
  146. <el-link
  147. v-if="
  148. row.splitBatch != 2 &&
  149. row.splitBatch != 1 &&
  150. !row.joinPlanCode &&
  151. activeName == 'first'
  152. "
  153. type="primary"
  154. :underline="false"
  155. @click="planEdit(row)"
  156. >
  157. 修改
  158. </el-link>
  159. <el-link
  160. v-if="row.joinPlanCode && activeName == 'first' && row.status != 4"
  161. type="danger"
  162. :underline="false"
  163. @click="handleDel(row)"
  164. >
  165. 删除
  166. </el-link>
  167. <el-link
  168. v-if="
  169. clientEnvironmentId != 4 &&
  170. activeName == 'first' &&
  171. row.splitBatch != 2 &&
  172. !row.joinPlanCode
  173. "
  174. type="primary"
  175. :underline="false"
  176. @click="toUnpack(row)"
  177. >
  178. 拆批
  179. </el-link>
  180. </template>
  181. </ele-pro-table>
  182. </el-card>
  183. <unpackDialog ref="unpackRef" @success="reload" />
  184. <mergeDialog ref="mergeRef" @success="reload"></mergeDialog>
  185. <unpackDetails ref="DetailsRef"></unpackDetails>
  186. <disassemblePlanPop
  187. ref="disassemblePlanRef"
  188. @close="reload"
  189. ></disassemblePlanPop>
  190. <factoryAdd
  191. v-if="factoryShow"
  192. :factoryType="factoryType"
  193. :factoryObj="factoryObj"
  194. @close="factoryClose"
  195. ></factoryAdd>
  196. </div>
  197. </template>
  198. <script>
  199. import { getList, del, updatePriority } from '@/api/productionPlan/index.js';
  200. import productionPlanSearch from './components/productionPlan-search.vue';
  201. import unpackDialog from './components/unpackDialog.vue';
  202. import mergeDialog from './components/mergeDialog.vue';
  203. import unpackDetails from './components/unpackDetails.vue';
  204. import disassemblePlanPop from './components/disassemblePlanPop.vue';
  205. import factoryAdd from './components/factoryAdd/index.vue';
  206. import { release } from '@/api/productionPlan/order.js';
  207. import { getCode } from '@/api/codeManagement';
  208. import { fieldModel } from '@/api/saleOrder';
  209. import { debounce } from 'lodash';
  210. export default {
  211. components: {
  212. productionPlanSearch,
  213. unpackDialog,
  214. mergeDialog,
  215. unpackDetails,
  216. disassemblePlanPop,
  217. factoryAdd
  218. },
  219. props: {
  220. timeDimensionPlanType: { type: Number, default: 1 }
  221. },
  222. data() {
  223. return {
  224. activeName: 'first',
  225. // 加载状态
  226. loading: false,
  227. pageType: 'add',
  228. dialogTitle: '',
  229. isBindPlan: false,
  230. statusOpt: {
  231. first: [
  232. { label: '所有状态', value: '3,2' },
  233. { label: '待发布', value: '2' },
  234. { label: '发布失败', value: '3' },
  235. { label: '已发布', value: '4' }
  236. ],
  237. second: [
  238. { label: '所有状态', value: '7,4,5,6' },
  239. { label: '待生产', value: '4' },
  240. { label: '生产中', value: '5' },
  241. { label: '已完成', value: '6' },
  242. { label: '已延期', value: '7' }
  243. ],
  244. change: [{ label: '已变更', value: '9' }]
  245. },
  246. planType: [
  247. { label: '所有计划类型', value: null },
  248. { label: '内销计划', value: '1' },
  249. { label: '外销计划', value: '2' },
  250. { label: '预制计划', value: '3' }
  251. ],
  252. newColumns: [],
  253. selection: [],
  254. factoryShow: false,
  255. factoryType: 1,
  256. factoryObj: {}
  257. };
  258. },
  259. computed: {
  260. clientEnvironmentId() {
  261. return this.$store.state.user.info.clientEnvironmentId;
  262. },
  263. // 表格列配置
  264. columns() {
  265. const opt = {
  266. first: [],
  267. second: [
  268. {
  269. prop: 'releaseTime',
  270. label: '工单发布日期',
  271. align: 'center',
  272. minWidth: 110
  273. },
  274. {
  275. prop: 'planFormingTime',
  276. label: '预测生产日期',
  277. align: 'center',
  278. minWidth: 110
  279. },
  280. {
  281. prop: 'deliveryTime',
  282. label: '预测交货日期',
  283. align: 'center',
  284. minWidth: 110
  285. },
  286. {
  287. prop: 'formingTime',
  288. label: '实际交货日期',
  289. align: 'center',
  290. minWidth: 110
  291. }
  292. ],
  293. change: []
  294. };
  295. return [
  296. {
  297. width: 45,
  298. type: 'selection',
  299. columnKey: 'selection',
  300. align: 'center',
  301. slot: 'selection'
  302. },
  303. {
  304. columnKey: 'index',
  305. label: '序号',
  306. type: 'index',
  307. width: 55,
  308. align: 'center',
  309. showOverflowTooltip: true
  310. },
  311. {
  312. slot: 'batchNo',
  313. prop: 'batchNo',
  314. label: '批次号',
  315. align: 'center',
  316. minWidth: 140,
  317. sortable: true
  318. },
  319. {
  320. slot: 'code',
  321. prop: 'code',
  322. action: 'code',
  323. label: '计划编号',
  324. align: 'center',
  325. minWidth: 160,
  326. sortable: true
  327. },
  328. {
  329. prop: 'salesCode',
  330. action: 'salesCode',
  331. label: '销售订单号',
  332. align: 'center',
  333. minWidth: 160
  334. },
  335. {
  336. prop: 'productCode',
  337. label: '编码',
  338. align: 'center',
  339. minWidth: 140
  340. },
  341. {
  342. prop: 'productName',
  343. label: '名称',
  344. align: 'center',
  345. minWidth: 140
  346. },
  347. {
  348. prop: 'brandNo',
  349. label: '牌号',
  350. align: 'center',
  351. showOverflowTooltip: true
  352. },
  353. {
  354. prop: 'specification',
  355. label: '规格',
  356. align: 'center',
  357. minWidth: 150,
  358. showOverflowTooltip: true
  359. },
  360. {
  361. prop: 'model',
  362. label: '型号',
  363. align: 'center',
  364. showOverflowTooltip: true
  365. },
  366. {
  367. prop: 'priority',
  368. label: '优先级',
  369. align: 'center',
  370. minWidth: 120,
  371. slot: 'priority',
  372. sortable: 'custom'
  373. },
  374. {
  375. prop: 'produceRoutingName',
  376. label: '工艺路线',
  377. align: 'center',
  378. width: 140,
  379. showOverflowTooltip: true
  380. },
  381. {
  382. prop: 'productNum',
  383. label: '计划数量',
  384. align: 'center',
  385. slot: 'productNum'
  386. },
  387. {
  388. prop: 'productWeight',
  389. label: '计划重量',
  390. align: 'center',
  391. slot: 'productWeight'
  392. },
  393. {
  394. prop: 'requiredFormingNum',
  395. label: '要求生产数量',
  396. align: 'center',
  397. slot: 'requiredFormingNum'
  398. },
  399. {
  400. prop: 'newSumOrderWeight',
  401. label: '要求生产重量',
  402. align: 'center',
  403. slot: 'newSumOrderWeight'
  404. },
  405. {
  406. prop: 'scheduleStatusName',
  407. label: '进度状态',
  408. align: 'center',
  409. minWidth: 100
  410. },
  411. {
  412. prop: '',
  413. label: '已排产数量',
  414. align: 'center',
  415. showOverflowTooltip: true
  416. },
  417. {
  418. prop: '',
  419. label: '未排产数量',
  420. align: 'center',
  421. showOverflowTooltip: true
  422. },
  423. {
  424. prop: '',
  425. label: '已生产数量',
  426. align: 'center',
  427. showOverflowTooltip: true
  428. },
  429. {
  430. prop: '',
  431. label: '未生产数量',
  432. align: 'center',
  433. showOverflowTooltip: true
  434. },
  435. {
  436. prop: 'factoryName',
  437. label: '所属工厂',
  438. align: 'center'
  439. },
  440. {
  441. prop: '',
  442. label: '合格品数',
  443. align: 'center'
  444. },
  445. {
  446. prop: '',
  447. label: '不合格品数',
  448. align: 'center'
  449. },
  450. {
  451. prop: '',
  452. label: '合格率',
  453. align: 'center'
  454. },
  455. {
  456. prop: 'moCount',
  457. label: '模数',
  458. align: 'center',
  459. show: this.clientEnvironmentId == '4'
  460. },
  461. {
  462. prop: 'blockCount',
  463. label: '块数',
  464. align: 'center',
  465. show: this.clientEnvironmentId == '4'
  466. },
  467. {
  468. prop: 'noWordCount',
  469. label: '未排程块数',
  470. align: 'center',
  471. show: this.clientEnvironmentId == '4',
  472. minWidth: 110
  473. },
  474. {
  475. prop: 'reqMoldTime',
  476. label: '计划完成日期',
  477. align: 'center',
  478. width: 110,
  479. showOverflowTooltip: true
  480. },
  481. {
  482. prop: 'startTime',
  483. label: '计划开始日期',
  484. align: 'center',
  485. width: 110,
  486. showOverflowTooltip: true
  487. },
  488. {
  489. prop: 'endTime',
  490. label: '计划结束日期',
  491. align: 'center',
  492. width: 110,
  493. showOverflowTooltip: true
  494. },
  495. {
  496. prop: 'orderType',
  497. label: '计划类型',
  498. align: 'center',
  499. formatter: (row) => {
  500. const obj = this.planType.find((i) => i.value == row.planType);
  501. return obj && obj.label;
  502. }
  503. },
  504. {
  505. prop: 'version',
  506. label: '版本',
  507. align: 'center',
  508. minWidth: 80
  509. },
  510. {
  511. prop: 'createTime',
  512. label: '创建时间',
  513. align: 'center',
  514. width: 110,
  515. showOverflowTooltip: true
  516. },
  517. {
  518. columnKey: 'status',
  519. slot: 'status',
  520. label: '状态',
  521. align: 'center',
  522. formatter: (row) => {
  523. const obj = this.statusOpt[this.activeName].find(
  524. (i) => i.value == row.status
  525. );
  526. return obj && obj.label;
  527. }
  528. }
  529. ];
  530. }
  531. },
  532. created() {
  533. this.getFieldModel();
  534. },
  535. methods: {
  536. statusFormatter(status) {
  537. const obj = this.statusOpt[this.activeName].find(
  538. (i) => i.value == status
  539. );
  540. return obj && obj.label;
  541. },
  542. /* 表格数据源 */
  543. datasource({ page, limit, where }) {
  544. return getList({
  545. pageNum: page,
  546. timeDimensionPlanType: this.timeDimensionPlanType,
  547. size: limit,
  548. ...where,
  549. ...this.sort
  550. });
  551. },
  552. // 发布工单
  553. handleOrderPublish(type, row) {
  554. if (!row.produceRoutingName) {
  555. return this.$message.error('请先选择工艺路线!');
  556. }
  557. this.$confirm('发布工单后不可撤回,确定发布吗?', '发布确认')
  558. .then(async () => {
  559. const loading = this.$loading({
  560. lock: true,
  561. fullscreen: true,
  562. text: '工单发布中...'
  563. });
  564. try {
  565. let code = row.workOrderCode;
  566. if (!code) {
  567. code = await getCode('product_order_code');
  568. }
  569. // 反显对象会报错 status
  570. const data = await release([row.id]);
  571. if (data || data === 0) {
  572. this.$message.success('发布成功!');
  573. } else {
  574. this.$message.error('发布失败,请重新发布!');
  575. }
  576. this.reload();
  577. } catch (error) {
  578. console.error(error);
  579. }
  580. loading.close();
  581. })
  582. .catch((err) => {
  583. console.error(err);
  584. });
  585. // this.$router.push({
  586. // path: '/productionPlan/workOrderPublish',
  587. // query: {
  588. // type,
  589. // id: row.id
  590. // }
  591. // });
  592. },
  593. // 修改计划
  594. planEdit(row) {
  595. if (row.timeDimensionPlanType == 3) {
  596. this.factoryObj = row;
  597. this.factoryType = 2;
  598. this.factoryShow = true;
  599. } else {
  600. this.$router.push({
  601. path: '/saleOrder/salesToProduction',
  602. query: {
  603. type: 'edit',
  604. id: row.id
  605. }
  606. });
  607. }
  608. },
  609. getFieldModel() {
  610. fieldModel({ fieldModel: 't_main_category' }).then((res) => {
  611. const privateColumn = [];
  612. if (this.activeName == 'first') {
  613. privateColumn.push({
  614. columnKey: 'action',
  615. label: '操作',
  616. width: 148,
  617. align: 'center',
  618. resizable: false,
  619. fixed: 'right',
  620. slot: 'action'
  621. });
  622. } else {
  623. privateColumn = [];
  624. }
  625. let newRes = res.map((m) => {
  626. return {
  627. prop: 'extField.' + m.prop,
  628. label: m.label,
  629. align: 'center',
  630. showOverflowTooltip: true
  631. };
  632. });
  633. this.newColumns = [...this.columns, ...newRes, ...privateColumn];
  634. this.$forceUpdate();
  635. });
  636. },
  637. handleTabChange() {
  638. this.$refs.searchRef.reset();
  639. },
  640. /* 刷新表格 */
  641. reload(where) {
  642. this.$nextTick(() => {
  643. this.$refs.table.reload({ page: 1, where });
  644. });
  645. },
  646. /* 数据转为树形结构 */
  647. parseData(data) {
  648. return {
  649. ...data,
  650. list: this.$util.toTreeData({
  651. data: data.list,
  652. count: data.total,
  653. idField: 'code',
  654. parentIdField: 'joinPlanCode'
  655. })
  656. };
  657. },
  658. handleDel(row) {
  659. this.$confirm('确定删除当前数据?', '提示')
  660. .then(() => {
  661. del(row.id).then((res) => {
  662. this.reload();
  663. this.$message.success('删除成功');
  664. });
  665. })
  666. .catch(() => {});
  667. },
  668. handleSelectionChange(list) {
  669. if (list.length > 1) {
  670. let _list = [];
  671. list.forEach((e) => {
  672. if (e.childList.length > 0 && e.splitBatch != 2) {
  673. _list.push(...e.childList);
  674. } else {
  675. _list.push(e);
  676. }
  677. });
  678. this.selection = _list;
  679. } else {
  680. this.selection = [];
  681. }
  682. },
  683. handOneSelection(row) {
  684. const index = this.selection.findIndex((item) => item.id == row.id);
  685. if (index >= 0) {
  686. this.selection.splice(index, 1);
  687. } else {
  688. this.selection.push(row);
  689. }
  690. },
  691. selectionFilter(row) {
  692. return this.selection.findIndex((item) => item.id == row.id) >= 0;
  693. },
  694. goDetail({ id }) {
  695. this.$router.push({
  696. path: '/productionPlan/detail/' + id
  697. });
  698. },
  699. // 计划分解
  700. disassemblePlan() {
  701. if (this.selection.length != 1) {
  702. return this.$message.warning('计划分解只能选择一个计划!');
  703. }
  704. this.$refs.disassemblePlanRef.open(this.selection[0]);
  705. },
  706. // 拆批
  707. toUnpack(row) {
  708. if (!row.batchNo) {
  709. return this.$message.error('请先填写批次号!');
  710. }
  711. this.$refs.unpackRef.open(row);
  712. },
  713. // 合并
  714. handleMerge() {
  715. if (this.selection.length <= 1) {
  716. return this.$message.warning('请先勾选二个或多个计划!');
  717. }
  718. const productCode = this.selection[0].productCode;
  719. const produceRoutingId = this.selection[0].produceRoutingId;
  720. for (var i = 0; i < this.selection.length; i++) {
  721. if (productCode != this.selection[i].productCode) {
  722. return this.$message.warning('产品编码不一致!');
  723. }
  724. if (produceRoutingId != this.selection[i].produceRoutingId) {
  725. return this.$message.warning('工艺路线不一致!');
  726. }
  727. }
  728. this.$refs.mergeRef.open(this.selection);
  729. console.log(this.selection);
  730. },
  731. splitDetails(type, row) {
  732. this.$refs.DetailsRef.open(type, row);
  733. },
  734. factAdd(type) {
  735. this.factoryType = type;
  736. this.factoryShow = true;
  737. },
  738. factoryClose(val) {
  739. this.factoryShow = false;
  740. if (val) {
  741. this.reload();
  742. }
  743. },
  744. onSortChange(e) {
  745. let sort = {
  746. orderBy: e.order,
  747. sortName: e.prop
  748. };
  749. this.sort = sort;
  750. this.reload();
  751. },
  752. sortTop(row) {
  753. row.priority = Number(row.priority) + 1;
  754. this.priorityChange(row);
  755. },
  756. sortBottom(row) {
  757. if (row.priority <= 1) {
  758. return;
  759. }
  760. row.priority = Number(row.priority) - 1;
  761. this.priorityChange(row);
  762. },
  763. priorityChange(row) {
  764. if (row.priority > 10) {
  765. row.priority = 10; // 如果大于 10,则设置为 10
  766. } else if (row.priority < 0) {
  767. row.priority = 0; // 如果小于 0,则设置为 0
  768. }
  769. this.priorityFn(row);
  770. },
  771. priorityFn: debounce(function (row) {
  772. let params = {
  773. id: row.id,
  774. priority: row.priority
  775. };
  776. updatePriority(params).then((res) => {});
  777. }, 800)
  778. }
  779. };
  780. </script>
  781. <style lang="scss" scoped>
  782. .btn_box {
  783. margin-bottom: 6px;
  784. }
  785. .check_box {
  786. width: 100%;
  787. display: flex;
  788. align-items: center;
  789. justify-content: center;
  790. cursor: pointer;
  791. }
  792. .check {
  793. width: 14px;
  794. height: 14px;
  795. border: 1px solid #dddddd;
  796. display: flex;
  797. align-items: center;
  798. justify-content: center;
  799. }
  800. .act_check {
  801. border: 1px solid #409eff;
  802. background: #409eff;
  803. .el-icon-check {
  804. color: #fff;
  805. font-size: 10px;
  806. }
  807. }
  808. </style>