feat:合并

This commit is contained in:
lixg
2023-01-28 16:46:37 +08:00
56 changed files with 646 additions and 643 deletions

5
.env
View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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);
});

View File

@@ -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'

View File

@@ -59,7 +59,6 @@
:options="projectNameList2"
@change="selectProjectName2"
allowClear
showSearch
></a-select>
</div>
</div>

View File

@@ -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;

View File

@@ -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>

View File

@@ -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,

View File

@@ -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;

View File

@@ -23,7 +23,6 @@
style="width: 264px; border-radius: 8px"
:options="stugroupList"
allowClear
showSearch
@change="handleChange"
/>
</div>

View File

@@ -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;
}
}
}

View File

@@ -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}上传失败`);

View File

@@ -36,7 +36,6 @@
:options="projectNameList"
@change="selectProjectName"
allowClear
showSearch
></a-select>
</div>
</div>

View File

@@ -61,7 +61,6 @@
:options="projectNameList2"
@change="selectProjectName2"
allowClear
showSearch
></a-select>
</div>
</div>

View File

@@ -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;

View File

@@ -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>

View File

@@ -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;
}
}
}

View File

@@ -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;
// }

View File

@@ -37,7 +37,6 @@
:options="projectNameList"
@change="selectProjectName"
allowClear
showSearch
></a-select>
</div>
</div>

View File

@@ -37,7 +37,6 @@
:options="projectNameList"
@change="selectProjectName"
allowClear
showSearch
></a-select>
</div>
</div>

View File

@@ -37,7 +37,6 @@
:options="projectNameList"
@change="selectProjectName"
allowClear
showSearch
></a-select>
</div>
</div>

View File

@@ -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,

View File

@@ -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({

View File

@@ -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 {

View File

@@ -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({

View File

@@ -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){

View File

@@ -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=>{

View File

@@ -48,7 +48,6 @@
:options="projectNameList"
@change="selectProjectName"
allowClear
showSearch
></a-select>
</div>
</div>

View File

@@ -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,

View File

@@ -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({

View File

@@ -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 {

View File

@@ -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({

View File

@@ -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,

View File

@@ -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}`
);
}

View File

@@ -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
};
},
};

View File

@@ -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 {

View File

@@ -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"
>

View File

@@ -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

View File

@@ -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;

View File

@@ -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%;

View File

@@ -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;

View File

@@ -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>

View File

@@ -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%;

View File

@@ -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 = "";

View File

@@ -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>
),
},

View File

@@ -1005,7 +1005,6 @@
:options="level"
@change="handleChangeStage"
allowClear
showSearch
></a-select>
</div>
<div class="btn">

View File

@@ -717,7 +717,6 @@
:options="projectNameList4"
@change="selectProjectName4"
allowClear
showSearch
></a-select>
</div>
<div class="btn">

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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>
),
},

View File

@@ -1016,7 +1016,6 @@
:options="level"
@change="handleChangeStage"
allowClear
showSearch
></a-select>
</div>
<div class="btn">

View File

@@ -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);
}

View File

@@ -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({

View File

@@ -20,7 +20,6 @@
:options="projectStateList"
@change="handleProjectState"
allowClear
showSearch
></a-select>
</div>
<div class="select">