Merge branch 'master' of http://47.115.223.229:8888/yangjun/dbsd_kczx
This commit is contained in:
commit
5f80b5c854
|
@ -62,6 +62,17 @@ const zuoye: AppRouteModule = {
|
||||||
title: '课程工具',
|
title: '课程工具',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
path: 'dqkcWenjuan',
|
||||||
|
name: 'dqkcWenjuan',
|
||||||
|
component: () => import('/@/views/kc/wjxWjxx/WjxWjxxList.vue'),
|
||||||
|
meta: {
|
||||||
|
title: '当前问卷',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,18 @@ export const columns: BasicColumn[] = [
|
||||||
align: "center",
|
align: "center",
|
||||||
dataIndex: 'title'
|
dataIndex: 'title'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '问卷类型',
|
||||||
|
align: "center",
|
||||||
|
dataIndex: 'atype',
|
||||||
|
customRender: ({ text }) => {
|
||||||
|
let dictMap = {
|
||||||
|
'1': '调查',
|
||||||
|
'6': '考试',
|
||||||
|
}
|
||||||
|
return dictMap[text??''];
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '问卷描述',
|
title: '问卷描述',
|
||||||
align: "center",
|
align: "center",
|
||||||
|
|
|
@ -44,6 +44,8 @@
|
||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
<WjxWjxxModal ref="registerModal" @success="handleSuccess"></WjxWjxxModal>
|
<WjxWjxxModal ref="registerModal" @success="handleSuccess"></WjxWjxxModal>
|
||||||
<WjxWjxxTmlbModal ref="WjxWjxxTmlbModalPage" @success="handleSuccess"></WjxWjxxTmlbModal>
|
<WjxWjxxTmlbModal ref="WjxWjxxTmlbModalPage" @success="handleSuccess"></WjxWjxxTmlbModal>
|
||||||
|
<WjxWjxxTmlbDjModal ref="WjxWjxxTmlbDjModalPage" @success="handleSuccess"></WjxWjxxTmlbDjModal>
|
||||||
|
<WjxWjxxTmlbDjjgModal ref="WjxWjxxTmlbDjjgModalPage" @success="handleSuccess"></WjxWjxxTmlbDjjgModal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -57,12 +59,15 @@
|
||||||
import { downloadFile } from '/@/utils/common/renderUtils';
|
import { downloadFile } from '/@/utils/common/renderUtils';
|
||||||
import WjxWjxxModal from './components/WjxWjxxModal.vue'
|
import WjxWjxxModal from './components/WjxWjxxModal.vue'
|
||||||
import WjxWjxxTmlbModal from '/@/views/kc/wjxWjxx/components/WjxWjxxTmlbModal.vue'
|
import WjxWjxxTmlbModal from '/@/views/kc/wjxWjxx/components/WjxWjxxTmlbModal.vue'
|
||||||
|
import WjxWjxxTmlbDjModal from '/@/views/kc/wjxWjxx/components/WjxWjxxTmlbDjModal.vue'
|
||||||
|
import WjxWjxxTmlbDjjgModal from '/@/views/kc/wjxWjxx/components/WjxWjxxTmlbDjjgModal.vue'
|
||||||
|
|
||||||
const queryParam = ref<any>({});
|
const queryParam = ref<any>({});
|
||||||
const toggleSearchStatus = ref<boolean>(false);
|
const toggleSearchStatus = ref<boolean>(false);
|
||||||
const registerModal = ref();
|
const registerModal = ref();
|
||||||
const WjxWjxxTmlbModalPage = ref();
|
const WjxWjxxTmlbModalPage = ref();
|
||||||
|
const WjxWjxxTmlbDjModalPage = ref();
|
||||||
|
const WjxWjxxTmlbDjjgModalPage = ref();
|
||||||
//注册table数据
|
//注册table数据
|
||||||
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
|
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
|
||||||
tableProps: {
|
tableProps: {
|
||||||
|
@ -115,11 +120,38 @@
|
||||||
registerModal.value.edit(record);
|
registerModal.value.edit(record);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置
|
||||||
|
*/
|
||||||
function handlePeizhi(record: Recordable) {
|
function handlePeizhi(record: Recordable) {
|
||||||
WjxWjxxTmlbModalPage.value.disableSubmit = false;
|
WjxWjxxTmlbModalPage.value.disableSubmit = false;
|
||||||
WjxWjxxTmlbModalPage.value.edit(record);
|
WjxWjxxTmlbModalPage.value.edit(record);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置详情
|
||||||
|
*/
|
||||||
|
function handlePeizhiXq(record: Recordable) {
|
||||||
|
WjxWjxxTmlbDjModalPage.value.disableSubmit = true;
|
||||||
|
WjxWjxxTmlbDjModalPage.value.edit(record,true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 答卷详情
|
||||||
|
*/
|
||||||
|
function handlePeizhiDj(record: Recordable) {
|
||||||
|
WjxWjxxTmlbDjModalPage.value.disableSubmit = false;
|
||||||
|
WjxWjxxTmlbDjModalPage.value.edit(record,false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 答卷详情
|
||||||
|
*/
|
||||||
|
function handlePeizhiDjjg(record: Recordable) {
|
||||||
|
WjxWjxxTmlbDjjgModalPage.value.disableSubmit = true;
|
||||||
|
WjxWjxxTmlbDjjgModalPage.value.edit(record,false);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 详情
|
* 详情
|
||||||
*/
|
*/
|
||||||
|
@ -130,7 +162,7 @@
|
||||||
|
|
||||||
function handleFabu(record: Recordable) {
|
function handleFabu(record: Recordable) {
|
||||||
defHttp.get({ url: '/wjxWjxx/wjxWjxx/fbwj', params: { id: record.id } }).then(res => {
|
defHttp.get({ url: '/wjxWjxx/wjxWjxx/fbwj', params: { id: record.id } }).then(res => {
|
||||||
console.log("fabu------>",res);
|
reload();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -158,6 +190,26 @@
|
||||||
* 操作栏
|
* 操作栏
|
||||||
*/
|
*/
|
||||||
function getTableAction(record) {
|
function getTableAction(record) {
|
||||||
|
if(record.qpublish == '1'){
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: '配置详情',
|
||||||
|
onClick: handlePeizhiXq.bind(null, record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '详情',
|
||||||
|
onClick: handleDetail.bind(null, record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '答卷',
|
||||||
|
onClick: handlePeizhiDj.bind(null, record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '答卷结果',
|
||||||
|
onClick: handlePeizhiDjjg.bind(null, record),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}else{
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
label: '编辑',
|
label: '编辑',
|
||||||
|
@ -181,7 +233,8 @@
|
||||||
confirm: handleDelete.bind(null, record),
|
confirm: handleDelete.bind(null, record),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
];
|
]
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -7,6 +7,18 @@
|
||||||
<a-input v-model:value="formData.title" placeholder="请输入问卷名称" :disabled="disabled"></a-input>
|
<a-input v-model:value="formData.title" placeholder="请输入问卷名称" :disabled="disabled"></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item label="问卷类型" v-bind="validateInfos.title">
|
||||||
|
<a-select
|
||||||
|
ref="select"
|
||||||
|
v-model:value="formData.atype"
|
||||||
|
style="width: 120px"
|
||||||
|
>
|
||||||
|
<a-select-option value="1">调查</a-select-option>
|
||||||
|
<a-select-option value="6">考试</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
<a-col :span="24">
|
<a-col :span="24">
|
||||||
<a-form-item label="问卷描述" v-bind="validateInfos.content">
|
<a-form-item label="问卷描述" v-bind="validateInfos.content">
|
||||||
<a-textarea v-model:value="formData.content" rows="4" placeholder="请输入问卷描述" :disabled="disabled"/>
|
<a-textarea v-model:value="formData.content" rows="4" placeholder="请输入问卷描述" :disabled="disabled"/>
|
||||||
|
@ -42,6 +54,7 @@
|
||||||
const formData = reactive<Record<string, any>>({
|
const formData = reactive<Record<string, any>>({
|
||||||
id: '',
|
id: '',
|
||||||
title: '',
|
title: '',
|
||||||
|
atype: '1',
|
||||||
content: '',
|
content: '',
|
||||||
// qpublish: '',
|
// qpublish: '',
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,177 @@
|
||||||
|
<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;">
|
||||||
|
{{ title }}</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>
|
||||||
|
<span style="margin-left: 40px;">题目分值: {{item.wjScore}} 分</span>
|
||||||
|
</template>
|
||||||
|
<a-radio-group v-model:value="item.itemSelected" style="width: 100%" size="default" :disabled="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>
|
||||||
|
<span style="margin-left: 40px;">题目分值: {{item.wjScore}} 分</span>
|
||||||
|
</template>
|
||||||
|
<a-checkbox-group v-model:value="item.itemSelected" style="width: 100%" size="default" :disabled="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 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 disabled = ref<boolean>(false);
|
||||||
|
const confirmLoading = ref<boolean>(false);
|
||||||
|
const tiganData = ref<any>([]);
|
||||||
|
const tmxxPar = ref<any>({});
|
||||||
|
const openTime = ref<string>('');
|
||||||
|
const { createMessage } = useMessage();
|
||||||
|
|
||||||
|
const emit = defineEmits(['ok', 'closeLoading']);
|
||||||
|
|
||||||
|
//初始化
|
||||||
|
function edit(record,isDisabled){
|
||||||
|
openTime.value = getCurrentTimeFormat();
|
||||||
|
tiganData.value = [];
|
||||||
|
disabled.value = isDisabled;
|
||||||
|
title.value = record.title;
|
||||||
|
mainId.value = record.id;
|
||||||
|
defHttp.get({url:'/wjxWjxxTmlb/wjxWjxxTmlb/queryByMainId',params:{id:record.id}}).then(res =>{
|
||||||
|
console.log(`🚀 ~ defHttp.get ~ res:`, res)
|
||||||
|
var list = res;
|
||||||
|
for(var i=0;i<list.length;i++){
|
||||||
|
var par = list[i];
|
||||||
|
if(disabled.value){
|
||||||
|
if(par.wjType==4){
|
||||||
|
var lssj = par.itemSelected.split(",");
|
||||||
|
const numArray = lssj.map(str => parseInt(str));
|
||||||
|
list[i].itemSelected = numArray;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
par.itemSelected = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tiganData.value = res;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//提交数据
|
||||||
|
async function submitForm(){
|
||||||
|
const data = tiganData.value;
|
||||||
|
console.log(`🚀 ~ submitForm ~ data:`, data)
|
||||||
|
const values = Object.assign([], data);
|
||||||
|
for(var i=0;i<values.length;i++){
|
||||||
|
var param = values[i];
|
||||||
|
if(param.itemSelected == null){
|
||||||
|
emit('closeLoading');
|
||||||
|
createMessage.warning("有题目没有作答,请检查试卷,完成所有作答!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
values[i].itemSelected = param.itemSelected+"";
|
||||||
|
values[i].openTime = openTime.value;
|
||||||
|
}
|
||||||
|
const isUpdate = false
|
||||||
|
await djtj(values, isUpdate);
|
||||||
|
//关闭弹窗
|
||||||
|
emit('ok');
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCurrentTimeFormat() {
|
||||||
|
const now = new Date();
|
||||||
|
const year = now.getFullYear();
|
||||||
|
const month = now.getMonth() + 1;
|
||||||
|
const day = now.getDate();
|
||||||
|
const hour = now.getHours();
|
||||||
|
const minute = now.getMinutes();
|
||||||
|
const second = now.getSeconds();
|
||||||
|
|
||||||
|
return `${year}-${padZero(month)}-${padZero(day)} ${padZero(hour)}:${padZero(minute)}:${padZero(second)}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function padZero(num) {
|
||||||
|
return num < 10 ? `0${num}` : `${num}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
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>
|
|
@ -0,0 +1,75 @@
|
||||||
|
<template>
|
||||||
|
<a-modal :title="title" :width="width" centered :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit }, loading: loading }" @cancel="handleCancel" cancelText="关闭">
|
||||||
|
<WjxWjxxTmlbDjForm ref="registerForm" @ok="submitCallback" @closeLoading="closeLoading" :formDisabled="disableSubmit" :formBpm="false"></WjxWjxxTmlbDjForm>
|
||||||
|
</a-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref, nextTick, defineExpose } from 'vue';
|
||||||
|
import WjxWjxxTmlbDjForm from './WjxWjxxTmlbDjForm.vue'
|
||||||
|
|
||||||
|
const title = ref<string>('');
|
||||||
|
const width = ref<string>('80%');
|
||||||
|
const visible = ref<boolean>(false);
|
||||||
|
const loading = ref<boolean>(false);
|
||||||
|
const disableSubmit = ref<boolean>(false);
|
||||||
|
const registerForm = ref();
|
||||||
|
const emit = defineEmits(['register', 'success']);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
function edit(record,isDisabled) {
|
||||||
|
title.value = disableSubmit.value ? '详情' : '编辑';
|
||||||
|
visible.value = true;
|
||||||
|
loading.value = false;
|
||||||
|
nextTick(() => {
|
||||||
|
registerForm.value.edit(record,isDisabled);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 确定按钮点击事件
|
||||||
|
*/
|
||||||
|
function handleOk() {
|
||||||
|
loading.value = true;
|
||||||
|
registerForm.value.submitForm();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 确定按钮点击事件
|
||||||
|
*/
|
||||||
|
function closeLoading() {
|
||||||
|
loading.value = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* form保存回调事件
|
||||||
|
*/
|
||||||
|
function submitCallback() {
|
||||||
|
loading.value = false;
|
||||||
|
handleCancel();
|
||||||
|
emit('success');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消按钮回调事件
|
||||||
|
*/
|
||||||
|
function handleCancel() {
|
||||||
|
visible.value = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
edit,
|
||||||
|
disableSubmit,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/**隐藏样式-modal确定按钮 */
|
||||||
|
.jee-hidden {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,145 @@
|
||||||
|
<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 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 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(record){
|
||||||
|
tiganData.value = [];
|
||||||
|
mainId.value = record.id;
|
||||||
|
defHttp.get({url:'/wjxDjxx/queryByMainId',params:{id:record.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];
|
||||||
|
console.log(par);
|
||||||
|
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>
|
|
@ -0,0 +1,63 @@
|
||||||
|
<template>
|
||||||
|
<a-modal :title="title" :width="width" centered :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" @cancel="handleCancel" cancelText="关闭">
|
||||||
|
<WjxWjxxTmlbDjjgForm ref="registerForm" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"></WjxWjxxTmlbDjjgForm>
|
||||||
|
</a-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref, nextTick, defineExpose } from 'vue';
|
||||||
|
import WjxWjxxTmlbDjjgForm from './WjxWjxxTmlbDjjgForm.vue'
|
||||||
|
|
||||||
|
const title = ref<string>('');
|
||||||
|
const width = ref<string>('80%');
|
||||||
|
const visible = ref<boolean>(false);
|
||||||
|
const disableSubmit = ref<boolean>(false);
|
||||||
|
const registerForm = ref();
|
||||||
|
const emit = defineEmits(['register', 'success']);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
function edit(record) {
|
||||||
|
title.value = disableSubmit.value ? '答卷结果' : '编辑';
|
||||||
|
visible.value = true;
|
||||||
|
nextTick(() => {
|
||||||
|
registerForm.value.edit(record);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 确定按钮点击事件
|
||||||
|
*/
|
||||||
|
function handleOk() {
|
||||||
|
registerForm.value.submitForm();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* form保存回调事件
|
||||||
|
*/
|
||||||
|
function submitCallback() {
|
||||||
|
handleCancel();
|
||||||
|
emit('success');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消按钮回调事件
|
||||||
|
*/
|
||||||
|
function handleCancel() {
|
||||||
|
visible.value = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
edit,
|
||||||
|
disableSubmit,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/**隐藏样式-modal确定按钮 */
|
||||||
|
.jee-hidden {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -9,14 +9,15 @@
|
||||||
</a-card>
|
</a-card>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="20" style="overflow-y: scroll;height: calc(80vh);">
|
<a-col :span="20" style="overflow-y: scroll;height: calc(80vh);">
|
||||||
<div style="text-align: center;width: 100%;font-weight: bold;font-size: 20px;padding: 20px;">问卷标题</div>
|
<div style="text-align: center;width: 100%;font-weight: bold;font-size: 20px;padding: 20px;">
|
||||||
|
{{ title }}</div>
|
||||||
<!-- 题干信息 -->
|
<!-- 题干信息 -->
|
||||||
<div style="width:100%;" v-for="(item,index) in tiganData" :key="index">
|
<div style="width:100%;" v-for="(item,index) in tiganData" :key="index">
|
||||||
<!-- 单选题 -->
|
<!-- 单选题 -->
|
||||||
<div style="width: 100%;" v-if="item.wjType==3">
|
<div style="width: 100%;" v-if="item.wjType==3">
|
||||||
<a-card >
|
<a-card >
|
||||||
<template #title>
|
<template #title>
|
||||||
<span>{{index+1}}</span><a-input placeholder="请填写单选题题干" v-model:value="item.wjTitle" style="width: 50%" :bordered="false" />
|
<span>{{index+1}}、</span><a-textarea placeholder="请填写单选题题干" v-model:value="item.wjTitle" style="width: 75%" auto-size/>
|
||||||
</template>
|
</template>
|
||||||
<template #extra>
|
<template #extra>
|
||||||
<a-tooltip placement="topRight" title="题目分数">
|
<a-tooltip placement="topRight" title="题目分数">
|
||||||
|
@ -44,7 +45,7 @@
|
||||||
<div style="width: 100%;" v-else-if="item.wjType==4">
|
<div style="width: 100%;" v-else-if="item.wjType==4">
|
||||||
<a-card >
|
<a-card >
|
||||||
<template #title>
|
<template #title>
|
||||||
<span>{{index+1}}</span><a-input placeholder="请填写多选题题干" v-model:value="item.wjTitle" style="width: 50%" :bordered="false" />
|
<span>{{index+1}}、</span><a-textarea placeholder="请填写多选题题干" v-model:value="item.wjTitle" style="width: 75%" auto-size/>
|
||||||
</template>
|
</template>
|
||||||
<template #extra>
|
<template #extra>
|
||||||
<a-tooltip placement="topRight" title="题目分数">
|
<a-tooltip placement="topRight" title="题目分数">
|
||||||
|
@ -84,7 +85,7 @@ import { Icon } from '/@/components/Icon';
|
||||||
import { useMessage } from '/@/hooks/web/useMessage';
|
import { useMessage } from '/@/hooks/web/useMessage';
|
||||||
import { defHttp } from '/@/utils/http/axios';
|
import { defHttp } from '/@/utils/http/axios';
|
||||||
import { queryWjxWjxxTmxxListByMainId, queryDataById, saveOrUpdate } from '/@/views/kc/wjxWjxxTmlb/WjxWjxxTmlb.api';
|
import { queryWjxWjxxTmxxListByMainId, queryDataById, saveOrUpdate } from '/@/views/kc/wjxWjxxTmlb/WjxWjxxTmlb.api';
|
||||||
const value1 = ref<string>('');
|
const title = ref<string>('');
|
||||||
const mainId = ref<string>('');
|
const mainId = ref<string>('');
|
||||||
const confirmLoading = ref<boolean>(false);
|
const confirmLoading = ref<boolean>(false);
|
||||||
const tiganData = ref<any>([]);
|
const tiganData = ref<any>([]);
|
||||||
|
@ -149,8 +150,8 @@ function getType(value,type){
|
||||||
//初始化
|
//初始化
|
||||||
function edit(record){
|
function edit(record){
|
||||||
tiganData.value = [];
|
tiganData.value = [];
|
||||||
|
title.value = record.title;
|
||||||
mainId.value = record.id;
|
mainId.value = record.id;
|
||||||
|
|
||||||
defHttp.get({url:'/wjxWjxxTmlb/wjxWjxxTmlb/queryByMainId',params:{id:record.id}}).then(res =>{
|
defHttp.get({url:'/wjxWjxxTmlb/wjxWjxxTmlb/queryByMainId',params:{id:record.id}}).then(res =>{
|
||||||
console.log(`🚀 ~ defHttp.get ~ res:`, res)
|
console.log(`🚀 ~ defHttp.get ~ res:`, res)
|
||||||
var list = res;
|
var list = res;
|
||||||
|
|
|
@ -13,6 +13,7 @@ enum Api {
|
||||||
exportXls = '/wjxWjxxTmlb/wjxWjxxTmlb/exportXls',
|
exportXls = '/wjxWjxxTmlb/wjxWjxxTmlb/exportXls',
|
||||||
queryDataById = '/wjxWjxxTmlb/wjxWjxxTmlb/queryById',
|
queryDataById = '/wjxWjxxTmlb/wjxWjxxTmlb/queryById',
|
||||||
wjxWjxxTmxxList = '/wjxWjxxTmlb/wjxWjxxTmlb/queryWjxWjxxTmxxByMainId',
|
wjxWjxxTmxxList = '/wjxWjxxTmlb/wjxWjxxTmlb/queryWjxWjxxTmxxByMainId',
|
||||||
|
djtj = '/wjxDjxx/djtj',
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 导出api
|
* 导出api
|
||||||
|
@ -79,3 +80,11 @@ export const saveOrUpdate = (params, isUpdate) => {
|
||||||
*/
|
*/
|
||||||
export const queryDataById = (id) => defHttp.get({url: Api.queryDataById, params:{ id }});
|
export const queryDataById = (id) => defHttp.get({url: Api.queryDataById, params:{ id }});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 答卷
|
||||||
|
* @param params
|
||||||
|
*/
|
||||||
|
export const djtj = (params, isUpdate) => {
|
||||||
|
let url = Api.djtj;
|
||||||
|
return defHttp.post({url: url, params});
|
||||||
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
</a-sub-menu>
|
</a-sub-menu>
|
||||||
<a-sub-menu key="sub3">
|
<a-sub-menu key="sub3">
|
||||||
<template #title>问卷管理</template>
|
<template #title>问卷管理</template>
|
||||||
<a-menu-item key="6">当前问卷</a-menu-item>
|
<a-menu-item key="6" @click="getGzt('dqwj')">当前问卷</a-menu-item>
|
||||||
<a-menu-item key="7">历史问卷</a-menu-item>
|
<a-menu-item key="7">历史问卷</a-menu-item>
|
||||||
</a-sub-menu>
|
</a-sub-menu>
|
||||||
<a-menu-item key="sub4">
|
<a-menu-item key="sub4">
|
||||||
|
@ -61,6 +61,8 @@
|
||||||
var href = "/zy/dqkcDqzy";
|
var href = "/zy/dqkcDqzy";
|
||||||
if(zytype=='dqzy'){
|
if(zytype=='dqzy'){
|
||||||
href = "/zy/dqkcDqzy";
|
href = "/zy/dqkcDqzy";
|
||||||
|
}else if(type=='dqwj'){
|
||||||
|
href = "/zy/dqkcWenjuan";
|
||||||
}else if(zytype=='lszy'){
|
}else if(zytype=='lszy'){
|
||||||
href = "/zy/dqkcLszy";
|
href = "/zy/dqkcLszy";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue