Merge branch 'master' of ssh://gitlab.dongwu-inc.com:10022/BOE/fe-manage

This commit is contained in:
岳佳鑫
2022-10-28 09:21:16 +08:00
9 changed files with 236 additions and 102 deletions

View File

@@ -8,7 +8,7 @@
>
<div class="drawerMain">
<div class="header">
<div class="headerTitle">活动考勤</div>
<div class="headerTitle">{{ title }}</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@@ -304,6 +304,10 @@ export default {
type: Boolean,
default: false,
},
title: {
type: String,
default: "",
},
},
setup(props, ctx) {

View File

@@ -152,7 +152,7 @@
<div class="content content2">
<span>完成必修/选修获得 </span><span class="scoretext">{{score1}} </span><span>积分</span>
</div>
<div class="content content3">
<div class="content">
<span>优秀学员可获得 </span><span class="scoretext">{{score2}}</span><span>积分</span>
</div>
</div>
@@ -163,7 +163,7 @@
<div class="content content2">
<span>完成必修/选修获得 </span><span ><a-input v-model:value="score1" :bordered="false" @change="getScore"/> </span><span>积分</span>
</div>
<div class="content content3">
<div class="content ">
<span>优秀学员可获得 </span><span ><a-input v-model:value="score2" :bordered="false" /></span><span>积分</span>
</div>
</div>
@@ -386,6 +386,9 @@ export default {
.contentscore {
margin-top: 20px;
margin-bottom: 100px;
.ant-tabs-nav-wrap{
border-bottom:1px solid #ededed;
}
.ant-tabs-tab-btn {
font-size: 18px;
font-weight: 700;

View File

@@ -1645,21 +1645,21 @@ const columns1 = [
},
{
title: "内容分类",
width: 100,
width: 130,
dataIndex: "content",
key: "1",
align: "center",
},
{
title: "课程形式",
width: 100,
width: 130,
dataIndex: "courseform",
key: "2",
align: "center",
},
{
title: " 所属项目",
width: 200,
width: 250,
dataIndex: "project",
key: "3",
align: "center",
@@ -1667,21 +1667,21 @@ const columns1 = [
},
{
title: "学习人数",
width: 110,
width: 130,
dataIndex: "stunum",
key: "4",
align: "center",
},
{
title: "评分",
width: 100,
width: 130,
dataIndex: "grade",
key: "5",
align: "center",
},
{
title: "状态",
width: 100,
width: 130,
dataIndex: "status",
key: "6",
align: "center",
@@ -2326,28 +2326,28 @@ export default defineComponent({
// options={state.projectNameList}
dropdownClassName="tabledropdown"
>
<a-select-option value="权限名单" label="权限名单">
<div
<a-select-option value="权限名单" label="权限名单"
style="padding-left:22px;"
onClick={() => {
state.corpowerlistvisible = true;
}}
>
}} >
<div>
权限名单
</div>
</a-select-option>
<a-select-option value="归属权" label="归属权">
<div
<a-select-option value="归属权" label="归属权"
style="padding-left:30px;"
onClick={() => {
state.ownpowervisible = true;
}}
>
}}>
<div>
归属权
</div>
</a-select-option>
<a-select-option value="查看权" label="查看权">
<a-select-option value="查看权" label="查看权" style="padding-left:30px;">
<div>查看权</div>
</a-select-option>
<a-select-option value="管理权" label="管理权">
<a-select-option value="管理权" label="管理权" style="padding-left:30px;">
<div>管理权</div>
</a-select-option>
</a-select>
@@ -2364,9 +2364,7 @@ export default defineComponent({
<a-select-option
value="二维码"
label="二维码"
style="padding-left:35px"
>
<div
style="padding-left:28px"
onClick={() => {
if (value.courseform === "线上") {
state.QR_hs = true;
@@ -2377,6 +2375,7 @@ export default defineComponent({
}
}}
>
<div>
二维码
</div>
</a-select-option>
@@ -2384,12 +2383,11 @@ export default defineComponent({
value="取消"
label="取消"
style="padding-left:35px"
>
<div
onClick={() => {
console.log("点击了");
}}
>
<div>
取消
</div>
</a-select-option>
@@ -2427,28 +2425,28 @@ export default defineComponent({
// options={state.projectNameList}
dropdownClassName="tabledropdown"
>
<a-select-option value="权限名单" label="权限名单">
<div
<a-select-option value="权限名单" label="权限名单"
style="padding-left:22px;"
onClick={() => {
state.corpowerlistvisible = true;
}}
>
}} >
<div>
权限名单
</div>
</a-select-option>
<a-select-option value="归属权" label="归属权">
<div
<a-select-option value="归属权" label="归属权"
style="padding-left:30px;"
onClick={() => {
state.ownpowervisible = true;
}}
>
}}>
<div>
归属权
</div>
</a-select-option>
<a-select-option value="查看权" label="查看权">
<a-select-option value="查看权" label="查看权" style="padding-left:30px;">
<div>查看权</div>
</a-select-option>
<a-select-option value="管理权" label="管理权">
<a-select-option value="管理权" label="管理权" style="padding-left:30px;">
<div>管理权</div>
</a-select-option>
</a-select>
@@ -2535,28 +2533,28 @@ export default defineComponent({
// options={state.projectNameList}
dropdownClassName="tabledropdown"
>
<a-select-option value="权限名单" label="权限名单">
<div
<a-select-option value="权限名单" label="权限名单"
style="padding-left:22px;"
onClick={() => {
state.corpowerlistvisible = true;
}}
>
}} >
<div>
权限名单
</div>
</a-select-option>
<a-select-option value="归属权" label="归属权">
<div
<a-select-option value="归属权" label="归属权"
style="padding-left:30px;"
onClick={() => {
state.ownpowervisible = true;
}}
>
}}>
<div>
归属权
</div>
</a-select-option>
<a-select-option value="查看权" label="查看权">
<a-select-option value="查看权" label="查看权" style="padding-left:30px;">
<div>查看权</div>
</a-select-option>
<a-select-option value="管理权" label="管理权">
<a-select-option value="管理权" label="管理权" style="padding-left:30px;">
<div>管理权</div>
</a-select-option>
</a-select>
@@ -2715,13 +2713,12 @@ export default defineComponent({
value="复制"
label="复制"
style="padding-left:35px"
>
<div
onClick={() => {
state.delete_hs = true;
state.copy_hs = true;
}}
>
<div>
复制
</div>
</a-select-option>
@@ -2729,27 +2726,25 @@ export default defineComponent({
value="删除"
label="删除"
style="padding-left:35px"
>
<div
onClick={() => {
state.delete_hs = true;
state.del_hs = true;
}}
>
<div>
删除
</div>
</a-select-option>
<a-select-option
value="QR"
label="QR"
style="padding-left:35px"
>
<div
style="padding-left:28px;"
onClick={() => {
state.QR_hs = true;
state.vipftQR_hs = true;
}}
>
<div>
二维码
</div>
</a-select-option>

View File

@@ -158,11 +158,11 @@
<div class="inname">归属组织</div>
<div class="in">
<a-input
v-model:value="valueE"
v-model:value="valuecom"
maxlength="20"
style="border-radius: 4px"
/>
<div class="showcount">{{ valueE.length }}/20</div>
<div class="showcount">{{ valuecom.length }}/20</div>
</div>
</div>
<div class="bac">
@@ -245,11 +245,11 @@
<div class="inname">路径图名称</div>
<div class="in">
<a-input
v-model:value="valueE"
v-model:value="valueE2"
maxlength="20"
style="border-radius: 4px"
/>
<div class="showcount">{{ valueE.length }}/20</div>
<div class="showcount">{{ valueE2.length }}/20</div>
</div>
</div>
<div class="name" style="margin-left: 27px">
@@ -262,11 +262,11 @@
<div class="inname">归属组织</div>
<div class="in">
<a-input
v-model:value="valueE"
v-model:value="valuecom2"
maxlength="20"
style="border-radius: 4px"
/>
<div class="showcount">{{ valueE.length }}/20</div>
<div class="showcount">{{ valuecom2.length }}/20</div>
</div>
</div>
<div class="bac">
@@ -282,7 +282,7 @@
<img class="im" src="../../assets/px.jpg" />
<img class="im" src="../../assets/px.jpg" /> -->
<div
@click="chooseImg(item.id)"
@click="chooseImg2(item.id)"
v-for="item in imgData"
:key="item.key"
style="
@@ -294,7 +294,7 @@
"
:style="{
border:
learnPathBg === item.id
learnPathBg2 === item.id
? '2px solid rgba(78, 166, 255, 1)'
: '2px solid rgba(78, 166, 255, 0)',
'background-image': 'url(' + item.source + ')',
@@ -307,8 +307,8 @@
<div class="info">
<div class="inname">路径说明</div>
<div class="in">
<a-textarea v-model:value="valuei" maxlength="150" />
<div class="showcount">{{ valuei.length }}/150</div>
<a-textarea v-model:value="valuei2" maxlength="150" />
<div class="showcount">{{ valuei2.length }}/150</div>
</div>
</div>
<div class="btn">
@@ -715,7 +715,8 @@ export default {
source: require("../../assets/images/leveladd/3.png"),
},
],
learnPathBg: null, //选择的路径图背景
learnPathBg: null, //创建路径选择的路径图背景
learnPathBg2: null, //编辑路径选择的路径图背景
pub: false, //发布弹窗
checked: false, //发布弹窗switch
checkedTeacher: false, //发布弹窗勾选
@@ -739,9 +740,13 @@ export default {
pageSize: 10,
value1: "",
value2: "",
valueE: "",
valueE: "", //创建路径的路径名称
valuecom: "", //创建路径归属组织
valueE2: "", //编辑路径的路径名称
valuecom2: "", //编辑路径归属组织
valueEE: "",
valuei: "",
valuei: "", //创建路径的路径说明
valuei2: "", //创建路径的路径说明
});
const tableDataFunc = () => {
const columns = [
@@ -872,6 +877,10 @@ export default {
console.log(id);
state.learnPathBg = id;
};
const chooseImg2 = (id) => {
console.log(id);
state.learnPathBg2 = id;
};
const showPub = () => {
state.pub = true;
};
@@ -1193,6 +1202,7 @@ export default {
showPower,
tableDataFunc,
chooseImg,
chooseImg2,
showQuery,
showManage,
};
@@ -1832,7 +1842,7 @@ export default {
}
.tableBox {
// margin: 20px 38px 30px;
margin: 20px 35px 0px 35px;
margin: 10px 35px 0px 35px;
th.h {
background-color: #eff4fc !important;

View File

@@ -399,7 +399,7 @@
<div
class="operation"
style="cursor: pointer"
@click="showAA"
@click="showAA(item.course, item.name)"
:style="{
display:
item.course === '直播' || item.course === '活动'
@@ -872,7 +872,10 @@
<!-- 面授学员抽屉 -->
<face-stu v-model:FSvisible="FSvisible" />
<!-- 活动考勤抽屉 -->
<active-attendance v-model:AAvisible="AAvisible" />
<active-attendance
v-model:AAvisible="AAvisible"
:title="showKaoqinText"
/>
<!-- 时间管理抽屉 -->
<time-manage v-model:Tvisible="visible" :title="showTimeText" />
<!-- 考试管理抽屉 -->
@@ -1120,6 +1123,8 @@ export default {
showTimeText: "",
//考试、测评页面传递参数
showTestText: "",
//直播、活动页面传递参数
showKaoqinText: "",
FSvisible: false, //面授学员
AAvisible: false, //活动/直播考勤
copyModal: false, //面授二维码弹窗
@@ -1396,15 +1401,17 @@ export default {
const showFS = () => {
state.FSvisible = true;
};
//活动考勤的抽屉
const showAA = () => {
//考勤的抽屉
const showAA = (course) => {
state.AAvisible = true;
state.showKaoqinText = "【" + course + "】" + "考勤";
console.log(state.showKaoqinText, 1111);
};
// 时间管理
const showTime = (course, name) => {
const showTime = (course) => {
console.log("点击管理");
state.visible = true;
state.showTimeText = "【" + course + "】" + name;
state.showTimeText = "【" + course + "】" + "管理";
// console.log("state.showTimeText", state.showTimeText);
};
//考试管理的抽屉

View File

@@ -17,7 +17,7 @@
> -->
<div
class="items"
:class=" isactive == index ? 'active' : '' "
:class=" isactive == index && isActive == true ? 'active' : '' "
@click="changebgc(index)"
v-for="( item , index ) in level"
:key="item.id"
@@ -803,9 +803,9 @@ export default {
value1: "",
value2: "",
selectedRowKeys: [],
isActive: false,
gqxy_hs: true,
isactive: -1,
isActive: false,
projectChecked: null, //项目单选框
});
const showDrawer = () => {
@@ -1507,6 +1507,7 @@ export default {
}
.active {
opacity: 1;
transition:all .5s;
}
}
}

View File

@@ -150,12 +150,13 @@
</div>
<div class="filebox">
<div>
<img class="fileimg" src="../../assets/images/projectadd/enclosure.png" />
<a-upload v-model:file-list="fileList1" name="file" action="/api/file/upload" :headers="headers"
@change="handleChange1">
<img v-if="fileList1.length < 6" class="fileimg" src="../../assets/images/projectadd/enclosure.png" />
<a-upload :disabled="fileList1.length > 5" :before-upload="beforeUpload1" v-model:file-list="fileList1"
name="file" action="/api/file/upload" :headers="headers" @change="handleChange1">
<!-- <a-button> -->
<!-- <upload-outlined></upload-outlined> -->
<span class="filetext">上传附件</span>
<span v-if="fileList1.length > 5" class="filetext">上传数量已经达到最大值</span>
<span v-else class="filetext">上传附件</span>
<!-- </a-button> -->
</a-upload>
</div>
@@ -243,14 +244,20 @@ export default {
}
};
let uplodaFileCount = false;
const handleChange1 = (info) => {
if (info.file.status === 'uploading') {
loading.value = true;
return;
}
if (info.file.status === 'done') {
console.log('上传附件返回的信息 %o', info)
console.log('上传附件返回的信息 %o', info, info.fileList.length, uplodaFileCount)
if (info.fileList.length > 5) {
uplodaFileCount = true;
} else {
uplodaFileCount = false;
}
}
if (info.file.status === 'error') {
loading.value = false;
@@ -270,6 +277,16 @@ export default {
return isJpgOrPng && isLt2M;
};
const beforeUpload1 = () => {
return new Promise((resovle, reject) => {
if (uplodaFileCount) {
message.info("上传文件数量已达最大数量")
return reject(false);
}
return resovle(true);
})
};
const onRangeChange = (value, dateString) => {
console.log('Selected Time: ', value);
// 项目时间选择函数
@@ -344,7 +361,7 @@ export default {
console.log(obj[i])
if (obj[i] === "") {
message.destroy()
message.info(errorMsgs[i])
message.warning(errorMsgs[i])
return
}
}
@@ -368,11 +385,13 @@ export default {
handleChange,
handleChange1,
beforeUpload,
beforeUpload1,
onRangeChange,
classifyList1,
remark,
changeChecked,
changeChecked1,
uplodaFileCount,
createProject
};
}

View File

@@ -15,7 +15,7 @@
<div class="btnText">添加阶段</div>
</div>
<div class="maincon" style="background-color: #fff">
<div class="item" v-for="item in level" :key="item.id">
<div class="item" :class="isactive == index && isActive == true ? 'bgcactive' : '' " v-for="(item , index ) in level" @click="changebgc(index)" :key="item.id">
<div class="itemle">
<div class="tit">{{ item.tit }}</div>
<div class="name">{{ item.name }}</div>
@@ -840,6 +840,8 @@ export default {
cC: false,
cancelModal: false, //确认取消阶段弹窗
deleteModal: false, //确认删除弹窗
isactive: -1,
isActive:false,
});
const selectProjectName = (value, index) => {
console.log("value", value, index);
@@ -1061,6 +1063,10 @@ export default {
const closeDelete = () => {
state.deleteModal = false;
};
const changebgc = (index) => {
state.isactive = index;
state.isActive = !state.isActive;
}
return {
...toRefs(state),
selectProjectName,
@@ -1090,6 +1096,7 @@ export default {
closeCancel,
showDelete,
closeDelete,
changebgc,
};
},
};
@@ -1520,6 +1527,10 @@ export default {
right: 16px;
}
}
.bgcactive{
opacity:1;
transition:all .5s;
}
}
}
}

View File

@@ -353,7 +353,7 @@
<div
class="operation"
style="cursor: pointer"
@click="showAA"
@click="showAA(item.course)"
:style="{
display:
item.course === '直播' || item.course === '活动'
@@ -377,6 +377,10 @@
@click="
item.course === '面授'
? showCopyModal(item.course)
: item.course === '直播'
? showzhibModal(item.course)
: item.course === '活动'
? showhuodModal(item.course)
: null
"
>
@@ -411,7 +415,8 @@
</a-collapse-panel>
</a-collapse>
<!-- 无数据创建任务 -->
<router-link to="/taskadd"
<router-link
to="/taskadd"
class="taskbox"
style="
background: linear-gradient(180deg, #ddeaff, #f0f8fe);
@@ -553,7 +558,7 @@
onChange: onSelectChange,
}"
/>
<div class="nostu" style="display:block;">
<div class="nostu" style="display: block">
<div class="nostuimg"></div>
</div>
<div class="pa">
@@ -1029,7 +1034,7 @@
<!-- 面授学员抽屉 -->
<face-stu v-model:FSvisible="FSvisible" />
<!-- 活动考勤抽屉 -->
<active-attendance v-model:AAvisible="AAvisible" />
<active-attendance v-model:AAvisible="AAvisible" :title="showkaoqinText" />
<!-- 作业管理抽屉 -->
<work-manage v-model:Wvisible="Wvisible" />
<!-- 考试管理抽屉 -->
@@ -1572,6 +1577,62 @@
</div>
</div>
</a-modal>
<!-- 直播管理二维码 -->
<a-modal
v-model:visible="zhibModal"
:footer="null"
:closable="closeCopy"
wrapClassName="facemanageModal"
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="closezhibModal"></div>
</div>
<div class="body">
<div><img src="../../assets/images/taskpage/erweima.png" /></div>
</div>
<div class="footerr">
<div class="onload">下载二维码</div>
<div class="onloadpx">200*200</div>
<div class="onloadpx">400*400</div>
<div class="onloadpx">800*800</div>
</div>
</div>
</div>
</a-modal>
<!-- 活动管理二维码 -->
<a-modal
v-model:visible="huodModal"
:footer="null"
:closable="closeCopy"
wrapClassName="facemanageModal"
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="closehuodModal"></div>
</div>
<div class="body">
<div><img src="../../assets/images/taskpage/erweima.png" /></div>
</div>
<div class="footerr">
<div class="onload">下载二维码</div>
<div class="onloadpx">200*200</div>
<div class="onloadpx">400*400</div>
<div class="onloadpx">800*800</div>
</div>
</div>
</div>
</a-modal>
</div>
</template>
<script>
@@ -1710,6 +1771,10 @@ export default {
delete_hs: false, //删除弹窗
copyModal: false, //面授二维码弹窗
closeCopy: false, //面授二维码关闭图标
zhibModal: false, //直播二维码弹窗
huodModal: false, //活动二维码弹窗
pubproject: false,
stugroup: false,
canclestu: false,
@@ -2188,6 +2253,8 @@ export default {
showTimeText: "",
//考试、测评页面传递参数
showTestText: "",
//直播、活动页面传递参数
showkaoqinText: "",
});
//学员学员管理渲染
@@ -2310,10 +2377,10 @@ export default {
state.TaskFaceImpStuvisible = true;
};
//新增
const showTime = (course, name) => {
const showTime = (course) => {
console.log("点击管理");
state.visible = true;
state.showTimeText = "【" + course + "】" + name;
state.showTimeText = "【" + course + "】" + "管理";
// console.log("state.showTimeText", state.showTimeText);
};
//新增
@@ -2336,8 +2403,9 @@ export default {
state.Lvisible = true;
};
//活动考勤的抽屉
const showAA = () => {
const showAA = (course) => {
state.AAvisible = true;
state.showkaoqinText = "【" + course + "】" + "考勤";
};
//作业管理的抽屉
const showWork = () => {
@@ -2384,6 +2452,18 @@ export default {
state.radioV2 = "";
}
};
const showzhibModal = () => {
state.zhibModal = true;
};
const showhuodModal = () => {
state.huodModal = true;
};
const closezhibModal = () => {
state.zhibModal = false;
};
const closehuodModal = () => {
state.huodModal = false;
};
//学员管理列表操作
const studentData = () => {
@@ -2603,6 +2683,10 @@ export default {
cloradio2,
studentColumns,
delete_exit,
showzhibModal,
showhuodModal,
closehuodModal,
closezhibModal,
};
},
};
@@ -3414,7 +3498,7 @@ export default {
right: 38px;
top: 0;
color: #409eff;
background: #FFFFFF;
background: #ffffff;
width: 100px;
height: 40px;
border: 1px solid #409eff;
@@ -3964,12 +4048,12 @@ export default {
> td {
background: rgba(250, 250, 250, 1);
}
.nostu{
.nostu {
width: 100%;
.nostuimg{
margin:75px auto;
.nostuimg {
margin: 75px auto;
width: 412px;
height:212px;
height: 212px;
background-image: url(@/assets/images/taskpage/nostu.png);
background-size: 100% 100%;
}