postdischarge-ui/src/views/system/baseDiet/index.vue
2024-06-14 15:30:24 +08:00

345 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container" ref="layout">
<div ref="form" class="form">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="饮食建议名称" prop="dietName">
<el-input v-model="queryParams.dietName" placeholder="请输入饮食建议名称" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="饮食原则" prop="dietPrinciple">
<el-input v-model="queryParams.dietPrinciple" placeholder="请输入饮食原则" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<!-- <el-form-item label="主食推荐" prop="mainFood">
<el-input
v-model="queryParams.mainFood"
placeholder="请输入主食推荐"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="蔬菜推荐" prop="vegetable">
<el-input
v-model="queryParams.vegetable"
placeholder="请输入蔬菜推荐"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<!-- <el-form-item label="水果推荐" prop="fruit">
<el-input
v-model="queryParams.fruit"
placeholder="请输入水果推荐"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="肉类推荐" prop="meat">
<el-input
v-model="queryParams.meat"
placeholder="请输入肉类推荐"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="饮食说明" prop="dietRemark">
<el-input
v-model="queryParams.dietRemark"
placeholder="请输入饮食说明"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item>
<el-button type="primary" 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>
</div>
<div ref="mb8" class="mb8">
<el-row :gutter="10" class="">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:baseDiet:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['system:baseDiet:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['system:baseDiet:remove']">删除</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:baseDiet:export']"
>导出</el-button
>
</el-col> -->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
</div>
<div ref="table">
<el-table :max-height="maxTableHeight" v-loading="loading" :data="baseDietList"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="${comment}" align="center" prop="id" /> -->
<el-table-column label="饮食建议名称" align="center" prop="dietName" />
<el-table-column label="饮食原则" align="center" prop="dietPrinciple" :show-overflow-tooltip="true" />
<el-table-column label="主食推荐" align="center" prop="mainFood" :show-overflow-tooltip="true" />
<el-table-column label="蔬菜推荐" align="center" prop="vegetable" :show-overflow-tooltip="true" />
<el-table-column label="水果推荐" align="center" prop="fruit" :show-overflow-tooltip="true" />
<el-table-column label="肉类推荐" align="center" prop="meat" :show-overflow-tooltip="true" />
<el-table-column label="饮食说明" align="center" prop="dietRemark" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['system:baseDiet:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:baseDiet:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
<!-- 添加或修改饮食知识库对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="110px" :inline="true">
<el-form-item label="饮食建议名称" prop="dietName">
<el-input v-model="form.dietName" placeholder="请输入饮食建议名称" maxlength="100" style="width: 205px" />
</el-form-item>
<el-form-item label="饮食原则" prop="dietPrinciple">
<el-input v-model="form.dietPrinciple" placeholder="请输入饮食原则" type="textarea" style="width: 500px"
maxlength="300" />
</el-form-item>
<el-form-item label="主食推荐" prop="mainFood">
<el-input type="textarea" v-model="form.mainFood" placeholder="请输入主食推荐" maxlength="300"
style="width: 500px" />
</el-form-item>
<el-form-item label="蔬菜推荐" prop="vegetable">
<el-input v-model="form.vegetable" type="textarea" style="width: 500px" placeholder="请输入蔬菜推荐"
maxlength="300" />
</el-form-item>
<el-form-item label="水果推荐" prop="fruit">
<el-input v-model="form.fruit" type="textarea" style="width: 500px" placeholder="请输入水果推荐" maxlength="300" />
</el-form-item>
<el-form-item label="肉类推荐" prop="meat">
<el-input type="textarea" style="width: 500px" v-model="form.meat" placeholder="请输入肉类推荐" maxlength="300" />
</el-form-item>
<el-form-item label="饮食说明" prop="dietRemark">
<el-input type="textarea" style="width: 500px" v-model="form.dietRemark" placeholder="请输入饮食说明"
maxlength="300" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listBaseDiet,
getBaseDiet,
delBaseDiet,
addBaseDiet,
updateBaseDiet,
} from "@/api/system/baseDiet";
export default {
name: "BaseDiet",
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 饮食知识库表格数据
baseDietList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
dietName: null,
dietPrinciple: null,
mainFood: null,
vegetable: null,
fruit: null,
meat: null,
dietRemark: null,
},
maxTableHeight: undefined,
// 表单参数
form: {},
// 表单校验
rules: {
dietName: [
{ required: true, message: "饮食建议名称不能为空", trigger: "blur" },
],
},
};
},
created() {
this.getList();
},
mounted() {
this.getMaxTableHeight()
this.screenChange()
},
methods: {
/** 查询饮食知识库列表 */
getList() {
this.loading = true;
listBaseDiet(this.queryParams).then((response) => {
this.baseDietList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
dietName: null,
dietPrinciple: null,
mainFood: null,
vegetable: null,
fruit: null,
meat: null,
dietRemark: null,
createTime: null,
createBy: null,
updateBy: null,
updateTime: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加饮食知识库";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getBaseDiet(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改饮食知识库";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateBaseDiet(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addBaseDiet(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal
.confirm('是否确认删除饮食知识库编号为"' + ids + '"的数据项?')
.then(function () {
return delBaseDiet(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => { });
},
/** 导出按钮操作 */
handleExport() {
this.download(
"system/baseDiet/export",
{
...this.queryParams,
},
`baseDiet_${new Date().getTime()}.xlsx`
);
},
// 获取表格最高高度
getMaxTableHeight() {
const windowInnerHeight = window.innerHeight // 屏幕可视高度
const layoutDiv = this.$refs.layout
const formDiv = this.$refs.form
const mb8Div = this.$refs.mb8
this.maxTableHeight =
windowInnerHeight - 134 -
this.getBoxPadding(layoutDiv) -
this.getBoxHeight(mb8Div) -
this.getBoxHeight(formDiv)
},
// 屏幕resize监听
screenChange() {
// 屏幕resize监听事件一旦屏幕宽高发生变化就会执行resize
window.addEventListener('resize', this.getMaxTableHeight, true)
// 将屏幕监听事件移除
// 这步是必须的。离开页面时不移除,再返回,或者进入到别的有相同元素的页面会报错
// 或者将这里的方法直接写在beforeDestroy函数中也可以
this.$once('hook:beforeDestroy', () => {
window.removeEventListener('resize', this.getMaxTableHeight, true)
})
},
},
};
</script>