<template> <view class="HomeItem"> <view class="goWorkAll"> <view class="goWorkSelect combination" v-if="actionConfirmSwitch"> <view class="goWorkSelect-head" v-if="actionConfirmType == 1">请选择以下选项可选择多项,必须所有都选择后选择{{tips}}</view> <view class="goWorkSelect-head" v-if="actionConfirmType == 2">请选择以下选项可选择多项,至少选择一项后选择{{tips}}</view> <view class="goWorkSelect-head" v-if="actionConfirmType == 3">请选择以下选项,至少单选一项{{tips}}</view> <view class="goWorkSelect-list scroll"> <checkbox-group @change="checkboxChange" v-if="actionConfirmType == 1 || actionConfirmType == 2"> <label class="goWorkSelect-item relative" v-for="action in actions" :key="action.value"> <view> <checkbox :value="action.value" :checked="action.checked" /> </view> <view>{{action.name}}</view> </label> </checkbox-group> <radio-group @change="checkboxChange" v-if="actionConfirmType == 3"> <label class="goWorkSelect-item relative" v-for="action in actions" :key="action.value"> <view> <radio :value="action.value" :checked="action.checked" /> </view> <view>{{action.name}}</view> </label> </radio-group> </view> </view> <view class="goWorkSelect history" v-if="actionPhotoSwitch"> <view class="goWorkSelect-head">您需要拍摄现场照片才可{{tips}}!</view> <view class="goWorkSelect-list"> <uni-file-picker :auto-upload="false" :limit="3" title="最多选择3张图片" v-model="imageValue" fileMediatype="image" mode="grid" @select="selectFile" @delete="deleteFile"></uni-file-picker> </view> </view> </view> <view class="foot_btn_spe"> <view class="btn1" @click="photographToOther(order)">{{tips}}</view> <view class="btn3" @click="goBack">返回</view> </view> <!-- 填写交接人工号弹窗 --> <selectAccount v-if="hosModels.disjunctor" :disjunctor="hosModels.disjunctor" @ok="hosOk" @cancel="hosCancel"> </selectAccount> </view> </template> <script> import * as commonFun from '../../tools/commonFun.js'; import { pathUrl } from "../../tools/photograph.js"; import selectAccount from "../../components/selectAccount/selectAccount.vue"; import { get, post, webHandle } from "../../http/http.js"; export default { components: { selectAccount, }, data() { return { tips: '', currentIndex: undefined, // 填写交接人工号弹窗model hosModels: { disjunctor: false, }, currentCode: '', //当前拍照使用的科室二维码 currentData: {}, //当前小扫描的工单对象 orderId: undefined, order: {}, // 拍照动作开关 actionPhotoSwitch: false, // 确认动作开关 actionConfirmSwitch: false, // 确认动作模式开关 actionConfirmType: false, // 参数 options: {}, //动作列表 actions: [], //图片列表 imageValue: [], }; }, methods: { // 其他临床服务-运输过程-终点科室是否开通备注填写 isOpenTransportationProcessRemarks(data, accountObj, funName){ const tasktype = data.taskType; console.log(tasktype, data); if(tasktype.associationType.value === 'other' && tasktype.carryingCourses[this.currentIndex].logSwitch && data.gdState.value == 5){ uni.navigateTo({ url: `../../pages/transportationProcessRemarks/transportationProcessRemarks?data=${data ? encodeURIComponent(JSON.stringify(data)) : ''}&accountObj=${accountObj ? encodeURIComponent(JSON.stringify(accountObj)) : ''}¤tCode=${this.currentCode}&funName=${funName}&actions=${this.actions ? encodeURIComponent(JSON.stringify(this.actions)) : ''}&imageValue=${this.imageValue ? encodeURIComponent(JSON.stringify(this.imageValue)) : ''}` }) }else{ commonFun[funName](this, data, accountObj); } }, // 填写交接人工号-确认 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(this.actionPhotoSwitch && this.actionConfirmSwitch){ this.isOpenTransportationProcessRemarks(this.currentData, data, 'uploadToOther'); }else if(this.actionConfirmSwitch){ // 动作 this.isOpenTransportationProcessRemarks(this.currentData, data, 'nextDeptOrder_ss'); }else if(this.actionPhotoSwitch){ // 拍照 this.isOpenTransportationProcessRemarks(this.currentData, data, 'uploadToOther'); } }, // 填写交接人工号-取消 hosCancel() { this.hosModels.disjunctor = false; }, // 填写交接人工号弹窗 showSelectAccount() { this.hosModels = { disjunctor: true, } }, // 拍照-其他 photographToOther(data) { this.currentData = data; let actions = this.actions.filter(v => v.checked); let imageValue = this.imageValue; console.log(actions); console.log(imageValue); if( this.actionConfirmSwitch && ( (this.actionConfirmType == 1 && this.actions.length !== actions.length) || (this.actionConfirmType == 2 && !actions.length) || (this.actionConfirmType == 3 && !actions.length) ) ){ let title = ''; if(this.actionConfirmType == 1){ title = '请选择以下选项可选择多项,必须所有都选择后选择' + this.tips; }else if(this.actionConfirmType == 2){ title = '请选择以下选项可选择多项,至少选择一项后选择' + this.tips; }else if(this.actionConfirmType == 3){ title = '请选择以下选项,至少单选一项' + this.tips; } uni.showToast({ icon: "none", title, duration: 2000 }); return; } if(this.actionPhotoSwitch && !imageValue.length){ uni.showToast({ icon: "none", title: '您需要完成拍照,才可' + this.tips, duration: 2000 }); return; } uni.showLoading({ title: "加载中", mask: true, }); // 其他临床服务 let content; if(this.currentIndex == 0){ content = data.startDept.qrcode; }else if(this.currentIndex == 1){ content = data.endDepts[0].qrcode; } //检验二维码的有效性 post("/dept/scanning", { content, taskTypeId: data.taskType.id, gdState: data.gdState.id, }).then((result) => { this.currentCode = result.code; if (result.state == 200 || result.state == 201) { let accountObj = undefined; if (result.account) { accountObj = { account: result.account, accountName: result.name, accountId: result.id, }; } else { accountObj = undefined; } if(this.actionPhotoSwitch && this.actionConfirmSwitch){ this.isOpenTransportationProcessRemarks(data, accountObj, 'uploadToOther'); }else if(this.actionConfirmSwitch){ // 动作 this.isOpenTransportationProcessRemarks(data, accountObj, 'nextDeptOrder_ss'); }else if(this.actionPhotoSwitch){ // 拍照 this.isOpenTransportationProcessRemarks(data, accountObj, 'uploadToOther'); } } else if (result.state == '0000') { uni.hideLoading(); this.showSelectAccount(); } else { uni.hideLoading(); uni.showToast({ icon: "none", title: result.info || "接口获取数据失败!", }); } }); }, // 返回 goBack() { uni.navigateBack(); }, // 选择动作 checkboxChange: function (e) { let items = this.actions; let values = []; if(this.actionConfirmType == 1 || this.actionConfirmType == 2){ values = e.detail.value || []; }else if(this.actionConfirmType == 3){ values = [e.detail.value]; } for (let i = 0, lenI = items.length; i < lenI; ++i) { const item = items[i] if(values.includes(item.value)){ this.$set(item,'checked',true) }else{ this.$set(item,'checked',false) } } }, // 获取上传状态 selectFile(e) { console.log('选择文件:', e) this.imageValue = this.imageValue.concat(e.tempFiles); }, // 移除 deleteFile(e) { console.log('移除:', e); }, }, onLoad(options) { console.log(options); this.options = options; if(options.order){ options.order = JSON.parse(options.order); this.order = options.order; if(this.order.gdState.value == 4){ this.currentIndex = 0; this.tips = '确认到达'; }else if(this.order.gdState.value == 5){ this.currentIndex = 1; this.tips = '完成工单'; } } if(options.orderId){ this.orderId = options.orderId; } if(options.taskType){ options.taskType = JSON.parse(options.taskType); this.actionConfirmSwitch = options.taskType.carryingCourses[this.currentIndex].actionConfirmSwitch; let actions = options.taskType.carryingCourses[this.currentIndex].actionRemarks || ""; this.actions = actions.split('$').map((v, i) => ({ value: i, name: v, })); this.actionPhotoSwitch = options.taskType.carryingCourses[this.currentIndex].actionPhotoSwitch; this.actionConfirmType = options.taskType.carryingCourses[this.currentIndex].actionConfirmType; } }, }; </script> <style lang="less" scoped> .HomeItem { .foot_btn_spe { width: 100%; position: fixed; bottom: 30rpx; left: 0; line-height: 88rpx; height: 88rpx; text-align: center; display: flex; justify-content: space-between; flex-wrap: wrap; &::after { content: ''; flex: 1; } view { height: 88rpx; width: 48%; margin: 0 1%; background-image: linear-gradient(to right, #72c172, #3bb197); color: #fff; border-radius: 8rpx; font-size: 32rpx; margin-top: 16rpx; } } .login { height: 420rpx; padding: 0 32rpx; padding-top: 164rpx; position: relative; z-index: 999; .savePassword { margin-top: 32rpx; } /deep/ uni-checkbox:not([disabled]) .uni-checkbox-input:hover { border-color: #42b983 !important; } .login_input { margin-top: 32rpx; background-color: #ffffff; height: 72rpx; box-sizing: border-box; padding: 16rpx; } .title { font-size: 36rpx; color: #42b983; text-align: center; } .tips { font-size: 28rpx; color: red; margin-top: 16rpx; } .page_item_btn { height: 88rpx; background-image: linear-gradient(to right, #72c172, #3bb197); border-radius: 8rpx; line-height: 88rpx; color: #fff; font-size: 36rpx; font-weight: 700; margin-top: 64rpx; text-align: center; } } //上班页面 .goWorkAll { height: calc(100vh - 118rpx); overflow-y: auto; display: flex; flex-direction: column; justify-content: space-between; /deep/ .uni-radio-input-checked { background-color: #42b983 !important; border-color: #42b983 !important; } /deep/ .uni-checkbox-input-checked { color: #42b983 !important; } .goWorkSelect { &.history { height: 356rpx; padding-bottom: 16rpx; } &.combination { .goWorkSelect-head {} .goWorkSelect-list {} } .goWorkSelect-head { font-size: 28rpx; padding: 16rpx 0; color: #42b983; border-bottom: 2rpx solid #42b983; text-align: center; } .goWorkSelect-list { padding: 16rpx; .goWorkSelect-item { height: 52rpx; display: flex; align-items: center; border-bottom: 2rpx solid #e5e9ed; padding: 16rpx; &.relative { position: relative; .picker { position: absolute; width: 100%; padding-left: 64rpx; } } button { font-size: 32rpx; height: 52rpx; line-height: 52rpx; margin: 0; margin-left: 16rpx; color: rgb(7, 134, 60); font-weight: 700; } } } } } .goWork { margin: 0 auto 48rpx; width: 240rpx; height: 240rpx; .goWork_btn_E { width: 100%; height: 100%; background: #bee1a7; border-radius: 30%; .goWork_btn_W { width: 75%; height: 75%; background-image: linear-gradient(to right, #72c172, #3bb197); border-radius: 30%; margin: 0 auto; position: relative; top: 12.5%; line-height: 180rpx; color: #fff; font-size: 36rpx; text-align: center; } } } .goWork_text { width: 100%; view { text-align: center; } .goWork_text-p { font-size: 36rpx; margin-bottom: 48rpx; } } .botImg { height: 600rpx; width: 100%; position: fixed; bottom: 0; .img { height: 100%; background: url("../../static/img/BG.png") no-repeat center center; background-size: 100% 100%; } } } </style>