Commit 759fe2eb authored by songrui's avatar songrui

Merge branch 'chronic-dev' of http://gitlab.yiboshi.com/nightkis1995/frontend-h5 into chronic-dev

parents d895082e c522cc7e
......@@ -66,7 +66,7 @@ export default {
if (!token) {
token = sessionStorage.getItem('token')
if (process.env.NODE_ENV !== 'production') {
token = '9606c004-d369-4c13-b04e-1502bcb1182a'
token = '2107bb74-6f66-4eaa-9c84-ebe1b43c6687'
}
}
if (token) {
......
<template>
<div>
<div class="label-title mt-2">辅助检查</div>
<div class="label-title mt-2">{{ diseaseType === 1 ? '辅助检查' : '其他检查' }}</div>
<van-field
v-model="form.auxiliaryExaminationName"
isLink
readonly
placeholder="请选择"
:rules="rules.auxiliaryExaminationName"
@click="showAuxiliaryExamination = true"
class="form-input"
/>
......@@ -21,7 +20,7 @@
<CheckBtn
multiple
column-2
:options="store.getDict('CP00073')"
:options="dictList"
v-model:value="form.auxiliaryExamination"
:fieldNames="{ text: 'name', value: 'value' }"
/>
......@@ -30,10 +29,11 @@
</van-popup>
<div v-for="x in viewData" :key="x.insType" class="bg-fa mt-2">
<div class="label-title" required style="color: #262626; font-size: 14px">{{ x.insName }}</div>
<template v-for="y in x.items" :key="y.itemCode">
<template v-for="y in x.items" :key="y.itemCode" v-if="x.insType !== 99">
<van-field
:label="`${y.itemName}(${y.itemCode}) : `"
:label="getItemName(y)"
v-model="y.itemValue"
:rules="getRule(y)"
placeholder="请输入"
class="card-input mt-2"
v-if="y.itemType === 1"
......@@ -43,9 +43,10 @@
</template>
</van-field>
<van-field
:label="`${y.itemName}(${y.itemCode}) : `"
:label="getItemName(y)"
is-link
:modelValue="y.itemValue"
:rules="getRule(y)"
readonly
placeholder="请选择或录入"
@click="setSelectOption(y, y.itemType)"
......@@ -57,6 +58,46 @@
</template>
</van-field>
</template>
<template v-for="y in x.items" :key="y.itemCode" v-if="x.insType === 99">
<div style="background-color: #fff; padding: 8px; border-radius: 8px">
<div class="label-title">检查结果</div>
<van-field style="padding: 0">
<template #input>
<van-radio-group
v-model="y.itemValue"
shape="dot"
direction="horizontal"
class="w-full doc-radio-group"
>
<van-radio
v-for="item in store.getDict('CP00157')"
:key="item.value"
:name="item.value"
label-position="left"
>
{{ item.name }}
</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field
v-if="y.itemValue === 2"
v-model="y.abnormalSituation"
placeholder="异常情况"
class="form-input mt-2"
/>
</div>
<div style="background-color: #fff; padding: 8px; border-radius: 8px" class="mt-2">
<div class="label-title">影像报告</div>
<DocImageUpload
description="温馨提示:请上传JPG、PNG格式图片,文件大小不超过10M"
lengthMessage="抱歉,最多可上传8个文件。"
:imageData="y.picturesList"
@change="(ids, option) => y.img = ids"
:maxLength="8">
</DocImageUpload>
</div>
</template>
</div>
<InputSelect
v-model:show="selectOption.show4"
......@@ -70,8 +111,9 @@ import { useStore } from '@/doctor/store'
import { getInspectCode } from '@/api/doctor/separateFU'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue'
import InputSelect from '@/doctor/diagnose/common/InputSelect.vue'
import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload.vue'
export default {
components: { CheckBtn, InputSelect },
components: { CheckBtn, InputSelect, DocImageUpload },
props: {
form: {
type: Object,
......@@ -92,8 +134,16 @@ export default {
show4: false,
item: {},
dict: []
},
rules: {}
}
}
},
computed: {
diseaseType() {
return this.diseaseInfo.diseaseType
},
dictList() {
if (this.diseaseInfo.diseaseType === 1) return this.store.getDict('CP00073')
if (this.diseaseInfo.diseaseType === 2) return this.store.getDict('CP00074')
}
},
created() {
......@@ -102,7 +152,7 @@ export default {
methods: {
auxiliaryConfirm() {
let list = []
this.store.getDict('CP00073').forEach(item => {
this.dictList.forEach(item => {
let selected = this.form.auxiliaryExamination.filter(e => e === item.value)
if (selected && selected.length) {
list.push(item.name)
......@@ -125,8 +175,28 @@ export default {
getCode() {
getInspectCode(1).then(res => {
console.log(666, res)
this.inspectList = res.data
// this.inspectList = res.data
let list = res.data.filter(item => !(item.insType === 4 && item.itemCode === 'BUN'))
this.inspectList = [
...list,
{
configType: 2,
insType: 99,
insName: '心电图',
itemCode: '99-1',
itemName: null,
itemType: 2
},
{
configType: 2,
insType: 34,
insName: '并发症检查',
itemCode: '34-1',
itemName: null,
itemType: 1
}
]
console.log(666, this.inspectList)
})
},
setSelectOption(item, itemType) {
......@@ -160,6 +230,21 @@ export default {
})
resolve(list)
})
},
getRule(item) {
if (!item.pattern) {
return [{ required: true, message: '请录入' }]
}
return [
{ required: true, message: '请录入' },
{ pattern: new RegExp(item.pattern), message: item.message }
]
},
getItemName(item) {
if (!item.itemName) {
return ''
}
return `${item.itemName}(${item.itemCode}) : `
}
}
}
......
<template>
<div class="label-title mt-2">辅助检查</div>
<div v-for="(item, index) in inspectList" :key="index" class="bg-fa mb-2">
<div style="background-color: #fff; padding: 8px">
<div style="color: #262626; font-size: 14px">检查名称</div>
<van-field
v-model="item.itemName"
placeholder="请输入"
:rules="[{ required: true, message: '请输入' }]"
class="form-input mt-2"
/>
<div style="color: #262626; font-size: 14px; margin-top: 8px">检查结果</div>
<van-field
v-model="item.itemValue"
placeholder="请输入"
class="form-input mt-2"
/>
<div style="color: #262626; font-size: 14px; margin-top: 8px">上传报告</div>
<DocImageUpload
:imageData="item.picturesList"
@change="(ids, option) => item.img = ids"
:maxLength="4"
class="mt-2">
</DocImageUpload>
<div class="del-btn" @click="onDel(index)">删除</div>
</div>
</div>
<van-button type="primary" plain block @click="onPlus">增加检查</van-button>
</template>
<script>
import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload.vue'
export default {
components: { DocImageUpload },
props: {
diseaseInfo: {
type: Object,
default: () => {}
}
},
data() {
return {
form: {},
rules: {},
inspectList: []
}
},
methods: {
onPlus() {
this.inspectList.push({})
},
onDel(index) {
this.inspectList.splice(index, 1)
},
submit() {
return new Promise((resolve, reject) => {
this.inspectList.forEach(item => {
item.dataType = 2
item.diseaseType = this.diseaseInfo.diseaseType
item.itemType = 1
})
resolve(this.inspectList)
})
}
}
}
</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;
}
.form-input {
background-color: #FAFAFA;
padding: 8px 12px;
border-radius: 8px;
}
.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
<template>
<div>
<HypertensionForm v-if="diseaseInfo.diseaseType === 1" :diseaseInfo="diseaseInfo" ref="hypertensionForm"></HypertensionForm>
<DiabetesForm v-if="diseaseInfo.diseaseType === 2" ref="diabetesForm"></DiabetesForm>
<CoronaryHeartDiseaseForm v-if="diseaseInfo.diseaseType === 3" ref="coronaryHeartDiseaseForm"></CoronaryHeartDiseaseForm>
<HypertensionForm
v-if="diseaseInfo.diseaseType === 1"
:diseaseInfo="diseaseInfo"
ref="hypertensionForm">
</HypertensionForm>
<DiabetesForm
v-if="diseaseInfo.diseaseType === 2"
:diseaseInfo="diseaseInfo"
ref="diabetesForm">
</DiabetesForm>
<CoronaryHeartDiseaseForm
v-if="diseaseInfo.diseaseType === 3"
:diseaseInfo="diseaseInfo"
ref="coronaryHeartDiseaseForm">
</CoronaryHeartDiseaseForm>
<StrokeForm v-if="diseaseInfo.diseaseType === 4" ref="strokeForm"></StrokeForm>
<CopdForm v-if="diseaseInfo.diseaseType === 5" ref="copdForm"></CopdForm>
<ChronicKidneyDiseaseForm v-if="diseaseInfo.diseaseType === 6" ref="chronicKidneyDiseaseForm"></ChronicKidneyDiseaseForm>
......@@ -62,6 +74,8 @@ export default {
}, true)
} else if (this.diseaseInfo.diseaseType === 3) {
const coronaryHeartDiseaseForm = await this.$refs.coronaryHeartDiseaseForm.submit()
console.log(coronaryHeartDiseaseForm)
return
return await addCoronaryHeartDiseaseForm({
...form,
...coronaryHeartDiseaseForm
......
......@@ -564,6 +564,10 @@
</van-radio-group>
</template>
</van-field>
<!-- 辅助检查 -->
<InspectV2 ref="inspectRef" :diseaseInfo="diseaseInfo"></InspectV2>
<!-- 服药依从性 -->
<div class="label-title mt-2" required>服药依从性</div>
<van-field :rules="rules.medicationCompliance" style="padding: 0">
......@@ -845,9 +849,17 @@ import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload.vu
import DocUnit from '@/doctor/components/docUnit/DocUnit.vue'
import DocOffice from '@/doctor/components/docOffice/DocOffice.vue'
import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor.vue'
import InspectV2 from '../../components/InspectV2.vue'
export default {
components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocImageUpload, DocUnit, DocOffice, DocOfficeDoctor },
components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocImageUpload, DocUnit, DocOffice, DocOfficeDoctor, InspectV2 },
inject: ['pressureObj'],
props: {
diseaseInfo: {
type: Object,
default: () => {}
}
},
data() {
return {
store: useStore(),
......@@ -1216,12 +1228,18 @@ export default {
submit() {
return new Promise((resolve, reject) => {
this.$refs.form.validate().then(() => {
this.$refs.form.validate().then(async () => {
// 辅助检查
const inspectList = await this.$refs.inspectRef.submit()
const form = fetchDataHandle(this.form, {
symptom: 'arrToStr',
currentDiagnosis: 'arrToStr'
})
resolve(form)
resolve({
...form,
inspectList: inspectList
})
}).catch(e => {
})
......
......@@ -597,6 +597,71 @@
</van-radio-group>
</template>
</van-field>
<!-- 辅助检查 -->
<div class="label-title mt-2" required>辅助检查</div>
<div class="bg-fa mt-2">
<div class="label-title" style="color: #262626; font-size: 14px">空腹静脉血糖值</div>
<van-field
v-model="form.emptyBloodGlucose"
placeholder="0~50,2位小数"
:rules="rules.emptyBloodGlucose"
class="card-input"
>
<template #extra>
<span>mmol/L</span>
</template>
</van-field>
</div>
<div class="bg-fa mt-2">
<div class="label-title" style="color: #262626; font-size: 14px">空腹及2小时胰岛素/C肽</div>
<van-field
label="空腹胰岛素"
v-model="form.emptyInsulin"
placeholder="0~10000,整数"
:rules="rules.emptyInsulin"
class="card-input"
>
<template #extra>
<span>mU/L</span>
</template>
</van-field>
<van-field
label="空腹C肽"
v-model="form.emptyPeptide"
placeholder="0~10000,整数"
:rules="rules.emptyPeptide"
class="card-input mt-2"
>
<template #extra>
<span>pmol/L</span>
</template>
</van-field>
<van-field
label="餐后2小时胰岛素"
v-model="form.afterInsulin"
placeholder="0~10000,整数"
:rules="rules.afterInsulin"
class="card-input mt-2"
>
<template #extra>
<span>mU/L</span>
</template>
</van-field>
<van-field
label="餐后2小时C肽"
v-model="form.afterPeptide"
placeholder="0~10000,整数"
:rules="rules.afterPeptide"
class="card-input mt-2"
>
<template #extra>
<span>pmol/L</span>
</template>
</van-field>
</div>
<Inspect ref="inspectRef" :form="form" :diseaseInfo="diseaseInfo"></Inspect>
<!-- 服药依从性 -->
<div class="label-title mt-2" required>服药依从性</div>
<van-field :rules="rules.medicationCompliance" style="padding: 0">
......@@ -899,9 +964,17 @@ import DocUnit from '@/doctor/components/docUnit/DocUnit.vue'
import DocOffice from '@/doctor/components/docOffice/DocOffice.vue'
import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor.vue'
import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload.vue'
import Inspect from '../../components/Inspect.vue'
export default {
components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocUnit, DocOffice, DocOfficeDoctor, DocImageUpload },
components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocUnit, DocOffice, DocOfficeDoctor, DocImageUpload, Inspect },
inject: ['pressureObj'],
props: {
diseaseInfo: {
type: Object,
default: () => {}
}
},
data() {
return {
store: useStore(),
......@@ -1419,4 +1492,10 @@ export default {
padding: 8px 12px;
border-radius: 8px;
}
:deep(.van-field) {
border-radius: .08rem;
.van-field__label {
width: auto;
}
}
</style>
\ No newline at end of file
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