From d1786f5327beb1f6e83b7836343d6a17e227cb4b Mon Sep 17 00:00:00 2001
From: huangdeliang <huangdeliang@skieer.com>
Date: Wed, 16 Dec 2020 22:10:20 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=A3=9F=E6=9D=90=E7=AE=A1?=
 =?UTF-8?q?=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../stdiet/custom/domain/SysIngredient.java   |  30 +-
 .../custom/domain/SysIngredientNotRec.java    |  30 ++
 .../custom/domain/SysIngredientRec.java       |  30 ++
 .../custom/mapper/SysIngredientMapper.java    |  10 +
 .../impl/SysIngredientServiceImpl.java        | 102 ++++--
 .../mapper/custom/SysIngredientMapper.xml     |  54 ++--
 .../src/views/custom/ingredient/index.vue     | 290 +++++++++---------
 7 files changed, 346 insertions(+), 200 deletions(-)
 create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/domain/SysIngredientNotRec.java
 create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/domain/SysIngredientRec.java

diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysIngredient.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysIngredient.java
index 77494dfc4..26c48fc85 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysIngredient.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysIngredient.java
@@ -63,7 +63,27 @@ public class SysIngredient extends BaseEntity
     @Excel(name = "推荐")
     private String recommend;
 
-    public void setId(Long id) 
+    private Long[] recIds;
+
+    private Long[] notRecIds;
+
+    public Long[] getRecIds() {
+        return recIds;
+    }
+
+    public Long[] getNotRecIds() {
+        return notRecIds;
+    }
+
+    public void setNotRecIds(Long[] notRecIds) {
+        this.notRecIds = notRecIds;
+    }
+
+    public void setRedIds(Long[] recIds) {
+        this.recIds = recIds;
+    }
+
+    public void setId(Long id)
     {
         this.id = id;
     }
@@ -153,21 +173,21 @@ public class SysIngredient extends BaseEntity
     {
         return area;
     }
-    public void setNotRec(String notRec) 
+    public void setNotRec(String notRec)
     {
         this.notRec = notRec;
     }
 
-    public String getNotRec() 
+    public String getNotRec()
     {
         return notRec;
     }
-    public void setRecommend(String recommend) 
+    public void setRecommend(String recommend)
     {
         this.recommend = recommend;
     }
 
-    public String getRecommend() 
+    public String getRecommend()
     {
         return recommend;
     }
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysIngredientNotRec.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysIngredientNotRec.java
new file mode 100644
index 000000000..059347528
--- /dev/null
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysIngredientNotRec.java
@@ -0,0 +1,30 @@
+package com.stdiet.custom.domain;
+
+public class SysIngredientNotRec {
+    private Long ingredientId;
+    private Long notRecommandId;
+
+    public Long getIngredientId() {
+        return ingredientId;
+    }
+
+    public void setIngredientId(Long ingredientId) {
+        this.ingredientId = ingredientId;
+    }
+
+    public Long getRecommandId() {
+        return notRecommandId;
+    }
+
+    public void setRecommandId(Long recommandId) {
+        this.notRecommandId = recommandId;
+    }
+
+    @Override
+    public String toString() {
+        return "SysIngredientRec{" +
+                "ingredientId=" + ingredientId +
+                ", notRecommandId=" + notRecommandId +
+                '}';
+    }
+}
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysIngredientRec.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysIngredientRec.java
new file mode 100644
index 000000000..c1cb0ec09
--- /dev/null
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysIngredientRec.java
@@ -0,0 +1,30 @@
+package com.stdiet.custom.domain;
+
+public class SysIngredientRec {
+    private Long ingredientId;
+    private Long recommandId;
+
+    public Long getIngredientId() {
+        return ingredientId;
+    }
+
+    public void setIngredientId(Long ingredientId) {
+        this.ingredientId = ingredientId;
+    }
+
+    public Long getRecommandId() {
+        return recommandId;
+    }
+
+    public void setRecommandId(Long recommandId) {
+        this.recommandId = recommandId;
+    }
+
+    @Override
+    public String toString() {
+        return "SysIngredientRec{" +
+                "ingredientId=" + ingredientId +
+                ", recommandId=" + recommandId +
+                '}';
+    }
+}
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysIngredientMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysIngredientMapper.java
index 4a8ee6f04..8c8c527f8 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysIngredientMapper.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysIngredientMapper.java
@@ -2,6 +2,8 @@ package com.stdiet.custom.mapper;
 
 import java.util.List;
 import com.stdiet.custom.domain.SysIngredient;
+import com.stdiet.custom.domain.SysIngredientNotRec;
+import com.stdiet.custom.domain.SysIngredientRec;
 
 /**
  * 食材Mapper接口
@@ -58,4 +60,12 @@ public interface SysIngredientMapper
      * @return 结果
      */
     public int deleteSysIngredientByIds(Long[] ids);
+
+    public int batchIngredientRec(List<SysIngredientRec> ingredientRecList);
+
+    public int batchIngredientNotRec(List<SysIngredientNotRec> ingredientNotRecList);
+
+    public int deleteIngredentRecByIngredientId(Long recId);
+
+    public int deleteIngredentNotRecByIngredientId(Long notRecId);
 }
\ No newline at end of file
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysIngredientServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysIngredientServiceImpl.java
index b8f3ae61d..1838b4128 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysIngredientServiceImpl.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysIngredientServiceImpl.java
@@ -1,96 +1,146 @@
 package com.stdiet.custom.service.impl;
 
-import java.util.List;
 import com.stdiet.common.utils.DateUtils;
+import com.stdiet.common.utils.StringUtils;
+import com.stdiet.custom.domain.SysIngredient;
+import com.stdiet.custom.domain.SysIngredientNotRec;
+import com.stdiet.custom.domain.SysIngredientRec;
+import com.stdiet.custom.mapper.SysIngredientMapper;
+import com.stdiet.custom.service.ISysIngredientService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.stdiet.custom.mapper.SysIngredientMapper;
-import com.stdiet.custom.domain.SysIngredient;
-import com.stdiet.custom.service.ISysIngredientService;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 食材Service业务层处理
- * 
+ *
  * @author wonder
  * @date 2020-12-15
  */
 @Service
-public class SysIngredientServiceImpl implements ISysIngredientService 
-{
+public class SysIngredientServiceImpl implements ISysIngredientService {
     @Autowired
     private SysIngredientMapper sysIngredientMapper;
 
     /**
      * 查询食材
-     * 
+     *
      * @param id 食材ID
      * @return 食材
      */
     @Override
-    public SysIngredient selectSysIngredientById(Long id)
-    {
+    public SysIngredient selectSysIngredientById(Long id) {
         return sysIngredientMapper.selectSysIngredientById(id);
     }
 
     /**
      * 查询食材列表
-     * 
+     *
      * @param sysIngredient 食材
      * @return 食材
      */
     @Override
-    public List<SysIngredient> selectSysIngredientList(SysIngredient sysIngredient)
-    {
+    public List<SysIngredient> selectSysIngredientList(SysIngredient sysIngredient) {
         return sysIngredientMapper.selectSysIngredientList(sysIngredient);
     }
 
     /**
      * 新增食材
-     * 
+     *
      * @param sysIngredient 食材
      * @return 结果
      */
     @Override
-    public int insertSysIngredient(SysIngredient sysIngredient)
-    {
+    public int insertSysIngredient(SysIngredient sysIngredient) {
         sysIngredient.setCreateTime(DateUtils.getNowDate());
-        return sysIngredientMapper.insertSysIngredient(sysIngredient);
+        int rows = sysIngredientMapper.insertSysIngredient(sysIngredient);
+        //
+        insertRecommand(sysIngredient);
+        //
+        insertNotRecommand(sysIngredient);
+        return rows;
+    }
+
+    /**
+     * 新增推荐标签
+     * @param ingredient
+     */
+    public void insertRecommand(SysIngredient ingredient) {
+        Long[] recIds = ingredient.getRecIds();
+        if(StringUtils.isNotNull(recIds)) {
+            List<SysIngredientRec> list = new ArrayList<SysIngredientRec>();
+            for(Long recId: recIds) {
+                SysIngredientRec rec = new SysIngredientRec();
+                rec.setIngredientId(ingredient.getId());
+                rec.setRecommandId(recId);
+                list.add(rec);
+            }
+            if(list.size() > 0) {
+                sysIngredientMapper.batchIngredientRec(list);
+            }
+        }
+    }
+
+    /**
+     * 新增不推荐标签
+     * @param ingredient
+     */
+    public void insertNotRecommand(SysIngredient ingredient) {
+        Long[] notRecIds = ingredient.getNotRecIds();
+        if(StringUtils.isNotNull(notRecIds)) {
+            List<SysIngredientNotRec> list = new ArrayList<SysIngredientNotRec>();
+            for(Long recId: notRecIds) {
+                SysIngredientNotRec notRec = new SysIngredientNotRec();
+                notRec.setIngredientId(ingredient.getId());
+                notRec.setRecommandId(recId);
+                list.add(notRec);
+            }
+            if(list.size() > 0) {
+                sysIngredientMapper.batchIngredientNotRec(list);
+            }
+        }
     }
 
     /**
      * 修改食材
-     * 
+     *
      * @param sysIngredient 食材
      * @return 结果
      */
     @Override
-    public int updateSysIngredient(SysIngredient sysIngredient)
-    {
+    public int updateSysIngredient(SysIngredient sysIngredient) {
         sysIngredient.setUpdateTime(DateUtils.getNowDate());
+        Long ingredientId = sysIngredient.getId();
+        sysIngredientMapper.deleteIngredentNotRecByIngredientId(ingredientId);
+        insertNotRecommand(sysIngredient);
+        sysIngredientMapper.deleteIngredentRecByIngredientId(ingredientId);
+        insertRecommand(sysIngredient);
         return sysIngredientMapper.updateSysIngredient(sysIngredient);
     }
 
     /**
      * 批量删除食材
-     * 
+     *
      * @param ids 需要删除的食材ID
      * @return 结果
      */
     @Override
-    public int deleteSysIngredientByIds(Long[] ids)
-    {
+    public int deleteSysIngredientByIds(Long[] ids) {
         return sysIngredientMapper.deleteSysIngredientByIds(ids);
     }
 
     /**
      * 删除食材信息
-     * 
+     *
      * @param id 食材ID
      * @return 结果
      */
     @Override
-    public int deleteSysIngredientById(Long id)
-    {
+    public int deleteSysIngredientById(Long id) {
+        sysIngredientMapper.deleteIngredentRecByIngredientId(id);
+        sysIngredientMapper.deleteIngredentNotRecByIngredientId(id);
         return sysIngredientMapper.deleteSysIngredientById(id);
     }
 }
\ No newline at end of file
diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysIngredientMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysIngredientMapper.xml
index 890f60ccc..c0a372b9c 100644
--- a/stdiet-custom/src/main/resources/mapper/custom/SysIngredientMapper.xml
+++ b/stdiet-custom/src/main/resources/mapper/custom/SysIngredientMapper.xml
@@ -8,16 +8,11 @@
         <result property="id"    column="id"    />
         <result property="name"    column="name"    />
         <result property="type"    column="type"    />
-        <result property="recEstimation"    column="rec_estimation"    />
-        <result property="recEstUnit"    column="rec_est_unit"    />
-        <result property="recPortion"    column="rec_portion"    />
         <result property="proteinRatio"    column="protein_ratio"    />
         <result property="fatRatio"    column="fat_ratio"    />
         <result property="carbonRatio"    column="carbon_ratio"    />
-        <result property="remark"    column="remark"    />
         <result property="area"    column="area"    />
-        <result property="notRec"    column="not_rec"    />
-        <result property="recommend"    column="recommend"    />
+        <result property="remark"    column="remark"    />
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
@@ -25,7 +20,7 @@
     </resultMap>
 
     <sql id="selectSysIngredientVo">
-        select id, name, type, rec_estimation, rec_est_unit, rec_portion, protein_ratio, fat_ratio, carbon_ratio, remark, area, not_rec, recommend, create_by, create_time, update_by, update_time from sys_ingredient
+        select id, name, type, protein_ratio, fat_ratio, carbon_ratio, area, remark, create_by, create_time, update_by, update_time from sys_ingredient
     </sql>
 
     <select id="selectSysIngredientList" parameterType="SysIngredient" resultMap="SysIngredientResult">
@@ -34,8 +29,6 @@
             <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
             <if test="type != null  and type != ''"> and type = #{type}</if>
             <if test="area != null  and area != ''"> and area = #{area}</if>
-            <if test="notRec != null  and notRec != ''"> and not_rec like concat('%', #{notRec}, '%')</if>
-            <if test="recommend != null  and recommend != ''"> and recommend like concat('%', #{recommend}, '%')</if>
         </where>
     </select>
 
@@ -49,16 +42,11 @@
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="name != null">name,</if>
             <if test="type != null">type,</if>
-            <if test="recEstimation != null">rec_estimation,</if>
-            <if test="recEstUnit != null">rec_est_unit,</if>
-            <if test="recPortion != null">rec_portion,</if>
             <if test="proteinRatio != null">protein_ratio,</if>
             <if test="fatRatio != null">fat_ratio,</if>
             <if test="carbonRatio != null">carbon_ratio,</if>
-            <if test="remark != null">remark,</if>
             <if test="area != null">area,</if>
-            <if test="notRec != null">not_rec,</if>
-            <if test="recommend != null">recommend,</if>
+            <if test="remark != null">remark,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
             <if test="updateBy != null">update_by,</if>
@@ -67,16 +55,11 @@
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="name != null">#{name},</if>
             <if test="type != null">#{type},</if>
-            <if test="recEstimation != null">#{recEstimation},</if>
-            <if test="recEstUnit != null">#{recEstUnit},</if>
-            <if test="recPortion != null">#{recPortion},</if>
             <if test="proteinRatio != null">#{proteinRatio},</if>
             <if test="fatRatio != null">#{fatRatio},</if>
             <if test="carbonRatio != null">#{carbonRatio},</if>
-            <if test="remark != null">#{remark},</if>
             <if test="area != null">#{area},</if>
-            <if test="notRec != null">#{notRec},</if>
-            <if test="recommend != null">#{recommend},</if>
+            <if test="remark != null">#{remark},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
             <if test="updateBy != null">#{updateBy},</if>
@@ -84,21 +67,38 @@
         </trim>
     </insert>
 
+    <insert id="batchIngredientRec" >
+        insert into sys_ingredient_rec(ingredient_id, rec_id) values
+        <foreach collection="list" separator="," item="item" index="index">
+            (#{item.ingredientId},#{item.recommandId})
+        </foreach>
+    </insert>
+
+    <insert id="batchIngredientNotRec" >
+        insert into sys_ingredient_not_rec(ingredient_id, not_rec_id) values
+        <foreach collection="list" separator="," item="item" index="index">
+            (#{item.ingredientId},#{item.notRecommandId})
+        </foreach>
+    </insert>
+
+    <delete id="deleteIngredentRecByIngredientId" parameterType="Long">
+        delete from sys_ingredient_rec where ingredient_id=#{ingredientId}
+    </delete>
+
+    <delete id="deleteIngredentNotRecByIngredientId" parameterType="Long">
+        delete from sys_ingredient_not_rec where ingredient_id=#{ingredientId}
+    </delete>
+
     <update id="updateSysIngredient" parameterType="SysIngredient">
         update sys_ingredient
         <trim prefix="SET" suffixOverrides=",">
             <if test="name != null">name = #{name},</if>
             <if test="type != null">type = #{type},</if>
-            <if test="recEstimation != null">rec_estimation = #{recEstimation},</if>
-            <if test="recEstUnit != null">rec_est_unit = #{recEstUnit},</if>
-            <if test="recPortion != null">rec_portion = #{recPortion},</if>
             <if test="proteinRatio != null">protein_ratio = #{proteinRatio},</if>
             <if test="fatRatio != null">fat_ratio = #{fatRatio},</if>
             <if test="carbonRatio != null">carbon_ratio = #{carbonRatio},</if>
-            <if test="remark != null">remark = #{remark},</if>
             <if test="area != null">area = #{area},</if>
-            <if test="notRec != null">not_rec = #{notRec},</if>
-            <if test="recommend != null">recommend = #{recommend},</if>
+            <if test="remark != null">remark = #{remark},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
diff --git a/stdiet-ui/src/views/custom/ingredient/index.vue b/stdiet-ui/src/views/custom/ingredient/index.vue
index 4003b523f..1ad31bbfa 100644
--- a/stdiet-ui/src/views/custom/ingredient/index.vue
+++ b/stdiet-ui/src/views/custom/ingredient/index.vue
@@ -44,28 +44,31 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['custom:ingredient:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['custom:ingredient:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['custom:ingredient:remove']"
-        >删除</el-button>
+        >新增
+        </el-button>
       </el-col>
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="success"-->
+<!--          icon="el-icon-edit"-->
+<!--          size="mini"-->
+<!--          :disabled="single"-->
+<!--          @click="handleUpdate"-->
+<!--          v-hasPermi="['custom:ingredient:edit']"-->
+<!--        >修改-->
+<!--        </el-button>-->
+<!--      </el-col>-->
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="danger"-->
+<!--          icon="el-icon-delete"-->
+<!--          size="mini"-->
+<!--          :disabled="multiple"-->
+<!--          @click="handleDelete"-->
+<!--          v-hasPermi="['custom:ingredient:remove']"-->
+<!--        >删除-->
+<!--        </el-button>-->
+<!--      </el-col>-->
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -73,26 +76,24 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['custom:ingredient:export']"
-        >导出</el-button>
+        >导出
+        </el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="ingredientList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="id" align="center" prop="id" />
-      <el-table-column label="食材名称" align="center" prop="name" />
-      <el-table-column label="食材类别" align="center" prop="type" :formatter="typeFormat" />
-      <el-table-column label="推荐分量" align="center" prop="recEstimation" />
-      <el-table-column label="推荐分量单位" align="center" prop="recEstUnit" :formatter="recEstUnitFormat" />
-      <el-table-column label="推荐分量" align="center" prop="recPortion" />
-      <el-table-column label="蛋白质比例" align="center" prop="proteinRatio" />
-      <el-table-column label="脂肪比例" align="center" prop="fatRatio" />
-      <el-table-column label="碳水比例" align="center" prop="carbonRatio" />
-      <el-table-column label="地域" align="center" prop="area" :formatter="areaFormat" />
-      <el-table-column label="忌口人群" align="center" prop="notRec" :formatter="notRecFormat" />
-      <el-table-column label="推荐人群" align="center" prop="recommend" :formatter="recommendFormat" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <!--      <el-table-column type="selection" width="55" align="center" />-->
+      <!--      <el-table-column label="id" align="center" prop="id" />-->
+      <el-table-column label="食材名称" align="center" prop="name"/>
+      <el-table-column label="食材类别" align="center" prop="type" :formatter="typeFormat"/>
+      <el-table-column label="蛋白质比例(100g)" align="center" prop="proteinRatio"/>
+      <el-table-column label="脂肪比例(100g)" align="center" prop="fatRatio"/>
+      <el-table-column label="碳水比例(100g)" align="center" prop="carbonRatio"/>
+      <el-table-column label="地域" align="center" prop="area" :formatter="areaFormat"/>
+      <el-table-column label="忌口人群" align="center" prop="notRecIds" :formatter="notRecFormat"/>
+      <el-table-column label="推荐人群" align="center" prop="recIds" :formatter="recommendFormat"/>
+      <el-table-column label="备注" align="center" prop="remark"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -101,14 +102,16 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['custom:ingredient:edit']"
-          >修改</el-button>
+          >修改
+          </el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['custom:ingredient:remove']"
-          >删除</el-button>
+          >删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -122,80 +125,87 @@
     />
 
     <!-- 添加或修改食材对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="食材名称" prop="name">
-          <el-input v-model="form.name" placeholder="请输入食材名称" />
-        </el-form-item>
-        <el-form-item label="食材类别" prop="type">
-          <el-select v-model="form.type" placeholder="请选择食材类别">
-            <el-option
-              v-for="dict in typeOptions"
-              :key="dict.dictValue"
-              :label="dict.dictLabel"
-              :value="dict.dictValue"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="推荐分量" prop="recEstimation">
-          <el-input v-model="form.recEstimation" placeholder="请输入推荐分量" />
-        </el-form-item>
-        <el-form-item label="推荐分量单位" prop="recEstUnit">
-          <el-select v-model="form.recEstUnit" placeholder="请选择推荐分量单位">
-            <el-option
-              v-for="dict in recEstUnitOptions"
-              :key="dict.dictValue"
-              :label="dict.dictLabel"
-              :value="parseInt(dict.dictValue)"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="推荐分量" prop="recPortion">
-          <el-input v-model="form.recPortion" placeholder="请输入推荐分量" />
-        </el-form-item>
-        <el-form-item label="蛋白质比例" prop="proteinRatio">
-          <el-input v-model="form.proteinRatio" placeholder="请输入蛋白质比例" />
-        </el-form-item>
-        <el-form-item label="脂肪比例" prop="fatRatio">
-          <el-input v-model="form.fatRatio" placeholder="请输入脂肪比例" />
-        </el-form-item>
-        <el-form-item label="碳水比例" prop="carbonRatio">
-          <el-input v-model="form.carbonRatio" placeholder="请输入碳水比例" />
-        </el-form-item>
-        <el-form-item label="地域" prop="area">
-          <el-select v-model="form.area" placeholder="请选择地域">
-            <el-option
-              v-for="dict in areaOptions"
-              :key="dict.dictValue"
-              :label="dict.dictLabel"
-              :value="dict.dictValue"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="忌口人群">
-          <el-checkbox-group v-model="form.notRec">
-            <el-checkbox
-              v-for="dict in notRecOptions"
-              :key="dict.dictValue"
-              :label="dict.dictValue">
-              {{dict.dictLabel}}
-            </el-checkbox>
-          </el-checkbox-group>
-        </el-form-item>
-        <el-form-item label="推荐人群">
-          <el-checkbox-group v-model="form.recommend">
-            <el-checkbox
-              v-for="dict in recommendOptions"
-              :key="dict.dictValue"
-              :label="dict.dictValue">
-              {{dict.dictLabel}}
-            </el-checkbox>
-          </el-checkbox-group>
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
-        </el-form-item>
-      </el-form>
+    <el-dialog :title="title" :visible.sync="open" width="620px" append-to-body>
+      <el-row :gutter="15">
+        <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+          <el-col :span="12">
+            <el-form-item label="食材名称" prop="name" label-width="90px">
+              <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-option
+                  v-for="dict in typeOptions"
+                  :key="dict.dictValue"
+                  :label="dict.dictLabel"
+                  :value="dict.dictValue"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="地域" prop="area" label-width="90px">
+              <el-select v-model="form.area" placeholder="请选择地域">
+                <el-option
+                  v-for="dict in areaOptions"
+                  :key="dict.dictValue"
+                  :label="dict.dictLabel"
+                  :value="dict.dictValue"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="忌口人群" label-width="90px">
+              <el-checkbox-group v-model="form.notRecIds">
+                <el-checkbox
+                  v-for="dict in notRecOptions"
+                  :key="dict.dictValue"
+                  :label="dict.dictValue">
+                  {{dict.dictLabel}}
+                </el-checkbox>
+              </el-checkbox-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="推荐人群" label-width="90px">
+              <el-checkbox-group v-model="form.recIds">
+                <el-checkbox
+                  v-for="dict in recommendOptions"
+                  :key="dict.dictValue"
+                  :label="dict.dictValue">
+                  {{dict.dictLabel}}
+                </el-checkbox>
+              </el-checkbox-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="备注" prop="remark" label-width="90px">
+              <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
@@ -205,7 +215,14 @@
 </template>
 
 <script>
-  import { listIngredient, getIngredient, delIngredient, addIngredient, updateIngredient, exportIngredient } from "@/api/custom/ingredient";
+  import {
+    addIngredient,
+    delIngredient,
+    exportIngredient,
+    getIngredient,
+    listIngredient,
+    updateIngredient
+  } from "@/api/custom/ingredient";
 
   export default {
     name: "Ingredient",
@@ -231,8 +248,6 @@
         open: false,
         // 食材类别字典
         typeOptions: [],
-        // 推荐分量单位字典
-        recEstUnitOptions: [],
         // 地域字典
         areaOptions: [],
         // 忌口人群字典
@@ -246,14 +261,13 @@
           name: null,
           type: null,
           area: null,
-          notRec: null,
-          recommend: null,
+          notRecIds: null,
+          recIds: null,
         },
         // 表单参数
         form: {},
         // 表单校验
-        rules: {
-        }
+        rules: {}
       };
     },
     created() {
@@ -261,9 +275,6 @@
       this.getDicts("cus_ing_type").then(response => {
         this.typeOptions = response.data;
       });
-      this.getDicts("cus_cus_unit").then(response => {
-        this.recEstUnitOptions = response.data;
-      });
       this.getDicts("cus_area").then(response => {
         this.areaOptions = response.data;
       });
@@ -288,21 +299,17 @@
       typeFormat(row, column) {
         return this.selectDictLabel(this.typeOptions, row.type);
       },
-      // 推荐分量单位字典翻译
-      recEstUnitFormat(row, column) {
-        return this.selectDictLabel(this.recEstUnitOptions, row.recEstUnit);
-      },
       // 地域字典翻译
       areaFormat(row, column) {
         return this.selectDictLabel(this.areaOptions, row.area);
       },
       // 忌口人群字典翻译
       notRecFormat(row, column) {
-        return this.selectDictLabels(this.notRecOptions, row.notRec);
+        return this.selectDictLabels(this.notRecOptions, row.notRecIds.join(','));
       },
       // 推荐人群字典翻译
       recommendFormat(row, column) {
-        return this.selectDictLabels(this.recommendOptions, row.recommend);
+        return this.selectDictLabels(this.recommendOptions, row.recIds.join(','));
       },
       // 取消按钮
       cancel() {
@@ -315,15 +322,12 @@
           id: null,
           name: null,
           type: null,
-          recEstimation: null,
-          recEstUnit: null,
-          recPortion: null,
           proteinRatio: null,
           fatRatio: null,
           carbonRatio: null,
           area: null,
-          notRec: [],
-          recommend: [],
+          notRecIds: [],
+          recIds: [],
           remark: null,
           createBy: null,
           createTime: null,
@@ -345,7 +349,7 @@
       // 多选框选中数据
       handleSelectionChange(selection) {
         this.ids = selection.map(item => item.id)
-        this.single = selection.length!==1
+        this.single = selection.length !== 1
         this.multiple = !selection.length
       },
       /** 新增按钮操作 */
@@ -360,8 +364,8 @@
         const id = row.id || this.ids
         getIngredient(id).then(response => {
           this.form = response.data;
-          this.form.notRec = this.form.notRec.split(",");
-          this.form.recommend = this.form.recommend.split(",");
+          // this.form.notRecIds = this.form.notRecIds.split(",");
+          // this.form.recIds = this.form.recIds.split(",");
           this.open = true;
           this.title = "修改食材";
         });
@@ -370,8 +374,8 @@
       submitForm() {
         this.$refs["form"].validate(valid => {
           if (valid) {
-            this.form.notRec = this.form.notRec.join(",");
-            this.form.recommend = this.form.recommend.join(",");
+            // this.form.notRecIds = this.form.notRecIds.join(",");
+            // this.form.recIds = this.form.recIds.join(",");
             if (this.form.id != null) {
               updateIngredient(this.form).then(response => {
                 if (response.code === 200) {
@@ -399,12 +403,13 @@
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning"
-        }).then(function() {
+        }).then(function () {
           return delIngredient(ids);
         }).then(() => {
           this.getList();
           this.msgSuccess("删除成功");
-        }).catch(function() {});
+        }).catch(function () {
+        });
       },
       /** 导出按钮操作 */
       handleExport() {
@@ -413,11 +418,12 @@
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning"
-        }).then(function() {
+        }).then(function () {
           return exportIngredient(queryParams);
         }).then(response => {
           this.download(response.msg);
-        }).catch(function() {});
+        }).catch(function () {
+        });
       }
     }
   };