• cz_health_day04


    检查套餐

    项目需求

    完成检查套餐的新增、分页

    新增时完成图片的上传,上传至七牛云

    1、新增检查套餐之图片上传

      图片/文件上传的3种方式:

    • 使用nginx搭建 单机的文件存储 企业内部使用(很少见)
    • 使用开源分布式文件存储系统,如Fastdfs、HDFS等 集群机器,安全
    • 使用云存储,如阿里云,七牛云 互联网公司,小型服务企业,数据不敏感

      本次方案使用七牛云

    • 前端上传图片,elementUI组件具有自动上传的方法,在上传发送之前,对图片进行校验是否为以jpg结尾,图片的大小是否超过2mb,成功后执行上传方法(自动执行,不需要写ajax)
    • 后端接收到图片的文件数据,使用封装的utils上传到七牛云,注意文件名的重复问题,使用UUID 产生新的名字,再将图片名称返回至前端
    • 前端提示上上传成功或者上传失败

    2、新增检查套餐

    • 点击新建按钮,弹出添加框,同时触发查询所有的检查组的ajax,进入后端获取数据回显
    • 填写数据,点击确认,发送ajax至后端,将检查套餐数据填入检查套餐表,检查组数据填入与检查套餐关联的检查组表,注意点:通过插入检查套餐时使用mybatis的selectKey语句获取检查套餐的id

    3、查询所有及分页

    • 前端进行页面加载,查询,页码修改时,触发查询所有检查套餐的方法
    • 异步发送请求至后端,后端获取所有检查套餐数据后返回至前端
      1 <script>
      2     var vue = new Vue({
      3         el: '#app',
      4         data: {
      5             autoUpload: true,//自动上传
      6             imageUrl: null,//模型数据,用于上传图片完成后图片预览
      7             activeName: 'first',//添加/编辑窗口Tab标签名称
      8             pagination: {//分页相关属性
      9                 currentPage: 1,
     10                 pageSize: 10,
     11                 total: 100,
     12                 queryString: null,
     13             },
     14             dataList: [],//列表数据
     15             formData: {},//表单数据
     16             tableData: [],//添加表单窗口中检查组列表数据
     17             checkgroupIds: [],//添加表单窗口中检查组复选框对应id
     18             dialogFormVisible: false//控制添加窗口显示/隐藏
     19         },
     20         created() {
     21             this.findPage();
     22         },
     23         methods: {
     24             //文件上传成功后的钩子,response为服务端返回的值,file为当前上传的文件封装成的js对象
     25             //这个函数中response返回的就是result对象,所以直接可以。data等等
     26             handleAvatarSuccess(response, file) {
     27                 this.imageUrl = "http://qgi57u0d4.hd-bkt.clouddn.com/" + response.data;
     28                 this.$message({
     29                     type: response.flag ? 'success' : 'error',
     30                     message: response.message
     31                 });
     32 
     33                 this.formData.img = response.data;
     34             },
     35             //上传图片之前执行
     36             beforeAvatarUpload(file) {
     37                 //判断图片是否以jpg为结尾
     38                 const isJPG = file.type === 'image/jpeg';
     39                 if (!isJPG) {
     40                     this.$message.error('上传套餐图片只能是 JPG 格式!');
     41                 }
     42                 //判断图片大小不超过2m
     43                 const isLt2M = file.size / 1024 / 1024 < 2;
     44                 if (!isLt2M) {
     45                     this.$message.error('上传套餐图片大小不能超过 2MB!');
     46                 }
     47                 return isJPG && isLt2M;
     48             },
     49             //添加
     50             handleAdd() {
     51                 this.dialogFormVisible = false;
     52                 //点击确认,发送ajax请求
     53                 axios.post("/setmeal/add.do?checkgroupIds=" + this.checkgroupIds, this.formData).then((res) => {
     54                     if (res.data.flag) {
     55                         //将正确查询的到的数据回显
     56                         this.$message.success(res.data.message);
     57                     } else {
     58                         this.$message.error(res.data.message);
     59                     }
     60                 }).finally(() => {
     61                     this.checkgroupIds = [];
     62                     this.formData = {};
     63                     this.findPage();
     64                 })
     65             },
     66             //分页查询
     67             findPage() {
     68                 let param = {
     69                     pageSize: this.pagination.pageSize,
     70                     currentPage: this.pagination.currentPage,
     71                     queryString: this.pagination.queryString
     72                 }
     73                 //异步发送信息
     74                 axios.post("/setmeal/findPage.do", param).then((res) => {
     75                     this.dataList = res.data.rows;
     76                     this.pagination.total = res.data.total;
     77                 })
     78             },
     79             // 重置表单
     80             resetForm() {
     81                 this.formData = {};
     82                 this.checkgroupIds = [];
     83             },
     84             // 弹出添加窗口
     85             handleCreate() {
     86                 this.dialogFormVisible = true;//弹出添加窗口
     87                 this.resetForm();
     88                 this.imageUrl = null;//点击新建每次都是空的,没有加载图片
     89                 this.activeName = 'first';//设置检查套餐为默认选中
     90                 //发送ajax回显检查组的数据
     91                 axios.get("/checkgroup/findAll.do").then((res) => {
     92                     if (res.data.flag) {
     93                         this.tableData = res.data.data;
     94                     } else {
     95                         this.$message.error(res.data.message)
     96                     }
     97                 })
     98             },
     99             //切换页码
    100             handleCurrentChange(currentPage) {
    101                 this.pagination.currentPage = currentPage;
    102                 this.findPage();
    103             }
    104         }
    105     })
    106 </script>

    mybatis中获取插入前的数据id的SQL语句

    1 select * from t_setmeal
    2         <if test="value != null and value.length > 0">
    3         where code = #{value} or name = #{value} or helpCode = #{value}
    4          </if>

    七牛云上传的自定义工具

     1 /**
     2  * 七牛云工具类
     3  */
     4 public class QiniuUtils {
     5     public  static String accessKey = "ZY1m8Cq8qhmuciSmVPSZJf2FqI6HqPJi9zbynHQx";
     6     public  static String secretKey = "j9cxpaEbR-ksDCK0oDYHybqRgfR_K-xZY-UjCbJp";
     7     public  static String bucket = "babymyfree";
     8 
     9     public static void upload2Qiniu(String filePath,String fileName){
    10         //构造一个带指定Zone对象的配置类
    11         Configuration cfg = new Configuration(Zone.zone0());
    12         UploadManager uploadManager = new UploadManager(cfg);
    13         Auth auth = Auth.create(accessKey, secretKey);
    14         String upToken = auth.uploadToken(bucket);
    15         try {
    16             Response response = uploadManager.put(filePath, fileName, upToken);
    17             //解析上传成功的结果
    18             DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
    19         } catch (QiniuException ex) {
    20             Response r = ex.response;
    21             try {
    22                 System.err.println(r.bodyString());
    23             } catch (QiniuException ex2) {
    24                 //ignore
    25             }
    26         }
    27     }
    28 
    29     //上传文件
    30     public static void upload2Qiniu(byte[] bytes, String fileName){
    31         //构造一个带指定Zone对象的配置类
    32         Configuration cfg = new Configuration(Zone.zone0());
    33         //...其他参数参考类注释
    34         UploadManager uploadManager = new UploadManager(cfg);
    35 
    36         //默认不指定key的情况下,以文件内容的hash值作为文件名
    37         String key = fileName;
    38         Auth auth = Auth.create(accessKey, secretKey);
    39         String upToken = auth.uploadToken(bucket);
    40         try {
    41             Response response = uploadManager.put(bytes, key, upToken);
    42             //解析上传成功的结果
    43             DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
    44             System.out.println(putRet.key);
    45             System.out.println(putRet.hash);
    46         } catch (QiniuException ex) {
    47             Response r = ex.response;
    48             System.err.println(r.toString());
    49             try {
    50                 System.err.println(r.bodyString());
    51             } catch (QiniuException ex2) {
    52                 //ignore
    53             }
    54         }
    55     }
    56 
    57     //删除文件
    58     public static void deleteFileFromQiniu(String fileName){
    59         //构造一个带指定Zone对象的配置类
    60         Configuration cfg = new Configuration(Zone.zone0());
    61         String key = fileName;
    62         Auth auth = Auth.create(accessKey, secretKey);
    63         BucketManager bucketManager = new BucketManager(auth, cfg);
    64         try {
    65             bucketManager.delete(bucket, key);
    66         } catch (QiniuException ex) {
    67             //如果遇到异常,说明删除失败
    68             System.err.println(ex.code());
    69             System.err.println(ex.response.toString());
    70         }
    71     }
    72 }
  • 相关阅读:
    做才是得到
    常用工具汇总
    迎接2017
    新年礼物
    2017
    asp.net core 日志
    板子|无向图的割点
    11/06信竞快乐模拟赛
    动态规划复习
    894D
  • 原文地址:https://www.cnblogs.com/luckysupermarket/p/13658884.html
Copyright © 2020-2023  润新知