<template> <view class="pharmacyDetails" v-show="drugsBagDto.id"> <view class="pharmacyDetails_title">请领信息</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">请领单:{{ drugsBagDto.packid }}</text> </view> <view class="page_item_top_R"> <text class="L_iocn">{{ drugsBagDto.drugsState ? drugsBagDto.drugsState.name : "" }}</text> </view> </view> </view> <view class="page_item_cont"> <view class="page_item_cont_B"> <view class="page_item_cont_title"> <text>记账时间</text> <text class="text_big"> <text>{{ drugsBagDto.creatTime }}</text> </text> </view> </view> <view class="page_item_cont_C"> <view class="page_item_cont_title_C"> <text>请领科室</text> <text class="text_big"> <text>{{ drugsBagDto.target ? drugsBagDto.target.dept : "" }}</text> </text> </view> </view> <view class="page_item_cont_C" v-show="workOrder.id"> <view class="page_item_cont_title_C"> <text>单号</text> <text class="text_big"> <text>{{ workOrder.gdcode }}</text> </text> </view> </view> <view class="page_item_cont_C" v-show="workOrder.id"> <view class="page_item_cont_title_C"> <text>状态</text> <text class="text_big"> <text>{{ workOrder.gdState ? workOrder.gdState.name : "" }}</text> </text> </view> </view> <view class="page_item_cont_C" v-show="workOrder.id"> <view class="page_item_cont_title_C"> <text>服务人员</text> <text class="text_big"> <text>{{ workOrder.worker ? workOrder.worker.name : "" }}</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> <button class="cube-toolbar-item" v-show="isShowBtn" @click="buildOrderAndSign()"> 接单并签到 </button> <button class="cube-toolbar-item" v-show="!isShowBtn" @click="goBack()"> 知道了 </button> <!-- 弹窗 --> <showModel :title="models.title" :icon="models.icon" :disjunctor="models.disjunctor" :content="models.content" @ok="ok" @cancel="cancel" :operate="models.operate"></showModel> <!-- 填写交接人账号弹窗 --> <selectAccount v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk" @cancel="hosCancel"> </selectAccount> </view> </template> <script> import selectAccount from "@/components/selectAccount/selectAccount"; import { webHandle, post } from "../../http/http.js"; export default { data() { return { // 弹窗model models: { disjunctor: false, }, drugsBagDto: {}, //药包信息 workOrder: {}, //药包关联的工单信息 currentCode: "", //当前小扫描的科室二维码 currentData: {}, //当前小扫描的工单对象 // 填写交接人账号弹窗model hosModels: { disjunctor: false, }, grabOrders: null, gotoFlag: true, }; }, components: { selectAccount, }, computed: { isShowBtn() { if (this.workOrder.gdState) { let state = this.workOrder.gdState.value; // 待抢单,待接单,待到达,待送达 return state == 2 || state == 3 || state == 4 || state == 5; } else { return false; } }, }, methods: { goBack(){ uni.navigateTo({ url: "../receiptpage/receiptpage", }); }, // 如果不是患者陪检或患者转运或其他 // 科室签到 nextDeptOrder_s(data, accountObj) { console.log(data, accountObj); let ids = []; let id = data.id; ids.push(id); let code = ""; let postData = { ids, }; if (accountObj) { postData.handover = [accountObj.accountId]; } if (this.grabOrders) { postData.grabOrders = this.grabOrders; } if (this.currentCode) { code = this.currentCode; // 科室签到 post("/workerOrder/orderSign/" + code, postData).then((res) => { uni.hideLoading(); if (res.status == 200) { // 跳转到扫描科室 // type1: res.type, //type类型 // id: data.id, //工单ID // deptCode: code, //二维码 // dept: res.dept //科室名称 let urlObj = { url: `/pages/scanning_code/scanning_code?type=${ data.taskType.associationType.value }&type1=${res.type}&id=${data.id}&deptCode=${code}&dept=${ res.dept }&accountObj=${encodeURIComponent(JSON.stringify(accountObj))}`, }; if (this.grabOrders) { urlObj.url += `&grabOrders=666`; } uni.navigateTo(urlObj); } else { uni.navigateTo({ url: `/pages/scanning_Result/scanning_Result?type=${data.taskType.associationType.value}&type1=${res.type}&id=${data.id}&status=600&msg=${res.msg}&isKs=1`, }); } }); } }, // 签到 orderSign(data, type, ress1) { this.currentData = data; console.log(data, "data"); uni.showLoading({ title: "加载中", mask: true, }); //检验二维码的有效性 post("/dept/scanning", { content: ress1, taskTypeId: data.taskType.id, gdState: data.gdState.id, }).then((result) => { this.currentCode = result.code; if (result.state == 200 || result.state == 201) { if (result.account) { if (type == 2) { this.nextDeptOrder_s(this.currentData, { account: result.account, accountName: result.name, accountId: result.id, }); } } else { if (type == 2) { this.nextDeptOrder_s(this.currentData); } } } else if (result.state == "0000") { uni.hideLoading(); this.showSelectAccount(); } else { uni.hideLoading(); uni.showToast({ icon: "none", title: "请求失败!", }); } }); }, // 填写交接人账号-确认 hosOk(data) { console.log(data); const { accountName, account, accountId } = data; if (!accountName && !account) { //没有填写交接人 uni.showModal({ title: "提示", content: "请填写交接人账号!", showCancel: false, success: function(res) { if (res.confirm) { console.log("用户点击确定"); } else if (res.cancel) { console.log("用户点击取消"); } }, }); return; } else if ((!accountName && account) || (accountName && !account)) { //没有填写交接人 uni.showModal({ title: "提示", content: "请填写正确的交接人账号!", showCancel: false, success: function(res) { if (res.confirm) { console.log("用户点击确定"); } else if (res.cancel) { console.log("用户点击取消"); } }, }); return; } this.hosModels.disjunctor = false; let associationTypeValue = this.currentData.taskType.associationType.value; console.log(associationTypeValue); if ( associationTypeValue !== "patientTransport" && associationTypeValue !== "inspect" && associationTypeValue !== "other" ) { this.nextDeptOrder_s(this.currentData, data); } }, // 填写交接人账号-取消 hosCancel() { this.hosModels.disjunctor = false; }, // 填写交接人账号弹窗 showSelectAccount() { this.hosModels = { title: "填写交接人账号", disjunctor: true, }; }, // 接单 commonBuild() { let postData = { orderId: this.workOrder.id, }; uni.showLoading({ title: "加载中", mask: true, }); post("/workerOrder/drugBagReceiving", postData).then((ress) => { uni.hideLoading(); if (ress.status == 200) { this.grabOrders = ress.grabOrders ? ['666'] : null; this.orderSign(ress.workOrder, 2, ress.content); } else { uni.showToast({ icon: "none", title: "请求失败!", }); } }); }, ok() { this.models.disjunctor = false; this.commonBuild(); }, // 取消 cancel() { this.models.disjunctor = false; }, // 接单并签到 buildOrderAndSign() { if (!this.gotoFlag) { return; } this.gotoFlag = false; if (this.workOrder.gdState) { let state = this.workOrder.gdState.value; if (state == 4 || state == 5) { //待到达,待送达 this.models = { disjunctor: true, title: "提示", content: "您想接单的药品,工单正在执行中。请确认是否继续接单签到?", icon: "warn", operate: { ok: "确定", cancel: "取消", }, }; } else { // 待接单 待抢单 this.commonBuild(); } } }, //获取药包信息及其关联的工单信息 queryDrugsBagForId(drugsBagId) { uni.showLoading({ title: "加载中", mask: true, }); post("/workerOrder/queryDrugsBagForId", { drugsBagId, }).then((res) => { uni.hideLoading(); if (res.status == 200) { this.drugsBagDto = res.drugsBagDto || {}; this.workOrder = res.workOrder || {}; } else { uni.showToast({ icon: "none", title: "请求失败", }); } }); }, }, onShow() { this.gotoFlag = true; }, onLoad(options) { console.log(options); let { drugsBagId } = options; if (drugsBagId) { this.queryDrugsBagForId(drugsBagId); } // this.infoDATA = JSON.parse(options.infoDATA); //详细信息 // console.log(this.infoDATA) // this.res["status"] = options.status; //状态码 // this.res["msg"] = options.msg; //返回的信息 // #ifdef APP-PLUS webHandle("no", "app"); // #endif // #ifdef H5 webHandle("no", "wx"); // #endif }, }; </script> <style lang="less" scoped> .pharmacyDetails { background-color: rgb(249, 250, 251); padding-top: 10%; .pharmacyDetails_title { font-size: 46rpx; font-weight: 550; 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; max-height: 424rpx; padding: 0 16rpx; text-align: left; position: relative; .text_big { 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; } } #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 { width: 710rpx; height: 68rpx; line-height: 68rpx; position: fixed; left: 20rpx; bottom: 160rpx; border-radius: 8rpx; background: linear-gradient(to right, #72c172, #3bb197); font-size: 36rpx; 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>