提交 f6aa1d24 编写于 作者: Yuanzhao.dai's avatar Yuanzhao.dai

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

Merge branch 'dev-followUp-20190312' of http://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>
<el-form :ref="timeForm.formRef" :model="timeForm" :rules="timeFormRules" label-suffix=":" label-width="140px" :inline-message="true" size="small">
<el-form-item label="本次随访时间" required>
<div style="display: flex;">
<el-form-item prop="followupTime">
<el-select v-model="timeForm.followupTime" placeholder="请选择">
<el-option
v-for="item in indexOptions"
:key="item.value"
:label="item.label"
:value="item.label">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="followupMark" class="ml20">
<el-select v-model="timeForm.followupMark" placeholder="请选择" :disabled="timeForm.isDisabled">
<el-option
v-for="item in markOptions"
:key="item.value"
:label="item.label"
:value="item.label">
</el-option>
</el-select>
</el-form-item>
</div>
</el-form-item>
<el-form-item label="随访方式" prop="followupWay">
<el-radio-group v-model="timeForm.followupWay" size="small">
<el-radio :label="1">门诊随访</el-radio>
<el-radio :label="2">上门随访</el-radio>
<el-radio :label="3">电话随访</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="提醒医生预约居民">
<el-select
v-model="timeForm.remindTime"
multiple
:multiple-limit=3
placeholder="请选择">
<el-option
v-for="item in remindOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="推送患教">
<div style="display: flex">
<el-select v-model="timeForm.pushTime" placeholder="选择推送时间" clearable>
<el-option
v-for="item in pushTimeOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-button plain class="ml20" @click="goSelectCartoon" v-if="!timeForm.hasSelected">选择健康漫画</el-button>
<div class="selected-div ml20" v-if="timeForm.hasSelected">
<span>《健康漫画名称》</span>
<el-button type="text" @click="goSelectCartoon">重选</el-button>
<el-button type="text" @click="deleteClick">删除</el-button>
</div>
</div>
</el-form-item>
<div class="tips-contnt" v-if="timeForm.hasSelected">
<p class="yellow-font">当前计划中共500位居民(微信:300位,短信:200位),本次定时推送任务在发送当日预计需要200条短信额度(微信推送不消耗额度,建议您让居民关注云鹊健康微信公众号),务必提前确保短信额度的充足。</p>
<p>需要更多额度,请前往「云鹊医App-个人中心-啾啾币中心」兑换短信额度后再进行预约,您也可以联系云鹊医客服购买短信额度,客服电话:400-920-8877</p>
</div>
<el-form-item label="随访登记表">
<el-select
v-model="timeForm.followupForm"
multiple
:multiple-limit=2
placeholder="请选择">
<el-option
v-for="item in formOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-form>
<select-cartoon :isSelectCartoon="isSelectCartoon" @closeSelectCartoon="closeSelectCartoon"></select-cartoon>
</div>
</template>
<script>
import _ from 'lodash';
import SelectCartoon from '@/views/followup/plan-manage/dialog/select-cartoon';
const timeFormInit = {
formRef: '',
followupTime: '',
followupMark: '',
followupWay: '',
pushTime: '',
remindTime: [],
followupForm: [],
hasSelected: '',
};
export default {
components: {
SelectCartoon},
data() {
return {
isSelectCartoon: false,
indexOptions: [
{
value: '0',
label: '0'
}, {
value: '1',
label: '1'
}, {
value: '2',
label: '2'
}, {
value: '3',
label: '3'
},
],
markOptions: [
{
value: '0',
label: '天'
}, {
value: '1',
label: '周'
},
{
value: '2',
label: '月'
}, {
value: '3',
label: '年'
}
],
remindOptions: [
{
value: '0',
label: '开始前30天'
}, {
value: '1',
label: '开始前20天'
},
{
value: '2',
label: '开始前10天'
},
],
pushTimeOptions: [
{
value: '0',
label: '开始前7天'
}, {
value: '1',
label: '开始前3天'
},
{
value: '2',
label: '当天'
},
],
formOptions: [
{
value: '0',
label: '随访登记表1'
}, {
value: '1',
label: '随访登记表2'
},
{
value: '2',
label: '随访登记表3'
},
],
timeFormRules: {
followupTime: [{ required: true, message: '请添加随访时间', trigger: 'change' }],
followupMark: [{ required: true, message: '请添加随访时间', trigger: 'change' }],
followupWay: [{ required: true, message: '请选择随访方式', trigger: 'change' }],
},
}
},
props: {
timeForm: {
type: Object,
},
valBegin: Boolean,
checkCallback: Function
},
watch: {
// valBegin(val){
// console.log(val)
// if(val){
// console.log('开始校验')
// this.$emit('getRefForm',this.timeForm.formRef)
// // console.log(this.checkCallback)
// // this.checkCallback(this.timeForm.formRef)
// }
// }
},
methods: {
getNowTime() {
const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const hour = date.getHours();
const minute = date.getMinutes();
const second = date.getSeconds();
let formName = `form${year}${month}${day}${hour}${minute}${second}`;
return formName;
},
goSelectCartoon() {
this.isSelectCartoon = true;
},
closeSelectCartoon(val) {
this.isSelectCartoon = val.closeStatus;
this.timeForm.hasSelected = val.hasSelected;
},
deleteClick() {
this.timeForm.hasSelected = '';
},
},
}
</script>
<style scoped lang="scss">
.form-div{
padding-top: 30px;
.tips-contnt{
margin-top: -10px;
padding-left: 140px;
padding-bottom: 30px;
font-size: 12px;
color: #9B9997;
width: 55%;
p{
line-height: 18px;
&.yellow-font{
color: #e6a23c;
padding-bottom: 10px;
}
}
}
}
.ml20{
margin-left: 20px;
}
</style>
...@@ -12,93 +12,12 @@ ...@@ -12,93 +12,12 @@
<div class="form-div" v-if="activeTab != 'setNewRef'"> <div class="form-div" v-if="activeTab != 'setNewRef'">
<div :key="timeFormHas.formRef" v-for="(timeFormHas, index) in setTimeNodeList1" :label="index"> <div :key="timeFormHas.formRef" v-for="(timeFormHas, index) in setTimeNodeList1" :label="index">
<el-form v-if="index == activeTab" :ref="timeFormHas.formRef" :model="timeFormHas" :rules="timeFormRules" label-suffix=":" label-width="140px" :inline-message="true" size="small"> <set-time-form v-if="index == activeTab" :timeForm="timeFormHas"></set-time-form>
<el-form-item label="本次随访时间" required>
<div style="display: flex;">
<el-form-item prop="followupTime">
<el-select v-model="timeFormHas.followupTime" placeholder="请选择">
<el-option
v-for="item in indexOptions"
:key="item.value"
:label="item.label"
:value="item.label">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="followupMark" class="ml20">
<el-select v-model="timeFormHas.followupMark" placeholder="请选择" :disabled="timeFormHas.isDisabled">
<el-option
v-for="item in markOptions"
:key="item.value"
:label="item.label"
:value="item.label">
</el-option>
</el-select>
</el-form-item>
</div>
</el-form-item>
<el-form-item label="随访方式" prop="followupWay">
<el-radio-group v-model="timeFormHas.followupWay" size="small">
<el-radio :label="1">门诊随访</el-radio>
<el-radio :label="2">上门随访</el-radio>
<el-radio :label="3">电话随访</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="提醒医生预约居民">
<el-select
v-model="timeFormHas.remindTime"
multiple
:multiple-limit=3
placeholder="请选择">
<el-option
v-for="item in remindOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="推送患教">
<div style="display: flex">
<el-select v-model="timeFormHas.pushTime" placeholder="选择推送时间" clearable>
<el-option
v-for="item in pushTimeOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-button plain class="ml20" @click="goSelectCartoon" v-if="!timeFormHas.hasSelected">选择健康漫画</el-button>
<div class="selected-div ml20" v-if="timeFormHas.hasSelected">
<span>《健康漫画名称》</span>
<el-button type="text" @click="goSelectCartoon">重选</el-button>
<el-button type="text" @click="deleteClick">删除</el-button>
</div>
</div>
</el-form-item>
<div class="tips-contnt" v-if="timeFormHas.hasSelected">
<p class="yellow-font">当前计划中共500位居民(微信:300位,短信:200位),本次定时推送任务在发送当日预计需要200条短信额度(微信推送不消耗额度,建议您让居民关注云鹊健康微信公众号),务必提前确保短信额度的充足。</p>
<p>需要更多额度,请前往「云鹊医App-个人中心-啾啾币中心」兑换短信额度后再进行预约,您也可以联系云鹊医客服购买短信额度,客服电话:400-920-8877</p>
</div>
<el-form-item label="随访登记表">
<el-select
v-model="timeFormHas.followupForm"
multiple
:multiple-limit=3
placeholder="请选择">
<el-option
v-for="item in formOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-form>
</div> </div>
</div> </div>
<div class="form-div" v-if="activeTab == 'setNewRef'"> <div class="form-div" v-if="activeTab == 'setNewRef'">
<!--<set-time-form :timeForm="timeForm" :valBegin="valBegin" :checkCallback="checkCallback" />-->
<el-form :ref="timeForm.formRef" :model="timeForm" :rules="timeFormRules" label-suffix=":" label-width="140px" :inline-message="true" size="small"> <el-form :ref="timeForm.formRef" :model="timeForm" :rules="timeFormRules" label-suffix=":" label-width="140px" :inline-message="true" size="small">
<el-form-item label="本次随访时间" required> <el-form-item label="本次随访时间" required>
<div style="display: flex;"> <div style="display: flex;">
...@@ -192,6 +111,7 @@ ...@@ -192,6 +111,7 @@
<script> <script>
import _ from 'lodash'; import _ from 'lodash';
import SelectCartoon from '@/views/followup/plan-manage/dialog/select-cartoon'; import SelectCartoon from '@/views/followup/plan-manage/dialog/select-cartoon';
import SetTimeForm from '@/views/followup/plan-manage/dialog/set-time-form';
import { mapState } from 'vuex' import { mapState } from 'vuex'
const timeFormInit = { const timeFormInit = {
formRef: '', formRef: '',
...@@ -203,14 +123,18 @@ ...@@ -203,14 +123,18 @@
followupForm: [], followupForm: [],
hasSelected: '', hasSelected: '',
isDisabled: false, isDisabled: false,
}; };
export default { export default {
components: { components: {
SelectCartoon SelectCartoon,
SetTimeForm
}, },
data() { data() {
return { return {
// checkCallback:null,
// valBegin: false,
isSelectCartoon: false, isSelectCartoon: false,
activeTab: null, activeTab: null,
currentFormRef: 1, currentFormRef: 1,
...@@ -302,7 +226,11 @@ ...@@ -302,7 +226,11 @@
return this.sortKey(this.setTimeNodeList,'followupTime') return this.sortKey(this.setTimeNodeList,'followupTime')
}, },
followupMarkOne() { followupMarkOne() {
return this.setTimeNodeList1[0].followupMark; if(this.setTimeNodeList.length == 0) {
return;
}else {
return this.setTimeNodeList1[0].followupMark;
}
}, },
}, },
created() { created() {
...@@ -315,6 +243,25 @@ ...@@ -315,6 +243,25 @@
} }
}, },
watch: { watch: {
// valBegin(val){
// if(val){
// this.checkCallback = (formName)=>{
// console.log()
// this.$refs[formName].validate((valid) => {
// console.log(valid,'||||')
// if (valid) {
// this.setTimeNodeList.push(this.timeForm);
// this.timeForm = _.cloneDeep(timeFormInit);
// this.timeForm.formRef = this.getNowTime();
// this.timeForm.isDisabled = true;
// } else {
// return;
// }
// });
//
// }
// }
// },
timeForm(newVal, oldVal) { timeForm(newVal, oldVal) {
if(this.setTimeNodeList.length>0) { if(this.setTimeNodeList.length>0) {
this.timeForm.isDisabled = true; this.timeForm.isDisabled = true;
...@@ -345,14 +292,14 @@ ...@@ -345,14 +292,14 @@
this.timeForm.formRef = this.getNowTime(); this.timeForm.formRef = this.getNowTime();
}else { }else {
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
this.setTimeNodeList.push(this.timeForm); this.setTimeNodeList.push(this.timeForm);
this.timeForm = _.cloneDeep(timeFormInit); this.timeForm = _.cloneDeep(timeFormInit);
this.timeForm.formRef = this.getNowTime(); //新增一个form this.timeForm.formRef = this.getNowTime();
this.timeForm.isDisabled = true; //新增一个form this.timeForm.isDisabled = true;
} else { } else {
return; return;
} }
}); });
} }
}, },
......
<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 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册