6 changed files with 529 additions and 5 deletions
-
14src/components/common/LocalConfig.vue
-
231src/components/doctorCheck/QueueCheckList.vue
-
31src/components/patientRegister/PatientRegisterList.vue
-
252src/components/queue/Queue.vue
-
2src/store/index.js
-
4src/views/doctorCheck/doctorCheck.vue
@ -0,0 +1,231 @@ |
|||
<template> |
|||
<div :style="`height: ${tableHeight}px;font-size:14px;z-index:10;background-color: #f4f8ff;`"> |
|||
<div> |
|||
<span>候诊人员:</span> |
|||
<el-input placeholder="候诊人员" v-model="patientName" size="small" style="width: 125px;" clearable /> |
|||
</div> |
|||
<div style="display: flex;"> |
|||
<el-table :data="queue1" style="width: 100%;" border highlight-current-row @row-click="rowClick" |
|||
:row-style="{ height: '28px' }" :height="Math.floor((tableHeight - 72) / 3)"> |
|||
<el-table-column prop="seq" label="号" min-width="30"> |
|||
<template slot-scope="scope"> |
|||
<div :style="`padding: 0 5px;color: ${setCheckStatusColor(scope.row.completeFlag)};`"> |
|||
{{ scope.row.asbitemName }} |
|||
</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="patientName" label="姓名" min-width="80" /> |
|||
<el-table-column prop="vip" label="vip" min-width="40" /> |
|||
</el-table> |
|||
<div style="margin-top: 20px;"> |
|||
<div> |
|||
<el-button type="primary" class="commonbutton" @click="refuseItem" |
|||
style="width: 40px;min-width: 40px;height: 26px;">呼叫</el-button> |
|||
</div> |
|||
<div style="margin: 10px 0;"> |
|||
<el-button type="primary" class="commonbutton" @click="refuseItem" |
|||
style="width: 40px;min-width: 40px;height: 26px;">刷新</el-button> |
|||
</div> |
|||
<div> |
|||
<el-button type="primary" class="commonbutton" @click="refuseItem" |
|||
style="width: 40px;min-width: 40px;height: 26px;">排队</el-button> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div style="margin-top: 6px;">已呼人员:</div> |
|||
<div style="display: flex;"> |
|||
<el-table :data="queue1" style="width: 100%;" border highlight-current-row @row-click="rowClick" |
|||
:row-style="{ height: '28px' }" :height="Math.floor((tableHeight - 72) / 3)"> |
|||
<el-table-column prop="seq" label="号" min-width="30"> |
|||
<template slot-scope="scope"> |
|||
<div :style="`padding: 0 5px;color: ${setCheckStatusColor(scope.row.completeFlag)};`"> |
|||
{{ scope.row.asbitemName }} |
|||
</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="patientName" label="姓名" min-width="80" /> |
|||
<el-table-column prop="vip" label="vip" min-width="40" /> |
|||
</el-table> |
|||
<div style="margin-top: 20px;"> |
|||
<div> |
|||
<el-button type="primary" class="commonbutton" @click="refuseItem" |
|||
style="width: 40px;min-width: 40px;height: 26px;">过号</el-button> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div style="margin-top: 6px;">过号人员:</div> |
|||
<div style="display: flex;"> |
|||
<el-table :data="queue1" style="width: 100%;" border highlight-current-row @row-click="rowClick" |
|||
:row-style="{ height: '28px' }" :height="Math.floor((tableHeight - 72) / 3)"> |
|||
<el-table-column prop="seq" label="号" min-width="30"> |
|||
<template slot-scope="scope"> |
|||
<div :style="`padding: 0 5px;color: ${setCheckStatusColor(scope.row.completeFlag)};`"> |
|||
{{ scope.row.asbitemName }} |
|||
</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="patientName" label="姓名" min-width="80" /> |
|||
<el-table-column prop="vip" label="vip" min-width="40" /> |
|||
</el-table> |
|||
<div style="margin-top: 20px;"> |
|||
<div> |
|||
<el-button type="primary" class="commonbutton" @click="refuseItem" |
|||
style="width: 40px;min-width: 40px;height: 26px;">重呼</el-button> |
|||
</div> |
|||
<div style="margin: 10px 0;"> |
|||
<el-button type="primary" class="commonbutton" @click="refuseItem" |
|||
style="width: 40px;min-width: 40px;height: 26px;">退回</el-button> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
|
|||
</template> |
|||
<script> |
|||
import { mapState } from 'vuex'; |
|||
import { getapi, postapi, putapi, deletapi } from "@/api/api"; |
|||
import { listOrderBy, setCheckStatusColor } from "../../utlis/proFunc" |
|||
|
|||
export default { |
|||
components: {}, |
|||
data() { |
|||
return { |
|||
patientName: '', |
|||
queue1: [{ patientName: '张三' }], |
|||
queue2: [], |
|||
queue3: [], |
|||
activeNames: ['0', '1', '2', '3'], |
|||
}; |
|||
}, |
|||
|
|||
created() { }, |
|||
|
|||
//挂载完成 |
|||
mounted() { |
|||
this.registerCheckList(this.dataTransOpts.tableS.patient_register.id) |
|||
}, |
|||
|
|||
computed: { |
|||
...mapState(['window', 'dataTransOpts', 'dict', 'doctorCheck']), |
|||
|
|||
tableHeight() { |
|||
return this.window.pageHeight < 600 ? 400 : this.window.pageHeight - 200 |
|||
}, |
|||
|
|||
registerCheckList0() { |
|||
return this.doctorCheck.RegisterCheckList.filter(e => { return e.checkTypeFlag == '0' }) |
|||
}, |
|||
registerCheckList1() { |
|||
return this.doctorCheck.RegisterCheckList.filter(e => { return e.checkTypeFlag == '1' }) |
|||
}, |
|||
registerCheckList2() { |
|||
return this.doctorCheck.RegisterCheckList.filter(e => { return e.checkTypeFlag == '2' }) |
|||
}, |
|||
registerCheckList3() { |
|||
return this.doctorCheck.RegisterCheckList.filter(e => { return e.checkTypeFlag == '3' }) |
|||
}, |
|||
|
|||
}, |
|||
|
|||
methods: { |
|||
setCheckStatusColor, |
|||
|
|||
tableRowClassName({ row, rowIndex }) { |
|||
//console.log('tableRowClassName',rowIndex,row) |
|||
if (row.completeFlag === '0') { |
|||
return 'danger'; //未检 |
|||
} else if (row.completeFlag === '2') { |
|||
return 'info'; //弃检 |
|||
} |
|||
return ''; |
|||
|
|||
}, |
|||
refuseItem() { |
|||
|
|||
}, |
|||
//选择组合项目 |
|||
rowClick(row) { |
|||
console.log('rowClick') |
|||
this.doctorCheck.RegisterCheckId = row.id |
|||
this.dataTransOpts.tableS.register_check.id = row.id |
|||
|
|||
this.dataTransOpts.refresh.register_check.S++ |
|||
this.dataTransOpts.refresh.register_check_item.M++ |
|||
|
|||
}, |
|||
|
|||
//获取检查组合项目 |
|||
registerCheckList(patientRegisterId) { |
|||
if (!patientRegisterId) { |
|||
this.doctorCheck.RegisterCheckList = [] |
|||
this.doctorCheck.RegisterCheckId = '' |
|||
this.dataTransOpts.tableS.register_check.id = '' |
|||
|
|||
this.dataTransOpts.refresh.register_check.S++ |
|||
this.dataTransOpts.refresh.register_check_item.M++ |
|||
return |
|||
} |
|||
postapi('/api/app/RegisterCheck/GetRegisterCheckWithAsbitems', { patientRegisterId }) |
|||
.then((res) => { |
|||
// console.log("registerCheckList res.data", res.data); |
|||
if (res.code != -1) { |
|||
// 数据 排序,分组 处理 |
|||
this.handleRegisterCheckList(res.data) |
|||
|
|||
//查询出来 默认显示第1条记录明细、小结等 |
|||
if (res.data.length > 0) { |
|||
this.doctorCheck.RegisterCheckId = res.data[0].id |
|||
this.dataTransOpts.tableS.register_check.id = res.data[0].id |
|||
|
|||
// this.doctorCheck.RegisterCheckEdit = res.data[0] |
|||
|
|||
// this.$refs['doctorCheck_RegisterCheckList'].setCurrentRow(res.data[0]) |
|||
|
|||
} else { |
|||
this.dataTransOpts.tableS.register_check.id = '' |
|||
} |
|||
|
|||
this.dataTransOpts.refresh.register_check.S++ //刷新检查医生 |
|||
this.dataTransOpts.refresh.register_check_item.M++ //刷新检查明细 |
|||
|
|||
} |
|||
}) |
|||
.catch((err) => { |
|||
this.$message.error({ showClose: true, message: `操作失败,原因:${err}` }); |
|||
}); |
|||
}, |
|||
|
|||
handleRegisterCheckList(registerCheckList) { |
|||
this.doctorCheck.RegisterCheckList = listOrderBy(registerCheckList, [{ colName: 'checkTypeFlag', sortType: 'A' }, { colName: 'itemTypeDisplayOrder', sortType: 'A' }, { colName: 'asbitemDisplayOrder', sortType: 'A' }]) |
|||
|
|||
} |
|||
}, |
|||
|
|||
|
|||
//监听事件 |
|||
watch: { |
|||
//体检人员未切换时 也可以强制刷新数据 |
|||
"dataTransOpts.refresh.register_check.M": { |
|||
// immediate:true, |
|||
handler(newVal, oldVal) { |
|||
console.log(`watch 组合项目列表 newVal: ${newVal} oldVal: ${oldVal} patient_register.id: ${this.dataTransOpts.tableS.patient_register.id}`); |
|||
this.registerCheckList(this.dataTransOpts.tableS.patient_register.id) |
|||
} |
|||
}, |
|||
} |
|||
}; |
|||
</script> |
|||
<style scoped> |
|||
::v-deep .el-collapse-item__header { |
|||
height: 32px; |
|||
line-height: 32px; |
|||
background-color: #f4f8ff; |
|||
color: #303133; |
|||
cursor: pointer; |
|||
font-size: 14px; |
|||
font-weight: 700; |
|||
text-align: center; |
|||
padding: 0 0 0 50px; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,252 @@ |
|||
<template> |
|||
<div style="margin-top: -15px;display: flex;"> |
|||
<div style="width: 300px;"> |
|||
<div>排队信息:</div> |
|||
<el-table :data="roomQueueList" border style="width: 100%" row-key="id" height="565" highlight-current-row |
|||
size="small" ref="roomQueueList"> |
|||
<el-table-column label="科室" min-width="130" prop="itemTypeName" /> |
|||
<el-table-column label="房间" min-width="60" prop="roomName" align="center" /> |
|||
<el-table-column label="候诊人数" min-width="80" prop="waitCount" align="center" /> |
|||
</el-table> |
|||
</div> |
|||
<div style="width: 360px;margin: 0 5px;"> |
|||
<div>未分诊组合项目:</div> |
|||
<el-table :data="notTriageAsbitemList" border style="width: 100%" row-key="id" height="270" highlight-current-row |
|||
size="small" @row-click="rowClick" ref="notTriageAsbitemList"> |
|||
<el-table-column label="科室" min-width="130" prop="itemTypeName" align="center" /> |
|||
<el-table-column label="组合项目" min-width="150" prop="asbitemName" align="center" /> |
|||
</el-table> |
|||
|
|||
<div style="margin-top: 5px;">已分诊科室:</div> |
|||
<el-table :data="yesTriageAsbitemList" border style="width: 100%" row-key="id" height="270" highlight-current-row |
|||
size="small" ref="yesTriageAsbitemList"> |
|||
<el-table-column label="科室" min-width="130" prop="asbitemName"> |
|||
<template slot-scope="scope"> |
|||
<div> |
|||
{{ scope.row.asbitemName }} |
|||
</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="房间" prop="standardPrice" min-width="60" align="center" /> |
|||
<el-table-column label="状态" prop="discount" min-width="60"> |
|||
<template slot-scope="scope"> |
|||
<el-input type="number" v-model="scope.row.discount" size="small" disabled /> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="排号人" prop="amount" min-width="80"> |
|||
<template slot-scope="scope"> |
|||
<el-select v-model="scope.row.payTypeFlag" size="small" disabled> |
|||
<el-option v-for="item in dict.payType" :key="item.id" :label="item.displayName" :value="item.id" /> |
|||
</el-select> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</div> |
|||
<div style="width: 150px;"> |
|||
<div>房间:</div> |
|||
<el-table :data="roomsForAsbitem" border style="width: 100%" row-key="id" height="270" highlight-current-row |
|||
size="small" @row-click="rowClickRoom" ref="roomsForAsbitem"> |
|||
<el-table-column label="房间" min-width="80" prop="roomName" align="center" /> |
|||
</el-table> |
|||
<div style="margin: 25px 0 10px 0;"> |
|||
<el-button class="commonbutton" @click="btnQueue">人工排队</el-button> |
|||
</div> |
|||
<div> |
|||
<el-button class="commonbutton" @click="btnQueueAuto">自动排队</el-button> |
|||
</div> |
|||
<div style="margin: 10px 0;">当前排队房间:</div> |
|||
<div style="height: 40px;margin-left: 40px;"> |
|||
{{ queueRegister.roomName }} |
|||
</div> |
|||
<div style="margin: 5px 0;">当前候诊人数:</div> |
|||
<div style="height: 50px;margin-left: 40px;"> |
|||
{{ queueRegister.queueCount }} |
|||
</div> |
|||
<div> |
|||
<el-button class="commonbutton" @click="dialogWin.queue = false">关闭</el-button> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
import { mapState } from "vuex"; |
|||
import { getapi, postapi, putapi, deletapi } from "@/api/api"; |
|||
import { dddw, deepCopy } from "../../utlis/proFunc"; |
|||
import moment from "moment"; |
|||
|
|||
|
|||
export default { |
|||
components: { |
|||
|
|||
}, |
|||
props: ["refParams"], |
|||
data() { |
|||
return { |
|||
queueRegister: {}, // 病人当前排队信息 /api/app/QueueRegister/GetQueueRegisterByPatientRegisterId |
|||
roomQueueList: [], // 房间排队信息 /api/app/QueueRegister/GetRoomQueueList |
|||
notTriageAsbitemList: [], //未分诊组合项目 /api/app/QueueRegister/GetNotTriageAsbitemList |
|||
yesTriageAsbitemList: [], //已分诊组合项目 /api/app/QueueRegister/GetYesTriageAsbitemList |
|||
roomsForAsbitem: [], //组合项目可选排队房间信息 /api/app/QueueRegister/GetRoomListByAsbitemId |
|||
|
|||
curAsbitemId: '', // 当前选中 未分诊组合项目 |
|||
curRoomId: '', // 当前选中 房间 |
|||
}; |
|||
}, |
|||
|
|||
created() { |
|||
|
|||
}, |
|||
|
|||
updated() { |
|||
|
|||
}, |
|||
//挂载完成 |
|||
mounted() { |
|||
|
|||
this.funMounted() |
|||
}, |
|||
|
|||
computed: { |
|||
...mapState([ |
|||
"window", |
|||
"dict", |
|||
"dataTransOpts", |
|||
"dialogWin" |
|||
]), |
|||
}, |
|||
|
|||
methods: { |
|||
funMounted() { |
|||
this.dictInit() |
|||
.then(res => { |
|||
//this.btnQuery() |
|||
}) |
|||
.catch(err => { |
|||
console.log(err) |
|||
this.$message.warning({ showClose: true, message: `${err}` }) |
|||
}) |
|||
}, |
|||
|
|||
//数据初始化 |
|||
dictInit() { |
|||
|
|||
return new Promise((resolve, reject) => { |
|||
let patientRegisterId = this.refParams.patientRegisterId // 人员id |
|||
let medicalCenterId = window.sessionStorage.getItem('peisid'); |
|||
postapi('/api/app/QueueRegister/GetRoomQueueList', { medicalCenterId }) |
|||
.then(res => { |
|||
if (res.code > -1) { |
|||
this.roomQueueList = res.data |
|||
this.roomsForAsbitem = [] |
|||
return postapi('/api/app/QueueRegister/GetNotTriageAsbitemList', { patientRegisterId }) |
|||
} else { |
|||
reject(res.message) |
|||
} |
|||
}) |
|||
.then(res => { |
|||
if (res && res.code > -1) { |
|||
this.notTriageAsbitemList = res.data |
|||
return postapi('/api/app/QueueRegister/GetYesTriageAsbitemList', { patientRegisterId }) |
|||
} else { |
|||
reject(res.message) |
|||
} |
|||
}) |
|||
.then(res => { |
|||
if (res && res.code > -1) { |
|||
this.yesTriageAsbitemList = res.data |
|||
return postapi('/api/app/QueueRegister/GetQueueRegisterByPatientRegisterId', { patientRegisterId }) |
|||
} else { |
|||
reject(res.message) |
|||
} |
|||
}) |
|||
.then(res => { |
|||
if (res && res.code > -1) { |
|||
if (res.code == 1) { |
|||
this.queueRegister = res.data |
|||
} else { |
|||
this.queueRegister = { roomName: '无', queueCount: '' } |
|||
} |
|||
resolve(res) |
|||
} else { |
|||
reject(res.message) |
|||
} |
|||
}) |
|||
.catch(err => { |
|||
reject(err) |
|||
}); |
|||
}) |
|||
}, |
|||
|
|||
|
|||
btnTest() { |
|||
console.log('this.thirdInterfaces', this.thirdInterfaces) |
|||
console.log('this.tableData', this.tableData) |
|||
console.log('this.currRowData', this.currRowData) |
|||
console.log('this.tableDataDetails', this.tableDataDetails) |
|||
console.log('this.query', this.query) |
|||
}, |
|||
|
|||
// 点击 未分诊组合项目 |
|||
rowClick(row) { |
|||
this.curAsbitemId = row.asbitemId |
|||
this.roomsForAsbitem = [] |
|||
this.curRoomId = '' |
|||
postapi('/api/app/QueueRegister/GetRoomListByAsbitemId', { |
|||
asbitemId: this.curAsbitemId |
|||
}).then(res => { |
|||
if (res.code > -1) { |
|||
this.roomsForAsbitem = res.data |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
// 点击 待选房间号 |
|||
rowClickRoom(row) { |
|||
this.curRoomId = row.asbitemId |
|||
}, |
|||
|
|||
// 人工排队 |
|||
btnQueue() { |
|||
|
|||
}, |
|||
|
|||
// 自动排队 |
|||
btnQueueAuto() { |
|||
|
|||
}, |
|||
|
|||
}, |
|||
|
|||
//监听事件() |
|||
watch: { |
|||
"dataTransOpts.plus.queue": { |
|||
// immediate:true, |
|||
handler(newVal, oldVal) { |
|||
console.log(`watch 职业病 newVal: ${newVal}, oldVal: ${oldVal} `); |
|||
if (newVal != oldVal) this.funMounted() |
|||
} |
|||
}, |
|||
|
|||
}, |
|||
|
|||
}; |
|||
</script> |
|||
<style scoped> |
|||
@import '../../assets/css/global_card.css'; |
|||
@import '../../assets/css/global_input.css'; |
|||
@import '../../assets/css/global_table.css'; |
|||
@import '../../assets/css/global.css'; |
|||
|
|||
.query { |
|||
margin-right: 10px; |
|||
font-size: 14px; |
|||
color: #232748; |
|||
font-weight: 400; |
|||
font-family: "NotoSansSC-Regular"; |
|||
} |
|||
|
|||
.spanClass { |
|||
font-size: 14px; |
|||
padding: 0 2px 0 0; |
|||
} |
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue