Commit 1e0bbeeb authored by songrui's avatar songrui

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

parents 9380b987 30124112
......@@ -4,11 +4,27 @@ import { fetchBase } from '@/api/doctor/doctorFetch'
export function addHypertensionForm(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-hypertension/save`, body: params, loading: true })
}
// 修改高血压随访
export function updateHypertensionForm(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-hypertension/update`, body: params, loading: true })
}
// 主键查询高血压随访信息
export function getHypertensionForm(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-hypertension/record`, body: params, loading: true })
}
// 新增糖尿病随访
export function addDiabetesForm(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-diabetes/save`, body: params, loading: true })
}
// 修改糖尿病随访
export function updateDiabetesForm(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-diabetes/update`, body: params, loading: true })
}
// 主键查询糖尿病随访信息
export function getDiabetesForm(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-diabetes/record`, body: params, loading: true })
}
// 新增冠心病随访
export function addCoronaryHeartDiseaseForm(params) {
......
......@@ -146,8 +146,9 @@ export default {
if (this.diseaseInfo.diseaseType === 2) return this.store.getDict('CP00074')
}
},
created() {
this.getCode()
async created() {
// this.inspectList = await this.getCode()
// this.dataProcess()
},
methods: {
auxiliaryConfirm() {
......@@ -174,29 +175,32 @@ export default {
},
getCode() {
getInspectCode(1).then(res => {
// 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)
return new Promise((resolve, reject) => {
getInspectCode(1).then(res => {
// 删除肾功能下的尿素氮,只保留血肌酐
let array = res.data.filter(item => !(item.insType === 4 && item.itemCode === 'BUN'))
let list = []
list = [
...array,
{
configType: 2,
insType: 99,
insName: '心电图',
itemCode: '99-1',
itemName: null,
itemType: 2
},
{
configType: 2,
insType: 34,
insName: '并发症检查',
itemCode: '34-1',
itemName: null,
itemType: 1
}
]
resolve(list)
})
})
},
setSelectOption(item, itemType) {
......@@ -245,6 +249,47 @@ export default {
return ''
}
return `${item.itemName}(${item.itemCode}) : `
},
dataProcess() {
let { inspectList = [], auxiliaryExamination = [] } = this.form
let list = []
inspectList.forEach(x => {
this.inspectList.forEach(y => {
if (x.insType === y.insType && x.itemCode === y.itemCode) {
if (y.insType === 99) {
y.itemValue = parseInt(x.itemValue)
} else {
y.itemValue = x.itemValue
}
y.abnormalSituation = x.abnormalSituation
y.img = x.img
y.picturesList = x.picturesList
list.push(y)
}
})
})
let array = []
auxiliaryExamination.forEach(x => {
const items = list.filter(e => e.insType === x)
if (items.length > 0) {
array.push({
insType: items[0].insType,
insName: items[0].insName,
items: [...items]
})
}
})
this.viewData = array
}
},
watch: {
'form.inspectList': {
async handler() {
this.inspectList = await this.getCode()
this.dataProcess()
},
immediate: true
}
}
}
......
......@@ -197,6 +197,7 @@ export default {
'form.medicateCase': {
handler() {
this.medicateCase = JSON.parse(this.form.medicateCase)
console.log(123, this.medicateCase)
}
}
}
......
......@@ -5,7 +5,7 @@
v-model="form.diseaseTypeName"
isLink
readonly
:disabled="$route.query.id"
:disabled="$route.query.id ? true : false"
placeholder="请选择"
:rules="rules.diseaseTypeName"
@click="showDiseaseType = true"
......
......@@ -52,7 +52,7 @@ import StrokeForm from './components/StrokeForm.vue'
import CopdForm from './components/CopdForm.vue'
import ChronicKidneyDiseaseForm from './components/ChronicKidneyDiseaseForm.vue'
import DyslipidemiaForm from './components/DyslipidemiaForm.vue'
import { addHypertensionForm, addDiabetesForm, addCoronaryHeartDiseaseForm, updateCoronaryHeartDiseaseForm, addStrokeForm, updateStrokeForm, addCopdForm, updateCopdForm, addChronicKidneyDiseaseForm, updateChronicKidneyDiseaseForm, addDyslipidemiaForm, updateDyslipidemiaForm } from '@/api/doctor/separateFU'
import { addHypertensionForm, updateHypertensionForm, addDiabetesForm, updateDiabetesForm, addCoronaryHeartDiseaseForm, updateCoronaryHeartDiseaseForm, addStrokeForm, updateStrokeForm, addCopdForm, updateCopdForm, addChronicKidneyDiseaseForm, updateChronicKidneyDiseaseForm, addDyslipidemiaForm, updateDyslipidemiaForm } from '@/api/doctor/separateFU'
export default {
components: { HypertensionForm, DiabetesForm, CoronaryHeartDiseaseForm, StrokeForm, CopdForm, ChronicKidneyDiseaseForm, DyslipidemiaForm },
props: {
......@@ -101,13 +101,15 @@ export default {
let { id } = this.$route.query
if (this.diseaseInfo.diseaseType === 1) {
const hypertensionForm = await this.$refs.hypertensionForm.submit()
return await addHypertensionForm({
let fun = id ? updateHypertensionForm : addHypertensionForm
return await fun({
...form,
...hypertensionForm
}, true)
} else if (this.diseaseInfo.diseaseType === 2) {
const diabetesForm = await this.$refs.diabetesForm.submit()
return await addDiabetesForm({
let fun = id ? updateDiabetesForm : addDiabetesForm
return await fun({
...form,
...diabetesForm
}, true)
......
......@@ -786,6 +786,110 @@
</div>
</div>
</van-popup>
<!-- 治疗方案 -->
<TreatmentPlan ref="treatmentPlan" :form="form"></TreatmentPlan>
<!-- 胰岛素 -->
<div class="label-title mt-2" required>胰岛素</div>
<van-field
v-model="form.insulinTypeName"
isLink
readonly
placeholder="请选择"
:rules="rules.insulinTypeName"
@click="showInsulinType = true"
class="form-input"
/>
<van-popup v-model:show="showInsulinType" position="bottom">
<div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="showInsulinType = false">取消</div>
<div>随访方式(单选)</div>
<div></div>
</div>
<div style="height: 80%; overflow: auto">
<CheckBtn
clearable
column-2
:options="store.getDict('CP00121')"
v-model:value="form.insulinType"
:fieldNames="{ text: 'name', value: 'value' }"
@change="insulinTypeChange"
/>
</div>
</div>
</van-popup>
<van-field
v-if="form.insulinType === 99"
v-model="form.insulinTypeOther"
placeholder="其他胰岛素种类"
class="form-input mt-2"
/>
<div class="bg-fa mt-2">
<div class="label-title" style="font-size: 14px; color: #262626">用法</div>
<van-field style="padding: 0">
<template #input>
<van-radio-group
v-model="form.insulinUsage"
shape="dot"
direction="horizontal"
class="doc-radio-group-now"
>
<van-radio
v-for="item in store.getDict('CP00122')"
:key="item.value"
:name="item.value"
label-position="left"
>
{{ item.name }}
</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field
v-if="form.insulinUsage === 9"
v-model="form.insulinTypeOther"
placeholder="其他用法"
class="card-input mt-2"
/>
</div>
<!-- <div class="bg-fa mt-2">
<div class="label-title" style="font-size: 14px; color: #262626">用量</div>
<van-field style="padding: 0">
<template #input>
<van-checkbox-group
v-model="form.insulinDosage"
shape="square"
direction="horizontal"
class="doc-checkbox-group"
>
<van-checkbox
v-for="item in insulinDosage"
:key="item.value"
:name="item.checked"
label-position="left"
style="width: 48%"
>
{{ item.name }}
</van-checkbox>
</van-checkbox-group>
</template>
</van-field>
<template v-for="item in insulinDosage">
<van-field
v-if="item.checked"
:label="item.name"
v-model="item.dosage"
placeholder="请输入"
class="card-input mt-2"
>
<template #extra>
<span>IU</span>
</template>
</van-field>
</template>
</div> -->
<!-- 转诊 -->
<div class="label-title mt-2" required>转诊</div>
<van-field :rules="rules.isReferral" style="padding: 0">
......@@ -856,14 +960,12 @@
<!-- 现场随访照片 -->
<div class="label-title mt-2">现场随访照片</div>
<DocImageUpload
description="最多支持上传8个文件,支持上传图片或PDF文件,图片支持上传jpg、png、jpeg格式,文件大小请勿超过10M。"
lengthMessage="抱歉,最多可上传8个文件。"
:imageData="[]"
:imageData="form.visitImageList"
@change="(ids, option) => form.visitImage = ids"
:maxLength="8"
/>
<!-- 下次随访日期 -->
<div class="label-title" required>下次随访日期</div>
<div class="label-title mt-2" required>下次随访日期</div>
<van-field
v-model="form.nextVisitDate"
isLink
......@@ -958,6 +1060,7 @@
import { useStore } from '@/doctor/store'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue'
import { checkboxReject, calculateBMI, fetchDataHandle } from '@/utils/common'
import { getDiabetesForm } from '@/api/doctor/separateFU'
import BloodPressurePanel from '@/doctor/components/bloodPressure/BloodPressurePanel.vue'
import BloodPressureBt from '@/doctor/components/bloodPressure/BloodPressureBt.vue'
import DocUnit from '@/doctor/components/docUnit/DocUnit.vue'
......@@ -966,8 +1069,10 @@ import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor
import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload.vue'
import Inspect from '../../components/Inspect.vue'
import TreatmentPlan from '../../components/TreatmentPlan.vue'
import dayjs from 'dayjs'
export default {
components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocUnit, DocOffice, DocOfficeDoctor, DocImageUpload, Inspect },
components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocUnit, DocOffice, DocOfficeDoctor, DocImageUpload, Inspect, TreatmentPlan },
inject: ['pressureObj'],
props: {
diseaseInfo: {
......@@ -1309,9 +1414,19 @@ export default {
},
showVisitUnit: false,
showVisitOffice: false,
showVisitDoctor: false
showVisitDoctor: false,
showInsulinType: false,
// insulinDosage: []
}
},
computed: {
authInfo() {
return this.store.authInfo
}
},
created() {
this.getInfo()
},
methods: {
checkboxReject,
calculateBMI,
......@@ -1358,8 +1473,18 @@ export default {
this.form.currentDiagnosisName = list.join()
this.showCurrentDiagnosis = false
},
insulinTypeChange() {
this.store.getDict('CP00121').forEach(item => {
if (item.value === this.form.insulinType) {
this.form.insulinTypeName = item.name
}
})
this.showInsulinType = false
},
referralUnitChange(option = {}) {
this.form.referralUnitName = option.unitName
this.form.referralOfficeId = undefined
this.form.referralOfficeName = undefined
},
referralOfficeChange(option = {}) {
this.form.referralOfficeName = option.officeName
......@@ -1374,9 +1499,15 @@ export default {
},
visitUnitChange(option = {}) {
this.form.visitUnitName = option.unitName
this.form.visitOfficeId = undefined
this.form.visitOfficeName = undefined
this.form.visitDoctorId = undefined
this.form.visitDoctorName = undefined
},
visitOfficeChange(option = {}) {
this.form.visitOfficeName = option.officeName
this.form.visitDoctorId = undefined
this.form.visitDoctorName = undefined
},
submit() {
......@@ -1384,13 +1515,47 @@ export default {
this.$refs.form.validate().then(() => {
const form = fetchDataHandle(this.form, {
symptom: 'arrToStr',
currentDiagnosis: 'arrToStr'
currentDiagnosis: 'arrToStr',
auxiliaryExamination: 'arrToStr'
})
resolve(form)
}).catch(e => {
})
})
},
getInfo() {
let { id } = this.$route.query
if (id) {
getDiabetesForm({ id }).then(res => {
const form = fetchDataHandle(res.data, {
symptom: 'strToArrNum',
currentDiagnosis: 'strToArrNum',
auxiliaryExamination: 'strToArrNum'
})
this.form = form
// 下次随访日期
this.form._nextVisitDate = this.form.nextVisitDate.split('-')
// 随访日期
this.form._visitDate = this.form.visitDate.split('-')
})
} else {
// 随访日期
this.form.visitDate = dayjs().format('YYYY-MM-DD')
// 随访单位
this.form.visitUnitId = this.authInfo.unitId
this.form.visitUnitName = this.authInfo.unitName
// 随访科室
this.form.visitOfficeId = this.authInfo.officeId
this.form.visitOfficeName = this.authInfo.officeName
// 随访医生
this.form.visitDoctorId = this.authInfo.relationId
this.form.visitDoctorName = this.authInfo.nickName
// this.insulinDosage = this.store.getDict('CP00123')
// console.log(this.insulinDosage)
}
}
},
watch: {
......@@ -1475,17 +1640,17 @@ export default {
border-radius: 8px;
}
.doc-radio-group-now {
column-gap: 8px;
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;
}
}
.card-input {
......@@ -1498,4 +1663,18 @@ export default {
width: auto;
}
}
.doc-checkbox-group {
column-gap: 10px;
row-gap: 8px;
background-color: #FAFAFA;
width: 100%;
.van-checkbox {
background-color: #FFFFFF;
padding: 8px 12px;
border-radius: 8px;
justify-content: space-between;
margin-right: 0;
flex-grow: 1;
}
}
</style>
\ No newline at end of file
......@@ -635,72 +635,7 @@
</template>
</van-field>
</div>
<!-- <div class="bg-fa mt-2">
<div class="label-title" required style="color: #262626; font-size: 14px; line-height: 24px">请您确认患者目前服用的降压药、降脂或抗血小板药,在下表中修改或增加,并记录上次随访以来服用的降压药物的依从性</div>
<div style="background-color: #FFF; padding: 8px; border-radius: 10px">
<van-field
label="药物名称"
v-model="form.drinkOther"
placeholder="0~3000,整数"
class="form-input"
label-width="72px"
label-class="label-mr"
>
</van-field>
<van-field
label="剂量"
v-model="form.drinkOther"
placeholder="0~3000,整数"
class="form-input mt-2"
label-width="36px"
label-class="label-mr"
>
</van-field>
<van-field
label="频次"
v-model="form.drinkOther"
placeholder="0~3000,整数"
class="form-input mt-2"
label-width="36px"
label-class="label-mr"
>
</van-field>
<van-field
label="用法"
v-model="form.drinkOther"
placeholder="0~3000,整数"
class="form-input mt-2"
label-width="36px"
label-class="label-mr"
>
</van-field>
<van-field
label="服药依从性"
v-model="form.drinkOther"
placeholder="0~3000,整数"
class="form-input mt-2"
label-width="84px"
label-class="label-mr"
>
</van-field>
<van-field
label="不依从原因"
v-model="form.drinkOther"
placeholder="0~3000,整数"
class="form-input mt-2"
label-width="84px"
label-class="label-mr"
>
</van-field>
</div>
</div> -->
<!-- 药物不良反应 -->
<div class="label-title mt-2" required>药物不良反应</div>
<van-field :rules="rules.drugsAdverse" style="padding: 0">
......@@ -783,6 +718,10 @@
</div>
</div>
</van-popup>
<!-- 药物治疗 -->
<TreatmentPlan ref="treatmentPlan" :form="form"></TreatmentPlan>
<!-- 转诊 -->
<div class="label-title mt-2" required>转诊</div>
<van-field :rules="rules.isReferral" style="padding: 0">
......@@ -853,14 +792,12 @@
<!-- 现场随访照片 -->
<div class="label-title mt-2">现场随访照片</div>
<DocImageUpload
description="最多支持上传8个文件,支持上传图片或PDF文件,图片支持上传jpg、png、jpeg格式,文件大小请勿超过10M。"
lengthMessage="抱歉,最多可上传8个文件。"
:imageData="[]"
:imageData="form.visitImageList"
@change="(ids, option) => form.visitImage = ids"
:maxLength="8"
/>
<!-- 下次随访日期 -->
<div class="label-title" required>下次随访日期</div>
<div class="label-title mt-2" required>下次随访日期</div>
<van-field
v-model="form.nextVisitDate"
isLink
......@@ -955,6 +892,7 @@
import { useStore } from '@/doctor/store'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue'
import { checkboxReject, calculateBMI, fetchDataHandle } from '@/utils/common'
import { getHypertensionForm } from '@/api/doctor/separateFU'
import BloodPressurePanel from '@/doctor/components/bloodPressure/BloodPressurePanel.vue'
import BloodPressureBt from '@/doctor/components/bloodPressure/BloodPressureBt.vue'
import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload.vue'
......@@ -963,8 +901,10 @@ import DocOffice from '@/doctor/components/docOffice/DocOffice.vue'
import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor.vue'
import Inspect from '../../components/Inspect.vue'
import TreatmentPlan from '../../components/TreatmentPlan.vue'
import dayjs from 'dayjs'
export default {
components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocImageUpload, DocUnit, DocOffice, DocOfficeDoctor, Inspect },
components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocImageUpload, DocUnit, DocOffice, DocOfficeDoctor, Inspect, TreatmentPlan },
inject: ['pressureObj'],
props: {
diseaseInfo: {
......@@ -1318,8 +1258,13 @@ export default {
showVisitDoctor: false
}
},
computed: {
authInfo() {
return this.store.authInfo
}
},
created() {
this.getInfo()
},
methods: {
checkboxReject,
......@@ -1397,7 +1342,8 @@ export default {
const form = fetchDataHandle(this.form, {
symptom: 'arrToStr',
currentDiagnosis: 'arrToStr'
currentDiagnosis: 'arrToStr',
auxiliaryExamination: 'arrToStr'
})
resolve({
......@@ -1408,6 +1354,39 @@ export default {
})
})
},
getInfo() {
let { id } = this.$route.query
if (id) {
getHypertensionForm({ id }).then(res => {
const form = fetchDataHandle(res.data, {
symptom: 'strToArrNum',
currentDiagnosis: 'strToArrNum',
auxiliaryExamination: 'strToArrNum'
})
this.form = form
// 下次随访日期
this.form._nextVisitDate = this.form.nextVisitDate.split('-')
// 随访日期
this.form._visitDate = this.form.visitDate.split('-')
})
} else {
// 随访日期
this.form.visitDate = dayjs().format('YYYY-MM-DD')
// 随访单位
this.form.visitUnitId = this.authInfo.unitId
this.form.visitUnitName = this.authInfo.unitName
// 随访科室
this.form.visitOfficeId = this.authInfo.officeId
this.form.visitOfficeName = this.authInfo.officeName
// 随访医生
this.form.visitDoctorId = this.authInfo.relationId
this.form.visitDoctorName = this.authInfo.nickName
// this.insulinDosage = this.store.getDict('CP00123')
// console.log(this.insulinDosage)
}
}
},
watch: {
......
......@@ -576,9 +576,9 @@ export default {
{ title: '详细地址', key: 'permanentAddress' }
],
columnsOrg: [
{ title: '随访单位', key: 'screenUnitName' },
{ title: '随访科室', key: 'screenOfficeName' },
{ title: '随访医生', key: 'screenDoctorName' }
{ title: '随访单位', key: 'visitUnitName' },
{ title: '随访科室', key: 'visitOfficeName' },
{ title: '随访医生', key: 'visitDoctorName' }
],
highRiskList: []
}
......
......@@ -217,11 +217,13 @@ export default {
if (!params.id) {
saveHighSpecificVisit(params).then(res => {
this.$message.success('新增成功')
this.store.onRefreshMark()
this.toNext(4)
})
} else {
updateHighSpecificVisit(params).then(res => {
this.$message.success('修改成功')
this.store.onRefreshMark()
this.toNext(4)
})
}
......
......@@ -212,11 +212,13 @@ export default {
if (!params.id) {
saveSecondScreening(params).then(res => {
this.$message.success('新增成功')
this.store.onRefreshMark()
this.toNext(4)
})
} else {
updateSecondScreening(params).then(res => {
this.$message.success('修改成功')
this.store.onRefreshMark()
this.toNext(4)
})
}
......
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