jeecg问题汇总

本文概述了Jeecg平台在不同版本中如何处理小数转百分比导出、多字段排序、组件样式调整(如下拉框全选清空)、数据隐藏、数组格式请求和特定组件的使用技巧。包括低版本2.1.3的高级字段转换方法,以及高版本2.4.6以上的配置优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相关链接

  1. 组件样式Ant Design of Vue
  2. Jeecg-Boot 技术文档V2.0

1. jeecg打印自动生成的sql

在这里插入图片描述

2. 导出数据,把小数转化为百分数

2.1 低版本(V2.1.3)

使用高级字段转换用法

  • exportConvert:在导出的时候需要替换值则配置该值为true,同时增加一个方法,方法名为原get方法名前加convert。
	/**月度排单占比*/
	@Excel(name = "月度排单占比", width = 15, exportConvert=true)
    private java.lang.Double rankMonthPer;
	/**
	 * 转换值示例: 将小数转化成百分比输出
	 * @return
	 */
	public String convertgetRankMonthPer(){
		DecimalFormat df = new DecimalFormat("0.00%");
		return df.format(this.rankMonthPer);
	}

2.2 高版本

使用Excel注解里的numFormat
在这里插入图片描述

3. 排序(多字段升降序排序)

3.1 低版本(V2.1.3)

3.1.1 单字段排序

导出时不需要做特殊处理,导出的数据也是排序后的数据

3.1.2 多字段排序

目前该版本不支持多字段排序,所以需要后端查询时把排序条件加入进去

QueryWrapper<Interrankinfo> queryWrapper = QueryGenerator.initQueryWrapper(interrankinfo, req.getParameterMap());
queryWrapper.orderByDesc("trading_month");
queryWrapper.orderByAsc("rank_rangking");

导出时需要重写exportXls方法,把排序的条件加入进去。

3.2 高版本(version 2.4.6+)

可通过配置直接实现,不需要特殊处理。
在这里插入图片描述

4. a-table更改某行数据的样式

增加:customRow属性
在这里插入图片描述

5. 导出时列隐藏

  • 低版本:只需要在entity对象里将相应字段的@Excel注解去掉就行
  • 高版本:@Excel注解里加上下面的属性
    在这里插入图片描述

6. vue中get请求解决传输数据是数组格式问题

  • 问题
    如果请求参数是数组arr=[1,2,3],get请求不对数组做任何处理,则传递给后端的接口是"url地址?arr[]=1&arr[]=2&arr[]=3",接口会报错,因为识别不了“[]”这个符号。具体可以看 vue中get请求解决传输数据是数组格式问题
  • 解决方案
    如果使用qs,需要改源码不方便,可以将数组转化成用逗号隔开的字符串,这样后端就可以接收到,并在动态生成查询语句时,会解析成数组,用in进行查询。

7. 组件

7.1 下拉多选,加上全选和清空按钮

<template>
  <a-card>
    <a-form :form="form">
      <a-form-item label="员工">
        <a-select
          v-decorator="['instCode']"
          :loading="selectOptionsLoading"
          placeholder="这里是展示一键全选/清空的demo"
          option-filter-prop="children"
          mode="multiple"
          @change="changeInstCodeSelect"
          :maxTagCount="3"
        >
          <div slot="dropdownRender" slot-scope="menu">
            <v-nodes :vnodes="menu" />
            <a-divider style="margin: 4px 0;" />
            <div style="padding: 4px 8px; cursor: pointer;" @mousedown="e => e.preventDefault()">
              <a-button type="link" @click="selectAll">全选</a-button>
              <a-button type="link" @click="clearAll">清空</a-button>
            </div>
          </div>
          <a-select-option v-for="item in selectOptions" :value="item.mockKey" :key="item.mockKey">
            {{ item.mockLabel }}
          </a-select-option>
        </a-select>
      </a-form-item>
    </a-form>
  </a-card>
</template>
<script>
  export default {
    name: 'BaseForm',
    components: {
      VNodes: {
        functional: true,
        render: (h, ctx) => ctx.props.vnodes
      }
    },
    data () {
      return {
        form: this.$form.createForm(this),
        selectOptions: [],
        selectOptionsLoading: false
      }
    },
    mounted () {
      this.getMemberList()
    },
    methods: {
      // 获取数据源,根据实际自己改
      getMemberList () {
        this.selectOptionsLoading = false
        this.selectOptions = [{mockKey:1, mockLabel:"1"},{mockKey:2, mockLabel:"2"}]
      },
      // 全选 -- 把数据源赋给select绑定的值
      selectAll () {
        const arr = [];
        (this.selectOptions).forEach(item => {
          arr.push(item.mockKey)
        })
        this.form.setFieldsValue({
          'instCode': arr
        })
        // 需要获取所有机构编码的值,否则调用全选后再查询时,查询的还是上次的机构编码
        //this.queryParam.instCode =  arr.join(',');
      },
      // 清空 -- 清空select绑定的值
      clearAll () {
        this.form.setFieldsValue({
          'instCode': []
        });
        // 需要清空查询条件的值,否则调用清空后再查询时,查询的还是上次的机构编码
        //this.queryParam.instCode =  [];
      },

      // 改变选择的机构时,调用的方法,将选择的多个机构编码用逗号隔开成字符串,并将结果传回后台
      changeInstCodeSelect(value) {
        //this.queryParam.instCode =  value.join(',');
      }
    }
  }
</script>

7.2 月份范围组件

<template>
  <a-card>
    <!-- 查询区域 -->
    <div class="table-page-search-wrapper">
      <a-form>
        <a-row :gutter="24">
          <a-col :md="12" :sm="16">
            <a-form-item label="统计月份">
              <div>
                <a-range-picker
                  :placeholder="['开始月份', '结束月份']"
                  format="YYYY-MM"
                  :value="value"
                  :mode="mode"
                  @panelChange="handleChange"
                  @change="handleChange"
                />
              </div>
            </a-form-item>
          </a-col>
        </a-row>
      </a-form>
    </div>
    <!-- 查询区域-END -->
  </a-card>
</template>
<script>
  // 引入日期组件
  import JDate from '@/components/jeecg/JDate.vue'

  export default {
    name: 'BaseForm',
    components: {
      JDate
    },
    data () {
      return {
        mode: ['month', 'month'],
        value: []
      }
    },
    methods: {
      // 月份值发生改变时,调用该方法,将开始月份和结束月份结果赋给查询参数
      handleChange(value) {
        this.value = value;
        this.month_begin = this.onBizMonChange(value[0]);
        this.month_end = this.onBizMonChange(value[1]);
        this.mode = ['month','month'];
      },

      // 修改日期结果格式,否则结果为时间
      onBizMonChange(dateObj) {
        return dateObj == null ? null : dateObj.format('YYYYMM');
      },
    }
  }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值