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

500 lines
15 KiB

<template>
<view class="health-info">
<!-- <view class="health-info-header font-30 text-black font-weight-bold m-b-40">健康信息</view> -->
<view class="health-info-form">
<view class="health-info-form-item" v-for="(item, index) in healthInfo" :key="index">
<view class="flex align-center justify-between">
<text class="font-32">{{ item.name }}</text>
<u-radio-group v-model="item.value">
<u-radio
@change="radioChange(radioItem, item, index)"
active-color="#01aeea"
v-for="(radioItem, radioIndex) in item.radios" :key="radioIndex"
:name="radioItem.name"
:disabled="radioItem.disabled"
>
{{radioItem.name}}
</u-radio>
</u-radio-group>
</view>
<view v-if="item.isChild && item.showChild">
<view class="flex align-center flex-wrap m-b-20">
<view
v-for="(subItem, subIndex) in item.child.otherList"
@click="otherChange(item, subItem, subIndex)"
:key="subIndex"
:class="{'health-info-form-item-tag--active': subItem.checked}"
class="font-30 health-info-form-item-tag flex align-center justify-center font-24 m-r-16 m-t-26"
>
{{ subItem.name }}
</view>
</view>
<view>
<text class="font-30 text-black">其他</text>
<view class="health-info-form-item-textarea position-relative m-t-6 p-16">
<u-input
v-model="item.child.otherVal"
type="textarea"
placeholder="请补充您的过敏药物"
:height="120"
auto-height
maxlength="200"
/>
<view class="position-absolute health-info-form-item-textarea-num">
{{ `${item.child.otherVal.length?item.child.otherVal.length:0}/${textareaMaxlen}`}}
</view>
</view>
</view>
</view>
</view>
</view>
<view class="health-info-footer position-fixed flex align-center justify-center">
<u-button class="font-32" type="primary" shape="circle" @click="confirm">确定</u-button>
</view>
</view>
</template>
<script>
export default {
data () {
return {
textareaMaxlen: 200,
healthInfo: [
{
name: '过往病史',
value: '',
isChild: true,
showChild: false,
radios: [
{name: '有', disabled: false, value: '1'},
{name: '无', disabled: false, value: '2'},
],
child: {
otherVal: '',
select: [],
otherList: []
}
},
{
name: '药物过敏史',
value: '',
isChild: true,
showChild: false,
radios: [
{name: '有', disabled: false, value: '1'},
{name: '无', disabled: false, value: '2'},
],
child: {
otherVal: '',
select: [],
otherList: []
}
},
{
name: '食物/接触过敏史',
value: '',
isChild: true,
showChild: false,
radios: [
{name: '有', disabled: false, value: '1'},
{name: '无', disabled: false, value: '2'},
],
child: {
otherVal: '',
select: [],
otherList: []
}
},
{
name: '家族遗传病史',
value: '',
isChild: true,
showChild: false,
radios: [
{name: '有', disabled: false, value: '1'},
{name: '无', disabled: false, value: '2'},
],
child: {
otherVal: '',
select: [],
otherList: []
}
},
{
name: '抽烟',
value: '',
isChild: false,
showChild: false,
radios: [
{name: '有', disabled: false, value: '1'},
{name: '无', disabled: false, value: '2'},
],
child: {
otherVal: '',
select: [],
otherList: []
}
},
{
name: '饮酒',
value: '',
isChild: false,
showChild: false,
radios: [
{name: '有', disabled: false, value: '1'},
{name: '无', disabled: false, value: '2'},
],
child: {
otherVal: '',
select: [],
otherList: []
}
},
{
name: '妊娠哺乳',
value: '',
isChild: false,
showChild: false,
radios: [
{name: '有', disabled: false, value: '1'},
{name: '无', disabled: false, value: '2'},
],
child: {
otherVal: '',
select: [],
otherList: []
}
},
],
form: {}
}
},
onLoad(options) {
if(options.form){
this.form = JSON.parse(options.form);
console.log(this.form,"接受参数2")
if(this.form.Id !== '') {
this.editInfo(this.form);
}
}
this.getAllergyList();
},
methods: {
// 获取药品过敏信息列表
getAllergyList(){
this.$api('getAllergyList').then(res => {
let {code, result, message} = res;
if(code == 200) {
console.log(result)
result.forEach(item => {
this.healthInfo.forEach(item2 =>{
if(item2.name == item.name) {
item.list.forEach(item3 => {
item2.child.otherList.push({ name: item3.name, checked: false})
})
}
})
});
if(this.form.Id !== '') {
// 设置选中的标签
this.selectOtherList(this.form);
}
}else{
this.$Toast(message);
}
}).catch(err => {
this.$Toast(err.message)
})
},
radioChange(radioItem, item, index) {
item.showChild = radioItem.value == 1 ? true : false
// if()
},
otherChange(item, subItem, idx) {
console.log(item, subItem, idx,111111111)
item.child.otherList.forEach((obj, index) => {
if(index === idx){
console.log(obj.checked)
obj.checked = !obj.checked
if(obj.checked) {
item.child.select.push(obj.name);
}else{
const newOtherVal = [...new Set(item.child.select)].filter(item => item !== obj.name)
item.child.select = newOtherVal
}
}
// obj[idx].checked = !obj[idx].checked;
// if(obj[idx].checked){
// // 添加
// item.select.push(obj[idx].name);
// }else {
// // 删除
// const newOtherVal = [...new Set(select)].filter(item => item !==obj[idx].name)
// item.select = newOtherVal;
// }
// console.log(item);
// obj.checked = index === idx ? true : false
})
// item.child.otherList.splict(idx, 1, { ...subItem, checked: true})
console.log(subItem, idx)
},
// 修改信息
editInfo(data) {
// 过往病史是否有1有
this.healthInfo[0].showChild = data.pastMedicalHistoryIs == 0? false: true;
this.healthInfo[0].value= this.healthInfo[0].showChild? '有': '无'
this.healthInfo[1].showChild = data.drugAllergyIs ==0? false: true;
this.healthInfo[1].value= this.healthInfo[1].showChild? '有': '无'
this.healthInfo[2].showChild = data.contactAllergy == 0? false: true;
this.healthInfo[2].value= this.healthInfo[2].showChild? '有': '无'
this.healthInfo[3].showChild = data.hereditaryDisease == 0? false: true;
this.healthInfo[3].value= this.healthInfo[3].showChild? '有': '无'
this.healthInfo[4].showChild = data.smoke == 0? false: true;
this.healthInfo[4].value= this.healthInfo[4].showChild? '有': '无'
// 过往病史其他
this.healthInfo[0].child.otherVal = data.pastMedicalHistoryOther ;
// 1药物过敏史
// 药物过敏史其他
this.healthInfo[1].child.otherVal = data.other;
// 食物接触过敏史1有
// 食物接触过敏史其他
this.healthInfo[2].child.otherVal = data.contactAllergyOther;
// 家族遗传病史1有
// 家族遗传病其他
this.healthInfo[3].child.otherVal = data.hereditaryDiseaseOther ;
// 吸烟
// 过往病史标签 药物过敏史标签 食物接触过敏史标签 家族遗传病标签
this.healthInfo[0].child.select = (data.pastMedicalHistoryLabel && data.pastMedicalHistoryLabel !== '')?data.pastMedicalHistoryLabel.split(',') : [];
this.healthInfo[1].child.select= (data.drugAllergyLabel && data.drugAllergyLabel !== '')? data.drugAllergyLabel.split(',') : [];
this.healthInfo[2].child.select = (data.contactAllergyLabel && data.contactAllergyLabel !== '')? data.contactAllergyLabel.split(',') : [];
this.healthInfo[3].child.select= (data.hereditaryDiseaseLabel && data.hereditaryDiseaseLabel !== '')? data.hereditaryDiseaseLabel.split(',') : [];
},
// 修改信息 选中的标签
selectOtherList(data){
// 过往病史标签 药物过敏史标签 食物接触过敏史标签 家族遗传病标签
// debugger
for(let i= 0; i<= this.healthInfo.length-1; i++){
this.healthInfo[i].child.otherList.forEach(item => {
this.healthInfo[i].child.select.forEach(item2 =>{
if(item.name == item2) {
item.checked = true;
}
})
})
}
},
// 处理选中的信息
getUserSelectInfo () {
// 过往病史是否有1有
let pastMedicalHistoryIs,pastMedicalHistoryLabel,pastMedicalHistoryOther;
this.healthInfo[0].showChild ? pastMedicalHistoryIs = 1: pastMedicalHistoryIs = 0
// 过往病史标签
pastMedicalHistoryLabel = this.healthInfo[0].child.select.toString();
// 过往病史其他
pastMedicalHistoryOther = this.healthInfo[0].child.otherVal;
pastMedicalHistoryLabel = pastMedicalHistoryLabel + pastMedicalHistoryOther
// 1药物过敏史
let drugAllergyIs,drugAllergyLabel,other;
this.healthInfo[1].showChild ? drugAllergyIs = 1: drugAllergyIs = 0
// 药物过敏史标签
drugAllergyLabel = this.healthInfo[1].child.select.toString();
// 药物过敏史其他
other = this.healthInfo[1].child.otherVal;
drugAllergyLabel = drugAllergyLabel + other
// 食物接触过敏史1有
let contactAllergy,contactAllergyLabel,contactAllergyOther;
this.healthInfo[2].showChild ? contactAllergy = 1: contactAllergy = 0
// 食物接触过敏史标签
contactAllergyLabel = this.healthInfo[2].child.select.toString();
// 食物接触过敏史其他
contactAllergyOther = this.healthInfo[2].child.otherVal;
contactAllergyLabel = contactAllergyLabel + contactAllergyOther
// 家族遗传病史1有
let hereditaryDisease,hereditaryDiseaseLabel,hereditaryDiseaseOther;
this.healthInfo[3].showChild ? hereditaryDisease = 1: hereditaryDisease = 0
// 家族遗传病标签
hereditaryDiseaseLabel = this.healthInfo[3].child.select.toString();
// 家族遗传病其他
hereditaryDiseaseOther = this.healthInfo[3].child.otherVal;
hereditaryDiseaseLabel = hereditaryDiseaseLabel + hereditaryDiseaseOther
let smoke;
this.healthInfo[4].showChild ? smoke = 1: smoke = 0
return {
pastMedicalHistoryIs,pastMedicalHistoryLabel,
drugAllergyIs,drugAllergyLabel,
contactAllergy,contactAllergyLabel,
hereditaryDisease,hereditaryDiseaseLabel,
smoke
}
},
isRules(item) {
if(this.healthInfo[0].showChild && item.pastMedicalHistoryLabel=='') {
return '请补充过往病史信息或选择往病史信息标签'
}
if(this.healthInfo[1].showChild && item.drugAllergyLabel=='') {
return '请补充药物过敏史信息或选择药物过敏史标签'
}
if(this.healthInfo[2].showChild && item.contactAllergyLabel=='') {
return '请补充食物接触过敏史信息或选择食物接触过敏史标签'
}
if(this.healthInfo[3].showChild && item.hereditaryDiseaseLabel=='') {
return '请补充家族遗传病信息或选择家族遗传病标签'
}
return false
},
confirm () {
console.log(this.healthInfo)
// 处理选中的信息
const userSelectInfo = this.getUserSelectInfo();
if(this.isRules(userSelectInfo)) {
this.$Toast(this.isRules(userSelectInfo));
return
}
const params = {
...userSelectInfo,
birthday: this.form.time,
cardId: this.form.idCard,
cardName: this.form.type,
cardType: this.form.cardType,
cardPhoto: this.form.idPhoto,
cardPic: this.form.idPhotoImage,
labelValue: this.form.relationship,
name: this.form.name,
phone: this.form.phone,
sex: this.form.sex == '男'?1: 2,
height: this.form.height,
weight: this.form.weight,
defaultIs: 0
};
if(this.form.Id !== '') {
params.id = this.form.Id
}
// 将空的删除掉
params.pastMedicalHistoryIs == '0'? delete params.pastMedicalHistoryLabel:''
params.drugAllergyIs == '0'? delete params.drugAllergyLabel:''
params.contactAllergy == '0'? delete params.contactAllergyLabel:''
params.hereditaryDisease == '0'? delete params.hereditaryDiseaseLabel:''
// 添加用药人
this.$api('addDrugUser',params).then(res => {
let {code, result, message} = res;
if(code == 200) {
if(this.form.typeName == 'noPrescription') {
// 从无处方 -> 预约流程
const medicineMan = JSON.stringify(result)
setTimeout(()=> {
this.$tools.navigateTo({
url: `/pagesC/subscribe/confirmSubscribe?addressId=${params.Id}&medicineMan=${medicineMan}&goodsId=${params.goodsId}&num=${params.num}&price=${params.price}&goodSkuParam=${params.goodSkuParam}&prescriptionId=${params.prescriptionId}`
})
},1500)
}else {
// 修改 添加
console.log(result);
if(this.form.Id !== ''){
this.$Toast('修改成功');
setTimeout(()=> {
// 修改 和 新增
uni.navigateBack({
delta: 3
})
},1500)
}else{
this.$Toast(result);
setTimeout(()=> {
// 修改 和 新增
uni.navigateBack({
delta: 3
})
},1500)
}
}
}else {
this.$Toast(message);
}
}).catch(err => {
this.$Toast(err.message);
})
}
}
}
</script>
<style lang="scss" scoped>
/deep/ .u-input__textarea{
background-color: rgba(245,245,245,1) !important;
}
.health-info-form-item-textarea{
background-color: rgba(245,245,245,1) !important;
}
/deep/ .u-input__input{
font-size: 30rpx !important;
}
.health-info {
padding: 20rpx 40rpx 160rpx;
&-form {
&-item {
padding: 20rpx 0;
border-bottom: 2rpx solid #d2d2d2;
&-tag {
padding: 0 15rpx;
height: 50rpx;
background: #E2E2E2;
color: #1d1d1d;
border-radius: 24rpx;
&--active {
background: #baebfc;
color: #01aeea;
}
}
&-textarea {
background-color: #E2E2E2;
border-radius: 10rpx;
&-num {
right: 26rpx;
bottom: 4rpx;
font-size: 24rpx;
color: #b8b8b8;
}
}
}
}
&-footer {
z-index: 1;
height: 120rpx;
bottom: 0;
left: 0;
width: 100%;
background: #fff;
/deep/.u-btn {
width: 660rpx;
height: 80rpx;
}
}
}
</style>