<template> <view class="Scanning"> <view class="Scanning_top footerOtherMargin"> <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 class="text2" v-if="queryObj.content && queryObj.type !== 'specimenPlan'" v-html="queryObj.content"></view> <view class="text2" v-if="!queryObj.content"> 您已在 <text style="font-weight: 600; color: rgb(73, 184, 86)" v-if=" infoType == 'plan-spe-ddd-1' || infoType == 'plan-spe-ddd-2' || infoType == 'spe-ddd-1' || infoType == 'spe-ddd-2' || infoType == 'drug-ddd-2' || infoType == 'jp-ddd-2' ">{{ infoDATA.startDept.dept }}</text> <text style="font-weight: 600; color: rgb(73, 184, 86)" v-if="infoType == 'drug-dsd-2' || infoType == 'jp-dsd-2'">{{ infoDATA.endDepts[0].dept }}</text> <text style="font-weight: 600; color: rgb(73, 184, 86)" v-if=" infoType == 'plan-spe-dsd-2' || infoType == 'plan-spe-dsd-3' || infoType == 'plan-spe-dsd-1' || infoType == 'spe-dsd-2' || infoType == 'spe-dsd-3' || infoType == 'spe-dsd-1' || infoType == 'ins-zxz-1' || infoType == 'ins-dsd-1' || infoType == 'trans-dsd-1' || (infoType == 'qt-ddd-1' && infoDATA.gdState.value == '5') || infoDATA.gdState.value == '6' || infoDATA.gdState.value == '8' ">{{ DEPT }}</text> <text>扫描<text style="color: #ff3b53">{{ speNum }}</text> 个标本, 确认是否继续配送或是完成工单。</text> </view> <template v-if="queryObj.type === 'specimenPlan'"> <table class="speTable"> <tr> <td>科室名称</td> <td>数量</td> <td>状态</td> </tr> <tr v-for="spe in infoList" :key="spe.deptId"> <td class="maxWidth">{{spe.deptName}}</td> <td>{{spe.speNum}}</td> <td> <text v-if="spe.deptState=== 'ysd'" class="green">已到达</text> <text v-if="spe.deptState=== 'wsd'" class="red">未到达</text> </td> </tr> </table> </template> </view> </view> <view class="foot_btn1 footerPadding"> <view class="btn1" @click="Scanning_again()"> 继续配送 </view> <view class="btn2" @click="Scanning_complete(dataId)" v-if=" infoType == 'plan-spe-ddd-1' || infoType == 'plan-spe-dsd-1' || infoType == 'spe-ddd-1' || infoType == 'spe-dsd-1' "> 完成工单 </view> <view class="btn2" @click="Scanning_complete1(dataId)" v-if=" infoType == 'plan-spe-ddd-2' || infoType == 'plan-spe-dsd-2' || infoType == 'plan-spe-dsd-3' || infoType == 'spe-ddd-2' || infoType == 'spe-dsd-2' || infoType == 'spe-dsd-3' "> 完成工单 </view> </view> <!-- 弹窗 --> <showModel :title="models.title" :icon="models.icon" :disjunctor="models.disjunctor" :content="models.content" @ok="ok" @cancel="cancel" :operate="models.operate"></showModel> <!-- 弹窗 --> <showModel :title="models1.title" :icon="models1.icon" :disjunctor="models1.disjunctor" :content="models1.content" @ok="ok1" @cancel="cancel1" :operate="models1.operate"></showModel> </view> </template> <script> import showModel from "../../components/showModel/showModel.vue"; import { get, post, SM, webHandle } from "../../http/http.js"; export default { data() { return { infoList:[], // 弹窗model models: { disjunctor: false, }, // 弹窗model models1: { disjunctor: false, }, wcId: [], //完成工单id modelFlag: "", //弹窗标识 infoDATA: [], infoType: "", DEPTCode: "", DEPT: "", dataId: "", speNum: 0, queryObj: {}, //路由传递过来的参数 }; }, methods: { // 获取标本轮巡核对信息 getInfo() { uni.showLoading({ title: "加载中", mask: true, }); let postData = { uuid: this.dataId[0] }; post(`/api/getDeptSpecimensNum`, postData).then((res) => { uni.hideLoading(); if (res.status == 200) { this.infoList = res.data; } else { uni.showToast({ icon: "none", title: res.msg || "接口获取数据失败!", }); } }); }, // 继续配送 Scanning_again(id) { this.models1 = { disjunctor: true, title: "提示", content: `是否确定<span class="red">继续配送</span>?`, icon: "warn", operate: { ok: "确定", cancel: "取消", }, }; }, // 确定 ok1() { this.models1.disjunctor = false; uni.navigateTo({ url: "../receiptpage/receiptpage", }); }, // 取消 cancel1() { this.models1.disjunctor = false; }, // 确定 ok() { this.models.disjunctor = false; uni.showLoading({ title: "加载中", mask: true, }); if (this.modelFlag == "complete1") { //一对多、多对多完成工单 let data = { type: this.infoType, ids: this.wcId, }; let id = this.wcId; if (this.queryObj.type === "specimenPlan") { //标本轮巡 post("/workerOrder/finishPlanSpes", data).then((res) => { uni.hideLoading(); if (res.status == 200) { uni.navigateTo({ url: `../scanning_orderSign/scanning_orderSign?type=${ this.queryObj.type }&type1=${this.queryObj.type1}&deptCode=${ this.queryObj.code }&id=${encodeURIComponent(JSON.stringify(id))}`, }); } else { uni.showToast({ icon: "none", title: res.msg || "接口获取数据失败!", }); } }); } else { post("/workerOrder/finishSpes", data).then((res) => { uni.hideLoading(); if (res.status == 200) { uni.navigateTo({ url: `../scanning_orderSign/scanning_orderSign?type=${ this.queryObj.type }&type1=${this.queryObj.type1}&deptCode=${ this.queryObj.code }&id=${encodeURIComponent(JSON.stringify(id))}`, }); } else { uni.showToast({ icon: "none", title: res.msg || "接口获取数据失败!", }); } }); } } else if (this.modelFlag == "complete") { //一对一完成工单 let id = this.wcId; post("/workerOrder/finishSpeOrder", id).then((res) => { uni.hideLoading(); if (res.status == 200) { uni.navigateTo({ url: `../scanning_orderSign/scanning_orderSign?type=${ this.queryObj.type }&type1=${this.queryObj.type1}&deptCode=${ this.queryObj.code }&id=${encodeURIComponent(JSON.stringify(id))}`, }); } else { uni.showToast({ icon: "none", title: res.msg || "接口获取数据失败!", }); } }); } }, // 取消 cancel() { this.models.disjunctor = false; }, //一对多、多对多完成工单 Scanning_complete1(id) { this.wcId = id; this.modelFlag = "complete1"; //弹窗标识 this.models = { disjunctor: true, title: "提示", content: `是否确定标本<span class="red">配送完成</span>?`, icon: "warn", operate: { ok: "确定", cancel: "取消", }, }; }, //一对一完成工单 Scanning_complete(id) { this.wcId = id; this.modelFlag = "complete"; //弹窗标识 this.models = { disjunctor: true, title: "提示", content: `是否确定标本<span class="red">配送完成</span>?`, icon: "warn", operate: { ok: "确定", cancel: "取消", }, }; }, }, onLoad(options) { console.log(options, 'options') this.queryObj = options; let id = JSON.parse(options.id); this.dataId = id; this.infoType = options.type1; this.DEPTCode = options.deptCode; this.DEPT = options.dept; if (options.speNum) { this.speNum = options.speNum; } if(this.queryObj.type === 'specimenPlan'){ this.getInfo(); } // #ifdef APP-PLUS webHandle("no", "app"); // #endif // #ifdef H5 webHandle("no", "wx"); // #endif }, }; </script> <style lang="less" scoped> .Scanning { padding: 0 20rpx; // 标本轮巡核对 start .speTable { margin: 32rpx 0; width: 100%; border-collapse: collapse; .green{ color: green; } .red{ color: red; } .maxWidth{ width: 60%; } td{ border: 2rpx solid #666; } } // 标本轮巡核对 end .Scanning_top { height: 340rpx; .Scanning_top_icon { width: 140rpx; height: 140rpx; margin: 0 auto; margin-top: 36rpx; border-radius: 50%; line-height: 140rpx; .cubeic-ok { font-size: 140rpx; color: #35b34a; } } .Scanning_top_text { text-align: center; .text1 { margin-top: 40rpx; font-size: 48rpx; } .text2 { margin-top: 16rpx; font-size: 36rpx; } } } .page_item { margin-top: 16rpx; margin-bottom: 124rpx; min-height: 356rpx; background: #fff; border-radius: 8rpx; overflow: hidden; padding: 0 16rpx; border: 2rpx solid #e5e9ed; .L { width: 40rpx; height: 40rpx; border-radius: 50%; background: #f9fafb; position: relative; left: -50rpx; top: 66rpx; } .R { width: 40rpx; height: 40rpx; border-radius: 50%; background: #f9fafb; position: relative; float: right; right: -50rpx; top: 26rpx; } .starting { width: 50rpx; height: 50rpx; color: #fff; background: #49b856; display: inline-block; border-radius: 50%; text-align: center; line-height: 46rpx; font-size: 32rpx; margin-right: 6rpx; } .End { width: 50rpx; height: 50rpx; color: #fff; background: #39b199; display: inline-block; border-radius: 50%; text-align: center; line-height: 46rpx; font-size: 32rpx; margin-right: 6rpx; } .page_item_top { height: 86rpx; border-bottom: 2rpx dashed #e5e9ed; padding: 0 16rpx; .page_item_top_L { height: 100%; float: left; line-height: 88rpx; .emergencys { background: #ff3b53 !important; width: 124rpx !important; } .emergency { background: #ff3b53 !important; } .emergency1 { background: #49b856 !important; } .page_item_cont_start { text-align: center; height: 44rpx; width: 104rpx; line-height: 44rpx; border-radius: 8rpx; background: #49b856; color: #fff; display: inline-block; } .L_time { color: #6cc076; font-size: 32rpx; } .L_text { font-size: 32rpx; display: inline-block; font-weight: 700; } } .page_item_top_R { height: 60rpx; float: right; padding-top: 20rpx; font-size: 32rpx; position: absolute; right: 50rpx; .L_iocn { display: inline-block; height: 52rpx; line-height: 48rpx; 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; position: absolute; right: 16rpx; font-weight: 700; margin-top: 10rpx; } .text_big2 { font-size: 32rpx; position: absolute; right: 16rpx; font-weight: 700; } .line { height: 20rpx; width: 2rpx; border-left: 2rpx solid #e5e9ed; position: absolute; top: 82rpx; left: 40rpx; } .lines { height: 40%; width: 2rpx; border-left: 2rpx solid #e5e9ed; position: absolute; top: 23%; left: 36rpx; } .page_item_cont_T { padding-top: 28rpx; font-size: 28rpx; .page_item_cont_title { height: 100%; font-size: 32rpx; } } .page_item_cont_B { padding-top: 28rpx; margin-bottom: 28rpx; .page_item_cont_title { height: 60rpx; font-size: 32rpx; } .page_item_cont_title1 { height: 60rpx; line-height: 60rpx; font-size: 32rpx; padding-left: 64rpx; } } } .page_item_foot { border-top: 2rpx dashed #e5e9ed; border-bottom: 2rpx dashed #e5e9ed; padding: 28rpx 16rpx; text-align: left; .page_item_foot_text { font-size: 32rpx; margin-bottom: 20rpx; .text1 { color: rgb(102, 102, 102); } .text2 { float: right; font-weight: 700; } } .text_padd { padding: 0 10% 0 10%; } } #infos { display: none; } .page_item_infos { padding-bottom: 20rpx; border-bottom: 2rpx dashed #e5e9ed; .page_item_info2 { text-align: left; line-height: 60rpx; font-size: 32rpx; padding-left: 16rpx; .page_item_foot_text { font-size: 32rpx; margin-bottom: 20rpx; .text1 { color: rgb(102, 102, 102); } .text2 { float: right; font-weight: 700; } } } } } .foot_btn1 { position: fixed; bottom: 0; right: 20rpx; left: 20rpx; line-height: 66rpx; height: 100rpx; border-top: 2rpx solid #e5e9ed; background: #f9fafb; text-align: center; view { height: 66rpx; width: 45%; background-image: linear-gradient(to right, #72c172, #3bb197); color: #fff; border-radius: 8rpx; font-size: 32rpx; margin-top: 16rpx; } .btn1 { float: left; } .btn2 { float: right; } } } </style>