耀实惠小程序
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.
 
 
 

446 lines
13 KiB

<template>
<view class="confirm-subscribe flex-1">
<view class="confirm-subscribe-item">
<select-drug-user v-if="address" :DrugInfo='address' :type="2" ></select-drug-user>
</view>
<view class="confirm-subscribe-item">
<view class="flex align-start font-30 font-weight-bold ">
<text class="text-red">*</text> <text class="text-black font-30">线下已确诊疾病</text>
</view>
<view class="font-24 text-grey">
(*请根据线下就诊情况确认或选择确诊疾病)
</view>
<view class="flex align-center flex-wrap m-b-30">
<view
v-for="(item, index) in diseaseList"
@click="selectDisease(item, index)"
:key="index"
:class="{'confirm-subscribe-item-tag--active': new Set(selectList).has(item)}"
class="confirm-subscribe-item-tag flex align-center justify-center font-24 m-r-16 m-t-26"
>
{{ item }}
</view>
<view class="confirm-subscribe-item-tag flex align-center justify-center font-24 m-t-26" @click="show = true">
+添加疾病
</view>
</view>
<view class="flex justify-between align-center m-t-20 m-b-30 font-30 font-weight-bold">
<text>确认服用过该药且无禁忌症及不良反应</text>
<u-switch v-model="checked"></u-switch>
</view>
<view class="flex flex-column justify-start ">
<text class=" font-30 font-weight-bold m-t-20 m-b-20">处方/病历/检查报告(选填)</text>
<text class=" font-28 m-b-10" style="color: #AFAFAF;">您上传的病例资料将为医生开具处方提供参考</text>
<view class="hint_pic">
<u-upload ref="uUpload3"
:header="headerInfo"
:action="upload_img"
:custom-btn="true"
image-mode="none"
@on-remove="closeImg"
@on-success="onSuccess"
@on-error="onErrorInfo"
max-count="1" width="281" height="192" >
<view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">
<image :src="form.hintImage?form.hintImage:(IMG_URL+'upLoad.png')" mode=""></image>
</view>
</u-upload>
</view>
</view>
</view>
<view class="confirm-subscribe-footer position-fixed flex align-center justify-center">
<u-button type="primary" shape="circle" @click="confirm">预约</u-button>
</view>
<u-popup v-model="show" mode="bottom" height="50vh">
<view class="p-20">
<u-search placeholder="请输入要添加的疾病" v-model="keyword" height="80" @search="offlinediagnosisList(1)" @custom="offlinediagnosisList(1)"></u-search>
</view>
<scroll-view scroll-y class="confirm-subscribe-scroll" @scrolltolower="illnessList()">
<view class="text-center p-t-20 font-28 text-black" v-if="showList.length == 0">
未搜索到该疾病
</view>
<view class="p-l-20 p-r-20">
<view class="confirm-subscribe-scroll-item p-t-20 p-b-20" v-for="item in showList" :key="item.id" @click="handleDisease(item)">
{{item.name}}
</view>
</view>
</scroll-view>
</u-popup>
</view>
</template>
<script>
import { IMG_URL } from '@/env.js';
export default {
data() {
return {
IMG_URL,
show: false,
diseaseList: [],
selectList: [],
current: '',
keyword: '',
goodsId: '', //商品id
address: null ,// 用药人
drugUserInfo: null,
type: '',
pageNo:1,
pageSize:10,
total: null,
isLock: true ,//锁
isSituation: null,
num: '',
price: '',
goodSkuParam: '',
prescriptionId: null,
addressId: null,
orderType: null,
preventionId: null, //防疫id
// 添加疾病
showList: [],
checked: false,
// 图片
upload_img: '',
href: 'api/info/upload',
headerInfo: {
"content-type": "application/x-www-form-urlencoded",
"X-Access-Token": ''
},
imgUpload: '' , // 上传的图片地址
imgUploadShow: '', // 拍方抓药
createOrderType: '',
payType: '',
isZone: '',
patterId:''
}
},
onLoad(options) {
this.upload_img = this.$upload_img;
console.log(4444444,options)
this.payType = options.payType;
this.createOrderType = options.createOrderType;
this.goodsId = options.goodsId;
this.addressId = options.addressId;
this.type = options.type;
this.isSituation = options.isSituation
this.num = options.num;
this.price = options.price;
this.imgUploadShow = options.imgUploadShow;
this.goodSkuParam = options.goodSkuParam;
this.prescriptionId = options.prescriptionId;
this.preventionId = options.preventionId;
this.orderType = options.orderType;
this.isZone = options.isZone;
this.patterId = options.patterId == null?'':options.patterId;
if(options.medicineMan) {
this.address = JSON.parse(options.medicineMan);
}
console.log(5555,this.patterId)
this.offlinediagnosisList();
// 获取上传图片需要的信息
let token = uni.getStorageSync("__user_token");
this.headerInfo["X-Access-Token"] = token;
this.getGoodsdetail(this.goodsId);
},
methods: {
// 商品详情
getGoodsdetail(id){
uni.showLoading();
this.$api('getGoodsdetail',{id})
.then(res => {
let { code, result, message } = res;
uni.hideLoading();
if(code == 200) {
const list = result.disease?result.disease.split(","): []
console.log(list)
list.forEach(item => {
this.diseaseList.push(item)
})
}else {
let tips = message.indexOf('操作失败') > -1 ? '商品不存在' : message
this.$Toast(tips);
}
}).catch(err => {
uni.hideLoading();
this.$Toast(err.message)
})
},
// 图片上传成功
onSuccess(data){
this.imgUpload = data.result
},
// 移除图片
closeImg() {
this.imgUpload = ''
},
// token 失效
onErrorInfo(data) {
console.log(data)
if(data.code == 401){
this.$tools.navigateTo({
url: '/pages/login/login'
})
}
},
// 下拉刷新
illnessList() {
if(this.isLock) {
if(this.total !== null && this.pageNo * this.pageSize >= this.total){
this.isLock = false;
this.$Toast('没有更多数据了哦!');
setTimeout(()=>{
this.isLock = true;
},3000)
return
}
this.pageNo+=1;
this.getRightListGoods();
}
},
// 根据商品id获取地址
selectUser () {
this.$tools.navigateTo({
url: `/pagesA/my_other_list/prescription/select_medicine_man/index?type=${this.type}&goodsId=${this.goodsId}`
});
},
// 线下确诊疾病 -> 点击添加的疾病
offlinediagnosisList(index=0) {
// index 0 为普通列表 1为搜素
const params = {
pageNo: this.pageNo,
pageSize: this.pageSize,
}
if(index == 1){
params.name = this.keyword
delete params.pageNo
}
uni.showLoading();
this.$api('offlinediagnosisList',params).then(res => {
let { code, result, message} = res;
if(code == 200) {
if(this.total == null) {
this.total = result.total
}
if(index == 1){
this.showList = result.records
}else{
this.showList = this.showList.concat(result.records)
}
uni.hideLoading()
}else {
uni.hideLoading()
this$Toast(message)
}
}).catch(err => {
uni.hideLoading()
this$Toast(err.message)
})
},
// 预约
confirm () {
console.log(this.address)
console.log(this.createOrderType)
const params = {
userId: this.address.id,//用药人标识
goodId: this.goodsId,
confirmatoryDiseaseLabel: this.selectList.toString(), // 确证疾病标签
isAdverse: this.checked?1:0, //1有不良反应
casePic: this.imgUpload, //病例图片
paterId: this.patterId
// caseText: , // 病例信息
}
if(params.confirmatoryDiseaseLabel == '') {
this.$Toast('请选择疾病标签');
return
}
const that = this
this.$api('offlineAdd',params).then(res => {
let { code, result, message} = res;
if(code == 200) {
// 兑购2 拼团1
if(this.createOrderType === 'shoppingCart'){
this.addCart(result)
}else if(this.createOrderType === 'confirm') {
this.setOrder(result.id)
}else {
that.addCart(result);
}
}else {
this.$Toast(message)
}
}).catch(err => {
this.$Toast(err.message)
})
},
// 创建订单
setOrder(id){
const params = {type: this.payType,prescriptionId: this.address.id , offlineInfoId: id, id: this.goodsId, goodsPrice: this.price, goodsNum: this.num, goodsSku: this.goodSkuParam, orderType: this.orderType,paterId: this.patterId}
if(this.preventionId){
params.preventionId = this.preventionId
}
this.$api('teamCreateOrder', params)
.then(res => {
uni.hideLoading()
let { code, message, result } = res
if (code === 200) {
this.$tools.navigateTo({
url: `/pagesC/confirmOrder/confirmOrder?ids=${result.order.id}&orderType=${this.orderType}&payType=${this.payType}&isZone=${this.isZone}`
})
}else if(res.code === 902) {
// 防疫药
uni.showModal({
title: res.message,
success: (res) => {
console.log(res)
if(res.confirm) {
uni.navigateTo({
url: `/pagesB/epidemicPrevention/index?goodsId=${this.goodsId}&orderType=${this.orderType}&num=${this.num}&price=${this.price}&goodSkuParam=${this.goodSkuParam}&prescriptionId=${this.address.id}&medicineMan=${JSON.stringify(this.address)}&createOrderType=${this.createOrderType}&payType=${this.payType}&offlineInfoId=${id}`
})
}
}
})
}else {
this.$Toast(message)
}
})
},
// 加入购物车
addCart(result) {
console.log(this.address)
// type: 2,
const params = {offlineInfoId: result.id ,id: this.goodsId, num: this.num, price: this.price, goodSkuParam: this.goodSkuParam, prescriptionId: this.address.id,paterId: this.patterId }
if(this.preventionId) {
params.preventionId = this.preventionId
}
this.$api('addShoppingCart', params)
.then(res => {
if (res.code === 200) {
uni.$emit('isUpdataShowToast')
this.$Toast(res.message)
let pages_url = getCurrentPages();
const index = pages_url.findIndex(item => {
return item.route == 'pagesC/goodsInfo/goodsInfo'
});
const length = pages_url.length
// 需要返回的层数
const backIndex = length - (index+1);
uni.navigateBack({
delta: backIndex
})
// setTimeout(() => {
// this.$tools.switchTab({
// url: '/pages/shoppingCart/shoppingCart'
// }, 800)
// })
}else if(res.code === 902) {
// 防疫药
uni.showModal({
title: res.message,
success: (res) => {
console.log(res)
if(res.confirm) {
uni.navigateTo({
url: `/pagesB/epidemicPrevention/index?goodsId=${this.goodsId}&num=${this.num}&price=${this.price}&goodSkuParam=${this.goodSkuParam}&prescriptionId=${this.address.id}&medicineMan=${JSON.stringify(this.address)}&offlineInfoId=${result.id}`
})
}
}
})
}else {
this.$Toast(message)
}
}).catch(err => {
this.$Toast(err.message)
})
},
selectDisease (item, index) {
if(new Set(this.selectList).has(item)) {
const index_ = this.selectList.indexOf(item);
this.selectList.splice(index_,1);
}else {
this.selectList.push(item)
}
},
handleDisease (item) {
this.diseaseList.unshift(item.name)
this.diseaseList = [...new Set(this.diseaseList)]
this.show = false
},
}
}
</script>
<style lang="scss" scoped>
.hint_pic{
display: flex;
flex-direction: column;
margin-right: 40rpx;
/deep/.u-list-item {
margin: 0;
width: 232rpx !important;
height: 232rpx !important;
border-radius: 12rpx;
.u-preview-image{
width: 264rpx;
height: 232rpx;
}
image {
width: 232rpx;
height: 232rpx;
}
}
image {
width: 232rpx;
height: 232rpx;
border-radius: 12rpx;
}
}
.confirm-subscribe {
padding: 20rpx 20rpx 140rpx;
&-item {
padding: 20rpx;
background: #ffffff;
border-radius: 18rpx;
box-shadow: 0px 4rpx 6rpx 0px rgba(0,0,0,0.16);
margin-bottom: 40rpx;
&-tag {
padding: 0 20rpx;
height: 50rpx;
background: #E2E2E2;
color: #1d1d1d;
border-radius: 24rpx;
&--active {
background: #baebfc;
color: #01aeea;
}
}
}
&-footer {
z-index: 1;
height: 120rpx;
bottom: 0;
left: 0;
width: 100%;
background: #fff;
/deep/.u-btn {
width: 660rpx;
height: 80rpx;
}
}
&-scroll {
height: calc(50vh - 120rpx );
&-item {
border-bottom: 2rpx solid #D2D2D2;
}
}
}
</style>