2021-02-26 20:14:35 +08:00

388 lines
10 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<section>
<div style="padding: 5px; text-align: center">
<img :src="logo" style="width: auto; height: 35px" alt="logo" />
</div>
<div style="margin: 10px 15px 10px 15px">
<el-steps :active="stepActive" finish-status="success">
<el-step
v-for="(item, index) in stepArray"
:key="index"
title=""
></el-step>
</el-steps>
</div>
<el-form
ref="form"
label-position="top"
:model="form"
:rules="rules"
label-width="100px"
style="padding: 16px"
>
<healthy-form1 v-show="stepArray[0]" :form.sync="form"></healthy-form1>
<healthy-form2 v-show="stepArray[1]" :form.sync="form"></healthy-form2>
<healthy-form3 v-show="stepArray[2]" :form.sync="form"></healthy-form3>
<healthy-form4 v-show="stepArray[3]" :form.sync="form"></healthy-form4>
<healthy-form5 v-show="stepArray[4]" :form.sync="form"></healthy-form5>
<healthy-form6 v-show="stepArray[5]" :form.sync="form"></healthy-form6>
<healthy-form7 v-show="stepArray[6]" :form.sync="form"></healthy-form7>
<healthy-form8 v-show="stepArray[7]" :form.sync="form"></healthy-form8>
<healthy-form9
v-show="stepArray[8]"
ref="fileForm"
@addOrEditHealthy="addCustomerHealthy()"
:form.sync="form"
></healthy-form9>
<el-form-item style="text-align: center; margin: 30px auto">
<el-button
@click="nextStep(-1)"
style="margin-right: 10px; width: 40%"
v-show="stepActive != 0"
>上一步</el-button
>
<el-button
type="primary"
@click="nextStep(1)"
style="width: 40%"
v-show="stepActive != stepArray.length - 1"
>下一步</el-button
>
<el-button
type="primary"
@click="submit()"
style="width: 40%"
v-show="stepActive == stepArray.length - 1"
>提交数据</el-button
>
</el-form-item>
</el-form>
</section>
</template>
<script>
import {
getDictData,
addCustomerHealthy,
physicalSignsList,
getCustomerBaseMessage,
} from "@/api/custom/customerInvestigation";
import * as healthyData from "@/utils/healthyData";
const logo = require("@/assets/logo/st_logo.png");
import Form1 from "@/components/HealthyForm/Form1";
import Form2 from "@/components/HealthyForm/Form2";
import Form3 from "@/components/HealthyForm/Form3";
import Form4 from "@/components/HealthyForm/Form4";
import Form5 from "@/components/HealthyForm/Form5";
import Form6 from "@/components/HealthyForm/Form6";
import Form7 from "@/components/HealthyForm/Form7";
import Form8 from "@/components/HealthyForm/Form8";
import Form9 from "@/components/HealthyForm/Form9";
export default {
name: "index",
data() {
return {
//客户是否存在标识
customerExistFlag: false,
healthyData: healthyData,
logo,
submitFlag: false,
stepArray: [true, false, false, false, false, false, false, false, false],
stepActive: 0,
form: {
customerEncId: null,
name: null,
phone: null,
conditioningProjectId: 0,
sex: 1,
age: null,
tall: null,
weight: null,
condiment: ["1", "2", "3"],
otherCondiment: null,
cookingStyle: ["8", "9", "4", "11"],
cookingStyleRate: [1, 1, 1, 1, 1, 1],
washVegetablesStyle: ["2"],
otherWashVegetablesStyle: null,
breakfastType: "2",
breakfastFood: null,
lunchType: ["3"],
dinner: ["2"],
vegetableRate: 5,
commonMeat: null,
dinnerTime: "19:00",
supperNum: 1,
supperFood: null,
dietHotAndCold: "3",
dietFlavor: ["1", "2"],
vegetablesNum: 1,
vegetablesRateType: "3",
fruitsNum: 1,
fruitsTime: "2",
fruitsRate: "2",
riceNum: 1,
riceFull: 8,
eatingSpeed: "3",
snacks: ["1"],
otherSnacks: null,
healthProductsFlag: 0,
healthProductsBrand: null,
healthProductsName: null,
healthProductsWeekRate: 0,
healthProductsDayRate: 0,
waterNum: 1500,
waterType: ["3"],
waterHabit: ["5"],
drinksNum: [0, 0, 0, 0, 0, 0, 0, 0],
drinkWineFlag: "3",
drinkWineClassify: ["3"],
otherWineClassify: null,
drinkWineAmount: [0, 0, 0],
smokeFlag: 0,
smokeRate: [0, 0, 0],
secondSmoke: 0,
workIndustry: null,
workType: ["2"],
defecationNum: 1,
otherDefecationNum: 0,
defecationTime: ["1"],
defecationShape: null,
defecationSmell: null,
defecationSpeed: null,
defecationColor: null,
motionNum: 3,
motionDuration: 40,
motionTime: "08:00",
//motionMode:"有氧",
aerobicMotionClassify: ["2"],
anaerobicMotionClassify: [],
anaerobicAerobicMotionClassify: [],
otherMotionClassify: null,
motionField: ["1"],
otherMotionField: null,
sleepTime: "23:00",
sleepQuality: ["2"],
sleepDrugFlag: 0,
sleepDrug: null,
stayupLateFlag: 0,
stayupLateWeekNum: 0,
physicalSignsId: [],
otherPhysicalSigns: null,
bloodData: [],
moistureDate: [],
familyIllnessHistory: [],
otherFamilyIllnessHistory: null,
operationHistory: [],
otherOperationHistory: null,
nearOperationFlag: 0,
recoveryeSituation: null,
longEatDrugFlag: 0,
longEatDrugClassify: [],
otherLongEatDrugClassify: null,
allergyFlag: 0,
allergySituation: null,
allergen: [],
otherAllergen: null,
medicalReport: [],
medicalReportName: [],
position: 0,
experience: null,
rebound: 1,
difficulty: null,
crux: 1,
dishesIngredient: null,
makeFoodType: 3,
},
timer: null,
rules: {
sex: [{ required: true, trigger: "blur", message: "请选择性别" }],
age: [
{ required: true, trigger: "blur", message: "请填写年龄" },
{
required: true,
trigger: "blur",
pattern: /^[1-9]\d*$/,
message: "年龄格式不正确",
},
],
tall: [
{ required: true, trigger: "blur", message: "请填写身高" },
{
required: true,
trigger: "blur",
pattern: /^[1-9]\d*$/,
message: "身高格式不正确",
},
],
weight: [
{ required: true, trigger: "blur", message: "请填写体重" },
{
required: true,
trigger: "blur",
pattern: /^(\d+)(\.\d{1})?$/,
message: "体重格式不正确",
},
],
conditioningProjectId: [
{ required: true, trigger: "blur", message: "请选择调理项目" },
],
position: [
{ required: true, trigger: "blur", message: "请选择地理位置" },
],
},
};
},
components: {
"healthy-form1": Form1,
"healthy-form2": Form2,
"healthy-form3": Form3,
"healthy-form4": Form4,
"healthy-form5": Form5,
"healthy-form6": Form6,
"healthy-form7": Form7,
"healthy-form8": Form8,
"healthy-form9": Form9,
},
methods: {
//根据用户ID获取用户基本信息手机号、姓名
getCustomerBase(id) {
if (id == null || id == undefined) {
return;
}
getCustomerBaseMessage(id)
.then((response) => {
if (response.code === 200) {
if (response.data) {
this.customerExistFlag = true;
this.form.name = response.data.name;
this.form.phone = response.data.phone;
}
}
})
.catch(function () {
console.log("error");
});
},
submit() {
if (this.submitFlag) {
this.$message({
message: "请勿重复提交1分钟后重试",
type: "warning",
});
return;
}
this.$refs.form.validate((valid) => {
if (valid) {
this.submitFlag = true;
this.timer = setTimeout(this.fail, 1000 * 60);
this.$refs.fileForm.uploadFile();
} else {
this.$message({
message: "数据未填写完整",
type: "warning",
});
}
});
},
addCustomerHealthy() {
//数据处理
let cusMessage = Object.assign({}, this.form);
this.healthyData["arrayName"].forEach(function (item, index) {
cusMessage[item] =
cusMessage[item] != null ? cusMessage[item].join(",") : null;
});
addCustomerHealthy(cusMessage)
.then((response) => {
if (response.code === 200) {
this.$notify({
title: "提交成功",
message: "",
type: "success",
});
}
})
.catch(function () {
console.log("error");
});
},
fail() {
// console.log("定时--------");
this.submitFlag = false;
},
nextStep(step) {
if (!this.customerExistFlag) {
this.$message.error("客户不存在");
return;
}
this.$refs.form.validate((valid) => {
if (valid || step < 0) {
this.stepArray[this.stepActive] = false;
this.stepActive = this.stepActive + step;
this.stepArray[this.stepActive] = true;
this.goTop();
} else {
this.$message({
message: "数据未填写完整",
type: "warning",
});
}
});
},
goTop() {
window.scroll(0, 0);
},
},
created() {
this.form.customerEncId = this.$route.params.id;
this.getCustomerBase(this.form.customerEncId);
},
beforeCreate() {
document.title = this.$route.meta.title;
},
};
</script>
<style scoped>
.el-form-item {
margin-bottom: 8px;
}
.p_title_1 {
font-size: 18px;
font-weight: bold;
margin-top: 30px;
}
.p_title_2 {
font-size: 16px;
font-weight: bold;
margin-top: 30px;
}
.p_title_3 {
font-size: 14px;
font-weight: bold;
margin-top: 30px;
}
.margin-left {
margin-left: 14px;
}
.el-input__inner {
width: 30%;
}
.margin-top-10 {
margin-top: 10px;
}
.width-50-left-8-right-5 {
width: 50%;
margin-left: 8px;
margin-right: 5px;
}
.width-70-left-8-right-5 {
width: 70%;
margin-left: 8px;
margin-right: 5px;
}
</style>