食材添加信息

This commit is contained in:
huangdeliang 2021-03-16 20:09:28 +08:00
parent 03eb2508b6
commit 1b5a4f3777
7 changed files with 187 additions and 64 deletions

View File

@ -17,11 +17,11 @@ public class SysIngredentFile {
Integer delFlag;
Long createBy;
String createBy;
Date createTime;
Long updateBy;
String updateBy;
Date updateTime;
}

View File

@ -6,6 +6,7 @@ import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 食材对象 sys_ingredient
@ -110,4 +111,6 @@ public class SysIngredient {
*/
private String info;
private List<SysIngredentFile> imgList;
}

View File

@ -83,5 +83,5 @@ public interface SysIngredientMapper
*/
public SysIngredient selectSysIngredientByName(@Param("name") String name);
int batchInsertIngredientImage(List<SysIngredentFile> ingredentFiles);
int batchInsertIngredientImage(List<SysIngredentFile> list);
}

View File

@ -1,7 +1,9 @@
package com.stdiet.custom.service.impl;
import com.stdiet.common.utils.DateUtils;
import com.stdiet.common.utils.SecurityUtils;
import com.stdiet.common.utils.StringUtils;
import com.stdiet.custom.domain.SysIngredentFile;
import com.stdiet.custom.domain.SysIngredient;
import com.stdiet.custom.domain.SysIngredientNotRec;
import com.stdiet.custom.domain.SysIngredientRec;
@ -61,13 +63,21 @@ public class SysIngredientServiceImpl implements ISysIngredientService {
//
insertNotRecommand(sysIngredient);
//
if (StringUtils.isNotNull(sysIngredient.getImgList())) {
List<SysIngredentFile> fileList = sysIngredient.getImgList();
for (SysIngredentFile file : fileList) {
file.setId(sysIngredient.getId());
file.setCreateBy(SecurityUtils.getUsername());
file.setCreateTime(DateUtils.getNowDate());
}
sysIngredientMapper.batchInsertIngredientImage(fileList);
}
return rows;
}
/**
* 新增推荐标签
*
* @param ingredient
*/
public void insertRecommand(SysIngredient ingredient) {
@ -88,6 +98,7 @@ public class SysIngredientServiceImpl implements ISysIngredientService {
/**
* 新增不推荐标签
*
* @param ingredient
*/
public void insertNotRecommand(SysIngredient ingredient) {
@ -151,6 +162,7 @@ public class SysIngredientServiceImpl implements ISysIngredientService {
/**
* 根据食材名称查询食材信息
*
* @param name
* @return
*/

View File

@ -21,7 +21,7 @@
<result property="notRec" column="not_rec"/>
<result property="reviewStatus" column="review_status"/>
<result property="info" column="info"/>
<association property="imgFiles" column="id" select="selectIngredentFileById"/>
<association property="imgList" column="id" select="selectIngredentFileById"/>
</resultMap>
<sql id="selectSysIngredientVo">
@ -126,6 +126,7 @@
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="reviewStatus != null">review_status,</if>
<if test="info != null">info,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null">#{name},</if>
@ -140,6 +141,7 @@
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="reviewStatus != null">#{reviewStatus},</if>
<if test="info != null">#{info},</if>
</trim>
</insert>
@ -194,6 +196,7 @@
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="reviewStatus != null">review_status = #{reviewStatus},</if>
<if test="info != null">info = #{info},</if>
</trim>
where id = #{id}
</update>

View File

@ -0,0 +1,60 @@
<template>
<el-upload
ref="ElUpload"
v-bind="$props"
>
<slot></slot>
</el-upload>
</template>
<script>
export default {
name: 'formUpload',
componentName: 'formUpload',
props: [
'value', 'action', 'headers', 'multiple', 'data', 'show-file-list', 'name', 'with-credentials', 'drag',
'accept', 'on-preview', 'on-remove', 'on-success', 'on-error', 'on-progress', 'on-change',
'before-upload', 'before-remove', 'list-type', 'auto-upload', 'file-list', 'http-request',
'disabled', 'limit', 'on-exceed',
],
data() {
return {
currentValue: this.value,
};
},
watch: {
// eslint-disable-next-line
value(val, oldValue) {
this.setCurrentValue(val);
},
// eslint-disable-next-line
fileList(val, oldValue) {
this.setCurrentValue(val);
},
},
methods: {
clearFiles() {
this.$refs.ElUpload.clearFiles();
},
abort(file) {
this.$refs.ElUpload.abort(file);
},
dispatch(componentName, eventName, params) {
let parent = this.$parent || this.$root;
let name = parent.$options.componentName;
while (parent && (!name || name !== componentName)) {
parent = parent.$parent;
if (parent) {
name = parent.$options.componentName;
}
}
if (parent) {
parent.$emit(...[eventName].concat(params));
}
},
setCurrentValue(value) {
this.currentValue = value;
this.dispatch('ElFormItem', 'el.form.change', [].concat(value));
},
},
};
</script>

View File

@ -245,55 +245,17 @@
/>
<!-- 添加或修改食材对话框 -->
<el-dialog :title="title" :visible.sync="open" width="620px" append-to-body>
<el-row :gutter="15">
<el-dialog :title="title" :visible.sync="open" width="720px" append-to-body>
<el-row :gutter="8">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-col :span="12">
<el-col :span="8">
<el-form-item label="食材名称" prop="name" label-width="90px">
<el-input v-model="form.name" placeholder="请输入食材名称" />
<el-input v-model="form.name" placeholder="请输入名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="蛋白质比例"
prop="proteinRatio"
label-width="90px"
>
<el-input
v-model="form.proteinRatio"
placeholder="请输入蛋白质比例"
style="width: 150px"
/>
/100g
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="脂肪比例" prop="fatRatio" label-width="90px">
<el-input
v-model="form.fatRatio"
placeholder="请输入脂肪比例"
style="width: 150px"
/>
/100g
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="碳水比例"
prop="carbonRatio"
label-width="90px"
>
<el-input
v-model="form.carbonRatio"
placeholder="请输入碳水比例"
style="width: 150px"
/>
/100g
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="食材类别" prop="type" label-width="90px">
<el-select v-model="form.type" placeholder="请选择食材类别">
<el-col :span="8">
<el-form-item label="食材类别" prop="type" label-width="100px">
<el-select v-model="form.type" placeholder="请选择类别">
<el-option
v-for="dict in typeOptions"
:key="dict.dictValue"
@ -303,8 +265,8 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="地域" prop="area" label-width="90px">
<el-col :span="8">
<el-form-item label="地域" prop="area" label-width="100px">
<el-select v-model="form.area" placeholder="请选择地域">
<el-option
v-for="dict in areaOptions"
@ -315,8 +277,35 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
label="蛋白质/100g"
prop="proteinRatio"
label-width="100px"
>
<el-input
v-model="form.proteinRatio"
placeholder="蛋白质比例"
width="80px"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="脂肪/100g" prop="fatRatio" label-width="90px">
<el-input v-model="form.fatRatio" placeholder="脂肪比例" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
label="碳水/100g"
prop="carbonRatio"
label-width="90px"
>
<el-input v-model="form.carbonRatio" placeholder="碳水比例" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="忌口人群" label-width="90px">
<el-form-item label="忌口人群" label-width="76px">
<el-select
v-model="form.notRecIds"
multiple
@ -333,7 +322,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="推荐人群" label-width="90px">
<el-form-item label="推荐人群" label-width="76px">
<el-select
v-model="form.recIds"
multiple
@ -349,9 +338,17 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核状态" prop="reviewStatus">
<el-col
:span="12"
style="position: absolute; left: 100px; top: -70px"
>
<el-form-item
label="审核状态"
prop="reviewStatus"
label-width="76px"
>
<el-select
style="position: absolute"
v-model="form.reviewStatus"
placeholder="请选择审核状态"
clearable
@ -365,9 +362,43 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item label="食材图片" prop="imgList">
<el-upload
drag
:auto-upload="true"
:headers="{ Authorization: 'Bearer ' + token }"
:limit="5"
:multiple="true"
:file-list="form.imgList"
:action="actionUrl"
:on-success="handleOnUploadSuccess"
:on-remove="handleOnUploadRemove"
>
<em class="el-icon-upload" />
<div class="el-upload__text">
将文件拖到此处<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
最多可上传5个文件且每个文件不超过10M
</div>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="介绍" prop="info" label-width="90px">
<el-input
:rows="5"
v-model="form.info"
type="textarea"
placeholder="请输入内容"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="remark" label-width="90px">
<el-input
:rows="3"
v-model="form.remark"
type="textarea"
placeholder="请输入内容"
@ -395,6 +426,8 @@ import {
} from "@/api/custom/ingredient";
import AutoHideInfo from "@/components/AutoHideInfo";
import FileUpload from "@/components/FileUpload";
import { getToken } from "@/utils/auth";
import { listPhysicalSigns } from "@/api/custom/physicalSigns";
@ -402,11 +435,14 @@ export default {
name: "Ingredient",
components: {
autohideinfo: AutoHideInfo,
FileUpload,
},
data() {
return {
//
loading: true,
//
actionUrl: process.env.VUE_APP_BASE_API + "/custom/fileUpload/ingredient",
//
ids: [],
//
@ -431,6 +467,8 @@ export default {
areaOptions: [],
//
physicalSignsOptions: [],
//
token: getToken(),
//
queryParams: {
pageNum: 1,
@ -506,6 +544,7 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
imgList: [],
};
this.resetForm("form");
},
@ -621,6 +660,12 @@ export default {
string2Arr(str) {
return str ? str.split(",") : [];
},
handleOnUploadSuccess() {
},
handleOnUploadRemove() {
}
},
};
</script>