Files
intc-vue3/src/views/health/heightWeightRecord/index.vue
2025-01-09 17:26:55 +08:00

307 lines
9.7 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">
<div class="search-con">
<div class="title">查询条件</div>
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="人员姓名" prop="personId">
<el-select v-model="queryParams.personId" placeholder="请选择人员姓名" clearable>
<el-option v-for="person in personList" :key="person.id" :label="person.name" :value="person.id" />
</el-select>
</el-form-item>
<el-form-item label="测量时间" prop="time">
<el-date-picker v-model="queryParams.time" type="daterange" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" />
</el-form-item>
</el-form>
<div class="search-btn-con">
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button type="info" icon="Refresh" @click="resetQuery">重置</el-button>
</div>
</div>
<div class="main-con">
<div class="title-con">
<div class="title">基本信息</div>
<div class="operate-btn-con">
<el-button @click="handleAdd" icon="Plus" v-hasPermi="['health:heightWeightRecord:add']">新增</el-button>
<el-button :disabled="multiple" icon="Delete" @click="handleDelete" v-hasPermi="['health:heightWeightRecord:remove']">删除</el-button>
<!-- <el-button @click="handleExport" icon="Download" v-hasPermi="['health:heightWeightRecord:export']">导出</el-button> -->
</div>
</div>
<div class="content-con" v-loading="loading" height="calc(100% - 0.65rem)">
<el-table v-loading="loading" :data="heightWeightRecordList" @selection-change="handleSelectionChange" height="calc(100% - 0.65rem)">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="人员姓名" align="center" prop="personName" />
<el-table-column label="测量时间" align="center" prop="measureTime" width="180"> </el-table-column>
<el-table-column label="身高CM" align="center" prop="height" />
<el-table-column label="体重(KG)" align="center" prop="weight" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot="scope">
<div class="ctrl-btn d-flex">
<el-tooltip v-for="item in operateList" :key="item.id" class="item" effect="dark" :content="item.title" placement="top">
<el-button :icon="item.icon" v-hasPermi="item.hasPermi" circle @click="handleOperate(item.id, scope.row)"></el-button>
</el-tooltip>
</div>
</template>
</el-table-column>
</el-table>
<el-pagination small background layout="total, prev, pager, next" :total="total" @current-change="handleCurrentChange" />
</div>
</div>
<!-- 添加或修改身高体重记录对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="heightWeightRecordRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="人员姓名" prop="personId">
<el-select v-model="form.personId" placeholder="请选择人员姓名" @change="handlePersonChange" clearable>
<el-option v-for="person in personList" :key="person.id" :label="person.name" :value="person.id" />
</el-select>
</el-form-item>
<el-form-item label="测量时间" prop="measureTime">
<el-date-picker clearable v-model="form.measureTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择测量时间">
</el-date-picker>
</el-form-item>
<el-form-item label="身高" prop="height">
<el-input v-model="form.height" type="number" placeholder="请输入身高">
<template #suffix>CM</template>
</el-input>
</el-form-item>
<el-form-item label="体重" prop="weight">
<el-input v-model="form.weight" type="number" placeholder="请输入体重">
<template #suffix>KG</template>
</el-input>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
<template v-if="title !== '查看身高体重记录'" #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="HeightWeightRecord">
import {
listHeightWeightRecord,
getHeightWeightRecord,
delHeightWeightRecord,
addHeightWeightRecord,
updateHeightWeightRecord
} from '@/api/health/heightWeightRecord'
// eslint-disable-next-line no-unused-vars
import { listPerson, getPerson } from '@/api/health/person'
import dayjs from 'dayjs'
import { require } from '@/utils/require'
const { proxy } = getCurrentInstance()
const heightWeightRecordList = ref([])
const open = ref(false)
const loading = ref(true)
const showSearch = ref(true)
const ids = ref([])
const single = ref(true)
const multiple = ref(true)
const total = ref(0)
const title = ref('')
const personList = ref([])
const operateList = ref([
{ id: 'view', icon: 'View', title: '查看', hasPermi: ['health:heightWeightRecord:query'] },
{ id: 'edit', icon: 'Edit', title: '修改', hasPermi: ['health:heightWeightRecord:edit'] },
{ id: 'delete', icon: 'Delete', title: '删除', hasPermi: ['health:heightWeightRecord:remove'] }
])
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
measureTime: null,
weight: null,
personId: null,
height: null
},
queryPersonParams: {
pageNum: 1,
pageSize: 1000
},
rules: {
personId: [{ required: true, message: '人员姓名不能为空', trigger: 'blur' }],
measureTime: [{ required: true, message: '测量时间不能为空', trigger: 'blur' }]
}
})
const handleOperate = (operate, row) => {
switch (operate) {
case 'view':
handleView(row)
break
case 'edit':
handleUpdate(row)
break
case 'delete':
handleDelete(row)
break
default:
break
}
}
const { queryParams, form, rules, queryPersonParams } = toRefs(data)
/** 查询成员管理列表 */
function getPersonList() {
listPerson(queryPersonParams.value).then((response) => {
personList.value = response.rows
})
}
/** 查询身高体重记录列表 */
function getList() {
loading.value = true
const timeRange = queryParams.value.time
let st = ''
let et = ''
if (timeRange && timeRange.length === 2) {
st = dayjs(timeRange[0]).format('YYYY-MM-DD')
et = dayjs(timeRange[1]).format('YYYY-MM-DD')
}
queryParams.value.startTime = st
queryParams.value.endTime = et
listHeightWeightRecord(queryParams.value).then((response) => {
heightWeightRecordList.value = response.rows
total.value = response.total
loading.value = false
})
}
// 取消按钮
function cancel() {
open.value = false
reset()
}
// 表单重置
function reset() {
form.value = {
id: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
delFlag: null,
remark: null,
measureTime: null,
weight: null,
personId: null,
height: null
}
proxy.resetForm('heightWeightRecordRef')
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1
getList()
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm('queryRef')
handleQuery()
}
// 分页
const handleCurrentChange = (val) => {
queryParams.value.pageNum = val
getList()
}
// 多选框选中数据
function handleSelectionChange(selection) {
ids.value = selection.map((item) => item.id)
single.value = selection.length !== 1
multiple.value = !selection.length
}
// 查看
const handleView = (row) => {
title.value = '查看身高体重记录'
form.value = row
open.value = true
}
/** 新增按钮操作 */
function handleAdd() {
reset()
open.value = true
title.value = '添加身高体重记录'
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset()
const _id = row.id || ids.value
getHeightWeightRecord(_id).then((response) => {
form.value = response.data
open.value = true
title.value = '修改身高体重记录'
})
}
/** 提交按钮 */
function submitForm() {
proxy.$refs.heightWeightRecordRef.validate((valid) => {
if (valid) {
if (form.value.weight == null && form.value.height == null) {
proxy.$modal.msgError('身高体重不能同时为空')
return
}
if (form.value.id != null) {
updateHeightWeightRecord(form.value).then((response) => {
proxy.$modal.msgSuccess('修改成功')
open.value = false
getList()
})
} else {
addHeightWeightRecord(form.value).then((response) => {
proxy.$modal.msgSuccess('新增成功')
open.value = false
getList()
})
}
}
})
}
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value
proxy.$modal
.confirm('是否确认删除选中的数据项?')
.then(function () {
return delHeightWeightRecord(_ids)
})
.then(() => {
getList()
proxy.$modal.msgSuccess('删除成功')
})
.catch(() => {})
}
/** 导出按钮操作 */
function handleExport() {
proxy.download(
'health/heightWeightRecord/export',
{
...queryParams.value
},
`heightWeightRecord_${new Date().getTime()}.xlsx`
)
}
getList()
getPersonList()
</script>