Jeecg-Boot (vue)头像(图片单个)上传

Vue.js头像上传组件实战
本文详细介绍了如何使用Vue.js构建一个具有图片预览、上传进度显示和错误处理的头像上传组件。通过实现beforeUpload和handleChange方法,确保了上传文件的类型和大小验证,同时展示了如何利用Vue的计算属性和数据绑定来更新UI。

效果展示:

在这里插入图片描述

在这里插入图片描述
(1) vue组件:

<a-upload
  listType="picture-card"
  class="avatar-uploader"
  :showUploadList="false"
  :action="uploadAction"
  :data="{'isup':1}"
  :headers="headers"
  :beforeUpload="beforeUpload"
  @change="handleChange"
>
  <img v-if="picUrl" :src="getAvatarView()" alt="头像" style="height:140px;max-width:180px;border-radius:50%"/>
  <div v-else style="height:140px;width:140px;padding-top:35%">
    <a-icon :type="uploadLoading ? 'loading' : 'plus'" />
    <div class="ant-upload-text" style="color: dimgray">上传头像</div>
  </div>
</a-upload>

(2) 编写beforeUpload,handleChange,getAvatarView方法
写在method{ }中

beforeUpload: function(file){
  var fileType = file.type;
  if(fileType.indexOf('image')<0){
    this.$message.warning('请上传图片');
    return false;
  }
  //TODO 验证文件大小
},
handleChange (info) {
  this.picUrl = "";
  if (info.file.status === 'uploading') {
    this.uploadLoading = true;
    return
  }
  if (info.file.status === 'done') {
    var response = info.file.response;
    this.uploadLoading = false;
    console.log(response);
    if(response.success){
      this.model.img= response.message;
      this.picUrl = "Has no pic url yet";
    }else{
      this.$message.warning(response.message);
    }
  }
},
getAvatarView(){
  return this.url.imgerver +"/"+ this.model.img;
},

(3) 添加引用

 import Vue from 'vue'
 import { ACCESS_TOKEN } from "@/store/mutation-types"

(4) 获取tocken

created () {
      const token = Vue.ls.get(ACCESS_TOKEN);
      this.headers = {"X-Access-Token":token} 
},

(5) 增加数据属性

data () {
  return {
      ...
      headers:{},
      picUrl: "",
      uploadLoading:false
  }
}

(6) 增加上传路径

url: {
    ...
    fileUpload: window._CONFIG['domianURL']+"/sys/common/upload",
    imgerver: window._CONFIG['domianURL']+"/sys/common/view",
},

(7) 上传路径初始化:
(目前暂时将uploadAction方法放入method中)

computed:{
      uploadAction:function () {
        return this.url.fileUpload;
      }
},

(8) 实现编辑时的显示

edit (record) {
    this.form.resetFields();
    this.model = Object.assign({}, record);
    this.visible = true;
    this.$nextTick(() => {
      this.form.setFieldsValue(pick(this.model,'fname','fnumber','createBy','createTime','updateBy','updateTime','img'))
//时间格式化
    });
    this.picUrl = this.model.img;//以这句为主,设置model中的图片字段
},
<think>好的,用户想了解jeecg-boot Vue2版本的高级查询功能。首先,我需要回忆一下jeecg-boot这个框架的基本情况。Jeecg-Boot是一个基于Spring BootVue的低代码开发平台,提供快速开发企业级应用的能力。Vue2版本应该是指前端使用的是Vue.js 2.x。 高级查询通常指的是比普通查询更复杂的过滤和搜索功能,比如多条件组合查询、模糊查询、范围查询、关联表查询等。在jeecg-boot中,高级查询的实现可能涉及到前端和后端的协作。前端需要提供用户界面来输入各种查询条件,后端则需要处理这些条件并生成相应的SQL语句。 接下来,我需要考虑用户可能的实际需求。用户可能是在使用jeecg-boot进行开发时,遇到了需要实现复杂查询的需求,或者想了解如何利用框架现有的高级查询功能来简化开发工作。因此,回答中需要涵盖配置方法、使用示例以及可能的注意事项。 首先,我需要确认jeecg-boot Vue2版本中高级查询的具体实现方式。通常,这类低代码平台会通过配置来实现高级查询,比如在代码生成时配置查询字段和条件。可能涉及到前端组件的使用,比如高级查询弹窗,以及后端对查询条件的解析处理。 然后,要分步骤说明如何配置和使用高级查询功能。例如,在online表单配置中启用高级查询,设置字段的查询方式(模糊、精确、范围等),以及前端如何触发和展示高级查询界面。此外,可能需要提到自定义查询逻辑的方法,以满足更复杂的需求。 还要注意可能的常见问题,比如字段类型与查询方式的匹配,权限控制,性能优化等。例如,范围查询适用于日期或数字类型的字段,而模糊查询则用于字符串。同时,大量数据的查询可能需要分页或优化SQL语句以避免性能问题。 需要验证是否所有信息准确,比如jeecg-boot的文档是否支持所述的高级查询配置方式。如果有不确定的地方,应建议用户参考官方文档或社区资源。同时,确保示例代码或配置片段符合LaTeX格式要求,但根据用户指示,行内数学表达式用$...$,独立公式用$$...$$,但在这个问题中可能更多是代码示例,所以可能需要调整,不过用户的问题是关于高级查询的,可能不需要数学公式,但需要确保回答中的代码或配置项正确使用格式。 最后,结构要清晰,分点说明配置步骤、使用示例、注意事项,帮助用户逐步理解和实现高级查询功能。同时,使用中文口语化表达,避免技术术语过于晦涩,必要时解释术语。</think>以下是关于 Jeecg-Boot Vue2 高级查询功能的详细说明: 🔍 **高级查询核心机制** $$ \text{查询条件} \rightarrow \text{前端参数封装} \rightarrow \text{后端动态SQL解析} $$ 通过条件组合生成动态 WHERE 子句,支持多种查询模式联动 --- ### 一、配置步骤(以用户列表为例) 1. **Online表单配置** - 路径:`在线开发 → Online表单开发 → 选择表 → 字段配置` - 对目标字段勾选`查询条件`并选择匹配类型: - `模糊查询` → 生成 `LIKE %{value}%` - `精确匹配` → `= {value}` - `范围查询` → `BETWEEN {start} AND {end}` 2. **前端代码生成** ```vue <j-search @ok="handleSearch" :columns="searchColumns"/> ``` - `searchColumns` 需包含 `type: 'range'`(日期范围)等类型定义 --- ### 二、高级查询模式详解 1. **基础模式** - 快速过滤:`name$like` → `WHERE name LIKE '%张三%'` - 多字段组合:`age>=18&deptId=123` 2. **高级模式** ```js advancedParams: { rules: [{ field: 'createTime', type: '>=', val: '2023-01-01' },{ field: 'status', type: 'in', val: ['1','2'] }] } ``` 支持操作符:`>、<、like、in、between` 等 --- ### 三、特殊场景处理 1. **关联表查询** ```sql EXISTS(SELECT 1 FROM role WHERE role.user_id = main.id AND role.level > 3) ``` 配置方式:`字段关联 → 自定义SQL片段` 2. **自定义查询器** ```java @Override protected void wrapAdvancedQuery(QueryWrapper<?> wrapper, Map<String,String> params) { if(params.containsKey("customFlag")){ wrapper.apply("DATEDIFF(create_time,update_time) > 3"); } } ``` --- ### 四、性能优化建议 1. **索引策略** - 对高频查询字段添加索引:`ALTER TABLE user ADD INDEX idx_dept_status (dept_id,status)` - 避免全模糊查询:`name$like` → 改用右模糊 `name$right_like` 2. **分页限制** ```yaml # application.yml jeecg: query: max-page-size: 500 result-limit: 100000 ``` --- 💡 **调试技巧** 打开浏览器开发者工具: 1. 观察网络请求中 `queryParams` 的传递结构 2. 查看控制台输出的最终SQL语句 3. 使用`@Query`注解自定义条件组装逻辑 建议结合官方文档《JEECG高级查询开发指南》进行深度定制,复杂场景可通过混合使用基础查询与自定义SQL实现灵活控制。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值