提交 cb59f6e4 编写于 作者: tao.wu's avatar tao.wu

Merge branch 'dev-scaleHype-20190428' of...

Merge branch 'dev-scaleHype-20190428' of 192.168.110.53:com.pica.cloud.education.frontend/pica.cloud.web-education-admin into dev-scaleHype-20190428
......@@ -31,6 +31,8 @@
<stroke v-if="scaleNo=='SCALE0003'" :showBtn="showBtn" :scaleType="scaleNo" :checkStart="checkStart" @checkEnd="checkEnd" :saveWay="saveWay" />
<!--高血压-->
<hypertension v-if="scaleNo=='SCALE0001'" :showBtn="showBtn" :scaleType="scaleNo" :checkStart="checkStart" @checkEnd="checkEnd" :saveWay="saveWay" ></hypertension>
<!--糖尿病-->
<diabetes v-if="scaleNo=='SCALE0002'" :showBtn="showBtn" :scaleType="scaleNo" :checkStart="checkStart" @checkEnd="checkEnd" :saveWay="saveWay" ></diabetes>
</div>
......@@ -45,6 +47,7 @@
// 脑卒中
import stroke from './patient-scale/stroke'
import hypertension from './patient-scale/hypertension'
import diabetes from './patient-scale/diabetes'
export default {
data(){
return {
......@@ -61,6 +64,7 @@
stroke,
hypertension,
BreadCrumb,
diabetes,
},
methods: {
formSubmit(val){
......
import { checkMobile } from '@/utils/followup/followupUtils/checkField';
export default ($this) => {
return [
// {
// formType: 'input',
// className: 'float-none',
// prop: 'followUpOrgName',
// model: 'followUpOrgName',
// label: '随访单位名称:',
// disabled: false,
// placeholder: '请输入随访单位名称',
// spanNum: 12,
// maxlength: 30,
// type: 'text',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访单位名称', trigger: ['submit','change']}],
// },
// {
// formType: 'input',
// className: 'float-none',
// prop: 'followUpUser',
// model: 'followUpUser',
// label: '随访人员姓名:',
// disabled: false,
// placeholder: '请输入随访人员姓名',
// spanNum: 12,
// maxlength: 30,
// type: 'text',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访人员姓名', trigger: ['submit','change']}],
// },
// {
// formType: 'input',
// className: 'float-none',
// prop: 'followUpMobile',
// model: 'followUpMobile',
// label: '随访人员联系电话:',
// disabled: false,
// placeholder: '请输入随访人员联系电话',
// spanNum: 12,
// maxlength: 11,
// type: 'tel',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访人员联系电话', trigger: ['submit','change']},{ validator: checkMobile , trigger: ['submit','change'] }],
// },
// {
// formType: 'date-picker',
// className: 'float-none',
// prop: 'surveyTime',
// model: 'surveyTime',
// placeholder: '请选择',
// label: '本次调查时间:',
// format: 'yyyy-MM-dd',
// valueFormat: 'yyyy-MM-dd',
// dateType: 'date',
// type: 'date',
// rules: [{required: true, message: '请选择本次调查时间', trigger: ['submit','change']}],
// spanNum: 12,
// },
]
}
import { checkMobile } from '@/utils/followup/followupUtils/checkField';
export default ($this) => {
return [
// {
// formType: 'input',
// className: 'float-none',
// prop: 'followUpOrgName',
// model: 'followUpOrgName',
// label: '随访单位名称:',
// disabled: false,
// placeholder: '请输入随访单位名称',
// spanNum: 12,
// maxlength: 30,
// type: 'text',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访单位名称', trigger: ['submit','change']}],
// },
// {
// formType: 'input',
// className: 'float-none',
// prop: 'followUpUser',
// model: 'followUpUser',
// label: '随访人员姓名:',
// disabled: false,
// placeholder: '请输入随访人员姓名',
// spanNum: 12,
// maxlength: 30,
// type: 'text',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访人员姓名', trigger: ['submit','change']}],
// },
// {
// formType: 'input',
// className: 'float-none',
// prop: 'followUpMobile',
// model: 'followUpMobile',
// label: '随访人员联系电话:',
// disabled: false,
// placeholder: '请输入随访人员联系电话',
// spanNum: 12,
// maxlength: 11,
// type: 'tel',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访人员联系电话', trigger: ['submit','change']},{ validator: checkMobile , trigger: ['submit','change'] }],
// },
// {
// formType: 'date-picker',
// className: 'float-none',
// prop: 'surveyTime',
// model: 'surveyTime',
// placeholder: '请选择',
// label: '本次调查时间:',
// format: 'yyyy-MM-dd',
// valueFormat: 'yyyy-MM-dd',
// dateType: 'date',
// type: 'date',
// rules: [{required: true, message: '请选择本次调查时间', trigger: ['submit','change']}],
// spanNum: 12,
// },
]
}
import { checkMobile } from '@/utils/followup/followupUtils/checkField';
export default ($this) => {
return [
// {
// formType: 'input',
// className: 'float-none',
// prop: 'followUpOrgName',
// model: 'followUpOrgName',
// label: '随访单位名称:',
// disabled: false,
// placeholder: '请输入随访单位名称',
// spanNum: 12,
// maxlength: 30,
// type: 'text',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访单位名称', trigger: ['submit','change']}],
// },
// {
// formType: 'input',
// className: 'float-none',
// prop: 'followUpUser',
// model: 'followUpUser',
// label: '随访人员姓名:',
// disabled: false,
// placeholder: '请输入随访人员姓名',
// spanNum: 12,
// maxlength: 30,
// type: 'text',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访人员姓名', trigger: ['submit','change']}],
// },
// {
// formType: 'input',
// className: 'float-none',
// prop: 'followUpMobile',
// model: 'followUpMobile',
// label: '随访人员联系电话:',
// disabled: false,
// placeholder: '请输入随访人员联系电话',
// spanNum: 12,
// maxlength: 11,
// type: 'tel',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访人员联系电话', trigger: ['submit','change']},{ validator: checkMobile , trigger: ['submit','change'] }],
// },
// {
// formType: 'date-picker',
// className: 'float-none',
// prop: 'surveyTime',
// model: 'surveyTime',
// placeholder: '请选择',
// label: '本次调查时间:',
// format: 'yyyy-MM-dd',
// valueFormat: 'yyyy-MM-dd',
// dateType: 'date',
// type: 'date',
// rules: [{required: true, message: '请选择本次调查时间', trigger: ['submit','change']}],
// spanNum: 12,
// },
]
}
import { checkMobile } from '@/utils/followup/followupUtils/checkField';
export default ($this) => {
return [
// {
// formType: 'input',
// className: 'float-none',
// prop: 'followUpOrgName',
// model: 'followUpOrgName',
// label: '随访单位名称:',
// disabled: false,
// placeholder: '请输入随访单位名称',
// spanNum: 12,
// maxlength: 30,
// type: 'text',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访单位名称', trigger: ['submit','change']}],
// },
// {
// formType: 'input',
// className: 'float-none',
// prop: 'followUpUser',
// model: 'followUpUser',
// label: '随访人员姓名:',
// disabled: false,
// placeholder: '请输入随访人员姓名',
// spanNum: 12,
// maxlength: 30,
// type: 'text',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访人员姓名', trigger: ['submit','change']}],
// },
// {
// formType: 'input',
// className: 'float-none',
// prop: 'followUpMobile',
// model: 'followUpMobile',
// label: '随访人员联系电话:',
// disabled: false,
// placeholder: '请输入随访人员联系电话',
// spanNum: 12,
// maxlength: 11,
// type: 'tel',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访人员联系电话', trigger: ['submit','change']},{ validator: checkMobile , trigger: ['submit','change'] }],
// },
// {
// formType: 'date-picker',
// className: 'float-none',
// prop: 'surveyTime',
// model: 'surveyTime',
// placeholder: '请选择',
// label: '本次调查时间:',
// format: 'yyyy-MM-dd',
// valueFormat: 'yyyy-MM-dd',
// dateType: 'date',
// type: 'date',
// rules: [{required: true, message: '请选择本次调查时间', trigger: ['submit','change']}],
// spanNum: 12,
// },
]
}
import { checkMobile } from '@/utils/followup/followupUtils/checkField';
export default ($this) => {
return [
{
formType: 'checkbox',
className: 'obj-form-title',
prop: 'symptom',
model: 'symptom',
label: '选择的症状:',
// linkageRule: [{name: 'takeHypoglycemicDrugs', value: ['是']}],
disabled: false,
changeFun: (val) => {
// console.log(val)
},
spanNum: 24,
options: [
{label: '无症状', value: '无症状', disabled: false},
{label: '多饮', value: '多饮', disabled: false},
{label: '多食', value: '多食', disabled: false},
{label: '多尿', value: '多尿', disabled: false},
{label: '视力模糊', value: '视力模糊', disabled: false},
{label: '感染', value: '感染', disabled: false},
{label: '手脚麻木', value: '手脚麻木', disabled: false},
{label: '下肢浮肿', value: '下肢浮肿', disabled: false},
{label: '体重明显下降', value: '体重明显下降', disabled: false},
{label: '其他', value: '其他', disabled: false},
],
rules: [{required: true, message: '选择的症状', trigger: ['submit']}]
},
{
formType: 'input',
className: 'obj-form-title4',
linkageRule: [{name: 'symptom',value: ['其他']}],
prop: 'remark',
model: 'remark',
disabled: false,
placeholder: '请输入其他症状',
spanNum: 12,
maxlength: 30,
type: 'text',
labmsg: '',
rules: [{ required: true, message: '请输入其他症状', trigger: ['submit','change'] }]
},
]
}
<template>
<div class="form-wrap">
<!--渲染不同的模块表单-->
<div v-if="canRender" v-for="(item, index) in addComponents">
<div v-if="item.showModule" class="content-box" >
<div v-if="!item.hideTitle" class="title">{{item.title}}</div>
<el-form
:ref="'form' + index"
:id="'form' + index"
:model="item.formObject"
size="medium"
label-position="left"
class="form"
>
<FormScale
:dataSource="item.dataSource"
:form="item.formObject"
:ruleNew="item.ruleNew"
:needRule="needRule"
:class="item.className"
/>
</el-form>
</div>
</div>
</div>
</template>
<script>
import { getDomain, getScaleModels, getScaleDetail, postScale, updateScalesStatus, submitScale } from '@/utils/followup/followapis'
// 量表 template
import FormScale from '@/components/followup/form/index'
// 量表模块数据模型
// 高血压
import diabetesSourseSymptom from '../models/diabetes/diabetesSourseSymptom'
import diabetesSourseSign from '../models/diabetes/diabetesSourseSign'
import diabetesSourseLifeMode from '../models/diabetes/diabetesSourseLifeMode'
import diabetesSourseAuxiliary from '../models/diabetes/diabetesSourseAuxiliary'
import diabetesSourseOther from '../models/diabetes/diabetesSourseOther'
export default {
data(){
return {
domain: '',//通过接口获取白名单域名
needRule: true, //是否动态开启验证
showModule: true, //是否隐藏表单模块
canRender: true,
valid: false,
validList: [],
moduleList: [],//模块列表
planPatientsTimesId: '',
scaleNo: '',
doctorId: '',
planTimesId: '',
addComponents: [],
addComponentsSourceList: [],
formData: {},//整个表单对象
}
},
components: {
FormScale,
},
props: {
scaleType: String,//病种类型
checkStart: Boolean,
saveWay: Number,
showBtn: String,
},
watch: {
checkStart(val){
if(val){
this.validList = [];
for(let i=0;i<this.addComponents.length;i++){
let formName = this.addComponents[i].formName;
// 将每个模块的fornName对应后台的表名放到表单对象
this.formData[formName] = this.addComponents[i].formObject;
if(formName==='stroke_006'||formName==='stroke_014'||formName==='stroke_015'){
this.setRuleToTrue(i)
}
this.$nextTick(()=>{
// saveWay=1是提交,进行校验,2是暂存,不需要校验,直接发送请求
if(this.saveWay==1){
if(this.$refs['form' + i].length > 0){
this.$refs['form' + i][0].validate((valid) => {
this.validList.push(valid);
});
}
}
})
}
this.$nextTick(()=>{
// saveWay=1是提交,进行校验,2是暂存,不需要校验,直接发送请求
if(this.saveWay==1){
for(let k=0;k<this.validList.length;k++){
if(!this.validList[k]){
this.$emit('checkEnd',false);
this.valid = false;
this.$nextTick(() => {
// 如果表单未完善,跳转到该表单模块
document.querySelector(`#form${k}`).scrollIntoView(true);
})
return;
}else{
this.valid = true;
}
}
if(this.valid){
this.dataSubmit(()=>{
updateScalesStatus({
fuPlanPatientTimesId: this.planPatientsTimesId,
planTimesId: this.planTimesId,
resourceId: this.scaleNo
})
});
}
this.$emit('checkEnd',false);
}else{
this.dataSubmit();
}
})
}
},
showModule(val){
this.addComponents.forEach((item,index)=>{
if(index >= 3){
this.addComponents[index].showModule = val;
}
})
},
needRule(val){
this.addComponents.forEach((item,index)=>{
let formName = item.formName;
if(formName==='stroke_006'||formName==='stroke_014'||formName==='stroke_015'){
this.addComponents[index].ruleNew = val;
this.setRuleToTrue(index);
// if(this.$refs['form' + index].length > 0){
// this.$refs['form' + index][0].resetFields();
// }
}
})
}
},
created(){
this.planPatientsTimesId = this.$route.query.planPatientsTimesId
this.scaleNo = this.$route.query.scaleNo
this.doctorId = this.$route.query.doctorId
this.planTimesId = this.$route.query.planTimesId;
// 获取量表类型
this.initScaleType();
// 获取白名单域名
this.getWhiteDomain();
localStorage.setItem('needRule',this.needRule);
},
methods: {
// 获取量表类型
initScaleType(){
this.addComponentsSourceList = [
{name: 'BaseInfo0',formObject: {},showModule: true,formName: 'diabetes_001',className: 'obj-form-title',dataSource: diabetesSourseSymptom(this), hideTitle: false, title: '一、症状'},
{name: 'BaseInfo0',formObject: {},showModule: true,formName: 'diabetes_002',className: 'obj-form-title',dataSource: diabetesSourseSign(this), hideTitle: false, title: '二、体征'},
{name: 'BaseInfo0',formObject: {},showModule: true,formName: 'diabetes_003',className: 'obj-form-title',dataSource: diabetesSourseLifeMode(this), hideTitle: false, title: '三、生活方式指导'},
{name: 'BaseInfo0',formObject: {},showModule: true,formName: 'diabetes_004',className: 'obj-form-title',dataSource: diabetesSourseAuxiliary(this), hideTitle: false, title: '四、辅助检查'},
{name: 'BaseInfo0',formObject: {},showModule: true,formName: 'diabetes_005',className: 'obj-form-title',dataSource: diabetesSourseOther(this), hideTitle: false, title: '五、用药情况'},
]
},
// 获取白名单域名
getWhiteDomain(){
getDomain().then(res=>{
if(res.code=='000000'){
this.domain = res.data;
console.log('domain',this.domain)
// 获取量表模块
this.getFormModules();
if(this.showBtn!='0'){
// 获取量表详情
this.getFormDetail();
}
}else{
this.$message({
message: res.message,
type: 'error'
});
}
})
},
// 动态开启验证开关
setRuleToTrue(index){
this.addComponents[index].dataSource.forEach((item,k)=>{
if(item.rules && item.rules.length > 0){
if(!this.needRule){
this.addComponents[index].dataSource[k].rules[0].required = true;
}else{
this.addComponents[index].dataSource[k].rules[0].required = false;
}
}
})
},
// 获取展示的模块
getFormModules(){
getScaleModels(this.domain,this.scaleNo).then(res=>{
if(res.code=='000000'){
this.moduleList = res.data;
console.log('接口返回',this.moduleList);
for(let i=0;i<this.moduleList.length;i++){
for(let j=0;j<this.addComponentsSourceList.length;j++){
if(this.moduleList[i]==this.addComponentsSourceList[j].formName){
this.addComponents.push(this.addComponentsSourceList[j])
}
}
}
}else{
this.$message({
message: res.message,
type: 'error'
});
}
})
},
// 获取量表详情
getFormDetail(){
getScaleDetail(this.domain,this.planPatientsTimesId,this.scaleNo).then(res=>{
this.formData = res.data
let keysList = Object.keys(this.formData);
if(keysList.length > 0){
for(let i=0;i<this.addComponents.length;i++){
let formName = this.addComponents[i].formName;
if(this.formData[formName]){
let investigationState = this.formData[formName].investigationState;
let inTurn = this.formData[formName].inTurn;
if( ( investigationState === '失访' || investigationState === '死亡' ) ){
this.showModule = false;
}
if(inTurn == '12个月'){
this.needRule = false;
}
this.addComponents[i].formObject = this.formData[formName];
}
// 量表字段回显,会触发change校验,所以这里拿到数据渲染页面后,重置验证
if(this.$refs['form' + i].length > 0){
this.$refs['form' + i][0].resetFields();
}
}
this.canRender = true;
this.$forceUpdate();
}
})
},
// 提交量表
dataSubmit(callback){
// if(this.valid){
// console.log(this.formData)
this.formData.doctorId = parseFloat(this.doctorId);
this.formData.saveWay = parseFloat(this.saveWay);
this.formData.planPatientsTimesId = parseFloat(this.planPatientsTimesId);
this.formData.scaleNo = this.scaleNo;
this.formData.isLine = 2;
// console.log(JSON.stringify(this.formData))
postScale(this.domain,this.formData).then(res=>{
if(res.code=='000000'){
let doMsg = (this.saveWay==1) ? '提交成功' : '保存成功';
this.$message({
message: doMsg,
type: 'success'
});
if(callback){
callback();
}
setTimeout(()=>{
this.$router.push({
path: '/followup/record-manage/record-list'
})
},1000)
}else{
let doMsg = (this.saveWay==1) ? '提交失败' : '保存失败';
this.$message({
message: doMsg,
type: 'error'
});
}
});
// }
// this.$emit('checkEnd',false);
},
},
}
</script>
<style scoped lang="scss">
.form-wrap{
.content-box{
.title{
line-height: 60px;
height: 60px;
font-weight: bold;
font-size: 18px;
border-bottom: 1px dashed #ccc;
}
}
}
</style>
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册