mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-11 11:56:46 +08:00
feaT:合并
This commit is contained in:
@@ -43,7 +43,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-input v-model:value="formData.examinationName" style="width: 400px; height: 40px; border-radius: 8px"
|
<a-input v-model:value="formData.examinationName" style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
placeholder="请输入考试名称" :maxlength="20" :disabled="taskIndex >= 0" />
|
placeholder="请输入考试名称" :maxlength="20" :disabled="taskIndex >= 0 && isEdit" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
<a-tag closable color="processing" @close="delTag" :closeIcon="true">
|
<a-tag closable color="processing" @close="delTag" :closeIcon="true">
|
||||||
<span style="font-size: 14px; line-height: 33px">{{ formData.examinationTestName }}</span>
|
<span style="font-size: 14px; line-height: 33px">{{ formData.examinationTestName }}</span>
|
||||||
</a-tag>
|
</a-tag>
|
||||||
</div>
|
</div>
|
||||||
<s-test v-if="taskIndex < 0" v-model:id="formData.examinationPaperId" v-model:name="formData.examinationTestName">
|
<s-test v-if="taskIndex < 0" v-model:id="formData.examinationPaperId" v-model:name="formData.examinationTestName">
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<button class="xkbtn" style="margin:0" >
|
<button class="xkbtn" style="margin:0" >
|
||||||
@@ -66,6 +66,13 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</s-test>
|
</s-test>
|
||||||
|
<s-test v-if="taskIndex >= 0 && isEdit==false" v-model:id="formData.examinationPaperId" v-model:name="formData.examinationTestName">
|
||||||
|
<div class="btnbox">
|
||||||
|
<button class="xkbtn" style="margin:0" >
|
||||||
|
{{ formData.examinationPaperId ? "重选" : "选择" }}试卷
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</s-test>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="main_item">
|
<div class="main_item">
|
||||||
@@ -89,7 +96,7 @@
|
|||||||
<span style="margin-right: 3px">考试时长:</span>
|
<span style="margin-right: 3px">考试时长:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="select">
|
<div class="select">
|
||||||
<a-input-number :disabled="taskIndex >= 0" :min="0" :max="300" :precision="0"
|
<a-input-number :disabled="taskIndex >= 0 && isEdit" :min="0" :max="300" :precision="0"
|
||||||
style="width: 400px; height: 40px; border-radius: 8px"
|
style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
v-model:value="formData.examinationDuration"></a-input-number>
|
v-model:value="formData.examinationDuration"></a-input-number>
|
||||||
<span style="color: #999999; margin-left: 8px">分钟</span>
|
<span style="color: #999999; margin-left: 8px">分钟</span>
|
||||||
@@ -103,7 +110,7 @@
|
|||||||
<span style="margin-right: 3px">及格线:</span>
|
<span style="margin-right: 3px">及格线:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-input :disabled="taskIndex >= 0" v-model:value="formData.passLine" type="number"
|
<a-input :disabled="taskIndex >= 0 && isEdit" v-model:value="formData.passLine" type="number"
|
||||||
style="width: 400px; height: 40px; border-radius: 8px" />
|
style="width: 400px; height: 40px; border-radius: 8px" />
|
||||||
|
|
||||||
<span style="color: #999999; margin-left: 8px">分</span>
|
<span style="color: #999999; margin-left: 8px">分</span>
|
||||||
@@ -114,7 +121,7 @@
|
|||||||
<span style="margin-right: 3px">考试说明:</span>
|
<span style="margin-right: 3px">考试说明:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="textarea">
|
<div class="textarea">
|
||||||
<a-textarea :disabled="taskIndex >= 0" v-model:value="formData.examinationExplain" placeholder="请输入考试说明"
|
<a-textarea :disabled="taskIndex >= 0 && isEdit" v-model:value="formData.examinationExplain" placeholder="请输入考试说明"
|
||||||
allow-clear show-count :maxlength="200" :rows="6" />
|
allow-clear show-count :maxlength="200" :rows="6" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -126,7 +133,7 @@
|
|||||||
<div class="setbox">
|
<div class="setbox">
|
||||||
<div class="timerbox">
|
<div class="timerbox">
|
||||||
<span>允许重复考试:</span>
|
<span>允许重复考试:</span>
|
||||||
<a-input-number :disabled="taskIndex >= 0" :min="-1" :max="300" :precision="0" style="
|
<a-input-number :disabled="taskIndex >= 0 && isEdit" :min="-1" :max="300" :precision="0" style="
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
@@ -142,7 +149,7 @@
|
|||||||
<span style="margin-right: 3px">显示答案:</span>
|
<span style="margin-right: 3px">显示答案:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-radio-group :disabled="taskIndex >= 0" style="margin-right: 12px" v-model:value="formData.showAnswers">
|
<a-radio-group :disabled="taskIndex >= 0 && isEdit" style="margin-right: 12px" v-model:value="formData.showAnswers">
|
||||||
<a-radio :value="1">允许查看</a-radio>
|
<a-radio :value="1">允许查看</a-radio>
|
||||||
<a-radio :value="2">不允许查看</a-radio>
|
<a-radio :value="2">不允许查看</a-radio>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
@@ -153,7 +160,7 @@
|
|||||||
<span style="margin-right: 3px">显示解析:</span>
|
<span style="margin-right: 3px">显示解析:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-radio-group :disabled="taskIndex >= 0" style="margin-right: 12px" v-model:value="formData.showAnalysis">
|
<a-radio-group :disabled="taskIndex >= 0 && isEdit" style="margin-right: 12px" v-model:value="formData.showAnalysis">
|
||||||
<a-radio :value="1">允许查看</a-radio>
|
<a-radio :value="1">允许查看</a-radio>
|
||||||
<a-radio :value="2">不允许查看</a-radio>
|
<a-radio :value="2">不允许查看</a-radio>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
@@ -164,7 +171,7 @@
|
|||||||
<span style="margin-right: 3px">评分模式:</span>
|
<span style="margin-right: 3px">评分模式:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-radio-group :disabled="taskIndex >= 0" style="margin-right: 12px" v-model:value="formData.scoringModel">
|
<a-radio-group :disabled="taskIndex >= 0 && isEdit" style="margin-right: 12px" v-model:value="formData.scoringModel">
|
||||||
<a-radio :value="1">最高一次</a-radio>
|
<a-radio :value="1">最高一次</a-radio>
|
||||||
<a-radio :value="2">最后一次</a-radio>
|
<a-radio :value="2">最后一次</a-radio>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
@@ -177,7 +184,7 @@
|
|||||||
<span style="margin-right: 3px">试题排列:</span>
|
<span style="margin-right: 3px">试题排列:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-radio-group :disabled="taskIndex >= 0" style="margin-right: 12px"
|
<a-radio-group :disabled="taskIndex >= 0 && isEdit" style="margin-right: 12px"
|
||||||
v-model:value="formData.questionArrangement">
|
v-model:value="formData.questionArrangement">
|
||||||
<a-radio :value="1">试题乱序</a-radio>
|
<a-radio :value="1">试题乱序</a-radio>
|
||||||
<a-radio :value="2">选项乱序</a-radio>
|
<a-radio :value="2">选项乱序</a-radio>
|
||||||
@@ -199,7 +206,7 @@
|
|||||||
<span style="margin-right: 3px">考试名称:</span>
|
<span style="margin-right: 3px">考试名称:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-input v-model:value="formData.examinationName" style="width: 400px; height: 40px; border-radius: 8px" :disabled="taskIndex >= 0"
|
<a-input v-model:value="formData.examinationName" style="width: 400px; height: 40px; border-radius: 8px" :disabled="taskIndex >= 0 && isEdit"
|
||||||
placeholder="请输入考试名称" :maxlength="20" />
|
placeholder="请输入考试名称" :maxlength="20" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -212,7 +219,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-input v-model:value="formData.source"
|
<a-input v-model:value="formData.source"
|
||||||
style="width: 400px; height: 40px; border-radius: 8px" :disabled="taskIndex >= 0"
|
style="width: 400px; height: 40px; border-radius: 8px" :disabled="taskIndex >= 0 && isEdit"
|
||||||
placeholder="请输入数据来源" show-count :maxlength="420" />
|
placeholder="请输入数据来源" show-count :maxlength="420" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -221,7 +228,7 @@
|
|||||||
<span style="margin-right: 3px">考试说明:</span>
|
<span style="margin-right: 3px">考试说明:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="textarea">
|
<div class="textarea">
|
||||||
<a-textarea v-model:value="formData.externalExplain" placeholder="请输入考试说明" allow-clear show-count :disabled="taskIndex >= 0"
|
<a-textarea v-model:value="formData.externalExplain" placeholder="请输入考试说明" allow-clear show-count :disabled="taskIndex >= 0 && isEdit"
|
||||||
:maxlength="200" :rows="6" />
|
:maxlength="200" :rows="6" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -242,7 +249,8 @@ import { Form, message } from "ant-design-vue";
|
|||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
type: Number,
|
type: Number,
|
||||||
taskList: []
|
taskList: [],
|
||||||
|
infoType: String
|
||||||
})
|
})
|
||||||
const visible = ref(false)
|
const visible = ref(false)
|
||||||
const initValue = {
|
const initValue = {
|
||||||
@@ -318,6 +326,7 @@ const rulesRef = ref(innerRule);
|
|||||||
const emit = defineEmits({})
|
const emit = defineEmits({})
|
||||||
const taskIndex = ref(-1);
|
const taskIndex = ref(-1);
|
||||||
const dateTime = ref([]);
|
const dateTime = ref([]);
|
||||||
|
let isEdit = ref(true);
|
||||||
|
|
||||||
const { resetFields, validate } = Form.useForm(formData, rulesRef);
|
const { resetFields, validate } = Form.useForm(formData, rulesRef);
|
||||||
|
|
||||||
@@ -366,6 +375,7 @@ async function confirm() {
|
|||||||
|
|
||||||
|
|
||||||
function openDrawer(i, row) {
|
function openDrawer(i, row) {
|
||||||
|
row && (props.infoType=='1'?(row.projectTaskId?row.projectTaskId==null?isEdit.value=false:isEdit.value=true:isEdit.value=false):(row.routerTaskId?row.routerTaskId==null?isEdit.value=false:isEdit.value=true:isEdit.value=false));
|
||||||
row && resetFields(row.info);
|
row && resetFields(row.info);
|
||||||
row && (dateTime.value = [row.info.examinationStartTime, row.info.examinationEndTime]);
|
row && (dateTime.value = [row.info.examinationStartTime, row.info.examinationEndTime]);
|
||||||
(i >= 0) && (taskIndex.value = i);
|
(i >= 0) && (taskIndex.value = i);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<iframe
|
<iframe
|
||||||
id="iframe"
|
id="iframe"
|
||||||
style="width: 100%; height: 600px"
|
style="width: 100%; height: 600px"
|
||||||
:src="`${iframeUrl}/course/manages?f=choose?ref_id=${props.id}&ref_type=${props.type}`"
|
:src="`${iframeUrl}/course/manages?f=choose&ref_id=${props.id}&ref_type=${props.type}`"
|
||||||
name="myframe"
|
name="myframe"
|
||||||
security="restricted"
|
security="restricted"
|
||||||
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
|
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
|
||||||
|
|||||||
@@ -36,10 +36,11 @@
|
|||||||
@change="handleChange"
|
@change="handleChange"
|
||||||
:showUploadList="false"
|
:showUploadList="false"
|
||||||
:data="{
|
:data="{
|
||||||
type: type,
|
type,
|
||||||
targetId: Number(targetId),
|
targetId,
|
||||||
chapterId: chapterId,
|
chapterId,
|
||||||
taskId: taskId,
|
taskId,
|
||||||
|
courseId,
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<p class="ant-upload-drag-icon">
|
<p class="ant-upload-drag-icon">
|
||||||
@@ -66,7 +67,7 @@
|
|||||||
<div class="tit">{{ fileName }}</div>
|
<div class="tit">{{ fileName }}</div>
|
||||||
<div class="stateloading">正在上传</div>
|
<div class="stateloading">正在上传</div>
|
||||||
</div>
|
</div>
|
||||||
<a-progress :percent="uploadpercent" />
|
<a-progress :percent="uploadpercent"/>
|
||||||
<!-- <div class="prog">
|
<!-- <div class="prog">
|
||||||
<div class="inprogloading"></div>
|
<div class="inprogloading"></div>
|
||||||
</div> -->
|
</div> -->
|
||||||
@@ -86,7 +87,7 @@
|
|||||||
<div class="tit">{{ fileName }}</div>
|
<div class="tit">{{ fileName }}</div>
|
||||||
<div class="statedefeat">上传失败</div>
|
<div class="statedefeat">上传失败</div>
|
||||||
</div>
|
</div>
|
||||||
<a-progress :percent="uploadpercent" />
|
<a-progress :percent="uploadpercent"/>
|
||||||
<!-- <div class="prog">
|
<!-- <div class="prog">
|
||||||
<div class="inprogdefeat"></div>
|
<div class="inprogdefeat"></div>
|
||||||
</div> -->
|
</div> -->
|
||||||
@@ -121,7 +122,7 @@
|
|||||||
<div class="tit">{{ fileName }}</div>
|
<div class="tit">{{ fileName }}</div>
|
||||||
<div class="statesucce">上传成功</div>
|
<div class="statesucce">上传成功</div>
|
||||||
</div>
|
</div>
|
||||||
<a-progress :percent="uploadpercent" />
|
<a-progress :percent="uploadpercent"/>
|
||||||
<!-- <div class="prog">
|
<!-- <div class="prog">
|
||||||
<div class="inprogsucce"></div>
|
<div class="inprogsucce"></div>
|
||||||
</div> -->
|
</div> -->
|
||||||
@@ -185,15 +186,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 加载动画 -->
|
<!-- 加载动画 -->
|
||||||
<div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }">
|
<div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }">
|
||||||
<a-spin :spinning="addLoading" tip="" />
|
<a-spin :spinning="addLoading" tip=""/>
|
||||||
</div>
|
</div>
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { reactive, toRefs } from "vue";
|
import {reactive, toRefs} from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import {message} from "ant-design-vue";
|
||||||
import * as api from "../../api/index1";
|
import * as api from "../../api/index1";
|
||||||
import { BATCH_IMPORT_SCORE } from "@/api/config";
|
import {BATCH_IMPORT_SCORE} from "@/api/config";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "EScore",
|
name: "EScore",
|
||||||
props: {
|
props: {
|
||||||
@@ -218,6 +220,10 @@ export default {
|
|||||||
type: Number,
|
type: Number,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
courseId: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
chapterId: {
|
chapterId: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: null,
|
default: null,
|
||||||
@@ -384,9 +390,9 @@ export default {
|
|||||||
window.open(process.env.VUE_APP_FILE_PATH + state.downloadErrUrl);
|
window.open(process.env.VUE_APP_FILE_PATH + state.downloadErrUrl);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function downTemplate() {
|
function downTemplate() {
|
||||||
console.log(state.locationHref + state.template);
|
window.open(process.env.VUE_APP_FILE_PATH + process.env.VUE_APP_UP_LOAD_STUDENT_SCORE_TEMPLATE);
|
||||||
window.open(state.locationHref + state.template);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -404,8 +410,8 @@ export default {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.ExportScoreExternalExternal {
|
.ExportScoreExternalExternal {
|
||||||
.drawerMain {
|
.drawerMain {
|
||||||
min-width: 600px;
|
min-width: 600px;
|
||||||
@@ -413,6 +419,7 @@ export default {
|
|||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
height: 73px;
|
height: 73px;
|
||||||
border-bottom: 1px solid #e8e8e8;
|
border-bottom: 1px solid #e8e8e8;
|
||||||
@@ -422,6 +429,7 @@ export default {
|
|||||||
// background-color: red;
|
// background-color: red;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
|
|
||||||
.headerTitle {
|
.headerTitle {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -430,15 +438,19 @@ export default {
|
|||||||
// margin-left: 24px;
|
// margin-left: 24px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
|
||||||
.minatitl {
|
.minatitl {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.up1 {
|
.up1 {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.up2 {
|
.up2 {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -446,16 +458,20 @@ export default {
|
|||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload {
|
.upload {
|
||||||
margin-top: 32px;
|
margin-top: 32px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.right {
|
.right {
|
||||||
margin-left: 6px;
|
margin-left: 6px;
|
||||||
|
|
||||||
.load {
|
.load {
|
||||||
width: 500px;
|
width: 500px;
|
||||||
height: 176px;
|
height: 176px;
|
||||||
@@ -467,12 +483,14 @@ export default {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
|
||||||
.cloud {
|
.cloud {
|
||||||
margin-top: 52px;
|
margin-top: 52px;
|
||||||
width: 28px;
|
width: 28px;
|
||||||
height: 28px;
|
height: 28px;
|
||||||
background-image: url(../../assets/images/basicinfo/cloud.png);
|
background-image: url(../../assets/images/basicinfo/cloud.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
.tip {
|
.tip {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -480,6 +498,7 @@ export default {
|
|||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tipz {
|
.tipz {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -487,6 +506,7 @@ export default {
|
|||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.loadstate {
|
.loadstate {
|
||||||
width: 500px;
|
width: 500px;
|
||||||
margin-bottom: 100px;
|
margin-bottom: 100px;
|
||||||
@@ -501,10 +521,12 @@ export default {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.defeat {
|
.defeat {
|
||||||
width: 400px;
|
width: 400px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -514,14 +536,17 @@ export default {
|
|||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
.img {
|
.img {
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 34px;
|
height: 34px;
|
||||||
background-image: url(../../assets/images/basicinfo/exl.png);
|
background-image: url(../../assets/images/basicinfo/exl.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
.timebox {
|
.timebox {
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
margin-top: -5px;
|
margin-top: -5px;
|
||||||
|
|
||||||
.timetop {
|
.timetop {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 262px;
|
width: 262px;
|
||||||
@@ -532,27 +557,32 @@ export default {
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stateloading {
|
.stateloading {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #4ea6ff;
|
color: #4ea6ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.statedefeat {
|
.statedefeat {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #ff7474;
|
color: #ff7474;
|
||||||
}
|
}
|
||||||
|
|
||||||
.statesucce {
|
.statesucce {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #35ae69;
|
color: #35ae69;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.prog {
|
.prog {
|
||||||
width: 262px;
|
width: 262px;
|
||||||
height: 5px;
|
height: 5px;
|
||||||
background: #eaf1fe;
|
background: #eaf1fe;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
|
||||||
.inprogloading {
|
.inprogloading {
|
||||||
width: 55%;
|
width: 55%;
|
||||||
height: 5px;
|
height: 5px;
|
||||||
@@ -560,6 +590,7 @@ export default {
|
|||||||
|
|
||||||
background: #4ea6ff;
|
background: #4ea6ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
//下载失败条
|
//下载失败条
|
||||||
.inprogdefeat {
|
.inprogdefeat {
|
||||||
width: 55%;
|
width: 55%;
|
||||||
@@ -568,6 +599,7 @@ export default {
|
|||||||
|
|
||||||
background: #ff7474;
|
background: #ff7474;
|
||||||
}
|
}
|
||||||
|
|
||||||
//下载成功条
|
//下载成功条
|
||||||
.inprogsucce {
|
.inprogsucce {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -578,15 +610,18 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.curloading {
|
.curloading {
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.cur {
|
.cur {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cancel {
|
.cancel {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -594,6 +629,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.downloadErr {
|
.downloadErr {
|
||||||
width: 120px;
|
width: 120px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
@@ -617,6 +653,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnn {
|
.btnn {
|
||||||
height: 72px;
|
height: 72px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -628,6 +665,7 @@ export default {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
||||||
|
|
||||||
.btn1 {
|
.btn1 {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
@@ -637,6 +675,7 @@ export default {
|
|||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn2 {
|
.btn2 {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
|
|||||||
@@ -118,9 +118,10 @@
|
|||||||
<ExportAchievement
|
<ExportAchievement
|
||||||
@closeDraw="closeDraw"
|
@closeDraw="closeDraw"
|
||||||
v-model:eScorevisibleExternalExternal="eScorevisibleExternalExternal"
|
v-model:eScorevisibleExternalExternal="eScorevisibleExternalExternal"
|
||||||
:type="2"
|
:type="1"
|
||||||
:targetId="datasource.projectId"
|
:targetId="datasource.projectId"
|
||||||
:taskId="datasource.courseId"
|
:courseId="datasource.courseId"
|
||||||
|
:taskId="datasource.id"
|
||||||
:chapterId="datasource.stageId" />
|
:chapterId="datasource.stageId" />
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
</template>
|
</template>
|
||||||
@@ -396,8 +397,9 @@
|
|||||||
status: state.projectName,
|
status: state.projectName,
|
||||||
studentName: state.name,
|
studentName: state.name,
|
||||||
targetId: props.datasource.projectId,
|
targetId: props.datasource.projectId,
|
||||||
taskId: props.datasource.courseId,
|
courseId: props.datasource.courseId,
|
||||||
type: 2,
|
taskId: props.datasource.id,
|
||||||
|
type: 1,
|
||||||
}).then(res=>{
|
}).then(res=>{
|
||||||
console.log(res)
|
console.log(res)
|
||||||
state.tabledata = res.data.data.records;
|
state.tabledata = res.data.data.records;
|
||||||
@@ -428,7 +430,7 @@
|
|||||||
|
|
||||||
{/* 导出数据 */}
|
{/* 导出数据 */}
|
||||||
function exportData() {
|
function exportData() {
|
||||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/external/exam/manage/exportExternalExam?chapterId=${props.datasource.stageId}&type=${2}&targetId=${props.datasource.projectId}&taskId=${props.datasource.projectTaskId}`)
|
window.open(`${process.env.VUE_APP_BASE_API}/admin/external/exam/manage/exportExternalExam?chapterId=${props.datasource.stageId}&type=${1}&targetId=${props.datasource.projectId}&taskId=${props.datasource.id}&courseId=${props.datasource.courseId}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
const closeDraw = (e) => {
|
const closeDraw = (e) => {
|
||||||
|
|||||||
@@ -117,9 +117,10 @@
|
|||||||
<ExportAchievement
|
<ExportAchievement
|
||||||
@closeDraw="closeDraw"
|
@closeDraw="closeDraw"
|
||||||
v-model:eScorevisibleExternalExternal="eScorevisibleExternalExternal"
|
v-model:eScorevisibleExternalExternal="eScorevisibleExternalExternal"
|
||||||
:type="1"
|
:type="2"
|
||||||
:targetId="datasource.routerId"
|
:targetId="datasource.routerId"
|
||||||
:taskId="datasource.courseId"
|
:courseId="datasource.courseId"
|
||||||
|
:taskId="datasource.id"
|
||||||
:chapterId="datasource.chapterId" />
|
:chapterId="datasource.chapterId" />
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
</template>
|
</template>
|
||||||
@@ -397,6 +398,7 @@
|
|||||||
// 获取数据
|
// 获取数据
|
||||||
function getData() {
|
function getData() {
|
||||||
state.loadingData = true;
|
state.loadingData = true;
|
||||||
|
console.log(JSON.stringify(props.datasource))
|
||||||
api.QueryExternalExamManageDetail({
|
api.QueryExternalExamManageDetail({
|
||||||
chapterId: props.outchapter,
|
chapterId: props.outchapter,
|
||||||
pageNo: state.currentPage,
|
pageNo: state.currentPage,
|
||||||
@@ -404,8 +406,9 @@
|
|||||||
status: state.projectName,
|
status: state.projectName,
|
||||||
studentName: state.name,
|
studentName: state.name,
|
||||||
targetId: props.datasource.routerId,
|
targetId: props.datasource.routerId,
|
||||||
taskId: props.datasource.courseId,
|
taskId: props.datasource.id,
|
||||||
type: 1,
|
courseId: props.datasource.courseId,
|
||||||
|
type: 2,
|
||||||
}).then(res=>{
|
}).then(res=>{
|
||||||
console.log(res)
|
console.log(res)
|
||||||
state.tabledata = res.data.data.records;
|
state.tabledata = res.data.data.records;
|
||||||
@@ -437,7 +440,7 @@
|
|||||||
|
|
||||||
{/* 导出数据 */}
|
{/* 导出数据 */}
|
||||||
function exportData() {
|
function exportData() {
|
||||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/external/exam/manage/exportExternalExam?chapterId=${props.datasource.chapterId}&type=${1}&targetId=${props.datasource.routerId}&taskId=${props.datasource.courseId}`)
|
window.open(`${process.env.VUE_APP_BASE_API}/admin/external/exam/manage/exportExternalExam?chapterId=${props.datasource.chapterId}&type=${2}&targetId=${props.datasource.routerId}&taskId=${props.datasource.id}&courseId=${props.datasource.courseId}`)
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
|
|||||||
@@ -689,13 +689,18 @@ function bathDel() {
|
|||||||
|
|
||||||
const deleteModalVisible = ref(false);
|
const deleteModalVisible = ref(false);
|
||||||
const deleteId = ref(null);
|
const deleteId = ref(null);
|
||||||
|
const deleteTargetId = ref(null);
|
||||||
|
const deleteType = ref(null);
|
||||||
function del(id, row) {
|
function del(id, row) {
|
||||||
|
debugger
|
||||||
if (row.isLeader === "1") {
|
if (row.isLeader === "1") {
|
||||||
return message.warning("" + row.name + "是小组长,请勿删除!");
|
return message.warning("" + row.name + "是小组长,请勿删除!");
|
||||||
}
|
}
|
||||||
deleteModalVisible.value = true;
|
deleteModalVisible.value = true;
|
||||||
deleteId.value = id;
|
deleteId.value = id;
|
||||||
|
deleteTargetId.value = row.pid;
|
||||||
|
deleteType.value = row.type
|
||||||
|
|
||||||
// Modal.confirm({
|
// Modal.confirm({
|
||||||
// title: () => "确定删除?",
|
// title: () => "确定删除?",
|
||||||
// icon: () => createVNode(ExclamationCircleOutlined),
|
// icon: () => createVNode(ExclamationCircleOutlined),
|
||||||
@@ -717,7 +722,7 @@ function del(id, row) {
|
|||||||
const sureSameModal = () => {
|
const sureSameModal = () => {
|
||||||
if (deleteId.value) {
|
if (deleteId.value) {
|
||||||
tableData.value.loading = true;
|
tableData.value.loading = true;
|
||||||
delStudentList({ ids: [deleteId.value] }).then(() => getStuList());
|
delStudentList({ ids: [deleteId.value],targetId: deleteTargetId.value,type:deleteType.value}).then(() => getStuList());
|
||||||
deleteModalVisible.value = false;
|
deleteModalVisible.value = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -725,6 +730,8 @@ const sureSameModal = () => {
|
|||||||
const closeSameModal = () => {
|
const closeSameModal = () => {
|
||||||
deleteModalVisible.value = false;
|
deleteModalVisible.value = false;
|
||||||
deleteId.value = null;
|
deleteId.value = null;
|
||||||
|
deleteTargetId.value = null;
|
||||||
|
deleteType.value = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
function submitCall(flag) {
|
function submitCall(flag) {
|
||||||
|
|||||||
@@ -558,6 +558,7 @@ const submitStorage = async () => {
|
|||||||
await releaseRouter(routerId);
|
await releaseRouter(routerId);
|
||||||
message.success("关卡和任务数据已保存");
|
message.success("关卡和任务数据已保存");
|
||||||
confirmLoading.value = false;
|
confirmLoading.value = false;
|
||||||
|
getDetail();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -606,7 +606,8 @@ const submitStorage = async () => {
|
|||||||
confirmLoading.value = true
|
confirmLoading.value = true
|
||||||
await request(PROJECT_RELEASE, {projectId: route.query.projectId})
|
await request(PROJECT_RELEASE, {projectId: route.query.projectId})
|
||||||
message.success("保存成功");
|
message.success("保存成功");
|
||||||
confirmLoading.value = false
|
confirmLoading.value = false;
|
||||||
|
getTask();
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user