feat:隐藏功能

This commit is contained in:
lixg
2022-12-03 08:47:11 +08:00
17 changed files with 876 additions and 960 deletions

View File

@@ -9,6 +9,9 @@ export const projlist = (obj) => http.post('/admin/project/list', obj)
//获取待审核项目列表 //获取待审核项目列表
export const auditlist = (obj) => http.post('/admin/project/auditlist', obj) export const auditlist = (obj) => http.post('/admin/project/auditlist', obj)
//获取已审核项目列表
export const auditedlist = (obj) => http.post('/admin/project/auditedlist', obj)
//获取已审核项目列表 //获取已审核项目列表
export const listView = (obj) => http.post('/admin/project/listView', obj) export const listView = (obj) => http.post('/admin/project/listView', obj)

View File

@@ -1,221 +1,235 @@
function formatNumber(n) { function formatNumber(n) {
n = n.toString(); n = n.toString();
return n[1] ? n : "0" + n; return n[1] ? n : "0" + n;
} }
function toDate(number, format) { function toDate(number, format) {
var formateArr = ["Y", "M", "D", "h", "m", "s"]; var formateArr = ["Y", "M", "D", "h", "m", "s"];
var returnArr = []; var returnArr = [];
if (number === 0) { if (number === 0) {
return 0; return 0;
} else { } else {
var date = new Date(number * 1000); var date = new Date(number * 1000);
} }
returnArr.push(date.getFullYear()); returnArr.push(date.getFullYear());
returnArr.push(formatNumber(date.getMonth() + 1)); returnArr.push(formatNumber(date.getMonth() + 1));
returnArr.push(formatNumber(date.getDate())); returnArr.push(formatNumber(date.getDate()));
returnArr.push(formatNumber(date.getHours())); returnArr.push(formatNumber(date.getHours()));
returnArr.push(formatNumber(date.getMinutes())); returnArr.push(formatNumber(date.getMinutes()));
returnArr.push(formatNumber(date.getSeconds())); returnArr.push(formatNumber(date.getSeconds()));
for (var i in returnArr) { for (var i in returnArr) {
format = format.replace(formateArr[i], returnArr[i]); format = format.replace(formateArr[i], returnArr[i]);
} }
return format; return format;
} }
function getWeek(date) { function getWeek(date) {
//date:'Y-M-D' //date:'Y-M-D'
let time = new Date(date).getDay() let time = new Date(date).getDay()
let week; let week;
if (time == 0) week = "星期日" if (time == 0) week = "星期日"
if (time == 1) week = "星期一" if (time == 1) week = "星期一"
if (time == 2) week = "星期二" if (time == 2) week = "星期二"
if (time == 3) week = "星期三" if (time == 3) week = "星期三"
if (time == 4) week = "星期四" if (time == 4) week = "星期四"
if (time == 5) week = "星期五" if (time == 5) week = "星期五"
if (time == 6) week = "星期六" if (time == 6) week = "星期六"
return week; return week;
} }
/************************************将数字搞成带逗号的那种*********************************************/ /************************************将数字搞成带逗号的那种*********************************************/
function autoComma(number) { function autoComma(number) {
// let number = parseInt(numb) // let number = parseInt(numb)
if (number) { if (number) {
let newNum = ""; //中间变量 let newNum = ""; //中间变量
let arr = []; let arr = [];
let arr1 = []; let arr1 = [];
let num = ""; //最终结果 let num = ""; //最终结果
let isDecimal = false; //是不是小数 let isDecimal = false; //是不是小数
let decimal = 0; //小数点所在位置 let decimal = 0; //小数点所在位置
let decimalNum = ""; //小数点和以后的数据 let decimalNum = ""; //小数点和以后的数据
let negative = false; //是不是负数 let negative = false; //是不是负数
// 判断百万级别或者上亿级别 // 判断百万级别或者上亿级别
let thousand = false; let thousand = false;
let Billion = false; let Billion = false;
if ( if (
(number >= 10000 || number <= -10000) && (number >= 10000 || number <= -10000) &&
number < 100000000 && number < 100000000 &&
number > -100000000 number > -100000000
) { ) {
thousand = true; thousand = true;
number = number / 10000; number = number / 10000;
} }
if (number >= 100000000 || number <= -100000000) { if (number >= 100000000 || number <= -100000000) {
thousand = false; thousand = false;
Billion = true; Billion = true;
number = number / 100000000; number = number / 100000000;
} }
if (number < 0) { if (number < 0) {
number = Math.abs(number); number = Math.abs(number);
negative = true; 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); let numStr = JSON.stringify(number);
} // 如果传入的是小数,逗号的添加位置和整数是有区别滴
} for (let i = 0; i < numStr.length; i++) {
for (let i = 0; i < numStr.length; i++) { if (numStr[i] === ".") {
arr.push(numStr[numStr.length - i - 1]); isDecimal = true;
} decimal = i;
for (let i = 0; i < arr.length; i++) { decimalNum = numStr.slice(decimal, numStr.length);
if ((i + 1) % 3 === 0 && i + 1 !== 0 && i + 1 < arr.length) { // 保留两位小数
newNum += arr[i]; if (decimalNum.length > 2) {
newNum = newNum + ","; decimalNum = decimalNum.slice(0, 3);
} else { }
newNum += arr[i]; numStr = numStr.slice(0, decimal);
} }
} }
for (let i = 0; i < newNum.length; i++) { for (let i = 0; i < numStr.length; i++) {
arr1.push(newNum[newNum.length - i - 1]); arr.push(numStr[numStr.length - i - 1]);
} }
for (let i = 0; i < arr1.length; i++) { for (let i = 0; i < arr.length; i++) {
num += arr1[i]; if ((i + 1) % 3 === 0 && i + 1 !== 0 && i + 1 < arr.length) {
} newNum += arr[i];
if (isDecimal) { newNum = newNum + ",";
if (negative) { } else {
// num = '-' + num + decimalNum newNum += arr[i];
// return num }
if (thousand) { }
num = "-" + num + decimalNum + "万"; for (let i = 0; i < newNum.length; i++) {
return num; arr1.push(newNum[newNum.length - i - 1]);
} else if (Billion) { }
num = "-" + num + decimalNum + "亿"; for (let i = 0; i < arr1.length; i++) {
return num; 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 { } else {
num = "-" + num + decimalNum; if (negative) {
return num; // 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 {
// 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 { } else {
if (negative) { return 0;
// 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;
} //节流
function throttle(fn, delay = 200) {
var timer = null;
return function () {
console.log('throttle')
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(context, args);
}, delay);
};
} }
//把token存到cookie //把token存到cookie
//name 字段名 value 字段值 perpetual 有效期 //name 字段名 value 字段值 perpetual 有效期
const setCookie = (name, value, perpetual) => { const setCookie = (name, value, perpetual) => {
console.log('存储token到cookie') console.log('存储token到cookie')
let exdate = new Date() let exdate = new Date()
exdate.setDate(perpetual * 24 * 60 * 60 * 1000) //exdate.setDate(exdate.getDate() + 365) exdate.setDate(perpetual * 24 * 60 * 60 * 1000) //exdate.setDate(exdate.getDate() + 365)
document.cookie = `${name}=${value};expires=${exdate.toGMTString()};path=/` document.cookie = `${name}=${value};expires=${exdate.toGMTString()};path=/`
//永久有效 //永久有效
//document.cookie = name + '=' + value + ';expires=' + 'Fri, 31 Dec 9999 23:59:59 GMT' //document.cookie = name + '=' + value + ';expires=' + 'Fri, 31 Dec 9999 23:59:59 GMT'
} }
//获取cookie数据 //获取cookie数据
//先写一个方法 //先写一个方法
function getCookie(name) { function getCookie(name) {
//1.获取cookie字符串 //1.获取cookie字符串
var cookies = document.cookie; var cookies = document.cookie;
//通过;来分割字符串 //通过;来分割字符串
var cookie = cookies.split("; "); var cookie = cookies.split("; ");
// console.log('cookie', cookie) // console.log('cookie', cookie)
//遍历,使键值对匹配上 //遍历,使键值对匹配上
for (var i = 0; i < cookie.length; i++) { for (var i = 0; i < cookie.length; i++) {
var arr = cookie[i].split("token="); var arr = cookie[i].split("token=");
// console.log('arr', arr) // console.log('arr', arr)
console.log('name', name) console.log('name', name)
// if (arr[0] == name) { // if (arr[0] == name) {
// console.log('arr[1]', arr[1]) // console.log('arr[1]', arr[1])
// return arr[1]; // return arr[1];
// } // }
// console.log('arr[1]', arr[1]) // console.log('arr[1]', arr[1])
return arr[1] return arr[1]
} }
return ""; return "";
} }
//滚动加载信息 //滚动加载信息
const scrollLoad = (e) => { const scrollLoad = (e) => {
// console.log("滚动", e, b); // console.log("滚动", e, b);
const { target } = e; const {target} = e;
const scrllHeight = target.scrollHeight - target.scrollTop; const scrllHeight = target.scrollHeight - target.scrollTop;
const clientHeight = target.clientHeight; const clientHeight = target.clientHeight;
// console.log("scrllHeight", scrllHeight, clientHeight); // console.log("scrllHeight", scrllHeight, clientHeight);
if (scrllHeight === 0 && clientHeight === 0) { if (scrllHeight === 0 && clientHeight === 0) {
return 1 return 1
} else if (scrllHeight - clientHeight == 0) { } else if (scrllHeight - clientHeight == 0) {
return 2 return 2
} }
}; };
//新建延迟 //新建延迟
const commonData = { const commonData = {
timeout: 50, timeout: 50,
} }
// const organizationalTree = [ // const organizationalTree = [
// { // {
@@ -422,14 +436,15 @@ const organizationalTree = []
const iframeUrl = "https://u-pre.boe.com/pc/iframe" const iframeUrl = "https://u-pre.boe.com/pc/iframe"
export { export {
toDate, throttle,
getWeek, toDate,
autoComma, getWeek,
formatNumber, autoComma,
setCookie, formatNumber,
getCookie, setCookie,
scrollLoad, getCookie,
commonData, scrollLoad,
organizationalTree, commonData,
iframeUrl, organizationalTree,
iframeUrl,
} }

View File

@@ -1,49 +1,30 @@
<template> <template>
<a-drawer <a-drawer :visible="addevalVisible" class="drawerStyle addevalDrawer" width="80%" title="添加测评" placement="right"
:visible="addevalVisible" @after-visible-change="afterVisibleChange">
class="drawerStyle addevalDrawer"
width="80%"
title="添加测评"
placement="right"
@after-visible-change="afterVisibleChange"
>
<div class="drawerMain"> <div class="drawerMain">
<div class="header"> <div class="header">
<div class="headerTitle">{{ edit ? "编辑" : "添加" }}测评</div> <div class="headerTitle">{{ edit ? "编辑" : "添加" }}测评</div>
<img <img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
style="width: 29px; height: 29px; cursor: pointer" @click="closeDrawer" />
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
</div> </div>
<div class="contentMain"> <div class="contentMain">
<div class="main_left"> <div class="main_left">
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 3px">测评名称</span> <span style="margin-right: 3px">测评名称</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input <a-input v-model:value="inputV1" style="width: 424px; height: 32px" placeholder="请输入测评名称"
v-model:value="inputV1" maxlength="20" />
style="width: 424px; height: 32px"
placeholder="请输入测评名称"
maxlength="20"
/>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 3px">选择测评</span> <span style="margin-right: 3px">选择测评</span>
</div> </div>
@@ -52,13 +33,9 @@
选择测评 选择测评
</button> </button>
<span style="margin-left: 10px"> <span style="margin-left: 10px">
<a-tag <a-tag class="tag-style" v-if="evaluationTypeName !== ''" :closable="true" @close="delTag">{{
class="tag-style" evaluationTypeName
v-if="evaluationTypeName !== ''" }}</a-tag>
:closable="true"
@close="delTag"
>{{ evaluationTypeName }}</a-tag
>
</span> </span>
</div> </div>
</div> </div>
@@ -67,12 +44,8 @@
<span style="margin-right: 3px">有效期</span> <span style="margin-right: 3px">有效期</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-range-picker <a-range-picker style="width: 424px" v-model:value="time" format="YYYY-MM-DD HH:mm:ss"
style="width: 424px" :placeholder="[' 开始时间', ' 结束时间']" />
v-model:value="time"
format="YYYY-MM-DD HH:mm:ss"
:placeholder="[' 开始时间', ' 结束时间']"
/>
</div> </div>
</div> </div>
<div class="main_item2"> <div class="main_item2">
@@ -80,12 +53,9 @@
<span style="margin-right: 3px">测评说明</span> <span style="margin-right: 3px">测评说明</span>
</div> </div>
<div class="textarea"> <div class="textarea">
<a-textarea <a-textarea maxlength="150" v-model:value="description" placeholder="请输入测评说明"
v-model:value="description" style="width: 424px; height: 120px" allowClear />
placeholder="请输入测评说明" <span style="position:relative;top:96px;left:-54px;z-index:9999;">{{ description.length }}/150</span>
style="width: 424px; height: 120px"
allowClear
/>
</div> </div>
</div> </div>
</div> </div>
@@ -95,26 +65,23 @@
<button class="btn2" @click="creoredit">确定</button> <button class="btn2" @click="creoredit">确定</button>
</div> </div>
</div> </div>
<EvList <EvList v-model:EvalListVisible="EvalListVisible" v-model:evaluationTypeName="evaluationTypeName"
v-model:EvalListVisible="EvalListVisible" @getEvListData="checkFinish" />
v-model:evaluationTypeName="evaluationTypeName"
@getEvListData="checkFinish"
/>
<!-- <div class="aeLoading" :style="{display:addLoading?'flex':'none'}"> <!-- <div class="aeLoading" :style="{display:addLoading?'flex':'none'}">
<a-spin :spinning="addLoading" tip="添加中..." /> <a-spin :spinning="addLoading" tip="添加中..." />
</div> --> </div> -->
</a-drawer> </a-drawer>
</template> </template>
<script> <script>
import {reactive, toRefs} from "vue"; import { reactive, toRefs } from "vue";
// import { useRouter } from "vue-router"; // import { useRouter } from "vue-router";
import EvList from "./EvList.vue"; import EvList from "./EvList.vue";
import * as api from "../../api/indexEval"; import * as api from "../../api/indexEval";
import * as apitaskadd from "../../api/indexTaskadd"; import * as apitaskadd from "../../api/indexTaskadd";
import {message} from "ant-design-vue"; import { message } from "ant-design-vue";
import {RouterEditTask} from "@/api/indexTask"; import { RouterEditTask } from "@/api/indexTask";
import dayjs from "dayjs"; import dayjs from "dayjs";
import {addTempTask} from "../../api/indexTaskadd"; import { addTempTask } from "../../api/indexTaskadd";
export default { export default {
name: "AddEval", name: "AddEval",
@@ -170,7 +137,7 @@ export default {
evaluationTypeId: null, evaluationTypeId: null,
evaluationTypeName: '', evaluationTypeName: '',
description: "", description: "",
EvalListVisible: false, EvalListVisible: false
// addLoading:false, // addLoading:false,
}); });
const checkFinish = (value) => { const checkFinish = (value) => {
@@ -184,8 +151,8 @@ export default {
state.time = undefined; state.time = undefined;
state.description = ""; state.description = "";
state.evaluationTypeId = 0, state.evaluationTypeId = 0,
state.evaluationTypeName = "", state.evaluationTypeName = "",
localStorage.setItem("stageId", props.chooseStageId); localStorage.setItem("stageId", props.chooseStageId);
localStorage.setItem("chapterId", props.isactive); localStorage.setItem("chapterId", props.isactive);
}; };
const afterVisibleChange = (bool) => { const afterVisibleChange = (bool) => {
@@ -212,32 +179,32 @@ export default {
routerTaskId: props.routerTaskId || 0, routerTaskId: props.routerTaskId || 0,
type: 10, type: 10,
}) })
.then(() => { .then(() => {
//message.success(`${props.EditTestId ? "编辑" : "新增"}关卡任务成功`); //message.success(`${props.EditTestId ? "编辑" : "新增"}关卡任务成功`);
}) })
.catch(() => { .catch(() => {
//message.error(`${props.EditTestId ? "编辑" : "新增"}关卡任务失败`); //message.error(`${props.EditTestId ? "编辑" : "新增"}关卡任务失败`);
}); });
} else if (props.isLevel == 2) { } else if (props.isLevel == 2) {
await apitaskadd await apitaskadd
.addTask({ .addTask({
duration: 0, duration: 0,
flag: true, flag: true,
courseId: Number(value.evaluationId), courseId: Number(value.evaluationId),
name: value.evaluationName, name: value.evaluationName,
projectId: props.projectId, projectId: props.projectId,
projectTaskId: props.projectTaskId || 0, projectTaskId: props.projectTaskId || 0,
stageId: props.chooseStageId || 0, stageId: props.chooseStageId || 0,
type: 10, type: 10,
}) })
.then(() => { .then(() => {
message.destroy() message.destroy()
message.success(`${props.edit ? "编辑" : "新增"}阶段任务成功`); message.success(`${props.edit ? "编辑" : "新增"}阶段任务成功`);
}) })
.catch(() => { .catch(() => {
message.destroy() message.destroy()
//message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`); //message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`);
}); });
} else if (props.isLevel == 3) { } else if (props.isLevel == 3) {
await addTempTask({ await addTempTask({
courseId: Number(value.evaluationId), courseId: Number(value.evaluationId),
@@ -247,12 +214,12 @@ export default {
stageId: props.chooseStageId || 0, stageId: props.chooseStageId || 0,
type: 10, type: 10,
}) })
.then(() => { .then(() => {
//message.success(`${props.edit ? "编辑" : "新增"}阶段任务成功`); //message.success(`${props.edit ? "编辑" : "新增"}阶段任务成功`);
}) })
.catch(() => { .catch(() => {
//message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`); //message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`);
}); });
} }
}; };
//根据id获取测评信息 //根据id获取测评信息
@@ -261,24 +228,24 @@ export default {
evaluationId: props.EditEvalId, evaluationId: props.EditEvalId,
}; };
api api
.queryEvaluationDetailById(objqi) .queryEvaluationDetailById(objqi)
.then((res) => { .then((res) => {
message.destroy() message.destroy()
message.success("获取测评信息成功"); message.success("获取测评信息成功");
state.inputV1 = res.data.data.evaluationName state.inputV1 = res.data.data.evaluationName
state.evaluationTypeName = res.data.data.evaluationTypeName state.evaluationTypeName = res.data.data.evaluationTypeName
state.evaluationTypeId = res.data.data.evaluationTypeId; state.evaluationTypeId = res.data.data.evaluationTypeId;
state.time = res.data.data.evaluationStartTime ? [ state.time = res.data.data.evaluationStartTime ? [
dayjs(res.data.data.evaluationStartTime, "YYYY-MM-DD"), dayjs(res.data.data.evaluationStartTime, "YYYY-MM-DD"),
dayjs(res.data.data.evaluationEndTime, "YYYY-MM-DD"), dayjs(res.data.data.evaluationEndTime, "YYYY-MM-DD"),
] : undefined; ] : undefined;
state.description = res.data.data.evaluationExplain state.description = res.data.data.evaluationExplain
}) })
.catch((err) => { .catch((err) => {
message.destroy() message.destroy()
message.error("获取测量平信息失败"); message.error("获取测量平信息失败");
console.log(err, "erererrerererererer"); console.log(err, "erererrerererererer");
}); });
} }
const creoredit = () => { const creoredit = () => {
if (props.edit) { if (props.edit) {
@@ -287,6 +254,7 @@ export default {
createEvalText() createEvalText()
} }
} }
const editInvistText = () => { const editInvistText = () => {
if (!state.inputV1) { if (!state.inputV1) {
message.destroy(); message.destroy();
@@ -309,18 +277,18 @@ export default {
updateTime: "", updateTime: "",
}; };
api api
.updateEvaluation(objei) .updateEvaluation(objei)
.then(async (res) => { .then(async (res) => {
await updateTask(res.data.data); await updateTask(res.data.data);
closeDrawer(); closeDrawer();
ctx.emit("changeData", false); ctx.emit("changeData", false);
message.destroy(); message.destroy();
message.success("创建测评成功"); message.success("创建测评成功");
}) })
.catch(() => { .catch(() => {
message.destroy(); message.destroy();
message.success("创建测评失败"); message.success("创建测评失败");
}); });
} }
//创建测评信息 //创建测评信息
const createEvalText = () => { const createEvalText = () => {
@@ -346,18 +314,18 @@ export default {
updateTime: "", updateTime: "",
}; };
api api
.createEvaluation(obj) .createEvaluation(obj)
.then(async (res) => { .then(async (res) => {
await updateTask(res.data.data); await updateTask(res.data.data);
closeDrawer(); closeDrawer();
ctx.emit("changeData", false); ctx.emit("changeData", false);
message.destroy(); message.destroy();
message.success("创建测评成功"); message.success("创建测评成功");
}) })
.catch(() => { .catch(() => {
message.destroy(); message.destroy();
message.success("创建测评失败"); message.success("创建测评失败");
}); });
}; };
return { return {
@@ -372,7 +340,7 @@ export default {
queryInvistById, queryInvistById,
editInvistText, editInvistText,
showEvalDrawer, showEvalDrawer,
updateTask, updateTask
}; };
}, },
}; };

View File

@@ -46,10 +46,11 @@
<div class="img3"></div> <div class="img3"></div>
<div class="wz">批量删除</div> <div class="wz">批量删除</div>
</div> </div>
<div class="btn btn2"> <!-- 2022-11-30注释 后面放开 -->
<!-- <div class="btn btn2">
<div class="img2"></div> <div class="img2"></div>
<div class="wz">导出信息</div> <div class="wz">导出信息</div>
</div> </div> -->
</div> </div>
<div class="line"> <div class="line">
<div class="inline"> <div class="inline">

View File

@@ -1,11 +1,11 @@
<template> <template>
<a-drawer :visible="ProjAuditvisible" class="drawerStyle ProjectAudit" placement="right" width="60%" <a-drawer :visible="ProjAuditvisible" class="drawerStyle ProjectAudit" placement="right" width="60%"
@after-visible-change="afterVisibleChange"> @after-visible-change="afterVisibleChange">
<div class="drawerMain"> <div class="drawerMain">
<div class="header"> <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" <img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer" /> @click="closeDrawer"/>
</div> </div>
<div class="main" style="padding-right: 10px"> <div class="main" style="padding-right: 10px">
<a-tabs v-model:activeKey="activeSetKey"> <a-tabs v-model:activeKey="activeSetKey">
@@ -15,62 +15,78 @@
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>项目名称</span></div> <div class="setc_name"><span>项目名称</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ name }}</span> <span style="color: #999999">{{ projectInfo.name }}</span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>封面图</span></div> <div class="setc_name"><span>封面图</span></div>
<div class="setc_main"> <div class="setc_main">
<img style="width: 151px; height: 84px" :src="picUrl" alt="" /> <img style="width: 151px; height: 84px" :src="projectInfo.picUrl" alt=""/>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>项目时间</span></div> <div class="setc_name"><span>项目时间</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ startTime }} {{ endTime }}</span> <span style="color: #999999">{{ projectInfo.beginTime }} {{ projectInfo.endTime }}</span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>项目经理</span></div> <div class="setc_name"><span>项目经理</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ manager }}</span> <span style="color: #999999">{{ projectInfo.manager }}</span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>资源归属</span></div> <div class="setc_name"><span>资源归属</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ sourceBelongName }}</span> <span style="color: #999999">{{ projectInfo.sourceBelongName }}</span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>项目说明</span></div> <div class="setc_name"><span>项目说明</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ remark }}</span> <span style="color: #999999">{{ projectInfo.remark }}</span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>同步学习记录</span></div> <div class="setc_name"><span>同步学习记录</span></div>
<div class="setc_main"> <div class="setc_main">
<a-radio v-model:checked="checkedSty"><span <a-switch
style="color: #333333">同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程</span></a-radio> v-model:checked="projectInfo.courseSyncFlag"
:checkedValue="1"
:unCheckedValue="0"
:disabled="true"
><span
style="
width: 100%;
color: rgba(109, 117, 132, 1);
font-size: 14px;
"
>同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程</span
></a-switch>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>项目级别</span></div> <div class="setc_name"><span>项目级别</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ level }}</span> <ProjectLevel v-model:value="projectInfo.level" :disabled="true"></ProjectLevel>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>培训体系</span></div> <div class="setc_name"><span>培训体系</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999">{{ systemId }}</span> <TrainClass v-model:value="projectInfo.systemId" :disabled="true"></TrainClass>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>是否BOEU实施</span></div> <div class="setc_name"><span>是否BOEU实施</span></div>
<div class="setc_main"> <div class="setc_main">
<a-radio v-model:checked="checkedBOEU"><span style="color: #333333">BOEU实施</span></a-radio> <a-switch
v-model:checked="projectInfo.boeFlag"
:checkedValue="1"
:unCheckedValue="0"
:disabled="true"
></a-switch>
</div> </div>
</div> </div>
</div> </div>
@@ -96,11 +112,11 @@
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="sign" style="position:relative;left:70px;top:-3px;"> <div class="sign" style="position:relative;left:70px;top:-3px;">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt=""/>
</div> </div>
<div class="setc_name"><span>审核意见</span></div> <div class="setc_name"><span>审核意见</span></div>
<div class="setc_main"> <div class="setc_main">
<a-textarea v-model:value="valueSuggest" :rows="4" /> <a-textarea v-model:value="valueSuggest" :rows="4"/>
</div> </div>
</div> </div>
</div> </div>
@@ -115,15 +131,20 @@
<script> <script>
import {toRefs, reactive, onMounted} from "vue"; import {toRefs, reactive, onMounted} from "vue";
import { getTask } from "../../api/indexTaskadd"; import {getTask} from "../../api/indexTaskadd";
import { toDate } from "../../api/method"; import {toDate} from "../../api/method";
import { auditView } from "../../api/indexAudit"; import {auditView} from "../../api/indexAudit";
import { message } from "ant-design-vue"; import {message} from "ant-design-vue";
import * as api1 from "@/api/index1"; import * as api1 from "@/api/index1";
import ProjectLevel from "@/components/project/ProjectLevel";
import TrainClass from "@/components/project/TrainClass";
export default { export default {
name: "ProjectAudit", name: "ProjectAudit",
components: {}, components: {
ProjectLevel,
TrainClass,
},
props: { props: {
ProjAuditvisible: { ProjAuditvisible: {
type: Boolean, type: Boolean,
@@ -181,8 +202,9 @@ export default {
noticeFlag: null, //未改 noticeFlag: null, //未改
templateId: null, //未改 templateId: null, //未改
attach: null, attach: null,
calssifyList:[], calssifyList: [],
faceclassScene:[] faceclassScene: [],
projectInfo: {}
}); });
const closeDrawer = () => { const closeDrawer = () => {
@@ -199,6 +221,7 @@ export default {
projectId: props.chooseProject, projectId: props.chooseProject,
}).then((res) => { }).then((res) => {
console.log("get task", res.data.data); console.log("get task", res.data.data);
state.projectInfo = res.data.data.projectInfo;
let info = res.data.data.projectInfo; let info = res.data.data.projectInfo;
let start = toDate(info.beginTime / 1000, "Y-M-D h:m"); let start = toDate(info.beginTime / 1000, "Y-M-D h:m");
let end = toDate(info.endTime / 1000, "Y-M-D h:m"); let end = toDate(info.endTime / 1000, "Y-M-D h:m");
@@ -212,26 +235,26 @@ export default {
state.manager = info.manager; state.manager = info.manager;
state.remark = info.remark; state.remark = info.remark;
state.level = state.level =
info.level == 1 info.level == 1
? "集团级" ? "集团级"
: info.level == 2 : info.level == 2
? "组织级" ? "组织级"
: info.level == 3 : info.level == 3
? "现地级" ? "现地级"
: info.level == 4 : info.level == 4
? "部门级" ? "部门级"
: "-"; : "-";
state.tlevel = info.level; state.tlevel = info.level;
state.systemId = state.systemId =
info.systemId == 1 info.systemId == 1
? "集团级" ? "集团级"
: info.systemId == 2 : info.systemId == 2
? "组织级" ? "组织级"
: info.systemId == 3 : info.systemId == 3
? "现地级" ? "现地级"
: info.systemId == 4 : info.systemId == 4
? "部门级" ? "部门级"
: "-"; : "-";
state.tsystemId = info.systemId; state.tsystemId = info.systemId;
state.checkedSty = info.courseSyncFlag == 1 ? true : false; state.checkedSty = info.courseSyncFlag == 1 ? true : false;
state.courseSyncFlag = info.courseSyncFlag; state.courseSyncFlag = info.courseSyncFlag;
@@ -247,13 +270,13 @@ export default {
// state.attach = info.attach; // state.attach = info.attach;
// state.templateId = info.templateId; // state.templateId = info.templateId;
state.sourceBelong = state.sourceBelong =
info.sourceBelongId == 1 info.sourceBelongId == 1
? "项目一" ? "项目一"
: info.sourceBelongId == 2 : info.sourceBelongId == 2
? "项目二" ? "项目二"
: info.sourceBelongId == 3 : info.sourceBelongId == 3
? "项目三" ? "项目三"
: "-"; : "-";
}); });
}; };
@@ -264,7 +287,7 @@ export default {
state.showDetail = !state.showDetail; state.showDetail = !state.showDetail;
}; };
const subMit = () => { const subMit = () => {
if(!state.valueSuggest){ if (!state.valueSuggest) {
message.error(`请输入审核意见!`); message.error(`请输入审核意见!`);
return return
} }
@@ -276,16 +299,16 @@ export default {
pass: state.valuePass == "1" ? 1 : -1, pass: state.valuePass == "1" ? 1 : -1,
projectId: props.chooseProject, projectId: props.chooseProject,
}) })
.then((res) => { .then((res) => {
console.log("提交成功", res); console.log("提交成功", res);
message.destroy(); message.destroy();
message.success("提交成功"); message.success("提交成功");
closeDrawer(); closeDrawer();
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);
message.warning("提交失败"); message.warning("提交失败");
}); });
}; };
const getDictList = async (param) => api1.getDict({ const getDictList = async (param) => api1.getDict({
pageNo: 1, pageNo: 1,
@@ -293,8 +316,8 @@ export default {
setCode: param setCode: param
}).then((res) => res.data.data.rows) }).then((res) => res.data.data.rows)
onMounted(async () => { onMounted(async () => {
state.calssifyList = (await getDictList("faceclassClass")).map(e => ({ label: e.dictName, value: e.dictCode })) //内容 state.calssifyList = (await getDictList("faceclassClass")).map(e => ({label: e.dictName, value: e.dictCode})) //内容
state.faceclassScene = (await getDictList("faceclassScene")).map(e => ({ label: e.dictName, value: e.dictCode })) //场景 state.faceclassScene = (await getDictList("faceclassScene")).map(e => ({label: e.dictName, value: e.dictCode})) //场景
}); });
return { return {
...toRefs(state), ...toRefs(state),

View File

@@ -46,9 +46,15 @@ export default {
watch(state.id, () => { watch(state.id, () => {
ctx.emit('update:modelValue', state.id) ctx.emit('update:modelValue', state.id)
}) })
onMounted(() => { watch(props, () => {
state.options = [{id: props.modelValue, name: props.name}, ...store.state.orgtreeList] if (props.modelValue !== state.id) {
state.id = props.modelValue
}
}) })
onMounted(() => {
state.options = [...store.state.orgtreeList]
})
function change(key, obj) { function change(key, obj) {
ctx.emit('update:name', obj[0]) ctx.emit('update:name', obj[0])
} }

View File

@@ -33,6 +33,13 @@ export default {
options: [], options: [],
id: props.modelValue id: props.modelValue
}); });
watch(props, () => {
if (props.modelValue !== state.id) {
state.id = props.modelValue
}
})
watch(state.id,()=>{ watch(state.id,()=>{
ctx.emit('update:modelValue',state.id) ctx.emit('update:modelValue',state.id)
}) })

View File

@@ -19,8 +19,8 @@
</a-select> </a-select>
</template> </template>
<script> <script>
import {reactive, toRefs, watch} from "vue"; import {onMounted, reactive, toRefs, watch} from "vue";
import {scrollLoad} from "@/api/method"; import {scrollLoad, throttle} from "@/api/method";
import * as api1 from "@/api/index1"; import * as api1 from "@/api/index1";
export default { export default {
@@ -46,21 +46,36 @@ export default {
loading: false, loading: false,
init: false init: false
}); });
const getMemberThrottle = throttle(getMember, 500)
watch(() => state.memberParam, getMember) watch(() => state.memberParam, getMemberThrottle)
watch(() => props.value, init) watch(props, init)
onMounted(() => {
console.log('onMounted')
init()
})
function getMember() { function getMember() {
state.loading = true state.loading = true
state.options = []
getMemberData()
}
function getMemberData() {
api1.getMemberInfo(state.memberParam).then((res) => { api1.getMemberInfo(state.memberParam).then((res) => {
const list = res.data.data.rows.filter(e => !props.value?.includes(e.id + '')).map(e => ({ const list = res.data.data.rows.filter(e => !props.value?.includes(e.id + '')).map(e => ({
label: e.realName, label: e.realName,
value: e.id value: e.id
})); }));
state.options.push(...list) if (state.memberParam.pageNo === 1 && props.value) {
const arrManagerId = props.value.split(',')
const arrManager = props.name.split(',')
state.options = [...arrManager.map((e, i) => ({label: e, value: arrManagerId[i]})), ...list]
} else state.options.push(...list)
state.loading = false state.loading = false
}); });
} }
const memberScroll = (e) => { const memberScroll = (e) => {
@@ -77,13 +92,25 @@ export default {
}; };
function init() { function init() {
if (props.value && props.name) { console.log('init--', props)
const arrManager = props.name.split(',') if (props.value !== state.managerArray.join(',')) {
const arrManagerId = props.value.split(',') if (props.value) {
state.managerArray = arrManagerId const arrManager = props.name.split(',')
state.options = arrManager.map((e, i) => ({label: e, value: arrManagerId[i]})) const arrManagerId = props.value.split(',')
state.init = true state.managerArray = arrManagerId
getMember() state.options = arrManager.map((e, i) => ({label: e, value: arrManagerId[i]}))
} else {
state.managerArray = []
}
getMemberData()
return;
}
if (!props.value) {
if (!(state.options && state.options.length)) {
state.options = []
getMember()
}
return;
} }
} }

View File

@@ -33,6 +33,14 @@ export default {
watch(state.id, () => { watch(state.id, () => {
ctx.emit('update:modelValue', state.id) ctx.emit('update:modelValue', state.id)
}) })
watch(props, () => {
if (props.modelValue !== state.id) {
state.id = props.modelValue
}
})
onMounted(() => { onMounted(() => {
state.options = store.state.projectSys.map(e => ({value: parseInt(e.dictCode), label: e.dictName})) state.options = store.state.projectSys.map(e => ({value: parseInt(e.dictCode), label: e.dictName}))
}) })

View File

@@ -73,8 +73,8 @@
<span style="margin-right: 3px">基础投票数</span> <span style="margin-right: 3px">基础投票数</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-upload @change="handleChange" :multiple="true" :max-count="1" action="/manageApi/vote/baseVoteupload" <a-upload @change="handleChange" :before-upload="beforeUpload" :multiple="true" :max-count="1"
v-model:file-list="fileList"> action="/manageApi/vote/baseVoteupload" v-model:file-list="fileList">
<button class="xkbtn">点击上传</button></a-upload> <button class="xkbtn">点击上传</button></a-upload>
<div v-if="voteCount > 0"><a-tag color="processing"> <span style="font-size:14px;line-height: 33px;">{{ <div v-if="voteCount > 0"><a-tag color="processing"> <span style="font-size:14px;line-height: 33px;">{{
voteCount voteCount
@@ -218,7 +218,23 @@ export default {
}; };
// 限制文件格式上传
const beforeUpload = (obj) => {
console.log(obj)
}
const handleChange = info => { const handleChange = info => {
console.log(info.file.type, info.file.type.indexOf('sheet'))
if (info.file.type.indexOf('sheet') == -1) {
message.destroy()
message.error("请上传正确的文件格式")
console.log(state.fileList)
state.fileList = []
return
}
let resFileList = [...info.fileList]; let resFileList = [...info.fileList];
@@ -353,9 +369,9 @@ export default {
if (props.edit) { if (props.edit) {
api api
.editVote(obj) .editVote(obj)
.then(async(res) => { .then(async (res) => {
console.log("updte======"); console.log("updte======");
await updateToTask(res); await updateToTask(res);
closeDrawer(); closeDrawer();
message.destroy(); message.destroy();
message.success("修改投票信息成功") message.success("修改投票信息成功")
@@ -367,7 +383,7 @@ export default {
} else { } else {
api api
.createVote(obj) .createVote(obj)
.then(async(res) => { .then(async (res) => {
await updateToTask(res); await updateToTask(res);
closeDrawer(); closeDrawer();
message.destroy(); message.destroy();
@@ -401,6 +417,7 @@ export default {
queryStem, queryStem,
closeStem, closeStem,
handleChange, handleChange,
beforeUpload,
log, log,
}; };
}, },

View File

@@ -67,10 +67,11 @@
<div class="search"></div> <div class="search"></div>
<div class="btnText">重置</div> <div class="btnText">重置</div>
</div> </div>
<div class="btn btn3" @click="openMessage"> <!-- 2022-11-30注释 后面放开 -->
<!-- <div class="btn btn3" @click="openMessage">
<div class="search"></div> <div class="search"></div>
<div class="btnText">导出</div> <div class="btnText">导出</div>
</div> </div> -->
<div class="btn btn4" @click="of_hShow"> <div class="btn btn4" @click="of_hShow">
<div class="search"></div> <div class="search"></div>
<div class="btnText">新建课程</div> <div class="btnText">新建课程</div>
@@ -612,9 +613,7 @@
v-for="(item, index) in imgList" v-for="(item, index) in imgList"
:key="index" :key="index"
> >
<div class="file_img"> <div class="file_img"></div>
</div>
<div class="file_detail"> <div class="file_detail">
<!-- <div class="file_name"> <!-- <div class="file_name">
<span style="color: #6f6f6f">{{ item.name }}</span> <span style="color: #6f6f6f">{{ item.name }}</span>
@@ -690,9 +689,10 @@
<div class="btnText" @click="ft_exit">取消</div> <div class="btnText" @click="ft_exit">取消</div>
</div> </div>
<div class="btn btn6"> <div class="btn btn6">
<div v-if="(isEdit==0)" class="btnText" @click="handlePush">确定</div> <div v-if="isEdit == 0" class="btnText" @click="handlePush">
<div v-if="isEdit==1" class="btnText">已保存</div> 确定
</div>
<div v-if="isEdit == 1" class="btnText">已保存</div>
</div> </div>
<div class="btn btn6"> <div class="btn btn6">
<div class="btnText" @click="reviewClick">提交审核</div> <div class="btnText" @click="reviewClick">提交审核</div>
@@ -1332,7 +1332,7 @@
:tabBarStyle="{ marginLeft: '10px' }" :tabBarStyle="{ marginLeft: '10px' }"
@change="faceManageChange" @change="faceManageChange"
> >
<a-tab-pane key="1" tab="报名管理"> <!-- <a-tab-pane key="1" tab="报名管理">
<div class="b_menunav"> <div class="b_menunav">
<div class="bm_select"> <div class="bm_select">
<a-select <a-select
@@ -1347,14 +1347,7 @@
@focus="focus" @focus="focus"
@change="handleChange" @change="handleChange"
> >
<!-- <a-select-option value="status">状态</a-select-option>
<a-select-option value="passed">已通过</a-select-option>
<a-select-option value="weishenhe">
未审核
</a-select-option>
<a-select-option value="reject">
管理员拒绝
</a-select-option> -->
</a-select> </a-select>
</div> </div>
<div class="bm_input"> <div class="bm_input">
@@ -1393,8 +1386,8 @@
</div> </div>
</div> </div>
</div> </div>
</a-tab-pane> </a-tab-pane> -->
<a-tab-pane key="2" tab="学习记录"> <a-tab-pane key="1" tab="学习记录">
<div class="b_menunav"> <div class="b_menunav">
<div class="bm_select"> <div class="bm_select">
<a-select <a-select
@@ -1874,7 +1867,7 @@
<span style="margin-right: 3px">完成规则</span> <span style="margin-right: 3px">完成规则</span>
</div> </div>
<div class="b_input"> <div class="b_input">
<!-- <!--
<a-checkbox <a-checkbox
v-model:checked="regisCom" v-model:checked="regisCom"
@click="regisCom = !regisCom" @click="regisCom = !regisCom"
@@ -1932,50 +1925,48 @@
</div> </div>
</div> </div>
<div class="mbl_items12"> <div class="mbl_items12">
<div <div
class="i12_box1" class="i12_box1"
v-for="(item, index) in filesList" v-for="(item, index) in filesList"
:key="index" :key="index"
> >
<div class="file_img"> <div class="file_img"></div>
<div class="file_detail">
</div> <!-- <div class="file_name">
<div class="file_detail">
<!-- <div class="file_name">
<span style="color: #6f6f6f">{{ item.name }}</span> <span style="color: #6f6f6f">{{ item.name }}</span>
</div> --> </div> -->
<!-- 条件渲染 s --> <!-- 条件渲染 s -->
<!-- <div class="file_size"> <!-- <div class="file_size">
<span style="color: #999ba3">{{ item.size }}</span> <span style="color: #999ba3">{{ item.size }}</span>
</div> --> </div> -->
<div class="file_updata"> <div class="file_updata">
<div class="updatabox"> <div class="updatabox">
<div class="updatacolor"></div> <div class="updatacolor"></div>
<div class="updataxq">上传完成</div> <div class="updataxq">上传完成</div>
<!-- <div class="updatacolor2"></div> <!-- <div class="updatacolor2"></div>
<div class="updataxq2">上传失败</div> --> <div class="updataxq2">上传失败</div> -->
<!-- <div class="updatacolor3"></div> <!-- <div class="updatacolor3"></div>
<div class="updataxq3">正在上传</div> --> <div class="updataxq3">正在上传</div> -->
</div> </div>
<div class="upjd"> <div class="upjd">
<span style="margin: auto 5px">100%</span> <span style="margin: auto 5px">100%</span>
</div> </div>
</div> </div>
<!-- 条件渲染 e --> <!-- 条件渲染 e -->
</div> </div>
<div class="file_operation"> <div class="file_operation">
<div class="fobox"> <div class="fobox">
<span style="color: #4ea6ff" @click="handleDel2(index)"> <span style="color: #4ea6ff" @click="handleDel2(index)">
删除 删除
</span> </span>
</div> </div>
<!-- <div class="fobox"> <!-- <div class="fobox">
<span style="color: #4ea6ff">重传</span> <span style="color: #4ea6ff">重传</span>
</div> </div>
<div class="fobox"> <div class="fobox">
<span style="color: #4ea6ff">取消</span> <span style="color: #4ea6ff">取消</span>
</div> --> </div> -->
<!-- <div class="fobox"> <!-- <div class="fobox">
<span style="color: #4ea6ff; margin-right: 5px"> <span style="color: #4ea6ff; margin-right: 5px">
暂停 暂停
</span> </span>
@@ -1983,18 +1974,16 @@
<div class="fobox"> <div class="fobox">
<span style="color: #4ea6ff">取消</span> <span style="color: #4ea6ff">取消</span>
</div> --> </div> -->
</div> </div>
</div> </div>
</div> </div>
<div class="items_btn"> <div class="items_btn">
<div class="cstm_btn btn5"> <div class="cstm_btn btn5">
<div class="btnText" @click="handleCancelStu">取消</div> <div class="btnText" @click="handleCancelStu">取消</div>
</div> </div>
<div class="cstm_btn btn6"> <div class="cstm_btn btn6">
<div v-if="addLoading" class="btnText" >保存中</div> <div v-if="addLoading" class="btnText">保存中</div>
<div v-else class="btnText" @click="handleSureStu">确定</div> <div v-else class="btnText" @click="handleSureStu">确定</div>
</div> </div>
</div> </div>
</div> </div>
@@ -2085,7 +2074,8 @@
添加学员 添加学员
</span> </span>
</div> </div>
<div class="stmm_btn btn4" @click="hideShow"> <!-- 2022-11-30注释 后面放开 -->
<!-- <div class="stmm_btn btn4" @click="hideShow">
<div class="btn4_sub"> <div class="btn4_sub">
<span style="color: #4ea6ff; margin-right: 4px"> <span style="color: #4ea6ff; margin-right: 4px">
批量操作 批量操作
@@ -2122,7 +2112,7 @@
<div class="stmm_btn btn5" @click="handleExportStu"> <div class="stmm_btn btn5" @click="handleExportStu">
<div class="export"></div> <div class="export"></div>
<div class="btnText">导出</div> <div class="btnText">导出</div>
</div> </div> -->
</div> </div>
</div> </div>
<div class="stmm_i6"> <div class="stmm_i6">
@@ -2488,7 +2478,6 @@
<div class="btnText" @click="agreereject_exit">取消</div> <div class="btnText" @click="agreereject_exit">取消</div>
</div> </div>
<div class="qrm_btn btn2"> <div class="qrm_btn btn2">
<div class="btnText" @click="handleAgreeTrue">确定</div> <div class="btnText" @click="handleAgreeTrue">确定</div>
</div> </div>
</div> </div>
@@ -2546,10 +2535,8 @@
<div class="btnText" @click="delete_exit1">取消</div> <div class="btnText" @click="delete_exit1">取消</div>
</div> </div>
<div class="del_btn btn2"> <div class="del_btn btn2">
<div v-if="addLoading" class="btnText">保存中...</div>
<div v-if="addLoading" class="btnText" >保存中...</div>
<div v-else class="btnText" @click="handleDeleteExit">确定</div> <div v-else class="btnText" @click="handleDeleteExit">确定</div>
</div> </div>
</div> </div>
</div> </div>
@@ -2608,11 +2595,10 @@
classify="course" classify="course"
/> />
</div> </div>
<div class="aeLoading" :style="{display: addLoading ? 'flex' : 'none'}" >
<a-spin :spinning="addLoading" tip="保存中..." />
</div>
<div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }">
<a-spin :spinning="addLoading" tip="保存中..." />
</div>
</template> </template>
<script> <script>
import { import {
@@ -3090,25 +3076,25 @@ const columns7 = [
} }
}, },
}, },
{ // {
title: "结业状态", // title: "结业状态",
width: 100, // width: 100,
className: "h", // className: "h",
dataIndex: "overstatus", // dataIndex: "overstatus",
key: "overstatus", // key: "overstatus",
fixed: "right", // fixed: "right",
align: "center", // align: "center",
// key: "9", // // key: "9",
// align: "center", // // align: "center",
// customRender: ({ record }) => { // // customRender: ({ record }) => {
// switch (String(record.source)) { // // switch (String(record.source)) {
// case "0": // // case "0":
// return "未结业"; // // return "未结业";
// case "1": // // case "1":
// return "已结业"; // // return "已结业";
// } // // }
// }, // // },
}, // },
{ {
title: "操作", title: "操作",
width: 100, width: 100,
@@ -3137,12 +3123,12 @@ export default defineComponent({
}, },
setup() { setup() {
const state = reactive({ const state = reactive({
addLoading:false, addLoading: false,
currentPlanItem: {}, currentPlanItem: {},
teacherId:null, teacherId: null,
teacher:null, teacher: null,
selectedRowKeys7: [], selectedRowKeys7: [],
isEdit:0, isEdit: 0,
//列表表格 //列表表格
tableData1: [ tableData1: [
@@ -3383,7 +3369,6 @@ export default defineComponent({
addStudentList: null, //选中列表 addStudentList: null, //选中列表
newCourseName: null, //新建开课名称 newCourseName: null, //新建开课名称
}); });
const showStuAdd = () => { const showStuAdd = () => {
@@ -3734,13 +3719,13 @@ export default defineComponent({
const rest = () => { const rest = () => {
options4CurName.value = ""; options4CurName.value = "";
options4CurId.value = ""; options4CurId.value = "";
state.teacher =null; state.teacher = null;
state.teacherId =null; state.teacherId = null;
}; };
const handleChangeTea1 = (val) => { const handleChangeTea1 = (val) => {
console.log(787877); console.log(787877);
console.log(val); console.log(val);
rest(); rest();
getTea(); getTea();
}; };
@@ -4038,7 +4023,6 @@ export default defineComponent({
for (const keyName of checkList) { for (const keyName of checkList) {
if (!keyName) { if (!keyName) {
count++; count++;
} }
} }
return count ? false : true; return count ? false : true;
@@ -4060,13 +4044,13 @@ export default defineComponent({
state.qdms_inputV6 = ""; state.qdms_inputV6 = "";
state.imgList = []; state.imgList = [];
valueHtml.value = ""; valueHtml.value = "";
state.fileList =[]; state.fileList = [];
}; };
//保存面授课 //保存面授课
const handlePush = (param) => { const handlePush = (param) => {
//state.isEdit = 1; //state.isEdit = 1;
console.log("========",state.addLoading); console.log("========", state.addLoading);
console.log("state.imgList"); console.log("state.imgList");
console.log(state.imgList); console.log(state.imgList);
let files = ""; let files = "";
@@ -4077,8 +4061,22 @@ export default defineComponent({
} }
files = files.slice(0, files.length - 1); files = files.slice(0, files.length - 1);
console.log(files); console.log(files);
let tid = (state.teacherId==null)?(state.qdms_inputV5 ? state.qdms_inputV5 : null):state.teacherId; let tid =
console.log("state.teacherId==null",state.teacherId==null,"state.qdms_inputV5",state.qdms_inputV5,"state.teacherId",state.teacherId,"tid",tid); state.teacherId == null
? state.qdms_inputV5
? state.qdms_inputV5
: null
: state.teacherId;
console.log(
"state.teacherId==null",
state.teacherId == null,
"state.qdms_inputV5",
state.qdms_inputV5,
"state.teacherId",
state.teacherId,
"tid",
tid
);
const postData = { const postData = {
offcourseId: state.offcourseId, //不传代表新增 offcourseId: state.offcourseId, //不传代表新增
name: state.qdms_inputV1, name: state.qdms_inputV1,
@@ -4088,18 +4086,18 @@ export default defineComponent({
categoryId: state.fen_lei, categoryId: state.fen_lei,
sceneId: state.chang_jin, sceneId: state.chang_jin,
tips: state.tags_val ? state.tags_val.join(",") : null, tips: state.tags_val ? state.tags_val.join(",") : null,
teacherId:tid, //? teacherId: tid, //?
intro: state.qdms_inputV6, intro: state.qdms_inputV6,
attach: files, attach: files,
outline: valueHtml.value, outline: valueHtml.value,
//teacherId:state.teacherId , //teacherId:state.teacherId ,
}; };
console.log("===",state.teacherId,"hha",state.qdms_inputV5); console.log("===", state.teacherId, "hha", state.qdms_inputV5);
console.log("postData"); console.log("postData");
console.log(postData); console.log(postData);
const checkList = [ const checkList = [
postData.name, postData.name,
postData.targetUser, postData.targetUser,
postData.categoryId, postData.categoryId,
postData.teacherId, postData.teacherId,
@@ -4107,16 +4105,16 @@ export default defineComponent({
if (!checkVal(checkList)) { if (!checkVal(checkList)) {
message.destroy(); message.destroy();
return message.error("请输入必填项"); return message.error("请输入必填项");
}else{ } else {
state.addLoading = true; state.addLoading = true;
} }
edit(postData).then((res) => { edit(postData).then((res) => {
if (res.data.code === 200) { if (res.data.code === 200) {
getTableDate(); getTableDate();
ft_exit(); ft_exit();
rest(); rest();
state.addLoading = false; state.addLoading = false;
// console.log("res.data", res.data); // console.log("res.data", res.data);
if (param === "review") { if (param === "review") {
//新建时点击审核按钮 //新建时点击审核按钮
@@ -4140,11 +4138,10 @@ export default defineComponent({
}; };
const createkk = () => { const createkk = () => {
getTea(); getTea();
state.offcoursePlanId =null; state.offcoursePlanId = null;
state.cstm_hs = true; state.cstm_hs = true;
}; };
const handleCancelStu = () => { const handleCancelStu = () => {
state.cstm_hs = false; state.cstm_hs = false;
state.kk_eidt = false; state.kk_eidt = false;
state.xjkkradioV1 = ""; state.xjkkradioV1 = "";
@@ -4158,15 +4155,14 @@ export default defineComponent({
}; };
//保存开课 //保存开课
const handleSureStu = () => { const handleSureStu = () => {
let startTime, let startTime,
endTime = 0; endTime = 0;
if (state.xjkkinputV3) { if (state.xjkkinputV3) {
startTime = parseInt(state.xjkkinputV3[0].$d.getTime() / 1000); startTime = parseInt(state.xjkkinputV3[0].$d.getTime() / 1000);
endTime = parseInt(state.xjkkinputV3[1].$d.getTime() / 1000); endTime = parseInt(state.xjkkinputV3[1].$d.getTime() / 1000);
} }
let t=state.signCom?"1,":"0,"; let t = state.signCom ? "1," : "0,";
let p= state.comLeave?"1":"0"; let p = state.comLeave ? "1" : "0";
let type = t.concat(p); let type = t.concat(p);
const postData = { const postData = {
offcourseId: state.offcourseId, offcourseId: state.offcourseId,
@@ -4176,14 +4172,14 @@ export default defineComponent({
applyFlag: state.checked1 ? 1 : 0, applyFlag: state.checked1 ? 1 : 0,
attach: state.filesList.length ? state.filesList.join(",") : "", attach: state.filesList.length ? state.filesList.join(",") : "",
beginTime: startTime, beginTime: startTime,
completeType:type, completeType: type,
endTime: endTime, endTime: endTime,
evalFlag: state.checked4 ? 1 : 0, evalFlag: state.checked4 ? 1 : 0,
name: state.xjkkinputV1, name: state.xjkkinputV1,
signFlag: state.xjkkradioV1 === 0 ? 1 : 0, //是否允许未报名的签到:1是0否 signFlag: state.xjkkradioV1 === 0 ? 1 : 0, //是否允许未报名的签到:1是0否
// signWordFlag: state.xjkkradioV1 === 1 ? 1 : 0, //签到是否需要口令:1是0否 // signWordFlag: state.xjkkradioV1 === 1 ? 1 : 0, //签到是否需要口令:1是0否
teacherId: state.xjkkinputV4 ? state.xjkkinputV4 : "", teacherId: state.xjkkinputV4 ? state.xjkkinputV4 : "",
teacher:options4CurName.value, teacher: options4CurName.value,
}; };
console.log(postData); console.log(postData);
const checkList = [ const checkList = [
@@ -4196,22 +4192,21 @@ export default defineComponent({
if (!checkVal(checkList)) { if (!checkVal(checkList)) {
message.destroy(); message.destroy();
return message.error("请输入必填项"); return message.error("请输入必填项");
}else{ } else {
state.addLoading = true; state.addLoading = true;
console.log("state.addLoading ",state.addLoading ); console.log("state.addLoading ", state.addLoading);
} }
editPlan(postData).then((res) => { editPlan(postData).then((res) => {
if (res.data.code === 200) { if (res.data.code === 200) {
getTableDate3(); getTableDate3();
handleCancelStu(); handleCancelStu();
rest(); rest();
} }
}); });
state.addLoading = false; state.addLoading = false;
}; };
//编辑开课 //编辑开课
const handelEditStu = async (itm) => { const handelEditStu = async (itm) => {
console.log(itm); console.log(itm);
state.offcourseId = itm.offcourseId; state.offcourseId = itm.offcourseId;
state.offcoursePlanId = itm.offcoursePlanId; state.offcoursePlanId = itm.offcoursePlanId;
@@ -4232,10 +4227,10 @@ export default defineComponent({
dayjs(item.endTime, "YYYY-MM-DD HH:mm:ss"), dayjs(item.endTime, "YYYY-MM-DD HH:mm:ss"),
]; ];
options4CurId.value = item.teacherId; options4CurId.value = item.teacherId;
// (state.regisCom = item.completeType.split(",")[0] == "1" ? true : false), // (state.regisCom = item.completeType.split(",")[0] == "1" ? true : false),
(state.signCom = item.completeType.split(",")[0] == "1" ? true : false), (state.signCom = item.completeType.split(",")[0] == "1" ? true : false),
(state.comLeave = item.completeType.split(",")[1] == "1" ? true : false), (state.comLeave =
item.completeType.split(",")[1] == "1" ? true : false),
(state.checked4 = item.evalFlag === 1 ? true : false); (state.checked4 = item.evalFlag === 1 ? true : false);
state.xjkkinputV1 = item.name; state.xjkkinputV1 = item.name;
if (item.signFlag === 1) { if (item.signFlag === 1) {
@@ -4310,21 +4305,21 @@ export default defineComponent({
state.ftQR_hs = false; state.ftQR_hs = false;
state.ftsQR_hs = false; state.ftsQR_hs = false;
state.vipftQR_hs = false; state.vipftQR_hs = false;
state.addLoading =false; state.addLoading = false;
}; };
const rg_exit = () => { const rg_exit = () => {
state.rg_hs = false; state.rg_hs = false;
state.addLoading =false; state.addLoading = false;
}; };
const graduate_exit = () => { const graduate_exit = () => {
state.graduate_hs = false; state.graduate_hs = false;
state.addLoading =false; state.addLoading = false;
}; };
const agreereject_exit = () => { const agreereject_exit = () => {
state.agreereject_hs = false; state.agreereject_hs = false;
state.agreestudy_hs = false; state.agreestudy_hs = false;
state.rejectstudy_hs = false; state.rejectstudy_hs = false;
state.addLoading =false; state.addLoading = false;
}; };
const delete_exit1 = () => { const delete_exit1 = () => {
state.delete_hs = false; state.delete_hs = false;
@@ -4333,7 +4328,7 @@ export default defineComponent({
state.nouse_hs = false; state.nouse_hs = false;
state.rg_hs = false; state.rg_hs = false;
state.graduate_hs = false; state.graduate_hs = false;
state.addLoading =false; state.addLoading = false;
}; };
const handleRejectExit = (itm, type) => { const handleRejectExit = (itm, type) => {
if (type === "1") { if (type === "1") {
@@ -4388,7 +4383,6 @@ export default defineComponent({
}; };
//确认复制 //确认复制
const handleAgreeTrue = async () => { const handleAgreeTrue = async () => {
if (state.agreestudy_hs) { if (state.agreestudy_hs) {
handleStudent({ handleStudent({
offcoursePlanId: state.offcoursePlanId, offcoursePlanId: state.offcoursePlanId,
@@ -4398,7 +4392,7 @@ export default defineComponent({
}); });
getTableDate2(); getTableDate2();
delete_exit1(); delete_exit1();
state.addLoading =false; state.addLoading = false;
} }
if (state.rejectstudy_hs) { if (state.rejectstudy_hs) {
handleStudent({ handleStudent({
@@ -4409,13 +4403,12 @@ export default defineComponent({
}); });
getTableDate2(); getTableDate2();
delete_exit1(); delete_exit1();
} }
}; };
//确认复制课程 //确认复制课程
const handleDeleteExit = async () => { const handleDeleteExit = async () => {
state.addLoading =true; state.addLoading = true;
if (state.del_hs) { if (state.del_hs) {
console.log(11111111); console.log(11111111);
if (state.offcourseId && state.offcoursePlanId && state.studentId) { if (state.offcourseId && state.offcoursePlanId && state.studentId) {
@@ -4447,7 +4440,6 @@ export default defineComponent({
} }
}); });
} }
} }
if (state.copy_hs) { if (state.copy_hs) {
console.log(2222222); console.log(2222222);
@@ -4474,7 +4466,7 @@ export default defineComponent({
signFlag: item.signFlag, //是否允许未报名的签到:1是0否 signFlag: item.signFlag, //是否允许未报名的签到:1是0否
//signWordFlag: item.signWordFlag, //签到是否需要口令:1是0否 //signWordFlag: item.signWordFlag, //签到是否需要口令:1是0否
teacherId: item.teacherId, teacherId: item.teacherId,
teacher:item.teacher, teacher: item.teacher,
}; };
console.log(obj); console.log(obj);
editPlan(obj).then((res) => { editPlan(obj).then((res) => {
@@ -4505,14 +4497,13 @@ export default defineComponent({
intro: item.intro, intro: item.intro,
attach: item.attach, attach: item.attach,
outline: item.outline, outline: item.outline,
teacher:item.teacher, teacher: item.teacher,
}; };
edit(postData).then((res) => { edit(postData).then((res) => {
if (res.data.code === 200) { if (res.data.code === 200) {
getTableDate(); getTableDate();
delete_exit1(); delete_exit1();
rest(); rest();
} }
}); });
} }
@@ -4532,7 +4523,6 @@ export default defineComponent({
}); });
} }
} }
}; };
const handleDeleteKaike = (value) => { const handleDeleteKaike = (value) => {
state.offcoursePlanId = value.offcoursePlanId; state.offcoursePlanId = value.offcoursePlanId;
@@ -4577,8 +4567,8 @@ export default defineComponent({
//获取教师 //获取教师
const getTea = async () => { const getTea = async () => {
console.log("获取授课教师信息"); console.log("获取授课教师信息");
options4CurName.value =state.teacher; options4CurName.value = state.teacher;
options4CurId.value =state.teacherId; options4CurId.value = state.teacherId;
const item1 = await getMemberInfoApi({ const item1 = await getMemberInfoApi({
pageNo: state.currentPageTea1, pageNo: state.currentPageTea1,
@@ -4603,13 +4593,12 @@ export default defineComponent({
options4CurName.value = item.realName; options4CurName.value = item.realName;
state.xjkkinputV4 = item.realName; state.xjkkinputV4 = item.realName;
state.teacherId = item.id; state.teacherId = item.id;
} else if (state.offcourseId) { } else if (state.offcourseId) {
options4CurName.value = item.realName; options4CurName.value = item.realName;
state.qdms_inputV5 = item.realName; state.qdms_inputV5 = item.realName;
state.teacher = item.realName; state.teacher = item.realName;
state.teacherId =item.id; state.teacherId = item.id;
console.log("那个老师",item); console.log("那个老师", item);
} }
} }
newArr.push({ newArr.push({
@@ -4623,7 +4612,6 @@ export default defineComponent({
}; };
//编辑面授课 //编辑面授课
const handleEdit = async (itm, type) => { const handleEdit = async (itm, type) => {
state.isEdit = 0; state.isEdit = 0;
console.log(45555); console.log(45555);
console.log(itm); console.log(itm);
@@ -4653,19 +4641,19 @@ export default defineComponent({
state.teacher = item.teacher; state.teacher = item.teacher;
state.teacherId = item.teacherId; state.teacherId = item.teacherId;
state.qdms_inputV6 = item.intro; state.qdms_inputV6 = item.intro;
if(item.attach==""){ if (item.attach == "") {
state.imgList =[]; state.imgList = [];
}else{ } else {
if (item.attach.indexOf(",")) { if (item.attach.indexOf(",")) {
const arr = item.attach.split(","); const arr = item.attach.split(",");
arr.forEach((item) => { arr.forEach((item) => {
state.imgList.push({ img: item }); state.imgList.push({ img: item });
}); });
} else { } else {
state.imgList = [{ img: item.attach }]; state.imgList = [{ img: item.attach }];
} }
} }
valueHtml.value = item.outline; valueHtml.value = item.outline;
getTea(); getTea();
@@ -4874,9 +4862,9 @@ export default defineComponent({
} }
}; };
const submitReview = (id) => { const submitReview = (id) => {
state.addLoading =true; state.addLoading = true;
if(id==""){ if (id == "") {
return message.error("请先完成保存"); return message.error("请先完成保存");
} }
let obj = { let obj = {
@@ -4890,8 +4878,7 @@ export default defineComponent({
ft_exit(); ft_exit();
rest(); rest();
getTableDate(); getTableDate();
state.addLoading =false; state.addLoading = false;
} }
}); });
}; };
@@ -5098,7 +5085,7 @@ export default defineComponent({
}); });
</script> </script>
<style lang="scss"> <style lang="scss">
.aeLoading{ .aeLoading {
z-index: 10000; z-index: 10000;
} }
.courseManage { .courseManage {
@@ -5259,7 +5246,7 @@ export default defineComponent({
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21); box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
position: absolute; position: absolute;
left: 50%; left: 50%;
top:-100%; top: -100%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
.of_header { .of_header {
position: absolute; position: absolute;
@@ -5476,91 +5463,91 @@ export default defineComponent({
} }
} }
.mbl_items12 { .mbl_items12 {
width: 440px; width: 440px;
margin-left: 100px; margin-left: 100px;
.i12_box1 { .i12_box1 {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 17px 0px 17px 21px; padding: 17px 0px 17px 21px;
border: 1px solid #eff4fc; border: 1px solid #eff4fc;
border-radius: 8px; border-radius: 8px;
margin-bottom: 10px; margin-bottom: 10px;
.file_img { .file_img {
width: 27px; width: 27px;
height: 32px; height: 32px;
background-image: url(@/assets/images/coursewareManage/imgs.png); background-image: url(@/assets/images/coursewareManage/imgs.png);
margin-right: 22px; margin-right: 22px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.file_detail { .file_detail {
width: 250px; width: 250px;
margin-right: 21px; margin-right: 21px;
.file_updata { .file_updata {
display: flex; display: flex;
align-items: center; align-items: center;
.updatabox { .updatabox {
position: relative; position: relative;
width: 230px; width: 230px;
height: 5px; height: 5px;
background-color: rgba(192, 192, 192, 0.25); background-color: rgba(192, 192, 192, 0.25);
border-radius: 3px; border-radius: 3px;
.updatacolor { .updatacolor {
position: absolute; position: absolute;
left: 0; left: 0;
width: 100%; width: 100%;
height: 5px; height: 5px;
background-color: #57c887; background-color: #57c887;
border-radius: 3px; border-radius: 3px;
}
.updatacolor2 {
position: absolute;
left: 0;
width: 80%;
height: 5px;
background-color: #ff7474;
border-radius: 3px;
}
.updatacolor3 {
position: absolute;
left: 0;
width: 60%;
height: 5px;
background-color: #388be1;
border-radius: 3px;
}
.updataxq {
position: absolute;
right: 2px;
top: -30px;
color: #57c887;
}
.updataxq2 {
position: absolute;
right: 2px;
top: -30px;
color: #ff7474;
}
.updataxq3 {
position: absolute;
right: 2px;
top: -30px;
color: #388be1;
}
}
}
}
.file_operation {
display: flex;
.fobox {
margin-right: 5px;
cursor: pointer;
}
}
}
} }
.updatacolor2 {
position: absolute;
left: 0;
width: 80%;
height: 5px;
background-color: #ff7474;
border-radius: 3px;
}
.updatacolor3 {
position: absolute;
left: 0;
width: 60%;
height: 5px;
background-color: #388be1;
border-radius: 3px;
}
.updataxq {
position: absolute;
right: 2px;
top: -30px;
color: #57c887;
}
.updataxq2 {
position: absolute;
right: 2px;
top: -30px;
color: #ff7474;
}
.updataxq3 {
position: absolute;
right: 2px;
top: -30px;
color: #388be1;
}
}
}
}
.file_operation {
display: flex;
.fobox {
margin-right: 5px;
cursor: pointer;
}
}
}
}
.items_fj { .items_fj {
margin-bottom: 1px; margin-bottom: 1px;
} }
@@ -6297,7 +6284,7 @@ export default defineComponent({
.file_img { .file_img {
width: 27px; width: 27px;
height: 32px; height: 32px;
background-image: url(@/assets/images/coursewareManage/imgs.png); background-image: url(@/assets/images/coursewareManage/imgs.png);
margin-right: 22px; margin-right: 22px;
img { img {
width: 100%; width: 100%;
@@ -6869,7 +6856,8 @@ export default defineComponent({
.stmm_btn { .stmm_btn {
width: 100px; width: 100px;
height: 40px; height: 40px;
margin-right: 14px; // <!-- 2022-11-30注释 后面放开 -->
// margin-right: 14px;
background: #ffffff; background: #ffffff;
border: 1px solid #4ea6ff; border: 1px solid #4ea6ff;
border-radius: 8px; border-radius: 8px;

View File

@@ -15,56 +15,48 @@
<div class="inpbox"> <div class="inpbox">
<div class="inpbox1"> <div class="inpbox1">
<a-input <a-input
v-model:value="valueproj" v-model:value="valueproj"
style=" style="
width: 270px; width: 270px;
height: 40px; height: 40px;
border-radius: 8px; border-radius: 8px;
margin-right: 14px; margin-right: 14px;
" "
placeholder="请输入项目名称/所属项目" placeholder="请输入项目名称/所属项目"
/> />
</div> </div>
<div class="inpbox1"> <div class="inpbox1">
<a-input <a-input
v-model:value="valuename" v-model:value="valuename"
style=" style="
width: 270px; width: 270px;
height: 40px; height: 40px;
border-radius: 8px; border-radius: 8px;
margin-right: 14px; margin-right: 14px;
" "
placeholder="请输入项目经理" placeholder="请输入项目经理"
/> />
</div> </div>
<div class="inpbox1"> <div class="inpbox1">
<a-input <a-input
v-model:value="valuecreater" v-model:value="valuecreater"
style=" style="
width: 270px; width: 270px;
height: 40px; height: 40px;
border-radius: 8px; border-radius: 8px;
margin-right: 14px; margin-right: 14px;
" "
placeholder="请输入创建人" placeholder="请输入创建人"
/> />
</div> </div>
<div class="inpbox1"> <div class="inpbox1">
<a-range-picker <a-range-picker
v-model:value="valueDate" v-model:value="valueDate"
style="border-radius: 8px; height: 40px; margin-left: 5px" style="border-radius: 8px; height: 40px; margin-left: 5px"
:placeholder="[' 开始时间', ' 结束时间']" :placeholder="[' 开始时间', ' 结束时间']"
@change="rankTimeChange" valueFormat="X"
/> />
</div> </div>
<!-- <div class="inpbox1">-->
<!-- <a-select-->
<!-- v-model:value="valuestate"-->
<!-- placeholder="请选择审核状态"-->
<!-- @change="handleChangeproj"-->
<!-- :options="optionsproj"-->
<!-- />-->
<!-- </div>-->
</div> </div>
</div> </div>
<div class="tmplh_btn"> <div class="tmplh_btn">
@@ -81,26 +73,26 @@
<div class="tmpl_body"> <div class="tmpl_body">
<div class="tmpl_tabbox"> <div class="tmpl_tabbox">
<a-table <a-table
:columns="columns1" :columns="columns1"
:data-source="tableData1" :data-source="tableData1"
:loading="tableDataTotal === -1 ? true : false" :loading="tableDataTotal === -1 ? true : false"
expandRowByClick="true" expandRowByClick="true"
@expand="expandTable" @expand="expandTable"
:scroll="{ x: 1300 }" :scroll="{ x: 1300 }"
:pagination="false" :pagination="false"
/> />
</div> </div>
<div class="tableBox"> <div class="tableBox">
<div class="pa"> <div class="pa">
<a-pagination <a-pagination
v-if="total > 10" v-if="total > 10"
showSizeChanger="true" showSizeChanger="true"
show-quick-jumper show-quick-jumper
:pageSize="pageSize" :pageSize="pageSize"
v-model:current="currentPage" v-model:current="currentPage"
:total="total" :total="total"
class="pagination" class="pagination"
@change="changePagination" @change="changePagination"
/> />
</div> </div>
</div> </div>
@@ -108,11 +100,11 @@
</div> </div>
<!-- 审核日志弹窗 --> <!-- 审核日志弹窗 -->
<a-modal <a-modal
v-model:visible="projAuditModal" v-model:visible="projAuditModal"
:footer="null" :footer="null"
:closable="closeBack" :closable="closeBack"
wrapClassName="projAuditModal" wrapClassName="projAuditModal"
centered="true" centered="true"
> >
<div class="delete"> <div class="delete">
<div class="del_header"></div> <div class="del_header"></div>
@@ -124,14 +116,14 @@
</div> </div>
<div class="body"> <div class="body">
<a-table <a-table
style="width: 90%" style="width: 90%"
:columns="columnsAudit" :columns="columnsAudit"
:data-source="tableDataAudit" :data-source="tableDataAudit"
:loading="tableDataTotalAudit === -1 ? true : false" :loading="tableDataTotalAudit === -1 ? true : false"
expandRowByClick="true" expandRowByClick="true"
:scroll="{ y: 150 }" :scroll="{ y: 150 }"
@expand="expandTable" @expand="expandTable"
:pagination="false" :pagination="false"
/> />
</div> </div>
<div class="del_btnbox"> <div class="del_btnbox">
@@ -148,9 +140,8 @@
</div> </div>
</template> </template>
<script> <script>
import { reactive, toRefs, onMounted } from "vue"; import {reactive, toRefs, onMounted} from "vue";
import { listView, auditList } from "../../api/indexAudit"; import {listView, auditList, auditlist, auditedlist} from "../../api/indexAudit";
import { toDate } from "@/api/method";
export default { export default {
name: "ProjectViewed", name: "ProjectViewed",
@@ -180,8 +171,8 @@ export default {
columns1: [ columns1: [
{ {
title: "序号", title: "序号",
dataIndex: "number", dataIndex: "projectId",
key: "number", key: "projectId",
align: "center", align: "center",
}, },
{ {
@@ -193,8 +184,8 @@ export default {
{ {
title: "所属项目", title: "所属项目",
dataIndex: "sourceBelongName", dataIndex: "topName",
key: "sourceBelongName", key: "topName",
align: "center", align: "center",
width: "10%", width: "10%",
}, },
@@ -209,23 +200,24 @@ export default {
dataIndex: "status", dataIndex: "status",
key: "status", key: "status",
align: "center", align: "center",
customRender: ({record: {status}}) => <div>{{2: '审核通过', 3: '审核拒绝'}[status]}</div>,
}, },
{ {
title: "创建人", title: "创建人",
dataIndex: "creater", dataIndex: "createName",
key: "creater", key: "createName",
align: "center", align: "center",
}, },
{ {
title: "审核时间", title: "审核时间",
dataIndex: "time", dataIndex: "updateTime",
key: "time", key: "updateTime",
align: "center", align: "center",
}, },
{ {
title: "审核说明", title: "审核说明",
dataIndex: "msg", dataIndex: "description",
key: "msg", key: "description",
align: "center", align: "center",
}, },
@@ -236,16 +228,16 @@ export default {
align: "center", align: "center",
customRender: (value) => { customRender: (value) => {
return ( return (
<div> <div>
<span <span
onClick={() => { onClick={() => {
showProjAuditModal(value.record.id); showProjAuditModal(value.record.auditList);
}} }}
style="cursor:pointer;color:#387DF7" style="cursor:pointer;color:#387DF7"
> >
审核日志 审核日志
</span> </span>
</div> </div>
); );
}, },
}, },
@@ -254,23 +246,25 @@ export default {
columnsAudit: [ columnsAudit: [
{ {
title: "审核人", title: "审核人",
dataIndex: "name", dataIndex: "createName",
key: "name", key: "createName",
align: "center", align: "center",
}, },
{ {
title: "审核状态", title: "审核状态",
dataIndex: "belong", dataIndex: "status",
key: "belong", key: "status",
align: "center", align: "center",
customRender: ({record: {status}}) => <div>{{'2': '审核通过', '-2': '审核拒绝'}[(status + '')]}</div>,
}, },
{ {
title: "审核时间", title: "审核时间",
dataIndex: "time", dataIndex: "createTime",
key: "time", key: "createTime",
align: "center", align: "center",
width: 220
}, },
{ {
@@ -286,124 +280,21 @@ export default {
}); });
const getProjList = () => { const getProjList = () => {
let objn = { let objn = {
beginTime: state.valueDate == undefined ? "" : Date.parse(state.valueDate[0]) , beginTime: state.valueDate ? state.valueDate[0] : '',
endTime: state.valueDate == undefined ? "" : Date.parse(state.valueDate[1]), endTime: state.valueDate ? state.valueDate[1] : '',
createName: state.valuecreater, createName: state.valuecreater,
manager: state.valuename, manager: state.valuename,
name: state.valueproj, name: state.valueproj,
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: state.pageSize, pageSize: state.pageSize,
status: 0, status: 1,
}; };
listView(objn) auditedlist(objn).then((res) => {
.then((res) => { let result = res.data.data;
console.log("获取已审核项目成功", res.data.data.rows); state.total = res.data.data.total;
let result = res.data.data; state.tableData1 = result.rows
state.total = res.data.data.total; })
setTableData(result.rows);
})
.catch((err) => {
console.log("获取已审核项目失败", err);
});
}; };
const setTableData = (tabledata) => {
let data = tabledata;
let array = [];
data.map((item,index) => {
if(item.type == 3){
let obj = {
key:index+1,
number: item.projectId,
name: item.name,
belong: "",
manager: item.manager || "-",
sourceBelongName: item.sourceBelongName,
status:
item.status == 0
? "草稿"
: item.status == 1
? "已发布"
: item.status == 2
? "已结束"
: "-",
creater: item.createName,
time: toDate(item.beginTime, "Y-M-D h:m"),
msg: item.description || "-",
id: item.projectId,
};
array.push(obj);
} else {
let obj = {
key:index+1,
number: item.projectId,
name: item.name,
belong: "",
sourceBelongName: item.sourceBelongName,
manager: item.manager || "-",
status:
item.status == 0
? "草稿"
: item.status == 1
? "已发布"
: item.status == 2
? "已结束"
: "-",
creater: item.createName,
time: toDate(item.beginTime, "Y-M-D h:m"),
msg: item.description || "-",
id: item.projectId,
children: item.subList ? setTableData(item.subList) : [] ,
};
array.push(obj);
}
});
state.tableData1 = array;
return array
};
// const getName = (item) => {
// if (
// Object.prototype.hasOwnProperty.call(item.subList[0], "name") &&
// !Object.prototype.hasOwnProperty.call(
// item.subList[0].subList[0],
// "name"
// )
// ) {
// // 两层
// return item.subList[0].name;
// } else if (
// Object.prototype.hasOwnProperty.call(item.subList[0], "name") &&
// Object.prototype.hasOwnProperty.call(item.subList[0].subList[0], "name")
// ) {
// //三层
// return item.subList[0].subList[0].name;
// // return item.name
// } else {
// // 单层
// return item.name;
// }
// };
// const getBelong = (item) => {
// if (
// Object.prototype.hasOwnProperty.call(item.subList[0], "name") &&
// !Object.prototype.hasOwnProperty.call(
// item.subList[0].subList[0],
// "name"
// )
// ) {
// // 两层
// return item.name;
// } else if (
// Object.prototype.hasOwnProperty.call(item.subList[0], "name") &&
// Object.prototype.hasOwnProperty.call(item.subList[0].subList[0], "name")
// ) {
// //三层
// return item.subList[0].name + "/" + item.subList[0].subList[0].name;
// // return item.name
// } else {
// // 单层
// return item.name;
// }
// };
const changePagination = (pagina) => { const changePagination = (pagina) => {
state.currentPage = pagina; state.currentPage = pagina;
getProjList(); getProjList();
@@ -419,21 +310,9 @@ export default {
const closeProjAuditModal = () => { const closeProjAuditModal = () => {
state.projAuditModal = false; state.projAuditModal = false;
}; };
const showProjAuditModal = (id) => { const showProjAuditModal = (data) => {
state.tableDataAudit = data
state.projAuditModal = true; state.projAuditModal = true;
auditList({
pageNo: 1,
pageSize: 10,
project_id: id,
})
.then((res) => {
console.log("获取到了审核日志列表", res);
let result = res.data.data;
setAudit(result.rows);
})
.catch((err) => {
console.log("审核日志列表获取失败", err);
});
}; };
const setAudit = (table) => { const setAudit = (table) => {
let data = table; let data = table;
@@ -442,13 +321,13 @@ export default {
let obj = { let obj = {
name: item.create_name, name: item.create_name,
belong: belong:
item.status == 1 item.status == 1
? "提交待审核" ? "提交待审核"
: item.status == 2 : item.status == 2
? "通过" ? "通过"
: item.status == 3 : item.status == 3
? "拒绝" ? "拒绝"
: "-", : "-",
time: item.createTime, time: item.createTime,
description: item.description, description: item.description,
}; };
@@ -464,7 +343,6 @@ export default {
return { return {
...toRefs(state), ...toRefs(state),
getProjList, getProjList,
setTableData,
changePagination, changePagination,
reset, reset,
closeProjAuditModal, closeProjAuditModal,
@@ -479,13 +357,16 @@ export default {
.ant-modal { .ant-modal {
width: 816px !important; width: 816px !important;
min-height: 420px !important; min-height: 420px !important;
.ant-modal-content { .ant-modal-content {
width: 816px !important; width: 816px !important;
min-height: 420px !important; min-height: 420px !important;
.ant-modal-body { .ant-modal-body {
width: 816px !important; width: 816px !important;
min-height: 420px !important; min-height: 420px !important;
padding: 0 !important; padding: 0 !important;
.delete { .delete {
z-index: 999; z-index: 999;
width: 816px; width: 816px;
@@ -502,19 +383,22 @@ export default {
width: calc(100%); width: calc(100%);
height: 68px; height: 68px;
background: linear-gradient( background: linear-gradient(
rgba(78, 166, 255, 0.2) 0%, rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100% rgba(78, 166, 255, 0) 100%
); );
} }
.del_main { .del_main {
width: 100%; width: 100%;
position: relative; position: relative;
.header { .header {
display: flex; display: flex;
align-items: center; align-items: center;
padding-top: 20px; padding-top: 20px;
padding-left: 26px; padding-left: 26px;
font-size: 16px; font-size: 16px;
.icon { .icon {
width: 16px; width: 16px;
height: 16px; height: 16px;
@@ -522,6 +406,7 @@ export default {
background-image: url(@/assets/images/taskpage/gan.png); background-image: url(@/assets/images/taskpage/gan.png);
background-size: 100% 100%; background-size: 100% 100%;
} }
.close_exit { .close_exit {
position: absolute; position: absolute;
right: 42px; right: 42px;
@@ -532,6 +417,7 @@ export default {
background-size: 100% 100%; background-size: 100% 100%;
} }
} }
.body { .body {
width: 100%; width: 100%;
margin: 34px auto 56px auto; margin: 34px auto 56px auto;
@@ -541,9 +427,11 @@ export default {
flex-direction: column; flex-direction: column;
// background-color: red; // background-color: red;
position: relative; position: relative;
.ant-table-empty { .ant-table-empty {
width: 100% !important; width: 100% !important;
} }
.back { .back {
position: absolute; position: absolute;
top: 30px; top: 30px;
@@ -552,10 +440,12 @@ export default {
color: #666666; color: #666666;
} }
} }
.del_btnbox { .del_btnbox {
display: flex; display: flex;
margin: 30px auto; margin: 30px auto;
justify-content: center; justify-content: center;
.del_btn { .del_btn {
width: 100px; width: 100px;
height: 40px; height: 40px;
@@ -567,17 +457,20 @@ export default {
flex-shrink: 0; flex-shrink: 0;
cursor: pointer; cursor: pointer;
.btnText { .btnText {
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
line-height: 40px; line-height: 40px;
} }
} }
.btn1 { .btn1 {
border: 1px solid rgba(64, 158, 255, 1); border: 1px solid rgba(64, 158, 255, 1);
color: #4ea6ff; color: #4ea6ff;
margin-right: 14px; margin-right: 14px;
} }
.btn2 { .btn2 {
background-color: #4ea6ff; background-color: #4ea6ff;
color: #ffffff; color: #ffffff;
@@ -589,10 +482,13 @@ export default {
} }
} }
} }
.projectviewed { .projectviewed {
width: 100%; width: 100%;
.tmpl { .tmpl {
width: 100%; width: 100%;
.tmpl_header { .tmpl_header {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@@ -601,33 +497,39 @@ export default {
margin-left: 32px; margin-left: 32px;
margin-right: 32px; margin-right: 32px;
.tmplh_inp { .tmplh_inp {
.inpbox { .inpbox {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
margin-top: 42px; margin-top: 42px;
.inpbox1 { .inpbox1 {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
margin-right: 24px; margin-right: 24px;
margin-top: 10px; margin-top: 10px;
.ant-select-selector { .ant-select-selector {
border-radius: 8px; border-radius: 8px;
width: 270px; width: 270px;
height: 40px; height: 40px;
padding-top: 5px; padding-top: 5px;
} }
span { span {
white-space: nowrap; white-space: nowrap;
} }
} }
} }
} }
.tmplh_btn { .tmplh_btn {
display: flex; display: flex;
// margin-left: 38px; // margin-left: 38px;
margin-top: 32px; margin-top: 32px;
.btn { .btn {
padding: 0px 26px 0px 26px; padding: 0px 26px 0px 26px;
height: 38px; height: 38px;
@@ -638,72 +540,90 @@ export default {
margin-right: 14px; margin-right: 14px;
cursor: pointer; cursor: pointer;
flex-shrink: 0; flex-shrink: 0;
.search { .search {
background-size: 100%; background-size: 100%;
} }
.btnText { .btnText {
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
line-height: 36px; line-height: 36px;
margin-left: 5px; margin-left: 5px;
} }
.btnText1 { .btnText1 {
color: rgb(255, 255, 255); color: rgb(255, 255, 255);
} }
.btnText2 { .btnText2 {
color: rgba(64, 158, 255, 1); color: rgba(64, 158, 255, 1);
} }
} }
.btn1 { .btn1 {
background: #409eff; background: #409eff;
.search { .search {
width: 15px; width: 15px;
height: 17px; height: 17px;
background-image: url("../../assets/images/courseManage/search0.png"); background-image: url("../../assets/images/courseManage/search0.png");
} }
} }
.btn2 { .btn2 {
background: #ffffff; background: #ffffff;
border: 1px solid #388be1; border: 1px solid #388be1;
.search { .search {
width: 16px; width: 16px;
height: 18px; height: 18px;
background-image: url("../../assets/images/courseManage/reset1.png"); background-image: url("../../assets/images/courseManage/reset1.png");
} }
} }
.btn1:hover { .btn1:hover {
background: rgb(255, 255, 255); background: rgb(255, 255, 255);
border: 1px solid #388be1; border: 1px solid #388be1;
.search { .search {
background-image: url("../../assets/images/courseManage/search1.png"); background-image: url("../../assets/images/courseManage/search1.png");
} }
.btnText { .btnText {
color: rgba(64, 158, 255, 1); color: rgba(64, 158, 255, 1);
} }
} }
.btn2:hover { .btn2:hover {
background: rgba(64, 158, 255, 1); background: rgba(64, 158, 255, 1);
.search { .search {
background-image: url("../../assets/images/courseManage/reset0.png"); background-image: url("../../assets/images/courseManage/reset0.png");
} }
.btnText { .btnText {
color: #ffffff; color: #ffffff;
} }
} }
} }
} }
.tmpl_body { .tmpl_body {
padding: 0px 30px; padding: 0px 30px;
.tmpl_tabbox { .tmpl_tabbox {
.operation { .operation {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
color: #4ea6ff; color: #4ea6ff;
.nselect { .nselect {
justify-content: center; justify-content: center;
align-items: center; align-items: center;
display: flex; display: flex;
.jc { .jc {
margin-left: 20px; margin-left: 20px;
white-space: nowrap; white-space: nowrap;
@@ -712,6 +632,7 @@ export default {
} }
} }
} }
.pa { .pa {
width: 100%; width: 100%;
margin-top: 20px; margin-top: 20px;

View File

@@ -207,72 +207,6 @@ export default {
console.log("获取待审核项目失败", err); console.log("获取待审核项目失败", err);
}); });
}; };
const setProjList = (tableData) => {
let data = tableData;
let array = [];
data.map((item, index) => {
if (item.type == 3) {
let obj = {
key: index + 1,
number: item.projectId,
name: item.name,
belong: item.parentId,
sourceBelongName: item.sourceBelongName,
manager: item.manager || "-",
status:
item.status == 0
? "草稿"
: item.status == 1
? "待审核"
: item.status == 2
? "通过"
: item.status == 3
? "发布"
: item.status == -1
? "已结束"
: item.status == -2
? "拒绝"
: "-",
creater: item.createName,
time: item.createTime,
projectId: item.projectId,
createId: item.createId,
};
array.push(obj);
} else {
let obj = {
key: index + 1,
number: item.projectId,
name: item.name,
belong: item.parentId,
sourceBelongName: item.sourceBelongName,
manager: item.manager || "-",
status:
item.status == 0
? "草稿"
: item.status == 1
? "待审核"
: item.status == 2
? "通过"
: item.status == 3
? "发布"
: item.status == -1
? "已结束"
: item.status == -2
? "拒绝"
: "-",
creater: item.createName,
time: item.createTime,
projectId: item.projectId,
createId: item.createId,
children: item.subList ? setProjList(item.subList) : [],
};
array.push(obj);
}
});
state.tableData1 = array
return array
};
const changePagination = (pagina) => { const changePagination = (pagina) => {
state.currentPage = pagina; state.currentPage = pagina;
getProjList(); getProjList();
@@ -291,7 +225,6 @@ export default {
...toRefs(state), ...toRefs(state),
showProjAudit, showProjAudit,
getProjList, getProjList,
setProjList,
changePagination, changePagination,
reset, reset,
}; };

View File

@@ -336,7 +336,10 @@ export default {
const classificationChange5 = (key, option) => { const classificationChange5 = (key, option) => {
state.projectInfo = option state.projectInfo = option
state.projectInfo.type = 3
state.projectInfo.rangeTime = [option.beginTime, option.endTime]
state.projectInfo.parentName = routers.query.parentName state.projectInfo.parentName = routers.query.parentName
state.projectInfo.parentId = routers.query.parentId
}; };
//获取模版列表 //获取模版列表
const getTemplate = () => { const getTemplate = () => {

View File

@@ -347,7 +347,7 @@
</div> </div>
</div> </div>
<div class="modalMain"> <div class="modalMain">
<router-link :to="`/projectadd?parentId=${projectInfo.parentId}&parentName=${projectInfo.parentName}`"> <router-link :to="`/projectadd?parentId=${projectInfo.parentId || ''}&parentName=${projectInfo.parentName || ''}`">
<div <div
class="taskbox" class="taskbox"
style=" style="
@@ -1342,7 +1342,7 @@ export default {
编辑 编辑
</span> </span>
: ''} : ''}
{(value.record.status === 0 || value.record.status === -2) && value.record.type !== 1 ? {(value.record.status === 0 || value.record.status === -2) && value.record.type === 3 ?
<span <span
onClick={() => { onClick={() => {
showReviewModal(value.record.projectId); showReviewModal(value.record.projectId);
@@ -1484,7 +1484,7 @@ export default {
删除 删除
</div> </div>
</a-select-option> </a-select-option>
{value.record.status === 3 || value.record.status === 2 ? {value.record.type === 3 ?
<a-select-option value="存为模版" label="存为模版"> <a-select-option value="存为模版" label="存为模版">
<div <div
onClick={() => { onClick={() => {
@@ -1494,7 +1494,7 @@ export default {
存为模版 存为模版
</div> </div>
</a-select-option> : ''} </a-select-option> : ''}
{value.record.status === 3 || value.record.status === 2 ? {value.record.type === 3 ?
<a-select-option value="基础信息" label="基础信息"> <a-select-option value="基础信息" label="基础信息">
<div <div
onClick={() => { onClick={() => {

View File

@@ -106,7 +106,7 @@
<a-tab-pane key="1" tab="概览"> <a-tab-pane key="1" tab="概览">
<div class="split"></div> <div class="split"></div>
<!-- 概览无数据 --> <!-- 概览无数据 -->
<div style="display: none"> <div>
<div class="onerow"> <div class="onerow">
<div class="taskmain">快速创建项目详情</div> <div class="taskmain">快速创建项目详情</div>
</div> </div>
@@ -149,7 +149,8 @@
</div> </div>
<div class="centermain">快速添加学员</div> <div class="centermain">快速添加学员</div>
</div> </div>
<div <!-- 2022-12-2注释 后面放开 -->
<!-- <div
class="taskbox" class="taskbox"
@click="showModal" @click="showModal"
style="background: linear-gradient(180deg, #e5f6ec, #eef9f3)" style="background: linear-gradient(180deg, #e5f6ec, #eef9f3)"
@@ -167,12 +168,12 @@
发布 发布
</div> </div>
<div class="centermain">快速发布项目</div> <div class="centermain">快速发布项目</div>
</div> </div> -->
</div> </div>
</div> </div>
<!-- 概览无数据 --> <!-- 概览无数据 -->
<!-- 概览有数据 --> <!-- 概览有数据 -->
<div> <div style="display: none">
<div class="onerow"> <div class="onerow">
<div class="taskmain">项目概览</div> <div class="taskmain">项目概览</div>
</div> </div>
@@ -447,7 +448,8 @@
</div> </div>
</div> </div>
<div class="operations"> <div class="operations">
<div <!-- 2022-11-30注释 后面放开 -->
<!-- <div
class="operation" class="operation"
style="cursor: pointer" style="cursor: pointer"
:style="{ :style="{
@@ -456,8 +458,8 @@
@click="showFS" @click="showFS"
> >
学员 学员
</div> </div> -->
<div <!-- <div
class="operation" class="operation"
style="cursor: pointer" style="cursor: pointer"
@click="showAA(item.name)" @click="showAA(item.name)"
@@ -469,7 +471,7 @@
}" }"
> >
考勤 考勤
</div> </div> -->
<div <div
class="operation" class="operation"
style="cursor: pointer" style="cursor: pointer"
@@ -477,7 +479,8 @@
> >
二维码 二维码
</div> </div>
<div <!-- 2022-11-30注释 后面放开 -->
<!-- <div
class="operation" class="operation"
style="cursor: pointer; margin-right: 35px" style="cursor: pointer; margin-right: 35px"
@click=" @click="
@@ -499,7 +502,7 @@
" "
> >
管理 管理
</div> </div> -->
</div> </div>
</div> </div>
</a-collapse-panel> </a-collapse-panel>
@@ -804,29 +807,19 @@
></a-tab-pane> ></a-tab-pane>
</a-tabs> </a-tabs>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="5" tab="项目积分" disabled> <!-- 2022-11-30注释 后面放开 -->
<!-- <a-tab-pane key="5" tab="项目积分" disabled>
<ProjectScore :projectId="projectId"></ProjectScore> <ProjectScore :projectId="projectId"></ProjectScore>
</a-tab-pane> </a-tab-pane> -->
<a-tab-pane key="6" tab="排行榜" disabled> <!-- 2022-11-30注释 后面放开 -->
<!-- <a-tab-pane key="6" tab="排行榜" disabled>
<div class="split"></div> <div class="split"></div>
<div class="content6"> <div class="content6">
<div class="title">排行榜</div> <div class="title">排行榜</div>
<div class="line"></div> <div class="line"></div>
<div class="search"> <div class="search">
<div class="left"> <div class="left">
<!-- <div class="name">
<div class="text">姓名</div>
<a-input
v-model:value="valueName"
placeholder="请输入姓名"
style="
width: 264px;
height: 40px;
border-radius: 8px;
margin-left: 5px;
"
/>
</div> -->
<div class="time"> <div class="time">
<div class="text">选择时间</div> <div class="text">选择时间</div>
<a-range-picker <a-range-picker
@@ -933,7 +926,7 @@
</div> </div>
</div> </div>
</div> </div>
</a-tab-pane> </a-tab-pane> -->
<a-tab-pane key="7" tab="设置"> <a-tab-pane key="7" tab="设置">
<div class="split"></div> <div class="split"></div>
@@ -1684,7 +1677,7 @@ import SeeStu from "../../components/drawers/SeeStu";
import ChangeGroup from "../../components/drawers/ChangeGroup"; import ChangeGroup from "../../components/drawers/ChangeGroup";
import NoticePub from "../../components/drawers/NoticePub"; import NoticePub from "../../components/drawers/NoticePub";
import NoticeHis from "../../components/drawers/NoticeHis"; import NoticeHis from "../../components/drawers/NoticeHis";
import ProjectScore from "../../components/drawers/ProjectScore"; // import ProjectScore from "../../components/drawers/ProjectScore";
import TaskImpStu from "../../components/drawers/TaskFaceIn"; import TaskImpStu from "../../components/drawers/TaskFaceIn";
import { storage } from "../../api/storage"; import { storage } from "../../api/storage";
import * as api from "../../api/index1"; import * as api from "../../api/index1";
@@ -1723,7 +1716,7 @@ export default {
SeeStu, SeeStu,
ChangeGroup, ChangeGroup,
NoticePub, NoticePub,
ProjectScore, // ProjectScore,
TaskImpStu, TaskImpStu,
projSet, projSet,
NoticeHis, NoticeHis,

View File

@@ -3,13 +3,16 @@
<div class="managepage"> <div class="managepage">
<div class="up"> <div class="up">
<div class="header"> <div class="header">
<div style="width: 100%"> <!-- 2022-11-30注释 后面放开 新增display: flex; justify-content: space-between 评估管理的div更改位置-->
<div class="export"> <div style="width: 100%; display: flex; justify-content: space-between">
<!-- 2022-11-30注释 后面放开 -->
<!-- <div class="export">
<img src="../../assets/images/research/export.png" /> <img src="../../assets/images/research/export.png" />
<span style="color: #4ea6ff; font-size: 14px; margin-left: 3px"> <span style="color: #4ea6ff; font-size: 14px; margin-left: 3px">
导出信息 导出信息
</span> </span>
</div> </div> -->
<div class="text">评估管理</div>
<router-link to="/researchmanage" class="goback"> <router-link to="/researchmanage" class="goback">
<span class="return"></span> <span class="return"></span>
<router-link class="returntext" to="/researchmanage"> <router-link class="returntext" to="/researchmanage">
@@ -17,7 +20,7 @@
</router-link> </router-link>
</router-link> </router-link>
</div> </div>
<div class="text">评估管理</div> <!-- <div class="text">评估管理</div> -->
</div> </div>
<div class="message"> <div class="message">
<div class="title">基本信息</div> <div class="title">基本信息</div>