mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-15 13:56:45 +08:00
feat:增肌学习路径的增删改查
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import http from "./config";
|
||||
import qs from 'qs';
|
||||
// import qs from 'qs';
|
||||
|
||||
|
||||
/**
|
||||
@@ -37,39 +37,27 @@ import qs from 'qs';
|
||||
|
||||
// 接口-请求
|
||||
|
||||
// 根据投票ID获取题干信息
|
||||
export const getStemInfo = (stemId) => http.post('/vote/queryStemByStemId', qs.stringify({ stemId: stemId }));
|
||||
|
||||
// 测试方法
|
||||
// import * as api from '../../api/index'
|
||||
// api.getStemInfo(4).then(res => {
|
||||
// console.log(res)
|
||||
// }).catch(err => {
|
||||
// console.log(err)
|
||||
// })
|
||||
|
||||
// 获取字典列表
|
||||
export const getList = (pageno, pagesize) => http.post('/dict/getList', {
|
||||
"dictCode": "",
|
||||
"pageNo": pageno,
|
||||
"pageSize": pagesize
|
||||
// 创建编辑单层项目
|
||||
export const createProject = (obj) => http.post('/admin/project/edit', {
|
||||
"attach": obj.attach,
|
||||
"beginTime": obj.beginTime,
|
||||
"boeFlag": obj.boeFlag,
|
||||
"category": obj.category,
|
||||
"courseSyncFlag": obj.courseSyncFlag,
|
||||
"endTime": obj.endTime,
|
||||
"level": obj.level,
|
||||
"manager": obj.manager,
|
||||
"managerId": obj.managerId,
|
||||
"name": obj.name,
|
||||
"notice": obj.notice,
|
||||
"noticeFlag": obj.noticeFlag,
|
||||
"parentId": obj.parentId,
|
||||
"picUrl": obj.picUrl,
|
||||
"projectId": obj.projectId,
|
||||
"remark": obj.remark,
|
||||
"sourceBelongId": obj.sourceBelongId,
|
||||
"status": obj.status,
|
||||
"systemId": obj.systemId,
|
||||
"templateId": obj.templateId,
|
||||
"type": obj.type
|
||||
})
|
||||
|
||||
// 测试方法
|
||||
// import * as api from '../../api/index'
|
||||
// api.getList(0,0).then(res => {
|
||||
// console.log(res)
|
||||
// }).catch(err => {
|
||||
// console.log(err)
|
||||
// })
|
||||
|
||||
// 根据活动ID获取活动信息接口
|
||||
export const getActivityList = (activityId) => http.get('/activity', { params: { "activityId": activityId } })
|
||||
|
||||
// 测试方法
|
||||
// import * as api from '../../api/index'
|
||||
// api.getActivityList(4).then(res => {
|
||||
// console.log(res)
|
||||
// }).catch(err => {
|
||||
// console.log(err)
|
||||
// })
|
||||
@@ -45,6 +45,12 @@ export const createLearnPath = (obj) => http.post('/admin/router/edit', obj, {
|
||||
});
|
||||
// 获取学习路径图列表
|
||||
export const getLearnPath = (obj) => http.post('/admin/router/list', obj);
|
||||
//删除学习路径图
|
||||
export const deleteLearnPath = (obj) => http.post('/admin/router/handle', obj, {
|
||||
headers: {
|
||||
'token': '123'
|
||||
}
|
||||
});
|
||||
|
||||
//获取关卡
|
||||
export const getChapter = (obj) => http.post('/admin/router/detail', { params: obj });
|
||||
|
||||
168
src/api/method.js
Normal file
168
src/api/method.js
Normal file
@@ -0,0 +1,168 @@
|
||||
function formatNumber(n) {
|
||||
n = n.toString();
|
||||
return n[1] ? n : "0" + n;
|
||||
}
|
||||
function toDate(number, format) {
|
||||
var formateArr = ["Y", "M", "D", "h", "m", "s"];
|
||||
var returnArr = [];
|
||||
|
||||
if (number === 0) {
|
||||
return 0;
|
||||
} else {
|
||||
var date = new Date(number * 1000);
|
||||
}
|
||||
returnArr.push(date.getFullYear());
|
||||
returnArr.push(formatNumber(date.getMonth() + 1));
|
||||
returnArr.push(formatNumber(date.getDate()));
|
||||
|
||||
returnArr.push(formatNumber(date.getHours()));
|
||||
returnArr.push(formatNumber(date.getMinutes()));
|
||||
returnArr.push(formatNumber(date.getSeconds()));
|
||||
|
||||
for (var i in returnArr) {
|
||||
format = format.replace(formateArr[i], returnArr[i]);
|
||||
}
|
||||
return format;
|
||||
}
|
||||
function getWeek(date) {
|
||||
//date:'Y-M-D'
|
||||
let time = new Date(date).getDay()
|
||||
let week;
|
||||
if (time == 0) week = "星期日"
|
||||
if (time == 1) week = "星期一"
|
||||
if (time == 2) week = "星期二"
|
||||
if (time == 3) week = "星期三"
|
||||
if (time == 4) week = "星期四"
|
||||
if (time == 5) week = "星期五"
|
||||
if (time == 6) week = "星期六"
|
||||
return week;
|
||||
}
|
||||
|
||||
/************************************将数字搞成带逗号的那种*********************************************/
|
||||
function autoComma(number) {
|
||||
// let number = parseInt(numb)
|
||||
if (number) {
|
||||
let newNum = ""; //中间变量
|
||||
let arr = [];
|
||||
let arr1 = [];
|
||||
let num = ""; //最终结果
|
||||
let isDecimal = false; //是不是小数
|
||||
let decimal = 0; //小数点所在位置
|
||||
let decimalNum = ""; //小数点和以后的数据
|
||||
let negative = false; //是不是负数
|
||||
// 判断百万级别或者上亿级别
|
||||
let thousand = false;
|
||||
let Billion = false;
|
||||
|
||||
if (
|
||||
(number >= 10000 || number <= -10000) &&
|
||||
number < 100000000 &&
|
||||
number > -100000000
|
||||
) {
|
||||
thousand = true;
|
||||
number = number / 10000;
|
||||
}
|
||||
if (number >= 100000000 || number <= -100000000) {
|
||||
thousand = false;
|
||||
Billion = true;
|
||||
number = number / 100000000;
|
||||
}
|
||||
|
||||
if (number < 0) {
|
||||
number = Math.abs(number);
|
||||
negative = true;
|
||||
}
|
||||
let numStr = JSON.stringify(number);
|
||||
// 如果传入的是小数,逗号的添加位置和整数是有区别滴
|
||||
for (let i = 0; i < numStr.length; i++) {
|
||||
if (numStr[i] === ".") {
|
||||
isDecimal = true;
|
||||
decimal = i;
|
||||
decimalNum = numStr.slice(decimal, numStr.length);
|
||||
// 保留两位小数
|
||||
if (decimalNum.length > 2) {
|
||||
decimalNum = decimalNum.slice(0, 3);
|
||||
}
|
||||
numStr = numStr.slice(0, decimal);
|
||||
}
|
||||
}
|
||||
for (let i = 0; i < numStr.length; i++) {
|
||||
arr.push(numStr[numStr.length - i - 1]);
|
||||
}
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
if ((i + 1) % 3 === 0 && i + 1 !== 0 && i + 1 < arr.length) {
|
||||
newNum += arr[i];
|
||||
newNum = newNum + ",";
|
||||
} else {
|
||||
newNum += arr[i];
|
||||
}
|
||||
}
|
||||
for (let i = 0; i < newNum.length; i++) {
|
||||
arr1.push(newNum[newNum.length - i - 1]);
|
||||
}
|
||||
for (let i = 0; i < arr1.length; i++) {
|
||||
num += arr1[i];
|
||||
}
|
||||
if (isDecimal) {
|
||||
if (negative) {
|
||||
// num = '-' + num + decimalNum
|
||||
// return num
|
||||
if (thousand) {
|
||||
num = "-" + num + decimalNum + "万";
|
||||
return num;
|
||||
} else if (Billion) {
|
||||
num = "-" + num + decimalNum + "亿";
|
||||
return num;
|
||||
} else {
|
||||
num = "-" + num + decimalNum;
|
||||
return num;
|
||||
}
|
||||
} else {
|
||||
// num = num + decimalNum
|
||||
// return num
|
||||
if (thousand) {
|
||||
num = num + decimalNum + "万";
|
||||
return num;
|
||||
} else if (Billion) {
|
||||
num = num + decimalNum + "亿";
|
||||
return num;
|
||||
} else {
|
||||
num = num + decimalNum;
|
||||
return num;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (negative) {
|
||||
// num = '-' + num
|
||||
// return num
|
||||
if (thousand) {
|
||||
num = "-" + num + "万";
|
||||
return num;
|
||||
} else if (Billion) {
|
||||
num = "-" + num + "亿";
|
||||
return num;
|
||||
} else {
|
||||
num = "-" + num;
|
||||
return num;
|
||||
}
|
||||
} else {
|
||||
if (thousand) {
|
||||
num = num + "万";
|
||||
return num;
|
||||
} else if (Billion) {
|
||||
num = num + "亿";
|
||||
return num;
|
||||
} else {
|
||||
return num;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
export {
|
||||
toDate,
|
||||
getWeek,
|
||||
autoComma,
|
||||
}
|
||||
BIN
src/assets/images/leveladd/in.png
Normal file
BIN
src/assets/images/leveladd/in.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 429 B |
BIN
src/assets/images/leveladd/zip.png
Normal file
BIN
src/assets/images/leveladd/zip.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
BIN
src/assets/images/taskpage/nostu.png
Normal file
BIN
src/assets/images/taskpage/nostu.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
@@ -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"
|
||||
@@ -76,13 +76,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnss" style="margin-top: 20px">
|
||||
<div class="btn btn1" @click="showqdModal">
|
||||
<div class="btn btn2" @click="showqdModal">
|
||||
<div class="wz">批量签到</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="showqtModal">
|
||||
<div class="wz">批量签退</div>
|
||||
</div>
|
||||
<div class="btn btn2">
|
||||
<div class="btn btn1">
|
||||
<div class="img2"></div>
|
||||
<div class="wz">导出数据</div>
|
||||
</div>
|
||||
@@ -203,6 +203,96 @@
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
<!-- 单独签到弹窗 -->
|
||||
<a-modal
|
||||
v-model:visible="singleqdModal"
|
||||
:footer="null"
|
||||
:closable="closeCopy"
|
||||
wrapClassName="CopyModal"
|
||||
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="closesingleqdModal"></div>
|
||||
</div>
|
||||
<div class="body">
|
||||
<span>您确定要签到吗</span>
|
||||
</div>
|
||||
<div class="del_btnbox">
|
||||
<div class="del_btn btn1">
|
||||
<div class="btnText" @click="delete_exit">取消</div>
|
||||
</div>
|
||||
<div class="del_btn btn2">
|
||||
<div class="btnText" @click="delete_exit">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
<!-- 单独签退弹窗 -->
|
||||
<a-modal
|
||||
v-model:visible="singleqtModal"
|
||||
:footer="null"
|
||||
:closable="closeCopy"
|
||||
wrapClassName="CopyModal"
|
||||
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="closesingleqtModal"></div>
|
||||
</div>
|
||||
<div class="body">
|
||||
<span>您确定要签退吗</span>
|
||||
</div>
|
||||
<div class="del_btnbox">
|
||||
<div class="del_btn btn1">
|
||||
<div class="btnText" @click="delete_exit">取消</div>
|
||||
</div>
|
||||
<div class="del_btn btn2">
|
||||
<div class="btnText" @click="delete_exit">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
<!-- 单独请假弹窗 -->
|
||||
<a-modal
|
||||
v-model:visible="singleqjModal"
|
||||
:footer="null"
|
||||
:closable="closeCopy"
|
||||
wrapClassName="CopyModal"
|
||||
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="closesingleqjModal"></div>
|
||||
</div>
|
||||
<div class="body">
|
||||
<span>您确定要请假吗</span>
|
||||
</div>
|
||||
<div class="del_btnbox">
|
||||
<div class="del_btn btn1">
|
||||
<div class="btnText" @click="delete_exit">取消</div>
|
||||
</div>
|
||||
<div class="del_btn btn2">
|
||||
<div class="btnText" @click="delete_exit">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -214,6 +304,10 @@ export default {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
},
|
||||
|
||||
setup(props, ctx) {
|
||||
@@ -228,6 +322,9 @@ export default {
|
||||
selectedRowKeys: [],
|
||||
qtModal: false, //批量签退
|
||||
qdModal: false, //批量签到
|
||||
singleqjModal: false, //单独请假
|
||||
singleqdModal: false, //单独签到
|
||||
singleqtModal: false, //单独签退
|
||||
closeCopy: false,
|
||||
projectNameList: [
|
||||
{
|
||||
@@ -422,6 +519,7 @@ export default {
|
||||
checked={value.signIn}
|
||||
onChange={(e) => {
|
||||
console.log("点击签到", e);
|
||||
showsingleqdModal();
|
||||
}}
|
||||
>
|
||||
签到
|
||||
@@ -430,6 +528,7 @@ export default {
|
||||
checked={value.signOut}
|
||||
onChange={(e) => {
|
||||
console.log("点击签退", e);
|
||||
showsingleqtModal();
|
||||
}}
|
||||
>
|
||||
签退
|
||||
@@ -438,6 +537,7 @@ export default {
|
||||
checked={value.leave}
|
||||
onChange={(e) => {
|
||||
console.log("点击请假", e);
|
||||
showsingleqjModal();
|
||||
}}
|
||||
>
|
||||
请假
|
||||
@@ -549,6 +649,24 @@ export default {
|
||||
const closeqtModal = () => {
|
||||
state.qtModal = false;
|
||||
};
|
||||
const showsingleqdModal = () => {
|
||||
state.singleqdModal = true;
|
||||
};
|
||||
const showsingleqtModal = () => {
|
||||
state.singleqtModal = true;
|
||||
};
|
||||
const showsingleqjModal = () => {
|
||||
state.singleqjModal = true;
|
||||
};
|
||||
const closesingleqdModal = () => {
|
||||
state.singleqdModal = false;
|
||||
};
|
||||
const closesingleqtModal = () => {
|
||||
state.singleqtModal = false;
|
||||
};
|
||||
const closesingleqjModal = () => {
|
||||
state.singleqjModal = false;
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
selectProjectName,
|
||||
@@ -561,6 +679,12 @@ export default {
|
||||
showqtModal,
|
||||
closeqtModal,
|
||||
closeqdModal,
|
||||
showsingleqdModal,
|
||||
showsingleqtModal,
|
||||
showsingleqjModal,
|
||||
closesingleqdModal,
|
||||
closesingleqtModal,
|
||||
closesingleqjModal,
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -713,7 +837,7 @@ export default {
|
||||
.img2 {
|
||||
width: 17px;
|
||||
height: 16px;
|
||||
background-image: url(../../assets/images/coursewareManage/export.png);
|
||||
background-image: url(../../assets/images/coursewareManage/export1.png);
|
||||
background-size: 100% 100%;
|
||||
margin-right: 7px;
|
||||
}
|
||||
@@ -814,12 +938,9 @@ export default {
|
||||
> td {
|
||||
background: #f6f9fd;
|
||||
}
|
||||
.opa {
|
||||
// .opa {
|
||||
// background-color: #bfa;
|
||||
.ant-checkbox + span {
|
||||
margin-top: 5px;
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
// .tab {
|
||||
// .ant-table-thead > tr > th {
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
tableData1: [
|
||||
{
|
||||
key: "1",
|
||||
title: "基于BOE显示PNL工厂的工序平1111111111111111111122222333335555",
|
||||
title: "基于BOE显示PNL工厂的工序平1111112222222221111111111111122222333335555",
|
||||
name: "李玉冰",
|
||||
time: "2022-10-31 23:12:00",
|
||||
},
|
||||
@@ -216,6 +216,7 @@
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-shrink: 0;
|
||||
.headerTitle {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
@@ -322,7 +323,7 @@
|
||||
}
|
||||
.ant-table-selection-column {
|
||||
padding: 0px !important;
|
||||
padding-left: 60px !important;
|
||||
padding-left:15px !important;
|
||||
}
|
||||
.ant-table-thead > tr > th {
|
||||
background-color: rgba(239, 244, 252, 1);
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<div class="inname">小组名称:</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="valuen"
|
||||
placeholder="请输入小组名称"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
@@ -42,7 +42,7 @@
|
||||
<div class="inname">小组长:</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="valueg"
|
||||
placeholder="请输入小组长"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
@@ -68,7 +68,10 @@ export default {
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const state = reactive({});
|
||||
const state = reactive({
|
||||
valuen: "",
|
||||
valueg: "",
|
||||
});
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:Avisible", false);
|
||||
};
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
:data-source="tabledata"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
expandRowByClick="true"
|
||||
:scroll="{ x: 500, y: 560 }"
|
||||
:scroll="{ x: 500 }"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
:row-selection="{
|
||||
@@ -156,7 +156,7 @@
|
||||
:data-source="tabledata1"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
expandRowByClick="true"
|
||||
:scroll="{ x: 500, y: 560 }"
|
||||
:scroll="{ x: 500 }"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
:row-selection="{
|
||||
@@ -246,7 +246,7 @@
|
||||
:data-source="tabledata2"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
expandRowByClick="true"
|
||||
:scroll="{ x: 500, y: 560 }"
|
||||
:scroll="{ x: 500 }"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
:row-selection="{
|
||||
@@ -1014,11 +1014,11 @@ export default {
|
||||
};
|
||||
const onSelectChange1 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys1 = selectedRowKeys;
|
||||
};
|
||||
const onSelectChange2 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys2 = selectedRowKeys;
|
||||
};
|
||||
|
||||
const getMousePosition = () => {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
:visible="Changevisible"
|
||||
class="drawerStyle changegroup"
|
||||
placement="right"
|
||||
width="50%"
|
||||
width="70%"
|
||||
@after-visible-change="afterVisibleChange"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
@@ -23,6 +23,8 @@
|
||||
style="width: 264px; border-radius: 8px"
|
||||
placeholder="好好学习"
|
||||
:options="stugroupList"
|
||||
allowClear
|
||||
showSearch
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -59,8 +61,8 @@ export default {
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
value: "好好学习",
|
||||
label: "好好学习",
|
||||
value: "最强小组",
|
||||
label: "最强小组",
|
||||
},
|
||||
],
|
||||
});
|
||||
@@ -118,7 +120,8 @@ export default {
|
||||
height: 40px;
|
||||
}
|
||||
.ant-select-selector {
|
||||
height: 100%;
|
||||
height: 40px;
|
||||
padding: 4px 11px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.ant-select-selection-search-input {
|
||||
|
||||
@@ -15,7 +15,120 @@
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="main"></div>
|
||||
<div class="main">
|
||||
<div class="tab1">
|
||||
<div class="nameinp">
|
||||
<div class="namee">作业名称:</div>
|
||||
<a-input
|
||||
v-model:value="name"
|
||||
style="width: 408px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入作业名称"
|
||||
/>
|
||||
</div>
|
||||
<div class="btns">
|
||||
<div class="btn1">
|
||||
<div class="img1">
|
||||
<img src="../../assets/images/courseManage/search0.png" />
|
||||
</div>
|
||||
<div class="wz">搜索</div>
|
||||
</div>
|
||||
<div class="btn2">
|
||||
<div class="img2">
|
||||
<img src="../../assets/images/courseManage/reset1.png" />
|
||||
</div>
|
||||
<div class="wz">重置</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 文件容器 -->
|
||||
<div class="zipcontainer">
|
||||
<!-- 单个文件 -->
|
||||
<div class="item">
|
||||
<div class="itemup">
|
||||
<div class="lefttop"></div>
|
||||
<div class="cent">
|
||||
<div class="zip"></div>
|
||||
<div class="ziprit">
|
||||
<div class="textop">作业名称</div>
|
||||
<div class="texdown">
|
||||
<div class="timemanag" style="margin-top: 12px">
|
||||
2022-08-08 10:30:30 管理员
|
||||
</div>
|
||||
<div class="timemanag">来源:管理者进阶-腾飞班Z1</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="itemdown">
|
||||
<div class="download">下载</div>
|
||||
<div class="outime">(5天后失效)</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="itemup">
|
||||
<div class="lefttop"></div>
|
||||
<div class="cent">
|
||||
<div class="zip"></div>
|
||||
<div class="ziprit">
|
||||
<div class="textop">作业名称</div>
|
||||
<div class="texdown">
|
||||
<div class="timemanag" style="margin-top: 12px">
|
||||
2022-08-08 10:30:30 管理员
|
||||
</div>
|
||||
<div class="timemanag">来源:管理者进阶-腾飞班Z1</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="itemdown">
|
||||
<div class="download">下载</div>
|
||||
<div class="outime">(5天后失效)</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="itemup">
|
||||
<div class="lefttop"></div>
|
||||
<div class="cent">
|
||||
<div class="zip"></div>
|
||||
<div class="ziprit">
|
||||
<div class="textop">作业名称</div>
|
||||
<div class="texdown">
|
||||
<div class="timemanag" style="margin-top: 12px">
|
||||
2022-08-08 10:30:30 管理员
|
||||
</div>
|
||||
<div class="timemanag">来源:管理者进阶-腾飞班Z1</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="itemdown">
|
||||
<div class="download">下载</div>
|
||||
<div class="outime">(5天后失效)</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="itemup">
|
||||
<div class="lefttop"></div>
|
||||
<div class="cent">
|
||||
<div class="zip"></div>
|
||||
<div class="ziprit">
|
||||
<div class="textop">作业名称</div>
|
||||
<div class="texdown">
|
||||
<div class="timemanag" style="margin-top: 12px">
|
||||
2022-08-08 10:30:30 管理员
|
||||
</div>
|
||||
<div class="timemanag">来源:管理者进阶-腾飞班Z1</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="itemdown">
|
||||
<div class="download">下载</div>
|
||||
<div class="outime">(5天后失效)</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
@@ -33,7 +146,9 @@ export default {
|
||||
|
||||
setup(props, ctx) {
|
||||
console.log("props", props.downloadVisible);
|
||||
const state = reactive({});
|
||||
const state = reactive({
|
||||
name: "",
|
||||
});
|
||||
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:downloadVisible", false);
|
||||
@@ -56,15 +171,153 @@ export default {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-shrink: 0;
|
||||
.headerTitle {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #333333;
|
||||
line-height: 25px;
|
||||
margin-left: 24px;
|
||||
// margin-left: 24px;
|
||||
}
|
||||
}
|
||||
.main {
|
||||
overflow-y: auto;
|
||||
padding-right: 10px;
|
||||
.tab1 {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-top: 10px;
|
||||
.t1 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.nameinp {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 10px;
|
||||
margin-right: 10px;
|
||||
.namee {
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
.btns {
|
||||
display: flex;
|
||||
margin-top: 10px;
|
||||
|
||||
.btn1 {
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
margin-right: 16px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #ffffff;
|
||||
font-size: 14px;
|
||||
background: #409eff;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #409eff;
|
||||
cursor: pointer;
|
||||
.wz {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
.btn2 {
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #409eff;
|
||||
font-size: 14px;
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
cursor: pointer;
|
||||
border: 1px solid #409eff;
|
||||
.wz {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.zipcontainer {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 30px;
|
||||
.item {
|
||||
margin-right: 50px;
|
||||
margin-bottom: 50px;
|
||||
.itemup {
|
||||
width: 412px;
|
||||
height: 160px;
|
||||
background: #ffffff;
|
||||
border-radius: 2px 2px 0px 0px;
|
||||
border: 1px solid #409eff;
|
||||
position: relative;
|
||||
.lefttop {
|
||||
width: 8px;
|
||||
height: 21px;
|
||||
background: #4ea6ff;
|
||||
border-radius: 0px 4px 4px 0px;
|
||||
top: 18px;
|
||||
position: absolute;
|
||||
}
|
||||
.cent {
|
||||
display: flex;
|
||||
margin-top: 40px;
|
||||
margin-left: 40px;
|
||||
.zip {
|
||||
width: 62px;
|
||||
height: 72px;
|
||||
background-image: url(../../assets/images/leveladd/zip.png);
|
||||
background-size: 100%;
|
||||
}
|
||||
.ziprit {
|
||||
margin-left: 20px;
|
||||
margin-top: -5px;
|
||||
.textop {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #409eff;
|
||||
}
|
||||
.texdown {
|
||||
.timemanag {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #878b92;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.itemdown {
|
||||
width: 412px;
|
||||
height: 48px;
|
||||
background: linear-gradient(180deg, #ddeaff 0%, #f0f8fe 100%);
|
||||
border-radius: 0px 0px 2px 2px;
|
||||
border: 1px solid #409eff;
|
||||
border-top: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
.download {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #409eff;
|
||||
cursor: pointer;
|
||||
}
|
||||
.outime {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
color: #878b92;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.contentMain {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnss" style="margin-top: 20px">
|
||||
<div class="btn btn1" style="margin-right: 20px">
|
||||
<div class="btn btn1" style="margin-right: 20px" @click="showopen">
|
||||
<div class="img1"></div>
|
||||
<div class="wz">催促学习</div>
|
||||
</div>
|
||||
@@ -136,6 +136,10 @@
|
||||
<button class="btn btn2" @click="check">确定</button>
|
||||
</div>
|
||||
</a-modal>
|
||||
<div class="noticebox" v-show="open">
|
||||
<div><img src="../../assets/images/taskpage/check.png" /></div>
|
||||
<div class="notext">催促学员成功</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<!-- 录入成绩抽屉 -->
|
||||
@@ -143,7 +147,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { toRefs, reactive } from "vue";
|
||||
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
||||
import EntryScores from "./EntryScores.vue";
|
||||
export default {
|
||||
name: "FaceManage",
|
||||
@@ -165,6 +169,7 @@ export default {
|
||||
currentPage: 1,
|
||||
tableDataTotal: 100,
|
||||
showdonemodal: false,
|
||||
open: false,
|
||||
selectedRowKeys: [],
|
||||
projectNameList: [
|
||||
{
|
||||
@@ -351,7 +356,18 @@ export default {
|
||||
// }
|
||||
// state.selectedRowKeys = selectedRowKeys;
|
||||
};
|
||||
|
||||
const showopen = () => {
|
||||
state.open = true;
|
||||
};
|
||||
let timer;
|
||||
onMounted(() => {
|
||||
timer = setInterval(() => {
|
||||
state.open = false;
|
||||
}, 3000);
|
||||
});
|
||||
onUnmounted(() => {
|
||||
clearInterval(timer);
|
||||
});
|
||||
return {
|
||||
...toRefs(state),
|
||||
selectProjectName,
|
||||
@@ -363,6 +379,7 @@ export default {
|
||||
showEntryScore,
|
||||
showdoneModal,
|
||||
closedoneModal,
|
||||
showopen,
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -381,6 +398,7 @@ export default {
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
//面授管理弹窗
|
||||
.FacMa {
|
||||
.ant-modal {
|
||||
@@ -498,6 +516,23 @@ export default {
|
||||
overflow-x: scroll;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.noticebox {
|
||||
width: 240px;
|
||||
height: 64px;
|
||||
background: rgba(255, 255, 255, 1);
|
||||
border-radius: 4px;
|
||||
position: absolute;
|
||||
top: 161px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
.notext {
|
||||
color: rgba(51, 51, 51, 1);
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.header {
|
||||
height: 73px;
|
||||
@@ -615,7 +650,7 @@ export default {
|
||||
.img1 {
|
||||
width: 15px;
|
||||
height: 17px;
|
||||
background-image: url(../../assets/images/courseManage/search0.png);
|
||||
background-image: url(../../assets/images/basicinfo/call.png);
|
||||
background-size: 100% 100%;
|
||||
margin-right: 7px;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
:visible="Importvisible"
|
||||
class="drawerStyle importstu"
|
||||
placement="right"
|
||||
width="50%"
|
||||
width="800px"
|
||||
@after-visible-change="afterVisibleChange"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
@@ -16,69 +16,89 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="download">
|
||||
<span class="placedown">请下载</span>
|
||||
<span class="template">模板</span>
|
||||
<span class="placedown">,按要求填写数据并导入</span>
|
||||
<div class="minatitl">
|
||||
<div class="up1">请下载</div>
|
||||
<div class="up2">模板</div>
|
||||
<div class="up1">,按要求填写数据并导入</div>
|
||||
</div>
|
||||
<div class="upload">
|
||||
<span class="uptext">上传:</span>
|
||||
<div>
|
||||
<!-- 导入学员上传 -->
|
||||
<div class="upbox" style="display: none">
|
||||
<div class="uploadimg"><img src="../../assets/images/taskpage/upload.png"/></div>
|
||||
<div class="draghere">点击或将文件拖拽到此处上传</div>
|
||||
<div class="support">支持扩展名:.xls/.xlsx</div>
|
||||
<div class="text">上传:</div>
|
||||
<div class="right">
|
||||
<div class="load">
|
||||
<div class="cloud"></div>
|
||||
<div class="tip">点击或将文件拖拽到此处上传</div>
|
||||
<div class="tipz">支持扩展名:.xls/.xlsx</div>
|
||||
</div>
|
||||
<!-- 导入学员上传 -->
|
||||
<!-- 导入学员上传(有状态)-正在上传 -->
|
||||
<div class="alreadybox">
|
||||
<div class="alimg"><img src="../../assets/images/studentimg/xls.png"/></div>
|
||||
<div class="upproject">京东方商业模型.xls</div>
|
||||
<div class="uping">正在上传</div>
|
||||
<div class="progress">
|
||||
<a-progress :percent="55" strokeColor="rgba(56, 139, 225, 1)"/>
|
||||
<div class="loadstate">
|
||||
<div class="loadborder">
|
||||
<div class="content">
|
||||
<div class="img"></div>
|
||||
<div class="timebox">
|
||||
<div class="timetop">
|
||||
<div class="tit">京东方商业模型.xls</div>
|
||||
<div class="stateloading">正在上传</div>
|
||||
</div>
|
||||
<div class="state">
|
||||
<span class="stop">暂停</span>
|
||||
<span class="stop">取消</span>
|
||||
<div class="prog">
|
||||
<div class="inprogloading"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 导入学员上传(有状态)-正在上传 -->
|
||||
<div class="uploadstate">上传失败</div>
|
||||
<!-- 导入学员上传(有状态)-上传失败 -->
|
||||
<div class="alreadybox">
|
||||
<div class="alimg"><img src="../../assets/images/studentimg/xls.png"/></div>
|
||||
<div class="upproject">京东方商业模型.xls</div>
|
||||
<div class="uping" style="color: #FF7474">上传失败</div>
|
||||
<div class="progress">
|
||||
<a-progress :percent="55" strokeColor="rgba(255, 116, 116, 1)" />
|
||||
</div>
|
||||
<div class="fail">下载失败数据</div>
|
||||
<div class="state">
|
||||
<span class="stop">重传</span>
|
||||
<span class="stop">取消</span>
|
||||
<div class="curloading">
|
||||
<div class="cur">55%</div>
|
||||
<div class="cancel" style="margin-left: 20px">暂停</div>
|
||||
<div class="cancel" style="margin-left: 15px">取消</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 导入学员上传(有状态)-上传失败 -->
|
||||
<div class="uploadstate" style="margin-top: 74px">上传成功</div>
|
||||
<!-- 导入学员上传(有状态)-上传成功 -->
|
||||
<div class="alreadybox">
|
||||
<div class="alimg"><img src="../../assets/images/studentimg/xls.png"/></div>
|
||||
<div class="upproject">京东方商业模型.xls</div>
|
||||
<div class="uping" style="color: #35AE69">上传成功</div>
|
||||
<div class="progress">
|
||||
<a-progress :percent="100" :show-info="false" strokeColor="rgba(87, 200, 135, 1)"/>
|
||||
<span style="margin-left: 2px">100%</span>
|
||||
</div>
|
||||
<div class="state">
|
||||
<span class="stop">删除</span>
|
||||
|
||||
<div class="loadborder">
|
||||
<div class="content">
|
||||
<div class="img"></div>
|
||||
<div class="timebox">
|
||||
<div class="timetop">
|
||||
<div class="tit">京东方商业模型.xls</div>
|
||||
<div class="statedefeat">上传失败</div>
|
||||
</div>
|
||||
<div class="prog">
|
||||
<div class="inprogdefeat"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="curloading">
|
||||
<div class="cur">55%</div>
|
||||
<div class="cancel" style="margin-left: 20px">重传</div>
|
||||
<div class="cancel" style="margin-left: 15px">取消</div>
|
||||
</div>
|
||||
<div class="defeat">
|
||||
<div class="detext">下载失败数据</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="defeatbox">
|
||||
<div class="lefimg"></div>
|
||||
<div class="tacl">20条数据导入成功,5条数据导入失败</div>
|
||||
</div>
|
||||
<div class="loadborder">
|
||||
<div class="content">
|
||||
<div class="img"></div>
|
||||
<div class="timebox">
|
||||
<div class="timetop">
|
||||
<div class="tit">京东方商业模型.xls</div>
|
||||
<div class="statesucce">上传成功</div>
|
||||
</div>
|
||||
<div class="prog">
|
||||
<div class="inprogsucce"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="curloading">
|
||||
<div class="cur">100%</div>
|
||||
<div class="cancel" style="margin-left: 20px">删除</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="succebox">
|
||||
<div class="lefimg"></div>
|
||||
<div class="tacl">20条数据导入成功,5条数据导入失败</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 导入学员上传(有状态)-上传成功 -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
@@ -122,19 +142,9 @@ export default {
|
||||
|
||||
<style scoped lang="scss" >
|
||||
.importstu {
|
||||
.ant-drawer-content-wrapper {
|
||||
// max-width: 1000px;
|
||||
.ant-drawer-header {
|
||||
display: none !important;
|
||||
}
|
||||
.ant-drawer-body {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
.drawerMain {
|
||||
min-width: 600px;
|
||||
min-width: 450px;
|
||||
margin: 0px 32px 0px 32px;
|
||||
overflow-x: scroll;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.header {
|
||||
@@ -143,9 +153,9 @@ export default {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-shrink: 0;
|
||||
// background-color: red;
|
||||
margin-bottom: 20px;
|
||||
flex-shrink: 0;
|
||||
.headerTitle {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
@@ -155,119 +165,227 @@ export default {
|
||||
}
|
||||
}
|
||||
.main {
|
||||
.download {
|
||||
overflow: scroll;
|
||||
.minatitl {
|
||||
display: flex;
|
||||
.placedown {
|
||||
color: rgba(51, 51, 51, 1);
|
||||
.up1 {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
}
|
||||
.template {
|
||||
color: rgba(56, 139, 225, 1);
|
||||
.up2 {
|
||||
font-size: 16px;
|
||||
cursor: pointer;
|
||||
padding: 0 5px;
|
||||
font-weight: 400;
|
||||
color: #388be1;
|
||||
margin-left: 4px;
|
||||
}
|
||||
}
|
||||
.upload {
|
||||
margin-top: 32px;
|
||||
display: flex;
|
||||
margin-top: 27px;
|
||||
.uptext {
|
||||
color: rgba(51, 51, 51, 1);
|
||||
.text {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.upbox {
|
||||
position: relative;
|
||||
.right {
|
||||
margin-left: 6px;
|
||||
.load {
|
||||
cursor: pointer;
|
||||
width: 500px;
|
||||
height: 176px;
|
||||
margin-left: 10px;
|
||||
background: rgba(56, 139, 225, 0.1);
|
||||
border: 1px dotted rgba(56, 139, 225, 0.2) ;
|
||||
background: #f5f9fd;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
.uploadimg {
|
||||
position: absolute;
|
||||
// opacity: 0.3;
|
||||
border: 1px dashed #caddfd;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
.cloud {
|
||||
margin-top: 52px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
top: 52px;
|
||||
left: 236px;
|
||||
background-image: url(../../assets/images/basicinfo/cloud.png);
|
||||
}
|
||||
.draghere {
|
||||
position: absolute;
|
||||
top: 100px;
|
||||
left: 159px;
|
||||
color: rgba(56, 139, 225, 1);
|
||||
.tip {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #388be1;
|
||||
margin-top: 15px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.support {
|
||||
position: absolute;
|
||||
left: 180px;
|
||||
bottom: 24px;
|
||||
color: rgba(153, 153, 153, 1);
|
||||
.tipz {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
.alreadybox {
|
||||
.loadstate {
|
||||
width: 500px;
|
||||
margin-bottom: 100px;
|
||||
|
||||
.loadborder {
|
||||
width: 500px;
|
||||
height: 173px;
|
||||
position: relative;
|
||||
margin-left: 10px;
|
||||
border: 1px dotted rgba(153, 153, 153, 1);
|
||||
border-radius: 4px;
|
||||
.fail {
|
||||
position: absolute;
|
||||
top: 113px;
|
||||
left: 68px;
|
||||
color: #FF7474;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.alimg {
|
||||
width: 32px;
|
||||
height: 34px;
|
||||
position: absolute;
|
||||
top: 66px;
|
||||
left: 24px;
|
||||
//background: green;
|
||||
}
|
||||
.upproject {
|
||||
position: absolute;
|
||||
top: 60px;
|
||||
left: 68px;
|
||||
color: rgba(51, 51, 51, 1);
|
||||
font-size: 14px;
|
||||
}
|
||||
.uping {
|
||||
position: absolute;
|
||||
top: 60px;
|
||||
left: 274px;
|
||||
color: rgba(56, 139, 225, 1);
|
||||
font-size: 14px;
|
||||
}
|
||||
.progress {
|
||||
position: absolute;
|
||||
border: 1px dashed #eaeaea;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
width: 293px;
|
||||
top: 82px;
|
||||
left: 68px;
|
||||
|
||||
}
|
||||
.state {
|
||||
align-items: center;
|
||||
.content {
|
||||
display: flex;
|
||||
margin-left: 20px;
|
||||
position: relative;
|
||||
.defeat {
|
||||
position: absolute;
|
||||
top: 83px;
|
||||
left: 399px;
|
||||
.stop {
|
||||
color: rgba(56, 125, 247, 1);
|
||||
left: 46px;
|
||||
top: 42px;
|
||||
font-size: 14px;
|
||||
margin-right: 8px;
|
||||
font-weight: 500;
|
||||
width: 120px;
|
||||
height: 32px;
|
||||
border-radius: 2px;
|
||||
border: 1px solid #387df7;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
.uploadstate {
|
||||
margin-top: 28px;
|
||||
margin-left: 75px;
|
||||
color: rgba(51, 51, 51, 1);
|
||||
.detext {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #387df7;
|
||||
}
|
||||
}
|
||||
.img {
|
||||
width: 30px;
|
||||
height: 34px;
|
||||
background-image: url(../../assets/images/basicinfo/exl.png);
|
||||
}
|
||||
.timebox {
|
||||
margin-left: 15px;
|
||||
margin-top: -5px;
|
||||
.timetop {
|
||||
display: flex;
|
||||
width: 262px;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 8px;
|
||||
.tit {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
}
|
||||
.stateloading {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #388be1;
|
||||
}
|
||||
.statedefeat {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #ff7474;
|
||||
}
|
||||
.statesucce {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #35ae69;
|
||||
}
|
||||
}
|
||||
.prog {
|
||||
width: 262px;
|
||||
height: 5px;
|
||||
background: #eaf1fe;
|
||||
border-radius: 4px;
|
||||
.inprogloading {
|
||||
width: 55%;
|
||||
height: 5px;
|
||||
border-radius: 4px;
|
||||
|
||||
background: #388be1;
|
||||
}
|
||||
//下载失败条
|
||||
.inprogdefeat {
|
||||
width: 55%;
|
||||
height: 5px;
|
||||
border-radius: 4px;
|
||||
|
||||
background: #ff7474;
|
||||
}
|
||||
//下载成功条
|
||||
.inprogsucce {
|
||||
width: 100%;
|
||||
height: 5px;
|
||||
border-radius: 4px;
|
||||
|
||||
background: #57c887;
|
||||
}
|
||||
}
|
||||
}
|
||||
.curloading {
|
||||
margin-left: 15px;
|
||||
margin-top: 15px;
|
||||
display: flex;
|
||||
.cur {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
}
|
||||
.cancel {
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #387df7;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.defeatbox {
|
||||
width: 500px;
|
||||
height: 40px;
|
||||
background: rgba(255, 116, 116, 0.1);
|
||||
border: 1px solid #ff7474;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.lefimg {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
margin-left: 17px;
|
||||
margin-right: 8px;
|
||||
background-image: url(../../assets/images/leveladd/nodone.png);
|
||||
background-size: 100%;
|
||||
}
|
||||
.tacl {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #ff7474;
|
||||
}
|
||||
}
|
||||
.succebox {
|
||||
width: 500px;
|
||||
height: 40px;
|
||||
background: rgba(53, 174, 105, 0.1);
|
||||
border: 1px solid #35ae69;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.lefimg {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
margin-left: 17px;
|
||||
margin-right: 8px;
|
||||
background-image: url(../../assets/images/leveladd/done.png);
|
||||
background-size: 100%;
|
||||
}
|
||||
.tacl {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -275,6 +393,7 @@ export default {
|
||||
height: 72px;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
background-color: #fff;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
|
||||
@@ -800,11 +800,11 @@ export default {
|
||||
};
|
||||
const onSelectChange1 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys1 = selectedRowKeys;
|
||||
};
|
||||
const onSelectChange2 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys2 = selectedRowKeys;
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
@@ -120,9 +120,10 @@
|
||||
<button class="btn btn2" @click="closeModal">确定</button>
|
||||
</div>
|
||||
</a-modal>
|
||||
<stu-add v-model:Stuvisible="Stuvisible" />
|
||||
</div>
|
||||
</a-drawer>
|
||||
<stu-add v-model:Stuvisible="Stuvisible" />
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -297,7 +298,7 @@ export default {
|
||||
.drawerMain {
|
||||
min-width: 600px;
|
||||
margin: 0px 32px 0px 32px;
|
||||
overflow-x: scroll;
|
||||
//overflow-x: scroll;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
|
||||
@@ -754,11 +754,11 @@ export default {
|
||||
};
|
||||
const onSelectChange1 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys1 = selectedRowKeys;
|
||||
};
|
||||
const onSelectChange2 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys2 = selectedRowKeys;
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
@@ -755,11 +755,11 @@ export default {
|
||||
};
|
||||
const onSelectChange1 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys1 = selectedRowKeys;
|
||||
};
|
||||
const onSelectChange2 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys2 = selectedRowKeys;
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">项目信息</div>
|
||||
<div class="headerTitle">任务信息</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@@ -26,7 +26,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<button class="btn2">关闭</button>
|
||||
<button class="btn2" @click="closeDrawer">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
@@ -75,7 +75,7 @@ export default {
|
||||
}
|
||||
}
|
||||
.drawerMain {
|
||||
min-width: 600px;
|
||||
min-width: 434px;
|
||||
margin: 0px 32px 0px 32px;
|
||||
overflow-x: scroll;
|
||||
display: flex;
|
||||
|
||||
@@ -755,11 +755,11 @@ export default {
|
||||
};
|
||||
const onSelectChange1 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys1 = selectedRowKeys;
|
||||
};
|
||||
const onSelectChange2 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys2 = selectedRowKeys;
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
@@ -755,11 +755,11 @@ export default {
|
||||
};
|
||||
const onSelectChange1 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys1 = selectedRowKeys;
|
||||
};
|
||||
const onSelectChange2 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys2 = selectedRowKeys;
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
@@ -755,11 +755,11 @@ export default {
|
||||
};
|
||||
const onSelectChange1 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys1 = selectedRowKeys;
|
||||
};
|
||||
const onSelectChange2 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys2 = selectedRowKeys;
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
@@ -140,7 +140,6 @@
|
||||
</div>
|
||||
<div v-else class="btns">
|
||||
<div class="btn1" @click="edit=!edit">
|
||||
|
||||
<span class="btn1text">保存</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -153,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>
|
||||
@@ -164,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>
|
||||
@@ -346,9 +345,6 @@ export default {
|
||||
score1:5,
|
||||
score2:5,
|
||||
edit:true,
|
||||
|
||||
|
||||
|
||||
});
|
||||
const getTableData = () => {
|
||||
let datas = state.tabledataStu;
|
||||
@@ -390,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;
|
||||
@@ -491,8 +490,6 @@ export default {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.ant-table-tbody{
|
||||
|
||||
.pa {
|
||||
margin-top: 15px;
|
||||
// height: 20px;
|
||||
@@ -502,9 +499,6 @@ export default {
|
||||
// bottom: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
.scorelist {
|
||||
|
||||
padding-bottom: 100px;
|
||||
|
||||
@@ -755,11 +755,11 @@ export default {
|
||||
};
|
||||
const onSelectChange1 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys1 = selectedRowKeys;
|
||||
};
|
||||
const onSelectChange2 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys2 = selectedRowKeys;
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">学员换组</div>
|
||||
<div class="headerTitle">查看</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@@ -232,7 +232,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<button class="btn2">关闭</button>
|
||||
<button class="btn2" @click="closeDrawer">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
:visible="Stuvisible"
|
||||
class="drawerStyle stuadd"
|
||||
placement="right"
|
||||
width="50%"
|
||||
width="70%"
|
||||
@after-visible-change="afterVisibleChange"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
@@ -1013,11 +1013,11 @@ export default {
|
||||
};
|
||||
const onSelectChange1 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys1 = selectedRowKeys;
|
||||
};
|
||||
const onSelectChange2 = (selectedRowKeys) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRowKeys2 = selectedRowKeys;
|
||||
};
|
||||
|
||||
const getMousePosition = () => {
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main">
|
||||
|
||||
<div class="tableBox" style="margin-top: 20px; margin-bottom: 100px">
|
||||
@@ -40,11 +41,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
@@ -213,7 +214,6 @@
|
||||
.drawerMain {
|
||||
min-width: 600px;
|
||||
margin: 0px 32px 0px 32px;
|
||||
overflow-x: scroll;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.header {
|
||||
@@ -236,17 +236,11 @@
|
||||
.main {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
// background-color: #bfa;
|
||||
// overflow-y: auto;
|
||||
.endtime {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.tableBox {
|
||||
padding-bottom: 100px;
|
||||
.ant-table-selection-column {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
:visible="Svisible"
|
||||
class="drawerStyle subset"
|
||||
placement="right"
|
||||
width="70%"
|
||||
width="50%"
|
||||
@after-visible-change="afterVisibleChange"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
@@ -20,7 +20,7 @@
|
||||
<div>
|
||||
<div class="groupin">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="value1"
|
||||
placeholder="好好学习小组"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
@@ -28,7 +28,7 @@
|
||||
</div>
|
||||
<div class="groupin">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="value2"
|
||||
placeholder="全能小组"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
@@ -36,7 +36,7 @@
|
||||
</div>
|
||||
<div class="groupin">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="value3"
|
||||
placeholder="宇宙第一最强小组"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
@@ -54,9 +54,10 @@
|
||||
<button class="btn2">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<!-- 创建小组抽屉 -->
|
||||
<add-group v-model:Avisible="Avisible" />
|
||||
</a-drawer>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -74,6 +75,9 @@ export default {
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
Avisible: false,
|
||||
value1: "",
|
||||
value2:"",
|
||||
value3: "",
|
||||
});
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:Svisible", false);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
:visible="TaskFaceImpStuvisible"
|
||||
class="drawerStyle TaskFaceImpStu"
|
||||
placement="right"
|
||||
width="40%"
|
||||
width="700px"
|
||||
@after-visible-change="afterVisibleChange"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
@@ -82,7 +82,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="curloading">
|
||||
<div class="cur">55%</div>
|
||||
<div class="cur">100%</div>
|
||||
<div class="cancel" style="margin-left: 20px">删除</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -145,6 +145,7 @@ export default {
|
||||
align-items: center;
|
||||
// background-color: red;
|
||||
margin-bottom: 20px;
|
||||
flex-shrink: 0;
|
||||
.headerTitle {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
@@ -154,6 +155,7 @@ export default {
|
||||
}
|
||||
}
|
||||
.main {
|
||||
overflow-y: auto;
|
||||
.minatitl {
|
||||
display: flex;
|
||||
.up1 {
|
||||
|
||||
@@ -880,106 +880,6 @@
|
||||
</div>
|
||||
</a-modal>
|
||||
<!-- 面授课程管理查看详情页面 -->
|
||||
<!-- 操作授权页面 -->
|
||||
<!-- <a-modal
|
||||
v-model:visible="gpm_hs"
|
||||
title="Title"
|
||||
@ok="closeModal"
|
||||
:footer="null"
|
||||
:closable="false"
|
||||
wrapClassName="modalStyle givpowerModal"
|
||||
width="80%"
|
||||
>
|
||||
<div class="modalHeader">
|
||||
<div class="headerLeft">
|
||||
<img
|
||||
style="width: 17px; height: 18px; margin-right: 8px"
|
||||
src="@/assets/images/coursewareManage/givepower.png"
|
||||
/>
|
||||
<span class="headerLeftText">授权</span>
|
||||
</div>
|
||||
<div style="margin-right: 57px; cursor: pointer">
|
||||
<img
|
||||
@click="gpm_exit"
|
||||
style="width: 22px; height: 22px"
|
||||
src="../../assets/images/basicinfo/close22.png"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modalMain">
|
||||
<div class="givepower" :style="{ display: gpm_hs ? 'block' : 'none' }">
|
||||
<div class="gp_main">
|
||||
<div class="gpm_inputbtn">
|
||||
<a-input
|
||||
v-model:value="value16"
|
||||
style="
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 14px;
|
||||
"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
<div class="gpm_btn btn1">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">搜索</div>
|
||||
</div>
|
||||
<div class="gpm_btn btn2">
|
||||
<div class="reset"></div>
|
||||
<div class="btnText">重置</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="gpm_notice">
|
||||
<div class="th_icon"></div>
|
||||
<div class="textarea">
|
||||
已选择 <span style="color: #4ea6ff">1</span> 项
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<span style="color: #999ba3">列表选项总计:</span
|
||||
><span>5条</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="gpm_table">
|
||||
<a-table
|
||||
:row-selection="{
|
||||
selectedRowKeys: selectedRowKeys,
|
||||
onChange: onSelectChange,
|
||||
}"
|
||||
:columns="columns5"
|
||||
:data-source="tableData5"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:pagination="{
|
||||
showSizeChanger: true,
|
||||
showQuickJumper: true,
|
||||
hideOnSinglePage: true,
|
||||
pageSizeOptions: [],
|
||||
pageSize: pageSize,
|
||||
current: currentPage,
|
||||
total: tableDataTotal,
|
||||
onChange: (page, pageSize) => {
|
||||
currentPage = page;
|
||||
// console.log('page', page)
|
||||
// 加翻页查找代码
|
||||
// this.setState({
|
||||
// currentPage: page,
|
||||
// }, () => {
|
||||
// this.getMilitaryDeployment()
|
||||
// })
|
||||
},
|
||||
}"
|
||||
>
|
||||
<template #bodyCell="{ column }">
|
||||
<template v-if="column.key === 'opacation'">
|
||||
<a>取消授权</a>
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal> -->
|
||||
<!--操作授权页面 -->
|
||||
<!--开课页面 -->
|
||||
<a-modal
|
||||
v-model:visible="stm_hs"
|
||||
@@ -1465,6 +1365,7 @@
|
||||
:closable="closableQR"
|
||||
wrapClassName="QRModal"
|
||||
style="margin-top: 400px"
|
||||
:zIndex="9999"
|
||||
@cancel="qr_exit"
|
||||
>
|
||||
<div class="QR" :style="{ display: QR_hs ? 'block' : 'none' }">
|
||||
@@ -1507,6 +1408,8 @@
|
||||
:closable="closableQR"
|
||||
wrapClassName="recgradeModal"
|
||||
style="margin-top: 400px"
|
||||
:zIndex="9999"
|
||||
@cancel="rg_exit"
|
||||
>
|
||||
<div class="recordgrade" :style="{ display: rg_hs ? 'block' : 'none' }">
|
||||
<div class="rg_header"></div>
|
||||
@@ -1556,6 +1459,8 @@
|
||||
:closable="closableQR"
|
||||
wrapClassName="graModal"
|
||||
style="margin-top: 400px"
|
||||
:zIndex="9999"
|
||||
@cancel="graduate_exit"
|
||||
>
|
||||
<div
|
||||
class="graduate"
|
||||
@@ -1615,78 +1520,46 @@
|
||||
</div>
|
||||
</a-modal>
|
||||
<!--结业页面 -->
|
||||
<!--请确定是否同意此学员学习此课程弹窗 -->
|
||||
<!--请确定是否同意拒绝此学员学习此课程弹窗 -->
|
||||
<a-modal
|
||||
v-model:visible="agreestudy_hs"
|
||||
v-model:visible="agreereject_hs"
|
||||
:footer="null"
|
||||
:closable="closableQR"
|
||||
wrapClassName="agrstudyModal"
|
||||
style="margin-top: 400px"
|
||||
centered="true"
|
||||
@cancel="agreereject_exit"
|
||||
>
|
||||
<div
|
||||
class="agreestudy"
|
||||
:style="{ display: agreestudy_hs ? 'block' : 'none' }"
|
||||
:style="{ display: agreereject_hs ? 'block' : 'none' }"
|
||||
>
|
||||
<div class="agree_header"></div>
|
||||
<div class="agree_main">
|
||||
<div class="agreem_header">
|
||||
<div class="agreem_icon"></div>
|
||||
<span>提示</span>
|
||||
<div class="close_exit" @click="agreestudy_exit"></div>
|
||||
<div class="close_exit" @click="agreereject_exit"></div>
|
||||
</div>
|
||||
<div class="agreem_body">
|
||||
<div class="body_box">
|
||||
<div class="body_box" :style="{ display: agreestudy_hs ? 'block' : 'none' }">
|
||||
<div>请确定是否同意此学员学习此课程</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="qrm_btnbox">
|
||||
<div class="qrm_btn btn1">
|
||||
<div class="btnText" @click="agreestudy_exit">取消</div>
|
||||
</div>
|
||||
<div class="qrm_btn btn2">
|
||||
<div class="btnText" @click="agreestudy_exit">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
<!--请确定是否同意此学员学习此课程弹窗 -->
|
||||
<!--请确定是否拒绝此学员学习此课程弹窗 -->
|
||||
<a-modal
|
||||
v-model:visible="rejectstudy_hs"
|
||||
:footer="null"
|
||||
:closable="closableQR"
|
||||
wrapClassName="agrstudyModal"
|
||||
style="margin-top: 400px"
|
||||
>
|
||||
<div
|
||||
class="agreestudy"
|
||||
:style="{ display: rejectstudy_hs ? 'block' : 'none' }"
|
||||
>
|
||||
<div class="agree_header"></div>
|
||||
<div class="agree_main">
|
||||
<div class="agreem_header">
|
||||
<div class="agreem_icon"></div>
|
||||
<span>提示</span>
|
||||
<div class="close_exit" @click="rejectstudy_exit"></div>
|
||||
</div>
|
||||
<div class="agreem_body">
|
||||
<div class="body_box">
|
||||
<div class="body_box" :style="{ display: rejectstudy_hs ? 'block' : 'none' }">
|
||||
<div>请确定是否拒绝此学员学习此课程</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="qrm_btnbox">
|
||||
<div class="qrm_btn btn1">
|
||||
<div class="btnText" @click="rejectstudy_exit">取消</div>
|
||||
<div class="btnText" @click="agreereject_exit">取消</div>
|
||||
</div>
|
||||
<div class="qrm_btn btn2">
|
||||
<div class="btnText" @click="rejectstudy_exit">确定</div>
|
||||
<div class="btnText" @click="agreereject_exit">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
<!--请确定是否拒绝此学员学习此课程弹窗 -->
|
||||
<!--请确定是否同意拒绝此学员学习此课程弹窗 -->
|
||||
<!--删除 复制 停用弹窗 -->
|
||||
<a-modal
|
||||
v-model:visible="delete_hs"
|
||||
@@ -1694,26 +1567,26 @@
|
||||
:closable="closableQR"
|
||||
wrapClassName="DelModal"
|
||||
style="margin-top: 400px"
|
||||
@cancel="delete_exit"
|
||||
:zIndex="9999"
|
||||
@cancel="delete_exit"
|
||||
>
|
||||
<div
|
||||
class="delete"
|
||||
:style="{
|
||||
display: delete_hs || copy_hs || nouse_hs ? 'block' : 'none',
|
||||
display: del_hs || copy_hs || nouse_hs ? 'block' : 'none',
|
||||
}"
|
||||
>
|
||||
<div class="del_header"></div>
|
||||
<div class="del_main">
|
||||
<div class="header">
|
||||
<div
|
||||
class="del-icon"
|
||||
class="del-icons"
|
||||
:style="{ display: del_hs ? 'block' : 'none' }"
|
||||
>
|
||||
<img src="@/assets/images/coursewareManage/notice.png" alt="" />
|
||||
</div>
|
||||
<div
|
||||
class="del-icon"
|
||||
class="del-icons"
|
||||
:style="{ display: copy_hs || nouse_hs ? 'block' : 'none' }"
|
||||
>
|
||||
<img src="@/assets/images/coursewareManage/QR.png" alt="" />
|
||||
@@ -1743,7 +1616,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
<!--删除弹窗 -->
|
||||
<!--删除 复制 停用弹窗 -->
|
||||
<!-- 学员管理课程库-归属权抽屉 -->
|
||||
<own-power v-model:ownpowervisible="ownpowervisible" />
|
||||
<!-- 学员管理课程库-归属权抽屉 -->
|
||||
@@ -1776,21 +1649,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",
|
||||
@@ -1798,21 +1671,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",
|
||||
@@ -1931,45 +1804,6 @@ const columns4 = [
|
||||
align: "center",
|
||||
},
|
||||
];
|
||||
//5授权弹窗 6是开课表格
|
||||
// const columns5 = [
|
||||
// {
|
||||
// title: "姓名",
|
||||
// dataIndex: "name",
|
||||
// key: "name",
|
||||
// width: "10%",
|
||||
// align: "left",
|
||||
// },
|
||||
// {
|
||||
// title: "归属组织",
|
||||
// dataIndex: "organization",
|
||||
// key: "organization",
|
||||
// width: "19%",
|
||||
// align: "center",
|
||||
// },
|
||||
// {
|
||||
// title: "岗位",
|
||||
// dataIndex: "position",
|
||||
// key: "position",
|
||||
// width: "19%",
|
||||
// align: "center",
|
||||
// },
|
||||
// {
|
||||
// title: "拥有权限",
|
||||
// dataIndex: "authority",
|
||||
// key: "authority",
|
||||
// width: "19%",
|
||||
// align: "center",
|
||||
// },
|
||||
// {
|
||||
// title: "操作",
|
||||
// dataIndex: "opacation",
|
||||
// key: "opacation",
|
||||
// width: "34%",
|
||||
// align: "center",
|
||||
// },
|
||||
// ];
|
||||
|
||||
//开课表格
|
||||
const columns6 = [
|
||||
{
|
||||
@@ -2248,46 +2082,6 @@ export default defineComponent({
|
||||
status: "已通过",
|
||||
},
|
||||
],
|
||||
|
||||
// 5授权弹窗 6开课
|
||||
// tableData5: [
|
||||
// {
|
||||
// key: 1,
|
||||
// name: "李明",
|
||||
// organization: "-",
|
||||
// position: "产品经理",
|
||||
// authority: "归属权",
|
||||
// },
|
||||
// {
|
||||
// key: 2,
|
||||
// name: "李洋",
|
||||
// organization: "-",
|
||||
// position: "产品经理",
|
||||
// authority: "查看权",
|
||||
// },
|
||||
// {
|
||||
// key: 3,
|
||||
// name: "小李",
|
||||
// organization: "-",
|
||||
// position: "产品经理",
|
||||
// authority: "管理权",
|
||||
// },
|
||||
// {
|
||||
// key: 4,
|
||||
// name: "雄安名",
|
||||
// organization: "-",
|
||||
// position: "产品经理",
|
||||
// authority: "管理权",
|
||||
// },
|
||||
// {
|
||||
// key: 5,
|
||||
// name: "王哥",
|
||||
// organization: "-",
|
||||
// position: "产品经理",
|
||||
// authority: "管理权",
|
||||
// },
|
||||
// ],
|
||||
|
||||
//开课
|
||||
tableData6: [
|
||||
{
|
||||
@@ -2416,7 +2210,6 @@ export default defineComponent({
|
||||
om_1: false,
|
||||
ft_1: false,
|
||||
om_ckxq: false,
|
||||
// gpm_hs: false,
|
||||
stm_hs: false,
|
||||
cstm_hs: false,
|
||||
sm_hs: false,
|
||||
@@ -2424,6 +2217,7 @@ export default defineComponent({
|
||||
closableQR: false,
|
||||
rg_hs: false,
|
||||
graduate_hs: false,
|
||||
agreereject_hs:false,
|
||||
agreestudy_hs: false,
|
||||
rejectstudy_hs: false,
|
||||
delete_hs: false,
|
||||
@@ -2536,28 +2330,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>
|
||||
@@ -2574,9 +2368,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;
|
||||
@@ -2587,6 +2379,7 @@ export default defineComponent({
|
||||
}
|
||||
}}
|
||||
>
|
||||
<div>
|
||||
二维码
|
||||
</div>
|
||||
</a-select-option>
|
||||
@@ -2594,12 +2387,11 @@ export default defineComponent({
|
||||
value="取消"
|
||||
label="取消"
|
||||
style="padding-left:35px"
|
||||
>
|
||||
<div
|
||||
onClick={() => {
|
||||
console.log("点击了");
|
||||
}}
|
||||
>
|
||||
<div>
|
||||
取消
|
||||
</div>
|
||||
</a-select-option>
|
||||
@@ -2637,28 +2429,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>
|
||||
@@ -2745,28 +2537,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>
|
||||
@@ -2811,6 +2603,7 @@ export default defineComponent({
|
||||
<div
|
||||
class="jc"
|
||||
onClick={() => {
|
||||
state.agreereject_hs = true;
|
||||
state.agreestudy_hs = true;
|
||||
}}
|
||||
>
|
||||
@@ -2821,6 +2614,7 @@ export default defineComponent({
|
||||
<div
|
||||
class="jc"
|
||||
onClick={() => {
|
||||
state.agreereject_hs = true;
|
||||
state.rejectstudy_hs = true;
|
||||
}}
|
||||
>
|
||||
@@ -2923,12 +2717,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>
|
||||
@@ -2936,27 +2730,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>
|
||||
@@ -3140,7 +2932,7 @@ export default defineComponent({
|
||||
}
|
||||
};
|
||||
const createft = () => {
|
||||
if (state.bs_hs == false) {
|
||||
if (state.bs_hs == false && state.valueE1 != "") {
|
||||
state.of_hs = false;
|
||||
state.ft_hs = true;
|
||||
state.valueE1 = "";
|
||||
@@ -3160,9 +2952,6 @@ export default defineComponent({
|
||||
const ftsr_exit = () => {
|
||||
state.om_ckxq = false;
|
||||
};
|
||||
// const gpm_exit = () => {
|
||||
// state.gpm_hs = false;
|
||||
// };
|
||||
const stm_exit = () => {
|
||||
state.stm_hs = false;
|
||||
};
|
||||
@@ -3182,9 +2971,11 @@ export default defineComponent({
|
||||
state.sm_hs = false;
|
||||
state.hideshow = true;
|
||||
};
|
||||
const clear_valueE1 = () => {
|
||||
const clear_valueE1 = (value) => {
|
||||
state.bs_hs = false;
|
||||
if (value != "") {
|
||||
state.valueE1 = "";
|
||||
}
|
||||
};
|
||||
const clear_valueE2 = () => {
|
||||
state.valueE2 = "";
|
||||
@@ -3218,10 +3009,9 @@ export default defineComponent({
|
||||
const graduate_exit = () => {
|
||||
state.graduate_hs = false;
|
||||
};
|
||||
const agreestudy_exit = () => {
|
||||
const agreereject_exit = () => {
|
||||
state.agreereject_hs = false;
|
||||
state.agreestudy_hs = false;
|
||||
};
|
||||
const rejectstudy_exit = () => {
|
||||
state.rejectstudy_hs = false;
|
||||
};
|
||||
const delete_exit = () => {
|
||||
@@ -3257,13 +3047,10 @@ export default defineComponent({
|
||||
columns1,
|
||||
columns2,
|
||||
columns4,
|
||||
// columns5,
|
||||
columns6,
|
||||
columns7,
|
||||
options1,
|
||||
options2,
|
||||
// getTableDate,
|
||||
// getTableDate2,
|
||||
of_hShow,
|
||||
of_exit,
|
||||
hideShow,
|
||||
@@ -3273,7 +3060,6 @@ export default defineComponent({
|
||||
om_exit,
|
||||
ckxq_hs,
|
||||
ftsr_exit,
|
||||
// gpm_exit,
|
||||
stm_exit,
|
||||
createkk,
|
||||
cstm_exit,
|
||||
@@ -3286,8 +3072,7 @@ export default defineComponent({
|
||||
qr_exit,
|
||||
rg_exit,
|
||||
graduate_exit,
|
||||
agreestudy_exit,
|
||||
rejectstudy_exit,
|
||||
agreereject_exit,
|
||||
delete_exit,
|
||||
onSelectChange,
|
||||
faceManageChange,
|
||||
@@ -3297,14 +3082,6 @@ export default defineComponent({
|
||||
});
|
||||
</script>
|
||||
<style lang="scss">
|
||||
// .dropdown-style{
|
||||
// .ant-select-dropdown-menu{
|
||||
// background: #6767bd;
|
||||
// }
|
||||
// .ant-select-dropdown-menu-item {
|
||||
// color: #4EA6FF !important;
|
||||
// }
|
||||
// }
|
||||
.courseManage {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
@@ -3459,7 +3236,6 @@ export default defineComponent({
|
||||
.selectonlineface {
|
||||
z-index: 999;
|
||||
width: 679px;
|
||||
// height: 525px;
|
||||
background: #ffffff;
|
||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
|
||||
position: absolute;
|
||||
@@ -4013,21 +3789,24 @@ export default defineComponent({
|
||||
}
|
||||
.agrstudyModal {
|
||||
.ant-modal {
|
||||
width:429px !important;
|
||||
height:258px !important;
|
||||
.ant-modal-content {
|
||||
// width:679px !important;
|
||||
width:429px !important;
|
||||
height:258px !important;
|
||||
.ant-modal-body {
|
||||
width:429px !important;
|
||||
height:258px !important;
|
||||
padding:0px !important;
|
||||
.agreestudy {
|
||||
z-index: 9999;
|
||||
width: 679px;
|
||||
width: 429px;
|
||||
height:258px;
|
||||
background: #ffffff;
|
||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 10%;
|
||||
transform: translate(-50%, -50%);
|
||||
.agree_header {
|
||||
position: absolute;
|
||||
width: calc(100%);
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
background: linear-gradient(
|
||||
rgba(78, 166, 255, 0.2) 0%,
|
||||
@@ -4061,13 +3840,11 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
.agreem_body {
|
||||
.body_box {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
margin: 20px auto;
|
||||
}
|
||||
margin: 45px auto 62px auto;
|
||||
}
|
||||
.qrm_btnbox {
|
||||
display: flex;
|
||||
@@ -4128,7 +3905,6 @@ export default defineComponent({
|
||||
}
|
||||
.onlinemanage {
|
||||
display: none;
|
||||
z-index: 999;
|
||||
min-width: 1000px;
|
||||
background: #ffffff;
|
||||
.om_main {
|
||||
@@ -4566,7 +4342,6 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
.givepower {
|
||||
z-index: 999;
|
||||
min-width: 1000px;
|
||||
background: #ffffff;
|
||||
.gp_main {
|
||||
@@ -4683,7 +4458,6 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
.schooltime {
|
||||
z-index: 999;
|
||||
min-width: 1000px;
|
||||
background: #ffffff;
|
||||
.st_main {
|
||||
@@ -4784,7 +4558,6 @@ export default defineComponent({
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
margin: 77px auto 109px auto;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
.smallleft {
|
||||
position: absolute;
|
||||
@@ -4905,7 +4678,6 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
.studentsmanage {
|
||||
z-index: 1000;
|
||||
min-width: 1000px;
|
||||
background: #ffffff;
|
||||
.stm_main {
|
||||
@@ -5151,7 +4923,6 @@ export default defineComponent({
|
||||
}
|
||||
.modalMain {
|
||||
.ftsturecord {
|
||||
z-index: 999;
|
||||
min-width: 1000px;
|
||||
background: #ffffff;
|
||||
.ftsr_main {
|
||||
@@ -5193,7 +4964,6 @@ export default defineComponent({
|
||||
width: 424px !important;
|
||||
.ant-modal-body {
|
||||
.delete {
|
||||
z-index: 9999;
|
||||
width: 424px;
|
||||
background: #ffffff;
|
||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
|
||||
@@ -5220,7 +4990,7 @@ export default defineComponent({
|
||||
padding-top: 20px;
|
||||
padding-left: 26px;
|
||||
font-size: 16px;
|
||||
.del-icon {
|
||||
.del-icons {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
position: relative;
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
</div>
|
||||
<!-- 搜索框及按钮 -->
|
||||
<!-- 无数据 -->
|
||||
<div class="datanull" v-if="tableData.length === 0">
|
||||
<div class="datanull" v-if="tableDataTotal === 0">
|
||||
<div class="nodata_box">
|
||||
<div class="left">
|
||||
<img src="../../assets/images/taskpage/left1.png" />
|
||||
@@ -85,8 +85,8 @@
|
||||
<!-- 表格 -->
|
||||
<div
|
||||
class="tableBox"
|
||||
v-if="tableData.length !== 0"
|
||||
style="padding-bottom: 160px; position: relative"
|
||||
v-if="tableDataTotal !== 0"
|
||||
style="padding-bottom: 0px; position: relative"
|
||||
>
|
||||
<a-table
|
||||
style="border: 1px solid #f2f6fe"
|
||||
@@ -98,15 +98,19 @@
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
/>
|
||||
</div>
|
||||
<div class="tableBox">
|
||||
<div class="pa">
|
||||
<a-pagination
|
||||
v-if="tableDataTotal > 10"
|
||||
showSizeChanger="true"
|
||||
showQuickJumper="true"
|
||||
hideOnSinglePage="true"
|
||||
:pageSize="pageSize"
|
||||
:current="currentPage"
|
||||
v-model:current="currentPage"
|
||||
:total="tableDataTotal"
|
||||
class="pagination"
|
||||
@change="changePagination"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -171,11 +175,11 @@
|
||||
</div>
|
||||
<!-- <div class="in">
|
||||
<a-input
|
||||
v-model:value="organization"
|
||||
v-model:value="valuecom"
|
||||
maxlength="20"
|
||||
style="border-radius: 4px"
|
||||
/>
|
||||
<div class="showcount">{{ organization.length }}/20</div>
|
||||
<div class="showcount">{{ valuecom.length }}/20</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="bac">
|
||||
@@ -225,8 +229,24 @@
|
||||
<button class="samtn btn2" @click="createLearnPath">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</div></a-modal
|
||||
</div>
|
||||
<!-- <div
|
||||
style="
|
||||
width: 300px;
|
||||
height: 200px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background:pink;
|
||||
flex-shrink: 0;
|
||||
position:absolute,
|
||||
z-index: 100;
|
||||
"
|
||||
v-if="true"
|
||||
>
|
||||
<a-spin :spinning="true" />
|
||||
</div> -->
|
||||
</a-modal>
|
||||
|
||||
<!-- 编辑路径弹窗 -->
|
||||
<a-modal
|
||||
@@ -318,7 +338,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 + ')',
|
||||
@@ -336,8 +356,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn">
|
||||
<button class="samtn btn1" @click="handleOut">取消</button>
|
||||
<button class="samtn btn2" @click="handleOut">确定</button>
|
||||
<button class="samtn btn1" @click="handleOut1">取消</button>
|
||||
<button class="samtn btn2" @click="editLearnPath">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</div></a-modal
|
||||
@@ -494,10 +514,10 @@
|
||||
</div>
|
||||
<div class="del_btnbox">
|
||||
<div class="del_btn btn1">
|
||||
<div class="btnText" @click="delete_exit">取消</div>
|
||||
<div class="btnText" @click="closeDeleteModal">取消</div>
|
||||
</div>
|
||||
<div class="del_btn btn2">
|
||||
<div class="btnText" @click="delete_exit">确定</div>
|
||||
<div class="btnText" @click="deleteLearnPath">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -572,25 +592,26 @@
|
||||
<manage-right v-model:Managevisible="Managevisible" />
|
||||
<!-- 授权名单抽屉 -->
|
||||
<power-list v-model:PLvisible="PLvisible" />
|
||||
|
||||
<!-- 创建路径loading -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs, onMounted } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import OwnerShip from "../../components/drawers/Ownership";
|
||||
import PowerList from "../../components/drawers/PowerList";
|
||||
import QueryRight from "../../components/drawers/QueryRight";
|
||||
import ManageRight from "../../components/drawers/ManageRight";
|
||||
import * as api from "../../api/index1";
|
||||
import { message } from "ant-design-vue";
|
||||
function getBase64(img, callback) {
|
||||
const reader = new FileReader();
|
||||
reader.addEventListener("load", () => callback(reader.result));
|
||||
reader.readAsDataURL(img);
|
||||
}
|
||||
import { toDate } from "../../api/method";
|
||||
export default {
|
||||
name: "learningPath",
|
||||
components: { OwnerShip, PowerList, QueryRight, ManageRight },
|
||||
|
||||
setup() {
|
||||
const router = useRouter();
|
||||
const state = reactive({
|
||||
projectNameList: [
|
||||
{
|
||||
@@ -648,7 +669,8 @@ export default {
|
||||
source: require("../../assets/images/leveladd/3.png"),
|
||||
},
|
||||
],
|
||||
learnPathBg: null, //选择的路径图背景
|
||||
learnPathBg: null, //创建路径选择的路径图背景
|
||||
learnPathBg2: null, //编辑路径选择的路径图背景
|
||||
pub: false, //发布弹窗
|
||||
checked: false, //发布弹窗switch
|
||||
checkedTeacher: false, //发布弹窗勾选
|
||||
@@ -671,7 +693,6 @@ export default {
|
||||
value1: "",
|
||||
value2: "",
|
||||
pathName: "", //创建/编辑路径图名称
|
||||
organization: "", //创建/编辑路径图归属组织
|
||||
organizationList: [
|
||||
{
|
||||
id: 1,
|
||||
@@ -696,8 +717,11 @@ export default {
|
||||
], //归属组织
|
||||
organizationSelectName: null, //归属组织选择名称
|
||||
organizationSelectId: null, //归属组织选择id
|
||||
pathBg: "", //路径图选择背景
|
||||
pathIntro: "", //路径说明
|
||||
valueEE: "",
|
||||
createLoading: false, //创建路径loading
|
||||
deletePathId: null, //删除路径id
|
||||
editPathId: null, //修改路径id
|
||||
});
|
||||
|
||||
const selectProjectName = (value, index) => {
|
||||
@@ -708,15 +732,31 @@ export default {
|
||||
console.log("e", e, a);
|
||||
};
|
||||
const handleOut = () => {
|
||||
// console.log("打开创建路径弹窗");
|
||||
state.pathName = "";
|
||||
state.pathBg = "";
|
||||
state.organizationSelectName = null;
|
||||
state.organizationSelectId = null;
|
||||
state.pathIntro = "";
|
||||
state.out = !state.out;
|
||||
};
|
||||
const handleOut1 = () => {
|
||||
state.pathName = "";
|
||||
state.pathBg = "";
|
||||
state.organizationSelectName = null;
|
||||
state.organizationSelectId = null;
|
||||
state.pathIntro = "";
|
||||
state.out1 = !state.out1;
|
||||
state.editPathId = null;
|
||||
};
|
||||
const chooseImg = (item) => {
|
||||
console.log(item);
|
||||
state.learnPathBg = item.id;
|
||||
};
|
||||
const chooseImg2 = (id) => {
|
||||
console.log(id);
|
||||
state.learnPathBg2 = id;
|
||||
};
|
||||
const showPub = () => {
|
||||
state.pub = true;
|
||||
};
|
||||
@@ -739,6 +779,7 @@ export default {
|
||||
state.deleteModal = true;
|
||||
};
|
||||
const closeDeleteModal = () => {
|
||||
state.deletePathId = null;
|
||||
state.deleteModal = false;
|
||||
};
|
||||
const showStartModal = () => {
|
||||
@@ -772,7 +813,7 @@ export default {
|
||||
let obj = {
|
||||
id: value.routerId,
|
||||
number: (state.currentPage - 1) * state.pageSize + index + 1,
|
||||
manager: value.name,
|
||||
manager: value.name ? value.name : "-",
|
||||
state:
|
||||
value.status === 0
|
||||
? "草稿"
|
||||
@@ -781,9 +822,14 @@ export default {
|
||||
: value.status === -1
|
||||
? "已停用"
|
||||
: "-",
|
||||
creater: value.createName,
|
||||
pubtime: value.publishTime,
|
||||
cretime: value.createTime,
|
||||
creater: value.createName ? value.createName : "-",
|
||||
pubtime: value.publishTime
|
||||
? toDate(value.publishTime, "Y-M-D h:m:s")
|
||||
: "-",
|
||||
cretime: value.createTime
|
||||
? toDate(value.createTime, "Y-M-D h:m:s")
|
||||
: "-",
|
||||
remark: value.remark ? value.remark : "-",
|
||||
};
|
||||
array.push(obj);
|
||||
});
|
||||
@@ -850,6 +896,7 @@ export default {
|
||||
key: "opacation",
|
||||
width: 200,
|
||||
align: "center",
|
||||
fixed: "right",
|
||||
scopedSlots: { customRender: "action" }, //引入的插槽
|
||||
customRender: (text) => {
|
||||
// console.log(text);
|
||||
@@ -870,7 +917,14 @@ export default {
|
||||
<div
|
||||
class="jc"
|
||||
onClick={() => {
|
||||
console.log("text.record", text.record);
|
||||
state.out1 = true;
|
||||
state.pathName = text.record.manager;
|
||||
// state.pathBg = "";
|
||||
// state.organizationSelectName = null;
|
||||
// state.organizationSelectId = null;
|
||||
state.pathIntro = text.record.remark;
|
||||
state.editPathId = text.record.id;
|
||||
}}
|
||||
>
|
||||
编辑
|
||||
@@ -885,6 +939,12 @@ export default {
|
||||
class="jc"
|
||||
onClick={() => {
|
||||
state.out1 = true;
|
||||
state.pathName = text.record.manager;
|
||||
// state.pathBg = "";
|
||||
// state.organizationSelectName = null;
|
||||
// state.organizationSelectId = null;
|
||||
state.pathIntro = text.record.remark;
|
||||
state.editPathId = text.record.id;
|
||||
}}
|
||||
>
|
||||
编辑
|
||||
@@ -911,7 +971,7 @@ export default {
|
||||
</div>
|
||||
<div class="tableSelect">
|
||||
<router-link to="/leveladd">
|
||||
<div class="g1">关卡</div>
|
||||
<div class="g1">管理</div>
|
||||
</router-link>
|
||||
<a-select
|
||||
style="width: 50px;margin-top:2px;margin-left:25px"
|
||||
@@ -998,6 +1058,8 @@ export default {
|
||||
>
|
||||
<div
|
||||
onClick={() => {
|
||||
state.deletePathId = text.record.id;
|
||||
// console.log("text.record", text.record);
|
||||
showDeleteModal();
|
||||
}}
|
||||
>
|
||||
@@ -1077,6 +1139,7 @@ export default {
|
||||
>
|
||||
<div
|
||||
onClick={() => {
|
||||
state.deletePathId = text.record.id;
|
||||
showDeleteModal();
|
||||
}}
|
||||
>
|
||||
@@ -1103,26 +1166,31 @@ export default {
|
||||
};
|
||||
//创建学习路径图
|
||||
const createLearnPath = () => {
|
||||
getBase64("../../assets/images/leveladd/2.png", (base64Url) => {
|
||||
console.log("base64Url", base64Url);
|
||||
});
|
||||
if (!state.pathName) return message.info("请输入路径图名称");
|
||||
if (!state.organizationSelectName) return message.info("请选择归属组织");
|
||||
if (!state.organizationSelectName) return message.info("请选择归属组织");
|
||||
// let obj = {
|
||||
// name: "新建路径图测试",
|
||||
// picUrl: "",
|
||||
// remark: "新建路径图测试说明",
|
||||
// status: 0,
|
||||
// };
|
||||
// api
|
||||
// .createLearnPath(obj)
|
||||
// .then((res) => {
|
||||
// console.log("创建成功", res);
|
||||
// })
|
||||
// .catch((err) => {
|
||||
// console.log("创建失败", err);
|
||||
// });
|
||||
// if (!state.organizationSelectName) return message.info("请选择归属组织");
|
||||
// state.createLoading = true;
|
||||
let obj = {
|
||||
name: state.pathName,
|
||||
picUrl: "",
|
||||
remark: state.pathIntro,
|
||||
status: 0,
|
||||
};
|
||||
api
|
||||
.createLearnPath(obj)
|
||||
.then((res) => {
|
||||
setTimeout(() => {
|
||||
console.log("创建成功", res);
|
||||
message.success("创建成功");
|
||||
// state.createLoading = false;
|
||||
state.currentPage = 1;
|
||||
router.push("/leveladd");
|
||||
// getLearnPath();
|
||||
}, 1000);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("创建失败", err);
|
||||
// state.createLoading = false;
|
||||
});
|
||||
};
|
||||
//获取学习路径列表
|
||||
const getLearnPath = () => {
|
||||
@@ -1134,14 +1202,17 @@ export default {
|
||||
.getLearnPath(obj)
|
||||
.then((res) => {
|
||||
if (res.status === 200) {
|
||||
// console.log("获取路径列表数据", res.data.data);
|
||||
console.log("获取路径列表数据", res.data.data);
|
||||
let arr = res.data.data.rows;
|
||||
// let array = [];
|
||||
if (
|
||||
arr.length === 0 &&
|
||||
res.data.data.total > 0 &&
|
||||
state.currentPage > 1
|
||||
) {
|
||||
state.currentPage = state.currentPage - 1;
|
||||
getLearnPath();
|
||||
}
|
||||
getTableDate(arr);
|
||||
|
||||
// state.tableData = array;
|
||||
// getTableDate();
|
||||
// console.log("tableData", array);
|
||||
state.tableDataTotal = Number(res.data.data.total);
|
||||
}
|
||||
})
|
||||
@@ -1174,6 +1245,60 @@ export default {
|
||||
// console.log("添加测试关卡数据失败", err);
|
||||
// });
|
||||
};
|
||||
//翻页
|
||||
const changePagination = (page) => {
|
||||
state.currentPage = page;
|
||||
getLearnPath();
|
||||
// console.log("翻页", page, pageSize);
|
||||
};
|
||||
//删除学习路径图
|
||||
const deleteLearnPath = () => {
|
||||
let obj = {
|
||||
routerId: state.deletePathId,
|
||||
type: -2,
|
||||
};
|
||||
api
|
||||
.deleteLearnPath(obj)
|
||||
.then((res) => {
|
||||
console.log("删除成功", res);
|
||||
message.success("删除成功");
|
||||
state.deleteModal = false;
|
||||
getLearnPath();
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("删除失败", err);
|
||||
});
|
||||
};
|
||||
//编辑学习路径图
|
||||
const editLearnPath = () => {
|
||||
if (!state.pathName) return message.info("请输入路径图名称");
|
||||
// if (!state.organizationSelectName) return message.info("请选择归属组织");
|
||||
// state.createLoading = true;
|
||||
let obj = {
|
||||
routerId: state.editPathId,
|
||||
name: state.pathName,
|
||||
picUrl: "",
|
||||
remark: state.pathIntro,
|
||||
status: 0,
|
||||
};
|
||||
api
|
||||
.createLearnPath(obj)
|
||||
.then((res) => {
|
||||
setTimeout(() => {
|
||||
console.log("修改成功", res);
|
||||
message.success("修改成功");
|
||||
// state.createLoading = false;
|
||||
// state.currentPage = 1;
|
||||
state.out1 = false;
|
||||
// router.push("/leveladd");
|
||||
getLearnPath();
|
||||
}, 1000);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("修改失败", err);
|
||||
// state.createLoading = false;
|
||||
});
|
||||
};
|
||||
onMounted(() => {
|
||||
// console.log("执行");
|
||||
getLearnPath();
|
||||
@@ -1200,10 +1325,14 @@ export default {
|
||||
showPower,
|
||||
tableDataFunc,
|
||||
chooseImg,
|
||||
chooseImg2,
|
||||
showQuery,
|
||||
showManage,
|
||||
createLearnPath,
|
||||
selectorganization,
|
||||
changePagination,
|
||||
deleteLearnPath,
|
||||
editLearnPath,
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -1699,8 +1828,8 @@ export default {
|
||||
}
|
||||
}
|
||||
.filter {
|
||||
margin-left: 38px;
|
||||
margin-right: 38px;
|
||||
margin-left: 35px;
|
||||
margin-right: 35px;
|
||||
margin-top: 30px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
@@ -1840,7 +1969,8 @@ export default {
|
||||
}
|
||||
}
|
||||
.tableBox {
|
||||
margin: 20px 38px 30px;
|
||||
// margin: 20px 38px 30px;
|
||||
margin: 10px 35px 0px 35px;
|
||||
|
||||
th.h {
|
||||
background-color: #eff4fc !important;
|
||||
@@ -1851,15 +1981,20 @@ export default {
|
||||
> td {
|
||||
background: #f6f9fd;
|
||||
}
|
||||
}
|
||||
.tableBox {
|
||||
.pa {
|
||||
position: absolute;
|
||||
bottom: 20px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
// height: 20px;
|
||||
// background-color: red;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
bottom: 20px;
|
||||
// margin-bottom: 10px;
|
||||
// position: absolute;
|
||||
// bottom: -40px;
|
||||
}
|
||||
}
|
||||
.operation {
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
//考试管理的抽屉
|
||||
|
||||
@@ -8,12 +8,19 @@
|
||||
<div class="btnText" @click="showModal">添加关卡</div>
|
||||
</div>
|
||||
<div class="maincon" style="background-color: #fff">
|
||||
<div
|
||||
<!-- <div
|
||||
class="items"
|
||||
:class="{ active: isActive == true }"
|
||||
@click="changebgc"
|
||||
v-for="item in level"
|
||||
:key="item.id"
|
||||
> -->
|
||||
<div
|
||||
class="items"
|
||||
:class=" isactive == index && isActive == true ? 'active' : '' "
|
||||
@click="changebgc(index)"
|
||||
v-for="( item , index ) in level"
|
||||
:key="item.id"
|
||||
>
|
||||
<div class="items1">
|
||||
<div class="boxs_left">
|
||||
@@ -391,7 +398,7 @@
|
||||
<span class="yi">条</span>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="tableBox" style="margin-top: 20px">
|
||||
<div class="tablebox1" style="margin-top: 20px">
|
||||
<a-table
|
||||
style="border: 1px solid #f2f6fe"
|
||||
:columns="tableDataFunc2()"
|
||||
@@ -796,8 +803,9 @@ export default {
|
||||
value1: "",
|
||||
value2: "",
|
||||
selectedRowKeys: [],
|
||||
isActive: false,
|
||||
gqxy_hs: true,
|
||||
isactive: -1,
|
||||
isActive: false,
|
||||
projectChecked: null, //项目单选框
|
||||
});
|
||||
const showDrawer = () => {
|
||||
@@ -944,8 +952,8 @@ export default {
|
||||
key: "name",
|
||||
width: 60,
|
||||
align: "left",
|
||||
ellipsis: true,
|
||||
className: "classify",
|
||||
|
||||
scopedSlots: { customRender: "action" }, //引入的插槽
|
||||
customRender: (text) => {
|
||||
return (
|
||||
@@ -1125,7 +1133,8 @@ export default {
|
||||
document.getElementsByTagName("main")[0].style.boxShadow =
|
||||
"0px 1px 35px 0px rgba(118, 136, 166, 0.07)";
|
||||
});
|
||||
const changebgc = () => {
|
||||
const changebgc = (index) => {
|
||||
state.isactive = index;
|
||||
state.isActive = !state.isActive;
|
||||
};
|
||||
const gqxy_hShow = () => {
|
||||
@@ -1498,6 +1507,7 @@ export default {
|
||||
}
|
||||
.active {
|
||||
opacity: 1;
|
||||
transition:all .5s;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1862,6 +1872,19 @@ export default {
|
||||
bottom: 0px;
|
||||
}
|
||||
}
|
||||
.tablebox1 {
|
||||
margin-bottom: 80px;
|
||||
.pa {
|
||||
left: 0;
|
||||
width: 100%;
|
||||
// height: 20px;
|
||||
// background-color: red;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.Gcon {
|
||||
|
||||
@@ -322,22 +322,58 @@
|
||||
</div>
|
||||
<hr color="#E8E8E8" />
|
||||
<div class="pjc_body">
|
||||
<div class="pjcb_header">
|
||||
<span>规则</span>
|
||||
<div class="edit_btn">
|
||||
<div class="edit"></div>
|
||||
<div class="btnText">编辑</div>
|
||||
<div class="groupright">
|
||||
<div class="spandiv"><span class="spantext">规则</span></div>
|
||||
<div v-if="edit" class="btns">
|
||||
<div class="btn1" @click="edit = !edit">
|
||||
<img src="../../assets/images/projectadd/edit1.png" />
|
||||
<span class="btn1text">编辑</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pjcb_content">
|
||||
<div v-else class="btns">
|
||||
<div class="btn1" @click="edit = !edit">
|
||||
<span class="btn1text">保存</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="edit" class="pjcb_content">
|
||||
<div class="content content1">
|
||||
<span>当前设计下,学员可以获得 10 积分</span>
|
||||
<span>当前设计下,学员可以获得 </span
|
||||
><span class="scoretext">{{ scoresum }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div class="content content2">
|
||||
<span>完成【必修/选修】获得 5 积分</span>
|
||||
<span>完成【必修/选修】获得 </span
|
||||
><span class="scoretext">{{ score1 }} </span><span>积分</span>
|
||||
</div>
|
||||
<div class="content content3">
|
||||
<span>优秀学员可获得 5 积分</span>
|
||||
<span>优秀学员可获得 </span
|
||||
><span class="scoretext">{{ score2 }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="pjcb_content">
|
||||
<div class="content content1">
|
||||
<span>当前设计下,学员可以获得 </span
|
||||
><span class="scoretext">{{ scoresum }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<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">
|
||||
<span>优秀学员可获得 </span
|
||||
><span
|
||||
><a-input v-model:value="score2" :bordered="false" /></span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -603,6 +639,9 @@ export default defineComponent({
|
||||
value3: false,
|
||||
value4: false,
|
||||
hideshow: false,
|
||||
score1: 5,
|
||||
score2: 5,
|
||||
edit: true,
|
||||
});
|
||||
const value = ref("");
|
||||
const value2 = ref("");
|
||||
@@ -626,6 +665,12 @@ export default defineComponent({
|
||||
changecheck3,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
// 计算属性的 getter
|
||||
scoresum: function () {
|
||||
return Number(this.score1) + Number(this.score2);
|
||||
},
|
||||
},
|
||||
});
|
||||
</script>
|
||||
<style lang="scss">
|
||||
@@ -1098,47 +1143,70 @@ export default defineComponent({
|
||||
.pjc_body {
|
||||
margin-left: 34px;
|
||||
margin-right: 34px;
|
||||
.pjcb_header {
|
||||
|
||||
.groupright {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin: 24px auto;
|
||||
.edit_btn {
|
||||
.btn1 {
|
||||
width: 100px;
|
||||
// padding: 0px 26px 0px 26px;
|
||||
height: 38px;
|
||||
background: rgb(64, 158, 255);
|
||||
border-radius: 8px;
|
||||
border: 1px solid rgba(64, 158, 255, 1);
|
||||
height: 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
margin-right: 16px;
|
||||
border: 1px solid #409eff;
|
||||
border-radius: 8px;
|
||||
background: #409eff;
|
||||
cursor: pointer;
|
||||
.edit {
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
background-image: url(@/assets/images/coursewareManage/export1.png);
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
.btnText {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: rgb(255, 255, 255);
|
||||
line-height: 36px;
|
||||
.btn1text {
|
||||
color: #ffffff;
|
||||
margin-left: 5px;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
.btn2 {
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 32px;
|
||||
border: 1px solid #409eff;
|
||||
border-radius: 8px;
|
||||
cursor: pointer;
|
||||
background: #ffffff;
|
||||
.btn2text {
|
||||
color: #409eff;
|
||||
margin-left: 5px;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.pjcb_content {
|
||||
border: 1px solid #388be1;
|
||||
padding: 32px;
|
||||
border: 1px solid #409eff;
|
||||
padding: 20px;
|
||||
margin-top: 10px;
|
||||
.ant-input {
|
||||
width: 46px;
|
||||
font-size: 16px;
|
||||
color: #409eff;
|
||||
}
|
||||
.scoretext {
|
||||
color: #409eff;
|
||||
font-size: 16px;
|
||||
margin-left: 3px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
.pjcb_content :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
.content {
|
||||
margin-bottom: 24px;
|
||||
align-items: center;
|
||||
height: 50px;
|
||||
display: flex;
|
||||
}
|
||||
margin-bottom: 130px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,109 +4,87 @@
|
||||
<div class="header">
|
||||
<span class="title">创建/编辑单层项目</span>
|
||||
<router-link to="/projectmanage" class="goback">
|
||||
<span class="return"></span
|
||||
><span class="returntext">返回</span></router-link
|
||||
>
|
||||
<span class="return"></span><span class="returntext">返回</span>
|
||||
</router-link>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="main">
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
||||
<div class="inname">项目名称</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-input v-model:value="valueE" placeholder="请输入项目名称" show-count
|
||||
:maxlength="30"/>
|
||||
<a-input v-model:value="projectName" placeholder="请输入项目名称" show-count :maxlength="30" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
||||
<div class="inname">分类</div>
|
||||
</div>
|
||||
<div class="in select">
|
||||
<a-select
|
||||
:value="classifySelect"
|
||||
placeholder="四个养成"
|
||||
style="width: 100%"
|
||||
:options="classifyList"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
<a-select :getPopupContainer="triggerNode => {
|
||||
return triggerNode.parentNode || document.body
|
||||
}" v-model:value="classifySelect" placeholder="四个养成" style="width: 100%" :options="classifyList"
|
||||
@change="classificationChange" allowClear showSearch>
|
||||
</a-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
||||
<div class="inname">封面图</div>
|
||||
</div>
|
||||
<div
|
||||
class="box"
|
||||
style="
|
||||
<div class="box" style="
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border: 1px solid rgba(78, 166, 255, 1);
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
"
|
||||
>
|
||||
overflow: hidden;
|
||||
">
|
||||
<a-upload v-model:file-list="fileList" name="file" list-type="picture-card" class="avatar-uploader"
|
||||
:show-upload-list="false" action="/api/file/upload" :before-upload="beforeUpload" @change="handleChange">
|
||||
<img style="width: 100px;height: 100px;margin-bottom: 4px;margin-right: 4px;" v-if="imageUrl"
|
||||
:src="imageUrl" alt="avatar" />
|
||||
<div v-else>
|
||||
<!-- <loading-outlined v-if="loading"></loading-outlined> -->
|
||||
<!-- <plus-outlined v-else></plus-outlined> -->
|
||||
<div class="box1"></div>
|
||||
<div class="box2"></div>
|
||||
<!-- <div class="ant-upload-text"></div> -->
|
||||
</div>
|
||||
</a-upload>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
||||
<div class="inname">项目时间</div>
|
||||
</div>
|
||||
|
||||
<div class="in">
|
||||
<a-range-picker
|
||||
separator="至"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
style="width: 100%; height: 40px; border-radius: 5px"
|
||||
show-time
|
||||
/>
|
||||
<a-range-picker separator="至" :placeholder="[' 开始时间', ' 结束时间']"
|
||||
style="width: 100%; height: 40px; border-radius: 5px" show-time @change="onRangeChange" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
||||
<div class="inname">项目经理</div>
|
||||
</div>
|
||||
<div class="in select">
|
||||
<a-select
|
||||
:value="classifySelect"
|
||||
placeholder="请选择项目经理"
|
||||
style="width: 100%"
|
||||
:options="classifyList"
|
||||
allowClear
|
||||
showSearch
|
||||
></a-select>
|
||||
<a-select :getPopupContainer="triggerNode => {
|
||||
return triggerNode.parentNode || document.body
|
||||
}" :value="classifySelect1" placeholder="请选择项目经理" style="width: 100%" :options="classifyList1" allowClear
|
||||
showSearch>
|
||||
</a-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
||||
<div class="inname">资源归属</div>
|
||||
</div>
|
||||
|
||||
@@ -119,12 +97,7 @@
|
||||
<div class="inname" style="margin-top: 13px">项目说明</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-textarea
|
||||
v-model:value="valuei"
|
||||
style="height: 80px"
|
||||
placeholder="请输入说明"
|
||||
show-count :maxlength="200"
|
||||
/>
|
||||
<a-textarea v-model:value="remark" style="height: 80px" placeholder="请输入说明" show-count :maxlength="200" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="name name2">
|
||||
@@ -132,84 +105,60 @@
|
||||
<div class="inname">同步学习记录</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-radio v-model:checked="checked"
|
||||
><span
|
||||
style="
|
||||
<a-radio @click="changeChecked" v-model:checked="checked"><span style="
|
||||
width: 100%;
|
||||
color: rgba(109, 117, 132, 1);
|
||||
font-size: 14px;
|
||||
"
|
||||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||
></a-radio
|
||||
>
|
||||
">同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span></a-radio>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
||||
<div class="inname">项目级别</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="valueE"
|
||||
placeholder="集团级/组织级/现地级/部门级"
|
||||
/>
|
||||
<a-input v-model:value="valueE" placeholder="集团级/组织级/现地级/部门级" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
||||
<div class="inname">培训体系</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="valueE"
|
||||
placeholder="集团级/组织级/现地级/部门级"
|
||||
/>
|
||||
<a-input v-model:value="valueE" placeholder="集团级/组织级/现地级/部门级" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
||||
<div class="inname">是否BOEU实施</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-radio v-model:checked="checked"
|
||||
><span
|
||||
style="
|
||||
<a-radio @click="changeChecked1" v-model:checked="checked1"><span style="
|
||||
width: 100%;
|
||||
color: rgba(109, 117, 132, 1);
|
||||
font-size: 14px;
|
||||
"
|
||||
>BOEU实施</span
|
||||
></a-radio
|
||||
>
|
||||
">BOEU实施</span></a-radio>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name name2">
|
||||
<div class="namebox" style="margin-top: 8px">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
|
||||
<div class="inname">附件</div>
|
||||
</div>
|
||||
<div class="filebox">
|
||||
<div>
|
||||
<img
|
||||
class="fileimg"
|
||||
src="../../assets/images/projectadd/enclosure.png"
|
||||
/>
|
||||
<span class="filetext">上传附件</span>
|
||||
<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 v-if="fileList1.length > 5" class="filetext">上传数量已经达到最大值</span>
|
||||
<span v-else class="filetext">上传附件</span>
|
||||
<!-- </a-button> -->
|
||||
</a-upload>
|
||||
</div>
|
||||
<div class="support">
|
||||
支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip
|
||||
@@ -221,74 +170,231 @@
|
||||
<div class="name">
|
||||
<div class="inname" style="width: 50px">模板</div>
|
||||
<div class="in select" style="margin-left: 2px">
|
||||
<a-select
|
||||
v-model:value="value1"
|
||||
placeholder="请选择模板"
|
||||
:size="size"
|
||||
style="width: 100%"
|
||||
:options="options"
|
||||
></a-select>
|
||||
<a-select v-model:value="value1" placeholder="请选择模板" :size="size" style="width: 100%" :options="options">
|
||||
</a-select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<div class="btn">
|
||||
<a-button
|
||||
type="primary"
|
||||
style="width: 100px; height: 40px; border-radius: 8px"
|
||||
>确认</a-button
|
||||
>
|
||||
<a-button
|
||||
type="primary"
|
||||
ghost
|
||||
style="
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
margin-left: 14px;
|
||||
border-radius: 8px;
|
||||
"
|
||||
>取消</a-button
|
||||
>
|
||||
<a-button v-on:click="createProject" type="primary" class="btn1">确定</a-button>
|
||||
<a-button class="btn2">取消</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs } from "vue";
|
||||
import { reactive, toRefs, ref } from "vue";
|
||||
import { message } from 'ant-design-vue';
|
||||
import * as api from "../../api/index";
|
||||
|
||||
export default {
|
||||
name: "projectAdd",
|
||||
setup() {
|
||||
const state = reactive({
|
||||
classifyList: [
|
||||
{
|
||||
id: 1,
|
||||
name: "分类一",
|
||||
label: "分类一",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: "分类二",
|
||||
label: "分类二",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: "分类三",
|
||||
label: "分类三",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: "分类四",
|
||||
label: "分类四",
|
||||
},
|
||||
],
|
||||
classifySelect: null,
|
||||
classifySelectId: null,
|
||||
checked: false,
|
||||
checked1: false
|
||||
});
|
||||
|
||||
const projectName = ref('');
|
||||
|
||||
const classifyList = ref([
|
||||
{ value: 1, label: '管理者' },
|
||||
{ value: 2, label: '领军者' },
|
||||
{ value: 3, label: '产业人' },
|
||||
]);
|
||||
|
||||
let projectType = "";
|
||||
|
||||
const classificationChange = (value) => {
|
||||
console.log(`selected ${value}`);
|
||||
projectType = value;
|
||||
};
|
||||
|
||||
function getBase64(img, callback) {
|
||||
const reader = new FileReader();
|
||||
reader.addEventListener('load', () => callback(reader.result));
|
||||
reader.readAsDataURL(img);
|
||||
}
|
||||
|
||||
const fileList = ref([]);
|
||||
const fileList1 = ref([]);
|
||||
const loading = ref(false);
|
||||
const imageUrl = ref('');
|
||||
|
||||
const handleChange = (info) => {
|
||||
if (info.file.status === 'uploading') {
|
||||
loading.value = true;
|
||||
return;
|
||||
}
|
||||
if (info.file.status === 'done') {
|
||||
console.log('上传图片返回的信息 %o', info)
|
||||
// Get this url from response in real world.
|
||||
getBase64(info.file.originFileObj, (base64Url) => {
|
||||
imageUrl.value = base64Url;
|
||||
loading.value = false;
|
||||
});
|
||||
}
|
||||
if (info.file.status === 'error') {
|
||||
loading.value = false;
|
||||
message.error('upload error');
|
||||
}
|
||||
};
|
||||
|
||||
let uplodaFileCount = false;
|
||||
|
||||
const handleChange1 = (info) => {
|
||||
if (info.file.status === 'uploading') {
|
||||
loading.value = true;
|
||||
return;
|
||||
}
|
||||
if (info.file.status === 'done') {
|
||||
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;
|
||||
message.error('upload error');
|
||||
}
|
||||
};
|
||||
|
||||
const beforeUpload = (file) => {
|
||||
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
|
||||
if (!isJpgOrPng) {
|
||||
message.error('You can only upload JPG file!');
|
||||
}
|
||||
const isLt2M = file.size / 1024 / 1024 < 1;
|
||||
if (!isLt2M) {
|
||||
message.error('Image must smaller than 1MB!');
|
||||
}
|
||||
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);
|
||||
// 项目时间选择函数
|
||||
console.log('Formatted Selected Time: ', dateString);
|
||||
};
|
||||
|
||||
// 项目经理 后续接口调用
|
||||
const classifyList1 = ref([
|
||||
{ value: 1, label: '李俊国' },
|
||||
{ value: 2, label: '将小米' },
|
||||
{ value: 3, label: '刘孟君' },
|
||||
]);
|
||||
|
||||
// 资源归属 sourceBelongId 后续给接口
|
||||
|
||||
// 项目说明
|
||||
const remark = ref('');
|
||||
|
||||
|
||||
const changeChecked = () => {
|
||||
console.log(state.checked)
|
||||
state.checked ? state.checked = false : state.checked = true;
|
||||
}
|
||||
|
||||
const changeChecked1 = () => {
|
||||
console.log(state.checked1)
|
||||
state.checked1 ? state.checked1 = false : state.checked1 = true;
|
||||
}
|
||||
|
||||
const errorMsgs = {
|
||||
"name": "请输入项目名称",
|
||||
"type": "请选择项目分类",
|
||||
"picUrl": "请上传项目封面图",
|
||||
"beginTime": "请选择项目开始时间",
|
||||
"endTime": "请选择项目结束时间",
|
||||
"manager": "请选择项目经理",
|
||||
"managerId": "请选择项目经理",
|
||||
"sourceBelongId": "请选择资源归属",
|
||||
"level": "请填写项目级别",
|
||||
"systemId": "请填写项目培训体系",
|
||||
"boeFlag": "请选择是否BOE实施",
|
||||
"attach": "请上传附件"
|
||||
}
|
||||
|
||||
const createProject = () => {
|
||||
let obj = {
|
||||
"attach": "1",
|
||||
"beginTime": 0,
|
||||
"boeFlag": 0,
|
||||
"category": 0,
|
||||
"courseSyncFlag": 0,
|
||||
"endTime": 0,
|
||||
"level": 0,
|
||||
"manager": "",
|
||||
"managerId": "",
|
||||
"name": projectName["value"],
|
||||
"notice": "",
|
||||
"noticeFlag": 0,
|
||||
"parentId": 0,
|
||||
"picUrl": "",
|
||||
"projectId": 0,
|
||||
"remark": remark["value"],
|
||||
"sourceBelongId": 0,
|
||||
"status": 0,
|
||||
"systemId": 0,
|
||||
"templateId": 0,
|
||||
"type": projectType
|
||||
}
|
||||
console.log('提交的数据格式 %o', obj)
|
||||
|
||||
for (let i in obj) {
|
||||
console.log(obj[i])
|
||||
if (obj[i] === "") {
|
||||
message.destroy()
|
||||
message.warning(errorMsgs[i])
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
api.createProject(obj).then(res => {
|
||||
console.log(res)
|
||||
}).catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
};
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
projectName,
|
||||
classifyList,
|
||||
classificationChange,
|
||||
fileList,
|
||||
fileList1,
|
||||
loading,
|
||||
imageUrl,
|
||||
handleChange,
|
||||
handleChange1,
|
||||
beforeUpload,
|
||||
beforeUpload1,
|
||||
onRangeChange,
|
||||
classifyList1,
|
||||
remark,
|
||||
changeChecked,
|
||||
changeChecked1,
|
||||
uplodaFileCount,
|
||||
createProject
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
@@ -303,6 +409,7 @@ export default {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.title {
|
||||
color: #000000;
|
||||
font-size: 18px;
|
||||
@@ -311,10 +418,12 @@ export default {
|
||||
padding-left: 37px;
|
||||
//font-weight: 500;
|
||||
}
|
||||
|
||||
.goback {
|
||||
padding-right: 70px;
|
||||
//padding-top: 37px;
|
||||
position: relative;
|
||||
|
||||
.return {
|
||||
display: inline-block;
|
||||
width: 42px;
|
||||
@@ -323,6 +432,7 @@ export default {
|
||||
margin-right: 10px;
|
||||
background-image: url("../../assets/images/projectadd/return.png");
|
||||
}
|
||||
|
||||
.returntext {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
@@ -332,8 +442,10 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
|
||||
.main {
|
||||
width: 50%;
|
||||
display: flex;
|
||||
@@ -342,12 +454,14 @@ export default {
|
||||
//justify-content: center;
|
||||
float: left;
|
||||
border-right: 1px solid rgba(153, 155, 163, 0.3);
|
||||
|
||||
.name {
|
||||
width: 78%;
|
||||
// background-color: lightcoral;
|
||||
display: flex;
|
||||
margin-top: 20px;
|
||||
align-items: center;
|
||||
|
||||
//height: 40px;
|
||||
// border: 1px solid black;
|
||||
.namebox {
|
||||
@@ -356,19 +470,23 @@ export default {
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
flex-shrink: 0;
|
||||
|
||||
.nameimg {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.d {
|
||||
margin-top: 8px;
|
||||
font-size: 25px;
|
||||
color: #ff4e4e;
|
||||
}
|
||||
|
||||
.box {
|
||||
position: relative;
|
||||
margin-left: 14px;
|
||||
|
||||
.box1 {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
@@ -378,6 +496,7 @@ export default {
|
||||
margin-top: -5px;
|
||||
border-top: 2px solid rgba(78, 166, 255, 1);
|
||||
}
|
||||
|
||||
.box2 {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
@@ -388,35 +507,42 @@ export default {
|
||||
border-left: 2px solid rgba(78, 166, 255, 1);
|
||||
}
|
||||
}
|
||||
|
||||
.inname {
|
||||
color: #6f6f6f;
|
||||
font-size: 14px;
|
||||
margin-left: 7px;
|
||||
}
|
||||
|
||||
.in {
|
||||
margin-left: 14px;
|
||||
flex: 1;
|
||||
|
||||
// .ant-radio-wrapper {
|
||||
// }
|
||||
.ant-input-textarea-show-count {
|
||||
position: relative;
|
||||
height: 88px;
|
||||
}
|
||||
|
||||
.ant-input-textarea-show-count::after {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 0px;
|
||||
}
|
||||
|
||||
.ant-input {
|
||||
border-radius: 8px;
|
||||
// height: 120%;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.ant-input-affix-wrapper {
|
||||
padding: 0 11px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.ant-select-selector {
|
||||
border-radius: 5px;
|
||||
// height: 120%;
|
||||
@@ -424,20 +550,24 @@ export default {
|
||||
height: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
.filebox {
|
||||
margin-left: 14px;
|
||||
flex: 1;
|
||||
|
||||
.fileimg {
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
.filetext {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #4ea6ff;
|
||||
line-height: 36px;
|
||||
}
|
||||
|
||||
.support {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
@@ -448,9 +578,11 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.name2 {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
|
||||
.ant-input-textarea {
|
||||
.ant-input {
|
||||
height: 88px;
|
||||
@@ -458,6 +590,7 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.template {
|
||||
width: 50%;
|
||||
display: flex;
|
||||
@@ -465,6 +598,7 @@ export default {
|
||||
align-items: center;
|
||||
//justify-content: center;
|
||||
float: right;
|
||||
|
||||
.name {
|
||||
width: 78%;
|
||||
// background-color: lightcoral;
|
||||
@@ -472,27 +606,32 @@ export default {
|
||||
margin-top: 20px;
|
||||
align-items: center;
|
||||
height: 40px;
|
||||
|
||||
// border: 1px solid black;
|
||||
.d {
|
||||
margin-top: 8px;
|
||||
font-size: 25px;
|
||||
color: #ff4e4e;
|
||||
}
|
||||
|
||||
.inname {
|
||||
color: #6f6f6f;
|
||||
font-size: 14px;
|
||||
margin-left: 7px;
|
||||
width: 65px;
|
||||
}
|
||||
|
||||
.in {
|
||||
margin-left: 14px;
|
||||
width: 81%;
|
||||
|
||||
.ant-input {
|
||||
border-radius: 5px;
|
||||
// height: 120%;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.ant-select-selector {
|
||||
border-radius: 5px;
|
||||
// height: 120%;
|
||||
@@ -503,15 +642,42 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.footer {
|
||||
width: 100%;
|
||||
margin-top: 31px;
|
||||
margin-bottom: 14px;
|
||||
padding-bottom: 20px;
|
||||
|
||||
.btn {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
||||
.btn1 {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
background: #409EFF;
|
||||
color: #FFFFFF;
|
||||
margin-right: 14px;
|
||||
}
|
||||
|
||||
.btn2 {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #409EFF;
|
||||
background: #FFFFFF;
|
||||
color: #409EFF;
|
||||
}
|
||||
}
|
||||
|
||||
.text {
|
||||
color: rgba(153, 155, 163, 1);
|
||||
font-size: 14px;
|
||||
|
||||
@@ -45,9 +45,8 @@
|
||||
style="width: 270px"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btns">
|
||||
<div class="btn btn1">
|
||||
<div style="display: flex;margin-bottom: 20px">
|
||||
<div class="btnn btn1">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">搜索</div>
|
||||
</div>
|
||||
@@ -55,6 +54,10 @@
|
||||
<div class="search"></div>
|
||||
<div class="btnText">重置</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="btns">
|
||||
<div class="btn btn3" @click="showModal1">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">创建项目</div>
|
||||
@@ -339,7 +342,7 @@
|
||||
<div class="inname">项目名称:</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="value1"
|
||||
show-count
|
||||
:maxlength="30"
|
||||
placeholder="请输入项目名称"
|
||||
@@ -357,7 +360,7 @@
|
||||
<div class="inname">分类:</div>
|
||||
<div class="in">
|
||||
<a-select
|
||||
v-model:value="value"
|
||||
v-model:value="value2"
|
||||
placeholder="四个养成"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
@@ -373,7 +376,7 @@
|
||||
<div class="inname">项目经理:</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="value3"
|
||||
placeholder="请选择项目经理"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
@@ -389,7 +392,7 @@
|
||||
<div class="inname">资源归属:</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="value4"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
</div>
|
||||
@@ -453,7 +456,7 @@
|
||||
<div class="inname">子项目名称:</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="value5"
|
||||
placeholder="请输入项目名称"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
@@ -469,7 +472,7 @@
|
||||
<div class="inname">分类:</div>
|
||||
<div class="in">
|
||||
<a-select
|
||||
v-model:value="value"
|
||||
v-model:value="value6"
|
||||
placeholder="四个养成"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
@@ -485,7 +488,7 @@
|
||||
<div class="inname">子项目经理:</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="value7"
|
||||
placeholder="自动带出 可编辑"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
@@ -501,7 +504,7 @@
|
||||
<div class="inname">资源归属:</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="value8"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
</div>
|
||||
@@ -743,6 +746,14 @@ export default {
|
||||
components: { ProjOwnerShip, ProjPowerList, ProjCheckShip, ProjManageShip },
|
||||
setup() {
|
||||
const state = reactive({
|
||||
value1: "",
|
||||
value2: "",
|
||||
value3: "",
|
||||
value4: "",
|
||||
value5: "",
|
||||
value6: "",
|
||||
value7: "",
|
||||
value8: "",
|
||||
projectNameList: [
|
||||
{
|
||||
id: 1,
|
||||
@@ -2580,10 +2591,6 @@ export default {
|
||||
margin-right: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
.btns {
|
||||
display: flex;
|
||||
// flex-wrap: wrap;
|
||||
.btn {
|
||||
padding: 0px 26px 0px 26px;
|
||||
height: 38px;
|
||||
@@ -2595,6 +2602,7 @@ export default {
|
||||
justify-content: center;
|
||||
margin-right: 14px;
|
||||
flex-shrink: 0;
|
||||
cursor: pointer;
|
||||
.search {
|
||||
background-size: 100%;
|
||||
}
|
||||
@@ -2606,11 +2614,34 @@ export default {
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
.btnn {
|
||||
padding: 0px 26px 0px 26px;
|
||||
height: 38px;
|
||||
background: #409EFF;
|
||||
border-radius: 8px;
|
||||
border: 1px solid rgba(64, 158, 255, 1);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 14px;
|
||||
flex-shrink: 0;
|
||||
cursor: pointer;
|
||||
.search {
|
||||
background-size: 100%;
|
||||
}
|
||||
.btnText {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
line-height: 36px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
.btn1 {
|
||||
.search {
|
||||
width: 15px;
|
||||
height: 17px;
|
||||
background-image: url("../../assets/images/courseManage/search1.png");
|
||||
background-image: url("../../assets/images/courseManage/search0.png");
|
||||
}
|
||||
}
|
||||
.btn2 {
|
||||
@@ -2620,16 +2651,8 @@ export default {
|
||||
background-image: url("../../assets/images/courseManage/reset1.png");
|
||||
}
|
||||
}
|
||||
.btn3 {
|
||||
margin-right: 0px;
|
||||
.search {
|
||||
width: 17px;
|
||||
height: 18px;
|
||||
background-image: url("../../assets/images/courseManage/add1.png");
|
||||
}
|
||||
}
|
||||
.btn1:hover {
|
||||
background: rgba(64, 158, 255, 1);
|
||||
background: rgba(64, 158, 255, 0.76);
|
||||
.search {
|
||||
background-image: url("../../assets/images/courseManage/search0.png");
|
||||
}
|
||||
@@ -2637,23 +2660,55 @@ export default {
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
.btn1:active {
|
||||
background: #0982ff;
|
||||
}
|
||||
.btn2:hover {
|
||||
background: rgba(64, 158, 255, 1);
|
||||
background: rgba(64, 158, 255, 0.1);
|
||||
}
|
||||
.btn2:active {
|
||||
background: rgba(64, 158, 255, 0.2);
|
||||
}
|
||||
}
|
||||
.btns {
|
||||
display: flex;
|
||||
// flex-wrap: wrap;
|
||||
.btn {
|
||||
padding: 0px 26px 0px 26px;
|
||||
height: 38px;
|
||||
background: #409EFF;
|
||||
border-radius: 8px;
|
||||
border: 1px solid rgba(64, 158, 255, 1);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
justify-content: center;
|
||||
margin-right: 14px;
|
||||
flex-shrink: 0;
|
||||
.search {
|
||||
background-image: url("../../assets/images/courseManage/reset0.png");
|
||||
background-size: 100%;
|
||||
}
|
||||
.btnText {
|
||||
color: #ffffff;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
line-height: 36px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
.btn3 {
|
||||
margin-right: 0px;
|
||||
.search {
|
||||
width: 17px;
|
||||
height: 18px;
|
||||
background-image: url("../../assets/images/courseManage/add0.png");
|
||||
}
|
||||
}
|
||||
.btn3:hover {
|
||||
background: rgba(64, 158, 255, 1);
|
||||
.search {
|
||||
background-image: url("../../assets/images/courseManage/add0.png");
|
||||
}
|
||||
.btnText {
|
||||
color: #ffffff;
|
||||
background: rgba(64, 158, 255, 0.76);
|
||||
}
|
||||
.btn3:active {
|
||||
background: #0982ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -340,11 +340,6 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
background: linear-gradient(
|
||||
0deg,
|
||||
rgba(78, 166, 255, 0) 0%,
|
||||
rgba(78, 166, 255, 0.2) 100%
|
||||
);
|
||||
"
|
||||
>
|
||||
<div class="headerLeft" style="margin-left: 32px">
|
||||
@@ -845,6 +840,8 @@ export default {
|
||||
cC: false,
|
||||
cancelModal: false, //确认取消阶段弹窗
|
||||
deleteModal: false, //确认删除弹窗
|
||||
isactive: -1,
|
||||
isActive:false,
|
||||
});
|
||||
const selectProjectName = (value, index) => {
|
||||
console.log("value", value, index);
|
||||
@@ -1066,6 +1063,10 @@ export default {
|
||||
const closeDelete = () => {
|
||||
state.deleteModal = false;
|
||||
};
|
||||
const changebgc = (index) => {
|
||||
state.isactive = index;
|
||||
state.isActive = !state.isActive;
|
||||
}
|
||||
return {
|
||||
...toRefs(state),
|
||||
selectProjectName,
|
||||
@@ -1095,6 +1096,7 @@ export default {
|
||||
closeCancel,
|
||||
showDelete,
|
||||
closeDelete,
|
||||
changebgc,
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -1222,6 +1224,13 @@ export default {
|
||||
.ant-modal {
|
||||
.ant-modal-body {
|
||||
padding: 0 !important;
|
||||
.modalHeader {
|
||||
background: linear-gradient(
|
||||
0deg,
|
||||
rgba(78, 166, 255, 0) 0%,
|
||||
rgba(78, 166, 255, 0.2) 100%
|
||||
);
|
||||
}
|
||||
.modalMain {
|
||||
.ant-input-textarea-show-count {
|
||||
position: relative;
|
||||
@@ -1518,6 +1527,10 @@ export default {
|
||||
right: 16px;
|
||||
}
|
||||
}
|
||||
.bgcactive{
|
||||
opacity:1;
|
||||
transition:all .5s;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
<div class="second">
|
||||
<div
|
||||
class="taskbox"
|
||||
@click="totask"
|
||||
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
|
||||
>
|
||||
<div class="leftt">
|
||||
@@ -74,6 +75,7 @@
|
||||
</div>
|
||||
<div
|
||||
class="taskbox"
|
||||
@click="tostudent"
|
||||
style="background: linear-gradient(180deg, #ddeaff, #f0f8fe)"
|
||||
>
|
||||
<div class="leftt">
|
||||
@@ -214,13 +216,13 @@
|
||||
<div class="onerow">
|
||||
<div class="taskmain">任务大纲</div>
|
||||
<button class="btn" @click="showFaceIn">批量面授报名</button>
|
||||
<router-link to="/taskadd" class="edit">
|
||||
<button to="/taskadd" class="edit">
|
||||
<img
|
||||
class="editimg"
|
||||
src="../../assets/images/projectadd/edit.png"
|
||||
/>
|
||||
<span class="editext">编辑</span>
|
||||
</router-link>
|
||||
</button>
|
||||
</div>
|
||||
<!-- <div class="taskSyllabus">
|
||||
<a-collapse v-model:activeKey="taskSyllabusActive" accordion>
|
||||
@@ -351,7 +353,7 @@
|
||||
<div
|
||||
class="operation"
|
||||
style="cursor: pointer"
|
||||
@click="showAA"
|
||||
@click="showAA(item.course)"
|
||||
:style="{
|
||||
display:
|
||||
item.course === '直播' || item.course === '活动'
|
||||
@@ -375,6 +377,10 @@
|
||||
@click="
|
||||
item.course === '面授'
|
||||
? showCopyModal(item.course)
|
||||
: item.course === '直播'
|
||||
? showzhibModal(item.course)
|
||||
: item.course === '活动'
|
||||
? showhuodModal(item.course)
|
||||
: null
|
||||
"
|
||||
>
|
||||
@@ -409,11 +415,12 @@
|
||||
</a-collapse-panel>
|
||||
</a-collapse>
|
||||
<!-- 无数据创建任务 -->
|
||||
<div
|
||||
<router-link
|
||||
to="/taskadd"
|
||||
class="taskbox"
|
||||
style="
|
||||
background: linear-gradient(180deg, #ddeaff, #f0f8fe);
|
||||
display: none;
|
||||
display: block;
|
||||
"
|
||||
>
|
||||
<div class="leftt">
|
||||
@@ -429,7 +436,7 @@
|
||||
创建任务
|
||||
</div>
|
||||
<div class="centermain">点击创建项目任务</div>
|
||||
</div>
|
||||
</router-link>
|
||||
<!-- 无数据创建任务 -->
|
||||
</div>
|
||||
<div style="display: flex; height: 20px"></div>
|
||||
@@ -451,7 +458,7 @@
|
||||
"
|
||||
>
|
||||
<div class="groupname" style="width: 42px">姓名:</div>
|
||||
<a-input v-model:value="value" placeholder="请输入姓名" />
|
||||
<a-input v-model:value="valuestun" placeholder="请输入姓名" />
|
||||
</div>
|
||||
<div
|
||||
style="
|
||||
@@ -463,7 +470,7 @@
|
||||
>
|
||||
<div class="groupname">小组名称:</div>
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="valuestug"
|
||||
placeholder="请输入小组名称"
|
||||
/>
|
||||
</div>
|
||||
@@ -477,7 +484,7 @@
|
||||
>
|
||||
<div class="groupname" style="width: 42px">部门:</div>
|
||||
<a-select
|
||||
v-model:value="value"
|
||||
v-model:value="valuestub"
|
||||
placeholder="请选择部门"
|
||||
/>
|
||||
</div>
|
||||
@@ -490,7 +497,7 @@
|
||||
>
|
||||
<div class="groupname" style="width: 42px">学员:</div>
|
||||
<a-select
|
||||
v-model:value="value"
|
||||
v-model:value="valuegood"
|
||||
placeholder="是否为优秀学员"
|
||||
:options="goodstuList"
|
||||
/>
|
||||
@@ -551,6 +558,9 @@
|
||||
onChange: onSelectChange,
|
||||
}"
|
||||
/>
|
||||
<div class="nostu" style="display: block">
|
||||
<div class="nostuimg"></div>
|
||||
</div>
|
||||
<div class="pa">
|
||||
<a-pagination
|
||||
showSizeChanger="true"
|
||||
@@ -569,7 +579,7 @@
|
||||
<div class="groupleft">
|
||||
<div class="groupname">小组名称:</div>
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="valuestugn"
|
||||
placeholder="请输入小组名称"
|
||||
/>
|
||||
</div>
|
||||
@@ -1024,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" />
|
||||
<!-- 考试管理抽屉 -->
|
||||
@@ -1152,7 +1162,7 @@
|
||||
<div class="inname">小组名称:</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="valueaddg"
|
||||
placeholder="请输入小组名称"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
@@ -1168,7 +1178,7 @@
|
||||
<div class="inname">小组长:</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="valueaddm"
|
||||
placeholder="请输入小组长"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
@@ -1190,12 +1200,13 @@
|
||||
:closable="close"
|
||||
wrapClassName="canclestu"
|
||||
centered="true"
|
||||
@cancel="closeModal1"
|
||||
>
|
||||
<div class="delete">
|
||||
<div class="del_header"></div>
|
||||
<div class="del_main">
|
||||
<div class="header">
|
||||
<div class="icon"></div>
|
||||
<div class="icon1"></div>
|
||||
<span>提示</span>
|
||||
</div>
|
||||
<div class="body">
|
||||
@@ -1214,6 +1225,38 @@
|
||||
</a-modal>
|
||||
</div>
|
||||
<!-- 取消学员弹窗 -->
|
||||
<!-- 优秀学员弹窗 -->
|
||||
<div>
|
||||
<a-modal
|
||||
v-model:visible="canclestu1"
|
||||
:footer="null"
|
||||
:closable="close"
|
||||
wrapClassName="canclestu1"
|
||||
centered="true"
|
||||
>
|
||||
<div class="delete">
|
||||
<div class="del_header"></div>
|
||||
<div class="del_main">
|
||||
<div class="header">
|
||||
<div class="icon1"></div>
|
||||
<span>提示</span>
|
||||
</div>
|
||||
<div class="body">
|
||||
<span>您是否取消此学员优学员称号?</span>
|
||||
</div>
|
||||
<div class="del_btnbox">
|
||||
<div class="del_btn btn1">
|
||||
<div class="btnText" @click="closeModal3">取消</div>
|
||||
</div>
|
||||
<div class="del_btn btn2">
|
||||
<div class="btnText" @click="closeModal3">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
</div>
|
||||
<!-- 取消学员弹窗 -->
|
||||
<!-- 编辑弹窗 -->
|
||||
<div>
|
||||
<a-modal
|
||||
@@ -1448,6 +1491,7 @@
|
||||
:closable="closableQR"
|
||||
wrapClassName="DelModal"
|
||||
style="margin-top: 400px"
|
||||
@cancel="delete_exit"
|
||||
>
|
||||
<div class="delete" :style="{ display: delete_hs ? 'block' : 'none' }">
|
||||
<div class="del_header"></div>
|
||||
@@ -1501,6 +1545,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>
|
||||
@@ -1639,9 +1739,14 @@ export default {
|
||||
delete_hs: false, //删除弹窗
|
||||
copyModal: false, //面授二维码弹窗
|
||||
closeCopy: false, //面授二维码关闭图标
|
||||
zhibModal: false, //直播二维码弹窗
|
||||
|
||||
huodModal: false, //活动二维码弹窗
|
||||
|
||||
pubproject: false,
|
||||
stugroup: false,
|
||||
canclestu: false,
|
||||
canclestu1: false,
|
||||
checked: false,
|
||||
checked1: true,
|
||||
checked2: false,
|
||||
@@ -1649,12 +1754,18 @@ export default {
|
||||
checkedd2: false, //设置按钮2
|
||||
radioV1: "",
|
||||
radioV2: "",
|
||||
activeKey: "3",
|
||||
activeKey1: "8",
|
||||
activeKey: "1",//1:概览 2.任务...
|
||||
activeKey1: "8",//8:学员管理 9:小组管理
|
||||
activeKey2: "3",
|
||||
inputValue: 5,
|
||||
inputValue2: 5,
|
||||
inputValue3: 5,
|
||||
valueaddm: "",//创建小组输入小组长
|
||||
valueaddg:"",//创建小组输入名称
|
||||
valuestun:"",//学员管理姓名
|
||||
valuegood:"",
|
||||
valuestub:"",//学员管理部门
|
||||
valuestug:"",//学员管理小组名称
|
||||
valueName: "", //排行榜输入姓名
|
||||
valueDate: "", //排行榜输入日期
|
||||
noticeChecked: true,
|
||||
@@ -2109,6 +2220,8 @@ export default {
|
||||
showTimeText: "",
|
||||
//考试、测评页面传递参数
|
||||
showTestText: "",
|
||||
//直播、活动页面传递参数
|
||||
showkaoqinText: "",
|
||||
});
|
||||
|
||||
//学员学员管理渲染
|
||||
@@ -2184,6 +2297,13 @@ export default {
|
||||
};
|
||||
getTableDate();
|
||||
|
||||
const totask = () => {
|
||||
state.activeKey = "2";
|
||||
};
|
||||
const tostudent = () => {
|
||||
state.activeKey = "3";
|
||||
state.activeKey1 = "8";
|
||||
};
|
||||
const showModal = () => {
|
||||
state.pubproject = true;
|
||||
};
|
||||
@@ -2196,6 +2316,12 @@ export default {
|
||||
const closeModal1 = () => {
|
||||
state.canclestu = false;
|
||||
};
|
||||
const showModal3 = () => {
|
||||
state.canclestu1 = true;
|
||||
};
|
||||
const closeModal3 = () => {
|
||||
state.canclestu1 = false;
|
||||
};
|
||||
const showModal2 = () => {
|
||||
state.stugroup = true;
|
||||
};
|
||||
@@ -2212,10 +2338,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);
|
||||
};
|
||||
//新增
|
||||
@@ -2238,8 +2364,9 @@ export default {
|
||||
state.Lvisible = true;
|
||||
};
|
||||
//活动考勤的抽屉
|
||||
const showAA = () => {
|
||||
const showAA = (course) => {
|
||||
state.AAvisible = true;
|
||||
state.showkaoqinText = "【" + course + "】" + "考勤";
|
||||
};
|
||||
//作业管理的抽屉
|
||||
const showWork = () => {
|
||||
@@ -2286,6 +2413,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 = () => {
|
||||
@@ -2305,7 +2444,7 @@ export default {
|
||||
if (value.excellent === false) {
|
||||
state.canclestu = true;
|
||||
} else if (value.excellent === true) {
|
||||
state.canclestu = false;
|
||||
state.canclestu1 = true;
|
||||
}
|
||||
}}
|
||||
>
|
||||
@@ -2469,12 +2608,16 @@ export default {
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
totask,
|
||||
tostudent,
|
||||
showModal,
|
||||
closeModal,
|
||||
showModal1,
|
||||
closeModal1,
|
||||
showModal2,
|
||||
closeModal2,
|
||||
showModal3,
|
||||
closeModal3,
|
||||
showCopyModal,
|
||||
closeCopyModal,
|
||||
showTime,
|
||||
@@ -2498,6 +2641,10 @@ export default {
|
||||
cloradio2,
|
||||
studentColumns,
|
||||
delete_exit,
|
||||
showzhibModal,
|
||||
showhuodModal,
|
||||
closehuodModal,
|
||||
closezhibModal,
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -2720,7 +2867,123 @@ export default {
|
||||
padding-top: 20px;
|
||||
padding-left: 26px;
|
||||
font-size: 16px;
|
||||
.icon {
|
||||
.icon1 {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 10px;
|
||||
background-image: url(@/assets/images/coursewareManage/QR.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.canclestu1 {
|
||||
.ant-modal {
|
||||
width: 424px !important;
|
||||
height: 258px !important;
|
||||
.ant-modal-content {
|
||||
width: 424px !important;
|
||||
height: 258px !important;
|
||||
.ant-modal-close {
|
||||
margin-right: 18px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
.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;
|
||||
.icon1 {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 10px;
|
||||
@@ -2791,7 +3054,6 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.doublepro {
|
||||
.ant-modal {
|
||||
.ant-modal-body {
|
||||
@@ -3194,6 +3456,7 @@ export default {
|
||||
right: 38px;
|
||||
top: 0;
|
||||
color: #409eff;
|
||||
background: #ffffff;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
border: 1px solid #409eff;
|
||||
@@ -3202,7 +3465,6 @@ export default {
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
margin-top: -2px;
|
||||
margin-left: 25px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
.editext {
|
||||
@@ -3744,6 +4006,16 @@ export default {
|
||||
> td {
|
||||
background: rgba(250, 250, 250, 1);
|
||||
}
|
||||
.nostu {
|
||||
width: 100%;
|
||||
.nostuimg {
|
||||
margin: 75px auto;
|
||||
width: 412px;
|
||||
height: 212px;
|
||||
background-image: url(@/assets/images/taskpage/nostu.png);
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
}
|
||||
.pa {
|
||||
// left: 0;
|
||||
margin-top: 15px;
|
||||
|
||||
@@ -148,7 +148,7 @@ export default defineComponent({
|
||||
<router-link to="/libraryadd">
|
||||
<div class="jc">
|
||||
查看{" "}
|
||||
<span style="color:#E9E9E9;margin-left:8px;">|</span>
|
||||
<span style="color:#E9E9E9;margin-left:15px;">|</span>
|
||||
</div>
|
||||
</router-link>
|
||||
</div>
|
||||
@@ -164,14 +164,14 @@ export default defineComponent({
|
||||
<div class="ops1">
|
||||
<div class="jc">
|
||||
发布
|
||||
<span style="color:#E9E9E9;margin-left:8px;">|</span>
|
||||
<span style="color:#E9E9E9;margin-left:15px;">|</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ops2">
|
||||
<router-link to="/libraryadd">
|
||||
<div class="jc">
|
||||
查看
|
||||
<span style="color:#E9E9E9;margin-left:8px;">|</span>
|
||||
<span style="color:#E9E9E9;margin-left:15px;">|</span>
|
||||
</div>
|
||||
</router-link>
|
||||
</div>
|
||||
@@ -237,6 +237,7 @@ export default defineComponent({
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-left: 14px;
|
||||
cursor: pointer;
|
||||
flex-shrink: 0;
|
||||
.search {
|
||||
background-size: 100%;
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
:data-source="dataSource"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
expandRowByClick="true"
|
||||
:scroll="{ x: 1500, y: 800 }"
|
||||
:scroll="{ x: 1500}"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
/>
|
||||
@@ -108,31 +108,37 @@ export default {
|
||||
columns: [
|
||||
{
|
||||
title: '姓名',
|
||||
width: 50,
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
},
|
||||
{
|
||||
title: '部门',
|
||||
width: 50,
|
||||
dataIndex: 'department',
|
||||
key: 'department',
|
||||
},
|
||||
{
|
||||
width: 50,
|
||||
title: '岗位',
|
||||
dataIndex: 'post',
|
||||
key: 'post',
|
||||
},
|
||||
{
|
||||
title: '项目',
|
||||
width: 50,
|
||||
dataIndex: 'project',
|
||||
key: 'project',
|
||||
},
|
||||
{
|
||||
title: '学习路径',
|
||||
width: 50,
|
||||
dataIndex: 'learning',
|
||||
key: 'learning',
|
||||
},
|
||||
{
|
||||
title: '提交时间',
|
||||
width: 50,
|
||||
dataIndex: 'submit',
|
||||
key: 'submit',
|
||||
},
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
<div class="inname">调研名称</div>
|
||||
<div class="in">
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
v-model:value="valuen"
|
||||
show-count
|
||||
:maxlength="15"
|
||||
style="border-radius: 8px"
|
||||
@@ -262,6 +262,7 @@ export default {
|
||||
tableDataTotal: 20,
|
||||
pageSize: 10,
|
||||
value1: " ",
|
||||
valuen: "",
|
||||
value2: ref(),
|
||||
valueE: ref(" "),
|
||||
valueEE: ref(" "),
|
||||
|
||||
Reference in New Issue
Block a user