Commit e8b011a4 authored by 王飞龙's avatar 王飞龙

Merge remote-tracking branch 'origin/master'

parents be54ef70 9fc28028
......@@ -119,7 +119,8 @@ export default {
rules: {
// 文章标题判空校验
articleTitle: [
{ required: true, message: '请输入文章标题', trigger: 'change' }
{ required: true, message: '请输入文章标题', trigger: 'change' },
{ min: 2, message: '仅支持2~60位字符', trigger: 'blur' }
],
// 文章权重判空校验
articleWeight: [
......
......@@ -129,7 +129,8 @@ export default {
rules: {
// 文章标题判空校验
articleTitle: [
{ required: true, message: '请输入文章标题', trigger: 'change' }
{ required: true, message: '请输入文章标题', trigger: 'change' },
{ min: 2, message: '仅支持2~60位字符', trigger: 'blur' }
],
// 文章权重判空校验
articleWeight: [
......
......@@ -77,16 +77,16 @@
>反向选择
</el-button>
<!--批量导入-->
<!-- <el-button-->
<!-- v-hasPermi="['system:pets:export']"-->
<!-- class="fourWordsBtn"-->
<!-- size="mini"-->
<!-- @click="handleExport"-->
<!-- >-->
<!-- &lt;!&ndash; 导入svg文件&ndash;&gt;-->
<!-- <svg-icon icon-class="shaixuan_icon_daoru" />-->
<!-- 批量导入-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- v-hasPermi="['system:pets:export']"-->
<!-- class="fourWordsBtn"-->
<!-- size="mini"-->
<!-- @click="handleExport"-->
<!-- >-->
<!-- &lt;!&ndash; 导入svg文件&ndash;&gt;-->
<!-- <svg-icon icon-class="shaixuan_icon_daoru" />-->
<!-- 批量导入-->
<!-- </el-button>-->
<!--批量导出-->
<el-button
v-hasPermi="['system:pets:export']"
......
......@@ -9,7 +9,7 @@
</div>
<el-row :gutter="14">
<el-col :span="6">
<div class="hospital_info_statistics hospital_info_statistics_ruzhu">
<div class="hospital_info_statistics hospital_info_statistics_ruzhu" style="">
<div style="display: flex;">
<div class="numberColor">{{ formatNum(hospitalInfoStatistics.enteredHospitalCount || 0) }}</div>
<div class="fontColor"></div>
......
......@@ -114,13 +114,13 @@
@click="handleExport"
>批量导出
</el-button>
<!-- <el-button-->
<!-- v-if="userType==='00'"-->
<!-- class="fourWordsBtn"-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handlecheck"-->
<!-- >检查项目</el-button>-->
<!-- <el-button-->
<!-- v-if="userType==='00'"-->
<!-- class="fourWordsBtn"-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handlecheck"-->
<!-- >检查项目</el-button>-->
</el-col>
<el-col :span="12" style="padding-bottom: 20px;text-align: end;">
<el-button class="queryBtn" icon="el-icon-search" @click="handleQuery">查询</el-button>
......
......@@ -718,7 +718,7 @@ color: #333333;"
</el-table-column>
<el-table-column align="center" label="检查报告" prop="shadowReport" show-overflow-tooltip>
<template slot-scope="scope">
<span v-if="scope.row.inputShow">-</span>
<span v-if="scope.row.inputShow || !scope.row.shadowReport">-</span>
<span v-else>
<el-link type="primary" @click="showShadowReport(scope.row.shadowReport)">{{ scope.row.shadowReport ? scope.row.shadowReport.split('/')[scope.row.shadowReport.split('/').length - 1] : '-' }}</el-link>
</span>
......@@ -860,7 +860,7 @@ color: #333333;"
<template slot-scope="scope">
<span v-if="scope.row.inputShow">-</span>
<span v-else>
{{ scope.row.treatStatus ? (scope.row.treatStatus === 3 ? '已检查' : '待检查') : '-' }}
{{ scope.row.treatStatus ? (scope.row.treatStatus === 3 ? '已治疗' : '待治疗') : '-' }}
</span>
</template>
</el-table-column>
......@@ -1482,8 +1482,10 @@ export default {
*/
showShadowReport(url) {
console.log(url)
this.isShowCheckReport = true
this.checkReportUrl = process.env.VUE_APP_TEST_API + url
if (url) {
this.isShowCheckReport = true
this.checkReportUrl = process.env.VUE_APP_TEST_API + url
}
},
/**
* @Description: 查看详情
......@@ -1633,21 +1635,24 @@ export default {
},
/** 根据检查类型获取检查项目列表*/
getCheckItemOptions(checkType, row) {
console.log('getCheckItemOptions', checkType, row)
listByType({ itemType: checkType }).then(res => {
this.checkItemOptions = res.rows.map(item => {
return {
label: item.name,
value: item.id,
payAmount: item.price
}
return new Promise(resolve => {
console.log('getCheckItemOptions', checkType, row)
listByType({ itemType: checkType }).then(res => {
this.checkItemOptions = res.rows.map(item => {
return {
label: item.name,
value: item.id.toString(),
payAmount: item.price
}
})
console.log('checkItemOptions!!!!!!!!!!!!!', this.checkItemOptions)
resolve()
})
console.log('checkItemOptions!!!!!!!!!!!!!', this.checkItemOptions)
if (row) {
row.checkItemsId = ''
row.checkItemsName = ''
}
})
if (row) {
row.checkItemsId = ''
row.checkItemsName = ''
}
},
/** 获取治疗项目列表*/
getTreatItemOptions(checkType) {
......@@ -1681,6 +1686,7 @@ export default {
console.log('这是我要传的checkSchedule的值:值 挂号时间 录入时间 病历时间 开具处方时间', response.data.registrationTime, response.data.diagnosisTime, response.data.reportTime, response.data.recipelTime)
// 修改时间格式
response.data.checkManageBos.forEach(item => {
item['checkItemsId'] = item.checkItemsId.toString()
item['inputShow'] = false
item['isAdd'] = false
})
......@@ -1713,12 +1719,16 @@ export default {
handleUpdate(index, tableData) {
// 每个表格只有一行可编辑
if (this.editCunt[tableData] === 0) {
this[tableData][index]['inputShow'] = true
console.log('UUUUUUUUUUUUUU', tableData, index, this[tableData][index])
this.editCunt[tableData] += 1
// 如果是检查表格需要根据检查类型查询检查项目
if (tableData === 'checkManageBos') {
this.getCheckItemOptions(this.checkManageBos[index].checkType)
this.getCheckItemOptions(this.checkManageBos[index].checkType).then(() => {
console.log('KKKKKKKKKKKKKKKKKKKKKKKK')
this[tableData][index]['inputShow'] = true
})
} else {
this[tableData][index]['inputShow'] = true
}
} else {
this.$message({
......
......@@ -11,7 +11,7 @@
label-width="68px"
size="small"
>
<el-form-item class="nick-style" style="padding-right: 15px;" prop="petNickname">
<el-form-item class="med-petNickname" prop="petNickname">
<el-input
v-model.trim="queryParams.medicalRecordNo"
clearable
......@@ -20,8 +20,8 @@
/>
</el-form-item>
<el-form-item v-if="!checkRole(['pt-admin'])" style=" margin-left: 3.25rem !important;" prop="hospitalName">
<el-select v-model="queryParams.hospitalName" clearable placeholder="所属医院">
<el-form-item v-if="!checkRole(['pt-admin'])" prop="hospitalName">
<el-select v-model="queryParams.hospitalName" :disabled="deptLevel === '2'" clearable placeholder="所属医院">
<el-option
v-for="item in HospitalList"
:key="item.hospitalId"
......@@ -30,10 +30,10 @@
/>
</el-select>
</el-form-item>
<el-form-item prop="doctorName">
<el-form-item prop="doctorIdList">
<el-select
v-if="!checkRole(['pt-admin'])"
v-model="queryParams.doctorIdList"
v-model="doctorIdList"
collapse-tags
multiple
clearable
......@@ -234,13 +234,19 @@
import { listRecord } from '@/api/business/record'
import { getDepartment, getDoctorment, getHospital } from '@/api/business/register'
import { checkRole } from '@/utils/permission'
import { mapGetters } from 'vuex'
export default {
name: 'MedicalRecordManagement',
// 数据字典
dicts: ['pet_insure'],
computed: {
...mapGetters(['deptLevel', 'deptId'])
},
data() {
return {
showHospitalName: '',
doctorIdList: [],
// 所属科室下拉框字典写死
departmentList: [],
// 所属科室下拉框字典写死
......@@ -287,7 +293,6 @@ export default {
nickname: null,
petOwnerNumber: null,
doctorIdList: [],
deptId: null,
departmentId: null,
diagnosticResults: null,
visitNumber: null,
......@@ -332,7 +337,6 @@ export default {
// 设置查询查询参数
// this.queryParams.createBy = user.userName
// 这三个一块走
this.getList()
this.getDoctorList()
this.getDeptList()
this.getHospitalList()
......@@ -365,9 +369,21 @@ export default {
/** 查询医生名字下拉*/
getHospitalList() {
getHospital().then(({ data }) => {
data = data.filter(({ deptId: hospitalDept }) => hospitalDept === this.user.deptId)
data = data.filter(({ deptId: hospitalDept, hospitalName: hosName }) => {
if (this.deptLevel === '2') {
if (hospitalDept === this.deptId) {
this.showHospitalName = hosName
return hospitalDept === this.deptId
} else {
return false
}
} else {
return true
}
})
this.HospitalList = data
console.log('这是我要的医院下拉框:', this.HospitalList)
this.getList()
})
},
......@@ -487,6 +503,10 @@ export default {
/** 查询病例管理列表 */
getList() {
this.loading = true
this.queryParams.doctorIdList = this.doctorIdList.join(',')
if (this.deptLevel === '2') {
this.queryParams.hospitalName = this.showHospitalName
}
listRecord(this.queryParams).then(response => {
console.log('这是我传的查询数据:', this.queryParams)
console.log('病历列表的数据:', response)
......@@ -556,7 +576,37 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.queryParams = {
orderByColumn: null,
isAsc: null,
// 排序方式声明
params: {
sort: null
},
pageNum: 1,
pageSize: 20,
petNickname: null,
nickname: null,
petOwnerNumber: null,
doctorIdList: [],
deptId: null,
departmentId: null,
diagnosticResults: null,
visitNumber: null,
visitTime: null,
visitOffice: null,
visitInformation: null,
orders: null,
medicationInformation: null,
petId: null,
petOwnerId: null,
doctorId: null,
petJson: null,
doctorJson: null,
ownerJson: null,
createBy: ''
}
this.doctorIdList = []
this.queryParams.isAsc = null
this.queryParams.isAsc = 'desc'
this.handleQuery()
......@@ -589,13 +639,12 @@ export default {
.form-style {
margin-bottom: 20px;
}
//搜索框病历框/昵称..宽度
.nick-style{
::v-deep .el-form-item nick-style el-form-item--small{
width: 18.625rem;
}
::v-deep .el-input__inner{
width: 18.625rem;
</style>
<style lang="scss">
.med-petNickname{
width: 270px;
.el-form-item__content, .el-input--small{
width: 100% !important;
}
}
</style>
......@@ -201,7 +201,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="手机号">
<el-input v-model="detailInfo.phoneNumber" placeholder="-" disabled />
<el-input v-model="detailInfo.doctorPhone" placeholder="-" disabled />
</el-form-item>
</el-col>
</el-row>
......@@ -346,7 +346,7 @@
</el-table-column>
<el-table-column label="天数" align="center" prop="actualDays">
<template slot-scope="scope">
<span>{{scope.row.actualDays + '天' || '-' }}</span>
<span>{{ scope.row.actualDays + '天' || '-' }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
......@@ -391,23 +391,23 @@
</el-table-column>
<el-table-column label="当前余额" align="center" prop="moneyFormat">
<template slot-scope="scope">
<span>{{ moneyFormat(scope.row.amountAfterTrade)+'元' || '-'}}</span>
<span>{{ moneyFormat(scope.row.amountAfterTrade)+'元' || '-' }}</span>
</template>
</el-table-column>
</el-table>
</div>
<div v-if="detailInfo.status<4" style="padding: 20px;">
<el-button v-hasPermi="['business:hospital:edit']" v-show="detailInfo.status==='2'||detailInfo.status==='0'" class="fourWordsBtn" icon="el-icon-check" @click="handAdmission">办理入院</el-button>
<el-button v-hasPermi="['business:hospital:edit']" v-show="detailInfo.status==='3'" class="fourWordsBtn" icon="el-icon-check" @click="handDisCharge">办理出院</el-button>
<el-button v-hasPermi="['business:hospital:edit']" v-show="detailInfo.status==='3'" class="fourWordsBtn" icon="el-icon-check" @click="changeWard">变更病房</el-button>
<el-button v-show="detailInfo.status==='2'||detailInfo.status==='0'" v-hasPermi="['business:hospital:edit']" class="fourWordsBtn" icon="el-icon-check" @click="handAdmission">办理入院</el-button>
<el-button v-show="detailInfo.status==='3'" v-hasPermi="['business:hospital:edit']" class="fourWordsBtn" icon="el-icon-check" @click="handDisCharge">办理出院</el-button>
<el-button v-show="detailInfo.status==='3'" v-hasPermi="['business:hospital:edit']" class="fourWordsBtn" icon="el-icon-check" @click="changeWard">变更病房</el-button>
<el-button class="backBth" icon="el-icon-back" @click="goBack"> </el-button>
</div>
<div v-else style="padding: 20px;">
<el-button class="backBthFive" icon="el-icon-document-remove">查看入院单</el-button>
<el-button class="backBthFive" icon="el-icon-document-remove">查看出院单</el-button>
<el-button class="backBth" icon="el-icon-back" @click="goBack"> </el-button>
<el-button class="fourWordswhiteBtn" icon="el-icon-document-remove">查看入院单</el-button>
<el-button class="fourWordswhiteBtn" icon="el-icon-document-remove">查看出院单</el-button>
<el-button class="fourWordswhiteBtn" icon="el-icon-back" @click="goBack"> </el-button>
</div>
</el-form>
</div>
......
......@@ -206,7 +206,7 @@
>详情</el-button>
<el-button
v-hasPermi="['business:hospital:edit']"
v-if="scope.row.status==='2'"
v-if="scope.row.status==='2' || scope.row.status==='0'"
icon="el-icon-paperclip"
plain
size="mini"
......@@ -215,7 +215,7 @@
@click="handleadmission(scope.row)"
>办理入院</el-button>
<el-button
v-else-if="scope.row.status==='1' || scope.row.status==='0'"
v-else-if="scope.row.status==='1'"
icon="el-icon-paperclip"
plain
size="mini"
......@@ -475,7 +475,7 @@ export default {
if (this.ids.length !== 0) {
const exportTable = {}
exportTable.inHospitalIds = this.ids
this.download('business/hospital/export', exportTable, `住院-${this.exportFormatTime(new Date())}.xlsx`).then(res => {
this.download('business/hospital/export', exportTable, `住院管理-${this.exportFormatTime(new Date())}.xlsx`).then(res => {
this.$refs.table.clearSelection()
})
} else {
......
......@@ -186,14 +186,16 @@
<span class="title-text" style="font-size: 16px;font-weight: bold;">检查进度</span>
</div>
<!-- 步骤条 -->
<div>
<el-steps :active="schedule" align-center>
<el-step title="开具处方单" :description="parseTime(checkDetail.createTime, '{y}-{m}-{d} {h}:{i}')" />
<el-step title="缴费开票" :description="parseTime(checkDetail.payTime, '{y}-{m}-{d} {h}:{i}') || '暂未缴费'" />
<el-step title="预约检查" :description="parseTime(checkDetail.checkStartTime, '{y}-{m}-{d} {h}:{i}') || '暂未预约'" />
<el-step title="检查获取报告" :description="parseTime(checkDetail.reportTime, '{y}-{m}-{d} {h}:{i}') || '暂未检查'" />
</el-steps>
</div>
<!-- <div>-->
<!-- <el-steps :active="schedule" align-center>-->
<!-- <el-step title="开具处方单" :description="parseTime(checkDetail.createTime, '{y}-{m}-{d} {h}:{i}')" />-->
<!-- <el-step title="缴费开票" :description="parseTime(checkDetail.payTime, '{y}-{m}-{d} {h}:{i}') || '暂未缴费'" />-->
<!-- <el-step title="预约检查" :description="parseTime(checkDetail.checkStartTime, '{y}-{m}-{d} {h}:{i}') || '暂未预约'" />-->
<!-- <el-step title="检查获取报告" :description="parseTime(checkDetail.reportTime, '{y}-{m}-{d} {h}:{i}') || '暂未检查'" />-->
<!-- </el-steps>-->
<!-- </div>-->
<CheckSchedule :scheduleKey="scheduleKey" />
<!-- 缴费信息 -->
<div class="title-paragraph">
<span class="title-text" style="font-size: 16px;font-weight: bold;">缴费信息</span>
</div>
......@@ -230,8 +232,8 @@
<div style="padding-left: 10px;font-size: 16px;font-weight: bold;">预约信息</div>
<div style="margin-left: auto;padding-right: 50px;">
<el-button
v-hasPermi="['business:check:subscribe']"
v-show="checkDetail.deviceId === null && !isPlatRole"
v-hasPermi="['business:check:subscribe']"
class="fourWordsBtn"
@click="bookNow"
>立即预约</el-button>
......@@ -344,9 +346,16 @@
<el-row>
<el-col :span="8">
<el-form-item label="影像报告" label-width="84px">
<!-- <span>{{ checkDetail.shadowReport || '暂未上传' }}</span>-->
<el-button v-show="checkDetail.shadowReport !== null && checkDetail.shadowReport !== ''" class="fourWordsBtn" @click="viewTheReport">查看报告</el-button>
<span v-show="checkDetail.shadowReport === null || checkDetail.shadowReport === ''">{{ '暂未上传' }}</span>
<!-- <el-button v-show="checkDetail.shadowReport !== null && checkDetail.shadowReport !== ''" class="fourWordsBtn" @click="viewTheReport">查看报告</el-button>-->
<span v-if="checkDetail.shadowReport === null || checkDetail.shadowReport === ''">{{ '暂未上传' }}</span>
<el-link
v-else
:href="`${baseUrl}${checkDetail.shadowReport}`"
:underline="false"
target="_blank"
>
<span class="el-icon-document">{{ getFileName(checkDetail.shadowReport) }}</span>
</el-link>
</el-form-item>
</el-col>
</el-row>
......@@ -383,9 +392,11 @@
import { parseTime } from '@/utils/ruoyi'
import { updateCheck } from '@/api/business/mdeicalRecord'
import { getManage } from '@/api/business/manage'
import CheckSchedule from '@/views/service-management/medical-record-management/check-schedule.vue'
export default {
name: 'CheckDetail',
components: { CheckSchedule },
dicts: ['pet_sex', 'sterilization_status', 'vaccine_situation', 'check_type'],
data() {
return {
......@@ -426,7 +437,15 @@ export default {
value: '3',
label: '已检查'
}
]
],
// 进度条所需
scheduleKey: {
checkSchedule: '', // 查询进度
createTime: '', // 开具处方单
payTime: '', // 缴费开票
checkStartTime: '', // 预约检查
reportTime: '' // 检查报告获取
}
}
},
created() {
......@@ -439,15 +458,21 @@ export default {
methods: {
parseTime,
getCheckDetail() {
// const id = localStorage.getItem('checkId')
const id = this.$route.query.checkId
console.log('xddx', id)
getManage(id).then(response => {
console.log('od', response.data)
this.checkDetail = response.data
this.checkDetail.payAmount = this.keepTwoDecimals(this.checkDetail.payAmount)
this.checkDetail.devicePrice = this.keepTwoDecimals(this.checkDetail.devicePrice)
this.schedule = parseInt(this.checkDetail.checkSchedule) + 1
this.scheduleKey = {
checkSchedule: this.checkDetail.checkSchedule,
createTime: this.checkDetail.createTime,
payTime: this.checkDetail.payTime,
checkStartTime: this.checkDetail.checkStartTime,
reportTime: this.checkDetail.reportTime
}
console.log('scheduleKey', this.scheduleKey)
})
},
// 金额保留两位小数
......@@ -458,6 +483,14 @@ export default {
return price.toFixed(2)
}
},
// 获取文件名称
getFileName(name) {
if (name.lastIndexOf('/') > -1) {
return name.slice(name.lastIndexOf('/') + 1)
} else {
return ''
}
},
// 点击 预约信息-立即预约
bookNow() {
this.$router.push({
......@@ -528,7 +561,7 @@ export default {
border-left: 5px solid #5FB54B;
.title-text {
margin-left: 0px;
margin-left: 10px;
}
}
.dialog-footer{
......@@ -547,4 +580,13 @@ export default {
.input-detail {
width: 392px;
}
.el-icon-document {
border: 1px solid #e4e7ed;
padding: 10px;
background-color: white;
transition: background-color 0.3s ease;
}
.el-icon-document:hover {
background-color: #f6f8fa;
}
</style>
<template>
<!--进度信息模块封装-->
<div class="schedule-info">
<!-- 1--tip样式-->
<!-- <div class="progress-tip">-->
<!-- <div class="tip-green" />-->
<!-- <div-->
<!-- class="tip-content"-->
<!-- >进度信息-->
<!-- </div>-->
<!-- </div>-->
<!-- 2--内容样式-->
<div class="progress-base">
<div class="display-base">
<!-- 1--单个的背景,,后面按状态位切换样式-->
<div :class="[scheduleKey.checkSchedule === '0'? 'bkg-on' : 'bkg-off']">
<!--1.预约/现场挂号-->
<div
class="content-inner"
>
<div
class="avatar"
>
<el-image :src="require('@/assets/register/xinzengguahao_yuyue@2x.png')" />
</div>
<div
class="title"
>1.开具处方单
</div>
<div v-if="scheduleKey.createTime !== null" class="status-on">
{{ parseTime(scheduleKey.createTime, '{y}/{m}/{d} {h}:{i}') }}
</div>
<div v-else class="status-off">暂未开具处方单</div>
</div>
</div>
<!-- 箭头指示-->
<div class="arrow">
<el-image :src="require('@/assets/register/xinzengguahao_jaintou@2x.png')" />
</div>
<!-- 2--单个的背景,,后面按状态位切换样式-->
<div
:class="[scheduleKey.checkSchedule === '1'? 'bkg-on' : 'bkg-off']"
>
<!--2.录入诊断信息-->
<div
class="content-inner"
>
<div
class="avatar"
>
<el-image :src="require('@/assets/register/xinzengguahao_luru@2x.png')" />
</div>
<div
class="title"
>2.缴费开票
</div>
<div v-if="scheduleKey.payTime !== null" class="status-on">
{{ parseTime(scheduleKey.payTime, '{y}/{m}/{d} {h}:{i}') }}
</div>
<div v-else class="status-off">暂未缴费</div>
</div>
</div>
<!-- 箭头指示-->
<div class="arrow">
<el-image :src="require('@/assets/register/xinzengguahao_jaintou@2x.png')" />
</div>
<!-- 3--单个的背景,,后面按状态位切换样式-->
<div
:class="[scheduleKey.checkSchedule === '2'? 'bkg-on' : 'bkg-off']"
>
<!--3.生成病历报告-->
<div
class="content-inner"
>
<div
class="avatar"
>
<el-image :src="require('@/assets/register/xinzengguahao_shengchengbaogao@2x.png')" />
</div>
<div
class="title"
>3.预约检查
</div>
<div v-if="scheduleKey.checkStartTime !== null" class="status-on">
{{ parseTime(scheduleKey.checkStartTime, '{y}/{m}/{d} {h}:{i}') }}
</div>
<div v-else class="status-off">暂未预约</div>
</div>
</div>
<!-- 箭头指示-->
<div class="arrow">
<el-image :src="require('@/assets/register/xinzengguahao_jaintou@2x.png')" />
</div>
<!-- 4--单个的背景,,后面按状态位切换样式-->
<div
:class="[scheduleKey.checkSchedule === '3'? 'bkg-on' : 'bkg-off']"
>
<!--4.开具处方单-->
<div
class="content-inner"
>
<div
class="avatar"
>
<el-image :src="require('@/assets/register/xinzengguahao_kaichuangfdan@2x.png')" />
</div>
<div
class="title"
>4.检查获取报告
</div>
<div v-if="scheduleKey.reportTime !== null" class="status-on">
{{ parseTime(scheduleKey.reportTime, '{y}/{m}/{d} {h}:{i}') }}
</div>
<div v-else class="status-off">暂未检查</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'CheckSchedule',
props: {
scheduleKey: {
type: Object
},
data() {
return {}
}
}
}
</script>
<style lang="scss" scoped>
.schedule-info {
/*模块tip布局*/
.progress-tip {
display: flex;
/*模块tip图形样式--左绿色*/
.tip-green {
width: 3px;
height: 24px;
background: #5FB54B;
border-radius: 10px 10px 10px 10px;
}
/*模块tip内容样式*/
.tip-content {
padding-left: 13px;
font-size: 16px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei, serif;
font-weight: bold;
color: #333333;
}
}
//进度条整体框架边距
.progress-base {
padding-top: 50px;
padding-bottom: 50px;
//进度条排列方向及顺序布局
.display-base {
display: flex;
//当前触发的背景样式
.bkg-on {
width: 260px;
height: 143px;
background: #F1F9EF;
border-radius: 4px 4px 4px 4px;
opacity: 1;
}
//当前未触发的背景样式
.bkg-off {
width: 260px;
height: 143px;
background: #FFFFFF;
border-radius: 4px 4px 4px 4px;
opacity: 1;
border: 1px solid #5FB54B;
}
//箭头样式
.arrow {
height: 13px;
width: 104px;
margin: 65px 22px 65px 22px;
}
//状态触发状态
.status-on {
font-size: 12px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #5FB54B;
}
//状态未触发状态
.status-off {
font-size: 12px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #AFAFAF;
}
//头像
.avatar {
width: 44px;
height: 44px;
margin-bottom: 14px;
}
//标题
.title {
font-size: 14px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
font-weight: bold;
color: #333333;
margin-bottom: 14px;
}
//预约/挂号
.content-inner {
display: flex;
align-items: center;
flex-direction: column;
padding-top: 18px;
}
}
}
}
</style>
......@@ -200,8 +200,8 @@
placeholder="请选择检查日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
@change="changeDate"
:picker-options="pickerOptions"
@change="changeDate"
/>
</el-form-item>
</el-col>
......@@ -273,7 +273,7 @@ export default {
const today = new Date()
const maxDate = new Date()
maxDate.setDate(today.getDate() + 14)
return time.getTime() < (today.getTime() - 1000 * 3600 * 24) || time.getTime() > maxDate.getTime()
return time.getTime() < (today.getTime() - 1000 * 3600 * 24) || time.getTime() > (maxDate.getTime() - 1000 * 3600 * 24)
}
},
checkDetail: {},
......
......@@ -235,8 +235,8 @@
>详情
</el-button>
<el-button
v-hasPermi="['business:check:subscribe']"
v-if="!isPlatRole"
v-hasPermi="['business:check:subscribe']"
style="width: 80px; border-radius: 6px 6px 6px 6px;border: 1px solid rgb(255, 157, 78);color: #FF9D4E;background: rgba(255,157,78,0.08);"
size="mini"
type="success"
......@@ -298,8 +298,8 @@
placeholder="请选择检查日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
@change="changeDate"
:picker-options="pickerOptions"
@change="changeDate"
/>
</el-form-item>
</el-col>
......@@ -380,7 +380,7 @@ export default {
const today = new Date()
const maxDate = new Date()
maxDate.setDate(today.getDate() + 14)
return time.getTime() < (today.getTime() - 1000 * 3600 * 24) || time.getTime() > maxDate.getTime()
return time.getTime() < (today.getTime() - 1000 * 3600 * 24) || time.getTime() > (maxDate.getTime() - 1000 * 3600 * 24)
}
},
isPlatRole: false,
......
......@@ -68,12 +68,12 @@
</el-table-column>
<el-table-column label="会员等级" min-width="80" prop="membershipLevel" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{ scope.row.membershipLevel || '-' }}</span>
<span>{{ membershipLeveMap[scope.row.membershipLevel] || '-' }}</span>
</template>
</el-table-column>
<el-table-column label="会员卡余额" min-width="80" prop="balance" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{ scope.row.balance || '0.00' }}</span>
<span>{{ moneyFormat(scope.row.balance) || '0.00' }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="宠物昵称" min-width="80" prop="petNickname" show-overflow-tooltip>
......@@ -120,7 +120,7 @@
<script>
import { getPetInfo } from '@/api/business/registration'
import { deepClone } from '@/utils'
import { deepClone, moneyFormat } from '@/utils'
export default {
// 数据字典
......@@ -134,6 +134,14 @@ export default {
},
data() {
return {
// 会员等级下拉框
membershipLeveMap: {
'1': '一级会员',
'2': '二级会员',
'3': '三级会员',
'4': '四级会员',
'5': '五级会员'
},
chooseForm: {
petStatus: ''
},
......@@ -185,6 +193,7 @@ export default {
// this.getList()
},
methods: {
moneyFormat,
handleInput(value) {
const newValue = value.replace(/\s/g, '')
this.queryParams.phone = newValue
......
......@@ -44,17 +44,21 @@
</el-col>
<el-col :span="8">
<el-form-item prop="name" label="证书">
<el-image
style="width: 100px; height: 100px"
:src="baseURL+doctorForm.certificateUrl"
/>
<span v-if="doctorForm.certificateUrl===null || doctorForm.certificateUrl===''">-</span>
<div v-else>
<el-image
style="width: 100px; height: 100px"
:src="baseURL+doctorForm.certificateUrl"
/>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="name" label="门诊诊查费">
<div style="display: flex;">
<el-input v-model="doctorForm.examinationFee" :disabled="true" maxlength="20" />
<div style="margin-left: 10px;"></div></div>
<div style="margin-left: 10px;"></div>
</div>
</el-form-item>
</el-col>
</el-row>
......
......@@ -588,7 +588,6 @@ export default {
},
// 选择已有宠物, 表单不可编辑
handleChoose() {
this.reSetPetForm()
this.isEdit = false
this.showPetModle = true
this.form.petStatus = '2'
......@@ -599,6 +598,7 @@ export default {
this.showPetModle = false
},
petChoose(chooseData) {
this.reSetPetForm()
console.log('chooseData', chooseData)
const petData = chooseData.petBo // 宠物信息
const petOwnerBo = chooseData.petOwnerBo // 宠主信息
......
......@@ -129,6 +129,7 @@
:header-cell-style="{background:'#F4F4F4'}"
:data="registerList"
@select="selectChange"
@select-all="selectChange"
>
<el-table-column align="center" type="selection" width="55" />
<el-table-column align="left" label="序号" min-width="55" prop="index" show-overflow-tooltip type="index" />
......@@ -205,7 +206,7 @@
v-hasPermi="['business:registration:edit']"
icon="el-icon-paperclip"
plain
:disabled="scope.row.isAdd === '1'"
size="mini"
class="el-button--warning--solid--four"
type="warning"
......@@ -296,6 +297,8 @@ export default {
loading: true,
// 选中数组
ids: [],
// 所有挂号信息ID(用于辅助, 里面的数据永远不变, 除了 新增/删除 数据时)
idsForever: [],
// 非单个禁用
single: true,
// 非多个禁用
......@@ -388,6 +391,7 @@ export default {
// 获取全部挂号的id
this.registerIds = response.rows.idList
this.registerIdsForever = response.rows.idList
this.idsForever = response.rows.idList
console.log('这是我要调的挂号列表内容:', this.registerList)
this.total = response.total
this.loading = false
......@@ -473,12 +477,9 @@ export default {
// 选择全部
checkAll() {
this.registerIds = this.registerIdsForever
// 标志位, 使得@select回调函数判断往哪个临时集合里添加
this.isCheckAll = true
this.ids = this.idsForever
// 调用手动勾选
this.manualCheck()
console.log('全部选择', this.isCheckAll)
},
// 手动勾选
manualCheck() {
......@@ -486,54 +487,36 @@ export default {
this.$nextTick().then(() => {
// 当前页结合数据的id只要在临时集合里,就使得复选框勾选
this.registerList.forEach(item => {
if (this.isCheckAll) {
if (this.registerIds.includes(item.id)) {
this.$refs.table.toggleRowSelection(item, true)
}
if (this.ids.includes(item.id)) {
this.$refs.table.toggleRowSelection(item, true)
} else {
if (this.registerEmptyIds.includes(item.id)) {
this.$refs.table.toggleRowSelection(item, true)
}
this.$refs.table.toggleRowSelection(item, false)
}
})
})
},
// 反向选择(把永久临时集合和变化的临时集合做减法重新赋给变化的临时集合赋给)
reverseSelection() {
console.log('永久的集合', this.registerIdsForever)
console.log('临时集合', this.registerEmptyIds)
if (this.isCheckAll) {
this.registerEmptyIds = this.registerIdsForever.filter(id => !this.registerIds.includes(id))
} else {
this.registerEmptyIds = this.registerIdsForever.filter(id => !this.registerEmptyIds.includes(id))
}
this.isCheckAll = false
this.getList()
const temp = []
this.registerList.forEach(item => {
console.log(this.ids.includes(item.id))
if (!this.ids.includes(item.id)) {
temp.push(item.id)
}
})
this.ids = temp
this.manualCheck()
},
// 表格当前手动勾选的
// 表格当前手动勾选的
selectChange(selection, row) {
console.log('selectChange', selection, '----', row)
if (this.isCheckAll) {
// 判断当前选中的存不存在,存在删除;不存在添加
if (this.registerIds.includes(row.id)) {
this.registerIds = this.registerIds.filter(id => id !== row.id)
console.log('filter', this.registerIds.filter(id => id !== row.id))
} else {
this.registerIds.push(row.id)
}
} else {
if (this.registerEmptyIds.includes(row.id)) {
this.registerEmptyIds = this.registerEmptyIds.filter(id => id !== row.id)
} else {
this.registerEmptyIds.push(row.id)
}
}
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
console.log('this.ids', this.ids)
const temp = []
selection.forEach(item => {
temp.push(item.id)
})
this.ids = temp
},
/** 功能按钮--导出按钮操作 */
handleExport() {
if (this.ids.length !== 0) {
......
......@@ -57,16 +57,16 @@
>选择全部
</el-button>
<el-button
class="fourWordswhiteBtn"
v-hasPermi="['business:manage:export']"
class="fourWordswhiteBtn"
icon="el-icon-back"
size="mini"
@click="reverseSelect(treatmentList)"
>反向选择
</el-button>
<el-button
class="fourWordswhiteBtn"
v-hasPermi="['business:manage:export']"
class="fourWordswhiteBtn"
icon="el-icon-upload2"
size="mini"
@click="handleExport"
......@@ -192,15 +192,14 @@
@click="handleDetails(scope.row)"
>详情</el-button>
<el-button
v-if="scope.row.treatSchedule === '1' && (scope.row.payType === '1' || scope.row.payType === '2')"
v-hasPermi="['business:treat:distribution']"
v-if="scope.row.treatSchedule === '1' && scope.row.payType === '1' && scope.row.payType === '2'"
class="bookNow"
size="mini"
icon="el-icon-orange"
@click="handleSubscribe(scope.row)"
>分配诊室</el-button>
<el-button
v-hasPermi="['business:treat:distribution']"
v-else
class="bookNowNo"
size="mini"
......@@ -274,7 +273,11 @@
style="width: 100%"
:header-cell-style="{background:'#F4F4F4'}"
>
<el-table-column prop="consultRoomName" align="left" label="诊室名称" />
<el-table-column prop="consulting_name" align="left" label="诊室名称">
<template slot-scope="scope">
<span>{{ scope.row.consulting_name || '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="treatStartTime" align="left" label="治疗日期">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.useDate, '{y}/{m}/{d}') || '-' }}</span>
......@@ -290,7 +293,11 @@
<span>{{ scope.row.useTimeRange || '-' }}</span>
</template>
</el-table-column>
<el-table-column prop="userName" align="left" label="治疗负责人" />
<el-table-column prop="userName" align="left" label="治疗负责人">
<template slot-scope="scope">
<span>{{ scope.row.duration + 'h'|| '-' }}</span>
</template>
</el-table-column>
</el-table>
<pagination
v-show="useTotal>0"
......@@ -360,39 +367,30 @@
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="开始时间" prop="sTime">
<el-time-select
v-model="reservationForm.sTime"
style="width: 150px"
is-range
placeholder="请选择治疗开始时间"
format="HH:mm"
value-format="HH:mm"
:picker-options="{
start: '00:00',
step: '01:00',
end: '12:00',
maxTime:reservationForm.eTime
}"
<el-form-item label="开始时间" prop="startTime">
<el-cascader
v-model="reservationForm.startTime"
:options="timeOptions"
placeholder="请选择开始时间"
@change="calculateEndTime"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="结束时间" prop="eTime">
<el-time-select
v-model="reservationForm.eTime"
style="width: 150px"
is-range
placeholder="请选择治疗结束时间"
format="HH:mm"
value-format="HH:mm"
:picker-options="{
start: '00:00',
step: '01:00',
end: '12:00',
minTime:reservationForm.sTime
}"
/>
<el-form-item label="治疗时长" prop="duration">
<el-select v-model="reservationForm.duration" placeholder="请选择治疗时长" @change="calculateEndTime">
<el-option
v-for="option in durationOptions"
:key="option"
:label="option + 'h'"
:value="option"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="结束时间">
<span>{{ reservationForm.eTime }}</span>
</el-form-item>
</el-col>
</el-row>
......@@ -425,6 +423,24 @@ export default {
dicts: ['check_type', 'pet_insure', 'payment_status', 'payment_status', 'treat_type'],
data() {
return {
timeOptions: Array.from({ length: 24 }, (_, i) => {
const hour = i.toString().padStart(2, '0')
return {
value: hour,
label: hour,
children: [
{
value: '00',
label: '00'
},
{
value: '30',
label: '30'
}
]
}
}),
durationOptions: [0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6],
// 使用人下拉框
userNameList: [],
// 使用记录分页
......@@ -476,10 +492,10 @@ export default {
userName: [
{ required: true, message: '请选择治疗负责人', trigger: 'change' }
],
sTime: [
{ required: true, message: '请选择开始时间', trigger: 'change' }
startTime: [
{ required: true, message: '请选择治疗开始时间', trigger: 'change' }
],
eTime: [
duration: [
{ required: true, message: '请选择结束时间', trigger: 'change' }
]
},
......@@ -505,8 +521,10 @@ export default {
treatType: '0',
userId: '',
userName: '',
startTime: [],
sTime: '',
eTime: ''
eTime: '-',
duration: ''
},
// 分配诊室搜索预约记录
allocationForm: {
......@@ -557,6 +575,35 @@ export default {
// this.getTreatmentDropdown()
},
methods: {
sTimeValid(rule, value, callback) {
if (this.startTime.length === 0) {
callback(new Error('请选择开始时间'))
}
},
// 计算结束时间
calculateEndTime() {
if (this.reservationForm.startTime.length === 2 && this.reservationForm.duration) {
const startHour = Number(this.reservationForm.startTime[0])
const startMinute = Number(this.reservationForm.startTime[1])
const duration = Number(this.reservationForm.duration)
this.reservationForm.sTime = startHour + ':' + startMinute
let endHour = startHour + Math.floor(duration)
let endMinute = startMinute + (duration % 1) * 60
if (endMinute >= 60) {
endHour += 1
endMinute -= 60
}
if (endHour >= 24) {
this.reservationForm.eTime = `${endHour % 24}:${endMinute.toString().padStart(2, '0')} (+1)`
} else {
this.reservationForm.eTime = `${endHour}:${endMinute.toString().padStart(2, '0')}`
}
} else {
this.reservationForm.eTime = '-'
}
},
// 表单选择框对齐
cellClass(row) {
if (row.columnIndex === 0) {
......
<template>
<!--进度信息模块封装-->
<div class="schedule-info">
<!-- 1--tip样式-->
<!-- <div class="progress-tip">-->
<!-- <div class="tip-green" />-->
<!-- <div-->
<!-- class="tip-content"-->
<!-- >进度信息-->
<!-- </div>-->
<!-- </div>-->
<!-- 2--内容样式-->
<div class="progress-base">
<div class="display-base">
<!-- 1--单个的背景,,后面按状态位切换样式-->
<div :class="[scheduleKey.checkSchedule === '0'? 'bkg-on' : 'bkg-off']">
<!--1.预约/现场挂号-->
<div
class="content-inner"
>
<div
class="avatar"
>
<el-image :src="require('@/assets/register/xinzengguahao_yuyue@2x.png')" />
</div>
<div
class="title"
>1.开具处方单
</div>
<div v-if="scheduleKey.createTime !== null" class="status-on">
{{ parseTime(scheduleKey.createTime, '{y}/{m}/{d} {h}:{i}') }}
</div>
<div v-else class="status-off">暂未开具处方单</div>
</div>
</div>
<!-- 箭头指示-->
<div class="arrow">
<el-image :src="require('@/assets/register/xinzengguahao_jaintou@2x.png')" />
</div>
<!-- 2--单个的背景,,后面按状态位切换样式-->
<div
:class="[scheduleKey.checkSchedule === '1'? 'bkg-on' : 'bkg-off']"
>
<!--2.录入诊断信息-->
<div
class="content-inner"
>
<div
class="avatar"
>
<el-image :src="require('@/assets/register/xinzengguahao_luru@2x.png')" />
</div>
<div
class="title"
>2.缴费开票
</div>
<div v-if="scheduleKey.payTime !== null" class="status-on">
{{ parseTime(scheduleKey.payTime, '{y}/{m}/{d} {h}:{i}') }}
</div>
<div v-else class="status-off">暂未缴费</div>
</div>
</div>
<!-- 箭头指示-->
<div class="arrow">
<el-image :src="require('@/assets/register/xinzengguahao_jaintou@2x.png')" />
</div>
<!-- 3--单个的背景,,后面按状态位切换样式-->
<div
:class="[scheduleKey.checkSchedule === '2'? 'bkg-on' : 'bkg-off']"
>
<!--3.生成病历报告-->
<div
class="content-inner"
>
<div
class="avatar"
>
<el-image :src="require('@/assets/register/xinzengguahao_shengchengbaogao@2x.png')" />
</div>
<div
class="title"
>3.分配诊室
</div>
<div v-if="scheduleKey.consultRoomTime !== null" class="status-on">
{{ parseTime(scheduleKey.consultRoomTime, '{y}/{m}/{d} {h}:{i}') }}
</div>
<div v-else class="status-off">暂未预约</div>
</div>
</div>
<!-- 箭头指示-->
<div class="arrow">
<el-image :src="require('@/assets/register/xinzengguahao_jaintou@2x.png')" />
</div>
<!-- 4--单个的背景,,后面按状态位切换样式-->
<div
:class="[scheduleKey.checkSchedule === '3'? 'bkg-on' : 'bkg-off']"
>
<!--4.开具处方单-->
<div
class="content-inner"
>
<div
class="avatar"
>
<el-image :src="require('@/assets/register/xinzengguahao_kaichuangfdan@2x.png')" />
</div>
<div
class="title"
>4.治疗
</div>
<div v-if="scheduleKey.reportTime !== null" class="status-on">
{{ parseTime(scheduleKey.reportTime, '{y}/{m}/{d} {h}:{i}') }}
</div>
<div v-else class="status-off">暂未治疗</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'TreatmentSchedule',
props: {
scheduleKey: {
type: Object
},
data() {
return {}
}
}
}
</script>
<style lang="scss" scoped>
.schedule-info {
/*模块tip布局*/
.progress-tip {
display: flex;
/*模块tip图形样式--左绿色*/
.tip-green {
width: 3px;
height: 24px;
background: #5FB54B;
border-radius: 10px 10px 10px 10px;
}
/*模块tip内容样式*/
.tip-content {
padding-left: 13px;
font-size: 16px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei, serif;
font-weight: bold;
color: #333333;
}
}
//进度条整体框架边距
.progress-base {
padding-top: 50px;
padding-bottom: 50px;
//进度条排列方向及顺序布局
.display-base {
display: flex;
//当前触发的背景样式
.bkg-on {
width: 260px;
height: 143px;
background: #F1F9EF;
border-radius: 4px 4px 4px 4px;
opacity: 1;
}
//当前未触发的背景样式
.bkg-off {
width: 260px;
height: 143px;
background: #FFFFFF;
border-radius: 4px 4px 4px 4px;
opacity: 1;
border: 1px solid #5FB54B;
}
//箭头样式
.arrow {
height: 13px;
width: 104px;
margin: 65px 22px 65px 22px;
}
//状态触发状态
.status-on {
font-size: 12px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #5FB54B;
}
//状态未触发状态
.status-off {
font-size: 12px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #AFAFAF;
}
//头像
.avatar {
width: 44px;
height: 44px;
margin-bottom: 14px;
}
//标题
.title {
font-size: 14px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
font-weight: bold;
color: #333333;
margin-bottom: 14px;
}
//预约/挂号
.content-inner {
display: flex;
align-items: center;
flex-direction: column;
padding-top: 18px;
}
}
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment