<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>
|