16 changed files with 662 additions and 20 deletions
@ -0,0 +1,119 @@ |
|||||
|
<template> |
||||
|
<div class="app-container" v-loading="loading"> |
||||
|
<div class="hospital">测评已完成</div> |
||||
|
<div class="card"> |
||||
|
<div class="card-title">测评结果</div> |
||||
|
<div> |
||||
|
<div class="tip-content">主要体质:{{ resultData.result1 || "-" }}</div> |
||||
|
<div class="tip-content">兼夹体质:{{ resultData.result2 || "-" }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { evaResult } from "@/api/medicalFile.js"; |
||||
|
export default { |
||||
|
name: "Notice", |
||||
|
data() { |
||||
|
return { |
||||
|
loading: false, |
||||
|
resultData: {}, |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
this.evaId = this.$route.query.evaId; |
||||
|
this.getEvaResult(); |
||||
|
}, |
||||
|
methods: { |
||||
|
getEvaResult() { |
||||
|
this.loading = true; |
||||
|
evaResult({ param: { evaId: this.evaId } }).then((res) => { |
||||
|
this.resultData = res.data; |
||||
|
this.loading = false; |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped src="@/assets/styles/common.css"></style> |
||||
|
<style scoped> |
||||
|
.tip-content { |
||||
|
font-size: 20px; |
||||
|
font-weight: bold; |
||||
|
color: #8e592d; |
||||
|
padding-right: 60px; |
||||
|
width: 100%; |
||||
|
text-align: left; |
||||
|
} |
||||
|
.hospital1 { |
||||
|
text-align: center; |
||||
|
font-size: 14px; |
||||
|
color: #999; |
||||
|
} |
||||
|
.hospital { |
||||
|
background: #fff; |
||||
|
font-size: 20px; |
||||
|
color: #70483e; |
||||
|
line-height: 50px; |
||||
|
font-weight: 600; |
||||
|
margin-bottom: 10px; |
||||
|
border-radius: 6px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.BIMTips1 { |
||||
|
color: #cccccc; |
||||
|
} |
||||
|
.BIMTips2 { |
||||
|
color: #66cc00; |
||||
|
} |
||||
|
.BIMTips3 { |
||||
|
color: #c3c300; |
||||
|
} |
||||
|
.BIMTips4 { |
||||
|
color: #ff9900; |
||||
|
} |
||||
|
.BIMTips5 { |
||||
|
color: red; |
||||
|
} |
||||
|
.item-radio { |
||||
|
display: block; |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
.item-title { |
||||
|
font-size: 18px; |
||||
|
font-weight: bold; |
||||
|
color: #3d3d3d; |
||||
|
line-height: 26px; |
||||
|
} |
||||
|
.item-radio-box { |
||||
|
margin: 16px 0px; |
||||
|
} |
||||
|
|
||||
|
.card { |
||||
|
padding: 16px; |
||||
|
background: #fff; |
||||
|
border-radius: 6px; |
||||
|
margin-bottom: 14px; |
||||
|
} |
||||
|
|
||||
|
.card-title { |
||||
|
font-weight: 600; |
||||
|
font-size: 20px; |
||||
|
margin-bottom: 16px; |
||||
|
} |
||||
|
|
||||
|
.card-tips { |
||||
|
font-size: 14px; |
||||
|
color: #999999; |
||||
|
} |
||||
|
/* */ |
||||
|
.app-container { |
||||
|
/* background: linear-gradient(to bottom, #70483e, #f7f8fa); */ |
||||
|
background: #70483e; |
||||
|
min-height: 100vh; |
||||
|
} |
||||
|
</style> |
||||
|
<!-- >>> .el-input__inner { |
||||
|
padding: 0 15px !important; |
||||
|
} --> |
@ -0,0 +1,298 @@ |
|||||
|
<template> |
||||
|
<div class="app-container" v-loading="loading"> |
||||
|
<div class="hospital">中医体质辩识</div> |
||||
|
<!-- 姓名、性别(单选)、出生日期、年龄、联系方式 --> |
||||
|
<div class="card"> |
||||
|
<div class="card-title">基本信息</div> |
||||
|
<el-descriptions class="margin-top" :column="1"> |
||||
|
<el-descriptions-item label="姓名">{{ |
||||
|
form.name |
||||
|
}}</el-descriptions-item> |
||||
|
<el-descriptions-item label="手机号码"> |
||||
|
{{ form.phone }} |
||||
|
</el-descriptions-item> |
||||
|
</el-descriptions> |
||||
|
</div> |
||||
|
<div class="card"> |
||||
|
<div |
||||
|
class="q-example" |
||||
|
v-for="(item, index) in evaList" |
||||
|
:key="item.quesCode" |
||||
|
> |
||||
|
<div class="q-title">{{ index + 1 }}. {{ item.quesName }}</div> |
||||
|
<div class="q-option-box"> |
||||
|
<el-radio-group v-model="item.optionCode" size="small"> |
||||
|
<el-radio |
||||
|
class="q-radio" |
||||
|
v-for="option in item.options" |
||||
|
:key="option.optionCode" |
||||
|
:label="option.optionCode" |
||||
|
@click.native="handleRadio($event, item, option)" |
||||
|
>{{ option.optionName }} |
||||
|
</el-radio> |
||||
|
</el-radio-group> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="submit-box"> |
||||
|
<el-button |
||||
|
type="primary" |
||||
|
class="submit-box-but" |
||||
|
@click="handleEvaComplete" |
||||
|
> |
||||
|
提交 |
||||
|
</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { evaTestList, evaTestSubmit, evaComplete } from "@/api/medicalFile.js"; |
||||
|
|
||||
|
export default { |
||||
|
name: "Notice", |
||||
|
data() { |
||||
|
return { |
||||
|
form: {}, |
||||
|
evaList: [], |
||||
|
disabled: true, |
||||
|
loading: false, |
||||
|
evaId: "", |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
let { id, name, phone, tenantId } = this.$route.query; |
||||
|
this.form = { id, name, phone, tenantId }; |
||||
|
localStorage.setItem("tenantId", tenantId); |
||||
|
console.log(" this.form", this.form); |
||||
|
this.getList(); // 创建测评 |
||||
|
}, |
||||
|
methods: { |
||||
|
/** 查看试题列表 */ |
||||
|
getList() { |
||||
|
this.loading = true; |
||||
|
evaTestList({ param: { evaId: this.form.id } }).then((res) => { |
||||
|
// 处理已选答案的显示问题 |
||||
|
res.data.questions.forEach((item) => { |
||||
|
item.options.forEach((row) => { |
||||
|
if (row.optionChecked == 1) { |
||||
|
item.optionCode = row.optionCode; |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
this.evaList = res.data.questions; |
||||
|
this.loading = false; |
||||
|
}); |
||||
|
}, |
||||
|
// 提交试题答案 |
||||
|
handleRadio(_e, _item, option) { |
||||
|
// 处理单选框会触发两次的问题 |
||||
|
if (_e.target.tagName === "INPUT") { |
||||
|
return; |
||||
|
} |
||||
|
let questions = { |
||||
|
optionCode: option.optionCode, |
||||
|
optionName: option.optionName, |
||||
|
optionScore: option.optionScore, |
||||
|
quesCode: _item.quesCode, |
||||
|
}; |
||||
|
evaTestSubmit({ |
||||
|
param: { evaId: this.form.id, questions: [questions] }, |
||||
|
}).then((res) => {}); |
||||
|
}, |
||||
|
/** 完成测评 */ |
||||
|
handleEvaComplete() { |
||||
|
try { |
||||
|
let flat = true; |
||||
|
let testNUmArr = []; |
||||
|
this.evaList.forEach((item, index) => { |
||||
|
if (!item.optionCode) { |
||||
|
testNUmArr.push(index + 1); |
||||
|
flat = false; |
||||
|
} |
||||
|
}); |
||||
|
if (!flat) { |
||||
|
this.$message.error(`请选择所有题目答案(${testNUmArr.join("、")})`); |
||||
|
return; |
||||
|
} |
||||
|
this.loading = true; |
||||
|
evaComplete({ param: { evaId: this.form.id } }).then((res) => { |
||||
|
this.evaList = res.data.questions; |
||||
|
this.loading = false; |
||||
|
this.$router.replace({ |
||||
|
path: "/medicalResult", |
||||
|
query: { |
||||
|
evaId: this.form.id, |
||||
|
}, |
||||
|
}); |
||||
|
}); |
||||
|
} catch (e) { |
||||
|
console.log("e", e); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped src="@/assets/styles/common.css"></style> |
||||
|
<style scoped> |
||||
|
>>> .el-descriptions-item__content { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
>>> .el-descriptions-item__container { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
.q-radio { |
||||
|
display: block; |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
.q-option-box { |
||||
|
margin: 16px 0px; |
||||
|
} |
||||
|
|
||||
|
.q-title { |
||||
|
font-size: 18px; |
||||
|
font-weight: bold; |
||||
|
color: #3d3d3d; |
||||
|
line-height: 26px; |
||||
|
} |
||||
|
|
||||
|
>>> .el-dialog__header { |
||||
|
padding-bottom: 0; |
||||
|
} |
||||
|
>>> .el-checkbox { |
||||
|
margin-right: 10px rtant; |
||||
|
} |
||||
|
.form-item-xbs >>> .el-form-item__content { |
||||
|
margin-left: 0 !important; |
||||
|
} |
||||
|
.qq { |
||||
|
color: green; |
||||
|
} |
||||
|
.idcardupd { |
||||
|
height: 44px; |
||||
|
margin-bottom: 14px; |
||||
|
} |
||||
|
.idcardupd-but { |
||||
|
height: 44px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
color: #fff; |
||||
|
} |
||||
|
.idcardupd-but span { |
||||
|
padding-top: 1px; |
||||
|
} |
||||
|
.idcardupd-but img { |
||||
|
width: 20px; |
||||
|
height: 20px; |
||||
|
} |
||||
|
.idcardupd >>> .el-upload { |
||||
|
height: 44px; |
||||
|
border: none; |
||||
|
background: #c6a268; |
||||
|
} |
||||
|
.hospital1 { |
||||
|
text-align: center; |
||||
|
font-size: 14px; |
||||
|
color: #999; |
||||
|
} |
||||
|
.hospital { |
||||
|
background: #fff; |
||||
|
font-size: 20px; |
||||
|
color: #70483e; |
||||
|
line-height: 50px; |
||||
|
font-weight: 600; |
||||
|
margin-bottom: 10px; |
||||
|
border-radius: 6px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.BIMTips1 { |
||||
|
color: #cccccc; |
||||
|
} |
||||
|
.BIMTips2 { |
||||
|
color: #66cc00; |
||||
|
} |
||||
|
.BIMTips3 { |
||||
|
color: #c3c300; |
||||
|
} |
||||
|
.BIMTips4 { |
||||
|
color: #ff9900; |
||||
|
} |
||||
|
.BIMTips5 { |
||||
|
color: red; |
||||
|
} |
||||
|
.item-radio { |
||||
|
display: block; |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
.item-title { |
||||
|
font-size: 18px; |
||||
|
font-weight: bold; |
||||
|
color: #3d3d3d; |
||||
|
line-height: 26px; |
||||
|
} |
||||
|
.item-radio-box { |
||||
|
margin: 16px 0px; |
||||
|
} |
||||
|
>>> .el-radio__label { |
||||
|
font-size: 16px; |
||||
|
color: #555555; |
||||
|
line-height: 20px; |
||||
|
} |
||||
|
.submit-box { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
.submit-box .submit-box-but { |
||||
|
background: #c6a268; |
||||
|
width: 100%; |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
.card { |
||||
|
padding: 16px; |
||||
|
background: #fff; |
||||
|
border-radius: 6px; |
||||
|
margin-bottom: 14px; |
||||
|
} |
||||
|
|
||||
|
.card-title { |
||||
|
font-weight: 600; |
||||
|
font-size: 20px; |
||||
|
margin-bottom: 16px; |
||||
|
} |
||||
|
|
||||
|
.card-tips { |
||||
|
font-size: 14px; |
||||
|
color: #999999; |
||||
|
} |
||||
|
/* */ |
||||
|
.app-container { |
||||
|
/* background: linear-gradient(to bottom, #70483e, #f7f8fa); */ |
||||
|
background: #70483e; |
||||
|
min-height: 100vh; |
||||
|
} |
||||
|
>>> .el-input__inner { |
||||
|
border: none; |
||||
|
border-bottom: 1px solid #dcdfe6; |
||||
|
border-radius: 0; |
||||
|
} |
||||
|
>>> .el-date-editor.el-input { |
||||
|
width: 100% !important; |
||||
|
} |
||||
|
>>> .el-form-item--medium .el-form-item__label { |
||||
|
padding-right: 20px; |
||||
|
} |
||||
|
|
||||
|
>>> .el-radio input[aria-hidden="true"] { |
||||
|
display: none !important; |
||||
|
} |
||||
|
|
||||
|
>>> .el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) |
||||
|
.el-radio__inner { |
||||
|
box-shadow: none !important; |
||||
|
} |
||||
|
</style> |
||||
|
<!-- >>> .el-input__inner { |
||||
|
padding: 0 15px !important; |
||||
|
} --> |
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue