|
|
@@ -6,7 +6,7 @@
|
|
|
<el-checkbox v-model="isUnifiedTemplate" >所有单科统一模版</el-checkbox>
|
|
|
</div>
|
|
|
<div class="content_right">
|
|
|
- <el-button class="button_background" @click="SaveEvaluationData">完成</el-button>
|
|
|
+ <el-button class="button_background" @click="FinishQuestionnaireTemplateConfig">完成</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -18,8 +18,8 @@
|
|
|
:totalNum="0"
|
|
|
:hidePagination="true"
|
|
|
>
|
|
|
- <template #matchGender="{row}">
|
|
|
- <el-select v-model="row.matchGender">
|
|
|
+ <template #gender="{row}">
|
|
|
+ <el-select v-model="row.gender">
|
|
|
<el-option
|
|
|
v-for="opt in gradeOptionList"
|
|
|
:key="opt.value"
|
|
|
@@ -28,12 +28,12 @@
|
|
|
/>
|
|
|
</el-select>
|
|
|
</template>
|
|
|
- <template #questionnaireName="{row}">
|
|
|
+ <template #assessmentId="{row}">
|
|
|
<div class="questionnaire_cell table_row_option">
|
|
|
<el-select
|
|
|
- v-model="row.questionnaireName"
|
|
|
+ v-model="row.assessmentId"
|
|
|
filterable
|
|
|
- @change="(val)=>isUnifiedTemplate ? SyncQuestionnaireTemplate(val) : ''">
|
|
|
+ @change="(val)=>HandleQuestionnaireTemplateChange(row,val)">
|
|
|
<el-option
|
|
|
v-for="opt in quesitonnaireOptionList"
|
|
|
:key="opt.value"
|
|
|
@@ -41,7 +41,7 @@
|
|
|
:value="opt.value"
|
|
|
/>
|
|
|
</el-select>
|
|
|
- <span v-if="row.questionnaireName" class="el_button_editor">预览</span>
|
|
|
+ <span v-if="row.assessmentId" class="el_button_editor" @click="GoToPreviewQuestionnaire(row.assessmentId)">预览</span>
|
|
|
<span v-else class="el_button_editor"></span>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -53,19 +53,26 @@
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import { ref } from 'vue';
|
|
|
+import { onMounted, ref } from 'vue';
|
|
|
+import { useRoute,useRouter } from 'vue-router';
|
|
|
import Table from '@/baseComponents/Table.vue';
|
|
|
import {tableColumns} from './table'
|
|
|
|
|
|
-const isUnifiedTemplate = ref(false) //所有单科统一模版
|
|
|
+import { getQuestionnaireTemplateListApi,saveQuestionnaireTemplateListApi} from '@/api/step3Component'
|
|
|
+import {getAllQuestionnaireListApi} from '@/api/surveyManagement'
|
|
|
+import { ElMessage } from 'element-plus';
|
|
|
|
|
|
-// const
|
|
|
+const route = useRoute()
|
|
|
+const router = useRouter()
|
|
|
|
|
|
+const isUnifiedTemplate = ref(true) //所有单科统一模版
|
|
|
+
|
|
|
+// 1. 下拉选项
|
|
|
// 年级下拉
|
|
|
const gradeOptionList = ref([
|
|
|
{
|
|
|
label:'全部',
|
|
|
- value:'all'
|
|
|
+ value:'2'
|
|
|
},
|
|
|
{
|
|
|
label:'男',
|
|
|
@@ -78,105 +85,105 @@ const gradeOptionList = ref([
|
|
|
])
|
|
|
|
|
|
// 问卷下拉
|
|
|
-const quesitonnaireOptionList = ref([
|
|
|
- {
|
|
|
- label:'满意度问卷1',
|
|
|
- value:'1'
|
|
|
- },
|
|
|
- {
|
|
|
- label:'满意度问卷2',
|
|
|
- value:'2'
|
|
|
- },
|
|
|
- {
|
|
|
- label:'满意度问卷3',
|
|
|
- value:'3'
|
|
|
- },
|
|
|
+const quesitonnaireOptionList = ref([])
|
|
|
+// 获取问卷列表
|
|
|
+const GetQuestionnaireList = async ()=>{
|
|
|
+ let res = await getAllQuestionnaireListApi()
|
|
|
+ if(res?.code == 200){
|
|
|
+ quesitonnaireOptionList.value = res?.data?.map(item=>{
|
|
|
+ return {
|
|
|
+ label:item.assessmentTitle,
|
|
|
+ fullScore:item.fullScore, //问卷满分
|
|
|
+ questionCount:item.questionCount, // 题目数量
|
|
|
+ value:item.id,
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
-])
|
|
|
|
|
|
-// 同步统一问卷模板
|
|
|
-const SyncQuestionnaireTemplate = (val)=>{
|
|
|
- tableData.value = tableData.value.map((item,index)=>{
|
|
|
- if(index !== 0){
|
|
|
- item.questionnaireName = val
|
|
|
+// 2. 问卷模板列表 获取 及 相关操作
|
|
|
+const tableData = ref([]);
|
|
|
+// 获取问卷模板列表
|
|
|
+const GetQuestionnaireTemplateList = async ()=>{
|
|
|
+ let res = await getQuestionnaireTemplateListApi(route.query.id)
|
|
|
+ if(res?.code == 200){
|
|
|
+ tableData.value = res.data || []
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 变更 选中的问卷
|
|
|
+const HandleQuestionnaireTemplateChange = (row,val)=>{
|
|
|
+ let aimQuesitonnaire = quesitonnaireOptionList.value.find(item=>{
|
|
|
+ return item.value == val
|
|
|
+ })
|
|
|
+ if(isUnifiedTemplate.value){
|
|
|
+ // 同步统一问卷模板
|
|
|
+ tableData.value = tableData.value.map((item,index)=>{
|
|
|
+ if(index !== 0){
|
|
|
+ item.assessmentId = val
|
|
|
+
|
|
|
+ item.fullScore = aimQuesitonnaire.fullScore,
|
|
|
+ item.questionCount = aimQuesitonnaire.questionCount
|
|
|
+ }
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ tableData.value = tableData.value.map(item=>{
|
|
|
+ if(item.name === row.name){
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ fullScore:aimQuesitonnaire.fullScore,
|
|
|
+ questionCount:aimQuesitonnaire.questionCount
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ return item
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 预览问卷
|
|
|
+const GoToPreviewQuestionnaire = (id)=>{
|
|
|
+ sessionStorage.setItem('questionnaireAndTemplateList',JSON.stringify({
|
|
|
+ tableData:tableData.value,
|
|
|
+ quesitonnaireOptionList:quesitonnaireOptionList.value
|
|
|
+ }))
|
|
|
+ router.push(`/main/previewQuestionnaire?id=${id}`)
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+// 完成问卷模板配置
|
|
|
+const FinishQuestionnaireTemplateConfig = async ()=>{
|
|
|
+ let params = tableData.value.map(item=>{
|
|
|
+ return {
|
|
|
+ "ids": [], //
|
|
|
+ evaluationId:route.query.id, // 评价任务id
|
|
|
+ assessmentId: item?.assessmentId, //问卷名称
|
|
|
+ gender: item.gender, //性别
|
|
|
}
|
|
|
- return item
|
|
|
})
|
|
|
+ let res = await saveQuestionnaireTemplateListApi(params)
|
|
|
+ if(res?.code == 200){
|
|
|
+ ElMessage.success(res?.msg)
|
|
|
+ // 重查列表
|
|
|
+ await GetQuestionnaireTemplateList()
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-// 生成模拟数据
|
|
|
-const tableData = ref([
|
|
|
- {
|
|
|
- subject: '班主任',
|
|
|
- matchGender: '全部',
|
|
|
- questionnaireName: '1', // 已选状态
|
|
|
- questionCount: '10',
|
|
|
- fullScore: '10',
|
|
|
- },
|
|
|
- {
|
|
|
- subject: '语文',
|
|
|
- matchGender: '全部',
|
|
|
- questionnaireName: '', // 对应图中“请选择问卷模版”
|
|
|
- questionCount: '', // 对应图中“-”
|
|
|
- fullScore: '', // 对应图中“-”
|
|
|
- },
|
|
|
- {
|
|
|
- subject: '数学',
|
|
|
- matchGender: '全部',
|
|
|
- questionnaireName: '',
|
|
|
- questionCount: '',
|
|
|
- fullScore: '',
|
|
|
- },
|
|
|
- {
|
|
|
- subject: '英语',
|
|
|
- matchGender: '全部',
|
|
|
- questionnaireName: '',
|
|
|
- questionCount: '',
|
|
|
- fullScore: '',
|
|
|
- },
|
|
|
- {
|
|
|
- subject: '物理',
|
|
|
- matchGender: '全部',
|
|
|
- questionnaireName: '',
|
|
|
- questionCount: '',
|
|
|
- fullScore: '',
|
|
|
- },
|
|
|
- {
|
|
|
- subject: '化学',
|
|
|
- matchGender: '全部',
|
|
|
- questionnaireName: '',
|
|
|
- questionCount: '',
|
|
|
- fullScore: '',
|
|
|
- },
|
|
|
- {
|
|
|
- subject: '生物',
|
|
|
- matchGender: '全部',
|
|
|
- questionnaireName: '',
|
|
|
- questionCount: '',
|
|
|
- fullScore: '',
|
|
|
- },
|
|
|
- {
|
|
|
- subject: '政治',
|
|
|
- matchGender: '女', // 注意:此处图片显示为“女”
|
|
|
- questionnaireName: '',
|
|
|
- questionCount: '',
|
|
|
- fullScore: '',
|
|
|
- },
|
|
|
- {
|
|
|
- subject: '历史',
|
|
|
- matchGender: '全部',
|
|
|
- questionnaireName: '',
|
|
|
- questionCount: '',
|
|
|
- fullScore: '',
|
|
|
- },
|
|
|
- {
|
|
|
- subject: '地理',
|
|
|
- matchGender: '男', // 注意:此处图片显示为“男”
|
|
|
- questionnaireName: '',
|
|
|
- questionCount: '',
|
|
|
- fullScore: '',
|
|
|
+
|
|
|
+onMounted(async ()=>{
|
|
|
+ let sessionQuestionnaireTemplateList = sessionStorage.getItem('questionnaireAndTemplateList')
|
|
|
+ // 先判断是否有缓存 —— 从预览页跳转过来
|
|
|
+ if(sessionQuestionnaireTemplateList){
|
|
|
+ tableData.value = JSON.parse(sessionQuestionnaireTemplateList).tableData
|
|
|
+ quesitonnaireOptionList.value = JSON.parse(sessionQuestionnaireTemplateList).quesitonnaireOptionList
|
|
|
+ sessionStorage.removeItem('questionnaireAndTemplateList') //获取完后清空
|
|
|
+ }else{
|
|
|
+ await GetQuestionnaireList()
|
|
|
+ await GetQuestionnaireTemplateList()
|
|
|
}
|
|
|
-]);
|
|
|
+})
|
|
|
</script>
|
|
|
|
|
|
|