This commit is contained in:
宋文超
2022-11-25 18:29:19 +08:00
11 changed files with 258 additions and 136 deletions

View File

@@ -9,6 +9,15 @@ export const queryExaminationDetailById = (obj) => http.post('/examination/query
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
}
});
// 创建考试信息接口
export const updateExamination = (obj) => http.post('/examination/updateExamination', obj);
// 查询用户答卷信息-三方
export const queryUserAnswerDetail = (id) => http.get(`/examination/updateExamination?aloneId=${id}`);
// 查询用户答卷列表-三方
export const queryUserAnswerPageDetailList = (obj) => http.post('/examination/queryUserAnswerPageDetailList', obj);
// 获取试卷列表接口-三方
export const queryExaminationPaperList = (obj) => http.post('/examination/queryExaminationPaperList', obj);
// 考试列表查询接三方
export const queryExaminationList = (obj) => http.post('/examination/queryExaminationList', obj);
// 获取考试任务列表的接口-三方
export const queryExaminationAloneExtendList = (obj) => http.post('/examination/queryExaminationAloneExtendList', obj);
// 对接三方考试任务保存接口-三方
export const examinationTaskSave = (obj) => http.post('/examination/examinationTaskSave', obj);

View File

@@ -100,11 +100,19 @@
<span style="margin-right: 3px">授课教师</span>
</div>
<div class="btnbox">
<a-input
v-model:value="inputV2"
style="width: 384px; height: 32px"
placeholder="请输入授课教师"
/>
<a-auto-complete
v-model:value="memberValue"
show-search
:not-found-content="fetching ? undefined : null"
placeholder="Select a teacher"
style="width: 364px"
:options="options"
@focus="handleFocus"
@blur="handleBlur"
@change="handleChange2"
@popupScroll="templateScroll"
@search="handleSearch"
></a-auto-complete>
</div>
</div>
<div class="main_item">
@@ -374,13 +382,15 @@
</a-drawer>
</template>
<script>
import { reactive, toRefs } from "vue";
import { reactive, toRefs, ref } from "vue";
import SelFacet from "../../components/drawers/SelFacet.vue";
import AddHomework from "../../components/drawers/AddHomework.vue";
import AddTest from "../../components/drawers/AddTest.vue";
import { ProjectEditTask, RouterEditTask } from "@/api/indexTask";
// import * as method from "../../api/method"
import { message } from "ant-design-vue";
import { getMemberInfo } from "@/api/index1";
import { debounce } from "lodash-es";
import { queryFaceDetailById, editPlan } from "../../api/indexFace";
import dayjs from "dayjs";
import AssessmentList from "../drawers/ AssessmentList.vue";
@@ -443,12 +453,20 @@ export default {
},
},
setup(props, ctx) {
const options = ref([]);
const state = reactive({
selfacetvisible: false,
addhomeworkvisible: false,
addtestvisible: false,
inputV1: null,
inputV2: null,
memberValue: null,
fetching: false,
totalPages: 0,
currentPage: 1,
tableDataTotal: 100,
memberId: 0,
pageSize: 10,
inputV1: "",
inputV2: "",
inputV3: "",
inputV4: null,
inputV5: null,
@@ -625,7 +643,7 @@ export default {
projectMember: state.radioV2 == "1" ? 1 : 0,
signFlag: 0,
signWordFlag: 0,
teacherId: 0,
teacherId: state.memberId,
testId: 0,
// teacher: state.inputV2,
};
@@ -752,6 +770,66 @@ export default {
state.chooseMent = value;
state.chooseMentName = value.name;
};
// 员工滚动
const templateScroll = (e) => {
console.log("滚动", e);
const { target } = e;
const scrllHeight = target.scrollHeight - target.scrollTop;
const clientHeight = target.clientHeight;
// console.log("scrllHeight", scrllHeight, clientHeight);
if (scrllHeight === 0 && clientHeight === 0) {
state.currentPage = 1;
} else if (scrllHeight - clientHeight == 0) {
// 下拉到底部时
if (state.currentPage < state.totalPages) {
// 如果滑到底部,则加载下一页
state.currentPage++;
// queryMember();
}
}
};
// 获取员工
const queryMember = () => {
if (!state.memberValue) return;
let obj = {
keyWord: state.memberValue,
id: 0,
org: 0,
pageNo: state.currentPage,
pageSize: state.pageSize,
};
getMemberInfo(obj)
.then((res) => {
let data = res.data.data.rows;
state.totalPages = res.data.data.total;
for (let i in data) {
options.value.push({
value: data[i].id,
label: data[i].realName,
});
}
})
.catch((err) => {
message.error("获取员工失败" + err);
});
};
const handleSearch = debounce((memberValue) => {
console.log("fetching user", memberValue);
options.value = [];
state.fetching = true;
state.currentPage = 1;
state.memberValue = memberValue;
queryMember();
state.fetching = false;
}, 300);
const handleChange2 = (value, label) => {
console.log(`selected ${value}`);
state.memberId = value;
state.inputV2 = label;
};
const handleFocus = () => {
queryMember();
};
return {
...toRefs(state),
showDrawerSelFacet,
@@ -772,6 +850,11 @@ export default {
showAssessment,
faceAssess,
// change,
options,
handleFocus,
handleSearch,
handleChange2,
templateScroll,
};
},
};

View File

@@ -107,17 +107,18 @@
<span style="margin-right: 3px">授课老师</span>
</div>
<div class="btnbox">
<a-select
v-model:value="value"
<a-auto-complete
v-model:value="memberValue"
show-search
:not-found-content="fetching ? undefined : null"
placeholder="Select a teacher"
style="width: 364px"
:options="options"
:filter-option="filterOption"
@focus="handleFocus"
@blur="handleBlur"
@change="handleChange2"
></a-select>
@popupScroll="templateScroll"
@search="handleSearch"
></a-auto-complete>
</div>
</div>
<div class="main_item2">
@@ -324,7 +325,9 @@ import * as apiTask from "../../api/indexTaskadd";
import { toDate } from "@/api/method";
import { RouterEditTask } from "@/api/indexTask";
import { addTempTask } from "../../api/indexTaskadd";
import { getMemberInfo } from "@/api/index1";
import dayjs from "dayjs";
import { debounce } from "lodash-es";
// import { useRouter } from "vue-router";
function getBase64(img, callback) {
const reader = new FileReader();
@@ -382,10 +385,14 @@ export default {
},
setup(props, ctx) {
// const router = useRouter();
const options = ref([]);
const state = reactive({
currentPage: 1,
tableDataTotal: 100,
pageSize: 10,
fetching: false,
totalPages: 0,
memberValue: null, // 授课老师关键词
inputV1: "", //*直播名称
time: "", //*直播时间
inputV2: "", //*直播时长
@@ -651,16 +658,64 @@ export default {
.catch(() => {});
}
};
const templateScroll = (e) => {
console.log("滚动", e);
const { target } = e;
const scrllHeight = target.scrollHeight - target.scrollTop;
const clientHeight = target.clientHeight;
// console.log("scrllHeight", scrllHeight, clientHeight);
if (scrllHeight === 0 && clientHeight === 0) {
state.currentPage = 1;
} else if (scrllHeight - clientHeight == 0) {
// 下拉到底部时
if (state.currentPage < state.totalPages) {
// 如果滑到底部,则加载下一页
state.currentPage++;
// queryMember();
}
}
};
// 获取员工
const queryMember = () => {
if (!state.memberValue) return;
let obj = {
keyWord: state.memberValue,
id: 0,
org: 0,
pageNo: state.currentPage,
pageSize: state.pageSize,
};
getMemberInfo(obj)
.then((res) => {
let data = res.data.data.rows;
state.totalPages = res.data.data.total;
for (let i in data) {
options.value.push({
value: data[i].id,
label: data[i].realName,
});
}
})
.catch((err) => {
message.error("获取员工失败" + err);
});
};
const handleSearch = debounce((memberValue) => {
console.log("fetching user", memberValue);
options.value = [];
state.fetching = true;
state.currentPage = 1;
state.memberValue = memberValue;
queryMember();
state.fetching = false;
}, 300);
const options = ref([]);
const handleChange2 = (value) => {
console.log(`selected ${value}`);
};
const handleBlur = () => {
console.log("blur");
state.inputV3 = value;
};
const handleFocus = () => {
console.log("focus");
queryMember();
};
const checkRadio = () => {
if (state.checkedC1) {
@@ -669,9 +724,6 @@ export default {
state.discussSettings = "false";
}
};
const filterOption = (input, option) => {
return option.value.toLowerCase().indexOf(input.toLowerCase()) >= 0;
};
const handleChangeAssessment = (option) => {
state.assessmentId = option.assessmentId;
};
@@ -683,13 +735,14 @@ export default {
handleChange,
beforeUpload,
updateLiveBroadcast,
filterOption,
handleBlur,
handleFocus,
handleChange2,
options,
checkRadio,
handleChangeAssessment,
queryMember,
templateScroll,
handleSearch,
};
},
};

View File

@@ -72,6 +72,8 @@
<script>
import { toRefs,reactive } from '@vue/reactivity';
import { message } from 'ant-design-vue';
import {queryUserAnswerDetail} from '@/api/indexExam';
export default {
name:"CheckWork",
props:{
@@ -164,6 +166,14 @@ export default {
}
const afterVisibleChange = (bool) => {
console.log(bool);
if(bool == true) {getQue()}
}
const getQue = () => {
queryUserAnswerDetail(1).then(res => {
console.log(res)
}).catch(err =>{
message.error('用户答卷信息获取失败'+err)
})
}
return{
...toRefs(state),

View File

@@ -39,7 +39,7 @@
<div
class="btn btn1"
style="margin-right: 20px"
@click="searchTaskList"
@click="getManageList"
>
<div class="img1"></div>
<div class="wz">搜索</div>
@@ -112,7 +112,7 @@
<script>
import { toRefs, reactive } from "vue";
import * as api from "../../api/indexTest";
import * as api from "../../api/indexExam";
import { message } from "ant-design-vue";
import { iframeUrl } from "../../api/method";
export default {
@@ -131,7 +131,7 @@ export default {
pageNo: 1,
pageSize: 10,
currentPage: 1,
tableDataTotal: 0,
tableDataTotal: 50,
projectName: "",
tableData: [],
selectedRowKeys: [],
@@ -205,7 +205,9 @@ export default {
};
const onChange = (pageNumber) => {
console.log("Page: ", pageNumber);
state.pageNo = pageNumber;
state.currentPage = pageNumber;
getManageList();
};
const onSelectChange = (selectedRowKeys, selectedRows) => {
@@ -237,21 +239,16 @@ export default {
});
state.tableData = array;
};
//获取任务管理列表
//获取选择考试列表
const getManageList = () => {
let obj = {
// "keyWord": "",
// "pageIndex": 0,
// "pageSize": 0,
// "published": true,
keyWord: "",
orderAsc: true,
orderFiled: "",
pageIndex: 0,
pageSize: 0,
"keyWord": state.inputPname,
"pageIndex": state.pageSize,
"pageSize": state.pageSize,
"published": true
};
api
.queryExaminationPaper(obj)
.queryExaminationList(obj)
.then((res) => {
getTableDate(res.data.data);
message.success("获取选择考试列表成功");
@@ -262,35 +259,6 @@ export default {
});
};
//搜索任务列表 没接口
const searchTaskList = () => {
let objser = {
name: "",
pageNo: state.pageNo,
pageSize: state.pageSize,
projectId: 27,
// projectTaskId: props.projectTaskId,
projectTaskId: 370,
status: -1,
};
if (state.name !== "" || state.projectName !== "") {
api
.taskStudentList(objser)
.then((res) => {
state.pageNo = res.data.data.pageNo;
state.pageSize = res.data.data.pageSize;
state.pageSize = res.data.data.pageSize;
let newArr = [];
for (let i = 0; i < res.data.data.rows.length; i++) {
if (res.data.data.rows[i].userInfoBo.userName == state.name)
newArr.push(res.data.data.rows[i].userInfoBo);
}
state.tabledata = newArr;
})
.catch(() => {});
}
};
//重置任务列表
const resetTaskList = () => {
state.inputPname = "";
@@ -312,7 +280,6 @@ export default {
tableDataFunc,
onChange,
getManageList,
searchTaskList,
resetTaskList,
};
},

View File

@@ -134,7 +134,7 @@
<script>
import { toRefs, reactive } from "vue";
import { message } from 'ant-design-vue';
import * as api from "../../api/index";
import * as api from "../../api/indexExam";
import CQue from './CheckQue.vue'
export default {
name: "TestManage",
@@ -439,15 +439,17 @@ export default {
//获取任务管理列表
const getManageList = () => {
let obj = {
// name: "",
pageNo: state.pageNo,
pageSize: state.pageSize,
// projectId: 27,
projectTaskId: props.projectTaskId,
status: 0,
aid:0,
orderAsc:'',
orderField:'',
pageIndex:1,
pageSize:10,
refId:'',
refType:'',
testId:''
};
api
.taskStudentList(obj)
.queryUserAnswerPageDetailList(obj)
.then((res) => {
state.pageNo = res.data.data.pageNo;
state.pageSize = res.data.data.pageSize;
@@ -460,34 +462,34 @@ export default {
};
//搜索任务列表
const searchTaskList = () => {
let objser = {
// name: "",
pageNo: state.pageNo,
pageSize: state.pageSize,
// projectId: 27,
projectTaskId: props.projectTaskId,
status: 0,
};
if (state.name !== "" || state.projectName !== "") {
api
.taskStudentList(objser)
.then((res) => {
state.pageNo = res.data.data.pageNo;
state.pageSize = res.data.data.pageSize;
state.pageSize = res.data.data.pageSize;
let newArr = [];
for (let i = 0; i < res.data.data.rows.length; i++) {
if (res.data.data.rows[i].userInfoBo.userName == state.name)
newArr.push(res.data.data.rows[i].userInfoBo);
}
state.tabledata = newArr;
})
.catch((err) => {
console.log("搜索任务列表失败", err);
});
}
};
// const searchTaskList = () => {
// let objser = {
// // name: "",
// pageNo: state.pageNo,
// pageSize: state.pageSize,
// // projectId: 27,
// projectTaskId: props.projectTaskId,
// status: 0,
// };
// if (state.name !== "" || state.projectName !== "") {
// api
// .taskStudentList(objser)
// .then((res) => {
// state.pageNo = res.data.data.pageNo;
// state.pageSize = res.data.data.pageSize;
// state.pageSize = res.data.data.pageSize;
// let newArr = [];
// for (let i = 0; i < res.data.data.rows.length; i++) {
// if (res.data.data.rows[i].userInfoBo.userName == state.name)
// newArr.push(res.data.data.rows[i].userInfoBo);
// }
// state.tabledata = newArr;
// })
// .catch((err) => {
// console.log("搜索任务列表失败", err);
// });
// }
// };
//重置任务列表
const resetTaskList = () => {
@@ -508,7 +510,7 @@ export default {
godie,
onChange,
getManageList,
searchTaskList,
// searchTaskList,
resetTaskList,
};
},

View File

@@ -651,11 +651,9 @@ import { message } from "ant-design-vue";
import * as api from "@/api/indexTemplate"
import { useRouter } from "vue-router";
import {scoreRule,setScoreRule} from "@/api/indexTaskadd"
import { useStore } from "vuex";
export default defineComponent({
name: "LibraryAdd",
setup() {
const store = useStore();
const state = reactive({
//任务大纲列表
taskSyllabus: [
@@ -817,6 +815,9 @@ export default defineComponent({
level: null,
systemId: null,
boeFlag: false,
status:null,
picUrl: null,
noticeFlag: null,
}
});
const value = ref("");
@@ -880,12 +881,12 @@ export default defineComponent({
});
// 获取详情
const getDetail = () => {
api.templateDetail(store.state.projectTemplateId).then(res => {
api.templateDetail(localStorage.getItem('projectTemplateId')).then(res => {
state.taskSyllabus = []
console.log(res);
state.projectInfo.name = res.data.data.projectTemplateInfo.name
let time = new Date(Number(res.data.data.projectTemplateInfo.createTime))
state.projectInfo.beginTime = time.toLocaleDateString()
state.projectInfo.beginTime = res.data.data.projectTemplateInfo.beginTime
state.projectInfo.endTime = res.data.data.projectTemplateInfo.endTime
state.projectInfo.manager = res.data.data.projectTemplateInfo.manager
state.projectInfo.notice = res.data.data.projectTemplateInfo.notice
state.projectInfo.sourceBelongId = res.data.data.projectTemplateInfo.sourceBelongId
@@ -895,6 +896,9 @@ export default defineComponent({
state.projectInfo.level = res.data.data.projectTemplateInfo.level
state.projectInfo.systemId = res.data.data.projectTemplateInfo.systemId
state.projectInfo.boeFlag = res.data.data.projectTemplateInfo.boeFlag
state.projectInfo.noticeFlag = res.data.data.projectTemplateInfo.noticeFlag
state.projectInfo.remark = res.data.data.projectTemplateInfo.remark
state.projectInfo.status = res.data.data.projectTemplateInfo.status
state.projectInfo.picUrl = res.data.data.projectTemplateInfo.picUrl
let data = res.data.data.stageList;
for(let i in data) {
@@ -922,9 +926,9 @@ export default defineComponent({
let obj = {
"name": state.projectInfo.name,
"category": state.projectInfo.category,
"picUrl": "x",
"beginTime": Number(state. projectInfo.beginTime) || 1,
"endTime": 1,
"picUrl": state.projectInfo.picUrl,
"beginTime": new Date(state.projectInfo.beginTime).getTime(),
"endTime": new Date(state.projectInfo.endTime).getTime(),
"manager": state.projectInfo.manager,
"managerId": state.projectInfo.managerId || 0,
"sourceBelongId": state.projectInfo.sourceBelongId,
@@ -934,7 +938,7 @@ export default defineComponent({
"courseSyncFlag": state.projectInfo.courseSyncFlag? 1:0,
"notice": state.projectInfo.notice,
"noticeFlag": 0,
"projectTemplateId": store.state.projectTemplateId,
"projectTemplateId": localStorage.getItem('projectTemplateId'),
"remark": "",
"status": 0,
};
@@ -981,7 +985,7 @@ export default defineComponent({
const stateEdit = () => {
let obj={
"name": "",
"projectTemplateId": store.state.projectTemplateId,
"projectTemplateId": localStorage.getItem('projectTemplateId'),
"remark": "",
"stageId": 0
}
@@ -1001,7 +1005,7 @@ export default defineComponent({
"flag": true,
"name": "",
"projectTaskId": 0,
"projectTemplateId": store.state.projectTemplateId,
"projectTemplateId": localStorage.getItem('projectTemplateId'),
"stageId": 0,
"type": 0
}
@@ -1015,7 +1019,7 @@ export default defineComponent({
}
const getScoreRule = () => {
scoreRule({
projectId: store.state.projectTemplateId,
projectId: localStorage.getItem('projectTemplateId'),
})
.then((res) => {
console.log("获取了项目积分规则", res.data.data);
@@ -1070,7 +1074,7 @@ export default defineComponent({
},
],
leaderScore: state.seven1,
projectId: store.state.projectTemplateId,
projectId: localStorage.getItem('projectTemplateId'),
signScore: state.six1,
topCompleteCourseItem: [
{
@@ -1612,7 +1616,7 @@ export default defineComponent({
}
.ntc_body {
margin-left: 65px;
margin-left: 35px;
margin-right: 34px;
.ntc_switch {
display: flex;

View File

@@ -48,7 +48,6 @@
import { reactive, defineComponent, toRefs, onMounted } from "vue";
import { message } from "ant-design-vue";
import { useRouter } from "vue-router";
import { useStore } from "vuex";
import * as api from "@/api/indexTemplate"
const columns1 = [
@@ -93,7 +92,6 @@ const columns1 = [
export default defineComponent({
name: "TemplateLibrary",
setup() {
const store = useStore();
// 编辑页面跳转过来时候,自动填充表格
const router = useRouter();
const state = reactive({
@@ -101,7 +99,7 @@ export default defineComponent({
time:null,
currentPage: 1,
pageSize: 10,
total:0,
total:50,
tableData1: [
{
key: "1",
@@ -244,7 +242,7 @@ export default defineComponent({
};
const toLibraryAdd = (id) => {
router.push("/libraryAdd");
store.state.projectTemplateId = id
localStorage.setItem("projectTemplateId",id);
}
return {

View File

@@ -1045,7 +1045,6 @@
import draggable from "vuedraggable";
import { storage } from "../../api/storage";
import UnlockMode from "../../components/drawers/UnlockMode.vue";
import {useStore} from "vuex";
// import * as api1 from "../../api/index1";
const drawercolumns = [
@@ -1106,7 +1105,6 @@
UnlockMode,
},
setup() {
const store = useStore();
const state = reactive({
projectId: storage.get("projectId")
? JSON.parse(storage.get("projectId"))
@@ -1509,7 +1507,7 @@
const getTask = () => {
state.tableData = []
api
.templateDetail(store.state.projectTemplateId)
.templateDetail(localStorage.getItem('projectTemplateId'))
.then((res) => {
if (res.status == 200) {
console.log("22222", res.data.data.stageList);
@@ -1710,7 +1708,7 @@
if (state.updateStageID) {
let obj = {
name: state.valuesname,
projectTemplateId: store.state.projectTemplateId,
projectTemplateId: localStorage.getItem("templateStageId"),
remark: state.valuesnotice,
stageId:state.updateStageID,
};
@@ -1732,7 +1730,7 @@
} else {
let obj = {
name: state.valuesname,
projectTemplateId: store.state.projectTemplateId,
projectTemplateId: localStorage.getItem("templateStageId"),
remark: state.valuesnotice,
stageId:0,
};

View File

@@ -318,14 +318,12 @@ import { useRouter, useRoute } from "vue-router";
// import dayjs from "dayjs";
import * as api from "../../api/indexTemplate";
import { storage } from "../../api/storage";
import {useStore} from "vuex";
// import { toDate } from "../../api/method";
import dayjs from "dayjs";
export default {
name: "projectAdd",
setup() {
const store = useStore();
// 编辑页面跳转过来时候,自动填充表格
const routers = useRoute();
const isEdit = ref(false);
@@ -641,7 +639,7 @@ export default {
"courseSyncFlag": state.projectInfo.courseSyncFlag? 1:0,
"notice": "",
"noticeFlag": 0,
"projectTemplateId": store.state.projectTemplateId,
"projectTemplateId": localStorage.getItem("projectTemplateId"),
"remark": "",
"status": 0,