1、完善每周菜谱功能,用户不能添加和删除

2、列表中增加合并列显示效果
3、增加菜品列表
This commit is contained in:
28353131@qq.com 2020-11-28 12:53:37 +08:00
parent bac94b2f03
commit e3c0bc3c5c
3 changed files with 253 additions and 234 deletions

View File

@ -7,6 +7,7 @@ import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.fantang.domain.FtWeekMenuDao; import com.ruoyi.system.fantang.domain.FtWeekMenuDao;
import com.ruoyi.system.fantang.service.IFtWeekMenuDaoService; import com.ruoyi.system.fantang.service.IFtWeekMenuDaoService;
@ -38,31 +39,21 @@ public class FtWeekMenuDaoController extends BaseController {
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(FtWeekMenuDao ftWeekMenuDao) { public TableDataInfo list(FtWeekMenuDao ftWeekMenuDao) {
startPage(); startPage();
LambdaQueryWrapper<FtWeekMenuDao> lqw = Wrappers.lambdaQuery(ftWeekMenuDao); List<FtWeekMenuDao> list = iFtWeekMenuDaoService.list(null);
if (ftWeekMenuDao.getDinnerType() != null) {
lqw.eq(FtWeekMenuDao::getDinnerType, ftWeekMenuDao.getDinnerType());
}
if (ftWeekMenuDao.getWeekday() != null) {
lqw.eq(FtWeekMenuDao::getWeekday, ftWeekMenuDao.getWeekday());
}
if (ftWeekMenuDao.getFlag() != null) {
lqw.eq(FtWeekMenuDao::getFlag, ftWeekMenuDao.getFlag());
}
List<FtWeekMenuDao> list = iFtWeekMenuDaoService.list(lqw);
return getDataTable(list); return getDataTable(list);
} }
/** /**
* 导出每周菜单列表 * 导出每周菜单列表
*/ */
@PreAuthorize("@ss.hasPermi('fantang:weekMenu:export')") @PreAuthorize("@ss.hasPermi('fantang:weekMenu:export')" )
@Log(title = "每周菜单", businessType = BusinessType.EXPORT) @Log(title = "每周菜单" , businessType = BusinessType.EXPORT)
@GetMapping("/export") @GetMapping("/export" )
public AjaxResult export(FtWeekMenuDao ftWeekMenuDao) { public AjaxResult export(FtWeekMenuDao ftWeekMenuDao) {
LambdaQueryWrapper<FtWeekMenuDao> lqw = new LambdaQueryWrapper<FtWeekMenuDao>(ftWeekMenuDao); LambdaQueryWrapper<FtWeekMenuDao> lqw = new LambdaQueryWrapper<FtWeekMenuDao>(ftWeekMenuDao);
List<FtWeekMenuDao> list = iFtWeekMenuDaoService.list(lqw); List<FtWeekMenuDao> list = iFtWeekMenuDaoService.list(lqw);
ExcelUtil<FtWeekMenuDao> util = new ExcelUtil<FtWeekMenuDao>(FtWeekMenuDao.class); ExcelUtil<FtWeekMenuDao> util = new ExcelUtil<FtWeekMenuDao>(FtWeekMenuDao. class);
return util.exportExcel(list, "weekMenu"); return util.exportExcel(list, "weekMenu" );
} }
/** /**

View File

@ -54,5 +54,5 @@ private static final long serialVersionUID=1L;
/** 启用标志 */ /** 启用标志 */
@Excel(name = "启用标志") @Excel(name = "启用标志")
private Integer flag; private Boolean flag;
} }

View File

@ -1,40 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="用餐类型" prop="dinnerType">
<el-select v-model="queryParams.dinnerType" placeholder="请选择用餐类型" clearable size="small">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="星期几" prop="weekday">
<el-select v-model="queryParams.weekday" placeholder="请选择星期几" clearable size="small">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="启用标志" prop="flag">
<el-input
v-model="queryParams.flag"
placeholder="请输入启用标志"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['fantang:weekMenu:add']"
>新增</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -44,17 +11,10 @@
:disabled="single" :disabled="single"
@click="handleUpdate" @click="handleUpdate"
v-hasPermi="['fantang:weekMenu:edit']" v-hasPermi="['fantang:weekMenu:edit']"
>修改</el-button> >修改
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['fantang:weekMenu:remove']"
>删除</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -63,19 +23,22 @@
size="mini" size="mini"
@click="handleExport" @click="handleExport"
v-hasPermi="['fantang:weekMenu:export']" v-hasPermi="['fantang:weekMenu:export']"
>导出</el-button> >导出
</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="weekMenuList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="weekMenuList"
<el-table-column type="selection" width="55" align="center" /> :span-method="objectSpanMethod"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="id" align="center" prop="id" v-if="false"/> <el-table-column label="id" align="center" prop="id" v-if="false"/>
<el-table-column label="用餐类型" align="center" prop="dinnerType" /> <el-table-column label="星期几" align="center" prop="weekday"/>
<el-table-column label="星期几" align="center" prop="weekday" /> <el-table-column label="用餐类型" align="center" prop="dinnerType"/>
<el-table-column label="菜品列表" align="center" prop="foods" /> <el-table-column label="菜品列表" align="center" prop="foods"/>
<el-table-column label="总价格" align="center" prop="price" /> <el-table-column label="总价格" align="center" prop="price"/>
<el-table-column label="启用标志" align="center" prop="flag" /> <el-table-column label="启用标志" align="center" prop="flag" :formatter="formatStartFlag"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -84,14 +47,8 @@
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['fantang:weekMenu:edit']" v-hasPermi="['fantang:weekMenu:edit']"
>修改</el-button> >修改
<el-button </el-button>
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['fantang:weekMenu:remove']"
>删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -105,25 +62,44 @@
/> />
<!-- 添加或修改每周菜单对话框 --> <!-- 添加或修改每周菜单对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form-item label="星期几" prop="weekday">
<el-select v-model="form.weekday" placeholder="请选择星期几">
<el-option
v-for="item in weekdayOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="用餐类型" prop="dinnerType"> <el-form-item label="用餐类型" prop="dinnerType">
<el-select v-model="form.dinnerType" placeholder="请选择用餐类型"> <el-select v-model="form.dinnerType" placeholder="请选择用餐类型">
<el-option label="请选择字典生成" value="" /> <el-option
</el-select> v-for="item in dinnerTypeOptions"
</el-form-item> :key="item.value"
<el-form-item label="星期几" prop="weekday"> :label="item.label"
<el-select v-model="form.weekday" placeholder="请选择星期几"> :value="item.value">
<el-option label="请选择字典生成" value="" /> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="菜品列表" prop="foods"> <el-form-item label="菜品列表" prop="foods">
<el-select v-model="form.foods" placeholder="请选择菜品列表"> <el-select v-model="form.foods" multiple placeholder="请选择菜品列表">
<el-option label="请选择字典生成" value="" /> <el-option
v-for="item in foodList"
:key="item.foodId"
:label="item.name"
:value="item.foodId">
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="启用标志" prop="flag"> <el-form-item label="启用标志" prop="flag">
<el-input v-model="form.flag" placeholder="请输入启用标志" /> <el-switch
v-model="form.flag"
active-text="启用"
inactive-text="禁用">
</el-switch>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -135,12 +111,17 @@
</template> </template>
<script> <script>
import { listWeekMenu, getWeekMenu, delWeekMenu, addWeekMenu, updateWeekMenu, exportWeekMenu } from "@/api/fantang/weekMenu"; import {
listWeekMenu,
getWeekMenu,
updateWeekMenu,
exportWeekMenu
} from "@/api/fantang/weekMenu";
import {listFood} from "../../../api/fantang/food";
export default { export default {
name: "WeekMenu", name: "WeekMenu",
components: { components: {},
},
data() { data() {
return { return {
// //
@ -159,14 +140,58 @@ export default {
weekMenuList: [], weekMenuList: [],
// //
title: "", title: "",
//
foodList: [],
// queryParams
foodQueryParams:{
pageNum: 1,
pageSize: 9,
name: null,
price: null,
type: null
},
// //
open: false, open: false,
dinnerTypeOptions: [{
value: '早餐',
label: '早餐'
}, {
value: '午餐',
label: '午餐'
}, {
value: '晚餐',
label: '晚餐'
}
],
weekdayOptions : [{
value: '周一',
label: '周一'
}, {
value: '周二',
label: '周二'
},{
value: '周三',
label: '周三'
},{
value: '周四',
label: '周四'
},{
value: '周五',
label: '周五'
},{
value: '周六',
label: '周六'
},{
value: '周日',
label: '周日'
}],
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 9,
dinnerType: null, dinnerType: '',
weekday: null, weekday: '',
flag: null flag: null
}, },
// //
@ -174,16 +199,16 @@ export default {
// //
rules: { rules: {
dinnerType: [ dinnerType: [
{ required: true, message: "用餐类型不能为空", trigger: "change" } {required: true, message: "用餐类型不能为空", trigger: "change"}
], ],
weekday: [ weekday: [
{ required: true, message: "星期几不能为空", trigger: "change" } {required: true, message: "星期几不能为空", trigger: "change"}
], ],
foods: [ foods: [
{ required: true, message: "菜品列表不能为空", trigger: "change" } {required: true, message: "菜品列表不能为空", trigger: "change"}
], ],
flag: [ flag: [
{ required: true, message: "启用标志不能为空", trigger: "blur" } {required: true, message: "启用标志不能为空", trigger: "blur"}
] ]
} }
}; };
@ -192,6 +217,28 @@ export default {
this.getList(); this.getList();
}, },
methods: { methods: {
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 1) {
if (rowIndex % 3 === 0) {
return {
rowspan: 3,
colspan: 1
};
} else {
return {
rowspan: 0,
colspan: 0
};
}
}
},
formatStartFlag(row) {
if(row.flag)
return "启用";
else
return "禁用";
},
/** 查询每周菜单列表 */ /** 查询每周菜单列表 */
getList() { getList() {
this.loading = true; this.loading = true;
@ -200,6 +247,12 @@ export default {
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
}); });
listFood(this.queryParams).then(response => {
this.foodList = response.rows;
this.loading = false;
console.log("foods", this.foodList);
});
}, },
// //
cancel() { cancel() {
@ -231,15 +284,9 @@ export default {
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map(item => item.id)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加每周菜单";
},
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset();
@ -261,29 +308,10 @@ export default {
this.getList(); this.getList();
}); });
} else { } else {
addWeekMenu(this.form).then(response => {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
});
} }
} }
}); });
}, },
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否确认删除每周菜单编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return delWeekMenu(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
},
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
const queryParams = this.queryParams; const queryParams = this.queryParams;
@ -291,12 +319,12 @@ export default {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning" type: "warning"
}).then(function() { }).then(function () {
return exportWeekMenu(queryParams); return exportWeekMenu(queryParams);
}).then(response => { }).then(response => {
this.download(response.msg); this.download(response.msg);
}) })
} }
} }
}; };
</script> </script>