jeecgboot 自定义列

列表自定义列实现

功能预览:
在这里插入图片描述
在这里插入图片描述

实现方法:
一、初始化设置

  1. data() 方法中配置
 //表头
 columns:[],
 //列设置
settingColumns:[],
//列定义
defColumns: [{
            title: '#',
            dataIndex: '',
            key: 'rowIndex',
            width: 60,
            align: "center",
            customRender: function (t, r, index) {
              return parseInt(index) + 1;
            }
          },
          {
            title: '姓名',
            align: "center",
            dataIndex: 'name'
          },
          .......
          .......
      ]

说明:
columns:列表展示的列,初始为空。
settingColumns:保存勾选的列设置
defColumns:定义列表可以展示的列信息
  1. 增加设置按钮
    在列表外增加设置按钮,:overlayStyle="{width:‘50%’}" 控制弹出框宽度
<a-popover title="自定义列" trigger="click" placement="leftBottom" :overlayStyle="{width:'50%'}" >
          <template slot="content" class="popoverWidth">
            <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" :defaultValue="settingColumns">
              <a-row>
                <template v-for="(item,index) in defColumns">
                  <template v-if="item.key!='rowIndex'&& item.dataIndex!='action'">
                      <a-col :span="8"><a-checkbox :value="item.dataIndex">{{ item.title }}</a-checkbox></a-col>
                  </template>
                </template>
              </a-row>
            </a-checkbox-group>
          </template>
          <a class="floatRight"><a-icon type="setting" /> 自定义列</a>
        </a-popover>
  1. methods中的方法
     initColumns(){
        //权限过滤(列权限控制时打开,修改第二个参数为授权码前缀)
        //this.defColumns = colAuthFilter(this.defColumns,'testdemo:');
        var key = this.$route.name+":colsettings";
        let colSettings= Vue.ls.get(key);
        if(colSettings==null||colSettings==undefined){
          let allSettingColumns = [];
          this.defColumns.forEach(function (item,i,array ) {
            allSettingColumns.push(item.dataIndex);
          })
          this.settingColumns = allSettingColumns;
          this.columns = this.defColumns;
        }else{
          this.settingColumns = colSettings;
          const cols = this.defColumns.filter(item => {
            if(item.key =='rowIndex'|| item.dataIndex=='action'){
              return true;
            }
            if (colSettings.includes(item.dataIndex)) {
              return true;
            }
            return false;
          })
          this.columns =  cols;
        }
      },
      //列设置更改事件
      onColSettingsChange (checkedValues) {
        var key = this.$route.name+":colsettings";
        Vue.ls.set(key, checkedValues, 7 * 24 * 60 * 60 * 1000)
        this.settingColumns = checkedValues;
        const cols = this.defColumns.filter(item => {
          if(item.key =='rowIndex'|| item.dataIndex=='action'){
            return true
          }
          if (this.settingColumns.includes(item.dataIndex)) {
            return true
          }
          return false
        })
        this.columns =  cols;
      },
  1. created中调用:
created() {
 this.initColumns();
},
  1. css样式,控制位置
/** 表格自定义列靠右样式 */
.floatRight{
  float: right;
}
Jeecg Boot(基于Jeecg框架的快速开发工具包)中,如果你想要自定义导出的内容,比如改变默认的头、样式或者添加额外的数据,可以按照以下步骤进行: 1. **创建自定义视图**:首先,你需要创建一个新的Excel模板视图,如`YourCustomExportView`,并继承自Jeecg提供的基础视图,如`BaseTableExportView`或`BaseEntityExportView`。这一步通常涉及到在资源文件夹下创建新的Excel工作簿,并配置好所需的单元格内容和格式。 2. **定义数据映射**:在你的业务服务层,提供一个方法来处理自定义的数据转换。你可以使用`TableDataInfo`对象(由Jeecg框架生成),通过`setTitles()`和`setData()`方法设置标题和实际数据。例如,`tableDataInfo.setTitles(Arrays.asList("自定义标题1", "自定义标题2"))`,`tableDataInfo.setData(listOfYourObjects)`。 3. **设置ModelAndView**:在Controller中,当你需要导出数据的时候,创建一个`ModelAndView`对象,指定你的自定义视图和数据。例如: ```java @GetMapping("/export") public ModelAndView export() { TableDataInfo tableDataInfo = yourCustomService.getTableDataInfo(); // 你的业务服务 ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("yourCustomExportView"); // 自定义视图名 modelAndView.addObject("tableDataInfo", tableDataInfo); return modelAndView; } ``` 4. **访问Excel下载**:用户发起GET请求后,系统会自动渲染到对应的Excel模板,并将其作为响应发送出去,浏览器会弹出下载对话框让用户选择保存位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值