<template> <view class="bloodDetails"> <view class="Scanning_top"> <view class="Scanning_top_icon"> <text class="cubeic-ok icon_transport transport-duigou"></text> </view> <view class="Scanning_top_text"> <view class="text1">扫描成功</view> </view> </view> <view class="page_item_wrap"> <view class="page_item"> <view class="page_item_top"> <view class="page_item_top-inner"> <view class="page_item_top_L"> <text class="L_text">血袋号:{{ bloodDTO.bloodCode||'无' }}</text> </view> <view class="page_item_top_R"> <text class="L_iocn"></text> </view> </view> </view> <view class="page_item_cont"> <view class="page_item_cont_C"> <view class="page_item_cont_title_C"> <text>血液类型</text> <text class="text_big"> <text> {{bloodDTO.type ? bloodDTO.type.name : "无"}} </text> </text> </view> </view> <view class="page_item_cont_C"> <view class="page_item_cont_title_C"> <text>血量</text> <text class="text_big"> <text>{{ bloodDTO.volume?bloodDTO.volume+'ML':'无' }}</text> </text> </view> </view> <view class="page_item_cont_C"> <view class="page_item_cont_title_C"> <text>采血日期</text> <text class="text_big"> <text v-if="bloodDTO.printDate">{{bloodDTO.printDate | formatDate('yyyy-MM-dd hh:mm')}}</text> <text v-else>无</text> </text> </view> </view> <view class="page_item_cont_C"> <view class="page_item_cont_title_C"> <text>有效期至</text> <text class="text_big"> <text v-if="bloodDTO.overDate">{{bloodDTO.overDate | formatDate('yyyy-MM-dd hh:mm')}}</text> <text v-else>无</text> </text> </view> </view> <view class="page_item_cont_C"> <view class="page_item_cont_title_C"> <text>血型</text> <text class="text_big"> <text>{{ bloodDTO.aboType||'无' }}</text> </text> </view> </view> <view class="page_item_cont_C"> <view class="page_item_cont_title_C"> <text>RH(D)</text> <text class="text_big">{{bloodDTO.rhType || '无'}}</text> </view> </view> <view class="page_item_cont_C"> <view class="page_item_cont_title_C"> <text>患者</text> <text class="text_big"> <text>{{ bloodDTO.patientName }}<text v-if="bloodDTO.hosNum">({{ bloodDTO.hosNum }})</text></text> </text> </view> </view> <view class="page_item_cont_C"> <view class="page_item_cont_title_C"> <text>申请科室</text> <text class="text_big"> <text>{{ bloodDTO.applyDeptDTO?bloodDTO.applyDeptDTO.dept:'无' }}</text> </text> </view> </view> </view> <view class="L"></view> <view class="R"></view> </view> <view class="L-l"></view> <view class="R-l"></view> </view> <view class="cube-toolbar-item-wrap" v-show="bloodDTO.id"> <button class="cube-toolbar-item" v-show="orderId && receiveOrder" @click="receiveOrderAndSign()"> 接单并签到 </button> <button class="cube-toolbar-item" v-show="!orderId && buildOrder" @click="buildOrderAndSign()"> 建单并签到 </button> <button class="cube-toolbar-item" v-show="signDeptOrder" @click="signDeptOrderAndSign()"> 指定科室建单 </button> <button class="cube-toolbar-item" @click="goBack()"> 知道了 </button> </view> </view> </template> <script> import { webHandle, post } from "../../http/http.js"; export default { data() { return { options: {}, receiveOrder: false, buildOrder: false, signDeptOrder: false, bloodDTO: {}, //血制品信息 taskTypeConfig: {}, //血制品配置信息 orderId:'',//工单id gotoFlag: true, }; }, methods: { goBack() { uni.navigateTo({ url: "../receiptpage/receiptpage", }); }, // 接单并签到 receiveOrderAndSign() { if (!this.gotoFlag) { return; } this.gotoFlag = false; uni.showModal({ title: "提示", content: "请确认是否接单并签到?", success: (result) => { if (result.confirm) { console.log("用户点击确定"); let postData = { type: 'blood', id: this.bloodDTO.id, orderId: this.orderId }; uni.showLoading({ title: "加载中", mask: true, }); post("/transflow/createOrTakeOrder", postData).then((ress) => { uni.hideLoading(); if (ress.state == 200) { uni.navigateTo({ url: `../scanning_blood_process/scanning_blood_process?orderId=${ress.data.orderId}&bloodDTO=${encodeURIComponent(JSON.stringify(this.bloodDTO))}&scanCount=${ress.data.scanCount}&status=${ress.state}`, }); } else { uni.showToast({ icon: "none", title: ress.msg || "接口获取数据失败!", }); } }); } else if (result.cancel) { console.log("用户点击取消"); } }, }); }, // 建单并签到 buildOrderAndSign() { if (!this.gotoFlag) { return; } this.gotoFlag = false; uni.showModal({ title: "提示", content: "请确认是否建单并签到?", success: (result) => { if (result.confirm) { console.log("用户点击确定"); let postData = { type: 'blood', id: this.bloodDTO.id, }; uni.showLoading({ title: "加载中", mask: true, }); post("/transflow/createOrTakeOrder", postData).then((ress) => { uni.hideLoading(); if (ress.state == 200) { uni.navigateTo({ url: `../scanning_blood_process/scanning_blood_process?orderId=${ress.data.orderId}&bloodDTO=${encodeURIComponent(JSON.stringify(this.bloodDTO))}&scanCount=${ress.data.scanCount}&status=${ress.state}`, }); } else { uni.showToast({ icon: "none", title: ress.msg || "接口获取数据失败!", }); } }); } else if (result.cancel) { console.log("用户点击取消"); } }, }); }, // 指定科室建单 signDeptOrderAndSign(){ uni.showModal({ title: "提示", content: "请选择血制品要送达的科室!", success: (result) => { if (result.confirm) { console.log("用户点击确定"); uni.navigateTo({ url: `../search/search?type=bloodSelect&bloodDTO=${encodeURIComponent(JSON.stringify(this.bloodDTO))}`, }); } else if (result.cancel) { console.log("用户点击取消"); } }, }); }, //获取血制品信息及其关联的工单信息 scanInfo(value, type) { uni.showLoading({ title: "加载中", mask: true, }); post("/common/common/getDictionary", {"type":"list","key":"ttconfig_sign_type"}).then((res1) => { post("/transflow/scanInfo", { type: 'blood', [type]: value, }).then((res) => { uni.hideLoading(); if (res.state == 200) { this.bloodDTO = res.data.dto || {}; this.orderId = res.data.orderId; console.log(this.orderId); this.taskTypeConfig = res.data.taskTypeConfig; let sign_ids = this.taskTypeConfig.signTypeIds?this.taskTypeConfig.signTypeIds.split(','):[]; console.log(sign_ids); this.receiveOrder = false; this.buildOrder = false; this.signDeptOrder = false; sign_ids.forEach(v => { let obj = res1.find(vv => vv.id == v); console.log(obj); // 接单 if(obj && obj.value == 1){ this.receiveOrder = true; } // 建单 if(obj && obj.value == 2){ this.buildOrder = true; } // 指定科室建单 if(obj && obj.value == 3){ this.signDeptOrder = true; } }) } else { uni.showToast({ icon: "none", title: res.msg || "接口获取数据失败!", }); } }); }); }, }, onShow() { this.gotoFlag = true; }, onLoad(options) { console.log(options); this.options = options; if (this.options.qrcode) { this.scanInfo(this.options.qrcode, 'code'); }else if (this.options.id) { this.scanInfo(this.options.id, 'id'); } // #ifdef APP-PLUS webHandle("no", "app"); // #endif // #ifdef H5 webHandle("no", "wx"); // #endif }, }; </script> <style lang="less" scoped> .bloodDetails { background-color: rgb(249, 250, 251); .Scanning_top { .Scanning_top_icon { width: 140rpx; height: 140rpx; margin: 0 auto; border-radius: 50%; line-height: 140rpx; text-align: center; .cubeic-ok { font-size: 140rpx; color: #35b34a; } .cubeic-close { font-size: 140rpx; color: #ff3b53; } } .Scanning_top_text { .text1 { margin-top: 40rpx; font-size: 48rpx; text-align: center; } } } .page_item_wrap { position: relative; margin-top: 32rpx; .page_item { margin-top: 16rpx; margin-bottom: 124rpx; background: #fff; border-radius: 8rpx; margin: 0 20rpx; border: 2rpx solid #e5e9ed; position: relative; overflow: hidden; padding: 0 16rpx; .L { width: 40rpx; height: 40rpx; border-radius: 50%; background: #f9fafb; position: absolute; left: -20rpx; top: 68rpx; border: 2rpx solid #e5e9ed; } .R { width: 40rpx; height: 40rpx; border-radius: 50%; background: #f9fafb; position: absolute; float: right; right: -20rpx; top: 68rpx; border: 2rpx solid #e5e9ed; } .page_item_top { height: 88rpx; border-bottom: 2rpx dashed #e5e9ed; padding: 0 16rpx; .page_item_top-inner { display: flex; justify-content: space-between; align-items: center; height: 100%; .page_item_top_L { .L_text { font-size: 32rpx; font-weight: 700; } } .page_item_top_R { font-size: 32rpx; .L_iocn { color: rgb(7, 134, 60); font-size: 36rpx; font-weight: 700; } } } } .page_item_cont { min-height: 180rpx; padding: 0 16rpx; text-align: left; position: relative; .text_big { width: 50%; text-align: right; font-size: 32rpx; font-weight: 700; text { font-weight: 700; line-height: 1.5; } } .line { height: 20rpx; width: 2rpx; border-left: 2rpx solid #e5e9ed; position: absolute; top: 82rpx; left: 40rpx; } .page_item_cont_T { padding-top: 28rpx; font-size: 28rpx; .page_item_cont_title { height: 100%; font-size: 32rpx; display: flex; justify-content: space-between; } } .page_item_cont_B { padding-top: 28rpx; margin-bottom: 28rpx; .page_item_cont_title { font-size: 32rpx; display: flex; justify-content: space-between; align-items: center; } } .page_item_cont_C { margin-bottom: 28rpx; .page_item_cont_title_C { font-size: 32rpx; display: flex; justify-content: space-between; align-items: center; &>text{ flex-shrink: 0; } } } #infos { display: none; } } } .L-l { width: 2rpx; height: 40rpx; background: #f9fafb; position: absolute; left: 20rpx; top: 72rpx; } .R-l { width: 2rpx; height: 40rpx; background: #f9fafb; position: absolute; right: 20rpx; top: 72rpx; } } .cube-toolbar-item-wrap { display: flex; position: fixed; left: 0; bottom: 20rpx; width: 100%; .cube-toolbar-item { flex: 1; margin: 0 1%; height: 68rpx; line-height: 68rpx; border-radius: 8rpx; background: linear-gradient(to right, #72c172, #3bb197); font-size: 28rpx; color: #fff; text-align: center; } } .btn-wrap { display: flex; justify-content: space-between; position: fixed; left: 20rpx; bottom: 160rpx; } .cube-toolbar-item1 { width: 350rpx; height: 68rpx; line-height: 68rpx; border-radius: 8rpx; margin: 0 5rpx; background: linear-gradient(to right, #72c172, #3bb197); font-size: 36rpx; color: #fff; text-align: center; } } </style>