You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
4.6 KiB
208 lines
4.6 KiB
<template>
|
|
<view class="scan-code">
|
|
<uni-nav-bar dark :fixed="true" :border="false"
|
|
background-color="#002648" status-bar title="扫码查看手术状态">
|
|
<block slot="right">
|
|
<logout></logout>
|
|
</block>
|
|
</uni-nav-bar>
|
|
|
|
<view class="scan-code-content">
|
|
<view class="content-text">
|
|
<text>请扫描</text>
|
|
<text>确认患者信息</text>
|
|
</view>
|
|
<view class="content-img">
|
|
<image src="../../static/img/scan-code.png" mode=""></image>
|
|
</view>
|
|
</view>
|
|
<view class="buttons" @click="scanCodeHandle">
|
|
<uni-icons type="scan" size="30" color="#fff"></uni-icons>
|
|
<text class="button-code-text">点击扫码</text>
|
|
</view>
|
|
<scan></scan>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import logout from '@/components/logout.vue'
|
|
import scan from '@/components/scan.vue';
|
|
export default {
|
|
components: {
|
|
scan,
|
|
logout
|
|
},
|
|
data() {
|
|
return {
|
|
scanCodeValue: {},
|
|
content: '',
|
|
patientInfo:{}
|
|
}
|
|
},
|
|
onShow() {
|
|
let that = this
|
|
uni.$off('scan') // 每次进来先 移除全局自定义事件监听器
|
|
uni.$on('scan', (data) => {
|
|
//扫码成功后的回调,你可以写自己的逻辑代码在这里
|
|
this.content = data.code
|
|
// 二维码内容:operaId手术id
|
|
console.log('扫码 结果:', data.code);
|
|
uni.showLoading({
|
|
title: '获取患者信息中'
|
|
})
|
|
this.getPatientInfo(data.code)
|
|
})
|
|
},
|
|
methods: {
|
|
// 确认状态
|
|
scanCodeHandle() {
|
|
uni.scanCode({
|
|
// onlyFromCamera: true,
|
|
success: (res) => {
|
|
console.log('扫码成功',res)
|
|
uni.showLoading({
|
|
title: '获取患者信息中'
|
|
})
|
|
this.getPatientInfo(res.result)
|
|
}
|
|
});
|
|
},
|
|
// 获取患者信息
|
|
async getPatientInfo(result) {
|
|
// 0:等待呼叫,1:呼叫中,2:术前,3:术中,4:术后,5离开
|
|
const res = await this.$baseAPI.request(`${this.$portAdress.pda}/${result}`)
|
|
console.log(res);
|
|
if(res.code===0) {
|
|
uni.hideLoading()
|
|
this.patientInfo = res.data
|
|
uni.setStorageSync('patientInfo',JSON.stringify(this.patientInfo))
|
|
if(res.data.status===0) {
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '请呼叫患者后再执行',
|
|
success: function (res) {
|
|
if (res.confirm) {
|
|
console.log('用户点击确定');
|
|
} else if (res.cancel) {
|
|
console.log('用户点击取消');
|
|
}
|
|
}
|
|
})
|
|
}
|
|
if(res.data.status === 1) {
|
|
uni.navigateTo({
|
|
url: '/pages/safetyChecklist/beforeOperation'
|
|
})
|
|
}
|
|
if(res.data.status === 2) {
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '术中核查表还未填写',
|
|
showCancel:false,
|
|
confirmText:'返回',
|
|
success: function (res) {
|
|
if (res.confirm) {
|
|
console.log('用户点击确定');
|
|
} else if (res.cancel) {
|
|
console.log('用户点击取消');
|
|
}
|
|
}
|
|
})
|
|
}
|
|
if(res.data.status===3) {
|
|
uni.navigateTo({
|
|
url: '/pages/safetyChecklist/leaveOperat'
|
|
})
|
|
}
|
|
if(res.data.status===4) {
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '该患者已完成手术核查',
|
|
showCancel:false,
|
|
confirmText:'返回',
|
|
success: function (res) {
|
|
if (res.confirm) {
|
|
console.log('用户点击确定');
|
|
} else if (res.cancel) {
|
|
console.log('用户点击取消');
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
} else {
|
|
uni.hideLoading()
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title: res.msg
|
|
})
|
|
}
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="less" scoped>
|
|
.scan-code {
|
|
height: 100vh;
|
|
background-color: #002648;
|
|
display: flex;
|
|
flex-direction: column;
|
|
|
|
.scan-code-content {
|
|
height: 100%;
|
|
margin-top: 50rpx;
|
|
background-color: #fff;
|
|
border-top-left-radius: 40rpx;
|
|
border-top-right-radius: 40rpx;
|
|
padding: 64rpx 0 0 52rpx;
|
|
padding-left: 20rpx;
|
|
|
|
.content-text {
|
|
text {
|
|
display: block;
|
|
text-align: center;
|
|
color: #002648;
|
|
font-size: 40rpx;
|
|
}
|
|
|
|
text:nth-child(1) {
|
|
margin-bottom: 16rpx;
|
|
}
|
|
}
|
|
|
|
.content-img {
|
|
margin-top: 98rpx;
|
|
text-align: center;
|
|
|
|
image {
|
|
width: 256*2rpx;
|
|
height: 256*2rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
.buttons {
|
|
width: 90%;
|
|
height: 98rpx;
|
|
line-height: 98rpx;
|
|
background-color: #1e79ff;
|
|
color: #fff;
|
|
text-align: center;
|
|
position: fixed;
|
|
bottom: 30rpx;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
|
|
.button-code-text {
|
|
padding-left: 16rpx;
|
|
}
|
|
}
|
|
}
|
|
</style>
|
|
<style lang="less">
|
|
|
|
</style>
|