|
|
@@ -42,13 +42,12 @@
|
|
|
|
|
|
<el-button class="button_background">查看详情</el-button>
|
|
|
<el-button
|
|
|
- :class="[Number(row.useStatus) === 1 ? 'is-disabled' : 'button_border']"
|
|
|
- @click="Number(row.useStatus) === 1 ? '' : OpenQuestionnaireDialog(row)"
|
|
|
+ :class="['button_border']"
|
|
|
+ @click="OpenQuestionnaireDialog(row)"
|
|
|
>编辑</el-button>
|
|
|
-
|
|
|
<el-button
|
|
|
- :class="[Number(row.useStatus) === 1 ? 'is-disabled' : 'delete_button_border']"
|
|
|
- @click="Number(row.useStatus) === 1 ? '' : OpenDeleteDialog(row)"
|
|
|
+ :class="[row.isDelete ? 'delete_button_border' : 'is-disabled' ]"
|
|
|
+ @click="row.isDelete ? OpenDeleteDialog(row) : '' "
|
|
|
>删除</el-button>
|
|
|
</template>
|
|
|
</QuestionnaireCard>
|
|
|
@@ -64,8 +63,8 @@
|
|
|
<template #num="{currentIndex}">
|
|
|
{{ currentIndex + pageSize * (currentPage - 1)}}
|
|
|
</template>
|
|
|
- <template #reviewType="{row}">
|
|
|
- {{ cardTypeMsg.find(item=>{return item.type === row.reviewType})?.title }}
|
|
|
+ <template #evaluationType="{row}">
|
|
|
+ {{ cardTypeMsg.find(item=>{return item.type === row.evaluationType})?.title }}
|
|
|
</template>
|
|
|
|
|
|
<template #useStatus="{row}">
|
|
|
@@ -86,12 +85,12 @@
|
|
|
<template #operation="{row}">
|
|
|
<div class="table_row_option">
|
|
|
<span
|
|
|
- :class="[Number(row.useStatus) === 1 ? 'editor_disable' : 'el_button_editor']"
|
|
|
- @click="Number(row.useStatus) === 1 ? '' : OpenQuestionnaireDialog(row)"
|
|
|
+ :class="['el_button_editor']"
|
|
|
+ @click="OpenQuestionnaireDialog(row)"
|
|
|
>编辑</span>
|
|
|
<span
|
|
|
- :class="[Number(row.useStatus) === 1 ? 'editor_disable' : 'el_button_delete']"
|
|
|
- @click="Number(row.useStatus) === 1 ? '' : OpenDeleteDialog(row)"
|
|
|
+ :class="[row.isDelete ? 'el_button_delete' : 'editor_disable' ]"
|
|
|
+ @click="row.isDelete ? OpenDeleteDialog(row) : '' "
|
|
|
>删除</span>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -120,7 +119,7 @@
|
|
|
@close="HandleDialogClose"
|
|
|
@confirm="HandleDialogConfirm"
|
|
|
>
|
|
|
- <span class="dialog_alert">确定删除 [ <span class="title">{{ currentOperationRow?.assessmentTitle}}</span> ] 吗</span>
|
|
|
+ <span class="dialog_alert">确定删除 [ <span class="title">{{ currentOperationRow?.evaluationName}}</span> ] 吗</span>
|
|
|
</Dialog>
|
|
|
|
|
|
|
|
|
@@ -145,6 +144,13 @@ import QuestionnaireCard from '@/components/questionnaireCard/QuestionnaireCard.
|
|
|
|
|
|
import {useStatusConvert, cardTypeMsg, questionnaireTaskStatusMsg} from '@/components/statusDict'
|
|
|
|
|
|
+import {
|
|
|
+ getGradeListApi,getQuestionnaireTaskListApi,addQuestionnaireTaskListApi,
|
|
|
+ getSchoolYearListApi,
|
|
|
+
|
|
|
+} from '@/api/reviewManagement'
|
|
|
+
|
|
|
+import { unioformDateTransform } from '@/utils/dateTransform';
|
|
|
|
|
|
import {searchList, viewModeTabList, statusSearchList} from './searchListConfig'
|
|
|
import { questionnaireTableColumns } from './table';
|
|
|
@@ -153,19 +159,22 @@ import { formDialogItmList } from './formDialog'
|
|
|
|
|
|
interface QuestionnaireItm {
|
|
|
id:Number | String,
|
|
|
- assessmentTitle:String, //标题
|
|
|
+ evaluationName:String, //标题
|
|
|
|
|
|
teacherName:String, //创建人
|
|
|
// createdAt:String, //创建时间
|
|
|
- startTime:String, //创建时间
|
|
|
- endTime:String, //创建时间
|
|
|
+ evaluationStartDatetime:String, //创建时间
|
|
|
+ evaluationEndDatetime:String, //创建时间
|
|
|
useStatus:Number, //1 已使用 0 未使用
|
|
|
cardStatus:Number,
|
|
|
cardOnOff:Boolean,
|
|
|
- reviewType:Number|String,
|
|
|
+ evaluationType:Number|String,
|
|
|
|
|
|
time:String,
|
|
|
isOpen:Boolean,
|
|
|
+ evaluationGrade:Array<String>,
|
|
|
+ isDelete:Boolean,
|
|
|
+
|
|
|
|
|
|
}
|
|
|
const router = useRouter()
|
|
|
@@ -195,30 +204,35 @@ const pageSize = ref(20)
|
|
|
const questionnaireList = ref<QuestionnaireItm[]>([
|
|
|
{
|
|
|
"id": '655355453521268736',
|
|
|
- startTime:'2026-06-29 16:00',
|
|
|
- endTime:'2026-06-29 16:00',
|
|
|
+ evaluationStartDatetime:'2026-06-29 16:00',
|
|
|
+ evaluationEndDatetime:'2026-06-29 16:00',
|
|
|
time:'2026-06-29 16:00 至 2026-06-29 16:00',
|
|
|
"teacherName": "李敏",
|
|
|
- "assessmentTitle": "f制",
|
|
|
+ "evaluationName": "f制",
|
|
|
|
|
|
"useStatus": 0,
|
|
|
isOpen:true,
|
|
|
'cardOnOff':true,
|
|
|
cardStatus:0,
|
|
|
- reviewType:0
|
|
|
+ evaluationType:0,
|
|
|
+ evaluationGrade:['grade_7','grade_8','grade_12'],
|
|
|
+ isDelete:true,
|
|
|
},
|
|
|
{
|
|
|
"id": '6553554535212687236',
|
|
|
- startTime:'2026-06-29 16:00',
|
|
|
- endTime:'2026-06-29 16:00',
|
|
|
+ evaluationStartDatetime:'2026-06-29 16:00',
|
|
|
+ evaluationEndDatetime:'2026-06-29 16:00',
|
|
|
time:'2026-06-29 16:00 至 2026-06-29 16:00',
|
|
|
"teacherName": "李敏",
|
|
|
- "assessmentTitle": "fd-复制",
|
|
|
+ "evaluationName": "fd-复制",
|
|
|
"useStatus": 1,
|
|
|
isOpen:true,
|
|
|
'cardOnOff':false,
|
|
|
cardStatus:0,
|
|
|
- reviewType:1
|
|
|
+ evaluationType:1,
|
|
|
+ evaluationGrade:['grade_7','grade_8','grade_12'],
|
|
|
+ isDelete:false,
|
|
|
+
|
|
|
},
|
|
|
]);
|
|
|
|
|
|
@@ -244,20 +258,24 @@ const HandleCardSwitchOnOff = (params)=>{
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-const GetQuestionnaireList = async ()=>{
|
|
|
+// 、获取问卷任务列表
|
|
|
+const GetQuestionnaireTaskList = async ()=>{
|
|
|
let params = {
|
|
|
pageNum:currentPage.value,
|
|
|
- pageSize: pageSize.value
|
|
|
+ pageSize: pageSize.value,
|
|
|
+ "evaluationStatus": '',
|
|
|
+ "evaluationName": "",
|
|
|
+ "schoolYearCode": "",
|
|
|
}
|
|
|
- let res = await getQuestionnaireListApi(params)
|
|
|
+ let res = await getQuestionnaireTaskListApi(params)
|
|
|
|
|
|
if(res.code == 200){
|
|
|
- questionnaireList.value = res.data.records.map(item=>{
|
|
|
- return {
|
|
|
- ...item,
|
|
|
- cardStatus:item.useStatus
|
|
|
- }
|
|
|
- })
|
|
|
+ // questionnaireList.value = res.data.records.map(item=>{
|
|
|
+ // return {
|
|
|
+ // ...item,
|
|
|
+ // cardStatus:item.useStatus
|
|
|
+ // }
|
|
|
+ // })
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -266,93 +284,144 @@ const GetQuestionnaireList = async ()=>{
|
|
|
const formDialogTitle = ref('创建评价')
|
|
|
const formSubmitLoading = ref(false)
|
|
|
const formDialogVisible = ref(false)
|
|
|
-const defaultFormData = ref({})
|
|
|
+const defaultFormData = ref({ //表单默认值
|
|
|
+ evaluationType:0
|
|
|
+})
|
|
|
+const currentEditRow = ref({}) //当前编辑的行
|
|
|
|
|
|
|
|
|
-// 切换问卷评价表单内容 _需要根据条件清空开始时间和结束时间
|
|
|
-const HandleFormItmChange = (params)=>{
|
|
|
- const {key,val,formData} = params
|
|
|
- if(key == 'evaluationMethod'){
|
|
|
- console.log('当前参数内容',val)
|
|
|
- switch(val){
|
|
|
- case 'online_anonymous':
|
|
|
- case 'online_import':{
|
|
|
- formDialogItmList.value = formDialogItmList.value.map(item=>{
|
|
|
- if(item.key == 'startTime' || item.key == 'endTime' ){
|
|
|
- return {
|
|
|
- ...item,
|
|
|
- hidden:false
|
|
|
- }
|
|
|
- }else{
|
|
|
- return item
|
|
|
- }
|
|
|
- })
|
|
|
+// 更新form表单的隐藏和展示项
|
|
|
+const UpdataFormDialogItmHideList = (hideKeys:string[])=>{
|
|
|
+ formDialogItmList.value = formDialogItmList.value.map(item=>{
|
|
|
+ if(hideKeys.includes(item.key)){
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ hidden:true
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ hidden:false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+// 更新 新增/修改 状态下,评价方式切换 所展示的 不同表单信息
|
|
|
+const UpdataEditOrAddFormHideOfDifferReviewType = (id,type)=>{
|
|
|
+ switch(Number(type)){
|
|
|
+ case 0:
|
|
|
+ case 2:{
|
|
|
+ if(id){
|
|
|
+ UpdataFormDialogItmHideList(['evaluationGrade'])
|
|
|
+ }else{
|
|
|
+ UpdataFormDialogItmHideList([])
|
|
|
+ }
|
|
|
break
|
|
|
}
|
|
|
- case 'offline_paper':{
|
|
|
- defaultFormData.value.startTime = ''
|
|
|
- defaultFormData.value.endTime = ''
|
|
|
- formDialogItmList.value = formDialogItmList.value.map(item=>{
|
|
|
- if(item.key == 'startTime' || item.key == 'endTime' ){
|
|
|
- return {
|
|
|
- ...item,
|
|
|
- hidden:true
|
|
|
- }
|
|
|
- }else{
|
|
|
- return item
|
|
|
- }
|
|
|
- })
|
|
|
+ case 1:{
|
|
|
+ defaultFormData.value.evaluationStartDatetime = ''
|
|
|
+ defaultFormData.value.evaluationEndDatetime = ''
|
|
|
+ if(id){
|
|
|
+ UpdataFormDialogItmHideList(['evaluationStartDatetime','evaluationEndDatetime','evaluationGrade'])
|
|
|
+ }else{
|
|
|
+ UpdataFormDialogItmHideList(['evaluationStartDatetime','evaluationEndDatetime'])
|
|
|
+ }
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
+}
|
|
|
+// 切换问卷评价表单内容 _需要根据条件清空开始时间和结束时间
|
|
|
+// 同时要判断 当前是 新增 还是 修改
|
|
|
+const HandleFormItmChange = (params)=>{
|
|
|
+ const {key,val,formData} = params
|
|
|
+ if(key == 'evaluationType'){
|
|
|
+ console.log('当前参数内容',val)
|
|
|
+ UpdataEditOrAddFormHideOfDifferReviewType(defaultFormData.value?.id, val);
|
|
|
}
|
|
|
}
|
|
|
// 打开创建问卷弹窗
|
|
|
-const OpenQuestionnaireDialog = (row?:any)=>{
|
|
|
+const OpenQuestionnaireDialog = async (row?:any)=>{
|
|
|
formDialogVisible.value = true
|
|
|
-
|
|
|
- // 获取评价年级列表
|
|
|
- const gradeListOption = [
|
|
|
- { label: '七年级', value: 'grade_7' },
|
|
|
- { label: '八年级', value: 'grade_8' },
|
|
|
- { label: '九年级', value: 'grade_9' },
|
|
|
- { label: '高一', value: 'grade_10' },
|
|
|
- { label: '高二', value: 'grade_11' },
|
|
|
- { label: '高三', value: 'grade_12' }
|
|
|
- ]
|
|
|
-
|
|
|
- formDialogItmList.value = formDialogItmList.value.map(item=>{
|
|
|
- if(item.key == 'evaluationGrade'){
|
|
|
+ let gradeListOption = []
|
|
|
+ let res = await getGradeListApi()
|
|
|
+ // 赋值年级下拉
|
|
|
+ if(res?.code == 200){
|
|
|
+ gradeListOption = res.data.map(item=>{
|
|
|
return {
|
|
|
- ...item,
|
|
|
- selectList:gradeListOption
|
|
|
+ label:item.gradeName,
|
|
|
+ value:JSON.stringify({
|
|
|
+ gradeCode:item.gradeCode,
|
|
|
+ gradeName:item.gradeName,
|
|
|
+ gradeId:item.gradeId,
|
|
|
+ })
|
|
|
}
|
|
|
- }else {
|
|
|
- return item
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
+ })
|
|
|
+ formDialogItmList.value = formDialogItmList.value.map(item=>{
|
|
|
+ if(item.key == 'evaluationGrade'){
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ selectList:gradeListOption
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ return item
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if(row.id){
|
|
|
+ // 修改弹窗
|
|
|
+ defaultFormData.value = row
|
|
|
+ // 要判断表单的显隐藏
|
|
|
+ UpdataEditOrAddFormHideOfDifferReviewType(row.id, row.evaluationType);
|
|
|
+ }else{
|
|
|
+ // 新增弹窗
|
|
|
+ UpdataFormDialogItmHideList([''])
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-// 创建问卷
|
|
|
-const AddQuestionnaireTask = (params?:any)=>{
|
|
|
+// 创建问卷 _保存
|
|
|
+const AddQuestionnaireTask = async (params?:any)=>{
|
|
|
const {formData,formRef} = params
|
|
|
-
|
|
|
console.log('表单信息',formData)
|
|
|
- // formDialogVisible.value = false
|
|
|
+ formSubmitLoading.value = true
|
|
|
+ let gradeData = formData.evaluationGrade.map(item=>{
|
|
|
+ return JSON.parse(item)
|
|
|
+ })
|
|
|
+ let finalPrams = {
|
|
|
+ evaluationName: formData.evaluationName,
|
|
|
+ evaluationType: formData.evaluationType,
|
|
|
+ evaluationStartDatetime: unioformDateTransform(formData.evaluationStartDatetime),
|
|
|
+ evaluationEndDatetime: unioformDateTransform(formData.evaluationEndDatetime),
|
|
|
+ gradeData:gradeData
|
|
|
+ }
|
|
|
|
|
|
+ let res = undefined
|
|
|
+ try{
|
|
|
+ res = await addQuestionnaireTaskListApi(finalPrams)
|
|
|
+ }catch{}
|
|
|
+
|
|
|
+ if(res?.code == 200){
|
|
|
+ ElMessage.success(res.msg)
|
|
|
+ formRef.resetFields()
|
|
|
+ CloseFormDialog()
|
|
|
+ await GetQuestionnaireTaskList() // 重查信息
|
|
|
+ }else{
|
|
|
+ formSubmitLoading.value = false
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 关闭问卷弹窗
|
|
|
const CloseFormDialog = ()=>{
|
|
|
+ defaultFormData.value = {
|
|
|
+ evaluationType:0
|
|
|
+ }
|
|
|
+ currentEditRow.value = {}
|
|
|
formDialogVisible.value = false
|
|
|
-
|
|
|
+ formSubmitLoading.value = false
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
// 删除问卷
|
|
|
const dialogVisible= ref(false)
|
|
|
const dialogSubmitLoading = ref(false)
|
|
|
@@ -386,35 +455,38 @@ const HandleDialogConfirm = async ()=>{
|
|
|
}
|
|
|
|
|
|
|
|
|
-const GetSchoolYearList = ()=>{
|
|
|
- let schoolYearOpt = [
|
|
|
- {
|
|
|
- label:'全部',
|
|
|
- value:'all'
|
|
|
- },
|
|
|
- {
|
|
|
- label:'2024-2025学年',
|
|
|
- value:'2024-2025'
|
|
|
- }
|
|
|
- ]
|
|
|
+// 获取学年列表信息
|
|
|
+const GetSchoolYearList = async()=>{
|
|
|
+ let res = await getSchoolYearListApi()
|
|
|
+ let schoolYearOpt = []
|
|
|
+ if(res.code == 200){
|
|
|
+ schoolYearOpt = res?.data?.map(item=>{
|
|
|
+ return {
|
|
|
+ label:item.schoolYearName,
|
|
|
+ value:item.schoolYearId
|
|
|
+ }
|
|
|
+ }) || []
|
|
|
+ }
|
|
|
searchList.value = searchList.value.map(item=>{
|
|
|
if(item.key == 'schoolYear'){
|
|
|
return {
|
|
|
...item,
|
|
|
- options:schoolYearOpt,
|
|
|
+ options:[{
|
|
|
+ label:'全部',
|
|
|
+ value:'all'
|
|
|
+ },...schoolYearOpt],
|
|
|
defaultValue:'all'
|
|
|
}
|
|
|
}else{
|
|
|
return item
|
|
|
}
|
|
|
})
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
|
onMounted(async()=>{
|
|
|
GetSchoolYearList()
|
|
|
- // await GetQuestionnaireList()
|
|
|
+ await GetQuestionnaireTaskList()
|
|
|
})
|
|
|
|
|
|
|