| | |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | :title="title" |
| | | width="50%" |
| | | width="750px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | |
| | | </el-form-item> |
| | | <el-form-item label="归属题库:" prop="bankName"> |
| | | <el-select |
| | | clearable |
| | | v-model="state.form.bankName" |
| | | filterable |
| | | remote |
| | | reserve-keyword |
| | | placeholder="请输入题库名称" |
| | | remote-show-suffix |
| | | :remote-method="getBankList" |
| | | style="width: 100%" |
| | | v-loadMoreNew:[reselect]="handleScroll" |
| | | :popper-class="reselect.name" |
| | | @change="selectValue" |
| | | class="item-width" |
| | | placeholder="请选择题库" |
| | | > |
| | | <el-option |
| | | v-for="item in state.bankList" |
| | |
| | | :value="item.name" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-select--> |
| | | <!-- v-model="state.form.bankName"--> |
| | | <!-- style="width: 100%"--> |
| | | <!-- v-loadMoreNew:[reselect]="handleScroll"--> |
| | | <!-- :popper-class="reselect.name"--> |
| | | <!-- @change="selectValue"--> |
| | | <!-- class="item-width"--> |
| | | <!-- placeholder="请选择题库"--> |
| | | <!-- >--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in state.bankList"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :label="item.name"--> |
| | | <!-- :value="item.name"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | </el-form-item> |
| | | <el-form-item label="题目内容:" prop="title"> |
| | | <el-input v-model.trim="state.form.title" type="textarea" placeholder="请输入题目内容"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="选项:" prop="content"> |
| | | <el-form-item label="选项:" prop="content" v-if="state.form.questionType != 4"> |
| | | <div style="display: flex;flex-direction: column;width: 100%"> |
| | | <el-button :disabled="state.form.questionType ===3" type="primary" @click="addOption" size="default" style="width: 65px;margin-bottom: 15px">添加</el-button> |
| | | <el-button :disabled="state.form.questionType ===3 || state.form.questionType==null " type="primary" @click="addOption" size="default" style="width: 65px;margin-bottom: 15px">添加</el-button> |
| | | <div v-for="(item,index) in state.optionItem.items" :key="index" style="width: 100%"> |
| | | <div style="display: flex;align-items: center"> |
| | | <span>{{String.fromCharCode(index + 65)}}</span> |
| | |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="解析:" > |
| | | <el-input type="textarea" v-model="state.optionItem.analyze" placeholder="请输入题目解析" style="width: 100%;margin-bottom: 10px"></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="正确答案:" prop="answer"> |
| | | <el-radio-group v-model="state.form.answer" v-if="state.form.questionType === 1 || state.form.questionType === 3"> |
| | | <div v-for="(item,index) in state.optionItem.items"> |
| | |
| | | <el-checkbox :label="String.fromCharCode(index + 65)" style="margin-left: 20px;">{{String.fromCharCode(index + 65)}}</el-checkbox> |
| | | </div> |
| | | </el-checkbox-group> |
| | | <el-input v-if="state.form.questionType === 4" v-model="state.form.answer" type="textarea" placeholder="请输入正确答案"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="解析:" > |
| | | <el-input type="textarea" v-model="state.optionItem.analyze" placeholder="请输入题目解析" style="width: 100%;margin-bottom: 10px"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | |
| | | { |
| | | id: 3, |
| | | name: '判断题' |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: '简答题' |
| | | } |
| | | ], |
| | | optionItem: { |
| | |
| | | console.log(" state.optionItem.items.", state.optionItem.items) |
| | | } |
| | | const openDialog = async (type, value) => { |
| | | await loadMoreBankData(); |
| | | await getBankList(''); |
| | | const userInfo = JSON.parse(Cookies.get('userInfo')) |
| | | console.log("userInfo",userInfo) |
| | | if(userInfo.userType === 0){ |
| | |
| | | } |
| | | } |
| | | dialogVisible.value = true; |
| | | } |
| | | |
| | | const getBankList = async (val)=>{ |
| | | if(val != ""){ |
| | | const queryParams = { |
| | | name: val |
| | | } |
| | | const res = await getQuestionBank(queryParams) |
| | | if (res.code == 200) { |
| | | state.bankList = res.data.list |
| | | |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }else { |
| | | const queryParams = { |
| | | pageNum: 1, |
| | | pageSize: 10 |
| | | } |
| | | const res = await getQuestionBank(queryParams) |
| | | if (res.code == 200) { |
| | | state.bankList = res.data.list |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | } |
| | | |
| | | const handleScroll = () => { |
| | |
| | | if(valid){ |
| | | if(title.value === '新增'){ |
| | | const {id,bankName, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | data.answer = data.questionType === 1 || data.questionType === 3 ? data.answer : state.checkList.join(',') |
| | | // data.content = data.questionType === 1 ? JSON.stringify(state.singleQuestion) : data.questionType === 2 ? JSON.stringify(state.multiQuestion) : JSON.stringify(state.judgeQuestion) |
| | | const options = state.optionItem.items.map((op,index) => { |
| | | return { |
| | | prefix: String.fromCharCode(index + 65), |
| | | content: op.content, |
| | | } |
| | | }) |
| | | data.content = JSON.stringify( |
| | | { |
| | | analyze: state.optionItem.analyze, |
| | | items: options |
| | | data.answer = data.questionType === 1 || data.questionType === 3 || data.questionType === 4? data.answer : state.checkList.join(',') |
| | | if(data.questionType !== 4){ |
| | | const options = state.optionItem.items.map((op,index) => { |
| | | return { |
| | | prefix: String.fromCharCode(index + 65), |
| | | content: op.content, |
| | | } |
| | | ) |
| | | }) |
| | | data.content = JSON.stringify( |
| | | { |
| | | analyze: state.optionItem.analyze, |
| | | items: options |
| | | } |
| | | ) |
| | | }else { |
| | | data.content = JSON.stringify( |
| | | { |
| | | analyze: state.optionItem.analyze, |
| | | }) |
| | | } |
| | | console.log('state.form',data) |
| | | const res = await addQuestion(data) |
| | | if(res.code === 200){ |
| | |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '编辑'){ |
| | | const {bankName,...data} = JSON.parse(JSON.stringify(state.form)) |
| | | data.answer = data.questionType === 1 || data.questionType === 3 ? data.answer : state.checkList.join(',') |
| | | // data.content = data.questionType === 1 ? JSON.stringify(state.singleQuestion) : data.questionType === 2 ? JSON.stringify(state.multiQuestion) : JSON.stringify(state.judgeQuestion) |
| | | const options = state.optionItem.items.map((op,index) => { |
| | | return { |
| | | prefix: String.fromCharCode(index + 65), |
| | | content: op.content, |
| | | } |
| | | }) |
| | | data.content = JSON.stringify( |
| | | { |
| | | analyze: state.optionItem.analyze, |
| | | items: options |
| | | data.answer = data.questionType === 1 || data.questionType === 3 || data.questionType === 4 ? data.answer : state.checkList.join(',') |
| | | if(data.questionType !== 4){ |
| | | const options = state.optionItem.items.map((op,index) => { |
| | | return { |
| | | prefix: String.fromCharCode(index + 65), |
| | | content: op.content, |
| | | } |
| | | ) |
| | | }) |
| | | data.content = JSON.stringify( |
| | | { |
| | | analyze: state.optionItem.analyze, |
| | | items: options |
| | | } |
| | | ) |
| | | }else { |
| | | data.content = JSON.stringify( |
| | | { |
| | | analyze: state.optionItem.analyze, |
| | | }) |
| | | } |
| | | const res = await editQuestion(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | |
| | | } |
| | | } |
| | | const changeType = () => { |
| | | state.optionItem = { |
| | | analyze: '', |
| | | items: [] |
| | | } |
| | | if(state.form.questionType === 3) { |
| | | state.optionItem.items = [ |
| | | { |
| | |
| | | ] |
| | | } |
| | | |
| | | |
| | | } |
| | | const handleClose = () => { |
| | | busRef.value.clearValidate(); |