This commit is contained in:
gaofy 2023-12-20 17:00:47 +08:00
parent 6679c19a0b
commit 4b40bec196
5 changed files with 135 additions and 70 deletions

View File

@ -215,6 +215,11 @@ body {
background: rgba($main-color, .05); background: rgba($main-color, .05);
} }
} }
.el-button.is-round {
height: 28px;
padding: 5px 10px;
font-size: 15px;
}
} }
} }
.pagination-part { .pagination-part {

View File

@ -1,48 +1,88 @@
<template> <template>
<el-form ref="formRef" :model="formData" :rules="rules" label-width="80"> <el-form ref="formRef" :model="formData" :rules="rules" label-width="60" :disabled="type === 'edit'">
<el-row> <el-row :gutter="gutter">
<el-col :span="12">
<el-form-item label="用户名" prop="userName">
<el-input v-model="formData.userName" placeholder="请输入用户名" :disabled="type === 'edit'"></el-input>
</el-form-item>
</el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="姓名" prop="name"> <el-form-item label="姓名" prop="name">
<el-input v-model="formData.name" placeholder="请输入姓名"></el-input> <el-input v-model="formData.name" placeholder="请输入姓名"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="角色" prop="role"> <el-form-item label="住院号" prop="code" :label-width="rightWidth">
<el-select v-model="formData.role" placeholder="请选择角色"> <el-input v-model="formData.code" placeholder="请输入住院号"></el-input>
<el-option v-for="item in roleOption" :key="item.value" :label="item.label" :value="item.value" /> </el-form-item>
</el-col>
</el-row>
<el-row :gutter="gutter">
<el-col :span="12">
<el-form-item label="性别" prop="sex">
<el-radio-group v-model="formData.sex">
<el-radio label="男"></el-radio>
<el-radio label="女"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="科室" prop="dept" :label-width="rightWidth">
<el-select v-model="formData.dept" placeholder="请选择科室">
<el-option v-for="item in getDeptData()" :key="item.value" :label="item.label"
:value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row :gutter="gutter">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="邮箱" prop="mailbox"> <el-form-item label="身高" prop="bodyHeight">
<el-input v-model="formData.mailbox" placeholder="请输入邮箱"></el-input> <el-input v-model="formData.bodyHeight" placeholder="请输入电话"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="有无病史" prop="isMedicalHistory" :label-width="rightWidth">
<el-radio-group v-model="formData.isMedicalHistory">
<el-radio label="无"></el-radio>
<el-radio label="有"></el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row :gutter="gutter">
<el-col :span="12">
<el-form-item label="体重" prop="bodyWeight">
<el-input v-model="formData.bodyWeight" placeholder="请输入体重"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="病史名称" prop="medicalHistoryName" :label-width="rightWidth">
<el-input v-model="formData.medicalHistoryName" placeholder="请输入病史"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="gutter">
<el-col :span="12">
<el-form-item label="年龄" prop="age">
<el-input v-model="formData.age" placeholder="请输入年龄"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="过敏史名称" prop="allergyHistoryName" :label-width="rightWidth">
<el-input v-model="formData.medicalHistoryName" placeholder="请输入过敏史"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="gutter">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="电话" prop="phone"> <el-form-item label="电话" prop="phone">
<el-input v-model="formData.phone" placeholder="请输入电话"></el-input> <el-input v-model="formData.phone" placeholder="请输入电话"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="启用" prop="time"> <el-form-item label="住院时间" prop="hospitalTime" :label-width="rightWidth">
<el-radio-group v-model="formData.enable"> <el-date-picker v-model="formData.hospitalTime" type="date" placeholder="请输入住院时间" />
<el-radio :label="true" border>有效</el-radio>
<el-radio :label="false" border>禁用</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<div style="text-align: right;padding-top: 80px;"> <div v-if="type !== 'edit'" style="text-align: right;">
<el-button class="f18" @click="close">取消</el-button> <el-button class="f18" @click="close">取消</el-button>
<el-button class="f18" type="primary" @click="saveData">确认</el-button> <el-button class="f18" type="primary" @click="saveData">确认</el-button>
</div> </div>
@ -52,6 +92,7 @@
<script lang='ts' setup> <script lang='ts' setup>
import { onMounted, reactive, ref, toRefs, watch } from 'vue' import { onMounted, reactive, ref, toRefs, watch } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { getDeptData } from '@/static-data/core'
const emit = defineEmits(['close']) const emit = defineEmits(['close'])
@ -59,23 +100,20 @@ const props = defineProps({
type: String type: String
}) })
const roleOption = [ const gutter = 20
{ label: '普通用户', value: '普通用户' }, const rightWidth = 100
{ label: '中级管理员', value: '中级管理员' },
{ label: '高级管理员', value: '高级管理员' },
]
const rules = reactive({ const rules = reactive({
userName: [
{ required: true, message: '请输入用户名', trigger: ['blur', 'change'] },
],
name: [ name: [
{ required: true, message: '请输入姓名', trigger: ['blur', 'change'] }, { required: true, message: '请输入姓名', trigger: ['blur', 'change'] },
], ],
role: [ code: [
{ required: true, message: '请选择角色', trigger: ['blur', 'change'] }, { required: true, message: '请输入住院号', trigger: ['blur', 'change'] },
], ],
phone: [ dept: [
{ required: true, message: '请输入电话', trigger: ['blur', 'change'] }, { required: true, message: '请选择科室', trigger: ['blur', 'change'] },
],
hospitalTime: [
{ required: true, message: '请输入住院时间', trigger: ['blur', 'change'] },
], ],
}) })
@ -131,7 +169,8 @@ const saveData = async () => {
display: block; display: block;
text-align: justify; text-align: justify;
text-align-last: justify; text-align-last: justify;
padding: 0 10px 0 20px; // padding: 0 10px 0 20px;
&:before { &:before {
display: none; display: none;
} }

View File

@ -28,23 +28,19 @@
@row-click="tableRowClick"> @row-click="tableRowClick">
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column type="index" label="#" width="55" align="center" /> <el-table-column type="index" label="#" width="55" align="center" />
<el-table-column property="code" label="住院号" width="120" align="center" />
<el-table-column property="name" label="姓名" width="120" align="center" /> <el-table-column property="name" label="姓名" width="120" align="center" />
<el-table-column label="手机号" width="220" align="center"> <el-table-column label="手机号" width="220" align="center">
<template #default="scope">{{ scope.row.phone.slice(0, 3) + '****' + scope.row.phone.slice(7) <template #default="scope">{{ scope.row.phone.slice(0, 3) + '****' + scope.row.phone.slice(7)
}}</template> }}</template>
</el-table-column> </el-table-column>
<el-table-column property="role" label="角色" width="220" align="center" /> <el-table-column property="dept" label="科室" width="160" align="center" />
<el-table-column label="启用" width="120" align="center"> <el-table-column property="doctor" label="主诊医生" width="160" align="center" />
<el-table-column label="手术数据" header-align="center">
<template #default="scope"> <template #default="scope">
<span @click.stop><el-switch v-model="scope.row.enable" @change="enableChange(scope.row)" /></span> <span @click.stop style="padding: 0 50px;">
</template> <el-button v-if="scope.row.userInfo" type="primary" round @click="viewUserInfo(scope.row)">个人信息</el-button>
</el-table-column> <el-button v-if="scope.row.surgeryInfo" type="primary" round @click="viewSurgeryInfo(scope.row)">手术信息</el-button>
<el-table-column label="操作" align="center">
<template #default="scope">
<span @click.stop>
<el-button link icon="RefreshLeft" @click="resetPassword(scope.row)">密码</el-button>
<el-button link icon="EditPen" @click="editData(scope.row)">修改</el-button>
<el-button link icon="Delete" @click="removeData(scope.row)">删除</el-button>
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
@ -54,8 +50,8 @@
<CommonPagination :total="100" @paginationChange="paginationChange" /> <CommonPagination :total="100" @paginationChange="paginationChange" />
</div> </div>
</div> </div>
<el-dialog v-model="isFormDialog" :title="formDialogTitle" width="40%"><PatientsForm ref="patientsFormRef" :type="formDialogTitle === '添加' ? 'add' : 'edit'" @close="isFormDialog = false" /></el-dialog> <el-dialog v-model="isFormDialog" :title="formDialogTitle" width="40%"><PatientsForm ref="patientsFormRef" :type="formDialogTitle === '增加患者' ? 'add' : 'edit'" @close="isFormDialog = false" /></el-dialog>
<ImportDialog ref="importDialogRef" title="用户导入" templateUrl="#" importUrl="#" /> <ImportDialog ref="importDialogRef" title="患者导入" templateUrl="#" importUrl="#" />
</template> </template>
<script lang='ts' setup> <script lang='ts' setup>
@ -73,29 +69,32 @@ const importDialogRef = ref()
const isFormDialog = ref(false) const isFormDialog = ref(false)
const formDialogTitle = ref('') const formDialogTitle = ref('')
const queryParams = ref({ const queryParams = ref({
userName: '' name: '',
dept: ''
} as any) } as any)
const tableData = ref([] as any) const tableData = ref([] as any)
queryData({user: '测试', dept: getDeptData()[0].label}) queryData({name: '测试', dept: getDeptData()[0].label})
function queryData (e: any) { function queryData (e: any) {
tableData.value = [] tableData.value = []
while (tableData.value.length < 10) { while (tableData.value.length < 10) {
tableData.value.push({ tableData.value.push({
userName: 'cscs', code: '123456', //
// hospital name: e.name,
name: e.userName,
phone: '12312345678', phone: '12312345678',
role: '高级管理员', dept: e.dept,
enable: true, doctor: '张医生',
userInfo: Boolean(tableData.value.length < 2),
surgeryInfo: Boolean(tableData.value.length < 1)
}) })
} }
} }
const addData = () => { const addData = () => {
isFormDialog.value = true isFormDialog.value = true
formDialogTitle.value = '添加' formDialogTitle.value = '增加患者'
setTimeout(() => { setTimeout(() => {
patientsFormRef.value.resetData() patientsFormRef.value.resetData()
}, 0) }, 0)
@ -113,21 +112,16 @@ const removeData = (e?: any) => {
} }
}) })
} }
const enableChange = (e: any) => { const viewUserInfo = (e: any) => {
}
const resetPassword = (e: any) => {
ElMessageBox.confirm('是否确定要重置密码?', '系统提醒', { type: 'warning' }).then(() => {
ElMessage.success('重置成功!')
}).catch(() => { })
}
const editData = (e: any) => {
isFormDialog.value = true isFormDialog.value = true
formDialogTitle.value = '修改' formDialogTitle.value = '个人信息'
setTimeout(() => { setTimeout(() => {
patientsFormRef.value.resetData() patientsFormRef.value.resetData()
patientsFormRef.value.formData = e patientsFormRef.value.formData = e
}, 0) }, 0)
}
const viewSurgeryInfo = (e: any) => {
} }
const tableRowClick = (row: any) => { const tableRowClick = (row: any) => {
tableRef.value.toggleRowSelection(row) tableRef.value.toggleRowSelection(row)

View File

@ -1,14 +1,40 @@
<template> <template>
<div> <div class="surgery-info-page">
<div class="header-box">
<h3 class="f18">电子病史</h3>
<div class="btn-box">
<el-button></el-button>
</div>
</div>
</div> </div>
</template> </template>
<script lang='ts' setup> <script lang='ts' setup>
import { onMounted, reactive, ref, toRefs, watch } from 'vue' import { onMounted, reactive, ref, toRefs, watch } from 'vue'
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
const route = useRoute()
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>
.surgery-info-page {
width: 100%;
height: 100%;
.header-box {
width: 100%;
height: 50px;
border-bottom: 1px solid $border-color;
padding-bottom: 20px;
display: flex;
justify-content: space-between;
align-items: center;
h3 {
color: $main-color;
}
.btn-box {
}
}
}
</style> </style>

View File

@ -100,12 +100,13 @@ const breakRemote = (e: RemoteItem) => {
.header-box { .header-box {
width: 100%; width: 100%;
height: 220px; height: 190px;
background: white; background: white;
padding: 20px 50px; padding: 10px 50px;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
align-items: center;
.task-btn-item { .task-btn-item {
cursor: pointer; cursor: pointer;
@ -146,7 +147,7 @@ const breakRemote = (e: RemoteItem) => {
.content-box { .content-box {
width: 100%; width: 100%;
height: calc(100% - 235px); height: calc(100% - 205px);
margin-top: 15px; margin-top: 15px;
background: white; background: white;
padding: 20px 50px; padding: 20px 50px;