You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
298 lines
6.3 KiB
298 lines
6.3 KiB
<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: #dad0a7;
|
|
}
|
|
.hospital1 {
|
|
text-align: center;
|
|
font-size: 14px;
|
|
color: #999;
|
|
}
|
|
.hospital {
|
|
background: #fff;
|
|
font-size: 20px;
|
|
color: #406e49;
|
|
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: #dad0a7;
|
|
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, #406E49, #f7f8fa); */
|
|
background: #406e49;
|
|
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;
|
|
} -->
|
|
|