提交 c910c5bb 编写于 作者: yi.li's avatar yi.li

Merge branch 'dev-followUp-20190312' of...

Merge branch 'dev-followUp-20190312' of 192.168.110.53:com.pica.cloud.education.frontend/pica.cloud.web-education-admin into dev-followUp-20190312
<template>
<div>
<!-- input -->
<el-input
v-if="item.formType === 'input'"
v-model="form[item.model]"
:type="item.type"
:class="item.className"
:disabled="item.disabled"
:maxlength="item.maxlength"
:minlength="item.minlength"
:placeholder="item.placeholder"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)">
<template
v-for="slot in item.slots || []"
:slot="slot.type">{{ slot.name }}</template>
</el-input>
<!-- radios -->
<el-radio-group
v-else-if="item.formType === 'radio'"
v-model="form[item.model]"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)"
>
<el-radio
v-for="(opt, rad) in item.options"
:key="rad"
:label="opt.value">
{{ opt.label }}
</el-radio>
</el-radio-group>
</div>
</template>
<script>
export default {
props: {
dataSource: Object,
},
created(){
this.item = this.dataSource
},
data() {
return {
item: {},
form: {
symptomList: [],//checkbox 症状
inputVal: '',
radioVal: ''
},
}
},
methods: {
defaultFun() {},
}
}
</script>
<style scoped lang="scss">
</style>
<template>
<div>
<!-- input -->
<el-input
v-if="item.formType === 'input'"
v-model="form[item.model]"
:type="item.type"
:class="item.className"
:disabled="item.disabled"
:maxlength="item.maxlength"
:minlength="item.minlength"
:placeholder="item.placeholder"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)">
<template
v-for="slot in item.slots || []"
:slot="slot.type">{{ slot.name }}</template>
</el-input>
<!-- radios -->
<el-radio-group
v-else-if="item.formType === 'radio'"
v-model="form[item.model]"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)"
>
<el-radio
v-for="(opt, rad) in item.options"
:key="rad"
:label="opt.value">
{{ opt.label }}
</el-radio>
</el-radio-group>
</div>
</template>
<script>
export default {
props: {
dataSource: Object,
},
created(){
this.item = this.dataSource
},
data() {
return {
item: {},
form: {
symptomList: [],//checkbox 症状
inputVal: '',
radioVal: ''
},
}
},
methods: {
defaultFun() {},
}
}
</script>
<style scoped lang="scss">
</style>
<template>
<div>
<h1>用药情况-组件</h1>
</div>
</template>
<script>
export default {}
</script>
<style scoped lang="scss">
</style>
<template>
<div>
<!-- input -->
<el-input
v-if="item.formType === 'input'"
v-model="form[item.model]"
:type="item.type"
:class="item.className"
:disabled="item.disabled"
:maxlength="item.maxlength"
:minlength="item.minlength"
:placeholder="item.placeholder"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)">
<template
v-for="slot in item.slots || []"
:slot="slot.type">{{ slot.name }}</template>
</el-input>
<!-- radios -->
<el-radio-group
v-else-if="item.formType === 'radio'"
v-model="form[item.model]"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)"
>
<el-radio
v-for="(opt, rad) in item.options"
:key="rad"
:label="opt.value">
{{ opt.label }}
</el-radio>
</el-radio-group>
</div>
</template>
<script>
export default {
props: {
dataSource: Object,
},
created(){
this.item = this.dataSource
},
data() {
return {
item: {},
form: {
symptomList: [],//checkbox 症状
inputVal: '',
radioVal: ''
},
}
},
methods: {
defaultFun() {},
}
}
</script>
<style scoped lang="scss">
</style>
<template>
<div>
<!-- checkbox -->
<el-checkbox-group
v-if="item.formType=='checkbox'"
v-model="form[item.model]"
@change="changeFun(item,form[item.model])"
>
<el-checkbox
v-for="(opt, ck) in item.options"
:key="ck"
:label="opt.value"
:disabled="opt.disabled"
>
{{ opt.label }}
</el-checkbox>
</el-checkbox-group>
<!-- input -->
<el-input
v-else-if="item.formType === 'input'"
v-model="form[item.model]"
:type="item.type"
:class="item.className"
:disabled="item.disabled"
:maxlength="item.maxlength"
:minlength="item.minlength"
:placeholder="item.placeholder"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)">
<template
v-for="slot in item.slots || []"
:slot="slot.type">{{ slot.name }}</template>
</el-input>
</div>
</template>
<script>
export default {
props: {
dataSource: Object,
},
created(){
this.item = this.dataSource
},
data() {
return {
item: {},
form: {
symptomList: [],//checkbox 症状
inputVal: ''
},
}
},
methods: {
// 改变checkbox的时候判断
changeFun(obj,val){
const len = val.length
const options = obj.options
if(len>0){
val.forEach((item)=>{
if(item=='1'){
options.forEach((item)=>{
if(item.value!='1'){
item.disabled = true
}else{
item.disabled = false
}
})
}else{
options.forEach((item)=>{
item.disabled = false
})
}
})
}else{
options.forEach((item)=>{
item.disabled = false
})
}
},
defaultFun() {},
}
}
</script>
<style scoped lang="scss">
</style>
export default [
{
formType: 'radio',
prop: 'medHandle',
model: 'medHandle',
label: '遵医行为',
disabled: false,
placeholder: '150',
spanNum: 24,
options: [
{ label: '空腹', value: '1', disabled: false },
{ label: '随机', value: '2', disabled: false },
],
},
{
formType: 'input',
linkageRule: [
{
name: 'medHandle',
value: ['2']
}
],
prop: 'inputVal',
model: 'inputVal',
label: '目标',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '目标',
slots: [{ name: 'mmol/L', type: 'append' }]
},
]
export default [
{
formType: 'input',
model: 'inputVal',
label: '日吸烟量(支)',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '本次'
},
{
formType: 'input',
model: 'inputVal',
label: '目标',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '目标'
},
{
formType: 'input',
model: 'inputVal',
label: '日饮酒量(两)',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '本次'
},
{
formType: 'input',
model: 'inputVal',
label: '目标',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '目标'
},
{
formType: 'input',
model: 'inputVal',
label: '运动本次',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '本次',
slots: [{ name: '次/周', type: 'append' }]
},
{
formType: 'input',
model: 'inputVal',
label: '本次',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '本次',
slots: [{ name: '分钟/次', type: 'append' }]
},
{
formType: 'input',
model: 'inputVal',
label: '运动目标',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '目标',
slots: [{ name: '次/周', type: 'append' }]
},
{
formType: 'input',
model: 'inputVal',
label: '目标',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '目标',
slots: [{ name: '分钟/次', type: 'append' }]
},
{
formType: 'input',
model: 'inputVal',
label: '主食(克/天)',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '目标',
// slots: [{ name: '次/周', type: 'append' }]
},
{
formType: 'input',
model: 'inputVal',
label: '目标',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '目标',
// slots: [{ name: '分钟/次', type: 'append' }]
},
{
formType: 'radio',
model: 'radioVal',
label: '心理调整',
disabled: false,
placeholder: '150',
spanNum: 24,
options: [
{ label: '良好', value: '1', disabled: false },
{ label: '一般', value: '2', disabled: false },
{ label: '差', value: '3', disabled: false },
],
},
{
formType: 'radio',
model: 'radioVal',
label: '遵医行为',
disabled: false,
placeholder: '150',
spanNum: 24,
options: [
{ label: '良好', value: '1', disabled: false },
{ label: '一般', value: '2', disabled: false },
{ label: '差', value: '3', disabled: false },
],
},
]
export default [
{
formType: 'input',
model: 'inputVal',
label: '血压(mmhg)',
disabled: false,
placeholder: '0',
type: 'number',
spanNum: 12,
},
{
formType: 'input',
model: 'inputVal',
label: '',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
},
{
formType: 'input',
model: 'inputVal',
label: '身高(cm)',
disabled: false,
placeholder: '150',
spanNum: 24,
type: 'number',
},
{
formType: 'input',
model: 'inputVal',
label: '体重(kg)',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '本次'
},
{
formType: 'input',
model: 'inputVal',
label: '目标',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '目标'
},
{
formType: 'input',
model: 'inputVal',
label: '体质指数(BMI)',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '本次'
},
{
formType: 'input',
model: 'inputVal',
label: '目标',
disabled: false,
placeholder: '150',
spanNum: 12,
type: 'number',
labmsg: '目标'
},
{
formType: 'radio',
model: 'radioVal',
label: '足背动脉搏动',
disabled: false,
placeholder: '150',
spanNum: 24,
options: [
{ label: '触及正常', value: '1', disabled: false },
{ label: '双侧减弱', value: '2', disabled: false },
{ label: '左侧减弱', value: '3', disabled: false },
{ label: '右侧减弱', value: '4', disabled: false },
{ label: '双侧消失', value: '5', disabled: false },
{ label: '左侧消失', value: '6', disabled: false },
{ label: '右侧消失', value: '7', disabled: false },
],
},
]
export default [
{
formType: 'checkbox',
// prop: 'isIntravenousThrombolysis',
model: 'symptomList',
placeholder: '症状',
label: '症状',
spanNum: 24,
rules: [
{ required: true, message: '请选择进行静脉溶栓', trigger: 'blur' }
],
options: [
{ label: '无症状', value: '1', disabled: false },
{ label: '多饮', value: '2', disabled: false },
{ label: '多食', value: '3', disabled: false },
{ label: '多尿', value: '4', disabled: false },
{ label: '感染', value: '5', disabled: false }
],
},
{
formType: 'input',
model: 'inputVal',
label: '症状原因',
disabled: false,
placeholder: '请输入症状原因',
},
]
...@@ -15,6 +15,7 @@ const reservationList = r => require.ensure([], () => r(require('../views/follow ...@@ -15,6 +15,7 @@ const reservationList = r => require.ensure([], () => r(require('../views/follow
/*录入*/ /*录入*/
const recordManage = r => require.ensure([], () => r(require('../views/followup/record-manage/layout.vue')), 'recordManage'); const recordManage = r => require.ensure([], () => r(require('../views/followup/record-manage/layout.vue')), 'recordManage');
const recordList = r => require.ensure([], () => r(require('../views/followup/record-manage/record-list.vue')), 'recordList'); const recordList = r => require.ensure([], () => r(require('../views/followup/record-manage/record-list.vue')), 'recordList');
const formTemplate = r => require.ensure([], () => r(require('../views/followup/record-manage/form-template.vue')), 'formTemplate');//量表模板
...@@ -124,6 +125,15 @@ const followRouters = { ...@@ -124,6 +125,15 @@ const followRouters = {
keepAlive: false keepAlive: false
}, },
}, },
{
path: 'form-template',
component: formTemplate,
name: 'formTemplate',
meta: {
title: '录入量表',
keepAlive: false
},
},
], ],
meta: { meta: {
title: '录入管理', title: '录入管理',
......
<template>
<div class="form-template">
<BreadCrumb
:curmbFirst="'随访管理'"
:curmbSecond="'录入管理'"
:curmbThird="'录入量表'"
/>
<div class="resident-content f-main-content screenSet">
<!--渲染不同的模块表单-->
<div v-for="(item, index) in addComponents">
<div class="content-box" >
<div class="title">{{item.title}}</div>
<el-form ref="form" :model="form" label-width="120px">
<div class="form-box">
<el-row>
<!--渲染不同的表单内部分类字段-->
<el-col v-for="(item2, index) in item.dataSource"
:span="item2.spanNum ? item2.spanNum : spanNum"
:class="item2.className"
:offset="item2.offset"
:push="item2.push"
:key="index" >
<el-form-item
v-if="isParent(item2)"
:prop="item2.prop"
:label="item2.label"
:rules="item2.rules"
:label-width="item2.labelWidth"
:required="item2.required"
:class="item2.className"
:error="item2.error">
<component
:is="item.name"
:key="index"
:dataSource="item2"
/>
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</div>
</div>
</div>
</div>
</template>
<script>
import BreadCrumb from '@/components/breadcrumb'
import HelpChecking from '@/components/followup/form/helpChecking'
import LifeStyleGuide from '@/components/followup/form/lifeStyleGuide'
import MedicalStateUsing from '@/components/followup/form/medicalStateUsing'
import Sign from '@/components/followup/form/sign'
import Symptom from '@/components/followup/form/symptom'
import dataSourceSymptom from '@/model/dataSourceSymptom'
import dataSourceSign from '@/model/dataSourceSign'
import dataSourceLifeStyleGuide from '@/model/dataSourceLifeStyleGuide'
import dataSourceHelpChecking from '@/model/dataSourceHelpChecking'
import dataSourceMedicalStateUsing from '@/model/dataSourceMedicalStateUsing'
export default {
components: {
Symptom,//症状
Sign,//体征
LifeStyleGuide,//生活方式指导
HelpChecking,//辅助检查
MedicalStateUsing,//用药情况
//以下是非组件
BreadCrumb,
},
data(){
return {
spanNum: 12,
valueFormat: 'timestamp',
format: 'yyyy-MM-dd HH:mm',
dateType: 'datetime',
form: {},
addComponents: [
{name: 'Symptom',dataSource:dataSourceSymptom, title: '症状'},
{name: 'Sign',dataSource:dataSourceSign, title: '体征'},
{name: 'LifeStyleGuide',dataSource:dataSourceLifeStyleGuide, title: '生活方式指导'},
{name: 'HelpChecking',dataSource:dataSourceHelpChecking, title: '辅助检查'},
{name: 'MedicalStateUsing',dataSource:dataSourceMedicalStateUsing, title: '用药情况'},
],
//量表结果集合
dataSource: {
AcuteBrainVeinThrombolytic: {},
Lifestyle: {}
},
}
},
created(){
},
methods: {
defaultFun() {},
isParent(item) {
if (!item.linkageRule) {
return true
} else {
let num = 0
item.linkageRule.forEach(t => {
if (this.form[t.name] == null) {
return false
}
if (typeof this.form[t.name] === 'string') {
if (t.value.includes(this.form[t.name])) {
num += 1
}
} else {
const nameVal = this.form[t.name]
const valType = _.isArray(nameVal) ? nameVal : Array.of(nameVal)
const bool = _.intersection(valType, t.value)
if (_.isArray(bool) && bool.length > 0) {
num += 1
}
}
})
if (num !== item.linkageRule.length) {
delete this.form[item.model]
}
return num === item.linkageRule.length
}
}
}
}
</script>
<style lang="scss" scoped>
@import '../../../style/followup/followup-common';
@import '../../../style/followup/element-reset.css';
.form-template{
}
.title{
font-weight: bold;
}
</style>
...@@ -192,7 +192,14 @@ ...@@ -192,7 +192,14 @@
handlerClick(){ handlerClick(){
this.search(1); this.search(1);
}, },
editRow(row){}, editRow(row){
this.$router.push({
name: 'formTemplate',
params: {
data: row
}
})
},
changeStatusRow(row){ changeStatusRow(row){
this.statusForm = row; this.statusForm = row;
this.isShowChangeDialog = true; this.isShowChangeDialog = true;
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册