Commit 90fe4509 authored by songrui's avatar songrui

诊断表单

parent 2b786f2c
......@@ -14,3 +14,8 @@ export function getVisitManageList(params, loading) {
export function getInspectCode(configType) {
return fetchBase({ url: `/chronic-admin/v1/chronic-inspect-item/query-list/${configType}`, loading: true })
}
//查询疾病编码(诊断名称)
export function queryDiseaseCode(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-disease-code/icd-list`, body: params, loading: true })
}
\ No newline at end of file
<template>
<van-popup :show="show" position="bottom"
:teleport="teleport"
class="diagnose-picker">
<van-picker
title="请选择"
:columns="array"
:columns-field-names="fieldNames"
v-model="innerValue"
@confirm="onConfirm"
@cancel="onCancel"
>
<template #columns-top>
<div class="px-3">
<van-field v-model="searchValue" placeholder="请输入" clearable maxlength="100"/>
</div>
</template>
</van-picker>
</van-popup>
</template>
<script>
import { queryDiseaseCode } from '@/api/doctor/disease.js'
export default {
props: {
show: Boolean,
value: [String, Number],
fieldNames: {
type: Object,
default: () => {
return {text: 'name', value: 'icdCode'}
}
},
// 疾病类型
diseaseType: {
type: [String, Number],
required: true
},
teleport: [String, Element]
},
emits: ['update:show', 'update:value', 'change'],
data() {
return {
innerValue: undefined,
searchValue: '',
diagnoseNameList: []
}
},
computed: {
array() {
const array = this.diagnoseNameList || []
return array.filter(e => e.name.startsWith(this.searchValue))
}
},
methods: {
load() {
queryDiseaseCode({ diseaseType: this.diseaseType }).then(res => {
const result = []
for (let item of res.data) {
item.name = item.diseaseName + '(' + item.icdCode + ')'
result.push(item)
}
this.diagnoseNameList = result
})
},
onConfirm({ selectedValues, selectedOptions }) {
this.$emit('update:value', selectedValues[0])
this.$emit('change', selectedOptions[0] || {})
this.$emit('update:show', false)
this.searchValue = ''
},
onCancel() {
this.$emit('update:show', false)
}
},
watch: {
value: {
handler(value) {
if (value == null) return
this.innerValue = [value]
},
immediate: true
},
diseaseType: {
handler() {
this.load()
},
immediate: true
}
}
}
</script>
<style lang="less" scoped>
</style>
<template>
<div class="diagnose-form-cont">
<van-form ref='form' class="doc-form">
<div class='font-semibold'>诊断信息</div>
<div class='doc-form-label' required>纳入管理日期</div>
<van-field
v-model="form.manageDate"
is-link
readonly
name="manageDate"
placeholder="请选择"
@click="showManageDate = true"
:rules="rules.requiredSelect"
/>
<van-popup v-model:show="showManageDate" position="bottom">
<van-date-picker v-model="form._screenDate"
:min-date="manageDateRange.min"
:max-date="manageDateRange.max"
@confirm="manageDateConfirm" @cancel="showManageDate = false" />
</van-popup>
<div class='doc-form-label' required>诊断名称</div>
<van-field
v-model="form.diseaseName"
is-link
readonly
name="manageDate"
placeholder="请选择"
@click="showIcd = true"
:rules="rules.requiredSelect"
/>
<DiagnosePicker v-model:show="showIcd"
v-model:value="form.icdCode"
:diseaseType="diseaseType"
@change="icdChange"/>
<div class='doc-form-label' required>诊断评估</div>
<div class='doc-form-label' required>高血压分级</div>
<div class='doc-form-label' required>高血压危险分层</div>
<div class='doc-form-label' required>缺血性脑卒中</div>
<div class='doc-form-label' required>出血性脑卒中</div>
</van-form>
<InstpectCommon :disease="diseaseType"/>
<CheckCommon :disease="diseaseType"/>
......@@ -11,13 +48,90 @@
<script>
import InstpectCommon from '../common/Instpect.vue'
import CheckCommon from '../common/Check.vue'
import DiagnosePicker from './DiagnosePicker.vue'
import dayjs from 'dayjs'
const defaultForm = (info = {}) => {
const form = {
id: undefined,
residentInfoId: undefined,
// 纳入管理日期
manageDate: undefined,
_manageDate: undefined,
// 诊断名称code
icdCode: undefined,
diseaseName: undefined,
// 诊断日期
diseaseDate: undefined,
// 诊断评估
// 高血压分级
diagnoseAssess: undefined,
diagnoseAssessName: undefined,
// 用于单选
diagnoseLevel: undefined,
diagnoseLevelName: undefined,
// 用于多选
diagnoseResult: undefined,
diagnoseResultName: undefined,
// 是否需要检查
isInspect: 2,
// 是否需要检查
isCheck: 2
}
Reflect.ownKeys(form).forEach(key => {
if (info[key] != undefined) {
form[key] = info[key]
}
})
return form
}
export default {
components: {
InstpectCommon,
CheckCommon
CheckCommon,
DiagnosePicker
},
props: {
diseaseType: [Number, String]
},
data() {
return {
form: defaultForm(),
// 纳入管理日期
manageDateRange: {
min: undefined,
max: undefined
},
showManageDate: false,
// 诊断名称
showIcd: false,
rules: {
requiredSelect: [{ required: true, message: '请选择' }],
requiredInput: [{ required: true, message: '请输入' }]
}
}
},
created() {
this.init()
},
methods: {
init() {
const date = dayjs()
this.form.manageDate = date.format('YYYY-MM-DD')
this.form._manageDate = [date.year(), date.month() + 1, date.date()]
this.manageDateRange.max = new Date(date.year(), date.month(), date.date())
this.manageDateRange.min = new Date(date.year() - 20, date.month(), date.date())
},
// 纳入管理日期
manageDateConfirm({ selectedValues }) {
this.form.manageDate = selectedValues.join('-')
this.showManageDate = false
},
// 诊断名称
icdChange(option) {
this.form.diseaseName = option.diseaseName
}
}
}
</script>
......
......@@ -63,7 +63,7 @@ const routes = [
{
path: 'screening/firstForm',
name: 'screening-first-form',
component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/first/FristForm.vue')
component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/first/FirstForm.vue')
},
{
path: 'screening/firstDetail',
......
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