Commit 0723e642 authored by 芮自成's avatar 芮自成

bug修改

parent 30124112
...@@ -66,7 +66,7 @@ export default { ...@@ -66,7 +66,7 @@ export default {
if (!token) { if (!token) {
token = sessionStorage.getItem('token') token = sessionStorage.getItem('token')
if (process.env.NODE_ENV !== 'production') { if (process.env.NODE_ENV !== 'production') {
token = '2fb02c59-8f20-4157-b85e-789e84dea974' token = '4df45197-d2f8-42ba-9ab5-8b8100c53bcf'
} }
} }
if (token) { if (token) {
......
<template>
<div class="label-title mt-2" required>目前高血压用药及依从性</div>
<div class="bg-fa">
<div class="label-title" required style="color: #262626; font-size: 14px; line-height: 24px">您目前是否在服用降压药、降脂(如他汀类)或抗血小板(如阿司匹林)等心血管病相关药物</div>
<van-field :rules="[{ required: true, message: '请选择' }]" style="padding: 0">
<template #input>
<van-radio-group
v-model="form.medicationCompliance"
shape="dot"
direction="horizontal"
class="doc-radio-group-now"
>
<van-radio
v-for="item in store.getDict('DC00001')"
:key="item.value"
:name="item.value"
label-position="left"
>
{{ item.name }}
</van-radio>
</van-radio-group>
</template>
</van-field>
</div>
<div v-if="form.medicationCompliance === 1" class="bg-fa mt-2">
<div class="label-title" style="color: #262626; font-size: 14px; line-height: 24px">请您确认患者目前服用的降压药、降脂或抗血小板药,在下表中修改或增加,并记录上次随访以来服用的降压药物的依从性</div>
<div style="background: #fff; padding: 8px" class="mb-2">
<DocDrug
v-model:value="currentMedicateCase.drugId"
placeholder="拼音码查询药品"
:valueName="currentMedicateCase.pinyinCode"
@change="drugChange(1, $event)">
</DocDrug>
<div class="flex items-center justify-between w-full mt-2">
<van-field
v-model="currentMedicateCase.dose"
placeholder="请输入"
label="剂量:"
class="form-input"
style="flex: 0.6"
/>
<van-field
v-model="currentMedicateCase.unitName"
isLink
readonly
placeholder="请选择"
@click="currentMedicateCase.showUnit = true"
class="form-input"
style="flex: 0.4"
/>
</div>
<van-popup v-model:show="currentMedicateCase.showUnit" position="bottom">
<div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="currentMedicateCase.showUnit = false">取消</div>
<div>单位(单选)</div>
<div></div>
</div>
<div style="height: 80%; overflow: auto">
<CheckBtn
clearable
column-1
:options="store.getDict('CP00081')"
v-model:value="currentMedicateCase.unit"
:fieldNames="{ text: 'name', value: 'value' }"
@change="unitChange(1)"
/>
</div>
</div>
</van-popup>
<!-- 频次 -->
<van-field
label="频次:"
v-model="currentMedicateCase.frequencyName"
isLink
readonly
placeholder="请选择"
@click="currentMedicateCase.showFrequency = true"
class="form-input mt-2"
/>
<van-popup v-model:show="currentMedicateCase.showFrequency" position="bottom">
<div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="currentMedicateCase.showFrequency = false">取消</div>
<div>频次(单选)</div>
<div></div>
</div>
<div style="height: 80%; overflow: auto">
<CheckBtn
clearable
column-2
:options="store.getDict('CP00084')"
v-model:value="currentMedicateCase.frequency"
:fieldNames="{ text: 'name', value: 'value' }"
@change="frequencyChange(1)"
/>
</div>
</div>
</van-popup>
<!-- 用法 -->
<van-field
label="用法:"
v-model="currentMedicateCase.usageName"
isLink
readonly
placeholder="请选择"
@click="currentMedicateCase.showUsage = true"
class="form-input mt-2"
/>
<van-popup v-model:show="currentMedicateCase.showUsage" position="bottom">
<div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="currentMedicateCase.showUsage = false">取消</div>
<div>用法(单选)</div>
<div></div>
</div>
<div style="height: 80%; overflow: auto">
<CheckBtn
clearable
column-1
:options="store.getDict('CP00083')"
v-model:value="currentMedicateCase.usage"
:fieldNames="{ text: 'name', value: 'value' }"
@change="usageChange(1)"
/>
</div>
</div>
</van-popup>
<!-- 服药依从性 -->
<van-field
label="服药依从性:"
v-model="currentMedicateCase.complianceName"
isLink
readonly
placeholder="请选择"
@click="currentMedicateCase.showCompliance = true"
class="form-input mt-2"
/>
<van-popup v-model:show="currentMedicateCase.showCompliance" position="bottom">
<div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="currentMedicateCase.showCompliance = false">取消</div>
<div>用法(单选)</div>
<div></div>
</div>
<div style="height: 80%; overflow: auto">
<CheckBtn
clearable
column-1
:options="store.getDict('CP00148')"
v-model:value="currentMedicateCase.compliance"
:fieldNames="{ text: 'name', value: 'value' }"
@change="complianceChange"
/>
</div>
</div>
</van-popup>
<!-- 不依从原因 -->
<van-field
label="不依从原因:"
v-model="form.noComplianceReasonName"
isLink
readonly
placeholder="请选择"
@click="showNoComplianceReason = true"
class="form-input mt-2"
/>
<van-popup v-model:show="showNoComplianceReason" position="bottom">
<div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="showNoComplianceReason = false">取消</div>
<div>不依从原因(可多选)</div>
<div class="blueColor" @click="noComplianceReasonConfirm">确定</div>
</div>
<div style="height: 80%; overflow: auto">
<CheckBtn
multiple
column-2
:options="store.getDict('CP00098')"
v-model:value="form.noComplianceReason"
:fieldNames="{ text: 'name', value: 'value' }"
/>
</div>
</div>
</van-popup>
</div>
<div v-for="(item, index) in addMedicateCase" :key="index" style="background-color: #fff; padding: 8px" class="mb-2">
<DocDrug
v-model:value="item.drugId"
placeholder="拼音码查询药品"
:valueName="item.pinyinCode"
@change="drugChange(2, $event, item)">
</DocDrug>
<div class="flex items-center justify-between w-full mt-2">
<van-field
v-model="item.dose"
placeholder="请输入"
label="剂量:"
class="form-input"
style="flex: 0.6"
/>
<van-field
v-model="item.unitName"
isLink
readonly
placeholder="请选择"
@click="item.showUnit = true"
class="form-input"
style="flex: 0.4"
/>
</div>
<van-popup v-model:show="item.showUnit" position="bottom">
<div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="item.showUnit = false">取消</div>
<div>单位(单选)</div>
<div></div>
</div>
<div style="height: 80%; overflow: auto">
<CheckBtn
clearable
column-1
:options="store.getDict('CP00081')"
v-model:value="item.unit"
:fieldNames="{ text: 'name', value: 'value' }"
@change="unitChange(2, item)"
/>
</div>
</div>
</van-popup>
<!-- 频次 -->
<van-field
label="频次:"
v-model="item.frequencyName"
isLink
readonly
placeholder="请选择"
@click="item.showFrequency = true"
class="form-input mt-2"
/>
<van-popup v-model:show="item.showFrequency" position="bottom">
<div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="item.showFrequency = false">取消</div>
<div>频次(单选)</div>
<div></div>
</div>
<div style="height: 80%; overflow: auto">
<CheckBtn
clearable
column-2
:options="store.getDict('CP00084')"
v-model:value="item.frequency"
:fieldNames="{ text: 'name', value: 'value' }"
@change="frequencyChange(2, item)"
/>
</div>
</div>
</van-popup>
<!-- 用法 -->
<van-field
label="用法:"
v-model="item.usageName"
isLink
readonly
placeholder="请选择"
@click="item.showUsage = true"
class="form-input mt-2"
/>
<van-popup v-model:show="item.showUsage" position="bottom">
<div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="item.showUsage = false">取消</div>
<div>用法(单选)</div>
<div></div>
</div>
<div style="height: 80%; overflow: auto">
<CheckBtn
clearable
column-1
:options="store.getDict('CP00083')"
v-model:value="item.usage"
:fieldNames="{ text: 'name', value: 'value' }"
@change="usageChange(2, item)"
/>
</div>
</div>
</van-popup>
<div @click="onDel(index)" class="del-btn">删除</div>
</div>
<van-button type="primary" plain block size="small" @click="onPlus">增加服用药物</van-button>
</div>
<!-- <van-button @click="() => console.log(form)">123</van-button> -->
</template>
<script>
import { useStore } from '@/doctor/store'
import DocDrug from '@/doctor/components/docDrug/DocDrug.vue'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue'
export default {
name: 'HypertensionDrugs',
components: { DocDrug, CheckBtn },
props: {
form: {
type: Object,
default: () => ({})
}
},
data() {
return {
store: useStore(),
currentMedicateCase: {},
showNoComplianceReason: false,
addMedicateCase: [{}]
}
},
methods: {
drugChange(val, option, item) {
if (val === 1) {
this.currentMedicateCase.drugName = option.chemicalName
this.currentMedicateCase.pinyinCode = option.helpCode
} else {
item.drugName = option.chemicalName
item.pinyinCode = option.helpCode
}
},
unitChange(val, item) {
if (val === 1) {
this.store.getDict('CP00081').forEach(e => {
if (e.value === this.currentMedicateCase.unit) {
this.currentMedicateCase.unitName = e.name
}
})
this.currentMedicateCase.showUnit = false
} else {
this.store.getDict('CP00081').forEach(e => {
if (e.value === item.unit) {
item.unitName = e.name
}
})
item.showUnit = false
}
},
frequencyChange(val, item) {
if (val === 1) {
this.store.getDict('CP00084').forEach(e => {
if (e.value === this.currentMedicateCase.frequency) {
this.currentMedicateCase.frequencyName = e.name
}
})
this.currentMedicateCase.showFrequency = false
} else {
this.store.getDict('CP00084').forEach(e => {
if (e.value === item.frequency) {
item.frequencyName = e.name
}
})
item.showFrequency = false
}
},
usageChange(val, item) {
if (val === 1) {
this.store.getDict('CP00083').forEach(e => {
if (e.value === this.currentMedicateCase.usage) {
this.currentMedicateCase.usageName = e.name
}
})
this.currentMedicateCase.showUsage = false
} else {
this.store.getDict('CP00083').forEach(e => {
if (e.value === item.usage) {
item.usageName = e.name
}
})
item.showUsage = false
}
},
complianceChange() {
this.store.getDict('CP00148').forEach(e => {
if (e.value === this.currentMedicateCase.compliance) {
this.currentMedicateCase.complianceName = e.name
}
})
this.currentMedicateCase.showCompliance = false
},
noComplianceReasonConfirm() {
let list = []
this.store.getDict('CP00098').forEach(item => {
let selected = this.form.noComplianceReason.filter(e => e === item.value)
if (selected && selected.length) {
list.push(item.name)
}
})
this.form.noComplianceReasonName = list.join()
this.showNoComplianceReason = false
},
onPlus() {
this.addMedicateCase.push({})
},
onDel(index) {
this.addMedicateCase.splice(index, 1)
},
submit() {
return new Promise((resolve, reject) => {
resolve({
currentMedicateCase: this.currentMedicateCase,
addMedicateCase: this.addMedicateCase
})
})
}
},
watch: {
'form.medicationCompliance': {
handler() {
let { currentMedicateCase, addMedicateCase } = this.form
if (currentMedicateCase) {
this.currentMedicateCase = JSON.parse(currentMedicateCase)
}
if (addMedicateCase) {
this.addMedicateCase = JSON.parse(addMedicateCase)
}
}
}
}
}
</script>
<style lang="less" scoped>
.label-title {
font-size: 13px;
color: #595959;
font-weight: 500;
margin-bottom: 8px;
&[required] {
&::after {
content: '*';
color: #FF4D4F;
font-weight: bold;
margin-left: 4px;
}
}
}
.bg-fa {
background-color: #FAFAFA;
padding: 8px;
border-radius: 8px;
}
.doc-radio-group-now {
column-gap: 10px;
row-gap: 8px;
background-color: #FAFAFA;
width: 100%;
.van-radio {
background-color: #FFFFFF;
padding: 8px 12px;
border-radius: 8px;
justify-content: space-between;
margin-right: 0;
flex-grow: 1;
}
}
.form-input {
background-color: #FAFAFA;
padding: 8px 12px;
border-radius: 8px;
}
.pop-title {
color: #262626;
font-size: 16px;
font-weight: 600;
}
.greyColor {
color: var(--van-text-color-2);
font-weight: 400;
}
.blueColor {
color: #607FF0;
font-weight: 500;
}
.del-btn {
text-align: center;
margin: 8px auto;
padding: 4px 8px;
border-radius: 38px;
border: 1px solid #BFBFBF;
width: 112px;
color: #8C8C8C;
font-size: 13px;
}
</style>
\ No newline at end of file
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
class="form-input mt-2" class="form-input mt-2"
/> />
</div> </div>
<div style="background-color: #fff; padding: 8px; border-radius: 8px" class="mt-2"> <div v-if="y.itemValue === 2" style="background-color: #fff; padding: 8px; border-radius: 8px" class="mt-2">
<div class="label-title">影像报告</div> <div class="label-title">影像报告</div>
<DocImageUpload <DocImageUpload
description="温馨提示:请上传JPG、PNG格式图片,文件大小不超过10M" description="温馨提示:请上传JPG、PNG格式图片,文件大小不超过10M"
......
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
<div class="p-4" style="height: 100%"> <div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title"> <div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="item.showUnit = false">取消</div> <div class="greyColor" @click="item.showUnit = false">取消</div>
<div>随访方式(单选)</div> <div>单位(单选)</div>
<div></div> <div></div>
</div> </div>
<div style="height: 80%; overflow: auto"> <div style="height: 80%; overflow: auto">
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
<div class="p-4" style="height: 100%"> <div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title"> <div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="item.showFrequency = false">取消</div> <div class="greyColor" @click="item.showFrequency = false">取消</div>
<div>随访方式(单选)</div> <div>频次(单选)</div>
<div></div> <div></div>
</div> </div>
<div style="height: 80%; overflow: auto"> <div style="height: 80%; overflow: auto">
...@@ -110,7 +110,7 @@ ...@@ -110,7 +110,7 @@
<div class="p-4" style="height: 100%"> <div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title"> <div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="item.showUsage = false">取消</div> <div class="greyColor" @click="item.showUsage = false">取消</div>
<div>随访方式(单选)</div> <div>用法(单选)</div>
<div></div> <div></div>
</div> </div>
<div style="height: 80%; overflow: auto"> <div style="height: 80%; overflow: auto">
......
...@@ -21,10 +21,12 @@ ...@@ -21,10 +21,12 @@
<script> <script>
import BaseInfo from './BaseInfo.vue' import BaseInfo from './BaseInfo.vue'
import FormCont from './FormCont.vue' import FormCont from './FormCont.vue'
import { useStore } from '@/doctor/store'
export default { export default {
components: { BaseInfo, FormCont }, components: { BaseInfo, FormCont },
data() { data() {
return { return {
store: useStore(),
step: 1, step: 1,
baseInfo: {}, baseInfo: {},
diseaseInfo: {} diseaseInfo: {}
...@@ -56,6 +58,7 @@ export default { ...@@ -56,6 +58,7 @@ export default {
this.$refs.formCont.submit().then(() => { this.$refs.formCont.submit().then(() => {
this.$message.success('新增成功') this.$message.success('新增成功')
this.$router.go(-1) this.$router.go(-1)
this.store.onRefreshMark()
}) })
} }
} }
......
...@@ -599,13 +599,13 @@ ...@@ -599,13 +599,13 @@
</van-field> </van-field>
<!-- 辅助检查 --> <!-- 辅助检查 -->
<div class="label-title mt-2" required>辅助检查</div> <div class="label-title mt-2">辅助检查</div>
<div class="bg-fa mt-2"> <div class="bg-fa mt-2">
<div class="label-title" style="color: #262626; font-size: 14px">空腹静脉血糖值</div> <div class="label-title" required style="color: #262626; font-size: 14px">空腹静脉血糖值</div>
<van-field <van-field
v-model="form.emptyBloodGlucose" v-model="form.emptyBloodGlucose"
placeholder="0~50,2位小数" placeholder="0~50,2位小数"
:rules="rules.emptyBloodGlucose" :rules="[{ required: true, message: '请输入' }]"
class="card-input" class="card-input"
> >
<template #extra> <template #extra>
...@@ -790,13 +790,12 @@ ...@@ -790,13 +790,12 @@
<!-- 治疗方案 --> <!-- 治疗方案 -->
<TreatmentPlan ref="treatmentPlan" :form="form"></TreatmentPlan> <TreatmentPlan ref="treatmentPlan" :form="form"></TreatmentPlan>
<!-- 胰岛素 --> <!-- 胰岛素 -->
<div class="label-title mt-2" required>胰岛素</div> <div class="label-title mt-2">胰岛素</div>
<van-field <van-field
v-model="form.insulinTypeName" v-model="form.insulinTypeName"
isLink isLink
readonly readonly
placeholder="请选择" placeholder="请选择"
:rules="rules.insulinTypeName"
@click="showInsulinType = true" @click="showInsulinType = true"
class="form-input" class="form-input"
/> />
......
...@@ -611,30 +611,7 @@ ...@@ -611,30 +611,7 @@
<Inspect ref="inspectRef" :form="form" :diseaseInfo="diseaseInfo"></Inspect> <Inspect ref="inspectRef" :form="form" :diseaseInfo="diseaseInfo"></Inspect>
<!-- 目前高血压用药及依从性 --> <!-- 目前高血压用药及依从性 -->
<div class="label-title mt-2" required>目前高血压用药及依从性</div> <HypertensionDrugs ref="hypertensionDrugsRef" :form="form"></HypertensionDrugs>
<div class="bg-fa">
<div class="label-title" required style="color: #262626; font-size: 14px; line-height: 24px">您目前是否在服用降压药、降脂(如他汀类)或抗血小板(如阿司匹林)等心血管病相关药物</div>
<van-field :rules="rules.medicationCompliance" style="padding: 0">
<template #input>
<van-radio-group
v-model="form.medicationCompliance"
shape="dot"
direction="horizontal"
class="doc-radio-group-now"
>
<van-radio
v-for="item in store.getDict('DC00001')"
:key="item.value"
:name="item.value"
label-position="left"
style="width: 48%"
>
{{ item.name }}
</van-radio>
</van-radio-group>
</template>
</van-field>
</div>
<!-- 药物不良反应 --> <!-- 药物不良反应 -->
<div class="label-title mt-2" required>药物不良反应</div> <div class="label-title mt-2" required>药物不良反应</div>
...@@ -903,8 +880,10 @@ import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor ...@@ -903,8 +880,10 @@ import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor
import Inspect from '../../components/Inspect.vue' import Inspect from '../../components/Inspect.vue'
import TreatmentPlan from '../../components/TreatmentPlan.vue' import TreatmentPlan from '../../components/TreatmentPlan.vue'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import HypertensionDrugs from '../../components/HypertensionDrugs.vue'
export default { export default {
components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocImageUpload, DocUnit, DocOffice, DocOfficeDoctor, Inspect, TreatmentPlan }, components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocImageUpload, DocUnit, DocOffice, DocOfficeDoctor, Inspect, TreatmentPlan, HypertensionDrugs },
inject: ['pressureObj'], inject: ['pressureObj'],
props: { props: {
diseaseInfo: { diseaseInfo: {
...@@ -1339,16 +1318,27 @@ export default { ...@@ -1339,16 +1318,27 @@ export default {
this.$refs.form.validate().then(async () => { this.$refs.form.validate().then(async () => {
// 辅助检查 // 辅助检查
const inspectList = await this.$refs.inspectRef.submit() const inspectList = await this.$refs.inspectRef.submit()
// 目前高血压用药及依从性
const { currentMedicateCase, addMedicateCase } = await this.$refs.hypertensionDrugsRef.submit()
// 治疗方案
const medicateCase = await this.$refs.treatmentPlan.submit()
const form = fetchDataHandle(this.form, { const form = fetchDataHandle(this.form, {
symptom: 'arrToStr', symptom: 'arrToStr',
noComplianceReason: 'arrToStr',
currentDiagnosis: 'arrToStr', currentDiagnosis: 'arrToStr',
auxiliaryExamination: 'arrToStr' auxiliaryExamination: 'arrToStr'
}) })
resolve({ resolve({
...form, ...form,
inspectList: inspectList // 辅助检查
inspectList: inspectList,
// 目前高血压用药及依从性
currentMedicateCase: JSON.stringify(currentMedicateCase),
addMedicateCase: JSON.stringify(addMedicateCase),
// 治疗方案
medicateCase: JSON.stringify(medicateCase)
}) })
}).catch(e => { }).catch(e => {
...@@ -1387,7 +1377,7 @@ export default { ...@@ -1387,7 +1377,7 @@ export default {
// this.insulinDosage = this.store.getDict('CP00123') // this.insulinDosage = this.store.getDict('CP00123')
// console.log(this.insulinDosage) // console.log(this.insulinDosage)
} }
} },
}, },
watch: { watch: {
'form.signHeight': { 'form.signHeight': {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment