elementui提取table表格封装组件,elementui提取table表格单列展示按钮的展示效果

川长思鸟来 2021-12-16 12:07 1119阅读 0赞

后台管理系统中用到了非常多的表格,一般为了方便都会讲表格进行提取,形成公共组件。
提取表格时会遇到返回的json数据中要对单个字段进行处理,如时间戳转换,状态转换等
以及elementUI表格提取后每个页面都展示或者不展示当列按钮的方法

封装的表格组件代码

  1. <template>
  2. <div>
  3. <!-- 中部列表表格 -->
  4. <el-table
  5. :data="tableData"
  6. highlight-current-row
  7. border
  8. @selection-change="handleSelectionChange"
  9. @current-change="handtable"
  10. >
  11. <el-table-column type="selection" width="50" align="center" v-if="gg?true:false"></el-table-column>
  12. <el-table-column label="序号" type="index" width="50" align="center" :index="indexMethod"></el-table-column>
  13. <el-table-column
  14. v-for="(itemtest, index) in title"
  15. :key="index"
  16. v-if="!itemtest.operate"
  17. :prop="itemtest.prop"
  18. align="center"
  19. :label="itemtest.label"
  20. :formatter="itemtest.formatter"
  21. ></el-table-column>
  22. <el-table-column v-else :label="itemtest.label" :prop="itemtest.prop" align="center">
  23. <template slot-scope="scope">
  24. <slot :name="itemtest.prop" :$index="scope.$index" :row="scope.row"></slot>
  25. <!-- 对应slot name -->
  26. </template>
  27. </el-table-column>
  28. </el-table>
  29. </div>
  30. </template>
  31. <script>
  32. export default {
  33. name: "tabletable",
  34. props: {
  35. title: {
  36. type: Array,
  37. default: []
  38. },
  39. tableData: {
  40. type: Array,
  41. default: []
  42. },
  43. gg:Boolean,
  44. formatter: { default: {} }, //此处写上formatter函数
  45. handleSelectionChange: { default: {} },
  46. handtable: { default: {} },
  47. indexMethod: { default: {} },
  48. },
  49. methods: {
  50. }
  51. };
  52. </script>

调用封装的表格代码

  1. <template>
  2. <div>
  3. <!-- 中部列表表格 -->
  4. <v-Table
  5. :tableData="tableData"
  6. :title="title"
  7. :gg="false"
  8. :indexMethod="indexMethod"
  9. :handleClick="handleClick"
  10. :handtable="handtable"
  11. >
  12. <template slot="dealScreenshot" slot-scope="scope"> // slot="dealScreenshot" 要与下列的表格一致
  13. <el-button size="small" type="text" @click="handleRowEdit(scope.$index,scope.row)">查看</el-button>
  14. </template>
  15. </v-Table>
  16. </div>
  17. </template>
  18. <script>
  19. import vTable from "@/components/comiview/table.vue";
  20. import { formDatetime } from "@/utils/formdata.js"; //封装的js方法
  21. import { orderState } from "@/utils/orderState.js";//封装的js方法
  22. export default {
  23. components: {
  24. vTable
  25. },
  26. name: "account",
  27. data() {
  28. return {
  29. tableData: [
  30. {
  31. orderCode: "1",
  32. payStatus: "1",
  33. createTime: "",
  34. }
  35. ],
  36. title: [
  37. { label: "用户名", prop: "orderCode", operate: false },
  38. {
  39. label: "账户状态",
  40. prop: "payStatus",
  41. operate: false,
  42. //状态格式转换
  43. formatter: (value, column) => { //写上formatter函数
  44. let payStatus = orderState(value, column); //这里可以调用写好的函数也可以直接处理数据
  45. return payStatus;
  46. }
  47. },
  48. {
  49. label: "注册时间",
  50. prop: "createTime",
  51. operate: false,
  52. //时间格式转换
  53. formatter: (value, column) => {
  54. let time = formDatetime(value, column);
  55. return time;
  56. },
  57. },
  58. {
  59. prop: "dealScreenshot", //要与上面预留的slot位置一致
  60. label: "收款凭证",
  61. operate: true,
  62. }
  63. ]
  64. };
  65. },
  66. watch: {},
  67. created() {
  68. },
  69. methods: {
  70. indexMethod(index) {
  71. //设置序列号
  72. return (
  73. (Number(this.formInline.startNo) - 1) *
  74. Number(this.formInline.pageSize) +
  75. index +
  76. 1
  77. );
  78. },
  79. handleClick(val) {},
  80. }
  81. };
  82. </script>

封装的js方法

  1. // 13位时间戳转字符串
  2. import moment from "moment";
  3. function formDatetime(row, column) {
  4. let date = row[column.property];
  5. if (date == undefined) {
  6. return "";
  7. }
  8. return moment(date).format("YYYY-MM-DD HH:mm:ss");
  9. }
  10. function formDa(row, column) {
  11. let date = row[column.property];
  12. if (date == undefined) {
  13. return "";
  14. }
  15. return moment(date).format("YYYY-MM-DD");
  16. }
  17. export {
  18. formDatetime,
  19. formDa
  20. }

elementui提取table表格使用formatter方法,并增加单列展示按钮的展示效果,展示和不展示按钮的页面展示方法
在这里插入图片描述
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,1119人围观)

还没有评论,来说两句吧...

相关阅读