【修改】出题知识点可选择,数据时效性,MYSQL判分语句增加默认权值

【增加】试卷任务参数,在已有的试卷抽卷
This commit is contained in:
YOHO\20373
2025-06-09 10:31:14 +08:00
committed by 陆光LG
parent 5cd9e9dfbf
commit a54e22610d
49 changed files with 3727 additions and 2186 deletions

View File

@@ -43,9 +43,9 @@
<el-form-item label="难度" prop="quLevel">
<el-select v-model="form.quLevel" placeholder="请选择难度" :disabled="isUpdate">
<el-option label="全部" :value="3" />
<el-option label="简单" :value="0" />
<el-option label="一般" :value="1" />
<el-option label="难" :value="2" />
<el-option label="" :value="0" />
<el-option label="" :value="1" />
<el-option label="难" :value="2" />
</el-select>
</el-form-item>
@@ -346,7 +346,7 @@ const save = async () => {
const fn = isUpdate.value ? updateScheme : addScheme
await fn(payload)
emit('done')
visible.value = false
// visible.value = false
} finally {
loading.value = false
}

View File

@@ -1,106 +1,388 @@
<!-- 编辑弹窗 -->
<template>
<Dialog v-model="isVisible" :title="'添加试卷'" width="460" @open="handleOpen" center>
<el-form
ref="formRef"
:model="form"
:rules="rules"
label-width="80px"
@submit.prevent=""
>
<el-form-item label="试卷数目" prop="num">
<el-input
clearable
v-model="form.num"
placeholder="请输入试卷数目"
/>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="handleCancel">取消</el-button>
<el-button type="primary" :loading="loading" @click="save">
保存
</el-button>
</template>
</Dialog>
</template>
<script setup>
import { ref, reactive, nextTick } from 'vue';
import { useFormData } from '@/utils/use-form-data';
import { addPaper } from '@/api/system/paper';
const message = useMessage() // 消息弹窗
const props = defineProps({
/** 修改回显的数据 */
data: Object,
taskId: String ,
taskSpecialty: String,
});
const emit = defineEmits(['done']);
/** 弹窗是否打开 */
const isVisible = defineModel({ type: Boolean });
/** 提交状态 */
const loading = ref(false);
/** 表单实例 */
const formRef = ref(null);
/** 表单数据 */
const [form, resetFields, assignFields] = useFormData({
num: '',
taskId: ''
});
/** 表单验证规则 */
const rules = reactive({
num: [
{ required: true, message: '请输入试卷数目', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '请输入正整数', trigger: 'blur' }
]
});
<Dialog v-model="isVisible" :title="'添加试卷'" width="460" @open="handleOpen" center>
<el-form
ref="formRef"
:model="form"
:rules="rules"
label-width="80px"
@submit.prevent=""
>
<el-form-item label="试卷数目" prop="num">
<el-input
clearable
v-model="form.num"
placeholder="请输入试卷数目"
/>
</el-form-item>
/** 关闭弹窗 */
const handleCancel = () => {
isVisible.value = false;
<!-- 是否启用组卷范围 -->
<el-form-item label=" " label-width="0">
<div style="display: flex; align-items: center; gap: 10px;">
<el-checkbox v-model="form.useCustomScope">
自定义组卷范围
</el-checkbox>
<el-button v-if="form.useCustomScope" @click="handleScopeSetting">
组卷范围
</el-button>
</div>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="handleCancel">取消</el-button>
<el-button type="primary" :loading="loading" @click="save">
保存
</el-button>
</template>
</Dialog>
<el-dialog v-model="scopeDialogVisible" title="设置组卷范围" width="80%">
<div style="display: flex;">
<!-- 左侧 -->
<div style="width: 40%; padding-right: 16px;">
<el-form-item label="分组类型">
<el-select v-model="selectedGroupType" placeholder="请选择" @change="loadLeftList">
<el-option label="练习" value="0" />
<el-option label="考试" value="1" />
<el-option label="冲刺练习" value="3" />
</el-select>
</el-form-item>
<el-tree
:data="leftTreeData"
node-key="id"
:props="{ label: 'label', children: 'children' }"
@node-click="handleNodeClick"
/>
</div>
<!-- 右侧 -->
<div style="width: 60%; padding-left: 16px;">
<div style="font-weight: bold; margin-bottom: 8px;">已选试卷</div>
<el-table
:data="rightList"
border
height="340"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="taskName" label="任务名称" align="center"/>
<el-table-column label="任务分组" align="center">
<template #default="{ row }">
{{ getTaskTypeLabel(row.taskType) }}
</template>
</el-table-column>
<el-table-column prop="num" label="试卷编号" align="center" />
<el-table-column prop="que" label="题型" align="center"/>
<el-table-column width="160" label="操作" align="center">
<template #default="{ row }">
<el-button type="text" size="small" @click="removeFromRightList(row)">移除</el-button>
<el-button type="text" size="small" @click="openQueDialog(row)">设置题型</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<!-- 弹窗底部按钮 -->
<template #footer>
<el-button @click="scopeDialogVisible = false">取消</el-button>
<el-button type="primary" @click="handleScopeConfirm">确认</el-button>
</template>
</el-dialog>
<el-dialog v-model="queDialogVisible" title="选择题型" width="400px" center>
<el-checkbox
v-model="checkAll"
@change="handleCheckAllChange"
style="margin-bottom: 10px;"
>
题型名称
</el-checkbox>
<el-checkbox-group v-model="selectedQue" style="display: flex; flex-direction: column; gap: 8px;">
<el-checkbox
v-for="item in currentSpNames"
:key="item"
:label="item"
>{{ item }}</el-checkbox>
</el-checkbox-group>
<template #footer>
<el-button @click="queDialogVisible = false">取消</el-button>
<el-button type="primary" @click="confirmQue">确定</el-button>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { ref, reactive, nextTick } from 'vue';
import * as SmsChannelApi from '@/api/system/task/index';
import { useFormData } from '@/utils/use-form-data';
import { addPaper ,addPaperBypaper} from '@/api/system/paper';
const message = useMessage() // 消息弹窗
const props = defineProps({
/** 修改回显的数据 */
data: Object,
taskId: String ,
taskSpecialty: String,
});
const queryParams = reactive({
pageNo: 1,
pageSize: 100,
signature: undefined,
status: undefined,
taskName:undefined,
createTime: [],
taskType:'3'
})
const emit = defineEmits(['done']);
/** 弹窗是否打开 */
const isVisible = defineModel({ type: Boolean });
/** 提交状态 */
const loading = ref(false);
/** 表单实例 */
const formRef = ref(null);
/** 表单数据 */
const [form, resetFields, assignFields] = useFormData({
num: '',
taskId: ''
});
/** 表单验证规则 */
const rules = reactive({
num: [
{ required: true, message: '请输入试卷数目', trigger: 'blur' },
{ pattern: /^[1-9]\d*$/, message: '请输入正整数', trigger: 'blur' }
]
});
//组卷范围
const scopeDialogVisible = ref(false);
const queDialogVisible = ref(false);
const selectedGroupType = ref('');
const leftList = ref([]);
const rightList = ref([]);
const leftTreeData = ref([]);
// 选中某个分组类型时,加载左侧列表
const loadLeftList = async () => {
// 示例:根据 selectedGroupType 获取数据
queryParams.taskType=selectedGroupType.value
const res = await SmsChannelApi.pageTaskPapers(queryParams)
leftTreeData.value = convertToTreeData(res.list);
};
// 双击左侧行,加入右侧列表
const handleRowDblClick = (row) => {
if (!rightList.value.find((r) => r.id === row.id)) {
rightList.value.push({ ...row });
}
};
// 从右侧列表中移除
const removeFromRightList = (row) => {
rightList.value = rightList.value.filter((item) => item.id !== row.id);
};
// 点击确认
const handleScopeConfirm = () => {
scopeDialogVisible.value = false;
// 提交 rightList.value 到后台或保存状态
console.log('选中的试卷:', rightList.value);
};
const handleScopeSetting = () => {
scopeDialogVisible.value = true;
};
const convertToTreeData = (taskList) => {
return taskList.map(task => {
return {
label: task.taskName,
children: (task.educationPaperList || []).map(paper => ({
label: paper.num || '未命名试卷',
id: paper.paperId,
num:paper.num,
taskName: task.taskName,
taskType: task.taskType,
que: '全部' ,
educationPaperSchemeList:task.educationPaperSchemeList
}))
};
/** 保存编辑 */
const save = () => {
formRef.value?.validate?.((valid) => {
if (!valid) {
return;
}
loading.value = true;
addPaper({ num: form.num,taskid: props.taskId ,taskSpecialty:form.taskSpecialty})
.then((msg) => {
loading.value = false;
message.success(msg);
handleCancel();
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
});
};
const handleNodeClick = (data) => {
if (!data.children) {
// 是试卷节点
if (!rightList.value.find(p => p.id === data.id)) {
rightList.value.push(data);
}
}
};
const getTaskTypeLabel = (type) => {
const map = {
'0': '练习',
'1': '考试',
'3': '冲刺练习'
};
return map[type] || '未知';
};
const selectedRows = ref([]);
const handleSelectionChange = (rows) => {
selectedRows.value = rows;
};
const checkAll = ref(false);
const selectedQue = ref<string[]>([]);
const currentSpNames = ref<Array<string>>([]); // 当前题型名列表
const selectedRow = ref<any>(null); // 当前选中的试卷数据(可选)
const openQueDialog = (row) => {
// 设置当前选中的题型列表
currentSpNames.value = row.educationPaperSchemeList?.map(item => item.spName) || [];
// 设置当前行(选中的试卷)用于后续保存
selectedRow.value = row;
queDialogVisible.value = true;
};
///
watch(selectedQue, (val) => {
if (val.length === currentSpNames.value.length) {
checkAll.value = true;
} else {
checkAll.value = false;
}
});
const handleCheckAllChange = (val: boolean) => {
if (val) {
selectedQue.value = [...currentSpNames.value];
} else {
selectedQue.value = [];
}
};
// 确认选择题型把逗号分隔字符串赋给该行que字段
const confirmQue = async () => {
if (selectedRow.value) {
try {
const payload = {
taskId: props.taskId,
que: selectedQue.value // 数组形式传递
};
const res= await SmsChannelApi.checkType(payload);
// 可选:赋值用于前端展示(逗号拼接)
selectedRow.value.que = selectedQue.value.join(',');
ElMessage.success('题型设置成功');
} catch (err) {
console.error(err);
ElMessage.error('题型设置失败');
}
}
// 关闭弹窗 & 清空数据
queDialogVisible.value = false;
selectedRow.value = null;
selectedQue.value = [];
checkAll.value = false;
};
/** 关闭弹窗 */
const handleCancel = () => {
isVisible.value = false;
};
/** 保存编辑 */
const save = () => {
formRef.value?.validate?.((valid) => {
if (!valid) {
return;
}
loading.value = true;
if (form.useCustomScope) {
console.log( form.num+"num")
console.log(rightList.value+"rightList.value")
if (!rightList.value || rightList.value.length === 0) {
ElMessage.warning('请先设置组卷范围!');
return; // 阻止后续逻辑
}
console.log( props.taskId)
const payload = {
num: form.num,
taskId: props.taskId,
paperList: rightList.value, // 如果是数组字段名建议有“List”或“Array”
};
addPaperBypaper(payload)
.then((msg) => {
loading.value = false;
message.success('新增成功!');
handleCancel();
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
console.log("自定义范围!");
}else{
addPaper({ num: form.num,taskid: props.taskId ,taskSpecialty:form.taskSpecialty})
.then((msg) => {
loading.value = false;
message.success('新增成功!');
handleCancel();
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
}
});
};
/** 弹窗打开事件 */
const handleOpen = () => {
resetFields();
form.taskId = props.taskId; // 新增时赋值 taskId
form.taskSpecialty = props.taskSpecialty; // 新增时赋值 taskSpecialty
nextTick(() => {
nextTick(() => {
formRef.value?.clearValidate?.();
});
});
};
defineExpose({ open })
</script>
/** 弹窗打开事件 */
const handleOpen = () => {
resetFields();
form.taskId = props.taskId; // 新增时赋值 taskId
form.taskSpecialty = props.taskSpecialty; // 新增时赋值 taskSpecialty
nextTick(() => {
nextTick(() => {
formRef.value?.clearValidate?.();
});
});
};
defineExpose({ open })
</script>

View File

@@ -1,211 +0,0 @@
<template>
<ContentWrap>
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['system:sms-channel:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增</el-button
>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="试卷编号" align="center" prop="paperId" />
<el-table-column label="使用次数" align="center" prop="counts" />
<el-table-column label="抽卷方式" align="center" prop="rollUp">
<template #default="scope">
<span v-if="scope.row.quLevel === '0'">固定</span>
<span v-else-if="scope.row.quLevel === '1'">AB卷</span>
<span v-else-if="scope.row.quLevel === '2'">随机</span>
<span v-else-if="scope.row.quLevel === '3'">自选</span>
<span v-else>未知</span>
</template>
</el-table-column>
<el-table-column label="AB卷" align="center" prop="isAb">
<template #default="scope">
<span v-if="scope.row.quLevel === '0'">A卷</span>
<span v-else-if="scope.row.quLevel === '1'">B卷</span>
<span v-else>未知</span>
</template>
</el-table-column>
<el-table-column label="是否启用" align="center" prop="status" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.SYS_YES_NO" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
link
type="primary"
@click="openEdit('update', scope.row)"
v-hasPermi="['system:sms-channel:update']"
>
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['system:sms-channel:delete']"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
<paper-add v-model="showAdd" :task-Id="taskId" :task-specialty="taskSpecialty" />
<paper-edit v-model="showEdit" :data="current" />
<!-- <paper-look v-model="showLook" :paper-id="paperId" /> -->
<paper-set v-model="showSet" :task-Id="taskId" />
</template>
<script lang="ts" setup>
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import * as SmsChannelApi from '@/api/system/paper';
import PaperEdit from './components/step-edit.vue';
import PaperAdd from './components/step-add.vue';
import PaperLook from './components/step-look.vue';
import PaperSet from './components/step-set.vue';
import PaperSearch from './components/step-search.vue';
import { pagePapers, removePapers, exportPapers } from '@/api/system/paper';
defineOptions({ name: 'SystemPaper' });
const props = defineProps({
taskSpecialty: {
type: String,
default: ''
},
taskId: {
type: String,
default: ''
}
})
const { t } = useI18n() // 国际化
const message = useMessage() // 消息弹窗
/** 当前编辑数据 */
const current = ref<object>();
/** 是否显示编辑弹窗 */
const showEdit = ref(false);
const showLook = ref(false);
const showAdd = ref(false);
const showSet = ref(false);
const smsChannelFormRef = ref()
const taskEditRef = ref()
const taskAddRef = ref()
const taskTempRef = ref()
const loading = ref(false) // 列表的加载中
const total = ref(0) // 列表的总页数
const list = ref([]) // 列表的数据
const queryFormRef = ref() // 搜索的表单
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
signature: undefined,
status: undefined,
createTime: []
})
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const res = await SmsChannelApi.pagePapers(queryParams)
console.log(res)
list.value = res
total.value = res.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */
const formRef = ref();
const openForm = (type: string, id?: number) => {
showAdd.value = true
taskAddRef.value?.open(type, id)
}
const openEdit = (type: string, row?: object) => {
showEdit.value = true
current.value = row
console.log( current.value )
taskEditRef.value?.open(type, row)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
// 删除的二次确认
await message.delConfirm()
// 发起删除
await SmsChannelApi.removePaper(id)
message.success(t('common.delSuccess'))
// 刷新列表
await getList()
} catch {}
}
/** 初始化 **/
onMounted(() => {
getList()
})
</script>

View File

@@ -54,7 +54,7 @@
plain
@click="openSet"
>
<Icon icon="ep:set-up" class="mr-5px" /> 抽卷调整
<Icon icon="ep:set-up" class="mr-5px" /> 抽卷方式
</el-button>
<el-button
type="primary"

View File

@@ -5,15 +5,11 @@
<!-- 第一个 tab - 通用参数 -->
<el-tab-pane label="通用参数" name="tab1">
<el-form :model="form" label-width="200px" style="margin-top: 20px;">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否显示试题编号">
<el-switch v-model="form.isAnswerId" active-value="0" inactive-value="1" active-text="是"
inactive-text="" @change="handleFormChange" />
</el-form-item>
<!-- 是否使用监考密码验证 -->
<!-- <el-form-item label="是否使用监考密码验证">
<el-form-item label="是否使用监考密码验证">
<el-switch
v-model="form.isExamPassword"
active-value="0"
@@ -21,67 +17,14 @@
active-text=""
inactive-text=""
@change="handleFormChange" />
</el-form-item> -->
</el-form-item>
<!-- 监考密码 -->
<!-- <el-form-item label="监考密码" v-if="form.isExamPassword === '0'">
<el-form-item label="监考密码" v-if="form.isExamPassword === '0'">
<el-input v-model="form.examPassword" placeholder="请输入监考密码" @input="handleFormChange" />
</el-form-item> -->
</el-col>
<el-col :span="12">
<el-form-item label="是否显示试卷编号">
<el-switch v-model="form.isNumber" active-value="0" inactive-value="1" active-text="是" inactive-text="否"
@change="handleFormChange" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否显示解析按钮">
<el-switch v-model="form.isContent" active-value="0" inactive-value="1" active-text="是"
inactive-text="" @change="handleFormChange" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否显示重答按钮">
<el-switch v-model="form.isRepeat" active-value="0" inactive-value="1" active-text="是" inactive-text="否"
@change="handleFormChange" />
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="考生答题时是否显示试题编号">
<el-switch
v-model="form.isAnswerId"
active-value="0"
inactive-value="1"
active-text=""
inactive-text=""
@change="handleFormChange" />
</el-form-item>
</el-col> -->
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否启用考场设置">
<el-switch v-model="form.isSession" active-value="0" inactive-value="1" active-text="是"
inactive-text="" @change="handleFormChange" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否显示答案按钮">
<el-switch v-model="form.isAnswer" active-value="0" inactive-value="1" active-text="是" inactive-text="否"
@change="handleFormChange" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
</el-col>
<el-col :span="12">
<!-- 练习成绩保存 -->
<el-form-item label="练习成绩保存">
<el-radio-group v-model="form.saveGrades" @change="handleFormChange">
@@ -105,26 +48,69 @@
</el-col> -->
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="考生答题时是否显示试题编号">
<el-switch v-model="form.isAnswerId" active-value="0" inactive-value="1" active-text="是"
inactive-text="" @change="handleFormChange" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否显示试卷编号">
<el-switch v-model="form.isNumber" active-value="0" inactive-value="1" active-text="是" inactive-text="否"
@change="handleFormChange" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否显示解析按钮">
<el-switch v-model="form.isContent" active-value="0" inactive-value="1" active-text="是"
inactive-text="" @change="handleFormChange" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否显示重答按钮">
<el-switch v-model="form.isRepeat" active-value="0" inactive-value="1" active-text="是" inactive-text="否"
@change="handleFormChange" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否启用考场设置">
<el-switch v-model="form.isSession" active-value="0" inactive-value="1" active-text="是"
inactive-text="" @change="handleFormChange" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否显示答案按钮">
<el-switch v-model="form.isAnswer" active-value="0" inactive-value="1" active-text="是" inactive-text="否"
@change="handleFormChange" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否有测评时长限制">
<el-switch v-model="form.isTime" active-value="0" inactive-value="1" active-text="是" inactive-text="否"
@change="handleFormChange" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<!-- <el-col :span="12">
<el-form-item label="是否有测评时长限制">
<el-switch
v-model="form.isTime"
active-value="0"
inactive-value="1"
active-text=""
inactive-text=""
@change="handleFormChange" />
</el-form-item>
</el-col> -->
<el-col :span="12">
<el-form-item label="测评时长">
<el-time-picker v-model="form.examTime" value-format="HH:mm:ss" placeholder="请设置测评时长" class="ele-fluid"
@@ -145,17 +131,31 @@
</el-form-item>
</el-col> -->
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<!-- 禁止学生使用U盘 -->
<el-form-item label="是否显示成绩">
<el-switch v-model="form.isScore" active-value="0" inactive-value="1" active-text="是" inactive-text="否"
@change="handleFormChange" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否显示成绩明细">
<el-switch v-model="form.isScoreDetail" active-value="0" inactive-value="1" active-text="是" inactive-text="否"
@change="handleFormChange" />
</el-form-item>
</el-col>
<!-- <el-form-item label="定时检查与学生端联通性,每">
<el-input-number v-model="form.isConnect" label="分钟" @change="handleFormChange" />
<span>分钟传一次,断联直接交卷</span>
</el-form-item> -->
</el-col>
</el-row>
@@ -236,6 +236,14 @@
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否允许复制题干">
<el-switch v-model="form.isCpoy" active-value="0" inactive-value="1" active-text="是" inactive-text="否"
@change="handleFormChange" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-tab-pane>
<el-tab-pane label="考试注意事项提醒" name="tab4">
@@ -271,7 +279,7 @@ const form = ref({
driver: '', // 存放系统盘
directory: '', // 考试目录名称
uploadTime: '', // 上传间隔时间
isDel: '',
isCpoy: '',
isRepeat: '', // 是否删除目录
isAnswer: '',
isLook: '',
@@ -279,7 +287,9 @@ const form = ref({
isFile: '',
isNet: '',
isScreen: '',
warn: ''
warn: '',
isScore:'',
isScoreDetail:'',
})
const activeTab = ref('tab1')

View File

@@ -187,7 +187,7 @@ const removeBatch = async () => {
}
await ElMessageBox.confirm(
'确定要删除选中的人员吗',
'只能删除待考状态的学生,是否确认删除',
'警告',
{
confirmButtonText: '确定',

View File

@@ -196,7 +196,15 @@ const handleDeletes = async () => {
message.error('请至少选择一条数据');
return;
}
await ElMessageBox.confirm(
'只能删除待考状态的学生,是否确认删除?',
'警告',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}
);
selectedRows.value = rows.map((d: any) => d.id); // 保存选中的行数据
const deleteData = {