BST_two.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799
  1. <template>
  2. <div>
  3. <FullPage
  4. title="生产排产列表"
  5. :list="set_list"
  6. @init="init"
  7. @searchData="searchData"
  8. @selectTable="selectTable"
  9. @changePage="changePage"
  10. @changeSize="changeSize"
  11. :tableColums="computedTable"
  12. :tableData="tableData"
  13. :showPage="false"
  14. :page_index="page_index"
  15. :total="total"
  16. >
  17. <div slot="titleButton">
  18. <Button
  19. v-if="persimissionData['分类派工'] || persimissionData.all"
  20. type="primary"
  21. style="margin-right:10px"
  22. @click="handleDispatchType(selects)"
  23. ghost
  24. >批量派工</Button
  25. >
  26. <Button
  27. v-if="persimissionData['批量派工单'] || persimissionData.all"
  28. type="primary"
  29. @click="dispatchList(selects)"
  30. ghost
  31. >批量派工单</Button
  32. >
  33. </div>
  34. <div slot="navButton">
  35. <Button
  36. v-if="persimissionData['表头设置'] || persimissionData.all"
  37. @click="setupTableHeader"
  38. type="primary"
  39. ghost
  40. icon="ios-cog"
  41. >设置</Button
  42. >
  43. </div>
  44. <template slot="basicTypeSet" slot-scope="{ row }">
  45. <div>
  46. <span
  47. v-for="item in warningList"
  48. :key="item.id"
  49. :style="{ color: item.color }"
  50. v-show="item.id == row.warning_state"
  51. >{{ item.title }}</span
  52. >
  53. </div>
  54. </template>
  55. <template slot="set" slot-scope="{ row }">
  56. <div>
  57. <a
  58. v-if="persimissionData['详情'] || persimissionData.all"
  59. style="margin:0 5px"
  60. @click="goDetial(row)"
  61. >详情</a
  62. >
  63. <a
  64. v-if="persimissionData['派工单'] || persimissionData.all"
  65. style="margin:0 5px"
  66. @click="dispatchList(row)"
  67. >派工单</a
  68. >
  69. </div>
  70. </template>
  71. <div>
  72. <Modal
  73. :width="1064"
  74. class-name="vertical-center-modal"
  75. v-model="showTableColums"
  76. title="设置表头"
  77. >
  78. <Form>
  79. <FormItem label="订单信息:">
  80. <div style="width:100%;display:flex;">
  81. <CheckboxGroup style="width:100%">
  82. <Checkbox label="香蕉"></Checkbox>
  83. <Checkbox label="苹果"></Checkbox>
  84. <Checkbox label="西瓜"></Checkbox>
  85. <Checkbox label="香蕉"></Checkbox>
  86. </CheckboxGroup>
  87. </div>
  88. </FormItem>
  89. </Form>
  90. </Modal>
  91. </div>
  92. <template slot="pageSlot">
  93. <div class="pageSlotStyle">
  94. <Page
  95. :page-size-opts="[10, 20, 30, 40, 100, 1000]"
  96. @on-page-size-change="changeSize"
  97. @on-change="changePage"
  98. :current="page_index"
  99. show-total
  100. :total="total"
  101. show-sizer
  102. :page-size="page_size"
  103. />
  104. </div>
  105. </template>
  106. </FullPage>
  107. <Modal
  108. v-model="showModal"
  109. title="设置"
  110. @on-ok="handleModalOk"
  111. @on-cancel="showModal = false"
  112. >
  113. <div class="modal_content">
  114. <Tabs
  115. value="name1"
  116. style="max-height: 700px; overflow: hidden; overflow-y: auto"
  117. >
  118. <TabPane label="表单设置" name="name1">
  119. <Table
  120. :columns="formModalColumns"
  121. border
  122. draggable
  123. @on-drag-drop="(a, b) => onDragDrop(a, b, formModalTableData, 1)"
  124. :data="formModalTableData"
  125. ></Table>
  126. </TabPane>
  127. <TabPane label="表头设置" name="name2">
  128. <Table
  129. :columns="tableModalColumns"
  130. border
  131. draggable
  132. @on-drag-drop="(a, b) => onDragDrop(a, b, tableModalTableData, 2)"
  133. :data="tableModalTableData"
  134. ></Table>
  135. </TabPane>
  136. </Tabs>
  137. </div>
  138. </Modal>
  139. </div>
  140. </template>
  141. <script>
  142. import { mapState } from "vuex";
  143. export default {
  144. data() {
  145. return {
  146. tableModalColumns: [
  147. {
  148. title: "是否展示",
  149. align: "center",
  150. key: "is_show",
  151. minWidth: 60,
  152. render: (h, params) => {
  153. const { index } = params;
  154. const currentRow = JSON.parse(
  155. JSON.stringify(this.tableModalTableData[index])
  156. );
  157. return h("Checkbox", {
  158. props: {
  159. value: currentRow.is_show,
  160. },
  161. on: {
  162. "on-change": (e) => {
  163. currentRow.is_show = e;
  164. this.tableModalTableData.splice(index, 1, currentRow);
  165. },
  166. },
  167. });
  168. },
  169. },
  170. {
  171. title: "字段名",
  172. align: "center",
  173. key: "value",
  174. minWidth: 100,
  175. },
  176. {
  177. title: "展示名称",
  178. align: "center",
  179. key: "title",
  180. minWidth: 100,
  181. render: (h, params) => {
  182. const { index } = params;
  183. const currentRow = JSON.parse(
  184. JSON.stringify(this.tableModalTableData[index])
  185. );
  186. return h("Input", {
  187. props: {
  188. value: currentRow.title,
  189. type: "text",
  190. disabled: currentRow.title == "全选" ? true : false,
  191. },
  192. on: {
  193. "on-change": (e) => {
  194. currentRow.title = e.target.value;
  195. this.tableModalTableData.splice(index, 1, currentRow);
  196. },
  197. },
  198. });
  199. },
  200. },
  201. ],
  202. tableModalTableData: [
  203. { is_show: true, key: "selection", value: "全选", title: "全选" },
  204. {
  205. is_show: true,
  206. key: "order_no",
  207. value: "订单编号",
  208. title: "订单编号",
  209. },
  210. {
  211. is_show: true,
  212. key: "residential_name",
  213. value: "项目名称",
  214. title: "项目名称",
  215. },
  216. { is_show: true, key: "nickname", value: "业务员", title: "业务员" },
  217. {
  218. is_show: true,
  219. key: "client_name",
  220. value: "客户姓名",
  221. title: "客户姓名",
  222. },
  223. { is_show: true, key: "address", value: "客户地址", title: "客户地址" },
  224. {
  225. is_show: true,
  226. key: "leading_name",
  227. value: "负责人",
  228. title: "负责人",
  229. },
  230. {
  231. is_show: true,
  232. key: "warning_state",
  233. value: "紧急程度",
  234. title: "紧急程度",
  235. },
  236. {
  237. is_show: true,
  238. key: "predict_price",
  239. value: "产品总价",
  240. title: "产品总价",
  241. },
  242. {
  243. is_show: true,
  244. key: "fax_price",
  245. value: "折扣金额",
  246. title: "折扣金额",
  247. },
  248. { is_show: true, key: "price", value: "订单金额", title: "订单金额" },
  249. { is_show: true, key: "get_money", value: "已收款", title: "已收款" },
  250. { is_show: true, key: "unget_money", value: "未收款", title: "未收款" },
  251. { is_show: true, key: "remark", value: "备注", title: "备注" },
  252. {
  253. is_show: true,
  254. key: "start_time",
  255. value: "订单开始日期",
  256. title: "订单开始日期",
  257. },
  258. {
  259. is_show: true,
  260. key: "end_time",
  261. value: "订单交付日期",
  262. title: "订单交付日期",
  263. },
  264. {
  265. is_show: true,
  266. key: "complete_rate",
  267. value: "生产进度",
  268. title: "生产进度",
  269. },
  270. { is_show: true, key: "state", value: "订单状态", title: "订单状态" },
  271. { is_show: true, key: "crt_name", value: "制单人", title: "制单人" },
  272. {
  273. is_show: true,
  274. key: "crt_time",
  275. value: "订单创建时间",
  276. title: "订单创建时间",
  277. },
  278. { is_show: true, key: "set", value: "操作", title: "操作" },
  279. ],
  280. formModalColumns: [
  281. {
  282. title: "是否展示",
  283. align: "center",
  284. key: "is_show",
  285. minWidth: 60,
  286. render: (h, params) => {
  287. const { index } = params;
  288. const currentRow = JSON.parse(
  289. JSON.stringify(this.formModalTableData[index])
  290. );
  291. return h("Checkbox", {
  292. props: {
  293. value: currentRow.is_show,
  294. },
  295. on: {
  296. "on-change": (e) => {
  297. currentRow.is_show = e;
  298. this.formModalTableData.splice(index, 1, currentRow);
  299. },
  300. },
  301. });
  302. },
  303. },
  304. {
  305. title: "字段名",
  306. align: "center",
  307. key: "value",
  308. minWidth: 100,
  309. },
  310. {
  311. title: "展示名称",
  312. align: "center",
  313. key: "title",
  314. minWidth: 100,
  315. render: (h, params) => {
  316. const { index } = params;
  317. const currentRow = JSON.parse(
  318. JSON.stringify(this.formModalTableData[index])
  319. );
  320. return h("Input", {
  321. props: {
  322. value: currentRow.title,
  323. type: "text",
  324. },
  325. on: {
  326. "on-change": (e) => {
  327. currentRow.title = e.target.value;
  328. this.formModalTableData.splice(index, 1, currentRow);
  329. },
  330. },
  331. });
  332. },
  333. },
  334. ],
  335. formModalTableData: [
  336. {
  337. is_show: true,
  338. key: "order_no",
  339. value: "订单编号",
  340. title: "订单编号",
  341. },
  342. {
  343. is_show: true,
  344. key: "residential_name",
  345. value: "项目名称",
  346. title: "项目名称",
  347. },
  348. {
  349. is_show: true,
  350. key: "client_name",
  351. value: "客户姓名",
  352. title: "客户姓名",
  353. },
  354. { is_show: true, key: "address", value: "客户地址", title: "客户地址" },
  355. { is_show: true, key: "salesman", value: "业务员", title: "业务员" },
  356. { is_show: true, key: "state", value: "订单状态", title: "订单状态" },
  357. { is_show: true, key: "crt_id", value: "制单人", title: "制单人" },
  358. {
  359. is_show: true,
  360. key: "leading_name",
  361. value: "负责人",
  362. title: "负责人",
  363. },
  364. {
  365. is_show: true,
  366. key: "warning_state",
  367. value: "紧急程度",
  368. title: "紧急程度",
  369. },
  370. {
  371. is_show: true,
  372. key: "",
  373. value: "订单创建时间",
  374. title: "订单创建时间",
  375. },
  376. ],
  377. tableColums: [
  378. {
  379. type: "selection",
  380. title: "全选",
  381. key: "selection",
  382. fixed: "left",
  383. width: "90",
  384. align: "center",
  385. },
  386. { title: "订单编号", align: "center", key: "order_no", minWidth: 200 },
  387. { title: "计划单号", align: "center", key: "plan_no", minWidth: 200 },
  388. {
  389. title: "订单类型",
  390. align: "center",
  391. key: "order_type",
  392. minWidth: 150,
  393. render(h, params) {
  394. return h("span", {}, params.row.order_type == 1 ? "工装" : "家装");
  395. },
  396. },
  397. {
  398. title: "订单状态",
  399. align: "center",
  400. key: "state",
  401. minWidth: 150,
  402. render: (h, params) =>
  403. h(
  404. "span",
  405. {},
  406. params.row.state == 0
  407. ? "未派工"
  408. : params.row.state == 1
  409. ? "派工中"
  410. : params.row.state == 2
  411. ? "完成"
  412. : ""
  413. ),
  414. },
  415. { title: "业务员", align: "center", key: "nickname", minWidth: 150 },
  416. {
  417. title: "紧急程度",
  418. align: "center",
  419. key: "warning_state",
  420. minWidth: 150,
  421. slot: "basicTypeSet",
  422. },
  423. {
  424. title: "项目名称",
  425. align: "center",
  426. key: "residential_name",
  427. minWidth: 200,
  428. },
  429. {
  430. title: "计划开始时间",
  431. align: "center",
  432. minWidth: 200,
  433. key: "plan_start_time",
  434. render: (h, params) =>
  435. h("span", {}, this.func.replaceDate(params.row.plan_start_time, 1)),
  436. },
  437. {
  438. title: "计划结束时间",
  439. align: "center",
  440. minWidth: 200,
  441. key: "plan_end_time",
  442. render: (h, params) =>
  443. h("span", {}, this.func.replaceDate(params.row.plan_end_time, 1)),
  444. },
  445. {
  446. title: "生产进度",
  447. align: "center",
  448. key: "complete_rate",
  449. minWidth: 100,
  450. render: (h, params) =>
  451. h("span", {}, parseInt(params.row.complete_rate * 100) + "%"),
  452. },
  453. {
  454. title: "预估交付日期",
  455. align: "center",
  456. key: "predict_time",
  457. minWidth: 200,
  458. render: (h, params) =>
  459. h("span", {}, this.func.replaceDate(params.row.predict_time, 1)),
  460. },
  461. {
  462. title: "操作",
  463. align: "center",
  464. key: "set",
  465. slot: "set",
  466. fixed: "right",
  467. width: "150",
  468. },
  469. ],
  470. tableData: [],
  471. showModal:false,
  472. page_index: 1,
  473. currencyPageId:null,
  474. page_size: 10,
  475. total: 0,
  476. proxyObj: {},
  477. showTableColums: false,
  478. selects: [],
  479. tableheaders: [],
  480. userList: [],
  481. //详情页返回保留搜索数据
  482. corssPageData: localStorage.getItem("corssPageData")
  483. ? JSON.parse(localStorage.getItem("corssPageData"))
  484. : {},
  485. warningList: [],
  486. };
  487. },
  488. beforeRouteEnter(to, from, next) {
  489. next((vm) => {
  490. if (from.path != "/cms/productionorderlist/productionplanlist/details") {
  491. localStorage.removeItem("corssPageData");
  492. } else {
  493. vm.firstEnter = 1;
  494. }
  495. });
  496. },
  497. beforeRouteLeave(to, from, next) {
  498. if (to.path == "/cms/productionorderlist/productionplanlist/details") {
  499. (this.corssPageData.page_index = this.page_index),
  500. (this.corssPageData.page_size = this.page_size),
  501. localStorage.setItem(
  502. "corssPageData",
  503. JSON.stringify(this.corssPageData)
  504. );
  505. } else {
  506. localStorage.removeItem("corssPageData");
  507. }
  508. next((vm) => {});
  509. },
  510. created() {
  511. // 获取紧急程度
  512. this.axios.get("/api/warning_list").then((res) => {
  513. this.warningList = res.data.data;
  514. });
  515. this.axios
  516. .get("/api/employee_list")
  517. .then((res) => (this.userList = res.data));
  518. //this.axios.get('/api/employee_list').then(res => { this.employeeList = res.data })
  519. this.currencyPageId = this.$store.state.navgationData[0].sub[0].sub[0].id;
  520. },
  521. computed: {
  522. ...mapState(["persimissionData"]),
  523. computedTable() {
  524. // if (this.tableheaders.length < 1) {
  525. return this.tableColums;
  526. // }
  527. // return this.func.computedHeader(this.tableheaders, this.tableColums)
  528. },
  529. set_list() {
  530. return [
  531. {
  532. title: "订单编号",
  533. name: "Input",
  534. serverName: "order_no",
  535. placeholder: "请输入订单编号",
  536. value: "",
  537. },
  538. {
  539. title: "项目名称",
  540. name: "Input",
  541. serverName: "residential_name",
  542. placeholder: "请选择项目名称",
  543. value: "",
  544. },
  545. {
  546. title: "订单类型",
  547. name: "Select",
  548. placeholder: "请选择",
  549. serverName: "order_type",
  550. value: "",
  551. option: [
  552. { label: "工装", value: 1 },
  553. { label: "家装", value: 0 },
  554. ],
  555. },
  556. {
  557. title: "计划单号",
  558. name: "Input",
  559. serverName: "plan_no",
  560. placeholder: "请填写计划单号",
  561. value: "",
  562. },
  563. {
  564. title: "业务员",
  565. name: "Select",
  566. serverName: "nickname",
  567. placeholder: "请选择",
  568. value: "",
  569. optionName: "nickname",
  570. optionValue: "id",
  571. option: this.userList,
  572. },
  573. {
  574. title: "计划开始时间",
  575. name: "Input",
  576. start_server: "start_time",
  577. end_server: "end_time",
  578. start_value: "",
  579. end_value: "",
  580. isDate: true,
  581. serverName: "id2",
  582. start_placeholder: "开始日期",
  583. end_placeholder: "结束日期",
  584. },
  585. {
  586. title: "紧急程度",
  587. name: "Select",
  588. serverName: "warning_state",
  589. placeholder: "请选择",
  590. value: "",
  591. optionName: "title",
  592. optionValue: "id",
  593. option: this.warningList,
  594. },
  595. {
  596. title: "订单状态",
  597. name: "Select",
  598. placeholder: "请选择",
  599. serverName: "state",
  600. value: "",
  601. option: [
  602. { label: "未派工", value: 0 },
  603. { label: "派工中", value: 1 },
  604. { label: "完成", value: 2 },
  605. ],
  606. },
  607. ];
  608. },
  609. },
  610. methods: {
  611. handleModalOk(){
  612. this.formModalTableData.forEach((element, index) => {
  613. element.sort = index;
  614. });
  615. this.tableModalTableData.forEach((element, index) => {
  616. element.sort = index;
  617. });
  618. this.axios({
  619. method: "post",
  620. url: "/api/update/table",
  621. data: {
  622. id: this.currencyPageId,
  623. result: {
  624. formSet: this.formModalTableData,
  625. tableSet: this.tableModalTableData,
  626. },
  627. },
  628. }).then((res) => {
  629. this.$Message.success(res.msg);
  630. this.init(this.proxyObj);
  631. });
  632. },
  633. init(row) {
  634. const { order_no } = this.$route.query;
  635. if (order_no) {
  636. row.order_no = order_no;
  637. this.set_list[0].value = order_no;
  638. }
  639. row.sub_state = 5;
  640. if (this.firstEnter == 1) {
  641. this.corssPageData = JSON.parse(localStorage.getItem("corssPageData"));
  642. row = this.corssPageData;
  643. this.proxyObj = row;
  644. this.searchData(row);
  645. } else {
  646. this.page_index = 1;
  647. row.page_index = this.page_index;
  648. row.page_size = this.page_size;
  649. this.proxyObj = row;
  650. this.getData(row);
  651. }
  652. },
  653. searchData(row) {
  654. if (this.firstEnter == 1) {
  655. this.page_index = this.corssPageData.page_index;
  656. this.page_size = this.corssPageData.page_size;
  657. this.set_list[0].value = this.corssPageData.order_no;
  658. this.set_list[1].value = this.corssPageData.residential_name;
  659. this.set_list[3].value = this.corssPageData.warning_state;
  660. this.set_list[4].value = this.corssPageData.state;
  661. this.set_list[2].start_value = this.corssPageData.start_time
  662. ? this.corssPageData.start_time
  663. : "";
  664. this.set_list[2].end_value = this.corssPageData.end_time
  665. ? this.corssPageData.end_time
  666. : "";
  667. this.corssPageData.type = this.$route.query.type;
  668. this.getData(this.corssPageData);
  669. } else {
  670. this.page_index = 1;
  671. row.page_index = this.page_index;
  672. row.page_size = this.page_size;
  673. this.corssPageData.order_no = this.set_list[0].value;
  674. this.corssPageData.residential_name = this.set_list[1].value;
  675. this.corssPageData.warning_state = this.set_list[3].value;
  676. this.corssPageData.state = this.set_list[4].value;
  677. this.corssPageData.start_time = this.func.setDate(
  678. this.set_list[2].start_value
  679. );
  680. this.corssPageData.end_time = this.func.setDate(
  681. this.set_list[2].end_value
  682. );
  683. this.proxyObj = row;
  684. this.getData(row);
  685. }
  686. },
  687. changePage(e) {
  688. this.page_index = e;
  689. this.proxyObj.page_index = this.page_index;
  690. this.proxyObj.page_size = this.page_size;
  691. this.getData(this.proxyObj);
  692. },
  693. changeSize(e) {
  694. this.page_size = e;
  695. this.proxyObj.page_size = this.page_size;
  696. this.getData(this.proxyObj);
  697. },
  698. getData(row) {
  699. this.axios("/api/orders_produce_plan_list", { params: row }).then(
  700. (res) => {
  701. this.firstEnter++;
  702. this.tableData = res.data.data;
  703. this.total = res.data.total;
  704. // this.tableheaders = res.data.tableSet || []
  705. }
  706. );
  707. },
  708. setTableColums() {
  709. //设置表头
  710. this.showTableColums = true;
  711. },
  712. goDetial(row) {
  713. this.$router.push({
  714. path: "/cms/productionorderlist/productionplanlist/details",
  715. query: {
  716. order_no: row.order_no,
  717. plan_no: row.plan_no,
  718. },
  719. });
  720. },
  721. onDragDrop(a, b, table, type) {
  722. if (type == 2 && (a == 0 || b == 0)) {
  723. return this.$Message.warning("全选位置不可变");
  724. }
  725. table.splice(b, 0, ...table.splice(a, 1));
  726. },
  727. handleDispatchType(row) {
  728. console.log("row :>> ", row);
  729. this.$router.push({
  730. path: "/cms/Dispatching/Dispatching",
  731. query: {
  732. order_no: row.order_no,
  733. plan_no: row.plan_no,
  734. },
  735. });
  736. },
  737. dispatchList(row) {
  738. this.dispatchOrder({
  739. params: {
  740. order_no: Array.isArray(row) ? this.selects.join(",") : row.order_no,
  741. },
  742. then: () => this.getData(this.proxyObj),
  743. });
  744. },
  745. selectTable(e) {
  746. let result = [];
  747. e.map((v) => result.push(v.order_no));
  748. this.selects = result;
  749. },
  750. setupTableHeader() {
  751. this.showModal = true;
  752. return;
  753. // this.tableheaders.length < 1
  754. // ? (this.tableheaders = this.tableColums.reduce(
  755. // (pre, cur) => pre.concat(cur.key),
  756. // []
  757. // ))
  758. // : "";
  759. // this.$setTableheader({
  760. // list: this.tableColums,
  761. // selects: this.tableheaders,
  762. // then: (result) => {
  763. // this.tableheaders = result;
  764. // this.axios
  765. // .post("/api/update/table", { id: this.$route.query.id, result })
  766. // .then((res) => {
  767. // if (res.code == 200) {
  768. // this.$Message.success(res.msg);
  769. // let data =[];
  770. // for(let i = 0 ; i++ ; i<this.tableColums){
  771. // if(this.tableColums[i].title.indexOf(result)>=0){
  772. // data.push(this.tableColums[i])
  773. // }
  774. // }
  775. // this.computedTable = data
  776. // }
  777. // });
  778. // },
  779. // });
  780. },
  781. },
  782. };
  783. </script>
  784. <style lang="scss" scoped>
  785. .pageSlotStyle {
  786. display: flex;
  787. justify-content: center;
  788. margin-top: 40px;
  789. }
  790. .modal_content {
  791. display: flex;
  792. justify-content: center;
  793. // width: 500px;
  794. }
  795. </style>