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

469 lines
13 KiB

<template>
<view class="drug-user-authentication position-relative">
<u-form :model="form" ref="uForm">
<view class="drug-user-authentication-item m-b-40">
<view class="drug-user-authentication-title font-30 text-black m-b-20 font-weight-bold">用药人信息</view>
<u-form-item label-width="20%" label="姓名" prop="name"><u-input v-model="form.name" input-align="right" placeholder="请输入姓名" /></u-form-item>
<u-form-item label-width="20%" label="出生日期" prop="birthday">
<view @click="assignModalShow('timeShow')">
<u-input v-model="form.birthday" disabled placeholder="请选择出生日期" input-align="right" @click="assignModalShow('timeShow')"/>
</view>
</u-form-item>
<u-form-item label-width="20%" label="身份证" prop="cardId"><u-input v-model="form.cardId" input-align="right" placeholder="请输入身份证号码" :clearable="false"/></u-form-item>
<u-form-item label-width="20%" label="手机号码" prop="phone"><u-input v-model="form.phone" type="number" input-align="right" placeholder="请输入手机号码" :clearable="false" /></u-form-item>
</view>
<view class="drug-user-authentication-item m-b-40">
<u-form-item label-width="20%" label="今日体温" prop="temperature"><u-input v-model="form.temperature" type="number" input-align="right" placeholder="请输入今日体温" /></u-form-item>
<u-form-item label-width="20%" label="症状" prop="symptom">
<u-tag
v-for="(item, index) in tagList"
:key="index"
:text="item.name"
mode="dark"
class="m-r-10"
:mode="item.select ? 'dark' : 'plain'"
:type="item.select ? 'primary' : 'info'"
@click="tagClick(item, index)"
></u-tag>
</u-form-item>
<u-input v-if="showSymptom" placeholder="请输入症状" v-model="symptomVal" type="textarea" :height="100" auto-height />
</view>
<view class="drug-user-authentication-item m-b-40">
<u-form-item prop="isGo">
<view class="">14天内有境外、中高风险地区旅居史</view>
<u-radio-group v-model="form.isGo" active-color="#01AEEA">
<u-radio
v-for="(item, index) in travel" :key="index"
:name="item.name"
>
{{item.name}}
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item label-width="20%" label="所在地区" prop="addr">
<view @click="assignModalShow('regionShow')">
<u-input v-model="form.addr" disabled placeholder="请选择所在地区" input-align="right" @click="assignModalShow('regionShow')"/>
</view>
</u-form-item>
<u-form-item label-width="20%" label="详细地址" prop="address"><u-input placeholder="请输入详细地址" v-model="form.address" type="textarea" :height="100" auto-height /></u-form-item>
</view>
</u-form>
<view class="drug-user-authentication-footer position-fixed flex flex-column align-start justify-between zIndex-1">
<view>
<u-checkbox-group active-color="#01AEEA">
<u-checkbox v-model="isAgreement" shape="circle">
<view class="drug-user-authentication-agreement" >
同意 <text class="drug-user-authentication-agreement--text" @click.stop="toDetali">《防疫登记协议》</text>
</view>
</u-checkbox>
</u-checkbox-group>
</view>
<view class="flex justify-center w-100">
<u-button type="primary" shape="circle" @click="preserve">保存并使用</u-button>
</view>
</view>
<u-picker mode="time" v-model="timeShow" @confirm="timeConfirm" confirm-color="#01AEEA" zIndex="999999999"></u-picker>
<u-picker v-model="regionShow" @confirm="regionConfirm" mode="region"></u-picker>
<u-select v-model="sexShow" :list="sexList" @confirm="sexConfirm" confirm-color="#01AEEA"></u-select>
</view>
</template>
<script>
const sexList = [
{
value: '1',
label: '男'
},
{
value: '2',
label: '女'
}
];
const tagList = [
{
name : '发热',
select: false,
},
{
name : '咳嗽',
select: false,
},
{
name : '胸闷',
select: false,
},
{
name : '无',
select: false,
},
{
name : '其他',
select: false,
}
]
export default {
data() {
return {
travel: [
{ name: '有' },
{ name: '无' }
],
// u-radio-group的v-model绑定的值如果设置为某个radio的name,就会被默认选中
sexList,
tagList,
tagCurrent: null,
showSymptom: false,
isAgreement: false,
symptomVal: '',
symptomList: [],
form: {
name: '',
phone: '',
cardId: '',
birthday: '',
temperature: '',
symptom: '',
isGo: '',
addr: '',
address: ''
},
timeShow: false,
sexShow: false,
regionShow: false,
options: {},
rules: {
name: [
{
required: true,
message: '请输入姓名'
},
{
validator: (rule, value, callback) => {
let username = /^[\u4E00-\u9FA5\uf900-\ufa2d·s]{2,99}$/;
return username.test(value);
},
message: '请输入正确格式的姓名',
trigger: ['blur']
}
],
cardId: [
{
required: true,
message: '请输入身份证号码'
},
{
message: '请输入正确格式的身份证号码',
validator: (rule, value, callback) => {
return this.$u.test.idCard(value);
}
}
],
phone: [
{
required: true,
message: '请输入手机号码',
trigger: ['change', 'blur']
},
{
message: '请输入正确格式的手机号码',
validator: (rule, value, callback) => {
return this.$u.test.mobile(value);
}
}
],
birthday: [
{
required: true,
message: '请选择出生日期',
trigger: ['change', 'blur']
}
],
temperature: [
{
required: true,
message: '请输入今日体温',
trigger: ['change', 'blur']
}
],
symptom: [
{
required: true,
message: '请选择症状',
trigger: ['change', 'blur']
}
],
isGo: [
{
required: true,
message: '请选择14天内有境外、中高风险地区旅居史',
trigger: ['change', 'blur']
}
],
addr: [
{
required: true,
message: '请输入所在地区',
trigger: ['change', 'blur']
}
],
address: [
{
required: true,
message: '请输入详细地址',
trigger: ['change', 'blur']
}
],
},
};
},
onReady() {
this.$refs.uForm.setRules(this.rules);
},
onLoad(options) {
// form: {
// name: '',
// phone: '',
// cardId: '',
// birthday: '',
// temperature: '',
// symptom: '',
// isGo: '',
// addr: '',
// address: ''
// },
this.options = options
if (options.medicineMan) {
let medicineMan = JSON.parse(options.medicineMan)
let { name, phone, cardId, birthday } = medicineMan
this.form = { ...this.form, name, phone, cardId, birthday }
console.log(medicineMan)
}
},
methods: {
// 清除身份证内容
clearText() {
console.log("进来的")
setTimeout(() => {
this.form.cardId = ''
},0)
},
// 清除电话号码
clearText2() {
console.log("进来的")
setTimeout(() => {
this.form.phone = ''
},0)
},
assignModalShow (key) {
this[key] = true
},
timeConfirm(time) {
let { year, month, day } = time;
this.form.birthday = `${year}/${month}/${day}`;
},
regionConfirm (obj) {
console.log(obj)
let {province, city, area} = obj
this.form.addr = `${province.label},${city.label},${area.label}`
},
// 修改信息查询
sexConfirm(arr) {
this.form.sex = arr[0].label
},
preserve() {
const options = this.options
this.$refs.uForm.validate(valid => {
if (valid) {
if (this.showSymptom && !this.symptomVal) return this.$Toast('请输入症状')
if (!this.isAgreement) return this.$Toast('请同意协议')
let params = this.showSymptom && this.symptomVal ? { ...this.form, symptom: this.symptomVal }: this.form
this.$api('setPrevention', params)
.then(res => {
console.log(res)
if (res.code === 200) {
if(this.options.createOrderType === 'shoppingCart'){
this.addShoppingCart(res.result.id)
}else if(this.options.createOrderType === 'confirm') {
this.setOrder(res.result.id)
}else {
this.addShoppingCart(res.result.id);
}
} else {
this.$Toast(res.message)
}
})
console.log('验证通过');
} else {
console.log('验证失败');
}
});
},
// 创建订单
setOrder(id){
const options = this.options
this.$api('teamCreateOrder', {type:2, id: options.goodsId, goodsPrice: options.price, goodsNum: options.num, goodsSku: options.goodSkuParam, orderType: options.orderType, preventionId:id,prescriptionId: this.options.prescriptionId,offlineInfoId: this.options.offlineInfoId,})
.then(res => {
uni.hideLoading()
let { code, message, result } = res
if (code === 200) {
uni.redirectTo({
url: `/pagesC/confirmOrder/confirmOrder?ids=${result.order.id}&orderType=${options.orderType}&payType=${0}`
})
}else if (res.code === 903) {
uni.redirectTo({
url: `/pagesC/subscribe/confirmSubscribe?addressId=${this.options.addressId}&orderType=${this.options.orderType}&goodsId=${this.options.goodsId}&num=${this.options.num}&price=${this.options.price}&goodSkuParam=${this.options.goodSkuParam}&prescriptionId=${this.options.prescriptionId}&preventionId=${id}&medicineMan=${this.options.medicineMan}`
})
}else {
this.$Toast(res.message)
}
}).catch(err => {
this.$Toast(err.message)
})
},
// 加入购物车
addShoppingCart (preventionId) {
this.$api('addShoppingCart', {id: this.options.goodsId, num: this.options.num, price: this.options.price, goodSkuParam: this.options.goodSkuParam, offlineInfoId: this.options.offlineInfoId, prescriptionId: this.options.prescriptionId, preventionId })
.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 === 903) {
this.$tools.redirectTo({
url: `/pagesC/subscribe/confirmSubscribe?addressId=${this.options.addressId}&orderType=${this.options.orderType}&goodsId=${this.options.goodsId}&num=${this.options.num}&price=${this.options.price}&goodSkuParam=${this.options.goodSkuParam}&prescriptionId=${this.options.prescriptionId}&preventionId=${preventionId}&medicineMan=${this.options.medicineMan}`
})
} else {
this.$Toast(res.message)
}
})
},
tagClick(item, index) {
this.tagList[index].select = !this.tagList[index].select
this.showSymptom = false
console.log(item.name == '无')
if(item.name == '无'&& item.select){
this.tagList.forEach((item,selectrIndex) => {
if(selectrIndex !== index) {
item.select = false
}
})
this.symptomList = []
this.symptomList.push(item.name)
this.form.symptom = item.name
return
}else {
this.tagList.forEach(item => {
if(item.name == '无') {
item.select = false
}
})
}
if (item.name == '其他' && item.select) {
this.tagList.forEach((item,selectrIndex) => {
if(selectrIndex !== index) {
item.select = false
}
})
this.symptomList = []
this.symptomList.push(item.name)
this.showSymptom = true
this.form.symptom = item.name
return
}else {
this.tagList.forEach(item => {
if(item.name == '其他') {
item.select = false
}
})
}
if(item.select) {
if(this.symptomList[0] == '无' || this.symptomList[0] == '其他' ){
this.symptomList.splice(0,1)
}
this.symptomList.push(item.name)
this.form.symptom = this.symptomList.join(",")
}else {
const index2 = this.symptomList.filter(item=> item).indexOf(item.name)
this.symptomList.splice(index2,1)
this.form.symptom = this.symptomList.join(",")
}
},
// 协议
toDetali(){
this.$tools.navigateTo({
url: `/pages/agreement/index?title=&type=2`
})
}
}
};
</script>
<style lang="scss" scoped>
.drug-user-authentication {
padding: 20rpx 20rpx 220rpx;
&-footer {
z-index: 10;
height: 160rpx;
padding: 20rpx;
bottom: 0;
left: 0;
width: 100%;
background: #fff;
/deep/.u-btn {
width: 660rpx;
height: 70rpx;
margin: 0 auto;
}
}
&-item {
background: #ffffff;
border-radius: 12rpx;
box-shadow: 0px 3rpx 6rpx 0px rgba(0,0,0,0.16);
padding: 20rpx 40rpx;
}
::v-deep .u-input__textarea {
background: #e2e2e2;
padding: 10px;
}
::v-deep .u-checkbox__icon-wrap {
width: 40rpx !important;
height: 40rpx !important;
}
&-agreement {
font-size: 28rpx;
&--text {
color: #01AEEA;
}
}
}
// 设置清空图标大小
</style>