mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-09 02:46:45 +08:00
feat:修改面授等
This commit is contained in:
2
.env
2
.env
@@ -33,4 +33,4 @@ VITE_BOE_CASS_DETAIL_URL=//u-pre.boe.com/pc/case/detail?id=
|
|||||||
#考试
|
#考试
|
||||||
VITE_BOE_EXAM_DETAIL_URL=//u-pre.boe.com/pc/exam/test?id=
|
VITE_BOE_EXAM_DETAIL_URL=//u-pre.boe.com/pc/exam/test?id=
|
||||||
#h5的基本url
|
#h5的基本url
|
||||||
VUE_APP_H5=//u-pre.boe.com/mobile/student-h5
|
VUE_APP_H5=//u-pre.boe.com/student-h5
|
||||||
|
|||||||
@@ -1,32 +1,46 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-drawer :visible="AAvisible" class="largeDrawerStyle" placement="right" width="80%"
|
<a-drawer
|
||||||
@after-visible-change="afterVisibleChange">
|
:visible="AAvisible"
|
||||||
|
class="largeDrawerStyle"
|
||||||
|
placement="right"
|
||||||
|
width="80%"
|
||||||
|
@after-visible-change="afterVisibleChange"
|
||||||
|
>
|
||||||
<div class="drawerMain">
|
<div class="drawerMain">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="headerTitle">【{{ datasource.type == 6 ? "直播" : "活动" }}】考勤</div>
|
<div class="headerTitle">
|
||||||
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
|
【{{ datasource.type == 6 ? "直播" : "活动" }}】考勤
|
||||||
@click="closeDrawer" />
|
</div>
|
||||||
|
<img
|
||||||
|
style="width: 29px; height: 29px; cursor: pointer"
|
||||||
|
src="../../assets/images/basicinfo/close.png"
|
||||||
|
@click="closeDrawer"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="centermain">
|
<div class="centermain">
|
||||||
<div class="titl">
|
<div class="titl">
|
||||||
<div class="endtime">
|
<div class="endtime">
|
||||||
起止时间:{{
|
起止时间:{{ datasource.startTime ? datasource.startTime : "-" }}
|
||||||
datasource.startTime ? datasource.startTime : "-"
|
|
||||||
}}
|
|
||||||
~
|
~
|
||||||
{{ datasource.endTime ? datasource.endTime : "-" }}
|
{{ datasource.endTime ? datasource.endTime : "-" }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="endtime" style="margin-left: 64px">签到时间:{{ beginTime }} ~ {{ endTime }}</div>
|
<div class="endtime" style="margin-left: 64px">
|
||||||
<!--<div class="endtime" style="margin-left: 40px">签退时间:{{ endTime }}</div>-->
|
签到时间:{{ beginTime }} ~ {{ endTime }}
|
||||||
|
</div>
|
||||||
|
<!--<div class="endtime" style="margin-left: 40px">签退时间:{{ endTime }}</div>-->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="search">
|
<div class="search">
|
||||||
<div class="leftchoose">
|
<div class="leftchoose">
|
||||||
<div class="namecon" style="margin-right: 30px">
|
<div class="namecon" style="margin-right: 30px">
|
||||||
<div class="name">姓名:</div>
|
<div class="name">姓名:</div>
|
||||||
<a-input v-model:value="name" style="width: 270px; height: 40px; border-radius: 8px" placeholder="请输入姓名"
|
<a-input
|
||||||
maxlength="20" />
|
v-model:value="name"
|
||||||
|
style="width: 270px; height: 40px; border-radius: 8px"
|
||||||
|
placeholder="请输入姓名"
|
||||||
|
maxlength="20"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="namecon" style="margin-right: 30px">
|
<!-- <div class="namecon" style="margin-right: 30px">
|
||||||
<div class="name">考勤:</div>
|
<div class="name">考勤:</div>
|
||||||
@@ -45,14 +59,24 @@
|
|||||||
<div class="namecon">
|
<div class="namecon">
|
||||||
<div class="name">签到状态:</div>
|
<div class="name">签到状态:</div>
|
||||||
<div class="select">
|
<div class="select">
|
||||||
<a-select v-model:value="projectName2" style="width: 160px" placeholder="请选择" :options="projectNameList2"
|
<a-select
|
||||||
@change="selectProjectName2" allowClear></a-select>
|
v-model:value="projectName2"
|
||||||
|
style="width: 160px"
|
||||||
|
placeholder="请选择"
|
||||||
|
:options="projectNameList2"
|
||||||
|
@change="selectProjectName2"
|
||||||
|
allowClear
|
||||||
|
></a-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="btns">
|
<div class="btns">
|
||||||
<div class="btn btn1" style="margin-right: 20px" @click="searchTaskList">
|
<div
|
||||||
|
class="btn btn1"
|
||||||
|
style="margin-right: 20px"
|
||||||
|
@click="searchTaskList"
|
||||||
|
>
|
||||||
<div class="img1"></div>
|
<div class="img1"></div>
|
||||||
<div class="wz">搜索</div>
|
<div class="wz">搜索</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -89,11 +113,18 @@
|
|||||||
</div> -->
|
</div> -->
|
||||||
|
|
||||||
<div class="tableBox" style="margin-top: 30px">
|
<div class="tableBox" style="margin-top: 30px">
|
||||||
<a-table style="border: 1px solid #f2f6fe" :columns="tableDataFunc()" :data-source="tableData"
|
<a-table
|
||||||
:loading="tableDataTotalLoading" :scroll="{ x: 1300 }" :pagination="false" :row-selection="{
|
style="border: 1px solid #f2f6fe"
|
||||||
|
:columns="tableDataFunc()"
|
||||||
|
:data-source="tableData"
|
||||||
|
:loading="tableDataTotalLoading"
|
||||||
|
:scroll="{ x: 1300 }"
|
||||||
|
:pagination="false"
|
||||||
|
:row-selection="{
|
||||||
selectedRowKeys: selectedRowKeys,
|
selectedRowKeys: selectedRowKeys,
|
||||||
onChange: onSelectChange,
|
onChange: onSelectChange,
|
||||||
}" />
|
}"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnn">
|
<div class="btnn">
|
||||||
@@ -103,7 +134,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
<!-- 批量签到弹窗 -->
|
<!-- 批量签到弹窗 -->
|
||||||
<a-modal v-model:visible="qdModal" :footer="null" :closable="closeCopy" wrapClassName="CopyModal" centered="true">
|
<a-modal
|
||||||
|
v-model:visible="qdModal"
|
||||||
|
:footer="null"
|
||||||
|
:closable="closeCopy"
|
||||||
|
wrapClassName="CopyModal"
|
||||||
|
centered="true"
|
||||||
|
>
|
||||||
<div class="delete">
|
<div class="delete">
|
||||||
<div class="del_header"></div>
|
<div class="del_header"></div>
|
||||||
<div class="del_main">
|
<div class="del_main">
|
||||||
@@ -128,7 +165,13 @@
|
|||||||
</a-modal>
|
</a-modal>
|
||||||
|
|
||||||
<!-- 单独签到弹窗 -->
|
<!-- 单独签到弹窗 -->
|
||||||
<a-modal v-model:visible="singleqdModal" :footer="null" :closable="closeCopy" wrapClassName="CopyModal" centered="true">
|
<a-modal
|
||||||
|
v-model:visible="singleqdModal"
|
||||||
|
:footer="null"
|
||||||
|
:closable="closeCopy"
|
||||||
|
wrapClassName="CopyModal"
|
||||||
|
centered="true"
|
||||||
|
>
|
||||||
<div class="delete">
|
<div class="delete">
|
||||||
<div class="del_header"></div>
|
<div class="del_header"></div>
|
||||||
<div class="del_main">
|
<div class="del_main">
|
||||||
@@ -152,7 +195,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
<!-- 单独签退弹窗 -->
|
<!-- 单独签退弹窗 -->
|
||||||
<a-modal v-model:visible="singleqtModal" :footer="null" :closable="closeCopy" wrapClassName="CopyModal" centered="true">
|
<a-modal
|
||||||
|
v-model:visible="singleqtModal"
|
||||||
|
:footer="null"
|
||||||
|
:closable="closeCopy"
|
||||||
|
wrapClassName="CopyModal"
|
||||||
|
centered="true"
|
||||||
|
>
|
||||||
<div class="delete">
|
<div class="delete">
|
||||||
<div class="del_header"></div>
|
<div class="del_header"></div>
|
||||||
<div class="del_main">
|
<div class="del_main">
|
||||||
@@ -176,7 +225,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
<!-- 单独请假弹窗 -->
|
<!-- 单独请假弹窗 -->
|
||||||
<a-modal v-model:visible="singleqjModal" :footer="null" :closable="closeCopy" wrapClassName="CopyModal" centered="true">
|
<a-modal
|
||||||
|
v-model:visible="singleqjModal"
|
||||||
|
:footer="null"
|
||||||
|
:closable="closeCopy"
|
||||||
|
wrapClassName="CopyModal"
|
||||||
|
centered="true"
|
||||||
|
>
|
||||||
<div class="delete">
|
<div class="delete">
|
||||||
<div class="del_header"></div>
|
<div class="del_header"></div>
|
||||||
<div class="del_main">
|
<div class="del_main">
|
||||||
@@ -203,8 +258,12 @@
|
|||||||
<SignQR v-model:signQRvisible="signQRvisible" />
|
<SignQR v-model:signQRvisible="signQRvisible" />
|
||||||
|
|
||||||
<!-- 二维码弹窗 -->
|
<!-- 二维码弹窗 -->
|
||||||
<two-dimensional-code v-model:codevisible="codevisible" :codeInfo="codeInfo" :index="codeIndex"
|
<two-dimensional-code
|
||||||
:type="codeType == 1 ? '课程二维码' : codeType == 2 ? '签到二维码' : ''" />
|
v-model:codevisible="codevisible"
|
||||||
|
:codeInfo="codeInfo"
|
||||||
|
:index="codeIndex"
|
||||||
|
:type="codeType == 1 ? '课程二维码' : codeType == 2 ? '签到二维码' : ''"
|
||||||
|
/>
|
||||||
<!-- 二维码弹窗 -->
|
<!-- 二维码弹窗 -->
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -219,7 +278,7 @@ export default {
|
|||||||
name: "ActiveAttendance",
|
name: "ActiveAttendance",
|
||||||
components: {
|
components: {
|
||||||
SignQR,
|
SignQR,
|
||||||
TwoDimensionalCode
|
TwoDimensionalCode,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
AAvisible: {
|
AAvisible: {
|
||||||
@@ -239,7 +298,7 @@ export default {
|
|||||||
types: {
|
types: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: null,
|
default: null,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
setup(props, ctx) {
|
setup(props, ctx) {
|
||||||
@@ -267,7 +326,7 @@ export default {
|
|||||||
id: 2,
|
id: 2,
|
||||||
value: "2",
|
value: "2",
|
||||||
label: "请假",
|
label: "请假",
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
projectNameList2: [
|
projectNameList2: [
|
||||||
{
|
{
|
||||||
@@ -279,7 +338,7 @@ export default {
|
|||||||
id: 2,
|
id: 2,
|
||||||
value: "2",
|
value: "2",
|
||||||
label: "异常",
|
label: "异常",
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
selectedRowKeys: [],
|
selectedRowKeys: [],
|
||||||
tableData: [
|
tableData: [
|
||||||
@@ -295,7 +354,7 @@ export default {
|
|||||||
signIn: false, //签到
|
signIn: false, //签到
|
||||||
signOut: false, //签退
|
signOut: false, //签退
|
||||||
leave: false, //请假
|
leave: false, //请假
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
options: [
|
options: [
|
||||||
{
|
{
|
||||||
@@ -393,9 +452,12 @@ export default {
|
|||||||
|
|
||||||
const getTableData = () => {
|
const getTableData = () => {
|
||||||
// debugger
|
// debugger
|
||||||
console.log('当前是项目还是路径图 1 项目 2 路径图', props)
|
console.log("当前是项目还是路径图 1 项目 2 路径图", props);
|
||||||
console.log('当前是项目还是路径图 1 项目 2 路径图', props.types)
|
console.log("当前是项目还是路径图 1 项目 2 路径图", props.types);
|
||||||
if (props.datasource.type == 6 && props.types == 2 || props.datasource.type == 9 && props.types == 2) {
|
if (
|
||||||
|
(props.datasource.type == 6 && props.types == 2) ||
|
||||||
|
(props.datasource.type == 9 && props.types == 2)
|
||||||
|
) {
|
||||||
// 此处为获取评估学员的接口 - 如后续还有用到此接口的公共任务可直接在if里面加||判断即可
|
// 此处为获取评估学员的接口 - 如后续还有用到此接口的公共任务可直接在if里面加||判断即可
|
||||||
console.log("我是传递的查询参数", {
|
console.log("我是传递的查询参数", {
|
||||||
pageNo: state.currentPage,
|
pageNo: state.currentPage,
|
||||||
@@ -414,7 +476,7 @@ export default {
|
|||||||
pageNo: state.currentPage,
|
pageNo: state.currentPage,
|
||||||
pageSize: state.pageSize,
|
pageSize: state.pageSize,
|
||||||
currentStageId: props.datasource.chapterId,
|
currentStageId: props.datasource.chapterId,
|
||||||
type: 2, // 1项目 2 路径
|
type: 2, // 1项目 2 路径
|
||||||
pid: props.datasource.routerId,
|
pid: props.datasource.routerId,
|
||||||
taskId: props.datasource.id,
|
taskId: props.datasource.id,
|
||||||
taskType: props.datasource.type,
|
taskType: props.datasource.type,
|
||||||
@@ -425,10 +487,11 @@ export default {
|
|||||||
.then((res) => {
|
.then((res) => {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
if (res.status == 200) {
|
if (res.status == 200) {
|
||||||
let keyarr = []
|
let keyarr = [];
|
||||||
for (let i = 0; i < res.data.data.records.length; i++) {
|
for (let i = 0; i < res.data.data.records.length; i++) {
|
||||||
res.data.data.records[i].key = res.data.data.records[i].studentId
|
res.data.data.records[i].key =
|
||||||
keyarr.push(res.data.data.records[i])
|
res.data.data.records[i].studentId;
|
||||||
|
keyarr.push(res.data.data.records[i]);
|
||||||
}
|
}
|
||||||
state.tableData = keyarr;
|
state.tableData = keyarr;
|
||||||
state.tableDataTotal = res.data.data.total;
|
state.tableDataTotal = res.data.data.total;
|
||||||
@@ -440,7 +503,10 @@ export default {
|
|||||||
state.tableDataTotalLoading = false;
|
state.tableDataTotalLoading = false;
|
||||||
state.tableData = [];
|
state.tableData = [];
|
||||||
});
|
});
|
||||||
} else if (props.datasource.type == 6 && props.types == 1 || props.datasource.type == 9 && props.types == 1) {
|
} else if (
|
||||||
|
(props.datasource.type == 6 && props.types == 1) ||
|
||||||
|
(props.datasource.type == 9 && props.types == 1)
|
||||||
|
) {
|
||||||
// 此处为获取评估学员的接口 - 如后续还有用到此接口的公共任务可直接在if里面加||判断即可
|
// 此处为获取评估学员的接口 - 如后续还有用到此接口的公共任务可直接在if里面加||判断即可
|
||||||
console.log("我是传递的查询参数", {
|
console.log("我是传递的查询参数", {
|
||||||
pageNo: state.currentPage,
|
pageNo: state.currentPage,
|
||||||
@@ -452,28 +518,29 @@ export default {
|
|||||||
taskType: props.datasource.type,
|
taskType: props.datasource.type,
|
||||||
status: state.projectName,
|
status: state.projectName,
|
||||||
studentName: state.name,
|
studentName: state.name,
|
||||||
signStatus: state.projectName2
|
signStatus: state.projectName2,
|
||||||
});
|
});
|
||||||
api
|
api
|
||||||
.AssessmentManagementMessage({
|
.AssessmentManagementMessage({
|
||||||
pageNo: state.currentPage,
|
pageNo: state.currentPage,
|
||||||
pageSize: state.pageSize,
|
pageSize: state.pageSize,
|
||||||
currentStageId: props.datasource.stageId,
|
currentStageId: props.datasource.stageId,
|
||||||
type: 1, // 1项目 2 路径
|
type: 1, // 1项目 2 路径
|
||||||
pid: props.datasource.projectId,
|
pid: props.datasource.projectId,
|
||||||
taskId: props.datasource.id,
|
taskId: props.datasource.id,
|
||||||
taskType: props.datasource.type,
|
taskType: props.datasource.type,
|
||||||
status: state.projectName,
|
status: state.projectName,
|
||||||
studentName: state.name,
|
studentName: state.name,
|
||||||
signStatus: state.projectName2
|
signStatus: state.projectName2,
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
if (res.status == 200) {
|
if (res.status == 200) {
|
||||||
let keyarr = []
|
let keyarr = [];
|
||||||
for (let i = 0; i < res.data.data.records.length; i++) {
|
for (let i = 0; i < res.data.data.records.length; i++) {
|
||||||
res.data.data.records[i].key = res.data.data.records[i].studentId
|
res.data.data.records[i].key =
|
||||||
keyarr.push(res.data.data.records[i])
|
res.data.data.records[i].studentId;
|
||||||
|
keyarr.push(res.data.data.records[i]);
|
||||||
}
|
}
|
||||||
state.tableData = keyarr;
|
state.tableData = keyarr;
|
||||||
state.tableDataTotal = res.data.data.total;
|
state.tableDataTotal = res.data.data.total;
|
||||||
@@ -538,7 +605,7 @@ export default {
|
|||||||
taskType: Number(props.datasource.type),
|
taskType: Number(props.datasource.type),
|
||||||
type: 1,
|
type: 1,
|
||||||
};
|
};
|
||||||
console.log(obj)
|
console.log(obj);
|
||||||
state.tableDataTotalLoading = true;
|
state.tableDataTotalLoading = true;
|
||||||
|
|
||||||
api
|
api
|
||||||
@@ -571,7 +638,10 @@ export default {
|
|||||||
customRender: (text) => {
|
customRender: (text) => {
|
||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
<span> {text.record.studentUserNo ? text.record.studentUserNo : "-"}</span>
|
<span>
|
||||||
|
{" "}
|
||||||
|
{text.record.studentUserNo ? text.record.studentUserNo : "-"}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -587,7 +657,10 @@ export default {
|
|||||||
customRender: (text) => {
|
customRender: (text) => {
|
||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
<span> {text.record.studentName ? text.record.studentName : "-"}</span>
|
<span>
|
||||||
|
{" "}
|
||||||
|
{text.record.studentName ? text.record.studentName : "-"}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -603,7 +676,12 @@ export default {
|
|||||||
customRender: (text) => {
|
customRender: (text) => {
|
||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
<span> {text.record.studentDepartName ? text.record.studentDepartName : "-"}</span>
|
<span>
|
||||||
|
{" "}
|
||||||
|
{text.record.studentDepartName
|
||||||
|
? text.record.studentDepartName
|
||||||
|
: "-"}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -619,7 +697,12 @@ export default {
|
|||||||
customRender: (text) => {
|
customRender: (text) => {
|
||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
<span> {text.record.studentJobName ? text.record.studentJobName : "-"}</span>
|
<span>
|
||||||
|
{" "}
|
||||||
|
{text.record.studentJobName
|
||||||
|
? text.record.studentJobName
|
||||||
|
: "-"}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -634,7 +717,10 @@ export default {
|
|||||||
customRender: (text) => {
|
customRender: (text) => {
|
||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
<span> {text.record.signTime ? text.record.signTime : "-"}</span>
|
<span>
|
||||||
|
{" "}
|
||||||
|
{text.record.signTime ? text.record.signTime : "-"}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -654,8 +740,8 @@ export default {
|
|||||||
{text.record.signStatus
|
{text.record.signStatus
|
||||||
? "签到"
|
? "签到"
|
||||||
: text.record.leaveStatus
|
: text.record.leaveStatus
|
||||||
? "请假"
|
? "请假"
|
||||||
: "-"}
|
: "-"}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
@@ -671,7 +757,18 @@ export default {
|
|||||||
customRender: (text) => {
|
customRender: (text) => {
|
||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
<span>{text.record.signStatus == null && new Date().getTime() > new Date(state.endTime).getTime() ? "异常" : text.record.signStatus ? "正常" : text.record.leaveStatus ? "异常" : text.record.signStatus == null ? "-" : "异常"}</span>
|
<span>
|
||||||
|
{text.record.signStatus == null &&
|
||||||
|
new Date().getTime() > new Date(state.endTime).getTime()
|
||||||
|
? "异常"
|
||||||
|
: text.record.signStatus
|
||||||
|
? "正常"
|
||||||
|
: text.record.leaveStatus
|
||||||
|
? "异常"
|
||||||
|
: text.record.signStatus == null
|
||||||
|
? "-"
|
||||||
|
: "异常"}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -685,15 +782,23 @@ export default {
|
|||||||
align: "center",
|
align: "center",
|
||||||
customRender: (value) => {
|
customRender: (value) => {
|
||||||
return (
|
return (
|
||||||
<div class="opa" style='display:flex;justify-content:center;align-items:center;'>
|
<div
|
||||||
|
class="opa"
|
||||||
|
style="display:flex;justify-content:center;align-items:center;"
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
{/* debugger */ }
|
{
|
||||||
|
/* debugger */
|
||||||
|
}
|
||||||
console.log("点击签到", value);
|
console.log("点击签到", value);
|
||||||
// 获取当前时间
|
// 获取当前时间
|
||||||
{/* showsingleqdModal(); */ }
|
{
|
||||||
{/* AttendanceSign */ }
|
/* showsingleqdModal(); */
|
||||||
|
}
|
||||||
|
{
|
||||||
|
/* AttendanceSign */
|
||||||
|
}
|
||||||
|
|
||||||
let obj1 = {
|
let obj1 = {
|
||||||
courseId: Number(props.datasource.courseId),
|
courseId: Number(props.datasource.courseId),
|
||||||
@@ -713,33 +818,42 @@ export default {
|
|||||||
type: 2,
|
type: 2,
|
||||||
};
|
};
|
||||||
// 1是项目 2路径图 3开课
|
// 1是项目 2路径图 3开课
|
||||||
console.log(obj1, obj2)
|
console.log(obj1, obj2);
|
||||||
state.tableDataTotalLoading = true;
|
state.tableDataTotalLoading = true;
|
||||||
api.AttendanceSign(props.types === '1' ? obj1 : obj2).then(res => {
|
api
|
||||||
console.log('res----签到是否成功', res)
|
.AttendanceSign(props.types === "1" ? obj1 : obj2)
|
||||||
message.destroy()
|
.then((res) => {
|
||||||
message.info('签到成功')
|
console.log("res----签到是否成功", res);
|
||||||
getTableData();
|
message.destroy();
|
||||||
}).catch(err => {
|
message.info("签到成功");
|
||||||
state.tableDataTotalLoading = false;
|
getTableData();
|
||||||
console.log(err)
|
})
|
||||||
})
|
.catch((err) => {
|
||||||
|
state.tableDataTotalLoading = false;
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
style="display:flex;justify-content:center;align-items:center;margin-right:12px;cursor:pointer;">
|
style="display:flex;justify-content:center;align-items:center;margin-right:12px;cursor:pointer;"
|
||||||
{value.record.signStatus ?
|
>
|
||||||
<div style='width:16px;height:16px;margin-right:6px;border-radius:16px;border:1px solid #ccc;display:flex;justify-content:center;align-items:center;'>
|
{value.record.signStatus ? (
|
||||||
<div style='width:8px;height:8px;border-radius:8px;background:#4ea6ff;'></div>
|
<div style="width:16px;height:16px;margin-right:6px;border-radius:16px;border:1px solid #ccc;display:flex;justify-content:center;align-items:center;">
|
||||||
</div> :
|
<div style="width:8px;height:8px;border-radius:8px;background:#4ea6ff;"></div>
|
||||||
<div style='width:16px;height:16px;margin-right:6px;border-radius:16px;border:1px solid #ccc;'></div>
|
</div>
|
||||||
}
|
) : (
|
||||||
|
<div style="width:16px;height:16px;margin-right:6px;border-radius:16px;border:1px solid #ccc;"></div>
|
||||||
|
)}
|
||||||
<div>签到</div>
|
<div>签到</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
console.log("点击请假", value);
|
console.log("点击请假", value);
|
||||||
{/* showsingleqjModal(); */ }
|
{
|
||||||
|
/* showsingleqjModal(); */
|
||||||
|
}
|
||||||
|
|
||||||
{/* AttendanceLeave */ }
|
{
|
||||||
|
/* AttendanceLeave */
|
||||||
|
}
|
||||||
let obj = {
|
let obj = {
|
||||||
courseId: Number(props.datasource.courseId),
|
courseId: Number(props.datasource.courseId),
|
||||||
routerId: Number(props.datasource.routerId),
|
routerId: Number(props.datasource.routerId),
|
||||||
@@ -756,30 +870,35 @@ export default {
|
|||||||
taskType: Number(props.datasource.type),
|
taskType: Number(props.datasource.type),
|
||||||
type: 2,
|
type: 2,
|
||||||
};
|
};
|
||||||
console.log(obj, obj2)
|
console.log(obj, obj2);
|
||||||
state.tableDataTotalLoading = true;
|
state.tableDataTotalLoading = true;
|
||||||
api.AttendanceLeave(props.types == 1 ? obj : obj2).then(res => {
|
api
|
||||||
console.log('res----请假是否成功', res)
|
.AttendanceLeave(props.types == 1 ? obj : obj2)
|
||||||
message.destroy()
|
.then((res) => {
|
||||||
message.info('请假成功')
|
console.log("res----请假是否成功", res);
|
||||||
getTableData();
|
message.destroy();
|
||||||
}).catch(err => {
|
message.info("请假成功");
|
||||||
state.tableDataTotalLoading = false;
|
getTableData();
|
||||||
console.log(err)
|
})
|
||||||
})
|
.catch((err) => {
|
||||||
|
state.tableDataTotalLoading = false;
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
style="display:flex;justify-content:center;align-items:center;cursor:pointer;">
|
style="display:flex;justify-content:center;align-items:center;cursor:pointer;"
|
||||||
{value.record.leaveStatus ?
|
>
|
||||||
<div style='width:16px;height:16px;margin-right:6px;border-radius:16px;border:1px solid #ccc;display:flex;justify-content:center;align-items:center;'>
|
{value.record.leaveStatus ? (
|
||||||
<div style='width:8px;height:8px;border-radius:8px;background:#4ea6ff;'></div>
|
<div style="width:16px;height:16px;margin-right:6px;border-radius:16px;border:1px solid #ccc;display:flex;justify-content:center;align-items:center;">
|
||||||
</div> :
|
<div style="width:8px;height:8px;border-radius:8px;background:#4ea6ff;"></div>
|
||||||
<div style='width:16px;height:16px;margin-right:6px;border-radius:16px;border:1px solid #ccc;'></div>
|
</div>
|
||||||
}
|
) : (
|
||||||
|
<div style="width:16px;height:16px;margin-right:6px;border-radius:16px;border:1px solid #ccc;"></div>
|
||||||
|
)}
|
||||||
<div>请假</div>
|
<div>请假</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
);
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
return columns;
|
return columns;
|
||||||
@@ -791,9 +910,9 @@ export default {
|
|||||||
};
|
};
|
||||||
const showqdModal = () => {
|
const showqdModal = () => {
|
||||||
if (state.selectedStudents.length == 0) {
|
if (state.selectedStudents.length == 0) {
|
||||||
message.destroy()
|
message.destroy();
|
||||||
message.error('请选择学员')
|
message.error("请选择学员");
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
state.qdModal = true;
|
state.qdModal = true;
|
||||||
};
|
};
|
||||||
@@ -820,14 +939,16 @@ export default {
|
|||||||
state.singleqjModal = false;
|
state.singleqjModal = false;
|
||||||
};
|
};
|
||||||
const signQR = () => {
|
const signQR = () => {
|
||||||
|
console.log("props.datasource", props.datasource);
|
||||||
state.codevisible = true;
|
state.codevisible = true;
|
||||||
state.codeInfo = {
|
state.codeInfo = {
|
||||||
title: "【签到】二维码",
|
title: "【签到】二维码",
|
||||||
name: props.datasource?.name,
|
name: props.datasource?.name,
|
||||||
url:
|
url:
|
||||||
process.env.VUE_APP_BASE_API +
|
process.env.VUE_APP_BASE_API +
|
||||||
`/admin/student/studentSign?taskId=${props.datasource.id
|
`/admin/student/studentSign?taskId=${props.datasource.id}&taskType=${
|
||||||
}&taskType=${props.datasource.type}&type=${2}`,
|
props.datasource.type
|
||||||
|
}&type=${2}`,
|
||||||
};
|
};
|
||||||
console.log("codeInfo", state.codeInfo);
|
console.log("codeInfo", state.codeInfo);
|
||||||
state.codeIndex = 0;
|
state.codeIndex = 0;
|
||||||
@@ -855,20 +976,21 @@ export default {
|
|||||||
|
|
||||||
// 导出数据
|
// 导出数据
|
||||||
function exportTaskStu() {
|
function exportTaskStu() {
|
||||||
{/* debugger */ }
|
{
|
||||||
console.log("props.datasource此处的taskId 应该是router_task 表中主键", props.datasource);
|
/* debugger */
|
||||||
|
}
|
||||||
|
console.log(
|
||||||
|
"props.datasource此处的taskId 应该是router_task 表中主键",
|
||||||
|
props.datasource
|
||||||
|
);
|
||||||
console.log("props.datasource", props.datasource);
|
console.log("props.datasource", props.datasource);
|
||||||
if (props.types == 2) {
|
if (props.types == 2) {
|
||||||
window.open(
|
window.open(
|
||||||
`${process.env.VUE_APP_BASE_API
|
`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.chapterId}&type=2&pid=${props.datasource.routerId}&thirdType=1&taskId=${props.datasource.id}&taskType=${props.datasource.type}`
|
||||||
}/admin/student/exportTaskStudent?currentStageId=${props.datasource.chapterId
|
|
||||||
}&type=2&pid=${props.datasource.routerId}&thirdType=1&taskId=${props.datasource.id}&taskType=${props.datasource.type}`
|
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
window.open(
|
window.open(
|
||||||
`${process.env.VUE_APP_BASE_API
|
`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.stageId}&type=1&pid=${props.datasource.projectId}&thirdType=1&taskId=${props.datasource.id}&taskType=${props.datasource.type}`
|
||||||
}/admin/student/exportTaskStudent?currentStageId=${props.datasource.stageId
|
|
||||||
}&type=1&pid=${props.datasource.projectId}&thirdType=1&taskId=${props.datasource.id}&taskType=${props.datasource.type}`
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -911,7 +1033,7 @@ export default {
|
|||||||
batchSign,
|
batchSign,
|
||||||
searchTaskList,
|
searchTaskList,
|
||||||
resetTaskList,
|
resetTaskList,
|
||||||
exportTaskStu
|
exportTaskStu,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -1157,7 +1279,7 @@ export default {
|
|||||||
padding: 0px !important;
|
padding: 0px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-table-thead>tr>th {
|
.ant-table-thead > tr > th {
|
||||||
background-color: rgba(239, 244, 252, 1);
|
background-color: rgba(239, 244, 252, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1165,7 +1287,11 @@ export default {
|
|||||||
background-color: #eff4fc !important;
|
background-color: #eff4fc !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td {
|
.ant-table-tbody
|
||||||
|
> tr:hover:not(.ant-table-expanded-row):not(
|
||||||
|
.ant-table-row-selected
|
||||||
|
)
|
||||||
|
> td {
|
||||||
background: #f6f9fd;
|
background: #f6f9fd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,11 +96,42 @@
|
|||||||
</a-drawer>
|
</a-drawer>
|
||||||
<a-button @click="openDrawer" type="link"><slot></slot></a-button>
|
<a-button @click="openDrawer" type="link"><slot></slot></a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 删除弹窗 -->
|
||||||
|
<a-modal
|
||||||
|
v-model:visible="deleteModalVisible"
|
||||||
|
:footer="null"
|
||||||
|
wrapClassName="deleteModal1"
|
||||||
|
centered="true"
|
||||||
|
>
|
||||||
|
<div class="delete">
|
||||||
|
<div class="del_header"></div>
|
||||||
|
<div class="del_main">
|
||||||
|
<div class="header">
|
||||||
|
<div class="icon"></div>
|
||||||
|
<span>提示</span>
|
||||||
|
<div class="close_exit" @click="closeSameModal"></div>
|
||||||
|
</div>
|
||||||
|
<div class="body">
|
||||||
|
<span>确定删除?</span>
|
||||||
|
<span style="margin-top: 20px">数据删除后不可恢复!</span>
|
||||||
|
</div>
|
||||||
|
<div class="del_btnbox">
|
||||||
|
<div class="del_btn btn1" @click="closeSameModal">
|
||||||
|
<div class="btnText">取消</div>
|
||||||
|
</div>
|
||||||
|
<div class="del_btn btn2" @click="sureSameModal">
|
||||||
|
<div class="btnText">确定</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a-modal>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {
|
import {
|
||||||
computed,
|
computed,
|
||||||
createVNode,
|
// createVNode,
|
||||||
defineProps,
|
defineProps,
|
||||||
defineExpose,
|
defineExpose,
|
||||||
ref,
|
ref,
|
||||||
@@ -109,8 +140,8 @@ import {
|
|||||||
import { usePage } from "@/api/request";
|
import { usePage } from "@/api/request";
|
||||||
import { STUDENT_LIST } from "@/api/apis";
|
import { STUDENT_LIST } from "@/api/apis";
|
||||||
import { delStudentList } from "@/api/index1";
|
import { delStudentList } from "@/api/index1";
|
||||||
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
// import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
||||||
import { Modal } from "ant-design-vue";
|
// import { Modal } from "ant-design-vue";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
type: Number,
|
type: Number,
|
||||||
@@ -220,23 +251,42 @@ function search() {
|
|||||||
searchParams.value.studentName = searchName.value;
|
searchParams.value.studentName = searchName.value;
|
||||||
searchParams.value.pageNo = 1;
|
searchParams.value.pageNo = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const deleteModalVisible = ref(false);
|
||||||
|
const deleteId = ref(null);
|
||||||
function del(id) {
|
function del(id) {
|
||||||
Modal.confirm({
|
deleteModalVisible.value = true;
|
||||||
title: () => "确定删除?",
|
deleteId.value = id;
|
||||||
icon: () => createVNode(ExclamationCircleOutlined),
|
// Modal.confirm({
|
||||||
content: () => "数据删除后不可恢复!",
|
// title: () => "确定删除?",
|
||||||
okText: () => "确定",
|
// icon: () => createVNode(ExclamationCircleOutlined),
|
||||||
okType: "danger",
|
// content: () => "数据删除后不可恢复!",
|
||||||
cancelText: () => "取消",
|
// okText: () => "确定",
|
||||||
onOk() {
|
// okType: "danger",
|
||||||
if (id) {
|
// cancelText: () => "取消",
|
||||||
loading.value = true;
|
// onOk() {
|
||||||
delStudentList({ ids: [id] }).then(() => searchStu());
|
// if (id) {
|
||||||
}
|
// loading.value = true;
|
||||||
},
|
// delStudentList({ ids: [id] }).then(() => searchStu());
|
||||||
});
|
// }
|
||||||
|
// },
|
||||||
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//确定删除
|
||||||
|
const sureSameModal = () => {
|
||||||
|
if (deleteId.value) {
|
||||||
|
loading.value = true;
|
||||||
|
delStudentList({ ids: [deleteId.value] }).then(() => searchStu());
|
||||||
|
deleteModalVisible.value = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//取消
|
||||||
|
const closeSameModal = () => {
|
||||||
|
deleteModalVisible.value = false;
|
||||||
|
deleteId.value = null;
|
||||||
|
};
|
||||||
|
|
||||||
const closeDrawer = () => {
|
const closeDrawer = () => {
|
||||||
visiable.value = false;
|
visiable.value = false;
|
||||||
};
|
};
|
||||||
@@ -511,4 +561,133 @@ defineExpose({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.deleteModal1 {
|
||||||
|
.ant-modal {
|
||||||
|
width: 424px !important;
|
||||||
|
height: 258px !important;
|
||||||
|
|
||||||
|
.ant-modal-content {
|
||||||
|
width: 424px !important;
|
||||||
|
height: 258px !important;
|
||||||
|
|
||||||
|
.ant-modal-body {
|
||||||
|
width: 424px !important;
|
||||||
|
height: 258px !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
|
||||||
|
.delete {
|
||||||
|
z-index: 999;
|
||||||
|
width: 424px;
|
||||||
|
height: 258px;
|
||||||
|
background: #ffffff;
|
||||||
|
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
// position: absolute;
|
||||||
|
// left: 50%;
|
||||||
|
// top: 10%;
|
||||||
|
// transform: translate(-50%, -50%);
|
||||||
|
.del_header {
|
||||||
|
position: absolute;
|
||||||
|
width: calc(100%);
|
||||||
|
height: 68px;
|
||||||
|
background: linear-gradient(
|
||||||
|
rgba(78, 166, 255, 0.2) 0%,
|
||||||
|
rgba(78, 166, 255, 0) 100%
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
.del_main {
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding-top: 20px;
|
||||||
|
padding-left: 26px;
|
||||||
|
font-size: 16px;
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
margin-right: 10px;
|
||||||
|
background-image: url(@/assets/images/taskpage/gan.png);
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close_exit {
|
||||||
|
position: absolute;
|
||||||
|
right: 42px;
|
||||||
|
cursor: pointer;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
background-image: url(@/assets/images/coursewareManage/close.png);
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.body {
|
||||||
|
width: 100%;
|
||||||
|
margin: 34px auto 56px auto;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
// background-color: red;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.back {
|
||||||
|
position: absolute;
|
||||||
|
top: 30px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.del_btnbox {
|
||||||
|
display: flex;
|
||||||
|
margin: 30px auto;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
.del_btn {
|
||||||
|
width: 100px;
|
||||||
|
height: 40px;
|
||||||
|
background: rgba(64, 158, 255, 0);
|
||||||
|
border-radius: 8px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
flex-shrink: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
.btnText {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn1 {
|
||||||
|
border: 1px solid rgba(64, 158, 255, 1);
|
||||||
|
color: #4ea6ff;
|
||||||
|
margin-right: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn2 {
|
||||||
|
background-color: #4ea6ff;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.ant-modal-close-x {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -355,11 +355,11 @@
|
|||||||
:courseType="type"
|
:courseType="type"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 有重复添加的项目时的弹窗 -->
|
<!-- 删除弹窗 -->
|
||||||
<a-modal
|
<a-modal
|
||||||
v-model:visible="deleteModalVisible"
|
v-model:visible="deleteModalVisible"
|
||||||
:footer="null"
|
:footer="null"
|
||||||
wrapClassName="deleteModal"
|
wrapClassName="deleteModal1"
|
||||||
centered="true"
|
centered="true"
|
||||||
>
|
>
|
||||||
<div class="delete">
|
<div class="delete">
|
||||||
@@ -372,7 +372,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<span>确定删除?</span>
|
<span>确定删除?</span>
|
||||||
<span>数据删除后不可恢复!</span>
|
<span style="margin-top: 20px">数据删除后不可恢复!</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btnbox">
|
<div class="del_btnbox">
|
||||||
<div class="del_btn btn1" @click="closeSameModal">
|
<div class="del_btn btn1" @click="closeSameModal">
|
||||||
@@ -718,6 +718,7 @@ const sureSameModal = () => {
|
|||||||
//取消
|
//取消
|
||||||
const closeSameModal = () => {
|
const closeSameModal = () => {
|
||||||
deleteModalVisible.value = false;
|
deleteModalVisible.value = false;
|
||||||
|
deleteId.value = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
function submitCall(flag) {
|
function submitCall(flag) {
|
||||||
@@ -1069,7 +1070,7 @@ defineExpose({ getStuList, startLoading });
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.deleteModal {
|
.deleteModal1 {
|
||||||
.ant-modal {
|
.ant-modal {
|
||||||
width: 424px !important;
|
width: 424px !important;
|
||||||
height: 258px !important;
|
height: 258px !important;
|
||||||
@@ -1193,6 +1194,9 @@ defineExpose({ getStuList, startLoading });
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.ant-modal-close-x {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*.delete {
|
/*.delete {
|
||||||
|
|||||||
@@ -330,10 +330,7 @@
|
|||||||
>提交审核
|
>提交审核
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button
|
<a-button
|
||||||
v-if="
|
v-if="record.auditStatus === 2 && checkPer(record.permissions)"
|
||||||
(record.auditStatus === 0 || record.auditStatus === -1) &&
|
|
||||||
checkPer(record.permissions)
|
|
||||||
"
|
|
||||||
@click="() => handleEdit(record, String(record.courseform))"
|
@click="() => handleEdit(record, String(record.courseform))"
|
||||||
type="link"
|
type="link"
|
||||||
>编辑
|
>编辑
|
||||||
@@ -366,7 +363,12 @@
|
|||||||
type="link"
|
type="link"
|
||||||
>管理
|
>管理
|
||||||
</a-button>
|
</a-button>
|
||||||
<DropDown v-if="checkPer(record.permissions) && checkOwner(record.permissions)" value="授权">
|
<DropDown
|
||||||
|
v-if="
|
||||||
|
checkPer(record.permissions) && checkOwner(record.permissions)
|
||||||
|
"
|
||||||
|
value="授权"
|
||||||
|
>
|
||||||
<OwnerTableModelStudent :types="[10, 11, 12]" :id="record.id"
|
<OwnerTableModelStudent :types="[10, 11, 12]" :id="record.id"
|
||||||
>权限名单</OwnerTableModelStudent
|
>权限名单</OwnerTableModelStudent
|
||||||
>
|
>
|
||||||
@@ -383,7 +385,7 @@
|
|||||||
>
|
>
|
||||||
<a-button
|
<a-button
|
||||||
v-if="
|
v-if="
|
||||||
(record.auditStatus === 3 || record.auditStatus === 2) &&
|
record.auditStatus === 3 &&
|
||||||
record.status &&
|
record.status &&
|
||||||
checkPer(record.permissions)
|
checkPer(record.permissions)
|
||||||
"
|
"
|
||||||
@@ -1731,7 +1733,7 @@ import FJUpload from "@/components/common/FJUpload";
|
|||||||
import { updateStudent } from "@/api/indexProjStu";
|
import { updateStudent } from "@/api/indexProjStu";
|
||||||
import { useStore } from "vuex";
|
import { useStore } from "vuex";
|
||||||
import DropDown from "@/components/common/DropDown";
|
import DropDown from "@/components/common/DropDown";
|
||||||
import { checkPer,checkOwner } from "@/utils/utils";
|
import { checkPer, checkOwner } from "@/utils/utils";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
//列表表格
|
//列表表格
|
||||||
|
|||||||
Reference in New Issue
Block a user