mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-10 03:16:44 +08:00
feat:合并
This commit is contained in:
5
.env
5
.env
@@ -20,7 +20,6 @@ VUE_APP_IFRAME_STUDENT_URL=https://u-pre.boe.com/pc/loadingVUE_APP_BOE_API_URLVU
|
||||
|
||||
# 课程二维码
|
||||
VUE_APP_COURSE_STUDY=https://u-pre.boe.com/pc/course/studyindex?id=
|
||||
|
||||
# 导入学员模板
|
||||
VUE_APP_UP_LOAD_HOMEWORK_TEMPLATE=导入作业成绩模板-1673511599785.xlsx
|
||||
# 导入作业成绩学员模板
|
||||
VUE_APP_UP_LOAD_STUDENT_TEMPLATE=导入学员模版-1673511636808.xlsx
|
||||
VUE_APP_UP_LOAD_STUDENT_TEMPLATE=导入学员模版-1673963663229.xlsx
|
||||
|
||||
5
.env.boe
5
.env.boe
@@ -6,8 +6,5 @@ VUE_APP_LOGIN_URL=https://u-pre.boe.com/web
|
||||
|
||||
VUE_APP_BOE_API_URL=https://u-pre.boe.com
|
||||
|
||||
|
||||
# 导入学员模板
|
||||
VUE_APP_UP_LOAD_HOMEWORK_TEMPLATE=导入作业成绩模板-1673516508029.xlsx
|
||||
# 导入作业成绩学员模板
|
||||
VUE_APP_UP_LOAD_STUDENT_TEMPLATE=导入学员模版-1673516483342.xlsx
|
||||
VUE_APP_UP_LOAD_STUDENT_TEMPLATE=导入学员模版-1673963663229.xlsx
|
||||
@@ -13,4 +13,4 @@ VUE_APP_IFRAME_STUDENT_URL=https://u.boe.com/pc/loading
|
||||
|
||||
VUE_APP_COURSE_STUDY=https://u.boe.com/pc/course/studyindex?id=
|
||||
|
||||
VUE_APP_TEMPLATE=https://u-pre.boe.com/upload/
|
||||
VUE_APP_UP_LOAD_STUDENT_TEMPLATE=导入学员模版-1673963663229.xlsx
|
||||
|
||||
@@ -13,4 +13,4 @@ VUE_APP_IFRAME_STUDENT_URL=https://u.boe.com/pc-release/loading
|
||||
|
||||
VUE_APP_COURSE_STUDY=https://u.boe.com/pc-release/course/studyindex?id=
|
||||
|
||||
VUE_APP_TEMPLATE=https://u-pre.boe.com/upload/
|
||||
VUE_APP_UP_LOAD_STUDENT_TEMPLATE=导入学员模版-1673963663229.xlsx
|
||||
@@ -44,7 +44,7 @@ export default defineComponent({
|
||||
const store = useStore();
|
||||
const isLogin = ref(false);
|
||||
// console.log("router", router.getRoutes(), route);
|
||||
console.log("版本2.0.9------------");
|
||||
console.log("版本2.1.6------------");
|
||||
const routes = computed(() => {
|
||||
return router.getRoutes().filter((e) => e.meta?.isLink);
|
||||
});
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
export const USER_LIST = '/userbasic/user/list post'
|
||||
// export const USER_LIST = '/userbasic/user/list post'
|
||||
export const USER_LIST = '/userbasic/user/searchList post'
|
||||
export const ORG_LIST = '/userbasic/org/list post'
|
||||
export const ORG_CHILD_LIST = '/userbasic/org/info post'
|
||||
export const AUDIENCE_LIST = '/userbasic/audience/list post'
|
||||
@@ -59,7 +59,6 @@
|
||||
:options="projectNameList2"
|
||||
@change="selectProjectName2"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -335,6 +335,7 @@
|
||||
v-model:addtestVisible="addtestvisible"
|
||||
v-model:EditTestId="EditTestId"
|
||||
v-model:testName="testName"
|
||||
v-model:offCourseId="offCourseId"
|
||||
:faceLevel="true"
|
||||
/>
|
||||
</div>
|
||||
@@ -498,6 +499,7 @@ export default {
|
||||
assessmentName: null,
|
||||
isClick: false,
|
||||
attach:"",
|
||||
offCourseId:props.EditFaceId,
|
||||
|
||||
});
|
||||
const clear = () => {
|
||||
@@ -586,6 +588,7 @@ export default {
|
||||
const queryFaceTeach = () => {
|
||||
queryFaceDetailById(props.EditFaceId).then((res) => {
|
||||
console.log("获取到了面授课开课详情", res.data.data);
|
||||
state.offCourseId = props.EditFaceId;
|
||||
let result = res.data.data;
|
||||
state.courseName = result.name;
|
||||
state.description = result.description;
|
||||
|
||||
@@ -72,10 +72,10 @@
|
||||
<FJUpload v-model:value="attach" @changevalue="changevalue"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="width:100%;height: 80px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<div class="main_btns" style="background:#fff;">
|
||||
<a-button class="btn1" @click="closeDrawer2">取消</a-button>
|
||||
<a-button class="btn2" html-type="submit" @click="updteHomeWork">确定</a-button>
|
||||
</div>
|
||||
|
||||
@@ -37,35 +37,12 @@
|
||||
name="uploadFile"
|
||||
:multiple="false"
|
||||
@change="handleChange"
|
||||
:data="
|
||||
courseType == 1
|
||||
? {
|
||||
:data="{
|
||||
targetId: Number(courseId),
|
||||
type: 3,
|
||||
userId: userId,
|
||||
userName: userName,
|
||||
}
|
||||
: courseType == 3
|
||||
? {
|
||||
targetId: Number(courseId),
|
||||
type: 1,
|
||||
userId: userId,
|
||||
userName: userName,
|
||||
}
|
||||
: courseType == 4
|
||||
? {
|
||||
targetId: Number(courseId),
|
||||
type: 2,
|
||||
userId: userId,
|
||||
userName: userName,
|
||||
}
|
||||
: {
|
||||
targetId: Number(courseId),
|
||||
type: 3,
|
||||
userId: userId,
|
||||
userName: userName,
|
||||
}
|
||||
"
|
||||
type: courseType,
|
||||
userId: userInfo.id,
|
||||
userName: userInfo.realName,
|
||||
} "
|
||||
:showUploadList="false"
|
||||
>
|
||||
<p class="ant-upload-drag-icon">
|
||||
@@ -205,7 +182,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { reactive, toRefs } from "vue";
|
||||
import {computed, reactive, toRefs} from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import * as api from "../../api/index1";
|
||||
import { BATCH_IMPORT_SCORE } from "@/api/config";
|
||||
@@ -246,11 +223,11 @@ export default {
|
||||
errNum: 0, //失败数据数
|
||||
downloadErrUrl: "",
|
||||
showBottomBar: false, // 显示底部成功条数和失败条数
|
||||
userId: store.state.userInfo.id,
|
||||
userName: store.state.userInfo.realName,
|
||||
fileName: "",
|
||||
});
|
||||
|
||||
const userInfo = computed(()=>store.state.userInfo)
|
||||
|
||||
const closeDrawer = () => {
|
||||
clearInterval(state.timers);
|
||||
state.fileList = [];
|
||||
@@ -364,6 +341,7 @@ export default {
|
||||
return {
|
||||
...toRefs(state),
|
||||
afterVisibleChange,
|
||||
userInfo,
|
||||
closeDrawer,
|
||||
// change,
|
||||
handleChange,
|
||||
|
||||
@@ -309,8 +309,8 @@ import {message} from "ant-design-vue";
|
||||
import {
|
||||
createExamination,
|
||||
queryExaminationDetailById,
|
||||
updateExamination,
|
||||
} from "@/api/indexExam";
|
||||
// updateExamination,
|
||||
import STest from "./SelectTest.vue";
|
||||
import {ProjectEditTask, RouterEditTask} from "@/api/indexTask";
|
||||
import {addTempTask} from "../../api/indexTaskadd";
|
||||
@@ -379,6 +379,10 @@ export default {
|
||||
type: String,
|
||||
default: null,
|
||||
},
|
||||
offCourseId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
@@ -456,7 +460,7 @@ export default {
|
||||
console.log("props", props);
|
||||
if (props.addtestVisible && props.EditTestId && props.EditTestId >0) {
|
||||
// 该页面显示同时 edit为true 时,发送查询请求,
|
||||
queryTest();
|
||||
// queryTest();
|
||||
}
|
||||
if (bool) {
|
||||
state.test.showAnswers = 1;
|
||||
@@ -541,30 +545,39 @@ export default {
|
||||
state.test.targetId = 0;
|
||||
state.test.type = 0;
|
||||
state.test.chapterId=0;
|
||||
if(props.isLevel == 1){
|
||||
state.test.targetId = props.routerId;
|
||||
state.test.chapterId = props.isactive;
|
||||
state.test.type = 2;
|
||||
console.log("props.offCourseId",props.offCourseId);
|
||||
if (props.faceLevel && props.offCourseId > 0) {
|
||||
state.test.targetId = props.offCourseId;
|
||||
state.test.type = 3;
|
||||
}else{
|
||||
if(props.isLevel == 1){
|
||||
state.test.targetId = props.routerId;
|
||||
state.test.chapterId = props.isactive;
|
||||
state.test.type = 2;
|
||||
|
||||
|
||||
} else if (props.isLevel == 2) {
|
||||
state.test.targetId = props.projectId;
|
||||
state.test.type = 1;
|
||||
} else if (props.isLevel == 2) {
|
||||
state.test.targetId = props.projectId;
|
||||
state.test.type = 1;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (props.EditTestId > 0) {
|
||||
// 编辑任务
|
||||
updateExamination(state.test)
|
||||
.then(async (res) => {
|
||||
await updateTask(res);
|
||||
// closeDrawer();
|
||||
})
|
||||
.catch(() => {
|
||||
message.destroy();
|
||||
message.error(`编辑失败`);
|
||||
});
|
||||
} else {
|
||||
// if (props.EditTestId > 0) {
|
||||
// // 编辑任务
|
||||
// updateExamination(state.test)
|
||||
// .then(async (res) => {
|
||||
// await updateTask(res);
|
||||
// // closeDrawer();
|
||||
// })
|
||||
// .catch(() => {
|
||||
// message.destroy();
|
||||
// message.error(`编辑失败`);
|
||||
// });
|
||||
// } else {
|
||||
// 创建任务
|
||||
createExamination(state.test)
|
||||
.then(async (res) => {
|
||||
@@ -575,7 +588,7 @@ export default {
|
||||
message.destroy();
|
||||
message.error(`创建失败`);
|
||||
});
|
||||
}
|
||||
// }
|
||||
};
|
||||
const updateTask = (res) => {
|
||||
state.EditTestId = res.data.data.examinationId;
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
style="width: 264px; border-radius: 8px"
|
||||
:options="stugroupList"
|
||||
allowClear
|
||||
showSearch
|
||||
@change="handleChange"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
<div class="sortbox">
|
||||
<div class="sortname">进度排名</div>
|
||||
<div class="sortnub">
|
||||
<span class="nub1">{{pro.currentChapterCnt}}</span>
|
||||
<span class="total">/{{pro.totalChapterCnt}}</span>
|
||||
<span class="nub1">{{rank.current}}</span>
|
||||
<span class="total">/{{rank.total}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<a-divider
|
||||
@@ -209,6 +209,7 @@
|
||||
import { reactive, toRefs } from "vue";
|
||||
import CheckStuMess from "./CheckStuMess.vue";
|
||||
import {stuProgress} from "@/api/index1";
|
||||
import {studentRank} from "@/api/indexProjStu";
|
||||
// import {message} from "ant-design-vue";
|
||||
export default {
|
||||
name: "CheckStu",
|
||||
@@ -234,17 +235,29 @@ export default {
|
||||
pro:null,
|
||||
loading:true,
|
||||
stageListActive: 0,
|
||||
rank:{total:1,current:1},
|
||||
});
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:CheckStuvisible", false);
|
||||
};
|
||||
|
||||
const getStuRank = () => {
|
||||
studentRank({
|
||||
projectId: props.routerId,
|
||||
studentId: props.studentId,
|
||||
type:2
|
||||
}).then(res=>{
|
||||
state.rank = res.data.data
|
||||
})
|
||||
}
|
||||
|
||||
const showProMess = () => {
|
||||
state.StuMessvisible = true;
|
||||
};
|
||||
const afterVisibleChange = (bool) => {
|
||||
if(props.CheckStuvisible) {
|
||||
getStuProgress()
|
||||
getStuRank()
|
||||
}
|
||||
console.log("state", bool);
|
||||
};
|
||||
@@ -546,11 +559,17 @@ export default {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
margin-left: 25px;
|
||||
word-break:keep-all;
|
||||
white-space:nowrap;
|
||||
}
|
||||
.text2 {
|
||||
color: rgba(51, 51, 51, 0.8);
|
||||
font-size: 14px;
|
||||
margin-left: 65px;
|
||||
word-break:keep-all;
|
||||
white-space:nowrap;
|
||||
overflow:hidden;
|
||||
text-overflow:ellipsis;
|
||||
}
|
||||
}
|
||||
.alreadyclass {
|
||||
@@ -564,6 +583,8 @@ export default {
|
||||
color: rgba(56, 125, 247, 1);
|
||||
font-size: 14px;
|
||||
margin-left: 16px;
|
||||
word-break:keep-all;
|
||||
white-space:nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,11 +188,10 @@
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs } from "vue";
|
||||
import {reactive, toRefs} from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import * as api from "../../api/index1";
|
||||
import { BATCH_IMPORT_SCORE } from "@/api/config";
|
||||
import { useStore } from "vuex";
|
||||
export default {
|
||||
name: "EScore",
|
||||
props: {
|
||||
@@ -219,7 +218,6 @@ export default {
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const store = useStore();
|
||||
const state = reactive({
|
||||
fileType: ["xls", "xlsx"],
|
||||
importHomeWork:
|
||||
@@ -231,8 +229,6 @@ export default {
|
||||
succNum: 0, //成功数据数
|
||||
errNum: 0, //失败数据数
|
||||
downloadErrUrl: null, //下载失败数据
|
||||
userId: store.state.userInfo.id,
|
||||
userName: store.state.userInfo.realName,
|
||||
fileName: "",
|
||||
});
|
||||
const closeDrawer = () => {
|
||||
@@ -290,6 +286,10 @@ export default {
|
||||
console.log("props.getStudent", props.getStudent);
|
||||
clearInterval(timer);
|
||||
}
|
||||
}else{
|
||||
state.addLoading = false;
|
||||
message.destroy();
|
||||
message.error(`文件导入超时`);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -298,6 +298,12 @@ export default {
|
||||
console.log("查询导入状态失败", err);
|
||||
});
|
||||
}, 500);
|
||||
setTimeout(() => {
|
||||
clearInterval(timer)
|
||||
state.addLoading = false;
|
||||
message.destroy();
|
||||
message.error(`文件导入超时`);
|
||||
}, 30000);
|
||||
} else if (status === "error") {
|
||||
state.uploadErr = true;
|
||||
message.error(`${info.file.name}上传失败`);
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -61,7 +61,6 @@
|
||||
:options="projectNameList2"
|
||||
@change="selectProjectName2"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div>发布时间</div>
|
||||
</div>
|
||||
<div class="noticeContent">
|
||||
<div v-for="item in notice" :key="item.id" class="item">
|
||||
<div v-for="item in notice" :key="item.id" class="item" style="align-items:flex-start;">
|
||||
<!-- <div class="itemcontent">{{ item.content }}</div> -->
|
||||
<a-textarea
|
||||
class="itemcontent"
|
||||
@@ -15,8 +15,9 @@
|
||||
v-model:value="item.content"
|
||||
:maxlength="150"
|
||||
placeholder="公告信息最多输入150个字"
|
||||
style="margin-top: -10px; height: 120px;background-color: #fff;"
|
||||
style="margin-top: -10px; height: 220px;background-color: #fff;border:1px solid #fff;"
|
||||
/>
|
||||
<!-- <pre style="text-align: left;padding-left: 20px">{{item.content}}</pre> -->
|
||||
<div class="itemtime">{{ item.pubtime }}</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -138,7 +139,7 @@ export default {
|
||||
margin-top: 20px;
|
||||
margin-left: 32px;
|
||||
.item {
|
||||
height: 66px;
|
||||
// height: 66px;
|
||||
width: 74%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
@@ -22,8 +22,9 @@
|
||||
v-model:value="noticeContent1"
|
||||
:maxlength="150"
|
||||
placeholder="公告信息最多输入150个字"
|
||||
style="margin-top: -10px; height: 160px; resize: none;background-color: #fff;color:#666;"
|
||||
style="margin-top: -10px; height: 220px;border:1px solid #fff; resize: none;background-color: #fff;color:#666;"
|
||||
/>
|
||||
<!-- <pre>{{noticeContent1}}</pre> -->
|
||||
<div class="btn-content">
|
||||
<a-button type="primary" @click="handleEdit">编辑</a-button>
|
||||
</div>
|
||||
@@ -33,19 +34,20 @@
|
||||
<!-- <div class="txt-content">
|
||||
{{ noticeContent1 ? noticeContent1 : "暂无公告" }}
|
||||
</div> -->
|
||||
<!-- <pre>{{noticeContent1}}</pre> -->
|
||||
<a-textarea
|
||||
disabled="true"
|
||||
v-model:value="noticeContent1"
|
||||
:maxlength="150"
|
||||
placeholder="公告信息最多输入150个字"
|
||||
style="margin-top: -10px; height:160px; resize: none;background-color: #fff;color:#666;"
|
||||
style="margin-top: -10px; height: 220px;border:1px solid #fff; resize: none;background-color: #fff;color:#666;"
|
||||
/>
|
||||
<p>编辑新公告:</p>
|
||||
<a-textarea
|
||||
v-model:value="noticeContent"
|
||||
:maxlength="150"
|
||||
placeholder="公告信息最多输入150个字"
|
||||
style="margin-top: -10px; height: 160px"
|
||||
style="margin-top: -10px; height: 160px;"
|
||||
/>
|
||||
<div class="btn-content">
|
||||
<a-button class="cancel" @click="handleCancel">取消</a-button>
|
||||
|
||||
@@ -249,6 +249,7 @@ export default {
|
||||
studentRank({
|
||||
projectId: props.projectId,
|
||||
studentId: props.checkStuId,
|
||||
type:1
|
||||
}).then(res=>{
|
||||
state.rank = res.data.data
|
||||
})
|
||||
@@ -302,6 +303,7 @@ export default {
|
||||
? "投票"
|
||||
: "-",
|
||||
name: value.name,
|
||||
projectTaskId: value.projectTaskId,
|
||||
complete:
|
||||
value.status == -1
|
||||
? "未开始"
|
||||
@@ -316,6 +318,8 @@ export default {
|
||||
};
|
||||
array.push(obj);
|
||||
});
|
||||
array.sort((a,b)=>{return a.projectTaskId - b.projectTaskId})
|
||||
console.log('我排序了吗--------------------------》', array)
|
||||
return array;
|
||||
};
|
||||
const setStageList = (tableData) => {
|
||||
@@ -546,11 +550,17 @@ export default {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
margin-left: 25px;
|
||||
word-break:keep-all;
|
||||
white-space:nowrap;
|
||||
}
|
||||
.text2 {
|
||||
color: rgba(51, 51, 51, 0.8);
|
||||
font-size: 14px;
|
||||
margin-left: 65px;
|
||||
word-break:keep-all;
|
||||
white-space:nowrap;
|
||||
overflow:hidden;
|
||||
text-overflow:ellipsis;
|
||||
}
|
||||
}
|
||||
.alreadyclass {
|
||||
@@ -564,6 +574,8 @@ export default {
|
||||
color: rgba(56, 125, 247, 1);
|
||||
font-size: 14px;
|
||||
margin-left: 16px;
|
||||
word-break:keep-all;
|
||||
white-space:nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,6 +120,8 @@ import { reactive, toRefs, computed } from "vue";
|
||||
// import { planList } from "../../api/indexTaskadd";
|
||||
//import {detail} from "../../api/indexCourse";
|
||||
import { list } from "../../api/indexTaskadd";
|
||||
import {useStore} from "vuex";
|
||||
|
||||
|
||||
|
||||
const columns1 = [
|
||||
@@ -147,14 +149,14 @@ const columns1 = [
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: "授课教师",
|
||||
width: "15%",
|
||||
dataIndex: "teacher",
|
||||
key: "teacher",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
},
|
||||
// {
|
||||
// title: "授课教师",
|
||||
// width: "15%",
|
||||
// dataIndex: "teacher",
|
||||
// key: "teacher",
|
||||
// align: "center",
|
||||
// ellipsis: true,
|
||||
// },
|
||||
{
|
||||
title: "创建人",
|
||||
width: "15%",
|
||||
@@ -194,6 +196,7 @@ export default {
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const store = useStore();
|
||||
const state = reactive({
|
||||
classTableData: [
|
||||
// {
|
||||
@@ -417,6 +420,17 @@ export default {
|
||||
});
|
||||
};
|
||||
|
||||
const sysTypeOptions = computed(() => store.state.sysType);
|
||||
|
||||
function findClassFullName(list,classify, name = '') {
|
||||
console.log(list,classify)
|
||||
return list && list.length && list
|
||||
.map(e => classify == e.dictCode ? name ? name + '-' + e.dictName : e.dictName : findClassFullName(e.children, classify,name ? name + '-' + e.dictName : e.dictName))
|
||||
.filter(name => name)
|
||||
.join('') || ''
|
||||
}
|
||||
|
||||
|
||||
const getClassData = (tabledata) => {
|
||||
let data = tabledata;
|
||||
let array = [];
|
||||
@@ -429,8 +443,8 @@ export default {
|
||||
teacher: value.teacher || "-",
|
||||
creator: value.createName || "-",
|
||||
time: value.publishTime,
|
||||
categoryId: value.categoryId,
|
||||
category: changeTreeSelectValue(String(value.categoryId)),
|
||||
categoryId: value.sysTypeId,
|
||||
category: value.sysTypeId,
|
||||
//需要判断content
|
||||
};
|
||||
console.log("obj", obj);
|
||||
@@ -455,43 +469,48 @@ export default {
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
if (!obj.category) {
|
||||
obj.category = "-";
|
||||
}
|
||||
console.log("obj. obj.category22 ", obj.category);
|
||||
// if (!obj.category) {
|
||||
// obj.category = "-";
|
||||
// }
|
||||
// console.log("obj. obj.category22 ", obj.category);
|
||||
array.push(obj);
|
||||
});
|
||||
|
||||
array.forEach((itm) => {
|
||||
itm.category = findClassFullName(sysTypeOptions.value,itm.categoryId) || '-'
|
||||
});
|
||||
console.log(array)
|
||||
state.classTableData = array;
|
||||
};
|
||||
|
||||
// 格式化树型结构选择数据
|
||||
const changeTreeSelectValue = (values) => {
|
||||
let data = state.options2222;
|
||||
console.log(values, data)
|
||||
let str = ''
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
if (data[i].value == values) {
|
||||
str = data[i].title
|
||||
} else {
|
||||
for (let j = 0; j < data[i].children.length; j++) {
|
||||
if (data[i].children[j].value == values) {
|
||||
str = data[i].title + '/' + data[i].children[j].title
|
||||
} else {
|
||||
if (data[i].children[j].children) {
|
||||
for (let k = 0; k < data[i].children[j].children.length; k++) {
|
||||
if (data[i].children[j].children[k].value == values) {
|
||||
str = data[i].title + '/' + data[i].children[j].title + '/' + data[i].children[j].children[k].title
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log('str-str-str-str', str)
|
||||
state.fen_lei1 = str;
|
||||
return str;
|
||||
}
|
||||
// const changeTreeSelectValue = (values) => {
|
||||
// let data = state.options2222;
|
||||
// console.log(values, data)
|
||||
// let str = ''
|
||||
// for (let i = 0; i < data.length; i++) {
|
||||
// if (data[i].value == values) {
|
||||
// str = data[i].title
|
||||
// } else {
|
||||
// for (let j = 0; j < data[i].children.length; j++) {
|
||||
// if (data[i].children[j].value == values) {
|
||||
// str = data[i].title + '/' + data[i].children[j].title
|
||||
// } else {
|
||||
// if (data[i].children[j].children) {
|
||||
// for (let k = 0; k < data[i].children[j].children.length; k++) {
|
||||
// if (data[i].children[j].children[k].value == values) {
|
||||
// str = data[i].title + '/' + data[i].children[j].title + '/' + data[i].children[j].children[k].title
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// console.log('str-str-str-str', str)
|
||||
// state.fen_lei1 = str;
|
||||
// return str;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -184,15 +183,15 @@ export default {
|
||||
tablecolumns: [
|
||||
{
|
||||
title: "工号",
|
||||
dataIndex: "studentCode",
|
||||
key: "studentCode",
|
||||
dataIndex: "studentUserNo",
|
||||
key: "studentUserNo",
|
||||
width: 60,
|
||||
align: "center",
|
||||
className: "h head",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.studentCode?text.record.studentCode:"-"}</span>
|
||||
<span> {text.record.studentUserNo?text.record.studentUserNo:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -246,8 +245,8 @@ export default {
|
||||
},
|
||||
{
|
||||
title: "考试次数",
|
||||
dataIndex: "testNumber",
|
||||
key: "testNumber",
|
||||
dataIndex: "num",
|
||||
key: "num",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -255,15 +254,15 @@ export default {
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.testNumber?text.record.testNumber:"-"}</span>
|
||||
<span> {text.record.num?text.record.num:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "成绩",
|
||||
dataIndex: "score",
|
||||
key: "score",
|
||||
dataIndex: "examinationScore",
|
||||
key: "examinationScore",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -271,7 +270,7 @@ export default {
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.score?text.record.score:"-"}</span>
|
||||
<span> {text.record.examinationScore?text.record.examinationScore:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -279,8 +278,8 @@ export default {
|
||||
|
||||
{
|
||||
title: "完成时间",
|
||||
dataIndex: "finishedTime",
|
||||
key: "finishedTime",
|
||||
dataIndex: "examinationSubmitTime",
|
||||
key: "examinationSubmitTime",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -288,27 +287,20 @@ export default {
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.finishedTime?text.record.finishedTime:"-"}</span>
|
||||
<span> {text.record.examinationSubmitTime?text.record.examinationSubmitTime:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "任务状态",
|
||||
dataIndex: "status",
|
||||
key: "status",
|
||||
dataIndex: "finishStatus",
|
||||
key: "finishStatus",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
console.log(text.record.status);
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.status==0||text.record.status==null?"未开始":text.record.status==10?"未通过":"已通过"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
customRender: ({record:{finishStatus}}) => ({1:'通过',2:'未通过'}[finishStatus] || '未开始'),
|
||||
},
|
||||
],
|
||||
loadingData: true
|
||||
@@ -355,40 +347,19 @@ export default {
|
||||
|
||||
// 获取数据
|
||||
function getData() {
|
||||
console.log('我是传递的参数',{
|
||||
"chapterId": props.datasource.stageId,
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"studentName": state.name,
|
||||
"status": state.projectName,
|
||||
"targetId": props.datasource.projectId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"type": 1
|
||||
})
|
||||
api.ExamManagementMessage({
|
||||
"chapterId": props.datasource.stageId,
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"studentName": state.name,
|
||||
"status": state.projectName,
|
||||
"targetId": props.datasource.projectId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"type": 1
|
||||
api.AssessmentManagementMessage({
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.datasource.stageId,
|
||||
type: 1,
|
||||
pid: props.datasource.projectId,
|
||||
taskId: props.datasource.projectTaskId,
|
||||
taskType: props.datasource.type,
|
||||
status: state.projectName,
|
||||
studentName: state.name,
|
||||
}).then(res=>{
|
||||
console.log(res)
|
||||
if(res.data.code == 200){
|
||||
let newData = [];
|
||||
for(let i=0;i<res.data.data.managementDtoList.length;i++){
|
||||
res.data.data.managementDtoList[i].key = i + 1;
|
||||
newData.push(res.data.data.managementDtoList[i])
|
||||
}
|
||||
state.tabledata = newData;
|
||||
state.tableDataTotal = res.data.data.total;
|
||||
state.loadingData = false;
|
||||
console.log('我是处理过后的数据', newData)
|
||||
}
|
||||
}).catch(err=>{
|
||||
console.log(err)
|
||||
state.tabledata = res.data.data.records;
|
||||
state.tableDataTotal = res.data.data.total;
|
||||
state.loadingData = false;
|
||||
})
|
||||
}
|
||||
@@ -415,7 +386,9 @@ export default {
|
||||
|
||||
{/* 导出数据 */}
|
||||
function exportData() {
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/exam/manage/exportExam?chapterId=${props.datasource.chapterId}&targetId=${props.datasource.routerId}&taskId=${props.datasource.courseId}&type=${1}`)
|
||||
// window.open(`${process.env.VUE_APP_BASE_API}/admin/exam/manage/exportExam?chapterId=${props.datasource.stageId=="0"?"":props.datasource.stageId}&targetId=${props.datasource.projectId}&taskId=${props.datasource.courseId}&type=${2}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&taskId=${props.datasource.projectTaskId}&taskType=${props.datasource.type}`)
|
||||
|
||||
{/* api.ExportExam({
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"targetId": props.datasource.routerId,
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
v-model:AddImpStuvisible="AddImpStuvisible"
|
||||
@AddImpStuvisibleClose="AddImpStuvisibleClose"
|
||||
:courseId="projectTaskInfo.courseId"
|
||||
:courseType="2"
|
||||
:courseType="3"
|
||||
/>
|
||||
<!-- 批量签到弹窗 -->
|
||||
<a-modal
|
||||
@@ -397,7 +397,7 @@ export default {
|
||||
ids: state.selectedStudents,
|
||||
taskId: Number(props.projectTaskInfo.projectTaskId),
|
||||
taskType: Number(props.projectTaskInfo.type),
|
||||
type: 1,
|
||||
type: 3,
|
||||
// userName: "",
|
||||
};
|
||||
api
|
||||
@@ -663,7 +663,7 @@ export default {
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.projectTaskInfo.projectTaskId),
|
||||
taskType: Number(props.projectTaskInfo.type),
|
||||
type: 1,
|
||||
type: 3,
|
||||
// userName: "",
|
||||
};
|
||||
api
|
||||
@@ -697,7 +697,7 @@ export default {
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.projectTaskInfo.projectTaskId),
|
||||
taskType: Number(props.projectTaskInfo.type),
|
||||
type: 1,
|
||||
type: 3,
|
||||
};
|
||||
api
|
||||
.attendanceLeave(obj)
|
||||
@@ -797,29 +797,18 @@ export default {
|
||||
|
||||
//获取学员
|
||||
const getStudent = () => {
|
||||
console.log("我是传递的查询参数", props.projectTaskInfo, {
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.projectTaskInfo.stageId,
|
||||
type: 1,
|
||||
pid: props.projectTaskInfo.projectId,
|
||||
// status: Number(state.name),
|
||||
studentName: state.name,
|
||||
signStatus: state.projectName2,
|
||||
taskId: props.projectTaskInfo.projectTaskId,
|
||||
});
|
||||
api
|
||||
.AssessmentManagementMessage({
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.projectTaskInfo.stageId,
|
||||
type: 1,
|
||||
pid: props.projectTaskInfo.projectId,
|
||||
type: 3,
|
||||
pid: props.projectTaskInfo.courseId,
|
||||
// status: Number(state.name),
|
||||
studentName: state.name,
|
||||
taskId: props.projectTaskInfo.projectTaskId,
|
||||
// taskId: props.projectTaskInfo.projectTaskId,
|
||||
signStatus: state.projectName2,
|
||||
taskType: props.projectTaskInfo.type,
|
||||
// taskType: props.projectTaskInfo.type,
|
||||
})
|
||||
.then((res) => {
|
||||
console.log("获取面授管理学员", res);
|
||||
@@ -866,7 +855,7 @@ export default {
|
||||
function exportTaskStu() {
|
||||
console.log("props.projectTaskInfo", props.projectTaskInfo);
|
||||
window.open(
|
||||
`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.projectTaskInfo.stageId}&type=${1}&taskId=${props.projectTaskInfo.projectTaskId}&pid=${props.projectTaskInfo.projectId}&taskType=2&thirdType=2`
|
||||
`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.projectTaskInfo.stageId}&type=3&pid=${props.projectTaskInfo.courseId}&thirdType=6`
|
||||
);
|
||||
// api
|
||||
// .exportTaskStudent({
|
||||
|
||||
@@ -48,7 +48,6 @@
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -148,12 +147,8 @@
|
||||
? projectTaskInfo.projectTaskId
|
||||
: null
|
||||
"
|
||||
:type="1"
|
||||
:pid="
|
||||
projectTaskInfo && projectTaskInfo.projectId
|
||||
? projectTaskInfo.projectId
|
||||
: null
|
||||
"
|
||||
:type="3"
|
||||
:pid="projectTaskInfo?.courseId"
|
||||
:taskType="
|
||||
projectTaskInfo && projectTaskInfo.type ? projectTaskInfo.type : null
|
||||
"
|
||||
@@ -167,9 +162,9 @@
|
||||
<!-- 录入成绩抽屉 -->
|
||||
<EScore
|
||||
v-model:eScorevisible="Evisible"
|
||||
:type="1"
|
||||
:type="3"
|
||||
:id="projectTaskInfo?.projectTaskId"
|
||||
:pid="projectTaskInfo?.projectId"
|
||||
:pid="projectTaskInfo?.courseId"
|
||||
v-model:searchTaskList="searchTaskList"
|
||||
/>
|
||||
<!-- 查看作业抽屉 -->
|
||||
@@ -394,15 +389,7 @@ export default {
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>
|
||||
{text.record.assessmentScore || "-"}
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
customRender: ({record:{assessmentScore}}) => (assessmentScore ? Math.round(assessmentScore * 100) / 100 : "-"),
|
||||
},
|
||||
{
|
||||
title: "任务状态",
|
||||
@@ -613,23 +600,23 @@ export default {
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.projectTaskInfo.stageId,
|
||||
type: 1,
|
||||
pid: props.projectTaskInfo.projectId,
|
||||
type: 3,
|
||||
pid: props.projectTaskInfo.courseId,
|
||||
status: state.projectName,
|
||||
studentName: state.name,
|
||||
taskId: props.projectTaskInfo.projectTaskId,
|
||||
// taskId: props.projectTaskInfo.projectTaskId,
|
||||
});
|
||||
api
|
||||
.AssessmentManagementMessage({
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.projectTaskInfo.stageId,
|
||||
type: 1,
|
||||
pid: props.projectTaskInfo.projectId,
|
||||
type: 3,
|
||||
pid: props.projectTaskInfo.courseId,
|
||||
status: state.projectName,
|
||||
studentName: state.name,
|
||||
taskId: props.projectTaskInfo.projectTaskId,
|
||||
taskType: props.projectTaskInfo.type,
|
||||
// taskId: props.projectTaskInfo.projectTaskId,
|
||||
// taskType: props.projectTaskInfo.type,
|
||||
})
|
||||
.then((res) => {
|
||||
console.log("获取面授管理学员", res);
|
||||
@@ -677,10 +664,7 @@ export default {
|
||||
// 导出数据
|
||||
function exportTaskStu() {
|
||||
console.log("props.projectTaskInfo", props.projectTaskInfo);
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.projectTaskInfo.stageId}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskId=${props.projectTaskInfo.projectTaskId}&taskType=2`
|
||||
);
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.projectTaskInfo.stageId}&type=3&pid=${props.projectTaskInfo.courseId}&thirdType=4&taskId=${props.projectTaskInfo.projectTaskId}`);
|
||||
// api
|
||||
// .exportTaskStudent({
|
||||
// pageNo: state.currentPage,
|
||||
@@ -704,10 +688,9 @@ export default {
|
||||
// exportHomeWork();
|
||||
let obj = {
|
||||
currentStageId: props.projectTaskInfo.stageId,
|
||||
pid: props.projectTaskInfo.projectId,
|
||||
pid: props.projectTaskInfo.courseId,
|
||||
taskId: props.projectTaskInfo.projectTaskId,
|
||||
taskType: props.projectTaskInfo.type,
|
||||
type: 1,
|
||||
type: 3,
|
||||
};
|
||||
api
|
||||
.exportHomeWork(obj)
|
||||
@@ -728,15 +711,7 @@ export default {
|
||||
};
|
||||
//导出作业
|
||||
function exportHomeWork() {
|
||||
console.log("props.projectTaskInfo", props.projectTaskInfo);
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportHomeWork?currentStageId=${
|
||||
props.projectTaskInfo.stageId
|
||||
}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskId=${
|
||||
props.projectTaskInfo.projectTaskId
|
||||
}&taskType=${props.projectTaskInfo.type}`
|
||||
);
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportHomeWork?currentStageId=${props.projectTaskInfo.stageId}&type=3&pid=${props.projectTaskInfo.courseId}&thirdType=3`);
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -49,7 +49,6 @@
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -570,7 +569,7 @@ export default {
|
||||
`${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${
|
||||
props.projectTaskInfo.stageId
|
||||
}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskType=${4}`
|
||||
}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskType=${4}&taskId=${props.projectTaskInfo.projectTaskId}`
|
||||
);
|
||||
// api
|
||||
// .exportTaskStudent({
|
||||
|
||||
@@ -65,7 +65,6 @@
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -381,23 +380,26 @@ export default {
|
||||
});
|
||||
} else if(props.datasource.type == 1) {
|
||||
console.log("我是传递的查询参数", {
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"chapterId": props.datasource.stageId=="0"?"":props.datasource.stageId,
|
||||
"status": state.projectName,
|
||||
"studentName": state.name,
|
||||
"targetId":props.datasource.projectId,
|
||||
"taskId": props.datasource.projectTaskId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"thirdId": props.datasource.targetId,
|
||||
"type": 1
|
||||
"type": 2
|
||||
});
|
||||
|
||||
{/* "chapterId": props.datasource.stageId=="0"?"":props.datasource.stageId, */}
|
||||
api.QueryOnlineManagementDetail({
|
||||
"chapterId": props.datasource.stageId=="0"?"":props.datasource.stageId,
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"status": state.projectName,
|
||||
"studentName": state.name,
|
||||
"targetId":props.datasource.projectId,
|
||||
"taskId": props.datasource.projectTaskId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"thirdId": props.datasource.targetId,
|
||||
"type": 1
|
||||
"type": 2
|
||||
}).then(res=>{
|
||||
console.log('在线课数据获取', res)
|
||||
if(res.data.code==200){
|
||||
|
||||
@@ -384,20 +384,24 @@ export default {
|
||||
});
|
||||
} else if(props.datasource.type == 1) {
|
||||
console.log("我是传递的查询参数", {
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"status": state.projectName,
|
||||
"studentName": state.name,
|
||||
"taskId": props.datasource.routerTaskId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"thirdId": props.datasource.targetId,
|
||||
"type": 1
|
||||
});
|
||||
|
||||
api.QueryOnlineManagementDetail({
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"status": state.projectName,
|
||||
"studentName": state.name,
|
||||
"targetId":props.datasource.routerId,
|
||||
"taskId": props.datasource.routerTaskId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"thirdId": props.datasource.targetId,
|
||||
"type": 1
|
||||
}).then(res=>{
|
||||
|
||||
@@ -48,7 +48,6 @@
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -187,15 +186,15 @@ export default {
|
||||
tablecolumns: [
|
||||
{
|
||||
title: "工号",
|
||||
dataIndex: "studentCode",
|
||||
key: "studentCode",
|
||||
dataIndex: "studentUserNo",
|
||||
key: "studentUserNo",
|
||||
width: 120,
|
||||
align: "center",
|
||||
className: "h head",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.studentCode?text.record.studentCode:"-"}</span>
|
||||
<span> {text.record.studentUserNo?text.record.studentUserNo:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -264,8 +263,8 @@ export default {
|
||||
},
|
||||
{
|
||||
title: "考试次数",
|
||||
dataIndex: "testNumber",
|
||||
key: "testNumber",
|
||||
dataIndex: "num",
|
||||
key: "num",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -273,7 +272,7 @@ export default {
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.testNumber?text.record.testNumber:"-"}</span>
|
||||
<span> {text.record.num?text.record.num:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -289,7 +288,7 @@ export default {
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.score?text.record.score:"-"}</span>
|
||||
<span> {text.record.examinationScore?text.record.examinationScore:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -297,8 +296,8 @@ export default {
|
||||
|
||||
{
|
||||
title: "完成时间",
|
||||
dataIndex: "finishedTime",
|
||||
key: "finishedTime",
|
||||
dataIndex: "examinationSubmitTime",
|
||||
key: "examinationSubmitTime",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -306,27 +305,20 @@ export default {
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.finishedTime?text.record.finishedTime:"-"}</span>
|
||||
<span> {text.record.examinationSubmitTime?text.record.examinationSubmitTime:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "任务状态",
|
||||
dataIndex: "status",
|
||||
key: "status",
|
||||
dataIndex: "finishStatus",
|
||||
key: "finishStatus",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
console.log(text.record.status);
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.status==0||text.record.status==null?"未开始":text.record.status==10?"未通过":"已通过"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
customRender: ({record:{finishStatus}}) => ({1:'通过',2:'未通过'}[finishStatus] || '未开始'),
|
||||
},
|
||||
],
|
||||
loadingData: true
|
||||
@@ -373,40 +365,19 @@ export default {
|
||||
|
||||
// 获取数据
|
||||
function getData() {
|
||||
console.log('我是传递的参数',{
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"studentName": state.name,
|
||||
"status": state.projectName,
|
||||
"targetId": props.datasource.routerId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"type": 1
|
||||
})
|
||||
api.ExamManagementMessage({
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"studentName": state.name,
|
||||
"status": state.projectName,
|
||||
"targetId": props.datasource.routerId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"type": 1
|
||||
api.AssessmentManagementMessage({
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.datasource.chapterId,
|
||||
type: 2,
|
||||
pid: props.datasource.routerId,
|
||||
taskId: props.datasource.routerTaskId,
|
||||
taskType: props.datasource.type,
|
||||
status: state.projectName,
|
||||
studentName: state.name,
|
||||
}).then(res=>{
|
||||
console.log(res)
|
||||
if(res.data.code == 200){
|
||||
let newData = [];
|
||||
for(let i=0;i<res.data.data.managementDtoList.length;i++){
|
||||
res.data.data.managementDtoList[i].key = i + 1;
|
||||
newData.push(res.data.data.managementDtoList[i])
|
||||
}
|
||||
state.tabledata = newData;
|
||||
state.tableDataTotal = res.data.data.total;
|
||||
state.loadingData = false;
|
||||
console.log('我是处理过后的数据', newData)
|
||||
}
|
||||
}).catch(err=>{
|
||||
console.log(err)
|
||||
state.tabledata = res.data.data.records;
|
||||
state.tableDataTotal = res.data.data.total;
|
||||
state.loadingData = false;
|
||||
})
|
||||
}
|
||||
@@ -434,7 +405,9 @@ export default {
|
||||
|
||||
{/* 导出数据 */}
|
||||
function exportData() {
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/exam/manage/exportExam?chapterId=${props.datasource.chapterId}&targetId=${props.datasource.routerId}&taskId=${props.datasource.courseId}&type=${1}`)
|
||||
// window.open(`${process.env.VUE_APP_BASE_API}/admin/exam/manage/exportExam?chapterId=${props.datasource.chapterId}&targetId=${props.datasource.routerId}&taskId=${props.datasource.courseId}&type=${1}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&taskType=${props.datasource.type}`)
|
||||
|
||||
{/* api.ExportExam({
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"targetId": props.datasource.routerId,
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
:options="projectNameList2"
|
||||
@change="selectProjectName2"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -181,7 +180,7 @@
|
||||
v-model:AddImpStuvisible="AddImpStuvisible"
|
||||
@AddImpStuvisibleClose="AddImpStuvisibleClose"
|
||||
:courseId="datasource.courseId"
|
||||
:courseType="1"
|
||||
:courseType="3"
|
||||
/>
|
||||
<!-- 批量签到弹窗 -->
|
||||
<a-modal
|
||||
@@ -764,14 +763,14 @@ export default {
|
||||
.AssessmentManagementMessage({
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.datasource.chapterId,
|
||||
type: 2,
|
||||
pid: props.datasource.routerId,
|
||||
// currentStageId: props.datasource.chapterId,
|
||||
type: 3,
|
||||
pid: props.datasource.courseId,
|
||||
// status: Number(state.name),
|
||||
signStatus: state.projectName2,
|
||||
studentName: state.name,
|
||||
taskId: props.datasource.routerTaskId,
|
||||
taskType: props.datasource.type,
|
||||
// taskId: props.datasource.routerTaskId,
|
||||
// taskType: props.datasource.type,
|
||||
})
|
||||
.then((res) => {
|
||||
console.log("获取面授管理学员", res);
|
||||
@@ -822,7 +821,7 @@ export default {
|
||||
process.env.VUE_APP_BASE_API
|
||||
}/admin/student/exportTaskStudent?currentStageId=${
|
||||
props.datasource.chapterId
|
||||
}&type=${2}&pid=${props.datasource.routerId}&taskType=2&thirdType=2`
|
||||
}&type=3&pid=${props.datasource.courseId}&thirdType=7&taskId=${props.datasource.routerTaskId}`
|
||||
);
|
||||
// api
|
||||
// .exportTaskStudent({
|
||||
|
||||
@@ -43,7 +43,6 @@
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -133,23 +132,16 @@
|
||||
<ASOver
|
||||
v-model:ASOvervisible="ASOvervisible"
|
||||
v-model:ids="selectedRowKeys"
|
||||
:taskId="
|
||||
datasource && datasource.routerTaskId ? datasource.routerTaskId : null
|
||||
"
|
||||
:type="2"
|
||||
:pid="datasource && datasource.routerId ? datasource.routerId : null"
|
||||
:taskType="datasource && datasource.type ? datasource.type : null"
|
||||
:currentStageId="
|
||||
datasource && datasource.chapterId ? datasource.chapterId : null
|
||||
"
|
||||
:type="3"
|
||||
:pid="datasource?.courseId"
|
||||
v-model:getStudent="getStudent"
|
||||
/>
|
||||
<!-- 录入成绩抽屉 -->
|
||||
<EScore
|
||||
v-model:eScorevisible="Evisible"
|
||||
:type="2"
|
||||
:type="3"
|
||||
:id="datasource?.routerTaskId"
|
||||
:pid="datasource?.routerId"
|
||||
:pid="datasource?.courseId"
|
||||
v-model:searchTaskList="searchTaskList"
|
||||
/>
|
||||
<!-- 查看作业抽屉 -->
|
||||
@@ -325,7 +317,7 @@ export default {
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
/** {
|
||||
title: "学员关卡",
|
||||
dataIndex: "chapterName",
|
||||
key: "chapterName",
|
||||
@@ -342,7 +334,7 @@ export default {
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
},*/
|
||||
{
|
||||
title: "作业成绩",
|
||||
dataIndex: "workScore",
|
||||
@@ -392,15 +384,7 @@ export default {
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>
|
||||
{text.record.assessmentScore || "-"}
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
customRender: ({record:{assessmentScore}}) => (assessmentScore ? Math.round(assessmentScore * 100) / 100 : "-"),
|
||||
},
|
||||
{
|
||||
title: "任务状态",
|
||||
@@ -549,26 +533,15 @@ export default {
|
||||
// 获取数据
|
||||
//获取学员
|
||||
const getStudent = () => {
|
||||
console.log("我是传递的查询参数", {
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.datasource.chapterId,
|
||||
type: 2,
|
||||
pid: props.datasource.routerId,
|
||||
taskId: props.datasource.routerTaskId,
|
||||
taskType: props.datasource.type,
|
||||
status: state.projectName,
|
||||
studentName: state.name,
|
||||
});
|
||||
api
|
||||
.AssessmentManagementMessage({
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.datasource.chapterId,
|
||||
type: 2,
|
||||
pid: props.datasource.routerId,
|
||||
taskId: props.datasource.routerTaskId,
|
||||
taskType: props.datasource.type,
|
||||
type: 3,
|
||||
pid: props.datasource.courseId,
|
||||
// taskId: props.datasource.routerTaskId,
|
||||
// taskType: props.datasource.type,
|
||||
status: state.projectName,
|
||||
studentName: state.name,
|
||||
})
|
||||
@@ -622,7 +595,7 @@ export default {
|
||||
`${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${
|
||||
props.datasource.chapterId
|
||||
}&type=${2}&pid=${props.datasource.routerId}&taskType=${2}`
|
||||
}&type=3&pid=${props.datasource.courseId}&thirdType=5&taskId=${props.datasource.routerTaskId}`
|
||||
);
|
||||
// api
|
||||
// .exportTaskStudent({
|
||||
@@ -647,10 +620,10 @@ export default {
|
||||
state.downloadUrl = null;
|
||||
let obj = {
|
||||
currentStageId: props.datasource.chapterId,
|
||||
pid: props.datasource.routerId,
|
||||
taskId: props.datasource.routerTaskId,
|
||||
taskType: props.datasource.type,
|
||||
type: 2,
|
||||
pid: props.datasource.courseId,
|
||||
// taskId: props.datasource.routerTaskId,
|
||||
// taskType: props.datasource.type,
|
||||
type: 3,
|
||||
};
|
||||
api
|
||||
.exportHomeWork(obj)
|
||||
@@ -679,7 +652,7 @@ export default {
|
||||
props.datasource.chapterId
|
||||
}&type=${2}&pid=${props.datasource.routerId}&taskId=${
|
||||
props.datasource.routerTaskId
|
||||
}&taskType=${props.datasource.type}`
|
||||
}&taskType=${props.datasource.type}&thirdType=5`
|
||||
);
|
||||
}
|
||||
return {
|
||||
|
||||
@@ -44,7 +44,6 @@
|
||||
:options="projectNameList"
|
||||
@change="selectProjectName"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -561,7 +560,7 @@ export default {
|
||||
`${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${
|
||||
props.datasource.chapterId
|
||||
}&type=${2}&pid=${props.datasource.routerId}&taskType=${4}`
|
||||
}&type=${2}&pid=${props.datasource.routerId}&taskType=${4}&taskId=${props.datasource.routerTaskId}`
|
||||
);
|
||||
// api
|
||||
// .exportTaskStudent({
|
||||
|
||||
@@ -341,7 +341,7 @@
|
||||
</a-modal>
|
||||
-->
|
||||
<a-modal
|
||||
:style="{padding: 0,position: relative,right: - (screenWidth/2 - 660) + 'px',}"
|
||||
:style="{padding: 0,position: relative,right: '-20%'}"
|
||||
:closable="true"
|
||||
:visible="stageVisible"
|
||||
:footer="null"
|
||||
@@ -560,7 +560,7 @@ const stuSelectKeys = ref([]);
|
||||
const orgSelectKeys = ref([]);
|
||||
const auditSelectKeys = ref([]);
|
||||
const screenHeight = ref(document.body.clientHeight);
|
||||
const screenWidth = ref(document.body.clientWidth);
|
||||
//const screenWidth = ref(document.body.clientWidth);
|
||||
const stuRowSelection = computed(() => ({
|
||||
columnWidth: 20,
|
||||
selectedRowKeys: stuSelectKeys.value,
|
||||
|
||||
@@ -117,7 +117,8 @@
|
||||
导出学习信息
|
||||
</a-button>
|
||||
</a-col>
|
||||
<a-col :span="1.5" v-else>
|
||||
|
||||
<a-col :span="1.5" v-if="type === 2">
|
||||
<a-button class="cus-btn white" @click="exportTaskStuRouter">
|
||||
导出学习信息
|
||||
</a-button>
|
||||
@@ -195,7 +196,7 @@
|
||||
:scroll="{ x: 1500 }"
|
||||
row-key="id"
|
||||
:row-selection="stuRowSelection"
|
||||
>
|
||||
>
|
||||
<template #action="{ record }">
|
||||
<!-- <div style="display:flex;justify-content: center;align-items: center;">-->
|
||||
<!-- <div v-if="props.type == 1" @click="excellentStudent(record)"
|
||||
@@ -231,8 +232,8 @@
|
||||
换组
|
||||
</div>
|
||||
</a-col>
|
||||
-->
|
||||
<a-col v-if="type === 3">
|
||||
-->
|
||||
<a-col v-if="type === 3 && record.status!==0">
|
||||
<div
|
||||
style=" color: #4ea6ff; font-size: 14px;text-align: center; margin-left: 10px; cursor: pointer; "
|
||||
@click="updateStatus(0, record.id)"
|
||||
@@ -240,7 +241,7 @@
|
||||
通过
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col v-if="type === 3">
|
||||
<a-col v-if="type === 3 && record.status!==0">
|
||||
<div
|
||||
style=" color: #4ea6ff;font-size: 14px;text-align: center; margin-left: 10px;cursor: pointer; "
|
||||
@click="updateStatus(2, record.id)"
|
||||
@@ -361,7 +362,7 @@
|
||||
v-model:AddImpStuvisible="AddImpStuvisible"
|
||||
@AddImpStuvisibleClose="AddImpStuvisibleClose"
|
||||
:courseId="id"
|
||||
:courseType="type === 1 ? 3 : 4"
|
||||
:courseType="type"
|
||||
/>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -456,6 +457,8 @@ const tablecolumns = ref([
|
||||
align: "center",
|
||||
className: "h",
|
||||
ellipsis: true,
|
||||
customRender: ({ record: { studentOrgName, studentDepartName } }) =>
|
||||
(allDepartShow(studentOrgName, studentDepartName)),
|
||||
},
|
||||
{
|
||||
title: "加入方式",
|
||||
@@ -464,7 +467,8 @@ const tablecolumns = ref([
|
||||
width: "10%",
|
||||
align: "center",
|
||||
customRender: ({ record: { source } }) =>
|
||||
({ 1: "快速添加", 2: "组织", 3: "受众", 4: "报名" }[source]),
|
||||
// ({ 1: "快速添加", 2: "组织", 3: "受众", 4: "报名" }[source]),
|
||||
({ 0: "手动加入", 1: "手动加入", 2: "手动加入", 3: "手动加入", 4: "报名", 5: "手动加入", 6: "手动加入"}[source]),
|
||||
},
|
||||
...props.columns,
|
||||
{
|
||||
@@ -476,6 +480,14 @@ const tablecolumns = ref([
|
||||
slots: { customRender: "action" },
|
||||
},
|
||||
]);
|
||||
|
||||
function allDepartShow(a,b) {
|
||||
let org = (a=="" || a == null || a == undefined) ? a = "" : a.slice(0,1) =='/' ? a.slice(1,a.length) : a;
|
||||
let depart = (b=="" || b == null || b == undefined) ? b = "" : b;
|
||||
let allname = org == "" && depart == "" ? '-' : org + depart;
|
||||
return allname;
|
||||
}
|
||||
|
||||
const tableParam = ref({
|
||||
studentName: "", //学员名称
|
||||
groupName: "", //学员小组
|
||||
@@ -506,7 +518,7 @@ function exportTaskStu() {
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_BASE_API
|
||||
}/admin/student/exportTaskStudent?type=${1}&pid=${props.id}&taskType=0`
|
||||
}/admin/student/exportTaskStudent?type=${1}&pid=${props.id}`
|
||||
);
|
||||
}
|
||||
|
||||
@@ -515,7 +527,7 @@ function exportTaskStuRouter() {
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_BASE_API
|
||||
}/admin/student/exportTaskStudent?type=${2}&pid=${props.id}&taskType=0`
|
||||
}/admin/student/exportTaskStudent?type=${2}&pid=${props.id}`
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
'0%': countCMB>2?'#FF0000 ':'#45B058',
|
||||
'100%': countCMB>2?'#FF0000 ':'#45B058',
|
||||
}" />
|
||||
<div v-if="countCMB>2" style="color:rgba(255, 116, 116, 1);font-size:12px;">容量已满,请删除文件</div>
|
||||
<div v-if="formatCapacityGB(capacity)>2" style="color:rgba(255, 116, 116, 1);font-size:12px;">容量已满,请删除文件</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 文件容器 -->
|
||||
@@ -176,6 +176,12 @@ export default {
|
||||
return CMB
|
||||
}
|
||||
|
||||
function formatCapacityGB(data) {
|
||||
let num = Number(data);
|
||||
let CMB = (num / (1048576*1024)).toFixed(2);
|
||||
return CMB
|
||||
}
|
||||
|
||||
// 下载文件
|
||||
function downLoadFile(data) {
|
||||
console.log(data)
|
||||
@@ -226,7 +232,8 @@ export default {
|
||||
changePaginationStu,
|
||||
searchDownloadList,
|
||||
reseatDownloadList,
|
||||
formatCapacity
|
||||
formatCapacity,
|
||||
formatCapacityGB
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -34,18 +34,13 @@
|
||||
placeholder="请选择状态"
|
||||
:options="options1"
|
||||
allowClear
|
||||
showSearch
|
||||
>
|
||||
</a-select>
|
||||
</div>
|
||||
<div class="select">
|
||||
<a-tree-select
|
||||
:getPopupContainer="
|
||||
(triggerNode) => {
|
||||
return triggerNode.parentNode || document.body;
|
||||
}
|
||||
"
|
||||
v-model:value="categoryId"
|
||||
:getPopupContainer="triggerNode => triggerNode.parentNode || document.body"
|
||||
v-model:value="sysTypeId"
|
||||
show-search
|
||||
style="width: 200px"
|
||||
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
||||
@@ -54,7 +49,7 @@
|
||||
tree-default-expand-all
|
||||
:fieldNames="{
|
||||
children: 'children',
|
||||
title: 'dictName',
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
:tree-data="sysTypeOptions"
|
||||
@@ -987,9 +982,9 @@
|
||||
<div class="onlinemanage" :style="{ display: om_1 ? 'block' : 'none' }">
|
||||
<div class="om_main">
|
||||
<div class="om_body">
|
||||
<div class="b_title">课程:{{ newCourseName }}</div>
|
||||
<div class="b_sub">
|
||||
<div class="bs_type">类型:</div>
|
||||
<div class="b_title">课程:{{ newCourseName }}</div>
|
||||
<div class="bs_type" style="margin-left: 20px">类型:</div>
|
||||
<div class="bs_right">{{ faceType }}</div>
|
||||
<div class="bs_left">内容分类:</div>
|
||||
<div class="bs_right">{{ faceClassification }}</div>
|
||||
@@ -1435,10 +1430,10 @@
|
||||
<div class="cstm_items">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
<!-- <img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
/> -->
|
||||
</div>
|
||||
<span style="margin-right: 3px">地点</span>
|
||||
</div>
|
||||
@@ -2541,111 +2536,63 @@ const columns2 = [
|
||||
title: "姓名",
|
||||
dataIndex: "studentName",
|
||||
key: "studentName",
|
||||
width: "12%",
|
||||
width: "6%",
|
||||
align: "center",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>
|
||||
{" "}
|
||||
{text.record.studentName ? text.record.studentName : "-"}
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
customRender: ({record: {studentName}}) => (studentName || "-")
|
||||
},
|
||||
{
|
||||
title: "工号",
|
||||
dataIndex: "studentUserNo",
|
||||
key: "studentUserNo",
|
||||
width: "12%",
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>
|
||||
{" "}
|
||||
{text.record.studentUserNo ? text.record.studentUserNo : "-"}
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
customRender: ({record: {studentUserNo}}) => (studentUserNo || "-")
|
||||
},
|
||||
{
|
||||
title: "开课名称",
|
||||
dataIndex: "name",
|
||||
key: "name",
|
||||
width: "12%",
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.name ? text.record.name : "-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
customRender: ({record: {name}}) => (name || "-")
|
||||
},
|
||||
{
|
||||
title: "地点",
|
||||
dataIndex: "address",
|
||||
key: "address",
|
||||
width: "12%",
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.address ? text.record.address : "-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
customRender: ({record: {address}}) => (address || "-")
|
||||
},
|
||||
{
|
||||
title: "数据来源",
|
||||
dataIndex: "courseSource",
|
||||
key: "courseSource",
|
||||
ellipsis: true,
|
||||
width: "12%",
|
||||
align: "center",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>
|
||||
{" "}
|
||||
{text.record.courseSource ? text.record.courseSource : "-"}
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
customRender: ({record:{courseName,routerName}}) => (courseName || routerName || "开课"),
|
||||
},
|
||||
{
|
||||
title: "学习时间",
|
||||
dataIndex: "lastStudyTime",
|
||||
key: "lastStudyTime",
|
||||
width: "12%",
|
||||
width: "10%",
|
||||
align: "center",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>
|
||||
{" "}
|
||||
{text.record.lastStudyTime ? text.record.lastStudyTime : "-"}
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
ellipsis: true,
|
||||
customRender: ({record:{lastStudyTime}}) => (lastStudyTime || "-")
|
||||
},
|
||||
{
|
||||
title: "签到时间",
|
||||
dataIndex: "signTime",
|
||||
key: "signTime",
|
||||
width: "12%",
|
||||
width: "10%",
|
||||
align: "center",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.signTime ? text.record.signTime : "-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
ellipsis: true,
|
||||
customRender: ({record:{signTime}}) => (signTime || "-")
|
||||
},
|
||||
{
|
||||
title: "状态",
|
||||
@@ -2785,8 +2732,8 @@ const columns6 = [
|
||||
// 新加学员数
|
||||
{
|
||||
title: "学员数",
|
||||
dataIndex: "createName",
|
||||
key: "createName",
|
||||
dataIndex: "studentCnt",
|
||||
key: "studentCnt",
|
||||
width: 100,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -3285,6 +3232,7 @@ export default defineComponent({
|
||||
createName: "",
|
||||
auditStatus: null,
|
||||
categoryId: undefined,
|
||||
sysTypeId: undefined,
|
||||
projectTime: "",
|
||||
|
||||
//列表
|
||||
@@ -3543,30 +3491,30 @@ export default defineComponent({
|
||||
state.viewpowervisible = true;
|
||||
};
|
||||
|
||||
const sysTypeOptions = computed(() => formateDictT(store.state.sysType));
|
||||
const sysTypeOptions = computed(() => store.state.sysType);
|
||||
|
||||
// console.log('12344', sysTypeOptions)
|
||||
|
||||
// 处理数据字典
|
||||
function formateDictT(data) {
|
||||
for(let i=0;i<data.length;i++){
|
||||
data[i].title = data[i].dictName;
|
||||
data[i].value = data[i].dictCode;
|
||||
if(data[i].children.length!==0){
|
||||
for(let j=0;j<data[i].children.length;j++){
|
||||
data[i].children[j].title = data[i].children[j].dictName;
|
||||
data[i].children[j].value = data[i].children[j].dictCode;
|
||||
if(data[i].children[j].children.length!==0){
|
||||
for(let k=0; k<data[i].children[j].children.length; k++) {
|
||||
data[i].children[j].children[k].title = data[i].children[j].children[k].dictName;
|
||||
data[i].children[j].children[k].value = data[i].children[j].children[k].dictCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
// function formateDictT(data) {
|
||||
// for(let i=0;i<data.length;i++){
|
||||
// data[i].title = data[i].dictName;
|
||||
// data[i].value = data[i].dictCode;
|
||||
// if(data[i].children.length!==0){
|
||||
// for(let j=0;j<data[i].children.length;j++){
|
||||
// data[i].children[j].title = data[i].children[j].dictName;
|
||||
// data[i].children[j].value = data[i].children[j].dictCode;
|
||||
// if(data[i].children[j].children.length!==0){
|
||||
// for(let k=0; k<data[i].children[j].children.length; k++) {
|
||||
// data[i].children[j].children[k].title = data[i].children[j].children[k].dictName;
|
||||
// data[i].children[j].children[k].value = data[i].children[j].children[k].dictCode;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return data;
|
||||
// }
|
||||
|
||||
// 富文本 sssssssssssssss
|
||||
// 编辑器实例,必须用 shallowRef
|
||||
@@ -3735,7 +3683,7 @@ export default defineComponent({
|
||||
|
||||
// 渲染列表1操作
|
||||
const getTableDate = async () => {
|
||||
console.log('我是点击搜索的数据',state.categoryId)
|
||||
console.log('我是点击搜索的数据',state.sysTypeId)
|
||||
// let datas = state.tableData1;
|
||||
let startTime = "";
|
||||
let endTime = "";
|
||||
@@ -3753,7 +3701,8 @@ export default defineComponent({
|
||||
pageNo: state.currentPage1,
|
||||
pageSize: state.pageSize1,
|
||||
auditStatus: state.auditStatus,
|
||||
categoryId: state.categoryId,
|
||||
// categoryId: state.categoryId,
|
||||
sysTypeId: state.sysTypeId,
|
||||
projectName: state.projectName,
|
||||
name: state.name,
|
||||
createName: state.createName,
|
||||
@@ -3772,7 +3721,7 @@ export default defineComponent({
|
||||
key: "offcourseId",
|
||||
num: "num",
|
||||
name: "name",
|
||||
content: "categoryId",
|
||||
content: "sysTypeId",
|
||||
courseform: "type",
|
||||
project: "projectName",
|
||||
stunum: "studentCnt",
|
||||
@@ -3790,7 +3739,7 @@ export default defineComponent({
|
||||
|
||||
datas.forEach((itm) => {
|
||||
itm.pageNo = pageNo;
|
||||
itm.contentTxt = findClassFullName(sysTypeOptions.value,itm.categoryId) || '-'
|
||||
itm.contentTxt = findClassFullName(sysTypeOptions.value,itm.sysTypeId) || '-'
|
||||
});
|
||||
state.tableData1 = datas;
|
||||
};
|
||||
@@ -3816,7 +3765,7 @@ export default defineComponent({
|
||||
state.name = "";
|
||||
state.createName = "";
|
||||
state.auditStatus = null;
|
||||
state.categoryId = null;
|
||||
state.sysTypeId = null;
|
||||
state.projectTime = "";
|
||||
getTableDate();
|
||||
};
|
||||
@@ -4524,7 +4473,7 @@ export default defineComponent({
|
||||
console.log(postData);
|
||||
const checkList = [
|
||||
postData.name,
|
||||
postData.address,
|
||||
// postData.address,
|
||||
postData.beginTime,
|
||||
postData.endTime,
|
||||
postData.teacherId,
|
||||
@@ -4891,7 +4840,8 @@ export default defineComponent({
|
||||
picUrl: item.picUrl,
|
||||
targetUser: item.targetUser,
|
||||
meaning: item.meaning,
|
||||
categoryId: item.categoryId,
|
||||
// categoryId: item.categoryId,
|
||||
sysTypeId: item.sysTypeId,
|
||||
sceneId: item.sceneId,
|
||||
tips: item.tips,
|
||||
teacherId: item.teacherId, //?
|
||||
@@ -4959,7 +4909,7 @@ export default defineComponent({
|
||||
state.currentPage1
|
||||
}&pageSize=${state.pageSize1}&auditStatus=${
|
||||
state.auditStatus ? state.auditStatus : ""
|
||||
}&categoryId=${state.categoryId ? state.categoryId : ""}&projectName=${
|
||||
}&sysTypeId=${state.sysTypeId ? state.sysTypeId : ""}&projectName=${
|
||||
state.projectName ? state.projectName : ""
|
||||
}&name=${state.name ? state.name : ""}&createName=${
|
||||
state.createName ? state.createName : ""
|
||||
@@ -5517,7 +5467,7 @@ export default defineComponent({
|
||||
: process.env.VUE_APP_BASE_API +
|
||||
`/admin/student/studentSign?taskId=${
|
||||
record.offcoursePlanId
|
||||
}&type=${3}`,
|
||||
}&taskType=${2}&type=${3}`,
|
||||
};
|
||||
console.log("codeInfo", state.codeInfo);
|
||||
state.codeIndex = 0;
|
||||
@@ -5820,7 +5770,7 @@ export default defineComponent({
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
/**
|
||||
/**
|
||||
.btn1:active {
|
||||
background: #0982ff;
|
||||
}
|
||||
@@ -7573,8 +7523,8 @@ export default defineComponent({
|
||||
background-image: url(../../assets/images/coursewareManage/export1.png);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
.btn3 {
|
||||
.search {
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
placeholder="请选择状态"
|
||||
:options="options1"
|
||||
allowClear
|
||||
showSearch
|
||||
>
|
||||
</a-select>
|
||||
</div>
|
||||
@@ -1862,7 +1861,6 @@
|
||||
style="width: 200px"
|
||||
:options="options1"
|
||||
allowClear
|
||||
showSearch
|
||||
@focus="focus"
|
||||
@change="handleChange"
|
||||
>
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb_right">
|
||||
<div class="mbl_items">
|
||||
<!-- <div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
@@ -142,7 +142,7 @@
|
||||
{{ filterTxt(detail.teacher) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="mbl_items2" v-if="detail.intro">
|
||||
<div class="item_nam">
|
||||
<div class="asterisk_icon">
|
||||
@@ -444,7 +444,7 @@ export default defineComponent({
|
||||
const sysTypeOptions = computed(() => store.state.sysType);
|
||||
|
||||
watch(
|
||||
() => props.detail.categoryId,
|
||||
() => props.detail.sysTypeId,
|
||||
() => {
|
||||
state.categoryName = findClassFullName(sysTypeOptions.value);
|
||||
}
|
||||
@@ -456,7 +456,7 @@ export default defineComponent({
|
||||
list.length &&
|
||||
list
|
||||
.map((e) =>
|
||||
props.detail.categoryId == e.dictCode
|
||||
props.detail.sysTypeId == e.dictCode
|
||||
? name
|
||||
? name + "-" + e.dictName
|
||||
: e.dictName
|
||||
|
||||
@@ -766,7 +766,8 @@ export default defineComponent({
|
||||
picUrl: state.feng_mian_1,
|
||||
targetUser: state.qdms_inputV2,
|
||||
meaning: state.qdms_inputV3,
|
||||
categoryId: state.fen_lei,
|
||||
// categoryId: state.fen_lei,
|
||||
sysTypeId: state.fen_lei,
|
||||
sceneContent: state.chang_jin,
|
||||
tips: state.tags_val ? state.tags_val.join(",") : null,
|
||||
// teacherId: state.member.value,
|
||||
@@ -780,7 +781,8 @@ export default defineComponent({
|
||||
const checkList = [
|
||||
postData.name,
|
||||
postData.targetUser,
|
||||
postData.categoryId,
|
||||
// postData.categoryId,
|
||||
postData.sysTypeId,
|
||||
// postData.teacherId,
|
||||
postData.picUrl,
|
||||
postData.intro,
|
||||
@@ -855,7 +857,8 @@ export default defineComponent({
|
||||
state.feng_mian_1 = item.picUrl;
|
||||
state.qdms_inputV2 = item.targetUser;
|
||||
state.qdms_inputV3 = item.meaning;
|
||||
state.fen_lei = item.categoryId;
|
||||
// state.fen_lei = item.categoryId;
|
||||
state.fen_lei = item.sysTypeId;
|
||||
state.chang_jin = String(item.sceneContent ? item.sceneContent : '');
|
||||
state.tags_val = item.tips ? item.tips.split(",") : [];
|
||||
state.qdms_inputV6 = item.intro;
|
||||
|
||||
@@ -23,33 +23,52 @@
|
||||
...calssifyList,
|
||||
]"
|
||||
/>-->
|
||||
<a-tree-select :getPopupContainer="
|
||||
(triggerNode) => {
|
||||
return triggerNode.parentNode || document.body;
|
||||
}
|
||||
" v-model:value="valueproj" show-search :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
||||
placeholder="请选择内容分类" allow-clear tree-default-expand-all :tree-data="sysTypeOptions">
|
||||
<template #title="{ value: val, title }">
|
||||
<a-tree-select
|
||||
:getPopupContainer="triggerNode => triggerNode.parentNode || document.body"
|
||||
v-model:value="valueproj"
|
||||
show-search
|
||||
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
||||
:fieldNames="{
|
||||
children: 'children',
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
placeholder="请选择内容分类"
|
||||
allow-clear
|
||||
tree-default-expand-all
|
||||
:tree-data="sysTypeOptions">
|
||||
|
||||
<!-- <template #title="{ value: val, title }">
|
||||
<b v-if="val === '11111'" style="color: #08c">sss</b>
|
||||
<template v-else>{{ title }}</template>
|
||||
</template>
|
||||
</template> -->
|
||||
</a-tree-select>
|
||||
</div>
|
||||
<div class="inpbox1">
|
||||
<a-input v-model:value="valuecreater" style="
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 14px;
|
||||
" placeholder="请输入创建人" />
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 14px;
|
||||
" placeholder="请输入创建人" />
|
||||
</div>
|
||||
<div class="inpbox1">
|
||||
<a-input v-model:value="valuename" style="
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 14px;
|
||||
" placeholder="请输入名称" />
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 14px;
|
||||
" placeholder="请输入名称" />
|
||||
</div>
|
||||
<div class="select addTimeBox">
|
||||
<div class="addTime">审核时间:</div>
|
||||
<a-range-picker
|
||||
v-model:value="searchParam"
|
||||
style="width: 420px"
|
||||
format="YYYY-MM-DD"
|
||||
separator="至"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -111,6 +130,7 @@ import {reactive, toRefs, onMounted, computed} from "vue";
|
||||
import { courseListView } from "../../api/indexAudit";
|
||||
import * as api1 from "@/api/index1";
|
||||
import {useStore} from "vuex";
|
||||
import dayjs from "dayjs";
|
||||
|
||||
export default {
|
||||
name: "CoursereViewed",
|
||||
@@ -397,32 +417,12 @@ export default {
|
||||
],
|
||||
}
|
||||
],
|
||||
searchParam:[], // 时间搜索
|
||||
});
|
||||
|
||||
const store = useStore();
|
||||
|
||||
const sysTypeOptions = computed(() => formateDictT(store.state.sysType));
|
||||
|
||||
// 处理数据字典
|
||||
function formateDictT(data) {
|
||||
for(let i=0;i<data.length;i++){
|
||||
data[i].title = data[i].dictName;
|
||||
data[i].value = data[i].dictCode;
|
||||
if(data[i].children.length!==0){
|
||||
for(let j=0;j<data[i].children.length;j++){
|
||||
data[i].children[j].title = data[i].children[j].dictName;
|
||||
data[i].children[j].value = data[i].children[j].dictCode;
|
||||
if(data[i].children[j].children.length!==0){
|
||||
for(let k=0; k<data[i].children[j].children.length; k++) {
|
||||
data[i].children[j].children[k].title = data[i].children[j].children[k].dictName;
|
||||
data[i].children[j].children[k].value = data[i].children[j].children[k].dictCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
const sysTypeOptions = computed(() => store.state.sysType);
|
||||
|
||||
function findClassFullName(list,classify,name=''){
|
||||
return list && list.length && list.map(e=>{
|
||||
@@ -436,10 +436,13 @@ export default {
|
||||
}
|
||||
|
||||
const getList = () => {
|
||||
console.log(state.searchParam[0],state.searchParam[1],new Date(state.searchParam[0]).getTime(),new Date(state.searchParam[0]))
|
||||
state.loading = true
|
||||
let objn = {
|
||||
auditStatus: 0,
|
||||
categoryId: Number(state.valueproj),
|
||||
beginTime:state.searchParam.length!==0? dayjs(new Date(state.searchParam[0]).getTime()).format("YYYY-MM-DD"): "",
|
||||
endTime:state.searchParam.length!==0? dayjs(new Date(state.searchParam[1]).getTime()).format("YYYY-MM-DD"): "",
|
||||
sysTypeId: state.valueproj,
|
||||
createName: state.valuecreater,
|
||||
name: state.valuename,
|
||||
pageNo: state.currentPage,
|
||||
@@ -469,7 +472,7 @@ export default {
|
||||
number: n + 1 + (state.currentPage - 1) * 10,
|
||||
name: item.name || "- ",
|
||||
type: item.type == 1 ? "线上" : "线下",
|
||||
content: sHX(item.categoryId),
|
||||
content: sHX(item.sysTypeId),
|
||||
status:
|
||||
item.auditStatus == 0
|
||||
? "未提交"
|
||||
@@ -542,6 +545,28 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.addTimeBox {
|
||||
top: 4px;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.addTime {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
margin-left: 10px;
|
||||
color: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.ant-picker {
|
||||
padding-left: 85px;
|
||||
}
|
||||
|
||||
.ant-picker-range .ant-picker-active-bar {
|
||||
margin-left: 85px;
|
||||
}
|
||||
}
|
||||
|
||||
.coursereviewed {
|
||||
width: 100%;
|
||||
|
||||
|
||||
@@ -25,10 +25,10 @@
|
||||
<a-tree-select
|
||||
:fieldNames="{
|
||||
children: 'children',
|
||||
title: 'dictName',
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
:getPopupContainer="triggerNode => triggerNode.parentNode || document.body"
|
||||
:getPopupContainer="triggerNode => triggerNode.parentNode || document.body"
|
||||
v-model:value="valueproj"
|
||||
show-search
|
||||
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
||||
@@ -39,19 +39,29 @@
|
||||
</div>
|
||||
<div class="inpbox1">
|
||||
<a-input v-model:value="valuecreater" style="
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 14px;
|
||||
" placeholder="请输入创建人" />
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 14px;
|
||||
" placeholder="请输入创建人" />
|
||||
</div>
|
||||
<div class="inpbox1">
|
||||
<a-input v-model:value="valuename" style="
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 14px;
|
||||
" placeholder="请输入名称" />
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 14px;
|
||||
" placeholder="请输入名称" />
|
||||
</div>
|
||||
<div class="select addTimeBox">
|
||||
<div class="addTime">创建时间:</div>
|
||||
<a-range-picker
|
||||
v-model:value="searchParam"
|
||||
style="width: 420px"
|
||||
format="YYYY-MM-DD"
|
||||
separator="至"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -140,6 +150,7 @@ import SeeModal from "../courselibrary/components/seeModal.vue";
|
||||
import { iframeUrl } from "../../api/method";
|
||||
import * as api1 from "@/api/index1";
|
||||
import {useStore} from "vuex";
|
||||
import dayjs from "dayjs";
|
||||
|
||||
export default {
|
||||
name: "CoursereViewedN",
|
||||
@@ -408,32 +419,11 @@ export default {
|
||||
],
|
||||
}
|
||||
],
|
||||
searchParam:[], // 时间搜索
|
||||
});
|
||||
const store = useStore();
|
||||
|
||||
const sysTypeOptions = computed(() => formateDictT(store.state.sysType));
|
||||
// console.log('asdasd--------------------------------------', sysTypeOptions)
|
||||
|
||||
// 处理数据字典
|
||||
function formateDictT(data) {
|
||||
for(let i=0;i<data.length;i++){
|
||||
data[i].title = data[i].dictName;
|
||||
data[i].value = data[i].dictCode;
|
||||
if(data[i].children.length!==0){
|
||||
for(let j=0;j<data[i].children.length;j++){
|
||||
data[i].children[j].title = data[i].children[j].dictName;
|
||||
data[i].children[j].value = data[i].children[j].dictCode;
|
||||
if(data[i].children[j].children.length!==0){
|
||||
for(let k=0; k<data[i].children[j].children.length; k++) {
|
||||
data[i].children[j].children[k].title = data[i].children[j].children[k].dictName;
|
||||
data[i].children[j].children[k].value = data[i].children[j].children[k].dictCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
const sysTypeOptions = computed(() => store.state.sysType);
|
||||
|
||||
function findClassFullName(list,classify,name=''){
|
||||
return list && list.length && list.map(e=>{
|
||||
@@ -463,7 +453,8 @@ export default {
|
||||
state.loading = true
|
||||
let objn = {
|
||||
auditStatus: 1,
|
||||
categoryId: state.valueproj,
|
||||
// categoryId: state.valueproj,
|
||||
sysTypeId: state.valueproj,
|
||||
createName: state.valuecreater,
|
||||
name: state.valuename,
|
||||
pageNo: state.currentPage,
|
||||
@@ -530,9 +521,16 @@ export default {
|
||||
// contentList11.find(e => e.dictCode == text)?.dictValue
|
||||
|
||||
const searchList = () => {
|
||||
console.log('searchParamsearchParamsearchParam', state.searchParam)
|
||||
console.log('searchParamsearchParamsearchParam', Math.ceil(new Date(state.searchParam[0]).getTime()))
|
||||
let objn = {
|
||||
auditStatus: 1,
|
||||
categoryId: state.valueproj,
|
||||
// categoryId: state.valueproj,
|
||||
// beginTime:state.searchParam.length!==0? Math.ceil(new Date(state.searchParam[0]).getTime()/1000): "",
|
||||
// endTime:state.searchParam.length!==0? Math.ceil(new Date(state.searchParam[1]).getTime()/1000): "",
|
||||
beginTime:state.searchParam.length!==0? dayjs(new Date(state.searchParam[0]).getTime()).format("YYYY-MM-DD"): "",
|
||||
endTime:state.searchParam.length!==0? dayjs(new Date(state.searchParam[1]).getTime()).format("YYYY-MM-DD"): "",
|
||||
sysTypeId: state.valueproj,
|
||||
createName: state.valuecreater,
|
||||
name: state.valuename,
|
||||
pageNo: state.currentPage,
|
||||
@@ -575,7 +573,7 @@ export default {
|
||||
number: i + 1 + (state.currentPage - 1) * 10,
|
||||
name: item.name,
|
||||
type: item.type == 1 ? "线上" : "线下",
|
||||
content: sHX(item.categoryId),
|
||||
content: sHX(item.sysTypeId),
|
||||
status:
|
||||
item.status == 0
|
||||
? "未提交"
|
||||
@@ -597,6 +595,7 @@ export default {
|
||||
state.tableData1 = array;
|
||||
};
|
||||
const reset = () => {
|
||||
state.searchParam = [];
|
||||
state.valueproj = null;
|
||||
state.valuecreater = null;
|
||||
state.valuename = null;
|
||||
@@ -695,6 +694,27 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.addTimeBox {
|
||||
top: 4px;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.addTime {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
margin-left: 10px;
|
||||
color: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.ant-picker {
|
||||
padding-left: 85px;
|
||||
}
|
||||
|
||||
.ant-picker-range .ant-picker-active-bar {
|
||||
margin-left: 85px;
|
||||
}
|
||||
}
|
||||
.courAuditModal {
|
||||
.ant-modal {
|
||||
width: 640px !important;
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tmplh_btn">
|
||||
<div class="tmplh_btn" style="margin-top:50px;">
|
||||
<div class="btn btn1" @click="getProjList">
|
||||
<div class="search"></div>
|
||||
<div class="btnText btnText1">搜索</div>
|
||||
|
||||
@@ -53,9 +53,19 @@
|
||||
<!-- <a-range-picker v-model:value="valueDate" style="border-radius: 8px; height: 40px; margin-left: 5px"-->
|
||||
<!-- :placeholder="[' 开始时间', ' 结束时间']" @change="rankTimeChange" />-->
|
||||
<!-- </div>-->
|
||||
<div class="select addTimeBox">
|
||||
<div class="addTime">提交时间:</div>
|
||||
<a-range-picker
|
||||
v-model:value="searchParam"
|
||||
style="width: 420px"
|
||||
format="YYYY-MM-DD"
|
||||
separator="至"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tmplh_btn">
|
||||
<div class="tmplh_btn" style="margin-top:50px;">
|
||||
<div class="btn btn1" @click="getProjList">
|
||||
<div class="search"></div>
|
||||
<div class="btnText btnText1">搜索</div>
|
||||
@@ -108,6 +118,7 @@
|
||||
import { onMounted, reactive, toRefs } from "vue";
|
||||
import ProjectAudit from "../../components/drawers/ProjectAudit";
|
||||
import { auditlist } from "../../api/indexAudit";
|
||||
import dayjs from "dayjs";
|
||||
|
||||
export default {
|
||||
name: "ProjectViewedN",
|
||||
@@ -230,6 +241,7 @@ export default {
|
||||
},
|
||||
],
|
||||
tableData1: [],
|
||||
searchParam:[]
|
||||
});
|
||||
const showProjAudit = (id, createId, creater) => {
|
||||
state.ProjAuditvisible = true;
|
||||
@@ -240,17 +252,16 @@ export default {
|
||||
const getProjList = () => {
|
||||
state.loading=true
|
||||
let objn = {
|
||||
beginTime:
|
||||
state.valueDate == undefined ? "" : Date.parse(state.valueDate[0]),
|
||||
beginTime:state.searchParam.length!==0? dayjs(new Date(state.searchParam[0]).getTime()).format("YYYY-MM-DD"): "",
|
||||
endTime:state.searchParam.length!==0? dayjs(new Date(state.searchParam[1]).getTime()).format("YYYY-MM-DD"): "",
|
||||
createName: state.valuecreater,
|
||||
endTime:
|
||||
state.valueDate == undefined ? "" : Date.parse(state.valueDate[1]),
|
||||
manager: state.valuename,
|
||||
name: state.valueproj,
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
status: 1,
|
||||
};
|
||||
console.log(objn)
|
||||
auditlist(objn)
|
||||
.then((res) => {
|
||||
console.log("获取待审核项目成功", res);
|
||||
@@ -278,6 +289,7 @@ export default {
|
||||
getProjList();
|
||||
};
|
||||
const reset = () => {
|
||||
state.searchParam = [];
|
||||
(state.valueproj = ""),
|
||||
(state.valuecreater = ""),
|
||||
(state.valuename = ""),
|
||||
@@ -298,6 +310,28 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.addTimeBox {
|
||||
top: 4px;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.addTime {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
margin-left: 10px;
|
||||
color: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.ant-picker {
|
||||
padding-left: 85px;
|
||||
}
|
||||
|
||||
.ant-picker-range .ant-picker-active-bar {
|
||||
margin-left: 85px;
|
||||
}
|
||||
}
|
||||
|
||||
.projectviewedn {
|
||||
width: 100%;
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
:options="statusList"
|
||||
@change="selectStatusClassify"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
|
||||
@@ -859,12 +858,14 @@ export default {
|
||||
state.pathName = "";
|
||||
state.pathBg = "";
|
||||
state.pathBgId = "";
|
||||
if(store.state.userInfo.departId && store.state.userInfo.departName){
|
||||
state.organizationSelectName = store.state.userInfo.departName;
|
||||
state.organizationSelectId = store.state.userInfo.departId;
|
||||
}
|
||||
state.pathIntro = "";
|
||||
state.out = !state.out;
|
||||
setTimeout(() => {
|
||||
if(store.state.userInfo.departId && store.state.userInfo.departName){
|
||||
state.organizationSelectName = store.state.userInfo.departName;
|
||||
state.organizationSelectId = store.state.userInfo.departId;
|
||||
}
|
||||
}, 2000);
|
||||
};
|
||||
const handleOut1 = () => {
|
||||
state.pathName = "";
|
||||
|
||||
@@ -431,23 +431,13 @@
|
||||
<a-progress
|
||||
:showInfo="false"
|
||||
:percent="
|
||||
parseInt(
|
||||
(item.finishStuNum / item.totalStuNum) * 100
|
||||
)
|
||||
parseInt((item.finishStuNum / item.totalStuNum) * 100)
|
||||
"
|
||||
strokeColor="#FFC067"
|
||||
trailColor="rgba(253, 209, 98, 0.2)"
|
||||
/>
|
||||
<span class="progresstext" style="margin-left: 10px"
|
||||
>{{
|
||||
item.totalStuNum == 0
|
||||
? 0
|
||||
: item.finishStuNum == 0
|
||||
? 0
|
||||
: parseInt(
|
||||
(item.finishStuNum / item.totalStuNum) * 100
|
||||
)
|
||||
}}%</span
|
||||
>{{parseInt((item.finishStuNum / item.totalStuNum) * 100) || 0}}%</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@@ -911,7 +901,6 @@
|
||||
:options="statess"
|
||||
@change="selectProjectName4"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
<div class="btn">
|
||||
@@ -1670,7 +1659,7 @@ export default {
|
||||
className: "h",
|
||||
customRender: ({ record }) => (
|
||||
<div>
|
||||
{record.finishTaskNum}/{record.totalTaskNum}
|
||||
{record.finishTaskNum || 0}/{record.totalTaskNum || 0}
|
||||
</div>
|
||||
),
|
||||
},
|
||||
|
||||
@@ -1005,7 +1005,6 @@
|
||||
:options="level"
|
||||
@change="handleChangeStage"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
<div class="btn">
|
||||
|
||||
@@ -717,7 +717,6 @@
|
||||
:options="projectNameList4"
|
||||
@change="selectProjectName4"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
<div class="btn">
|
||||
|
||||
@@ -192,19 +192,35 @@
|
||||
<div class="namebox">
|
||||
<div class="inname">同步学习记录</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<div class="in ggysxz" v-if="courseSyncFlag">
|
||||
<!-- :disabled="viewDetail ? true : false" -->
|
||||
<a-checkbox
|
||||
v-model:checked="courseSyncFlag"
|
||||
:disabled="viewDetail ? true : false"
|
||||
><span
|
||||
disabled>
|
||||
<span
|
||||
style="
|
||||
width: 100%;
|
||||
color: rgba(109, 117, 132, 1);
|
||||
font-size: 14px;
|
||||
"
|
||||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||
></a-checkbox
|
||||
>
|
||||
">
|
||||
同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)
|
||||
</span>
|
||||
</a-checkbox>
|
||||
</div>
|
||||
<div class="in" v-else>
|
||||
<!-- :disabled="viewDetail ? true : false" -->
|
||||
<a-checkbox
|
||||
v-model:checked="courseSyncFlag"
|
||||
disabled>
|
||||
<span
|
||||
style="
|
||||
width: 100%;
|
||||
color: rgba(109, 117, 132, 1);
|
||||
font-size: 14px;
|
||||
">
|
||||
同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)
|
||||
</span>
|
||||
</a-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name name2">
|
||||
@@ -320,7 +336,7 @@ export default {
|
||||
keyWord: "",
|
||||
},
|
||||
classifyList5: [],
|
||||
courseSyncFlag: false,
|
||||
courseSyncFlag: true,
|
||||
auditDescription: "",
|
||||
ptojectType: "",
|
||||
});
|
||||
@@ -533,6 +549,16 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
.ggysxz {
|
||||
.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner::after {
|
||||
border-color: #FFF !important;
|
||||
}
|
||||
.ant-checkbox-disabled .ant-checkbox-inner {
|
||||
background-color: #1890ff !important;
|
||||
}
|
||||
}
|
||||
|
||||
.flex-top {
|
||||
align-items: flex-start !important;
|
||||
}
|
||||
|
||||
@@ -1177,7 +1177,7 @@ export default {
|
||||
arraynew.push(data[i])
|
||||
}
|
||||
}
|
||||
console.log(arraynew)
|
||||
// console.log(arraynew)
|
||||
if (arraynew.length !== 0) {
|
||||
state.chooseStageId = Number(arraynew[arraynew.length - 1].stageId);
|
||||
}
|
||||
@@ -1439,8 +1439,7 @@ export default {
|
||||
});
|
||||
};
|
||||
onMounted(() => {
|
||||
document.getElementsByTagName("main")[0].style.background =
|
||||
"rgb(245, 247, 250,1)";
|
||||
document.getElementsByTagName("main")[0].style.background = "rgb(245, 247, 250,1)";
|
||||
document.getElementsByTagName("main")[0].style.boxShadow = "none";
|
||||
getTask();
|
||||
});
|
||||
@@ -1452,8 +1451,7 @@ export default {
|
||||
});
|
||||
onUnmounted(() => {
|
||||
document.getElementsByTagName("main")[0].style.background = "#ffffff";
|
||||
document.getElementsByTagName("main")[0].style.boxShadow =
|
||||
"0px 1px 35px 0px rgba(118, 136, 166, 0.07)";
|
||||
document.getElementsByTagName("main")[0].style.boxShadow = "0px 1px 35px 0px rgba(118, 136, 166, 0.07)";
|
||||
});
|
||||
const showDrawerOnline = (id, eleId) => {
|
||||
console.log("id, eleId", id, eleId);
|
||||
|
||||
@@ -540,32 +540,17 @@
|
||||
</div>
|
||||
<div class="progress">
|
||||
<div class="progresstext">
|
||||
{{
|
||||
item.finishStuCnt && item.finishStuCnt !== null
|
||||
? item.finishStuCnt
|
||||
: 0
|
||||
}}/{{
|
||||
item.totalStuCnt && item.totalStuCnt !== null
|
||||
? item.totalStuCnt
|
||||
: 0
|
||||
}}人
|
||||
{{item.finishStuCnt || 0 }}/{{item.totalStuCnt || 0}}人
|
||||
</div>
|
||||
<div style="display: flex">
|
||||
<a-progress
|
||||
:showInfo="false"
|
||||
:percent="item.percent"
|
||||
:percent="parseInt((item.finishStuCnt / item.totalStuCnt) * 100)"
|
||||
strokeColor="#FFC067"
|
||||
trailColor="rgba(253, 209, 98, 0.2)"
|
||||
/>
|
||||
<span class="progresstext" style="margin-left: 10px"
|
||||
>{{
|
||||
(item.finishStuCnt && item.finishStuCnt !== null
|
||||
? item.finishStuCnt
|
||||
: 0 / item.totalStuCnt &&
|
||||
item.totalStuCnt !== null
|
||||
? item.totalStuCnt
|
||||
: 0) * 100
|
||||
}}%</span
|
||||
>{{parseInt((item.finishStuCnt / item.totalStuCnt) * 100) || 0 }}%</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1854,7 +1839,7 @@ export default {
|
||||
ellipsis: true,
|
||||
customRender: ({ record }) => (
|
||||
<div>
|
||||
{record.finishTaskNum}/{record.totalTaskNum}
|
||||
{record.finishTaskNum|| 0}/{record.totalTaskNum || 0}
|
||||
</div>
|
||||
),
|
||||
},
|
||||
|
||||
@@ -1016,7 +1016,6 @@
|
||||
:options="level"
|
||||
@change="handleChangeStage"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
<div class="btn">
|
||||
|
||||
@@ -166,10 +166,26 @@
|
||||
<div class="namebox">
|
||||
<div class="inname">同步学习记录</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<div class="in ggysxz" v-if="courseSyncFlag">
|
||||
<!-- :disabled="viewDetail ? true : false" -->
|
||||
<a-checkbox
|
||||
disabled
|
||||
v-model:checked="courseSyncFlag"
|
||||
><span
|
||||
style="
|
||||
width: 100%;
|
||||
color: rgba(109, 117, 132, 1);
|
||||
font-size: 14px;
|
||||
"
|
||||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||
></a-checkbox
|
||||
>
|
||||
</div>
|
||||
<div class="in" v-else>
|
||||
<!-- :disabled="viewDetail ? true : false" -->
|
||||
<a-checkbox
|
||||
disabled
|
||||
v-model:checked="courseSyncFlag"
|
||||
:disabled="viewDetail ? true : false"
|
||||
><span
|
||||
style="
|
||||
width: 100%;
|
||||
@@ -223,7 +239,7 @@ const router = useRouter();
|
||||
const store = useStore();
|
||||
const projectInfo = ref({});
|
||||
const projectPic = ref([]);
|
||||
const courseSyncFlag = ref(false)
|
||||
const courseSyncFlag = ref(true)
|
||||
onMounted(() => {
|
||||
getDetail();
|
||||
projectPic.value = store.state.projectPic.map((e) => ({
|
||||
@@ -305,6 +321,15 @@ function managerChange(e, l, d, t,orgName) {
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.ggysxz {
|
||||
.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner::after {
|
||||
border-color: #FFF !important;
|
||||
}
|
||||
.ant-checkbox-disabled .ant-checkbox-inner {
|
||||
background-color: #1890ff !important;
|
||||
}
|
||||
}
|
||||
|
||||
.active {
|
||||
border: 2px solid rgba(78, 166, 255, 1);
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
border-radius: 8px;
|
||||
background-color: #4ea6ff;
|
||||
"
|
||||
:loading="loading"
|
||||
@click="handleSave"
|
||||
>
|
||||
保存
|
||||
@@ -132,6 +133,7 @@ export default {
|
||||
|
||||
allFormsData: [],
|
||||
valueMore: "",
|
||||
loading:false
|
||||
});
|
||||
|
||||
// 详情
|
||||
@@ -483,6 +485,7 @@ export default {
|
||||
if (!checkVal(filterData)) {
|
||||
return false;
|
||||
}
|
||||
state.loading = true
|
||||
|
||||
if (state.assessmentId) {
|
||||
resultPost = {
|
||||
@@ -496,6 +499,7 @@ export default {
|
||||
"assessmentMinScore",
|
||||
]);
|
||||
editResearchMessage(resultPost).then((res) => {
|
||||
state.loading = false
|
||||
if (res.data.code === 200) {
|
||||
message.success("编辑成功");
|
||||
router.push({
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
:options="projectStateList"
|
||||
@change="handleProjectState"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
</div>
|
||||
<div class="select">
|
||||
|
||||
Reference in New Issue
Block a user