dbsd_kczx/src/views/kc/wjxWjxx/components/WjxWjxxTmlbDjjgForm.vue

164 lines
6.3 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>
<a-spin :spinning="confirmLoading">
<a-row style="height: calc(80vh);">
<a-col :span="24" style="overflow-y: scroll;height: calc(80vh);">
<div style="text-align: center;width: 100%;font-weight: bold;font-size: 20px;padding: 20px;">{{ djxxData.title }}</div>
<div style="text-align: right;font-size: 16px;padding-right: 20px;">
<span style="text-decoration: underline;margin-right: 15px;">答卷人{{ djxxData.userName }} </span>
<span v-if="djxxData.atype == 6" style="text-decoration: underline;margin-right: 15px;">总分:{{ djxxData.totalScore }} </span>
<span v-if="djxxData.atype == 6" style="text-decoration: underline;margin-right: 15px;">得分:{{ djxxData.score }} </span>
<span style="text-decoration: underline;margin-right: 15px;">用时:{{djxxData.answerSfm}} </span>
</div>
<!-- 题干信息 -->
<div style="width:100%;" v-for="(item,index) in tiganData" :key="index">
<!-- 单选题 -->
<div style="width: 100%;" v-if="item.wjType==3">
<div style="text-align: left;width: 100%;font-weight: bold;font-size: 18px;padding: 20px;">单选题</div>
<a-card >
<template #title>
<span>{{index+1}}、</span><span v-html:value="item.wjTitle" style="white-space:pre-wrap;word-wrap : break-word"></span>
</template>
<template #extra v-if="djxxData.atype == 6">
<div style="margin-left: 40px;">题目分值: {{item.wjScore}} 分</div>
<div style="margin-left: 40px;">所得分值: {{item.itemScore}} 分</div>
</template>
<a-radio-group v-model:value="item.itemSelected" style="width: 100%" size="default" disabled>
<div style="width: 100%" v-for="(tmxx,index) in item.wjxWjxxTmxxList">
<a-radio :value="tmxx.itemIndex+``" style="width: 100%;margin-bottom: 5px;">
<span v-html:value="tmxx.itemTitle" style="width:80%;font-size: 16px;"></span>
</a-radio>
</div>
</a-radio-group>
</a-card>
</div>
<!-- 多选题 -->
<div style="width: 100%;" v-else-if="item.wjType==4">
<div style="text-align: left;width: 100%;font-weight: bold;font-size: 18px;padding: 20px;">多选题</div>
<a-card >
<template #title>
<span>{{index+1}}、</span><span v-html:value="item.wjTitle" style="white-space:pre-wrap;word-wrap : break-word"/>
</template>
<template #extra v-if="djxxData.atype == 6">
<div style="margin-left: 40px;">题目分值: {{item.wjScore}} 分</div>
<div style="margin-left: 40px;">所得分值: {{item.itemScore}} 分</div>
</template>
<a-checkbox-group v-model:value="item.itemSelected" style="width: 100%" size="default" disabled>
<a-row>
<a-col :span="24" v-for="(tmxx,index) in item.wjxWjxxTmxxList">
<a-checkbox :value="tmxx.itemIndex" style="width: 100%;margin-bottom: 5px;">
<span v-html:value="tmxx.itemTitle" style="width:80%;font-size: 16px;"></span>
</a-checkbox>
</a-col>
</a-row>
</a-checkbox-group>
</a-card>
</div>
<!-- 填空题 -->
<div style="width: 100%;" v-else-if="item.wjType==5">
<div style="text-align: left;width: 100%;font-weight: bold;font-size: 18px;padding: 20px;">填空题</div>
<a-card >
<template #title>
<span>{{index+1}}、</span><span v-html:value="item.wjTitle" style="white-space:pre-wrap;word-wrap : break-word"/>
</template>
<template #extra v-if="djxxData.atype == 6">
<div style="margin-left: 40px;">题目分值: {{item.wjScore}} 分</div>
<div style="margin-left: 40px;">所得分值: {{item.itemScore}} 分</div>
</template>
<a-row>
<a-col :span="24">
<a-textarea v-model:value="item.answerText" style="width:100%;" :auto-size="{ minRows: 2, maxRows: 5 }" disabled/>
</a-col>
</a-row>
</a-card>
</div>
<div v-else>
无对应类型
</div>
</div>
</a-col>
</a-row>
</a-spin>
</template>
<script lang="ts" name="wjxWjxx-add" setup>
import { ref, nextTick, defineExpose } from 'vue';
import { Icon } from '/@/components/Icon';
import { useMessage } from '/@/hooks/web/useMessage';
import { defHttp } from '/@/utils/http/axios';
import {
queryWjxWjxxTmxxListByMainId,
queryDataById,
saveOrUpdate,
djtj
} from '/@/views/kc/wjxWjxxTmlb/WjxWjxxTmlb.api';
const title = ref<string>('');
const mainId = ref<string>('');
const confirmLoading = ref<boolean>(false);
const tiganData = ref<any>([]);
const djxxData = ref<any>({});
const { createMessage } = useMessage();
const emit = defineEmits(['register', 'success']);
//初始化
function edit(id){
tiganData.value = [];
mainId.value = id;
defHttp.get({url:'/wjxDjxx/queryByMainId',params:{id:id}}).then(res =>{
// console.log(`🚀 ~ defHttp.get ~ res:`, res)
let djxx = res;
let list = djxx.wjxDjxxTmxxList;
for(let i=0;i<list.length;i++){
let par = list[i];
if(par.wjType==4){
let lssj = par.itemSelected.split(",");
const numArray = lssj.map(str => parseInt(str));
list[i].itemSelected = numArray;
}
}
tiganData.value = list;
djxxData.value = djxx;
})
}
//提交数据
async function submitForm(){
emit('ok');
}
defineExpose({
edit,
submitForm,
});
</script>
<style lang="less" scoped>
/deep/span.ant-radio + * {
width: 100%;
}
/deep/.ant-checkbox-wrapper {
box-sizing: border-box;
margin: 0;
padding: 0;
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5715;
list-style: none;
font-feature-settings: tnum;
display: inline-flex;
align-items: baseline;
line-height: unset;
cursor: pointer;
width: 80%;
}
/deep/.ant-checkbox + span {
padding-right: 8px;
padding-left: 8px;
width: 100%;
}
</style>