Browse Source

queue

master
pengjun 2 years ago
parent
commit
c4f50d2d6e
  1. 6
      src/components/doctorCheck/CheckItemList.vue
  2. 52
      src/components/doctorCheck/CheckSumSug.vue
  3. 34
      src/components/doctorCheck/QueueCheckList.vue
  4. 1699
      src/components/follow/FollowList.vue
  5. 237
      src/components/follow/FollowPlan.vue
  6. 400
      src/components/follow/FollowQuery.vue
  7. 173
      src/components/follow/follow.vue
  8. 2
      src/components/patientRegister/PatientRegisterEdit.vue
  9. 2
      src/components/patientRegister/PatientRegisterList.vue
  10. 39
      src/components/queue/Queue.vue
  11. 6
      src/router/index.js
  12. 3
      src/views/doctorCheck/doctorCheck.vue

6
src/components/doctorCheck/CheckItemList.vue

@ -267,13 +267,13 @@ export default {
if (checkItem.referenceRangeValue) {
let criticalRangeValue = checkItem.criticalRangeValue
let valueArr = checkItem.referenceRangeValue.split('-')
let valueArr = checkItem.referenceRangeValue.replaceAll('--','-').replaceAll('〜','-').replaceAll('~','-').split('-')
if (valueArr.length == 1) valueArr.unshift(0)
// console.log('valueArr',checkItem.referenceRangeValue,valueArr)
if (criticalRangeValue) {
let criticalArr = criticalRangeValue.split('-')
let criticalArr = criticalRangeValue.replaceAll('--','-').replaceAll('〜','-').replaceAll('~','-').split('-')
if (criticalArr.length == 1) criticalArr.unshift(0)
// console.log('criticalArr',checkItem.criticalRangeValue,criticalArr)
@ -299,7 +299,7 @@ export default {
//
let errArr = []
if (checkItem.inputCheck) {
errArr = checkItem.inputCheck.split('-')
errArr = checkItem.inputCheck.replaceAll('--','-').replaceAll('〜','-').replaceAll('~','-').split('-')
if (errArr.length == 1) errArr.unshift(-1)
}
if (errArr && errArr.length > 1) {

52
src/components/doctorCheck/CheckSumSug.vue

@ -41,22 +41,23 @@
:disabled="doctorBtnDisabled('addSummary')">新增小结</el-button>
</div>
<div v-show="checkPagePriv(pagePriv.privs, '保存结果')">
<el-button type="primary" class="btnClass" @click="save" :disabled="doctorBtnDisabled('save')">保存结果</el-button>
<el-button type="primary" class="btnClass" @click="save"
:disabled="doctorBtnDisabled('save')">保存结果</el-button>
</div>
<div v-show="checkPagePriv(pagePriv.privs, '审核')">
<el-button type="primary" class="btnClass" style="min-width: 40px;" @click="audit"
:disabled="doctorBtnDisabled('audit')">审核</el-button>
</div>
<div v-show="checkPagePriv(pagePriv.privs, '排队')">
<el-button type="primary" class="btnClass" style="min-width: 40px;" @click="btnLineUp"
:disabled="doctorBtnDisabled('btnLineUp')">排队</el-button>
<el-button type="primary" class="btnClass" style="min-width: 40px;" @click="fnQueue"
:disabled="doctorBtnDisabled('fnQueue')">排队</el-button>
</div>
<div v-show="checkPagePriv(pagePriv.privs, '危急值')">
<el-button type="primary" class="btnClass" style="min-width: 40px;" @click="btnLineUp"
:disabled="doctorBtnDisabled('btnLineUp')">危急值</el-button>
<el-button type="primary" class="btnClass" style="min-width: 40px;" @click="btnCritical"
:disabled="doctorBtnDisabled('btnCritical')">危急值</el-button>
</div>
</div>
<div
:style="`display: flex;position: absolute; top:${window.pageHeight - sumHeight - 38}px;right:125px;z-index: 1;`">
<div v-show="checkPagePriv(pagePriv.privs, '新增建议')">
@ -96,6 +97,13 @@
</div>
<div>
<!-- 分诊排队 -->
<el-dialog title="分诊排队" :visible.sync="dialogWin.queue" width="800px" :append-to-body="true"
:close-on-click-modal="false">
<Queue :refParams="queueParams" />
</el-dialog>
</div>
</div>
</template>
<script>
@ -103,14 +111,19 @@ import { mapState } from 'vuex';
import Sortable from "sortablejs";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { getPagePriv, checkPagePriv, deepCopy } from "../../utlis/proFunc";
import Queue from "../../components/queue/Queue.vue";
export default {
components: {},
components: {
Queue
},
props: ["registerCheckId", "isCheckPicture", "optGrant", "addSummary", "btnMakeDiagnosis", "save", "audit", "unAudit", "btnLineUp", "doctorBtnDisabled"],
data() {
return {
queueParams: {},
pagePriv: {
routeUrlorPageName: 'doctorCheck', //
privs: [] //
privs: [], //
},
};
},
@ -128,7 +141,7 @@ export default {
},
computed: {
...mapState(['window', 'dataTransOpts', 'dict', 'doctorCheck']),
...mapState(['window', 'dataTransOpts', 'dict', 'doctorCheck','dialogWin']),
//
sumWidth() {
@ -235,6 +248,24 @@ export default {
});
},
//
fnQueue() {
if (!this.dataTransOpts.tableS.patient_register.id) {
this.$message.warning({ showClose: true, message: '未获取到人员信息' })
return
}
this.queueParams = {
patientRegisterId: this.dataTransOpts.tableS.patient_register.id
}
this.dataTransOpts.plus.queue++
this.dialogWin.queue = true
},
btnCritical(){
console.log('危急值')
},
//
delSum(index) {
this.$confirm("此操作将删除该记录, 是否继续?", "提示", {
@ -315,5 +346,4 @@ export default {
line-height: 1.25;
padding: 1px 15px 1px 2px;
}
</style>
</style>

34
src/components/doctorCheck/QueueCheckList.vue

@ -28,10 +28,10 @@
:row-style="{ height: '28px' }" :height="Math.floor((tableHeight - 72) / 3)">
<el-table-column prop="queueRegisterNumber" label="号" min-width="30" align="center" />
<el-table-column prop="patientName" label="姓名" min-width="80" align="center" />
<el-table-column prop="vip" label="vip" min-width="40" align="center">
<el-table-column prop="isVip" label="isVip" min-width="40" align="center">
<template slot-scope="scope">
<div style="font-family: 'Microsoft YaHei';">
{{ scope.row.vip == 'Y' ? '√' : '' }}
{{ scope.row.isVip == 'Y' ? '√' : '' }}
</div>
</template>
</el-table-column>
@ -58,10 +58,10 @@
@row-click="rowClickAlready" :row-style="{ height: '28px' }" :height="Math.floor((tableHeight - 72) / 3)">
<el-table-column prop="queueRegisterNumber" label="号" min-width="30" align="center" />
<el-table-column prop="patientName" label="姓名" min-width="80" align="center" />
<el-table-column prop="vip" label="vip" min-width="40" align="center">
<el-table-column prop="isVip" label="isVip" min-width="40" align="center">
<template slot-scope="scope">
<div style="font-family: 'Microsoft YaHei';">
{{ scope.row.vip == 'Y' ? '√' : '' }}
{{ scope.row.isVip == 'Y' ? '√' : '' }}
</div>
</template>
</el-table-column>
@ -79,10 +79,10 @@
:row-style="{ height: '28px' }" :height="Math.floor((tableHeight - 72) / 3)">
<el-table-column prop="queueRegisterNumber" label="号" min-width="30" align="center" />
<el-table-column prop="patientName" label="姓名" min-width="80" align="center" />
<el-table-column prop="vip" label="vip" min-width="40" align="center">
<el-table-column prop="isVip" label="isVip" min-width="40" align="center">
<template slot-scope="scope">
<div style="font-family: 'Microsoft YaHei';">
{{ scope.row.vip == 'Y' ? '√' : '' }}
{{ scope.row.isVip == 'Y' ? '√' : '' }}
</div>
</template>
</el-table-column>
@ -271,8 +271,17 @@ export default {
break;
}
if (queueRegisterId && completeFlag != '9') {
postapi('/api/app/QueueRegister/UpdateQueueRegisterStatus', { queueRegisterId, completeFlag })
// "patientRegisterId": "3a143cf9-0b1b-7765-a90a-b087c4aad1b9",
// "patientRegisterNo": "003485"
//
if (row.patientRegisterNo) {
this.dataTransOpts.tableS.patient_register.patientRegisterNo = row.patientRegisterNo
this.dataTransOpts.refresh.patient_register.S++
}
if (row.queueRegisterId && completeFlag != '9') {
postapi('/api/app/QueueRegister/UpdateQueueRegisterStatus', { queueRegisterId: row.queueRegisterId, completeFlag })
.then(res => {
if (res.code > -1) {
this.getQueueRegisterList(this.LocalConfig.doctorCheck.queueRoom, this.LocalConfig.doctorCheck.queueItemTypeIds)
@ -280,7 +289,7 @@ export default {
}
})
} else if (completeFlag == '9') {
if (this.$peisAPI) this.outShellCall()
if (this.$peisAPI) this.outShellCall(row)
}
},
@ -298,11 +307,14 @@ export default {
if (res == 'Y') return this.$peisAPI.speechConnect()
})
.then(res => {
let toOutShell = { SendText: `${row.patientName}${roomName}检查`, RepatPlayNum: 3, Delay: 1 }
// queue_play_voice_repeate_times: 2, //
// queue_play_voice_repeate_interval: 1, // ()
let toOutShell = { SendText: `${row.patientName}${roomName}检查`, RepatPlayNum: this.queue_play_voice_repeate_times, Delay: this.queue_play_voice_repeate_interval }
return this.$peisAPI.speechSendText(JSON.stringify(toOutShell))
})
.catch(err => {
console.log('呼叫失败', err)
// console.log('', err)
this.$message.error({ showClose: true, message: err })
})
},

1699
src/components/follow/FollowList.vue
File diff suppressed because it is too large
View File

237
src/components/follow/FollowPlan.vue

@ -0,0 +1,237 @@
<template>
<div>
<el-table :data="dataTransOpts.tableM.register_check_asbitem" border
:height="window.pageHeight < 600 ? 124 : Math.floor((window.pageHeight - 228) / 3)" size="small"
highlight-current-row :summary-method="getSummaries" show-summary ref="patientRegister.patientRegisterAbs">
<el-table-column type="index" label="序号" width="50" align="center"/>
<el-table-column prop="asbitemName" label="随访内容" min-width="250">
<template slot-scope="scope">
<div>
<i class="el-icon-view" style="font-size: 14px;color: black;cursor: pointer;" @click="getAsbItems(scope.row)" />
<el-tooltip class="item" effect="dark" content="标五角星表示属于分组或套餐的项目" placement="left">
<i v-if="scope.row.isBelongGroupPackage == 'Y'" class="el-icon-star-on"
style="padding: 3px; font-size: 16px;color: purple;" />
</el-tooltip>
{{ scope.row.asbitemName }}
</div>
</template>
</el-table-column>
<el-table-column prop="creatorName" label="客户回复" min-width="200" align="center" />
<el-table-column prop="creatorName" label="修改人" min-width="80" align="center" />
<el-table-column prop="creationTime" label="修改日期" min-width="100" align="center">
<template slot-scope="scope">
<div>{{ moment(scope.row.creationTime).format("yyyy-MM-DD") }}</div>
</template>
</el-table-column>
<el-table-column prop="creatorName" label="登记人" min-width="80" align="center" />
<el-table-column prop="creationTime" label="登记日期" min-width="100" align="center">
<template slot-scope="scope">
<div>{{ moment(scope.row.creationTime).format("yyyy-MM-DD") }}</div>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import moment from "moment";
import { mapState } from "vuex";
import { dddw } from "../../utlis/proFunc";
import { getapi, postapi, putapi, deletapi } from "../../api/api";
export default {
components: {},
data() {
return {
asbItems: [], //
};
},
created() {
},
updated() {
this.$nextTick(() => {
this.$refs['patientRegister.patientRegisterAbs'].doLayout()
})
},
//
mounted() {
this.dictInit()
this.retrieveregister_check_asbitem(this.dataTransOpts.tableS.patient_register.id)
},
computed: {
...mapState(["window", "dataTransOpts", "dict", "patientRegister"]),
},
methods: {
dddw, moment,
//
dictInit() {
//
postapi('/api/app/Asbitem/GetSimpleAsbitemWithDetails')
.then(res => {
if (res.code > -1) this.asbItems = res.data
})
},
//
getAsbItems(row) {
let asbItems = this.asbItems.filter(e => { return e.asbitemId == row.asbitemId })
let content = ""
let length = asbItems.length
let modeBase = 1,count = 0,pWidth=390
if(length >= 39){
modeBase = 3
pWidth=130
}else if(length >= 20){
modeBase = 2
pWidth=195
}
//
asbItems.forEach((e,i) => {
if(modeBase == 1){
content += '<p>' + e.itemName + '</p>'
}else{
if(i==0){
count = 1
content += `<div style="display: flex;"><p style="width: ${pWidth}px;">` + e.itemName + '</p>'
}else if((i+1)%modeBase == 0){
content += `<p style="width: ${pWidth}px;">` + e.itemName + '</p></div><div style="display: flex;">'
count = 1
}else{
content += `<p style="width: ${pWidth}px;">` + e.itemName + '</p>'
count++
}
}
});
if(modeBase > 1){
for (let index = 0; index < 3; index++) {
if(modeBase == count) break
content += '<p></p>'
count++
}
content += '</div>'
}
// console.log('content',content)
this.$alert(content, `${row.asbitemName} (共 ${asbItems.length} 项)`, {
dangerouslyUseHTMLString: true,
showClose: false
});
},
//
setColor(checkCompleteFlag) {
let color = "#52555F"
switch (checkCompleteFlag) {
case '0':
color = "#FF5054"
break;
case '2':
color = "#396FFA"
break;
default:
break;
}
return color
},
//
retrieveregister_check_asbitem(id) {
this.dataTransOpts.tableM.register_check_asbitem = []
if (!id) return
getapi(`/api/app/registerasbitem/getlistinpatientregisterid?PatientRegisterId=${id}`)
.then(res => {
console.log(`/api/app/registerasbitem/getlistinpatientregisterid?PatientRegisterId=${id}`, res)
if (res.code != -1) {
res.data.forEach(e => {
e.standTotal = e.amount * e.standardPrice
e.total = e.amount * e.chargePrice
});
this.dataTransOpts.tableM.register_check_asbitem = res.data
}
})
},
// :row-class-name="tableRowClassName"
// tableRowClassName({ row, rowIndex }) {
// //console.log(row)
// if (row.groupPackageId) {
// //console.log('row.groupPackageId',row.groupPackageId)
// return 'purple-row'; //
// } else {
// return '';
// }
// },
//
getSummaries(param) {
const { columns, data } = param;
const sumCol = [2, 5]; //
const sums = [];
columns.forEach((column, index) => {
//
if (index === 1) {
sums[index] = "合计";
return;
}
//
if (sumCol.indexOf(index) == -1) {
sums[index] = "";
return;
}
const values = data.map((item) => Number(item[column.property]));
if (!values.every((value) => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] = Math.floor(sums[index]*100)/100;
sums[index] += " 元";
} else {
sums[index] = "N/A";
}
});
return sums;
},
},
//
watch: {
//ID
"dataTransOpts.refresh.register_check_asbitem.M": {
// immediate:true,
handler(newVal, oldVal) {
console.log(`watch 人员登记 newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.dataTransOpts.tableS.patient_register.id}`);
if (newVal != oldVal) this.retrieveregister_check_asbitem(this.dataTransOpts.tableS.patient_register.id)
}
},
}
};
</script>
<style scoped>
@import "../../assets/css/global.css";
.box {
display: flex;
}
</style>

400
src/components/follow/FollowQuery.vue

@ -0,0 +1,400 @@
<template>
<div style="display: flex;">
<div
:style="'display: flex;flex-wrap: wrap;height: 80px;background-color: #fff;border-radius: 8px;margin-bottom: 15px;align-items: center;padding: 10px;width:' + (window.pageWidth - 145) + 'px;'">
<div class="query">
<span class="spanClass">体检单位</span>
<el-cascader v-model="patientRegister.query.customerOrgId" :options="patientRegister.customerOrgTreeAll"
:props="{ checkStrictly: true, expandTrigger: 'hover', ...customerOrg.treeprops, }" placeholder="请选择单位"
:show-all-levels="false" clearable :disabled="orgEnable == 'Y' ? false : true" size="small"
style="width:120px;">
</el-cascader>
</div>
<div class="query">
<el-select v-model="patientRegister.query.dateType" placeholder="请选择" style="width: 80px" size="small">
<el-option label="登记日期" :value="'1'" />
<el-option label="体检日期" :value="'2'" />
<el-option label="登记或体检" :value="'3'" />
</el-select>
<!-- dateType 1 登记2 体检3 体检或登记-->
<el-date-picker v-model="patientRegister.query.startDate" type="date" placeholder="起始日期" size="small"
style="width:90px;" value-format="yyyy-MM-dd" :picker-options="pickerOptions" />
<span class="spanClass"></span>
<el-date-picker v-model="patientRegister.query.endDate" type="date" placeholder="截止日期" size="small"
style="width:90px;" value-format="yyyy-MM-dd" :picker-options="pickerOptions" />
</div>
<div class="query">
<span class="spanClass">条码号</span>
<el-input placeholder="条码号" v-model="patientRegister.query.patientRegisterNo" size="small" clearable
style="width: 120px" />
</div>
<div class="query">
<span class="spanClass">档案号</span>
<el-input placeholder="档案号" v-model="patientRegister.query.patientNo" size="small" clearable
style="width: 80px" />
</div>
<div class="query">
<span class="spanClass">姓名</span>
<el-input placeholder="姓名" v-model="patientRegister.query.patientName" size="small" clearable
style="width: 60px" />
</div>
<div class="query">
<span class="spanClass">检查条码</span>
<el-input placeholder="检查条码" v-model="patientRegister.query.pacsNo" size="small" clearable
style="width: 120px" />
</div>
<div class="query">
<span class="spanClass">检验条码</span>
<el-input placeholder="检验条码" v-model="patientRegister.query.lisNo" size="small" clearable
style="width: 120px" />
</div>
<div class="query">
<span class="spanClass">性别</span>
<el-select v-model="patientRegister.query.sex" placeholder="性别" style="width: 50px" size="small">
<el-option v-for="item in dict.forSex" :key="item.id" :label="item.displayName" :value="item.id">
</el-option>
</el-select>
</div>
<div class="query">
<span class="spanClass">手机号</span>
<el-input placeholder="手机号/电话" v-model="patientRegister.query.phone" size="small" clearable
style="width: 100px" />
</div>
<div class="query">
<span class="spanClass">身份证</span>
<el-input placeholder="身份证" v-model="patientRegister.query.idCardNo" size="small" clearable
style="width: 150px" />
</div>
<div class="query">
<span class="spanClass">次数</span>
<el-select v-model="patientRegister.query.customerOrgRegister" placeholder="次数"
@change="changeCustomerOrgRegister" style="width: 50px;" size="small" value-key="id">
<el-option v-for="item in customerOrgRegisterList" :key="item.id" :label="item.medicalTimes" :value="item">{{
item.medicalTimes + '次' }}</el-option>
</el-select>
</div>
<div class="query">
<span class="spanClass">体检类别</span>
<el-select v-model="patientRegister.query.medicalTypeIds" placeholder="请选择" clearable filterable
style="width: 170px" size="small" multiple collapse-tags>
<el-option v-for="item in dict.medicalType" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select>
</div>
<div class="query">
<span class="spanClass">状态</span>
<el-select v-model="patientRegister.query.completeFlags" placeholder="请选择" clearable style="width: 100px"
size="small" multiple collapse-tags>
<el-option v-for="item in dict.completeFlag" :key="item.id" :label="item.displayName" :value="item.id">
</el-option>
</el-select>
</div>
<div class="query">
<span class="spanClass">随访状态</span>
<el-select v-model="patientRegister.query.completeFlags" placeholder="请选择" clearable style="width: 100px"
size="small" multiple collapse-tags>
<el-option v-for="item in dict.completeFlag" :key="item.id" :label="item.displayName" :value="item.id">
</el-option>
</el-select>
</div>
</div>
<!-- 按钮区域 -->
<div style="margin-left: 10px;margin-top: 5px;">
<div v-show="checkPagePriv(pagePriv.privs, '查询')" class="listBtn">
<el-button class="commonbutton" @click="btnQuery">查询</el-button>
</div>
<div class="listBtn">
<el-button type="danger" class="commonbutton" @click="btnClear">清除条件</el-button>
</div>
</div>
</div>
</template>
<script>
import { mapState } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { getPagePriv, checkPagePriv, parsIcCardtoLocal, deepCopy } from '../../utlis/proFunc'
export default {
components: {},
props: ["orgEnable"],
data() {
return {
pagePriv: {
routeUrlorPageName: 'patientRegister', //
privs: [] //
},
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
},
shortcuts: [{
text: '今天',
onClick(picker) {
picker.$emit('pick', new Date());
}
}, {
text: '昨天',
onClick(picker) {
const date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24);
picker.$emit('pick', date);
}
}, {
text: '一周前',
onClick(picker) {
const date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit('pick', date);
}
}]
},
dialogVisible: false,
customerOrgRegisterList: [],
};
},
created() {
//
let userPriv = window.sessionStorage.getItem('userPriv')
if (userPriv) this.pagePriv.privs = deepCopy(getPagePriv(this.pagePriv.routeUrlorPageName))
let ldate = new Date();
this.patientRegister.query.startDate = ldate;
this.patientRegister.query.endDate = ldate;
this.patientRegister.query.dateType = '2'
},
//
mounted() {
this.init(this.patientRegister.query.customerOrgId)
this.enterToQuery()
},
computed: {
...mapState(["window", "dict", "dataTransOpts", "patientRegister", "customerOrg"]),
},
methods: {
checkPagePriv,
btnClear() {
this.patientRegister.query.patientRegisterNo = ''
this.patientRegister.query.patientNo = ''
this.patientRegister.query.patientName = ''
this.patientRegister.query.pacsNo = ''
this.patientRegister.query.lisNo = ''
this.patientRegister.query.sex = ''
this.patientRegister.query.phone = ''
this.patientRegister.query.idCardNo = ''
},
init(customerOrgId) {
if (!customerOrgId || customerOrgId == this.dict.personOrgId) {
this.patientRegister.query.customerOrgRegister = null
this.customerOrgRegisterList = []
if (customerOrgId == this.dict.personOrgId) {
let today = new Date()
this.patientRegister.query.startDate = today
this.patientRegister.query.endDate = today
}
return
}
// ID
getapi(`/api/app/customer-org/parent/${customerOrgId}`).then(res => {
if (res.code > - 1) {
this.patientRegister.query.CustomerOrgParentId = res.data
return getapi(`/api/app/customerorgregister/getlistincustomerorgid?CustomerOrgId=${res.data}`)
}
}).then(res => {
if (res && res.code > -1) {
this.customerOrgRegisterList = res.data;
if (res.data.length > 0) {
this.patientRegister.query.customerOrgRegister = res.data[res.data.length - 1];
this.changeCustomerOrgRegister(res.data[res.data.length - 1])
}
// this.patientRegister.query.times++
// console.log('this.patientRegister.query.customerOrgRegister',this.patientRegister.query.customerOrgRegister)
}
});
//
getapi("/api/app/medical-type/in-filter").then((res) => {
if (res.code > -1) {
this.dict.medicalType = res.data;
}
});
},
//
btnQuery() {
this.patientRegister.query.times++;
console.log("this.patientRegister.query", this.patientRegister.query);
},
changeCustomerOrgRegister(v) {
this.patientRegister.query.startDate = new Date(v.beginTime)
if (v.isComplete == 'Y') {
this.patientRegister.query.endDate = new Date(v.endTime)
} else {
this.patientRegister.query.endDate = new Date()
}
},
//
readIdCard() {
if (!this.$peisAPI) {
this.$message.info({ showClose: true, message: "此功能,需要在壳客户端才可运行!" })
return
}
this.$peisAPI.peopleIcCard().then(res => {
console.log('peopleIcCard', res)
let lres = JSON.parse(res)
if (lres.code > -1) {
let idNos = parsIcCardtoLocal(lres.data, this.dict.sex, this.dict.nation)
// this.form.patientName = idNos.Name
// this.form.birthDate = idNos.birthDate
// this.form.sexId = idNos.sexId
// this.form.age = idNos.age
// this.form.nationId = idNos.nationId
// this.form.idNo = idNos.IDCode
// this.form.address = idNos.Address
// this.patientRegister.photo = 'data:image/bmp;base64,' + idNos.Photo
this.patientRegister.query.patientName = idNos.Name
this.patientRegister.query.sex = idNos.sexId
this.patientRegister.query.idCardNo = idNos.IDCode
this.patientRegister.query.times++;
} else {
this.$message.error({ showClose: true, message: lres.message })
}
})
.catch(err => {
this.$message.error({ showClose: true, message: `读取身份证失败,原因:${err}` })
})
},
// pacs
onQueryByPacsNo(checkRequestNo) {
postapi('/api/app/PatientRegister/GetPatientRegisterNoByCheckRequestNo', { checkRequestNo }).then(res => {
if (res.code > 0) {
this.patientRegister.query.patientRegisterNo = res.data.patientRegisterNo
this.patientRegister.query.times++;
}
})
},
// lis
onQueryByLisNo(lisRequestNo) {
postapi('/api/app/PatientRegister/GetPatientRegisterNoByLisRequestNo', { lisRequestNo }).then(res => {
if (res.code > 0) {
this.patientRegister.query.patientRegisterNo = res.data.patientRegisterNo
this.patientRegister.query.times++;
}
})
},
//
enterToQuery() {
// console.log('enterToTab');
this.$nextTick(() => {
let inputs = document.querySelectorAll(["input"]); // //.inline-input
//
inputs.forEach((input, i) => {
// console.log('input',input);
input.addEventListener('keydown', (event) => {
if (event.keyCode === 13) {
//
event.preventDefault();
//
// console.log(input.getAttribute('placeholder'),input.value)
let placeholder = input.getAttribute('placeholder')
switch (placeholder) {
case '条码号':
case '档案号':
case '姓名':
case '预约手机号':
case '身份证':
if (input.value) this.patientRegister.query.times++;
input.select()
break;
case '检查条码':
if (input.value) this.onQueryByPacsNo(input.value)
input.select()
break;
case '检验条码':
if (input.value) this.onQueryByLisNo(input.value)
input.select()
break;
}
}
});
input.addEventListener('click', (event) => {
let placeholder = input.getAttribute('placeholder')
switch (placeholder) {
case '条码号':
case '档案号':
case '姓名':
case '预约手机号':
case '身份证':
case '检查条码':
case '检验条码':
input.select()
break;
}
});
});
});
},
},
watch: {
"dataTransOpts.plus.PatientRegisterEditQuery": {
// immediate: true,
handler(newVal, oldVal) {
console.log(`watch 体检单位切换 newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.patientRegister.query.customerOrgId}`);
if (newVal != oldVal) this.init(this.patientRegister.query.customerOrgId)
}
},
},
}
</script>
<style scoped>
@import "../../assets/css/global_button.css";
@import "../../assets/css/global_input.css";
@import "../../assets/css/global_font.css";
.query {
margin-right: 10px;
font-size: 14px;
color: #232748;
font-weight: 400;
font-family: "NotoSansSC-Regular";
}
.listBtn {
margin-top: 10px;
text-align: center;
}
.btnClass {
/* position: absolute; */
/* left: 0;
top: 0; */
width: 100px;
}
.spanClass {
font-size: 14px;
padding: 0 2px 0 0;
}
</style>

173
src/components/follow/follow.vue

@ -0,0 +1,173 @@
<template>
<div>
<div>
<div class="contenttitle">
体检 /<span class="contenttitleBold">随访管理</span>
</div>
<div style="display: flex;">
<div>
<!-- 查询条件 -->
<FollowQuery />
<!-- 人员列表信息 -->
<FollowList />
</div>
</div>
</div>
</div>
</template>
<script>
import { mapState, mapActions } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import FollowQuery from "../../components/follow/FollowQuery.vue";
import FollowList from "../../components/follow/FollowList.vue";
export default {
components: {
FollowQuery,
FollowList,
},
data() {
return {
CustomerOrgTreeStyle: "",
CustomerOrgRightStyle: "margin-left: 10px;",
};
},
//
created() {
// console.log("this.$route.query", this.$route.query)
if (this.$route.query.patient_register) {
this.dataTransOpts.tableS.patient_register = this.$route.query.patient_register
} else {
this.dataTransOpts.tableS.patient_register = { id: '', patientRegisterNo: '' }
}
this.dataTransOpts.refresh.register_check_asbitem.M++
},
//
mounted() {
this.dictInit();
},
computed: {
...mapState(["window","dataTransOpts", "dict", "patientRegister", "customerOrg"]),
},
methods: {
//
dictInit() {
//
getapi("/api/app/sex").then((res) => {
if (res.code == 1) {
this.dict.sex = res.data;
}
});
//
getapi("/api/app/for-sex").then((res) => {
if (res.code == 1) {
this.dict.forSex = res.data;
}
});
//
getapi("/api/app/organization-units/organization-unit-by-is-peis").then(
(res) => {
if (res.code == 1) {
this.dict.organization = res.data;
}
}
);
//
// getapi("/api/app/customer-org/in-filter").then((res) => {
// if (res.code == 1) {
// this.dict.customerOrg = res.data.items;
// }
// });
//
getapi("/api/app/medical-type/in-filter").then((res) => {
if (res.code == 1) {
this.dict.medicalType = res.data;
}
});
//
getapi("/api/app/personnel-type/in-filter").then((res) => {
if (res.code == 1) {
this.dict.personnelType = res.data;
}
});
//
getapi("/api/app/MaritalStatus/GetMaritalStatusList").then((res) => {
if (res.code == 1) {
this.dict.maritalStatus = res.data;
}
});
//
getapi("/api/app/sex-hormone-term/in-filter").then((res) => {
if (res.code == 1) {
this.dict.sexHormoneTerm = res.data;
}
});
//
getapi("/api/app/nation/in-filter").then((res) => {
if (res.code != -1) {
this.dict.nation = res.data;
}
});
//
getapi("/api/app/birth-place/in-filter").then((res) => {
if (res.code == 1) {
this.dict.birthPlace = res.data;
}
});
//
postapi("/api/app/medicalpackage/GetBasicList",{}).then((res) => {
if (res.code == 1) {
this.dict.medicalPackage = res.data;
}
});
//
getapi("/api/app/customerorggroup/getlistinfilter").then((res) => {
if (res.code > -1) {
this.dict.customerOrgGroupAll = res.data;
}
});
//
getapi("/api/app/pay-mode").then((res) => {
if (res.code == 1) {
this.dict.payMode = res.data;
}
});
},
},
//()
watch: {
},
};
</script>
<style scoped>
@import '../../assets/css/global_button.css';
@import '../../assets/css/global_dialog.css';
@import '../../assets/css/global_form.css';
@import '../../assets/css/global_input.css';
@import '../../assets/css/global_table.css';
@import '../../assets/css/global.css';
.box {
display: flex;
}
</style>

2
src/components/patientRegister/PatientRegisterEdit.vue

@ -1392,8 +1392,8 @@ export default {
this.queueParams = {
patientRegisterId: row.id
}
this.dataTransOpts.plus.queue++
this.dialogWin.queue = true
this.dataTransOpts.plus.queue++
},
//

2
src/components/patientRegister/PatientRegisterList.vue

@ -1242,8 +1242,8 @@ export default {
this.queueParams = {
patientRegisterId: row.id
}
this.dataTransOpts.plus.queue++
this.dialogWin.queue = true
this.dataTransOpts.plus.queue++
},
//

39
src/components/queue/Queue.vue

@ -43,21 +43,25 @@
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;">
<div style="margin: 25px 0 10px 10px;">
<el-button class="commonbutton" @click="btnQueue">人工分诊排队</el-button>
</div>
<div>
<div style="margin-left: 10px;">
<el-button class="commonbutton" @click="btnQueueAuto">AI智能分诊</el-button>
</div>
<div style="margin: 10px 0;">当前排队房间</div>
<div style="height: 40px;margin-left: 20px;">
<div style="margin: 10px 0 5px 0;">当前人员</div>
<div style="height: 20px;margin-left: 20px;">
{{ queueRegister.patientName }}
</div>
<div style="margin: 10px 0 5px 0;">当前排队房间</div>
<div style="height: 20px;margin-left: 20px;">
{{ queueRegister.roomName }}
</div>
<div style="margin: 5px 0;">当前候诊人数</div>
<div style="height: 50px;margin-left: 20px;">
<div style="margin: 5px 0 5px 0;">当前候诊人数</div>
<div style="height: 25px;margin-left: 20px;">
{{ queueRegister.queueCount }}
</div>
<div>
<div style="margin-left: 10px;">
<el-button class="commonbutton" @click="dialogWin.queue = false">关闭</el-button>
</div>
</div>
@ -97,7 +101,6 @@ export default {
},
//
mounted() {
this.funMounted()
},
@ -119,7 +122,7 @@ export default {
})
.catch(err => {
console.log(err)
this.$message.error({ showClose: true, message: `${err}` })
if(err != "patientRegisterId 无值") this.$message.error({ showClose: true, message: `${err}` })
})
},
@ -133,7 +136,11 @@ export default {
if (res.code > -1) {
this.roomQueueList = res.data
this.roomsForAsbitem = []
return postapi('/api/app/QueueRegister/GetNotTriageAsbitemList', { patientRegisterId })
if(patientRegisterId){
return postapi('/api/app/QueueRegister/GetNotTriageAsbitemList', { patientRegisterId })
}else{
reject('patientRegisterId 无值')
}
} else {
reject(res.message)
}
@ -141,7 +148,11 @@ export default {
.then(res => {
if (res && res.code > -1) {
this.notTriageAsbitemList = res.data
return postapi('/api/app/QueueRegister/GetYesTriageAsbitemList', { patientRegisterId })
if(patientRegisterId){
return postapi('/api/app/QueueRegister/GetYesTriageAsbitemList', { patientRegisterId })
}else{
reject('patientRegisterId 无值')
}
} else {
reject(res.message)
}
@ -149,7 +160,11 @@ export default {
.then(res => {
if (res && res.code > -1) {
this.yesTriageAsbitemList = res.data
return postapi('/api/app/QueueRegister/GetQueueRegisterByPatientRegisterId', { patientRegisterId })
if(patientRegisterId){
return postapi('/api/app/QueueRegister/GetQueueRegisterByPatientRegisterId', { patientRegisterId })
}else{
reject('patientRegisterId 无值')
}
} else {
reject(res.message)
}

6
src/router/index.js

@ -465,6 +465,12 @@ const routes = [{
name: "从文件导入检验结果",
component: () =>
import ("../views/doctorCheck/lisResultImport.vue"),
},
{
path: "/follow",
name: "随访管理",
component: () =>
import ("../components/follow/follow.vue"),
},
//---------------------- 体 检 end ----------------------
//---------------------- 体检查询 start ----------------------

3
src/views/doctorCheck/doctorCheck.vue

@ -398,6 +398,9 @@ export default {
if (RegisterCheckEdit.completeFlag && RegisterCheckEdit.completeFlag == '0') ret = false
}
break;
case 'btnCritical':
if (RegisterCheckEdit.isAudit && RegisterCheckEdit.isAudit != 'Y') ret = false
break;
case 'audit':
if (RegisterCheckEdit.completeFlag && RegisterCheckEdit.completeFlag != '0' && RegisterCheckEdit.isAudit && RegisterCheckEdit.isAudit != 'Y') ret = false
break;

Loading…
Cancel
Save