diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysDishesController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysDishesController.java index f4254c312..1f3bc5c79 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysDishesController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysDishesController.java @@ -1,5 +1,6 @@ package com.stdiet.web.controller.custom; +import com.alibaba.fastjson.JSONObject; import com.stdiet.common.annotation.Log; import com.stdiet.common.core.controller.BaseController; import com.stdiet.common.core.domain.AjaxResult; @@ -9,13 +10,11 @@ import com.stdiet.common.utils.StringUtils; import com.stdiet.common.utils.poi.ExcelUtil; import com.stdiet.custom.domain.SysDishes; import com.stdiet.custom.domain.SysDishesIngredient; -import com.stdiet.custom.domain.SysIngredient; import com.stdiet.custom.service.ISysDishesService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; -import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; @@ -71,6 +70,19 @@ public class SysDishesController extends BaseController { return AjaxResult.success(sysDishesService.selectSysDishesById(id)); } + /** + * 查看菜品可选餐类 + * + * @param id + * @return + */ + @GetMapping(value = "/menuTypes/{id}") + public AjaxResult getMenuTypes(@PathVariable("id") Long id) { + JSONObject object = new JSONObject(); + object.put("type", sysDishesService.getDishesMenuTypeById(id)); + return AjaxResult.success(object); + } + /** * 新增菜品 */ diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDailyDishes.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDailyDishes.java index b4e5d5e77..798063446 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDailyDishes.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDailyDishes.java @@ -25,4 +25,6 @@ public class SysRecipesDailyDishes { private String type; private Integer isMain; + + private String remark; } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysDishesMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysDishesMapper.java index 262325752..29d909707 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysDishesMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysDishesMapper.java @@ -70,4 +70,6 @@ public interface SysDishesMapper public int deleteIngredientByIds(Long[] ids); public int bashInsertDishesIngredent(List sysDishesIngredients); + + String getDishesMenuTypeById(Long id); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysDishesService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysDishesService.java index e279b2eac..baecbb30f 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysDishesService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysDishesService.java @@ -62,4 +62,6 @@ public interface ISysDishesService * @return 结果 */ public int deleteSysDishesById(Long id); + + public String getDishesMenuTypeById(Long id); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysDishesServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysDishesServiceImpl.java index 4d6945f3c..39ada4428 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysDishesServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysDishesServiceImpl.java @@ -124,4 +124,9 @@ public class SysDishesServiceImpl implements ISysDishesService { sysDishesMapper.deleteIngredientById(id); return sysDishesMapper.deleteSysDishesById(id); } + + @Override + public String getDishesMenuTypeById(Long id) { + return sysDishesMapper.getDishesMenuTypeById(id); + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml index 4d2e8e819..3d3f69388 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml @@ -155,4 +155,8 @@ + + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml index 82feea188..baa055611 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml @@ -22,6 +22,7 @@ + @@ -86,6 +87,7 @@ dishes_id = #{dishesId}, type = #{type}, detail = #{detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}, + remark = #{remark}, where id = #{id} @@ -98,12 +100,14 @@ dishes_id, type, detail, + remark, #{menuId}, #{dishesId}, #{type}, #{detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}, + #{remark}, @@ -138,9 +142,9 @@ - insert into sys_customer_menu_dishes (menu_id, type, dishes_id, detail) values + insert into sys_customer_menu_dishes (menu_id, type, dishes_id, remark, detail) values - (#{item.menuId}, #{item.type}, #{item.dishesId}, #{item.detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}) + (#{item.menuId}, #{item.type}, #{item.dishesId}, #{remark}, #{item.detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}) diff --git a/stdiet-ui/src/api/custom/dishes.js b/stdiet-ui/src/api/custom/dishes.js index 3eb77e850..4a8498eab 100644 --- a/stdiet-ui/src/api/custom/dishes.js +++ b/stdiet-ui/src/api/custom/dishes.js @@ -17,6 +17,13 @@ export function getDishes(id) { }) } +export function getDishesMenuTypes(id) { + return request({ + url: '/custom/dishes/menuTypes/' + id, + method: 'get' + }) +} + // 新增菜品 export function addDishes(data) { return request({ diff --git a/stdiet-ui/src/store/modules/recipes.js b/stdiet-ui/src/store/modules/recipes.js index 62d50161f..6c20b9ad5 100644 --- a/stdiet-ui/src/store/modules/recipes.js +++ b/stdiet-ui/src/store/modules/recipes.js @@ -7,6 +7,7 @@ import { deleteDishesApi, addRecipesApi } from "@/api/custom/recipes"; +import { getDishesMenuTypes } from "@/api/custom/dishes"; import { getRecipesTemplateDetail } from "@/api/custom/recipesTemplate"; import { getRecipesPlan, updateRecipesPlan } from "@/api/custom/recipesPlan"; import { getDicts } from "@/api/system/dict/data"; @@ -30,33 +31,38 @@ const oriState = { reviewStatus: 0, templateInfo: undefined, copyData: undefined, + canCopyMenuTypes: [], fontSize: 12 }; const mutations = { updateRecipesDishesDetail(state, payload) { - const tarDishes = state.recipesData[payload.num].dishes.find( - obj => obj.id === payload.id + const { num, actionType } = payload; + const tarDishes = state.recipesData[num].dishes.find( + obj => + obj.id === (actionType === "replace" ? payload.data.id : payload.id) ); if (tarDishes) { - if ( - payload.dishesId !== tarDishes.dishesId || - payload.type !== undefined - ) { - // 替换菜品 - Object.keys(payload).forEach(key => { - if (key === "num") { - return; - } - tarDishes[key] = payload[key]; + if (actionType === "replace") { + // 替换菜品,修改类型 + Object.keys(payload.data).forEach(key => { + tarDishes[key] = payload.data[key]; }); - } else { + } else if (actionType === "remark") { + tarDishes.remark = payload.remark; + } else if (actionType === "menuType") { + tarDishes.type = payload.type; + } else if (actionType === "weight" || actionType === "unit") { const tarIgd = tarDishes.igdList.find(obj => obj.id === payload.igdId); if (tarIgd) { payload.weight && (tarIgd.weight = payload.weight); payload.cusWeight && (tarIgd.cusWeight = payload.cusWeight); payload.cusUnit && (tarIgd.cusUnit = payload.cusUnit); } + } else if (actionType === "delIgd") { + tarDishes.igdList = tarDishes.igdList.filter( + igd => igd.id !== payload.igdId + ); } } }, @@ -213,6 +219,7 @@ const actions = { name: cur.name, menuId: cur.menuId, methods: cur.methods, + remark: cur.remark, type: cur.type, isMain: cur.isMain, igdList: cur.igdList.reduce((igdArr, igdData) => { @@ -323,78 +330,70 @@ const actions = { commit("addRecipesDishes", payload); } }, - async replaceDishes({ commit, state }, payload) { - // console.log(payload); - const tarDishesList = state.recipesData[payload.num].dishes.filter( - obj => obj.type === payload.data.type - ); - if (tarDishesList.some(obj => obj.dishesId === payload.data.dishesId)) { - return new Promise((res, rej) => - rej(`目标餐类已有相同的菜品「${payload.data.name}」`) + async updateDishes({ commit, state }, payload) { + const { num, actionType } = payload; + if (actionType === "replace") { + const tarDishesList = state.recipesData[payload.num].dishes.filter( + obj => obj.type === payload.data.type ); + if (tarDishesList.some(obj => obj.dishesId === payload.data.dishesId)) { + return new Promise((res, rej) => + rej(`目标餐类已有相同的菜品「${payload.data.name}」`) + ); + } } + // console.log(payload); if (state.recipesId) { - const tarDishes = state.recipesData[payload.num].dishes.find( - obj => obj.id === payload.data.id + const tarDishes = state.recipesData[num].dishes.find( + obj => + obj.id === (actionType === "replace" ? payload.data.id : payload.id) ); if (tarDishes) { + const mTarDishes = JSON.parse(JSON.stringify(tarDishes)); const params = { - id: tarDishes.id, - dishesId: payload.data.dishesId, - detail: payload.data.igdList.map(igd => ({ + id: mTarDishes.id + }; + if (actionType === "menuType") { + // 修改餐类 + params.type = payload.type; + } else if (actionType === "remark") { + params.remark = payload.remark; + } else if (actionType === "replace") { + params.dishesId = payload.data.dishesId; + params.detail = payload.data.igdList.map(igd => ({ id: igd.id, weight: igd.weight, cus_unit: igd.cusUnit, cus_weight: igd.cusWeight - })) - }; - // console.log(params); - const result = await updateDishesDetailApi(params); - if (result.code === 200) { - commit("updateRecipesDishesDetail", { - num: payload.num, - ...payload.data - }); - } - } - } else { - commit("updateRecipesDishesDetail", { - num: payload.num, - ...payload.data - }); - } - }, - async updateDishes({ commit, state }, payload) { - // console.log(payload); - if (state.recipesId) { - const tarDishes = state.recipesData[payload.num].dishes.find( - obj => obj.id === payload.id - ); - if (tarDishes) { - const mTarDishes = JSON.parse(JSON.stringify(tarDishes)); - let params = { - id: mTarDishes.id - }; - if (payload.type !== undefined) { - // 修改餐类 - params.type = payload.type; - } else { + })); + } else if (actionType === "delIgd") { + // 删除某食材 + params.detail = mTarDishes.igdList.reduce((arr, igd) => { + if (igd.id !== payload.igdId) { + arr.push({ + id: igd.id, + weight: igd.weight, + cus_unit: igd.cusUnit, + cus_weight: igd.cusWeight + }); + } + return arr; + }, []); + } else if (actionType === "unit" || actionType === "weight") { // 修改食材 - const tarIgd = mTarDishes.igdList.find( - obj => obj.id === payload.igdId - ); - if (tarIgd) { - payload.weight && (tarIgd.weight = payload.weight); - payload.cusWeight && (tarIgd.cusWeight = payload.cusWeight); - payload.cusUnit && (tarIgd.cusUnit = payload.cusUnit); - - params.detail = mTarDishes.igdList.map(igd => ({ + params.detail = mTarDishes.igdList.map(igd => { + const isTarIgd = igd.id === payload.igdId; + return { id: igd.id, - weight: igd.weight, - cus_unit: igd.cusUnit, - cus_weight: igd.cusWeight - })); - } + weight: isTarIgd && payload.weight ? payload.weight : igd.weight, + cus_unit: + isTarIgd && payload.cusUnit ? payload.cusUnit : igd.cusUnit, + cus_weight: + isTarIgd && payload.cusWeight + ? payload.cusWeight + : igd.cusWeight + }; + }); } const result = await updateDishesDetailApi(params); if (result.code === 200) { @@ -423,14 +422,21 @@ const actions = { }, async deleteMenu({ commit }, payload) {}, async setCopyData({ commit, state }, payload) { - return new Promise((res, rej) => { + return new Promise(async (res, rej) => { const tarDishes = state.recipesData[payload.num].dishes.find( obj => obj.id === payload.id ); if (tarDishes) { - commit("updateStateData", { copyData: tarDishes }); - - res("复制成功"); + const response = await getDishesMenuTypes(tarDishes.dishesId); + if (response.code === 200) { + commit("updateStateData", { + copyData: tarDishes, + canCopyMenuTypes: response.data.type.split(",") + }); + res("复制成功"); + } else { + rej("复制失败"); + } } else { rej("复制失败"); } diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/RemarkDialog/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/RemarkDialog/index.vue new file mode 100644 index 000000000..a2bfcee9c --- /dev/null +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/RemarkDialog/index.vue @@ -0,0 +1,49 @@ + + diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/index.vue index 339562e89..5d6e36296 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/index.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/index.vue @@ -13,37 +13,38 @@ > + - @@ -54,7 +55,7 @@ content="点击添加菜品" placement="top" > - 菜品 +
菜品
+
+ + -