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