mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-09 19:06:45 +08:00
feat:合并
This commit is contained in:
@@ -49,7 +49,8 @@
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
"node": true,
|
||||
"vue/setup-compiler-macros": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/vue3-essential",
|
||||
|
||||
384
src/App.vue
384
src/App.vue
@@ -1,258 +1,192 @@
|
||||
<template>
|
||||
<div id="container" v-if="!isLogin">
|
||||
<nav-top />
|
||||
<div style="display: flex">
|
||||
<nav-left />
|
||||
<div style="flex: 1; display: flex; flex-direction: column; width: 0">
|
||||
<open-pages />
|
||||
<bread-crumb />
|
||||
<main>
|
||||
<a-config-provider :locale="zhCN">
|
||||
<router-view />
|
||||
</a-config-provider>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="container" v-if="isLogin">
|
||||
<router-view />
|
||||
</div>
|
||||
<div id="container" v-if="!isLogin">
|
||||
<nav-top/>
|
||||
<div style="display: flex">
|
||||
<nav-left/>
|
||||
<div style="flex: 1; display: flex; flex-direction: column; width: 0">
|
||||
<open-pages/>
|
||||
<bread-crumb/>
|
||||
<main>
|
||||
<a-config-provider :locale="zhCN">
|
||||
<router-view/>
|
||||
</a-config-provider>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="container" v-if="isLogin">
|
||||
<router-view/>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { computed, defineComponent, ref, onMounted } from "vue";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import { useStore, createStore } from "vuex";
|
||||
<script setup>
|
||||
import {ref, onMounted} from "vue";
|
||||
import {useStore, createStore} from "vuex";
|
||||
import NavLeft from "@/components/NavLeft";
|
||||
import NavTop from "@/components/NavTop";
|
||||
import OpenPages from "@/components/OpenPages";
|
||||
import BreadCrumb from "@/components/BreadCrumb";
|
||||
import zhCN from "ant-design-vue/es/locale/zh_CN";
|
||||
import * as api from "./api/index1";
|
||||
import * as api1 from "@/api/index1";
|
||||
import * as api2 from "@/api/index";
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
NavLeft,
|
||||
NavTop,
|
||||
OpenPages,
|
||||
BreadCrumb,
|
||||
},
|
||||
setup() {
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const store = useStore();
|
||||
const isLogin = ref(false);
|
||||
// console.log("router", router.getRoutes(), route);
|
||||
console.log("版本2.1.6------------");
|
||||
const routes = computed(() => {
|
||||
return router.getRoutes().filter((e) => e.meta?.isLink);
|
||||
});
|
||||
// watch(
|
||||
// () => route.path,
|
||||
// () => {
|
||||
// route.path === "/login" && (isLogin.value = true);
|
||||
// }
|
||||
// );
|
||||
const currentRouteName = computed(() => route.name);
|
||||
const store = useStore();
|
||||
const isLogin = ref(false);
|
||||
console.log("版本2.1.6------------");
|
||||
|
||||
function init() {
|
||||
console.log(store);
|
||||
getUserInfo();
|
||||
initDict("faceclassPic");
|
||||
initDict("faceclassClass");
|
||||
initDict("faceclassScene");
|
||||
initDict("projectLevel");
|
||||
initDict("projectSys");
|
||||
initDict("pathmapPic");
|
||||
initDict("projectClass");
|
||||
initDict("projectPic");
|
||||
initDict("sysType");
|
||||
getMemberInfo();
|
||||
getOrgTree();
|
||||
}
|
||||
// 监听关闭浏览器
|
||||
let time1 = ref(0);
|
||||
let time2 = ref(0);
|
||||
|
||||
// 监听关闭浏览器
|
||||
let time1 = ref(0);
|
||||
let time2 = ref(0);
|
||||
onMounted(() => {
|
||||
init()
|
||||
window.addEventListener('beforeunload', e => beforeunloadHandler(e));
|
||||
window.addEventListener('unload', e => unloadHandler(e));
|
||||
})
|
||||
|
||||
//添加监听事件
|
||||
function beforeunloadHandler() {
|
||||
time1.value = new Date().getTime();
|
||||
// e.returnValue = '关闭提示';
|
||||
}
|
||||
//添加监听事件
|
||||
function beforeunloadHandler() {
|
||||
time1.value = new Date().getTime();
|
||||
}
|
||||
|
||||
function unloadHandler() {
|
||||
time2.value = new Date().getTime() - time1.value;
|
||||
if(time2.value<=5){
|
||||
store.replaceState(createStore({state: {openpages:null}}).state);
|
||||
localStorage.removeItem("openpages");
|
||||
}
|
||||
}
|
||||
|
||||
function init() {
|
||||
getUserInfo();
|
||||
initDict("faceclassPic");
|
||||
initDict("faceclassClass");
|
||||
initDict("faceclassScene");
|
||||
initDict("projectLevel");
|
||||
initDict("projectSys");
|
||||
initDict("pathmapPic");
|
||||
initDict("projectClass");
|
||||
initDict("projectPic");
|
||||
initDict("sysType");
|
||||
getMemberInfo();
|
||||
}
|
||||
|
||||
onMounted(()=>{
|
||||
window.addEventListener('beforeunload', e => beforeunloadHandler(e));
|
||||
window.addEventListener('unload', e => unloadHandler(e));
|
||||
})
|
||||
function unloadHandler() {
|
||||
time2.value = new Date().getTime() - time1.value;
|
||||
if (time2.value <= 5) {
|
||||
store.replaceState(createStore({state: {openpages: null}}).state);
|
||||
localStorage.removeItem("openpages");
|
||||
}
|
||||
}
|
||||
|
||||
async function getMemberInfo() {
|
||||
const list = localStorage.getItem("memberInitInfo");
|
||||
if (list) {
|
||||
store.commit("SET_MEMBER_INFO", JSON.parse(list));
|
||||
return;
|
||||
}
|
||||
const memberInitInfo = await api1
|
||||
.getMemberInfo({keyWord: "", pageNo: 1, pageSize: 10})
|
||||
.then((res) => res.data.data.rows);
|
||||
store.commit("SET_MEMBER_INFO", memberInitInfo);
|
||||
localStorage.setItem("memberInitInfo", JSON.stringify(memberInitInfo));
|
||||
}
|
||||
|
||||
async function getMemberInfo() {
|
||||
const list = localStorage.getItem("memberInitInfo");
|
||||
if (list) {
|
||||
store.commit("SET_MEMBER_INFO", JSON.parse(list));
|
||||
return;
|
||||
}
|
||||
const memberInitInfo = await api1
|
||||
.getMemberInfo({ keyWord: "", pageNo: 1, pageSize: 10 })
|
||||
.then((res) => res.data.data.rows);
|
||||
store.commit("SET_MEMBER_INFO", memberInitInfo);
|
||||
localStorage.setItem("memberInitInfo", JSON.stringify(memberInitInfo));
|
||||
}
|
||||
async function getUserInfo() {
|
||||
const userInfo = await api2.userInfo();
|
||||
store.commit("SET_USER", userInfo.data.data);
|
||||
}
|
||||
|
||||
async function getUserInfo() {
|
||||
const userInfo = await api2.userInfo();
|
||||
store.commit("SET_USER", userInfo.data.data);
|
||||
}
|
||||
async function initDict(key, localStory = false) {
|
||||
let list;
|
||||
if (localStory) {
|
||||
list = localStorage.getItem(key);
|
||||
if (list) {
|
||||
store.commit("SET_DICT", {key, data: JSON.parse(list)});
|
||||
return;
|
||||
}
|
||||
}
|
||||
list = await getDictList(key);
|
||||
localStory && localStorage.setItem(key, JSON.stringify(list));
|
||||
store.commit("SET_DICT", {key, data: list});
|
||||
}
|
||||
|
||||
async function initDict(key, localStory = false) {
|
||||
let list;
|
||||
if (localStory) {
|
||||
list = localStorage.getItem(key);
|
||||
if (list) {
|
||||
store.commit("SET_DICT", { key, data: JSON.parse(list) });
|
||||
return;
|
||||
}
|
||||
}
|
||||
list = await getDictList(key);
|
||||
localStory && localStorage.setItem(key, JSON.stringify(list));
|
||||
store.commit("SET_DICT", { key, data: list });
|
||||
}
|
||||
|
||||
const getDictList = (param) => api1.getDictTree({setCode: param,}).then((res) => res.data.data);
|
||||
//获取组织树
|
||||
const getOrgTree = () => {
|
||||
api.getOrgTreeInfo().then((res) => {
|
||||
store.commit("getOrgtreeList", res.data.data);
|
||||
});
|
||||
};
|
||||
init();
|
||||
return {
|
||||
isLogin,
|
||||
routes,
|
||||
name: currentRouteName,
|
||||
zhCN,
|
||||
};
|
||||
}
|
||||
});
|
||||
const getDictList = (param) => api1.getDictTree({setCode: param,}).then((res) => res.data.data);
|
||||
</script>
|
||||
<style lang="scss">
|
||||
//.ant-modal {
|
||||
//
|
||||
// .ant-modal-content {
|
||||
// background-image: linear-gradient(
|
||||
// 180deg, rgba(103, 64, 255, .2), rgba(166, 168, 255, 0), rgba(166, 168, 255, 0)) !important;
|
||||
// border-radius: 4px;
|
||||
//
|
||||
// .ant-modal-body {
|
||||
// .ant-btn {
|
||||
// border-radius: 8px;
|
||||
// width: 100px;
|
||||
// height: 40px;
|
||||
// }
|
||||
//
|
||||
// .ant-btn-primary {
|
||||
// background: #4ea6ff;
|
||||
// color: #fff;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
#app {
|
||||
// font-family: MicrosoftYaHei, Microsoft YaHei, Avenir, Helvetica, Arial,
|
||||
// sans-serif;
|
||||
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
|
||||
Microsoft YaHei, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
color: #2c3e50;
|
||||
height: 100%;
|
||||
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
|
||||
Microsoft YaHei, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
color: #2c3e50;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#container {
|
||||
margin: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
min-width: 1000px;
|
||||
min-height: 100%;
|
||||
background-color: rgba(245, 247, 250, 1);
|
||||
margin: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
min-width: 1000px;
|
||||
min-height: 100%;
|
||||
background-color: rgba(245, 247, 250, 1);
|
||||
|
||||
main {
|
||||
height: 0;
|
||||
flex: 1 1 auto;
|
||||
// flex-shrink: 0;
|
||||
display: flex;
|
||||
overflow-y: auto;
|
||||
// display: flex;
|
||||
// flex: 1 1 auto;
|
||||
width: calc(100% - 40px);
|
||||
// margin-bottom: 20px;
|
||||
margin: 0px 20px 20px 20px;
|
||||
box-sizing: border-box;
|
||||
background: #ffffff;
|
||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
|
||||
}
|
||||
main {
|
||||
height: 0;
|
||||
flex: 1 1 auto;
|
||||
// flex-shrink: 0;
|
||||
display: flex;
|
||||
overflow-y: auto;
|
||||
// display: flex;
|
||||
// flex: 1 1 auto;
|
||||
width: calc(100% - 40px);
|
||||
// margin-bottom: 20px;
|
||||
margin: 0px 20px 20px 20px;
|
||||
box-sizing: border-box;
|
||||
background: #ffffff;
|
||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
|
||||
}
|
||||
|
||||
.cus-btn {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 16px;
|
||||
border: 1px solid #4ea6ff;
|
||||
border-radius: 8px;
|
||||
background: #4ea6ff;
|
||||
cursor: pointer;
|
||||
color: #fff;
|
||||
}
|
||||
.cus-btn {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 16px;
|
||||
border: 1px solid #4ea6ff;
|
||||
border-radius: 8px;
|
||||
background: #4ea6ff;
|
||||
cursor: pointer;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.white {
|
||||
background: #fff;
|
||||
color: #4ea6ff;
|
||||
}
|
||||
.white {
|
||||
background: #fff;
|
||||
color: #4ea6ff;
|
||||
}
|
||||
|
||||
.cus-input {
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.cus-input {
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.cus-select {
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.cus-select {
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
// @media screen and (max-width: 1366px) {
|
||||
// .cmMain {
|
||||
// width: 750px;
|
||||
// }
|
||||
// }
|
||||
// @media screen and (min-width: 1367px) and (max-width: 1680px) {
|
||||
// .cmMain {
|
||||
// width: 1010px;
|
||||
// }
|
||||
// }
|
||||
// @media screen and (min-width: 1681px) and (max-width: 1920px) {
|
||||
// .cmMain {
|
||||
// width: 1270px;
|
||||
// }
|
||||
// }
|
||||
// @media screen and (min-width: 1921px) {
|
||||
// .cmMain {
|
||||
// width: 1270px;
|
||||
// }
|
||||
// }
|
||||
// @media screen and (max-width: 1366px) {
|
||||
// .cmMain {
|
||||
// width: 750px;
|
||||
// }
|
||||
// }
|
||||
// @media screen and (min-width: 1367px) and (max-width: 1680px) {
|
||||
// .cmMain {
|
||||
// width: 1010px;
|
||||
// }
|
||||
// }
|
||||
// @media screen and (min-width: 1681px) and (max-width: 1920px) {
|
||||
// .cmMain {
|
||||
// width: 1270px;
|
||||
// }
|
||||
// }
|
||||
// @media screen and (min-width: 1921px) {
|
||||
// .cmMain {
|
||||
// width: 1270px;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
</style>
|
||||
@@ -43,3 +43,6 @@ export const AttendanceLeave = (obj) => http.post('/stu/task/attendance/leave',
|
||||
|
||||
// 直播考勤签到
|
||||
export const AttendanceSign = (obj) => http.post('/stu/task/attendance/sign', obj)
|
||||
|
||||
// 查询项目管理的信息
|
||||
export const QueryProjectManageDetail = (obj) => http.post('/project/management/queryProjectManageDetail', obj)
|
||||
@@ -121,11 +121,17 @@ export function usePage(_url, params, init = true) {
|
||||
})
|
||||
|
||||
if (isRef(params)) {
|
||||
watch(params, () => {
|
||||
watch(params.value, () => {
|
||||
fetch()
|
||||
})
|
||||
}
|
||||
|
||||
if (isRef(_url)) {
|
||||
watchEffect(fetch)
|
||||
} else {
|
||||
init && fetch()
|
||||
}
|
||||
|
||||
function reset(){
|
||||
state.data = []
|
||||
state.loading = false
|
||||
@@ -142,12 +148,6 @@ export function usePage(_url, params, init = true) {
|
||||
})
|
||||
}
|
||||
|
||||
if (isRef(_url)) {
|
||||
watchEffect(fetch)
|
||||
} else {
|
||||
init && fetch()
|
||||
}
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
fetch,
|
||||
|
||||
20
src/components/common/DropDown.vue
Normal file
20
src/components/common/DropDown.vue
Normal file
@@ -0,0 +1,20 @@
|
||||
<template>
|
||||
<div className="tableSelect" style="margin-left: 0">
|
||||
<a-select :value="value" dropdownClassName="tabledropdown">
|
||||
<template :key="index" v-for="(item, index) in $slots.default()">
|
||||
<a-select-option v-if="item.children!=='v-if'" :value="index">
|
||||
<component :is="item"></component>
|
||||
</a-select-option>
|
||||
</template>
|
||||
</a-select>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import {defineProps} from "vue";
|
||||
defineProps({
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
})
|
||||
</script>
|
||||
@@ -3,7 +3,7 @@
|
||||
<!-- <div class="split"></div> -->
|
||||
<div class="noticeTitle">
|
||||
<!-- <div class="notitle"><span class="titlespan">公告</span></div> -->
|
||||
<div class="switch">
|
||||
<div v-button-per="permissions" class="switch">
|
||||
<a-switch
|
||||
v-model:checked="noticeChecked"
|
||||
@click="noticeFlag"
|
||||
@@ -25,7 +25,7 @@
|
||||
style="margin-top: -10px; height: 220px;border:1px solid #fff; resize: none;background-color: #fff;color:#666;"
|
||||
/>
|
||||
<!-- <pre>{{noticeContent1}}</pre> -->
|
||||
<div class="btn-content">
|
||||
<div class="btn-content" v-button-per="permissions">
|
||||
<a-button type="primary" @click="handleEdit">编辑</a-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -49,7 +49,7 @@
|
||||
placeholder="公告信息最多输入150个字"
|
||||
style="margin-top: -10px; height: 160px;"
|
||||
/>
|
||||
<div class="btn-content">
|
||||
<div class="btn-content" v-button-per="permissions">
|
||||
<a-button class="cancel" @click="handleCancel">取消</a-button>
|
||||
<a-button type="primary" @click="pubNotice" class="sure">
|
||||
发布
|
||||
@@ -69,6 +69,10 @@ import emitter from "../../utils/bus";
|
||||
export default {
|
||||
name: "NoticePub",
|
||||
props: {
|
||||
permissions:{
|
||||
type:String,
|
||||
default:''
|
||||
},
|
||||
projectId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
<div class="groupright">
|
||||
<div class="spandiv"><span class="spantext">规则</span></div>
|
||||
<div v-if="edit" class="btns">
|
||||
<div class="btn1" @click="edit = false">
|
||||
<div v-button-per="permissions" class="btn1" @click="edit = false">
|
||||
<img src="../../assets/images/projectadd/edit1.png" />
|
||||
<span class="btn1text">编辑</span>
|
||||
</div>
|
||||
@@ -302,6 +302,10 @@ export default {
|
||||
StuScoreDetail,
|
||||
},
|
||||
props: {
|
||||
permissions:{
|
||||
type:String,
|
||||
default: ''
|
||||
},
|
||||
projectId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
|
||||
@@ -112,24 +112,25 @@
|
||||
</div>-->
|
||||
</div>
|
||||
</a-drawer>
|
||||
<CVote
|
||||
v-model:CVvisible="CVvisible"
|
||||
:voteID="voteID"
|
||||
:courseID="courseID"
|
||||
/>
|
||||
<!-- 学员查看抽屉 -->
|
||||
<check-stu
|
||||
v-model:CheckStuvisible="CheckStuvisible"
|
||||
v-model:routerId="routerId"
|
||||
v-model:studentId="studentId"
|
||||
/>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
// import * as api from "../../../api/index";
|
||||
import * as api from "../../../api/indexTaskManage";
|
||||
import CVote from "../CheckVote.vue"
|
||||
import CheckStu from "../CheckStu";
|
||||
|
||||
export default {
|
||||
name: "RouterProjectManage",
|
||||
components:{
|
||||
CVote,
|
||||
CheckStu,
|
||||
},
|
||||
props: {
|
||||
PjModelVisible: {
|
||||
@@ -185,25 +186,25 @@
|
||||
id: 3,
|
||||
value: "3",
|
||||
label: "已完成",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
value: "4",
|
||||
label: "未完成",
|
||||
},
|
||||
}
|
||||
],
|
||||
tabledata: [],
|
||||
tableDataTotalLoading: true, // 表格loading加载配置
|
||||
CVvisible:false, //查看投票抽屉
|
||||
voteID: "",
|
||||
courseID: ""
|
||||
courseID: "",
|
||||
|
||||
|
||||
routerId: '',
|
||||
studentId: '',
|
||||
CheckStuvisible: false,
|
||||
});
|
||||
const tableDataFunc = () => {
|
||||
const columns = [
|
||||
{
|
||||
title: "工号",
|
||||
dataIndex: "studentUserNo",
|
||||
key: "studentUserNo",
|
||||
dataIndex: "studentCode",
|
||||
key: "studentCode",
|
||||
width: "20%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -211,7 +212,7 @@
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.studentUserNo?text.record.studentUserNo:"-"}</span>
|
||||
<span> {text.record.studentCode?text.record.studentCode:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -267,24 +268,72 @@
|
||||
},
|
||||
{
|
||||
title: "学员关卡",
|
||||
dataIndex: "chapterName",
|
||||
key: "chapterName",
|
||||
width: "10%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.chapterName?text.record.chapterName:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "当前阶段",
|
||||
dataIndex: "currentStageName",
|
||||
key: "currentStageName",
|
||||
width: "10%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: () => {
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {props.levelName}</span>
|
||||
<span> {text.record.currentStageName?text.record.currentStageName:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "当前任务",
|
||||
dataIndex: "currentTaskName",
|
||||
key: "currentTaskName",
|
||||
width: "10%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.currentTaskName?text.record.currentTaskName:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "进度",
|
||||
dataIndex: "process",
|
||||
key: "process",
|
||||
width: "10%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.process?text.record.process:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "完成时间",
|
||||
dataIndex: "lastStudyTime",
|
||||
key: "lastStudyTime",
|
||||
dataIndex: "finishEdTime",
|
||||
key: "finishEdTime",
|
||||
width: "15%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
@@ -292,7 +341,7 @@
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span> {text.record.lastStudyTime?text.record.lastStudyTime:"-"}</span>
|
||||
<span> {text.record.finishEdTime?text.record.finishEdTime:"-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -327,20 +376,13 @@
|
||||
style="color:#387df7;cursor:pointer"
|
||||
onClick={
|
||||
() => {
|
||||
if(value.record.finishStatus !== 3){
|
||||
message.destroy()
|
||||
message.error("当前任务未完成")
|
||||
return
|
||||
}
|
||||
{/* 当前投票提交的ID 用来查看投票详情 */}
|
||||
console.log(value.record.voteSubmitId);
|
||||
state.voteID = value.record.voteSubmitId;
|
||||
state.CVvisible = true;
|
||||
{/* 当前学员 用来查看学员详情 */}
|
||||
state.routerId = value.record.routerId;
|
||||
state.studentId = value.record.studentId;
|
||||
state.CheckStuvisible = true;
|
||||
console.log(value);
|
||||
}}>
|
||||
{value.record.finishStatus == 3 ?
|
||||
<span style='color:#387df7;'> 查看 </span>
|
||||
:
|
||||
<span style='color:#999;'> 查看 </span>}
|
||||
</div>
|
||||
);
|
||||
},
|
||||
@@ -359,8 +401,9 @@
|
||||
const afterVisibleChange = (bol) => {
|
||||
if (bol == true) {
|
||||
console.log("当前是什么类型", props.datasource.type);
|
||||
console.log("当前是什么类型", props.datasource);
|
||||
state.tableDataTotalLoading = true;
|
||||
{/* getData(); */}
|
||||
getData();
|
||||
}
|
||||
};
|
||||
const selectProjectName = (value) => {
|
||||
@@ -377,51 +420,34 @@
|
||||
|
||||
// 获取数据
|
||||
function getData() {
|
||||
if(props.datasource.type == 12){
|
||||
if(props.datasource.type == 13){
|
||||
console.log("我是传递的查询参数", {
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"chapterId": props.datasource.stageId=="0"?"":props.datasource.stageId,
|
||||
"status": state.projectName,
|
||||
"studentName": state.name,
|
||||
"targetId":props.datasource.projectId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"type": 1
|
||||
});
|
||||
api.QueryVoteManagementDetail({
|
||||
"courseId": props.datasource.courseId,
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"status": state.projectName,
|
||||
"studentName": state.name,
|
||||
"targetId":props.datasource.routerId,
|
||||
"taskId": props.datasource.courseId,
|
||||
"type": 1
|
||||
"studentName": state.name
|
||||
});
|
||||
api.QueryProjectManageDetail({
|
||||
"courseId": props.datasource.courseId,
|
||||
"pageNo": state.currentPage,
|
||||
"pageSize": state.pageSize,
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"status": state.projectName,
|
||||
"studentName": state.name
|
||||
}).then(res=>{
|
||||
console.log('投票数据获取', res)
|
||||
if(res.data.code==200){
|
||||
state.tableDataTotalLoading = false;
|
||||
let newData = []
|
||||
for(let i=0;i<res.data.data.rows.length;i++){
|
||||
// 处理在线课字段和表格中字段保持一致
|
||||
let obj = {
|
||||
studentUserNo: res.data.data.rows[i].studentCode,
|
||||
studentName: res.data.data.rows[i].studentName,
|
||||
studentDepartName: res.data.data.rows[i].studentDepartName,
|
||||
studentJobName: res.data.data.rows[i].studentJobName,
|
||||
lastStudyTime: res.data.data.rows[i].submitTime,
|
||||
finishStatus: res.data.data.rows[i].status?res.data.data.rows[i].status:0,
|
||||
voteSubmitId: res.data.data.rows[i].voteSubmitId
|
||||
}
|
||||
newData.push(obj)
|
||||
}
|
||||
state.tabledata = newData;
|
||||
state.tabledata = res.data.data.rows;
|
||||
state.courseID = props.datasource.courseId;
|
||||
state.tableDataTotal = res.data.data.total;
|
||||
}
|
||||
}).catch(err=>{
|
||||
console.log(err)
|
||||
state.tableDataTotalLoading = false;
|
||||
state.tabledata = [];
|
||||
})
|
||||
}else{
|
||||
state.tableDataTotalLoading = false;
|
||||
@@ -453,8 +479,8 @@
|
||||
|
||||
// 导出数据
|
||||
function exportTaskStu() {
|
||||
console.log(`${process.env.VUE_APP_BASE_API}/admin/vote/manage/export/vote?type=${1}&voteId=${props.datasource.routerTaskId}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/vote/manage/export/vote?type=${1}&voteId=${props.datasource.routerTaskId}`)
|
||||
console.log(`${process.env.VUE_APP_BASE_API}/project/management/exportProjectManage?courseId=${props.datasource.courseId}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/project/management/exportProjectManage?courseId=${props.datasource.courseId}`)
|
||||
}
|
||||
|
||||
return {
|
||||
@@ -477,8 +503,13 @@
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.ant-drawer-content-wrapper {
|
||||
max-width: 80% !important;
|
||||
}
|
||||
|
||||
.RouterProjectManage {
|
||||
// overflow-x: auto;
|
||||
max-width: auto;
|
||||
.drawerMain {
|
||||
min-width: 550px;
|
||||
margin: 0px 32px 0px 32px;
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<div class="drawerMain" id="ProjCheckship" style="">
|
||||
<div class="header">
|
||||
<div class="headerTitle">
|
||||
{{ {1: "添加学员", 2: "添加学员", 3: "添加学员",4: "查看权",5: "管理权"}[type] || title }}
|
||||
{{ {1: "添加学员", 2: "添加学员", 3: "添加学员"}[type] || title }}
|
||||
</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
@@ -288,32 +288,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<div @click="openDrawer">
|
||||
<slot></slot>
|
||||
</div>
|
||||
<a-button @click="openDrawer" type="link"><slot></slot></a-button>
|
||||
</div>
|
||||
<!--
|
||||
<a-modal
|
||||
v-model:visible="stageVisible"
|
||||
width="1000px"
|
||||
title="选择阶段"
|
||||
@ok="handleStageOk"
|
||||
>
|
||||
<div>
|
||||
{{ type === 1 ? "选择阶段" : "" }}
|
||||
<a-select
|
||||
style="width: 150px"
|
||||
:placeholder="type === 1 ? '选择阶段' : '选择关卡'"
|
||||
v-model:value="selectsData.stageId"
|
||||
className="cus-select"
|
||||
>
|
||||
<a-select-option v-for="(item, i) in stageIds" :key="i" :value="item.id"
|
||||
>{{ item.name || "默认" }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
</a-modal>
|
||||
-->
|
||||
<a-modal
|
||||
:style="{padding: 0,position: relative,right: '-20%'}"
|
||||
:closable="true"
|
||||
|
||||
@@ -29,7 +29,7 @@ import { defineProps, ref } from "vue";
|
||||
import TableModelStudent from "@/components/student/TableModelStudent";
|
||||
import CommonStudent from "@/components/student/CommonStudent";
|
||||
|
||||
const props = defineProps({
|
||||
defineProps({
|
||||
id: String,
|
||||
type: Number,
|
||||
types: {
|
||||
@@ -37,7 +37,6 @@ const props = defineProps({
|
||||
default: () => [],
|
||||
},
|
||||
});
|
||||
console.log("props", props.types);
|
||||
const tableModelRef = ref();
|
||||
|
||||
function submitCall(flag) {
|
||||
|
||||
@@ -1,61 +1,51 @@
|
||||
<template>
|
||||
<div class="CommonStudent">
|
||||
<a-drawer
|
||||
:visible="visiable"
|
||||
class="drawerStyle ProjCheckship"
|
||||
placement="right"
|
||||
width="40%"
|
||||
:visible="visiable"
|
||||
class="drawerStyle ProjCheckship"
|
||||
placement="right"
|
||||
width="40%"
|
||||
>
|
||||
<div class="drawerMain" id="ProjCheckship" style="">
|
||||
<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"
|
||||
@click="closeDrawer"
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="TableStudent">
|
||||
<a-row
|
||||
type="flex"
|
||||
gutter="12"
|
||||
style="padding-left: 20px; margin-right: 0px"
|
||||
type="flex"
|
||||
gutter="12"
|
||||
style="padding-left: 20px; margin-right: 0px"
|
||||
>
|
||||
<a-col>
|
||||
<a-form-item title="姓名:">
|
||||
<a-input
|
||||
class="cus-input"
|
||||
v-model:value="searchParams.studentName"
|
||||
placeholder="请输入姓名"
|
||||
class="cus-input"
|
||||
v-model:value="searchName"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col>
|
||||
<a-button
|
||||
class="cus-btn"
|
||||
style="background: #4ea6ff; color: #fff; width: 100px"
|
||||
@click="searchStu"
|
||||
class="cus-btn"
|
||||
style="background: #4ea6ff; color: #fff; width: 100px"
|
||||
@click="search"
|
||||
>
|
||||
<template #icon
|
||||
><img
|
||||
style="margin-right: 10px"
|
||||
src="../../assets/images/courseManage/search0.png"
|
||||
/>
|
||||
<template #icon><img style="margin-right: 10px" src="../../assets/images/courseManage/search0.png"/>
|
||||
</template>
|
||||
搜索
|
||||
</a-button>
|
||||
</a-col>
|
||||
<a-col :span="2">
|
||||
<a-button
|
||||
class="cus-btn white"
|
||||
style="width: 100px"
|
||||
@click="reset"
|
||||
>
|
||||
<template #icon
|
||||
><img
|
||||
style="margin-right: 10px"
|
||||
src="../../assets/images/leveladd/reset.png"
|
||||
/>
|
||||
<a-button class="cus-btn white" style="width: 100px" @click="reset">
|
||||
<template #icon><img style="margin-right: 10px" src="../../assets/images/leveladd/reset.png"/>
|
||||
</template>
|
||||
重置
|
||||
</a-button>
|
||||
@@ -63,18 +53,16 @@
|
||||
</a-row>
|
||||
<div style="margin-top: 20px">
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:data-source="studentList"
|
||||
:pagination="stuPagination"
|
||||
:loading="loading"
|
||||
row-key="id"
|
||||
:columns="columns"
|
||||
:data-source="studentList"
|
||||
:pagination="stuPagination"
|
||||
:loading="loading"
|
||||
row-key="id"
|
||||
>
|
||||
<template #action="{ record }">
|
||||
<a-space :size="2">
|
||||
<slot name="extension" v-bind:data="{ record }"></slot>
|
||||
<a-button @click="del(record.id)" type="link" danger
|
||||
>删除</a-button
|
||||
>
|
||||
<a-button v-if="record.type!==6 && record.type!==9 && record.type!==12" @click="del(record.id)" type="link" danger>删除</a-button>
|
||||
</a-space>
|
||||
</template>
|
||||
</a-table>
|
||||
@@ -86,25 +74,16 @@
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<div @click="openDrawer">
|
||||
<slot></slot>
|
||||
</div>
|
||||
<a-button @click="openDrawer" type="link"><slot></slot></a-button>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import {
|
||||
computed,
|
||||
createVNode,
|
||||
defineProps,
|
||||
defineExpose,
|
||||
ref,
|
||||
watch,
|
||||
} from "vue";
|
||||
import { usePage } from "@/api/request";
|
||||
import { STUDENT_LIST } from "@/api/apis";
|
||||
import { delStudentList } from "@/api/index1";
|
||||
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
||||
import { Modal } from "ant-design-vue";
|
||||
import {computed, createVNode, defineProps, defineExpose, ref, watch} from "vue";
|
||||
import {usePage} from "@/api/request";
|
||||
import {STUDENT_LIST} from "@/api/apis";
|
||||
import {delStudentList} from "@/api/index1";
|
||||
import {ExclamationCircleOutlined} from "@ant-design/icons-vue";
|
||||
import {Modal} from "ant-design-vue";
|
||||
|
||||
const props = defineProps({
|
||||
type: Number,
|
||||
@@ -123,14 +102,15 @@ const visiable = ref(false);
|
||||
|
||||
const initParams = {
|
||||
studentName: "",
|
||||
page: 1,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
type: props.type || "",
|
||||
type: props.type || '',
|
||||
types: props.types,
|
||||
pid: props.id || "",
|
||||
};
|
||||
pid: props.id || '',
|
||||
}
|
||||
|
||||
const searchParams = ref(initParams);
|
||||
const searchParams = ref(initParams)
|
||||
const searchName = ref('')
|
||||
|
||||
const columns = ref([
|
||||
{
|
||||
@@ -163,8 +143,7 @@ const columns = ref([
|
||||
key: "type",
|
||||
width: 30,
|
||||
align: "center",
|
||||
customRender: ({ record: { type } }) =>
|
||||
({ 4: "查看权", 5: "管理权", 6: "归属权" }[type]),
|
||||
customRender: ({record: {type}}) => ({4: "查看权", 5: "管理权", 6: "归属权",7: "查看权", 8: "管理权", 9: "归属权",10: "查看权", 11: "管理权", 12: "归属权"}[type])
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
@@ -172,43 +151,42 @@ const columns = ref([
|
||||
key: "operation",
|
||||
width: 50,
|
||||
align: "center",
|
||||
slots: { customRender: "action" },
|
||||
slots: {customRender: "action"},
|
||||
},
|
||||
]);
|
||||
])
|
||||
|
||||
const {
|
||||
data: studentList,
|
||||
fetch: searchStu,
|
||||
total,
|
||||
loading,
|
||||
} = usePage(STUDENT_LIST, searchParams.value);
|
||||
const {data: studentList, fetch: searchStu, total, loading} = usePage(STUDENT_LIST, searchParams)
|
||||
|
||||
const stuPagination = computed(() => ({
|
||||
total: total,
|
||||
total:total.value,
|
||||
showSizeChanger: false,
|
||||
current: searchParams.value.page,
|
||||
current: searchParams.value.pageNo,
|
||||
pageSize: searchParams.value.pageSize,
|
||||
onChange: changePagination,
|
||||
onChange: changePagination
|
||||
}));
|
||||
|
||||
const openDrawer = () => {
|
||||
visiable.value = true;
|
||||
};
|
||||
|
||||
const changePagination = (page) => {
|
||||
searchParams.value.page = page;
|
||||
searchStu();
|
||||
searchParams.value.pageNo = page;
|
||||
};
|
||||
|
||||
function search(){
|
||||
searchParams.value.studentName = searchName.value
|
||||
searchParams.value.pageNo = 1
|
||||
}
|
||||
function del(id) {
|
||||
Modal.confirm({
|
||||
title: () => "确定删除?",
|
||||
title: () => '确定删除?',
|
||||
icon: () => createVNode(ExclamationCircleOutlined),
|
||||
content: () => "数据删除后不可恢复!",
|
||||
okText: () => "确定",
|
||||
okType: "danger",
|
||||
cancelText: () => "取消",
|
||||
content: () => '数据删除后不可恢复!',
|
||||
okText: () => '确定',
|
||||
okType: 'danger',
|
||||
cancelText: () => '取消',
|
||||
onOk() {
|
||||
id && delStudentList({ ids: [id] }).then(() => searchStu());
|
||||
id && delStudentList({ids: [id]}).then(() => searchStu())
|
||||
},
|
||||
});
|
||||
}
|
||||
@@ -217,20 +195,20 @@ const closeDrawer = () => {
|
||||
visiable.value = false;
|
||||
};
|
||||
|
||||
function reset() {
|
||||
searchParams.value = initParams;
|
||||
searchStu();
|
||||
function reset(){
|
||||
searchParams.value = initParams
|
||||
searchName.value=''
|
||||
}
|
||||
|
||||
watch(visiable, () => {
|
||||
visiable.value && searchStu();
|
||||
searchParams.value = initParams;
|
||||
visiable.value && searchStu()
|
||||
searchParams.value = initParams
|
||||
});
|
||||
|
||||
defineExpose({
|
||||
searchStu,
|
||||
loading,
|
||||
});
|
||||
loading
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.cus-btn {
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
type="flex"
|
||||
gutter="12"
|
||||
style="padding-left: 20px; margin-right: 0px"
|
||||
v-button-per="permissions"
|
||||
>
|
||||
<a-col :span="1.5">
|
||||
<CommonStudent
|
||||
@@ -217,18 +218,20 @@
|
||||
<slot name="extension" v-bind:data="{ record }"></slot>
|
||||
|
||||
<a-button
|
||||
v-button-per="permissions"
|
||||
v-if="type === 3 && record.status !== 0"
|
||||
@click="updateStatus(0, record.id)"
|
||||
type="link"
|
||||
>通过</a-button
|
||||
>
|
||||
<a-button
|
||||
v-button-per="permissions"
|
||||
v-if="type === 3 && record.status !== 0"
|
||||
@click="updateStatus(2, record.id)"
|
||||
type="link"
|
||||
>拒绝</a-button
|
||||
>
|
||||
<a-button @click="del(record.id)" type="link" danger>删除</a-button>
|
||||
<a-button v-button-per="permissions" @click="del(record.id)" type="link" danger>删除</a-button>
|
||||
</a-space>
|
||||
</template>
|
||||
</a-table>
|
||||
@@ -354,6 +357,10 @@ import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
||||
|
||||
const props = defineProps({
|
||||
type: Number,
|
||||
permissions:{
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
id: String,
|
||||
columns: {
|
||||
type: Array,
|
||||
|
||||
@@ -16,6 +16,7 @@ import 'element-plus/dist/index.css'
|
||||
import "@/assets/scss/common.scss"
|
||||
import Antd from 'ant-design-vue';
|
||||
import 'ant-design-vue/dist/antd.css';
|
||||
import {vButPer} from "@/utils/directive";
|
||||
// import axios from 'axios'
|
||||
// axios.defaults.withCredentials = true;
|
||||
// import zhCN from 'ant-design-vue/es/locale/zh_CN';
|
||||
@@ -28,4 +29,5 @@ app.config.warnHandler = () => null;
|
||||
app.use(Antd);
|
||||
app.use(router);
|
||||
app.use(store);
|
||||
app.directive('buttonPer', vButPer)
|
||||
app.mount('#app');
|
||||
|
||||
13
src/utils/directive.js
Normal file
13
src/utils/directive.js
Normal file
@@ -0,0 +1,13 @@
|
||||
export const vButPer = {
|
||||
mounted: (el, binding) => {
|
||||
checkPer(binding.value) || el.parentNode.removeChild(el)
|
||||
}
|
||||
}
|
||||
const admin = [5, 6, 8, 9, 11, 12]
|
||||
|
||||
function checkPer(per) {
|
||||
if (!per) {
|
||||
return true
|
||||
}
|
||||
return (per + "").split(',').some(t => admin.some(s => s == t))
|
||||
}
|
||||
@@ -315,8 +315,9 @@
|
||||
>
|
||||
<template #bodyCell="{ record, column }">
|
||||
<template v-if="column.key === 'operation'">
|
||||
<a-space :size="0">
|
||||
<a-space>
|
||||
<a-button
|
||||
v-button-per="record.permissions"
|
||||
v-if="
|
||||
record.status === 0 || record.status === -1 || !record.kkty
|
||||
"
|
||||
@@ -325,6 +326,7 @@
|
||||
>编辑</a-button
|
||||
>
|
||||
<a-button
|
||||
v-button-per="record.permissions"
|
||||
block
|
||||
v-if="record.status === 2"
|
||||
@click="() => handleStart(record, String(record.courseform))"
|
||||
@@ -332,6 +334,7 @@
|
||||
>开课</a-button
|
||||
>
|
||||
<a-button
|
||||
v-button-per="record.permissions"
|
||||
v-if="record.status === 2"
|
||||
@click="() => handleLook(record, String(record.courseform))"
|
||||
type="link"
|
||||
@@ -343,86 +346,57 @@
|
||||
type="link"
|
||||
>管理</a-button
|
||||
>
|
||||
<div className="tableSelect" style="margin-left: 0">
|
||||
<a-select value="授权" dropdownClassName="tabledropdown">
|
||||
<a-select-option value="权限名单" label="权限名单">
|
||||
<TableModelStudent
|
||||
:types="[10, 11, 12]"
|
||||
:id="record.offcourseId"
|
||||
>权限名单</TableModelStudent
|
||||
>
|
||||
</a-select-option>
|
||||
<a-select-option value="查看权" label="查看权">
|
||||
<CommonStudent :type="10" :id="record.offcourseId"
|
||||
>查看权</CommonStudent
|
||||
>
|
||||
</a-select-option>
|
||||
<a-select-option value="管理权" label="管理权">
|
||||
<CommonStudent :type="11" :id="record.offcourseId"
|
||||
>管理权</CommonStudent
|
||||
>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
<div className="tableSelect">
|
||||
<a-select value="更多" dropdownClassName="tabledropdown">
|
||||
<a-select-option value="复制" label="复制">
|
||||
<a-button
|
||||
@click="
|
||||
() => handleCopy(record, String(record.courseform))
|
||||
"
|
||||
type="link"
|
||||
>复制</a-button
|
||||
>
|
||||
</a-select-option>
|
||||
<a-select-option
|
||||
v-if="record.status === 1"
|
||||
value="撤回"
|
||||
label="撤回"
|
||||
>
|
||||
<a-button
|
||||
@click="
|
||||
() =>
|
||||
handleRejectExit(record, String(record.courseform))
|
||||
"
|
||||
type="link"
|
||||
>撤回</a-button
|
||||
>
|
||||
</a-select-option>
|
||||
<a-select-option
|
||||
v-if="record.status === 2"
|
||||
value="停用"
|
||||
label="停用"
|
||||
>
|
||||
<a-button
|
||||
v-if="record.status === 2 && record.kkty"
|
||||
@click="
|
||||
() => handleStop(record, String(record.courseform))
|
||||
"
|
||||
type="link"
|
||||
>停用</a-button
|
||||
>
|
||||
<a-button
|
||||
v-if="record.status === 2 && !record.kkty"
|
||||
@click="
|
||||
() => handleOpen(record, String(record.courseform))
|
||||
"
|
||||
type="link"
|
||||
>启用</a-button
|
||||
>
|
||||
</a-select-option>
|
||||
<a-select-option value="删除" label="删除">
|
||||
<a-button
|
||||
@click="
|
||||
() => handleDelete(record, String(record.courseform))
|
||||
"
|
||||
type="link"
|
||||
danger
|
||||
>删除</a-button
|
||||
>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
<DropDown v-button-per="record.permissions" value="授权">
|
||||
<OwnerTableModelStudent
|
||||
:types="[10, 11, 12]"
|
||||
:id="record.offcourseId"
|
||||
>权限名单</OwnerTableModelStudent
|
||||
>
|
||||
<CommonStudent
|
||||
:type="10"
|
||||
:id="record.offcourseId"
|
||||
title="查看权"
|
||||
>查看权</CommonStudent
|
||||
>
|
||||
<CommonStudent
|
||||
:type="11"
|
||||
:id="record.offcourseId"
|
||||
title="管理权"
|
||||
>管理权</CommonStudent
|
||||
>
|
||||
</DropDown>
|
||||
<DropDown v-button-per="record.permissions" value="更多">
|
||||
<a-button
|
||||
@click="() => handleCopy(record, String(record.courseform))"
|
||||
type="link"
|
||||
>复制</a-button
|
||||
>
|
||||
<a-button
|
||||
@click="
|
||||
() => handleRejectExit(record, String(record.courseform))
|
||||
"
|
||||
type="link"
|
||||
>撤回</a-button
|
||||
>
|
||||
<a-button
|
||||
v-if="record.status === 2 && record.kkty"
|
||||
@click="() => handleStop(record, String(record.courseform))"
|
||||
type="link"
|
||||
>停用</a-button
|
||||
>
|
||||
<a-button
|
||||
v-if="record.status === 2 && !record.kkty"
|
||||
@click="() => handleOpen(record, String(record.courseform))"
|
||||
type="link"
|
||||
>启用</a-button
|
||||
>
|
||||
<a-button
|
||||
@click="() => handleDelete(record, String(record.courseform))"
|
||||
type="link"
|
||||
danger
|
||||
>删除</a-button
|
||||
>
|
||||
</DropDown>
|
||||
</a-space>
|
||||
</template>
|
||||
</template>
|
||||
@@ -1234,161 +1208,6 @@
|
||||
</template>
|
||||
</TableStudent>
|
||||
</div>
|
||||
<div class="tableBox" style="margin-top: 20px">
|
||||
<!-- <a-table-->
|
||||
<!-- :columns="columns7"-->
|
||||
<!-- :data-source="tableData7"-->
|
||||
<!-- :loading="tableDataTotal3 === -1 ? true : false"-->
|
||||
<!-- :scroll="{ x: 800 }"-->
|
||||
<!-- expandRowByClick="true"-->
|
||||
<!-- @expand="expandTable"-->
|
||||
<!-- :pagination="false"-->
|
||||
<!-- :row-selection="{-->
|
||||
<!-- selectedRowKeys: selectedRowKeys7,-->
|
||||
<!-- onChange: onSelectChange7,-->
|
||||
<!-- }"-->
|
||||
<!-- >-->
|
||||
<!-- <template #bodyCell="{ record, column }">-->
|
||||
<!-- <!– 操作1 –>-->
|
||||
<!-- <template-->
|
||||
<!-- v-if="-->
|
||||
<!-- (String(record.applyStatus) === '0' ||-->
|
||||
<!-- record.status === '待审核') &&-->
|
||||
<!-- column.key === 'overstatus'-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- <span class="table-operation">-</span>-->
|
||||
<!-- </template>-->
|
||||
<!-- <template-->
|
||||
<!-- v-if="-->
|
||||
<!-- (String(record.applyStatus) === '-1' ||-->
|
||||
<!-- record.status === '已拒绝') &&-->
|
||||
<!-- column.key === 'overstatus'-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- <span class="table-operation">-</span>-->
|
||||
<!-- </template>-->
|
||||
<!-- <template-->
|
||||
<!-- v-if="-->
|
||||
<!-- (String(record.applyStatus) === '1' ||-->
|
||||
<!-- record.status === '已通过') &&-->
|
||||
<!-- column.key === 'overstatus'-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- <span class="table-operation">-->
|
||||
<!-- <a-->
|
||||
<!-- @click="-->
|
||||
<!-- () => {-->
|
||||
<!-- handlJoinStu(record);-->
|
||||
<!-- }-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- 成绩录入-->
|
||||
<!-- </a>-->
|
||||
<!-- <a-->
|
||||
<!-- @click="-->
|
||||
<!-- () => {-->
|
||||
<!-- handleOverStu(record);-->
|
||||
<!-- }-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- 结业-->
|
||||
<!-- </a>-->
|
||||
<!-- </span>-->
|
||||
<!-- </template>-->
|
||||
<!-- <!– 操作2 –>-->
|
||||
<!-- <template-->
|
||||
<!-- v-if="-->
|
||||
<!-- (String(record.applyStatus) === '0' ||-->
|
||||
<!-- record.status === '待审核') &&-->
|
||||
<!-- column.key === 'operation'-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- <span class="table-operation">-->
|
||||
<!-- <a-->
|
||||
<!-- @click="-->
|
||||
<!-- () => {-->
|
||||
<!-- handleSucessStu(record);-->
|
||||
<!-- }-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- 通过-->
|
||||
<!-- </a>-->
|
||||
<!-- <a-->
|
||||
<!-- @click="-->
|
||||
<!-- () => {-->
|
||||
<!-- handleRejectStu(record);-->
|
||||
<!-- }-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- 拒绝-->
|
||||
<!-- </a>-->
|
||||
<!-- <a-->
|
||||
<!-- @click="-->
|
||||
<!-- () => {-->
|
||||
<!-- handleDeleteStu(record);-->
|
||||
<!-- }-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- 删除-->
|
||||
<!-- </a>-->
|
||||
<!-- </span>-->
|
||||
<!-- </template>-->
|
||||
<!-- <template-->
|
||||
<!-- v-if="-->
|
||||
<!-- (String(record.applyStatus) === '1' ||-->
|
||||
<!-- record.status === '已通过') &&-->
|
||||
<!-- column.key === 'operation'-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- <span class="table-operation">-->
|
||||
<!-- <a-->
|
||||
<!-- @click="-->
|
||||
<!-- () => {-->
|
||||
<!-- handleDeleteStu(record);-->
|
||||
<!-- }-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- 删除-->
|
||||
<!-- </a>-->
|
||||
<!-- </span>-->
|
||||
<!-- </template>-->
|
||||
<!-- <template-->
|
||||
<!-- v-if="-->
|
||||
<!-- (String(record.applyStatus) === '-1' ||-->
|
||||
<!-- record.status === '已拒绝') &&-->
|
||||
<!-- column.key === 'operation'-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- <span class="table-operation">-->
|
||||
<!-- <a-->
|
||||
<!-- @click="-->
|
||||
<!-- () => {-->
|
||||
<!-- handleDeleteStu(record);-->
|
||||
<!-- }-->
|
||||
<!-- "-->
|
||||
<!-- >-->
|
||||
<!-- 删除-->
|
||||
<!-- </a>-->
|
||||
<!-- </span>-->
|
||||
<!-- </template>-->
|
||||
<!-- </template>-->
|
||||
<!-- </a-table>-->
|
||||
<!-- <div class="tableBox" style="margin-top: 50px">-->
|
||||
<!-- <div class="pa">-->
|
||||
<!-- <a-pagination-->
|
||||
<!-- :showSizeChanger="false"-->
|
||||
<!-- showQuickJumper="true"-->
|
||||
<!-- hideOnSinglePage="true"-->
|
||||
<!-- :pageSize="pageSize3"-->
|
||||
<!-- :current="currentPage3"-->
|
||||
<!-- :total="tableDataTotal3"-->
|
||||
<!-- class="pagination"-->
|
||||
<!-- @change="handelChangePage3"-->
|
||||
<!-- />-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1766,7 +1585,7 @@ import * as apis from "../../api/indexTaskManage";
|
||||
import { message } from "ant-design-vue";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import CommonStudent from "@/components/student/CommonStudent";
|
||||
import TableModelStudent from "@/components/student/TableModelStudent";
|
||||
import OwnerTableModelStudent from "@/components/student/OwnerTableModelStudent";
|
||||
// import StuAdd from "../../components/drawers/StuAdd";
|
||||
// import OwnPower from "../../components/drawers/OwnPower.vue";
|
||||
// import Corpowerlist from "../../components/drawers/CorPowerlist.vue";
|
||||
@@ -1822,6 +1641,7 @@ import TableStudent from "@/components/student/TableStudent";
|
||||
import FJUpload from "@/components/common/FJUpload";
|
||||
import { updateStudent } from "@/api/indexProjStu";
|
||||
import { useStore } from "vuex";
|
||||
import DropDown from "@/components/common/DropDown";
|
||||
|
||||
//列表表格
|
||||
const columns1 = [
|
||||
@@ -2379,7 +2199,8 @@ export default defineComponent({
|
||||
// OwnPower,
|
||||
// Corpowerlist,
|
||||
CommonStudent,
|
||||
TableModelStudent,
|
||||
DropDown,
|
||||
OwnerTableModelStudent,
|
||||
SeeModal,
|
||||
CourseModal,
|
||||
FJUpload,
|
||||
@@ -4747,6 +4568,16 @@ export default defineComponent({
|
||||
|
||||
// 管理开课
|
||||
const handleGuan22 = (item) => {
|
||||
if (String(item.courseform) === "1") {
|
||||
return;
|
||||
}
|
||||
if (String(item.courseform) === ("1" || "线上")) {
|
||||
state.om_1 = true;
|
||||
state.ft_1 = false;
|
||||
} else if (String(item.courseform) === ("2" || "面授")) {
|
||||
state.om_1 = true;
|
||||
state.ft_1 = true;
|
||||
}
|
||||
state.manageStuLoading = true;
|
||||
console.log(787666, item);
|
||||
state.faceClassification = item.contentTxt;
|
||||
|
||||
@@ -96,12 +96,81 @@
|
||||
style="border: 1px solid #f2f6fe"
|
||||
:columns="tableDataFunc()"
|
||||
:data-source="tableData"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:loading="tableLoading"
|
||||
expandRowByClick="true"
|
||||
:scroll="{ x: 1550 }"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
/>
|
||||
>
|
||||
<template #bodyCell="{ record, column }">
|
||||
<template v-if="column.key === 'operation'">
|
||||
<a-space>
|
||||
<a-button
|
||||
v-button-per="record.permissions"
|
||||
v-if="record.state === '草稿'"
|
||||
@click="showPub(record)"
|
||||
type="link"
|
||||
>发布</a-button
|
||||
>
|
||||
<a-button
|
||||
v-button-per="record.permissions"
|
||||
v-if="record.state === '草稿'"
|
||||
@click="getLearnPathInfo(record.id)"
|
||||
type="link"
|
||||
>编辑</a-button
|
||||
>
|
||||
<a-button
|
||||
v-button-per="record.permissions"
|
||||
v-if="record.state === '已发布'"
|
||||
@click="getLearnPathInfo(record.id)"
|
||||
type="link"
|
||||
>编辑</a-button
|
||||
>
|
||||
<a-button @click="manage(record.id)" type="link">管理</a-button>
|
||||
<DropDown v-button-per="record.permissions" value="授权">
|
||||
<OwnerTableModelStudent
|
||||
:types="[7, 8, 9]"
|
||||
:id="record.id"
|
||||
:type="9"
|
||||
>权限名单</OwnerTableModelStudent
|
||||
>
|
||||
<CommonStudent :type="7" :id="record.id" title="查看权"
|
||||
>查看权</CommonStudent
|
||||
>
|
||||
<CommonStudent :type="8" :id="record.id" title="管理权"
|
||||
>管理权</CommonStudent
|
||||
>
|
||||
</DropDown>
|
||||
<DropDown v-button-per="record.permissions" value="更多">
|
||||
<a-button @click="showCopyModal(record.id)" type="link"
|
||||
>复制</a-button
|
||||
>
|
||||
<a-button @click="showDeleteModal(record.id)" type="link" danger
|
||||
>删除</a-button
|
||||
>
|
||||
<a-button
|
||||
v-if="record.state === '已发布'"
|
||||
@click="showBackModal(record.id)"
|
||||
type="link"
|
||||
>撤回</a-button
|
||||
>
|
||||
<a-button
|
||||
v-if="record.state === '已发布'"
|
||||
@click="showStopModal(record.id)"
|
||||
type="link"
|
||||
>结束</a-button
|
||||
>
|
||||
<a-button
|
||||
v-if="record.state === '已结束'"
|
||||
@click="showStartModal(record.id)"
|
||||
type="link"
|
||||
>启用</a-button
|
||||
>
|
||||
</DropDown>
|
||||
</a-space>
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</div>
|
||||
<div class="tableBox">
|
||||
<div class="pa">
|
||||
@@ -704,25 +773,26 @@ import { useStore } from "vuex";
|
||||
import OrgClass from "@/components/project/OrgClass";
|
||||
import NameInput from "@/components/project/NameInput";
|
||||
import { validateName } from "@/api/index1";
|
||||
import DropDown from "@/components/common/DropDown";
|
||||
|
||||
export default {
|
||||
name: "learningPath",
|
||||
components: {
|
||||
// OwnerShip,
|
||||
// PowerList,
|
||||
// QueryRight,
|
||||
// ManageRight,
|
||||
ProjOwnerShip,
|
||||
OrgClass,
|
||||
NameInput,
|
||||
ProjPowerList,
|
||||
ProjCheckShip,
|
||||
CommonStudent,
|
||||
OwnerTableModelStudent,
|
||||
DropDown,
|
||||
},
|
||||
|
||||
setup() {
|
||||
const store = useStore();
|
||||
const router = useRouter();
|
||||
const state = reactive({
|
||||
tableLoading: false,
|
||||
out: false,
|
||||
out1: false,
|
||||
number: null,
|
||||
@@ -947,7 +1017,8 @@ export default {
|
||||
state.routeStudentsNum = null;
|
||||
};
|
||||
//显示复制窗口
|
||||
const showCopyModal = () => {
|
||||
const showCopyModal = (id) => {
|
||||
state.copyPathId = id;
|
||||
state.copyModal = true;
|
||||
};
|
||||
//关闭复制窗口
|
||||
@@ -980,7 +1051,8 @@ export default {
|
||||
};
|
||||
|
||||
//显示结束窗口
|
||||
const showStopModal = () => {
|
||||
const showStopModal = (id) => {
|
||||
state.stopPathId = id;
|
||||
state.stopModal = true;
|
||||
};
|
||||
//关闭结束窗口
|
||||
@@ -1012,7 +1084,8 @@ export default {
|
||||
});
|
||||
};
|
||||
|
||||
const showDeleteModal = () => {
|
||||
const showDeleteModal = (id) => {
|
||||
state.deletePathId = id;
|
||||
state.deleteModal = true;
|
||||
};
|
||||
const closeDeleteModal = () => {
|
||||
@@ -1159,275 +1232,12 @@ export default {
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
className: "h",
|
||||
dataIndex: "opacation",
|
||||
key: "opacation",
|
||||
dataIndex: "operation",
|
||||
key: "operation",
|
||||
width: "20%",
|
||||
align: "center",
|
||||
align: "right",
|
||||
fixed: "right",
|
||||
scopedSlots: { customRender: "action" }, //引入的插槽
|
||||
customRender: (text) => {
|
||||
// console.log(text);
|
||||
return (
|
||||
<div class="operation">
|
||||
<div class="nSelect">
|
||||
{text.record.state === "草稿" ? (
|
||||
<div class="fb">
|
||||
<div
|
||||
style="cursor:pointer"
|
||||
class="jc"
|
||||
onClick={() => {
|
||||
// console.log("text.record.", text.record);
|
||||
showPub(text.record);
|
||||
}}
|
||||
>
|
||||
发布
|
||||
</div>
|
||||
<div
|
||||
class="jc"
|
||||
onClick={() => {
|
||||
// console.log("text.record", text.record);
|
||||
|
||||
getLearnPathInfo(text.record.id);
|
||||
}}
|
||||
>
|
||||
编辑
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
<div></div>
|
||||
)}
|
||||
{text.record.state === "已发布" ? (
|
||||
<div class="fb">
|
||||
<div
|
||||
class="jc"
|
||||
onClick={() => {
|
||||
// state.out1 = true;
|
||||
// state.pathName = text.record.manager;
|
||||
// // state.pathBg = "";
|
||||
// // state.organizationSelectName = null;
|
||||
// // state.organizationSelectId = null;
|
||||
// state.pathIntro = text.record.remark;
|
||||
// state.editPathId = text.record.id;
|
||||
}}
|
||||
></div>
|
||||
</div>
|
||||
) : (
|
||||
<div></div>
|
||||
)}
|
||||
{
|
||||
// text.record.state === "未发布" ? (
|
||||
// <div class="fb">
|
||||
// <div
|
||||
// style="cursor:pointer"
|
||||
// class="jc"
|
||||
// onClick={() => {
|
||||
// showCopyModal();
|
||||
// }}
|
||||
// >
|
||||
// 复制
|
||||
// </div>
|
||||
// </div>
|
||||
// ) : (
|
||||
// <div></div>
|
||||
// )
|
||||
}
|
||||
</div>
|
||||
<div class="tableSelect">
|
||||
<div
|
||||
class="g1"
|
||||
onClick={() => {
|
||||
router.push({
|
||||
path: "/leveladd",
|
||||
});
|
||||
storage.set("routerId", text.record.id);
|
||||
}}
|
||||
>
|
||||
管理
|
||||
</div>
|
||||
{
|
||||
<a-select
|
||||
style="width: 50px;margin-top:2px;margin-left:25px"
|
||||
value="授权"
|
||||
dropdownClassName="tabledropdown"
|
||||
>
|
||||
<a-select-option value="权限名单" label="权限名单">
|
||||
<OwnerTableModelStudent
|
||||
types={[7, 8, 9]}
|
||||
id={text.record.id}
|
||||
type={9}
|
||||
>
|
||||
权限名单
|
||||
</OwnerTableModelStudent>
|
||||
</a-select-option>
|
||||
<a-select-option value="查看权" label="查看权">
|
||||
<CommonStudent type={7} id={text.record.id}>
|
||||
查看权
|
||||
</CommonStudent>
|
||||
</a-select-option>
|
||||
<a-select-option value="管理权" label="管理权">
|
||||
<CommonStudent type={8} id={text.record.id}>
|
||||
管理权
|
||||
</CommonStudent>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
}
|
||||
</div>
|
||||
<div class="tableSelect">
|
||||
{text.record.state === "草稿" ? (
|
||||
<a-select
|
||||
style="width: 50px;margin-top:2px;margin-right:20px;"
|
||||
value="更多"
|
||||
dropdownClassName="tabledropdown"
|
||||
>
|
||||
<a-select-option
|
||||
value="复制"
|
||||
label="复制"
|
||||
style="padding-left:35px"
|
||||
>
|
||||
<div
|
||||
onClick={() => {
|
||||
state.copyPathId = text.record.id;
|
||||
showCopyModal();
|
||||
}}
|
||||
>
|
||||
复制
|
||||
</div>
|
||||
</a-select-option>
|
||||
|
||||
<a-select-option
|
||||
value="删除"
|
||||
label="删除"
|
||||
style="padding-left:35px"
|
||||
>
|
||||
<div
|
||||
onClick={() => {
|
||||
state.deletePathId = text.record.id;
|
||||
// console.log("text.record", text.record);
|
||||
showDeleteModal();
|
||||
}}
|
||||
>
|
||||
删除
|
||||
</div>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
) : (
|
||||
<div></div>
|
||||
)}
|
||||
{text.record.state === "已发布" ? (
|
||||
<div>
|
||||
<a-select
|
||||
style="width: 50px;margin-top:2px;margin-right:20px;"
|
||||
value="更多"
|
||||
dropdownClassName="tabledropdown"
|
||||
>
|
||||
<a-select-option
|
||||
value="复制"
|
||||
label="复制"
|
||||
style="padding-left:35px"
|
||||
>
|
||||
<div
|
||||
onClick={() => {
|
||||
state.copyPathId = text.record.id;
|
||||
showCopyModal();
|
||||
}}
|
||||
>
|
||||
复制
|
||||
</div>
|
||||
</a-select-option>
|
||||
|
||||
<a-select-option
|
||||
value="撤回"
|
||||
label="撤回"
|
||||
style="padding-left:35px"
|
||||
>
|
||||
<div
|
||||
onClick={() => {
|
||||
showBackModal(text.record.id);
|
||||
}}
|
||||
>
|
||||
撤回
|
||||
</div>
|
||||
</a-select-option>
|
||||
<a-select-option
|
||||
value="结束"
|
||||
label="结束"
|
||||
style="padding-left:35px"
|
||||
>
|
||||
<div
|
||||
onClick={() => {
|
||||
state.stopPathId = text.record.id;
|
||||
showStopModal();
|
||||
}}
|
||||
>
|
||||
结束
|
||||
</div>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
) : (
|
||||
<div></div>
|
||||
)}
|
||||
{text.record.state === "已结束" ? (
|
||||
<div>
|
||||
<a-select
|
||||
style="width: 50px;margin-top:2px;margin-right:20px;"
|
||||
value="更多"
|
||||
dropdownClassName="tabledropdown"
|
||||
>
|
||||
<a-select-option
|
||||
value="复制"
|
||||
label="复制"
|
||||
style="padding-left:35px"
|
||||
>
|
||||
<div
|
||||
onClick={() => {
|
||||
state.copyPathId = text.record.id;
|
||||
showCopyModal();
|
||||
}}
|
||||
>
|
||||
复制
|
||||
</div>
|
||||
</a-select-option>
|
||||
{/**
|
||||
<a-select-option
|
||||
value="启用"
|
||||
label="启用"
|
||||
style="padding-left:35px"
|
||||
>
|
||||
<div
|
||||
onClick={() => {
|
||||
showStartModal();
|
||||
}}
|
||||
>
|
||||
启用
|
||||
</div>
|
||||
</a-select-option>
|
||||
*/}
|
||||
|
||||
<a-select-option
|
||||
value="删除"
|
||||
label="删除"
|
||||
style="padding-left:35px"
|
||||
>
|
||||
<div
|
||||
onClick={() => {
|
||||
state.deletePathId = text.record.id;
|
||||
showDeleteModal();
|
||||
}}
|
||||
>
|
||||
删除
|
||||
</div>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
) : (
|
||||
<div></div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
scopedSlots: { customRender: "action" },
|
||||
},
|
||||
];
|
||||
return columns;
|
||||
@@ -1515,6 +1325,7 @@ export default {
|
||||
|
||||
//获取学习路径列表
|
||||
const getLearnPath = () => {
|
||||
state.tableLoading = true;
|
||||
let obj = {
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
@@ -1541,6 +1352,7 @@ export default {
|
||||
}
|
||||
getTableDate(arr);
|
||||
state.tableDataTotal = Number(res.data.data.total);
|
||||
state.tableLoading = false;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -1578,44 +1390,6 @@ export default {
|
||||
});
|
||||
};
|
||||
|
||||
//获取路径图详细信息
|
||||
const getLearnPathInfo = (id) => {
|
||||
// console.log("编辑学习路径图id", id);
|
||||
//获取学习路径详情
|
||||
api
|
||||
.getRouterDetail(id)
|
||||
.then((res) => {
|
||||
if (res.data.code === 200) {
|
||||
console.log("获取学习路径详情成功", res.data.data);
|
||||
let detail = res.data.data.routerInfo;
|
||||
state.pathName = detail.name;
|
||||
state.pathBg = detail.picUrl;
|
||||
state.pathBgId = "";
|
||||
state.organizationSelectName = detail.organizationName;
|
||||
state.organizationSelectId = detail.organizationId;
|
||||
state.pathIntro = detail.remark;
|
||||
state.editPathId = id;
|
||||
let arr = imgData.value;
|
||||
arr.forEach((item) => {
|
||||
if (item.dictValue === state.pathBg) {
|
||||
state.pathBgId = item.dictCode;
|
||||
}
|
||||
});
|
||||
|
||||
//for (let i = 0; i < arr.length; i++) {
|
||||
// console.log("arr[i].dictValue", arr[i].dictValue, state.pathBg);
|
||||
// if (arr[i].dictValue === state.pathBg) {
|
||||
// state.pathBgId = arr[i].dictCode;
|
||||
|
||||
// }
|
||||
// }
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("获取详情失败", err);
|
||||
});
|
||||
state.out1 = true;
|
||||
};
|
||||
//编辑学习路径图
|
||||
const editLearnPath = async () => {
|
||||
if (!state.pathName) {
|
||||
@@ -1817,10 +1591,17 @@ export default {
|
||||
});
|
||||
}
|
||||
);
|
||||
function manage(id) {
|
||||
router.push({
|
||||
path: "/leveladd",
|
||||
});
|
||||
storage.set("routerId", id);
|
||||
}
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
imgData,
|
||||
manage,
|
||||
selectProjectName,
|
||||
expandTable,
|
||||
handleOut,
|
||||
@@ -2763,6 +2544,10 @@ export default {
|
||||
// position: absolute;
|
||||
// bottom: -40px;
|
||||
}
|
||||
th {
|
||||
background-color: #eff4fc !important;
|
||||
text-align: center !important;
|
||||
}
|
||||
}
|
||||
|
||||
.operation {
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
<div class="onerow">
|
||||
<div class="taskmain">快速创建路径图详情</div>
|
||||
</div>
|
||||
<div class="second">
|
||||
<div class="second" v-button-per="permissions">
|
||||
<div @click="totask">
|
||||
<div
|
||||
class="taskbox"
|
||||
@@ -326,7 +326,11 @@
|
||||
<div class="onerow">
|
||||
<div class="taskmain">任务大纲</div>
|
||||
|
||||
<router-link to="/leveladddetail" class="editright">
|
||||
<router-link
|
||||
to="/leveladddetail"
|
||||
class="editright"
|
||||
v-button-per="permissions"
|
||||
>
|
||||
<img
|
||||
class="editimg"
|
||||
src="../../assets/images/leveladd/edit.png"
|
||||
@@ -554,6 +558,7 @@
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="3" tab="学员管理" force-render>
|
||||
<TableStudent
|
||||
:permissions="permissions"
|
||||
v-if="isreload"
|
||||
:type="2"
|
||||
:id="routerId"
|
||||
@@ -562,7 +567,12 @@
|
||||
>
|
||||
<template #extension="{ data: { record } }">
|
||||
<a-button type="link" @click="showStudent(record)">查看</a-button>
|
||||
<a-button type="link" @click="setLevels(record)">调整</a-button>
|
||||
<a-button
|
||||
type="link"
|
||||
@click="setLevels(record)"
|
||||
v-button-per="permissions"
|
||||
>调整</a-button
|
||||
>
|
||||
</template>
|
||||
</TableStudent>
|
||||
<TableStudent
|
||||
@@ -574,11 +584,15 @@
|
||||
>
|
||||
<template #extension="{ data: { record } }">
|
||||
<a-button type="link" @click="showStudent(record)">查看</a-button>
|
||||
<a-button type="link" @click="setLevels(record)">调整</a-button>
|
||||
<a-button
|
||||
type="link"
|
||||
@click="setLevels(record)"
|
||||
v-button-per="permissions"
|
||||
>调整</a-button
|
||||
>
|
||||
</template>
|
||||
</TableStudent>
|
||||
</a-tab-pane>
|
||||
<!-- 1211注释 待开放 -->
|
||||
<a-tab-pane key="4" tab="设置">
|
||||
<div class="split"></div>
|
||||
|
||||
@@ -592,7 +606,12 @@
|
||||
<div class="headone">
|
||||
<div class="box"></div>
|
||||
<div class="onetitle">关卡内容可见可学设置</div>
|
||||
<div class="oneedi" @click="showbtn" v-show="twobtn">
|
||||
<div
|
||||
class="oneedi"
|
||||
@click="showbtn"
|
||||
v-show="twobtn"
|
||||
v-button-per="permissions"
|
||||
>
|
||||
编辑
|
||||
</div>
|
||||
<div v-show="twobtnn" class="twobtn">
|
||||
@@ -1388,6 +1407,7 @@ export default {
|
||||
const router = useRouter();
|
||||
// const store = useStore();
|
||||
const state = reactive({
|
||||
permissions: "",
|
||||
hasTask: false,
|
||||
stage: [],
|
||||
statess: [],
|
||||
@@ -1553,7 +1573,7 @@ export default {
|
||||
previewEndNum: 0,
|
||||
studyStartNum: 0,
|
||||
studyEndNum: 0,
|
||||
|
||||
pjModelVisible: false,
|
||||
faceTeachModelVisible: false,
|
||||
examinationModelVisible: false,
|
||||
evaluationModelVisible: false,
|
||||
@@ -1561,7 +1581,6 @@ export default {
|
||||
commonModelVisible: false,
|
||||
voteModelVisible: false,
|
||||
projectModelVisible: false,
|
||||
PjModelVisible: false,
|
||||
faceTeachModelVisibleTitle: "",
|
||||
examinationModelVisibleTitle: "",
|
||||
evaluationModelVisibleTitle: "",
|
||||
@@ -2241,6 +2260,7 @@ export default {
|
||||
.then((res) => {
|
||||
console.log("router-list", res);
|
||||
state.fileList = JSON.parse(res.data.data.routerInfo.attach);
|
||||
state.permissions = res.data.data.routerInfo.permissions;
|
||||
console.log("asdasdasd-------->", state.fileList);
|
||||
state.docChecked =
|
||||
res.data.data.routerInfo.attachSwitch == 1 ? true : false;
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
</div>
|
||||
<div class="rightt">
|
||||
<!-- 2022-11-30注释 后面放开 -->
|
||||
<!-- <div class="select">
|
||||
<div class="select" style="margin-right:90px;">
|
||||
<span>学习模式:</span>
|
||||
<div class="inputbox">
|
||||
<input type="text" placeholder="按学习时间解锁" />
|
||||
@@ -201,7 +201,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<unlock-mode v-model:unlockModeVisible="unlockModeVisible" />
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<router-link to="/leveladd">
|
||||
<div style="display: flex">
|
||||
@@ -781,7 +781,7 @@
|
||||
</div>
|
||||
<div class="rightt">
|
||||
<!-- 2022-11-30注释 后面放开 -->
|
||||
<!-- <div class="select">
|
||||
<div class="select">
|
||||
<span>学习模式:</span>
|
||||
<div class="inputbox">
|
||||
<input type="text" placeholder="按学习时间解锁" />
|
||||
@@ -790,7 +790,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<unlock-mode v-model:unlockModeVisible="unlockModeVisible" />
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<router-link to="/leveladd">
|
||||
<div style="display: flex">
|
||||
@@ -898,7 +898,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="footbtn">
|
||||
<div class="footbtn">
|
||||
<div class="btnbox">
|
||||
<div class="btn btn2" @click="temporaryStorage">
|
||||
<div class="btnText">暂存</div>
|
||||
@@ -910,7 +910,7 @@
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<!-- 添加学员抽屉 -->
|
||||
<add-stu v-model:AddSvisible="AddSvisible" />
|
||||
<!-- 导入学员抽屉 -->
|
||||
@@ -1087,7 +1087,7 @@ import { editTask } from "../../api/indexTaskadd";
|
||||
|
||||
// import { RouterEditTask } from "@/api/indexTask";
|
||||
import { useRouter } from "vue-router";
|
||||
// import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
export default {
|
||||
name: "LevelAddDetail",
|
||||
components: {
|
||||
@@ -1105,7 +1105,7 @@ export default {
|
||||
AddLive,
|
||||
AddRef,
|
||||
draggable,
|
||||
// UnlockMode,
|
||||
UnlockMode,
|
||||
AddFaceteach,
|
||||
AddProject,
|
||||
},
|
||||
|
||||
@@ -91,7 +91,34 @@
|
||||
:scroll="{ x: 700 }"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
:header-cell-style="{'text-align':'center'}"
|
||||
>
|
||||
<template #bodyCell="{ record, column }">
|
||||
<template v-if="column.key === 'operation'">
|
||||
<a-space align="start">
|
||||
<a-button v-button-per="record.permissions" v-if="record.status===0 || record.status===2 || record.status===-5" @click="handleEdit(record)" type="link">编辑</a-button>
|
||||
<a-button v-button-per="record.permissions" v-if="record.type===1" @click="createSub(record)" type="link">创建子项目</a-button>
|
||||
<a-button v-button-per="record.permissions" v-if="record.type===2" @click="createClass(record)" type="link">创建班级</a-button>
|
||||
<a-button v-button-per="record.permissions" v-if="record.status===0 && record.type===3" @click="showReviewModal(record.projectId)" type="link">提交审核</a-button>
|
||||
<a-button v-button-per="record.permissions" v-if="record.status===1 && record.type===3" @click="showRecallReviewModal(record.projectId)" type="link">撤回审核</a-button>
|
||||
<a-button v-button-per="record.permissions" v-if="record.status===2 && record.type===3" @click="push(record)" type="link">发布</a-button>
|
||||
<a-button v-button-per="record.permissions" v-if="record.status===3 && record.type===3" @click="showBackModal(record.projectId)" type="link">撤回发布</a-button>
|
||||
<a-button v-if="record.status!==3 && record.type===3" @click="baseInfo(record)" type="link">管理</a-button>
|
||||
<DropDown v-button-per="record.permissions" value="授权">
|
||||
<OwnerTableModelStudent :types="[4,5,6]" :id="record.projectId" :type="6">权限名单</OwnerTableModelStudent>
|
||||
<CommonStudent :type="4" :id="record.projectId" title="查看权">查看权</CommonStudent>
|
||||
<CommonStudent :type="5" :id="record.projectId" title="管理权">管理权</CommonStudent>
|
||||
</DropDown>
|
||||
<DropDown v-button-per="record.permissions" value="更多">
|
||||
<a-button @click="showCopyModal(record.projectId)" type="link">复制</a-button>
|
||||
<a-button v-if="record.status!==3" @click="showDeleteModal(record.projectId)" type="link" danger>删除</a-button>
|
||||
<a-button v-if="record.status===3" @click="showStartModal(record.projectId)" type="link">存为模版</a-button>
|
||||
<a-button v-if="record.status===3 && record.type===3" @click="showStopModal(record.projectId)" type="link">结束</a-button>
|
||||
<a-button v-if="record.status===-1 && record.type===3" @click="showBackFinashModal(record.projectId)" type="link">撤回</a-button>
|
||||
</DropDown>
|
||||
</a-space>
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
<div class="tableBox">
|
||||
<div class="pa">
|
||||
@@ -837,7 +864,8 @@ import * as moment from "moment";
|
||||
import NameInput from "@/components/project/NameInput";
|
||||
import { validateName } from "@/api/index1";
|
||||
import CommonStudent from "@/components/student/CommonStudent";
|
||||
import TableModelStudent from "@/components/student/TableModelStudent";
|
||||
import OwnerTableModelStudent from "@/components/student/OwnerTableModelStudent";
|
||||
import DropDown from "@/components/common/DropDown";
|
||||
|
||||
export default {
|
||||
name: "projectManage",
|
||||
@@ -847,10 +875,11 @@ export default {
|
||||
ProjCheckShip,
|
||||
NameInput,
|
||||
ProjectManager,
|
||||
// ProjectClass,
|
||||
OrgClass,
|
||||
TrainClass,
|
||||
// ProjManageShip
|
||||
CommonStudent,
|
||||
OwnerTableModelStudent,
|
||||
DropDown,
|
||||
},
|
||||
setup() {
|
||||
const state = reactive({
|
||||
@@ -991,8 +1020,7 @@ export default {
|
||||
message.destroy();
|
||||
return message.warning("项目名称重复,请重新填写");
|
||||
}
|
||||
api.createProject(state.projectInfo).then((res) => {
|
||||
console.log("res", res);
|
||||
api.createProject(state.projectInfo).then(() => {
|
||||
state.doublepro = false;
|
||||
message.destroy();
|
||||
message.success("创建成功");
|
||||
@@ -1398,278 +1426,9 @@ export default {
|
||||
dataIndex: "operation",
|
||||
key: "operation",
|
||||
width: 300,
|
||||
align: "center",
|
||||
align: "right",
|
||||
fixed: "right",
|
||||
customRender: (value) => {
|
||||
// console.log("value", value.record.type, value.record.status);
|
||||
return (
|
||||
<div className="operation">
|
||||
{value.record.status === 0 ||
|
||||
value.record.status === 2 ||
|
||||
value.record.status === -5 ? (
|
||||
<span
|
||||
onClick={() => {
|
||||
if (value.record.type === 1 || value.record.type === 2) {
|
||||
state.doublepro = true;
|
||||
state.projectInfo = value.record;
|
||||
} else {
|
||||
console.log(value.record);
|
||||
router.push({
|
||||
path: "/projectadd",
|
||||
query: {
|
||||
projectId: value.record.projectId,
|
||||
parentId: value.record.parentId,
|
||||
parentName: value.record.parentName,
|
||||
},
|
||||
});
|
||||
}
|
||||
}}
|
||||
style="cursor:pointer;"
|
||||
className="operation1"
|
||||
>
|
||||
编辑
|
||||
</span>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
{value.record.status === 0 && value.record.type === 3 ? (
|
||||
<span
|
||||
onClick={() => {
|
||||
showReviewModal(value.record.projectId);
|
||||
}}
|
||||
style="cursor:pointer"
|
||||
class="operation3"
|
||||
>
|
||||
提交审核
|
||||
</span>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
{value.record.status === 1 && value.record.type === 3 ? (
|
||||
<span
|
||||
onClick={() => {
|
||||
showRecallReviewModal(value.record.projectId);
|
||||
}}
|
||||
style="cursor:pointer"
|
||||
class="operation3"
|
||||
>
|
||||
撤回审核
|
||||
</span>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
{value.record.status === 2 && value.record.type === 3 ? (
|
||||
<span
|
||||
onClick={() => {
|
||||
let time =
|
||||
value.record.beginTime + "-" + value.record.endTime;
|
||||
let obj = {
|
||||
projectId: value.record.projectId,
|
||||
name: value.record.name,
|
||||
time: time,
|
||||
};
|
||||
showProjectPub(obj);
|
||||
}}
|
||||
style="cursor:pointer"
|
||||
class="operation3"
|
||||
>
|
||||
发布
|
||||
</span>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
{value.record.status === 3 && value.record.type === 3 ? (
|
||||
<div
|
||||
onClick={() => {
|
||||
router.push({
|
||||
path: "/taskpage",
|
||||
query: { projectId: value.record.projectId },
|
||||
});
|
||||
storage.set("projectId", value.record.projectId);
|
||||
}}
|
||||
>
|
||||
管理
|
||||
</div>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
{value.record.status === 3 && value.record.type === 3 ? (
|
||||
<span
|
||||
onClick={() => {
|
||||
showBackModal(value.record.projectId);
|
||||
}}
|
||||
style="cursor:pointer; margin-left: 21px; width:70px;"
|
||||
class="operation3"
|
||||
>
|
||||
撤回发布
|
||||
</span>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
{
|
||||
<div className="tableSelect">
|
||||
<a-select
|
||||
style="width: 50px;"
|
||||
value="授权"
|
||||
dropdownClassName="tabledropdown"
|
||||
>
|
||||
<a-select-option value="权限名单" label="权限名单">
|
||||
<TableModelStudent
|
||||
types={[4, 5, 6]}
|
||||
id={value.record.projectId}
|
||||
>
|
||||
权限名单
|
||||
</TableModelStudent>
|
||||
</a-select-option>
|
||||
<a-select-option value="查看权" label="查看权">
|
||||
<CommonStudent type={4} id={value.record.projectId}>
|
||||
查看权
|
||||
</CommonStudent>
|
||||
</a-select-option>
|
||||
<a-select-option value="管理权" label="管理权">
|
||||
<CommonStudent type={5} id={value.record.projectId}>
|
||||
管理权
|
||||
</CommonStudent>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
}
|
||||
{value.record.type === 1 ? (
|
||||
<span
|
||||
className="operation3"
|
||||
style="cursor: pointer"
|
||||
onClick={() => {
|
||||
state.projectInfo = {
|
||||
parentName: value.record.name,
|
||||
parentId: value.record.projectId,
|
||||
name: "",
|
||||
sourceBelongId: value.record.sourceBelongId,
|
||||
sourceBelongName: value.record.sourceBelongName,
|
||||
manager: value.record.manager,
|
||||
managerId: value.record.managerId,
|
||||
systemId: value.record.systemId,
|
||||
type: 2,
|
||||
};
|
||||
state.estabish = true;
|
||||
}}
|
||||
>
|
||||
创建子项目
|
||||
</span>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
{value.record.type === 2 ? (
|
||||
<span
|
||||
className="operation3"
|
||||
style="cursor: pointer"
|
||||
onClick={() => {
|
||||
router.push({
|
||||
path: "/projectadd",
|
||||
query: {
|
||||
parentId: value.record.projectId,
|
||||
parentName:
|
||||
value.record.parentName + "——" + value.record.name,
|
||||
ptojectType: 3,
|
||||
},
|
||||
});
|
||||
}}
|
||||
>
|
||||
创建班级
|
||||
</span>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
<div className="tableSelect">
|
||||
<a-select
|
||||
style="width: 50px"
|
||||
value="更多"
|
||||
// options={state.projectNameList}
|
||||
dropdownClassName="tabledropdown"
|
||||
>
|
||||
<a-select-option value="复制" label="复制">
|
||||
<div
|
||||
onClick={() => {
|
||||
showCopyModal(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
复制
|
||||
</div>
|
||||
</a-select-option>
|
||||
{value.record.status !== 3 ? (
|
||||
<a-select-option value="删除" label="删除">
|
||||
<div
|
||||
onClick={() => {
|
||||
showDeleteModal(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
删除
|
||||
</div>
|
||||
</a-select-option>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
{value.record.type === 3 ? (
|
||||
<a-select-option value="存为模版" label="存为模版">
|
||||
<div
|
||||
onClick={() => {
|
||||
showStartModal(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
存为模版
|
||||
</div>
|
||||
</a-select-option>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
{value.record.status === 3 && value.record.type === 3 ? (
|
||||
<a-select-option value="结束" label="结束">
|
||||
<div
|
||||
onClick={() => {
|
||||
showStopModal(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
结束
|
||||
</div>
|
||||
</a-select-option>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
|
||||
{value.record.status === -1 && value.record.type === 3 ? (
|
||||
<a-select-option value="撤回" label="撤回">
|
||||
<div
|
||||
onClick={() => {
|
||||
showBackFinashModal(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
撤回
|
||||
</div>
|
||||
</a-select-option>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
{value.record.status !== 3 && value.record.type === 3 ? (
|
||||
<a-select-option value="基础信息" label="基础信息">
|
||||
<div
|
||||
onClick={() => {
|
||||
router.push({
|
||||
path: "/taskpage",
|
||||
query: { projectId: value.record.projectId },
|
||||
});
|
||||
storage.set("projectId", value.record.projectId);
|
||||
}}
|
||||
>
|
||||
基础信息
|
||||
</div>
|
||||
</a-select-option>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
</a-select>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
scopedSlots: {customRender: "action"}
|
||||
},
|
||||
]);
|
||||
const getTableDate = () => {
|
||||
@@ -1713,6 +1472,21 @@ export default {
|
||||
});
|
||||
}
|
||||
}
|
||||
function handleEdit(record){
|
||||
if (record.type === 1 || record.type === 2) {
|
||||
state.doublepro = true;
|
||||
state.projectInfo = record;
|
||||
} else {
|
||||
router.push({
|
||||
path: "/projectadd",
|
||||
query: {
|
||||
projectId: record.projectId,
|
||||
parentId: record.parentId,
|
||||
parentName: record.parentName,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
getTableDate();
|
||||
// 翻页
|
||||
@@ -1803,10 +1577,65 @@ export default {
|
||||
state.projectInfo.sourceBelongName = t;
|
||||
state.projectInfo.sourceBelongFullName = orgName;
|
||||
}
|
||||
function push(record){
|
||||
showProjectPub({
|
||||
projectId: record.projectId,
|
||||
name: record.name,
|
||||
time: record.beginTime + "-" + record.endTime,
|
||||
});
|
||||
}
|
||||
function manage(record){
|
||||
router.push({
|
||||
path: "/taskpage",
|
||||
query: { projectId: record.projectId },
|
||||
});
|
||||
storage.set("projectId", record.projectId);
|
||||
}
|
||||
|
||||
function createSub(record){
|
||||
state.projectInfo = {
|
||||
parentName: record.name,
|
||||
parentId: record.projectId,
|
||||
name: "",
|
||||
sourceBelongId: record.sourceBelongId,
|
||||
sourceBelongName: record.sourceBelongName,
|
||||
manager: record.manager,
|
||||
managerId: record.managerId,
|
||||
systemId: record.systemId,
|
||||
type: 2,
|
||||
};
|
||||
state.estabish = true;
|
||||
}
|
||||
|
||||
function createClass(record){
|
||||
router.push({
|
||||
path: "/projectadd",
|
||||
query: {
|
||||
parentId: record.projectId,
|
||||
parentName: record.parentName + "——" + record.name,
|
||||
ptojectType: 3,
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function baseInfo(record){
|
||||
router.push({
|
||||
path: "/taskpage",
|
||||
query: { projectId: record.projectId },
|
||||
});
|
||||
storage.set("projectId", record.projectId);
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
dayjs,
|
||||
handleEdit,
|
||||
baseInfo,
|
||||
createClass,
|
||||
createSub,
|
||||
manage,
|
||||
push,
|
||||
moment,
|
||||
managerChange,
|
||||
reFinashedProject,
|
||||
@@ -2060,6 +1889,10 @@ export default {
|
||||
.ant-table-thead > tr > th {
|
||||
background-color: #eff4fc;
|
||||
}
|
||||
th {
|
||||
background-color: #eff4fc !important;
|
||||
text-align: center !important;
|
||||
}
|
||||
}
|
||||
|
||||
.tableBox {
|
||||
|
||||
@@ -105,16 +105,16 @@
|
||||
</div>
|
||||
<div class="rightt">
|
||||
<!-- 2022-11-30注释 后面放开 -->
|
||||
<!-- <div class="select">
|
||||
<span>学习模式:</span>
|
||||
<div class="inputbox">
|
||||
<input type="text" placeholder="按学习时间解锁" />
|
||||
<div class="bottonbox" @click="showModeVisible">
|
||||
<div class="btnText">切换模式</div>
|
||||
</div>
|
||||
<unlock-mode v-model:unlockModeVisible="unlockModeVisible" />
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="select" style="margin-right:90px;">
|
||||
<span>学习模式:</span>
|
||||
<div class="inputbox">
|
||||
<input type="text" placeholder="按学习时间解锁" style="padding-left:12px;" />
|
||||
<div class="bottonbox" @click="showModeVisible">
|
||||
<div class="btnText">切换模式</div>
|
||||
</div>
|
||||
<unlock-mode v-model:unlockModeVisible="unlockModeVisible" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<!-- <img class="img2" src="../../assets/images/projectadd/keep.png" />
|
||||
<div class="pub">保存</div>
|
||||
@@ -570,19 +570,19 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="footbtn">
|
||||
<div class="btnbox">
|
||||
<div class="btn btn2" @click="temporaryStorage">
|
||||
<div class="btnText">暂存</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="submitStorage">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
<div class="btn btn1" @click="cancelStorage">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="footbtn">
|
||||
<div class="btnbox">
|
||||
<div class="btn btn2" @click="temporaryStorage">
|
||||
<div class="btnText">暂存</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="submitStorage">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
<div class="btn btn1" @click="cancelStorage">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 添加阶段弹窗 -->
|
||||
<div>
|
||||
@@ -841,6 +841,7 @@ import * as api from "../../api/indexTaskadd";
|
||||
import * as apistage from "../../api/indexStage";
|
||||
import * as apimove from "../../api/indexMovetask";
|
||||
import draggable from "vuedraggable";
|
||||
import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
|
||||
@@ -860,7 +861,7 @@ export default {
|
||||
AddEval,
|
||||
AddInvist,
|
||||
AddVote,
|
||||
// UnlockMode,
|
||||
UnlockMode,
|
||||
},
|
||||
setup() {
|
||||
const router = useRouter();
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
<div class="onerow">
|
||||
<div class="taskmain">快速创建项目详情</div>
|
||||
</div>
|
||||
<div class="second">
|
||||
<div v-button-per="permissions" class="second">
|
||||
<!-- @click="totask" -->
|
||||
<div
|
||||
class="taskbox"
|
||||
@@ -423,6 +423,7 @@
|
||||
批量面授报名
|
||||
</button> -->
|
||||
<router-link
|
||||
v-button-per="permissions"
|
||||
:to="{ path: `/taskadd`, query: { projectId: projectId } }"
|
||||
>
|
||||
<button class="edit">
|
||||
@@ -570,7 +571,7 @@
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<div class="operations">
|
||||
<div v-button-per="permissions" class="operations">
|
||||
<div
|
||||
class="operation"
|
||||
style="cursor: pointer"
|
||||
@@ -672,7 +673,7 @@
|
||||
</router-link>
|
||||
<!-- 无数据创建任务 -->
|
||||
</div>
|
||||
<div v-else>
|
||||
<div v-button-per="permissions" v-else>
|
||||
<div
|
||||
class="taskbox"
|
||||
@click="
|
||||
@@ -710,6 +711,7 @@
|
||||
<a-tabs v-model:activeKey="activeKey1">
|
||||
<a-tab-pane key="8" tab="学员管理">
|
||||
<TableStudent
|
||||
:permissions="permissions"
|
||||
:type="1"
|
||||
:id="projectId"
|
||||
:columns="stuColumns"
|
||||
@@ -750,7 +752,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="second2">
|
||||
<div class="second2" v-button-per="permissions">
|
||||
<div class="btn1" @click="showModal2(1, null)">
|
||||
<img src="../../assets/images/courseManage/add0.png" />
|
||||
<span class="btn1text">创建小组</span>
|
||||
@@ -781,7 +783,7 @@
|
||||
style="color: rgba(0, 0, 0, 0.45); cursor: pointer"
|
||||
>. . .</span
|
||||
>
|
||||
<div class="moreItems">
|
||||
<div class="moreItems" v-button-per="permissions">
|
||||
<div class="sammo" @click="showModal2(2, item)">
|
||||
编辑
|
||||
</div>
|
||||
@@ -838,7 +840,7 @@
|
||||
<div class="split"></div>
|
||||
<a-tabs v-model:activeKey="activeKeyNotice">
|
||||
<a-tab-pane key="11" tab="公告">
|
||||
<NoticePub v-model:projectId="projectId"></NoticePub>
|
||||
<NoticePub :permissions="permissions" v-model:projectId="projectId"></NoticePub>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="12" tab="历史公告" force-render>
|
||||
<NoticeHis
|
||||
@@ -849,7 +851,7 @@
|
||||
</a-tabs>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="5" tab="项目积分">
|
||||
<ProjectScore :projectId="projectId"></ProjectScore>
|
||||
<ProjectScore :permissions="permissions" :projectId="projectId"></ProjectScore>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="6" tab="排行榜">
|
||||
<div class="split"></div>
|
||||
@@ -1096,7 +1098,7 @@
|
||||
<div class="img"></div>
|
||||
<div class="ed">编辑</div>
|
||||
</div> -->
|
||||
<div class="edit" v-if="status != 3" @click="toEdit">
|
||||
<div v-button-per="permissions" class="edit" v-if="status != 3" @click="toEdit">
|
||||
<div class="img"></div>
|
||||
<div class="ed">编辑</div>
|
||||
</div>
|
||||
@@ -2143,6 +2145,7 @@ export default {
|
||||
const store = useStore();
|
||||
const route = useRoute();
|
||||
const state = reactive({
|
||||
permissions:'',
|
||||
screenHeight: document.body.clientHeight,
|
||||
screenWidth: document.body.clientWidth,
|
||||
editRecord: {},
|
||||
@@ -3853,6 +3856,7 @@ export default {
|
||||
name: e.name,
|
||||
}));
|
||||
let info = res.data.data.projectInfo;
|
||||
state.permissions = info.permissions;
|
||||
// let start = toDate(info.beginTime / 1000, "Y-M-D h:m");
|
||||
let start = info.beginTime;
|
||||
// let end = toDate(info.endTime / 1000, "Y-M-D h:m");
|
||||
|
||||
@@ -134,16 +134,16 @@
|
||||
</div>
|
||||
<div class="rightt">
|
||||
<!-- 2022-11-30注释 后面放开 -->
|
||||
<!-- <div class="select">
|
||||
<div class="select" style="margin-right:90px;">
|
||||
<span>学习模式:</span>
|
||||
<div class="inputbox">
|
||||
<input type="text" placeholder="按学习时间解锁" />
|
||||
<input type="text" placeholder="按学习时间解锁" style="padding-left:12px;"/>
|
||||
<div class="bottonbox" @click="showModeVisible">
|
||||
<div class="btnText">切换模式</div>
|
||||
</div>
|
||||
<unlock-mode v-model:unlockModeVisible="unlockModeVisible" />
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<!-- <img class="img2" src="../../assets/images/projectadd/keep.png" />
|
||||
<div class="pub">保存</div>
|
||||
@@ -735,7 +735,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="footbtn">
|
||||
<div class="footbtn">
|
||||
<div class="btnbox">
|
||||
<div class="btn btn2" @click="temporaryStorage">
|
||||
<div class="btnText">暂存</div>
|
||||
@@ -747,7 +747,7 @@
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
<!-- 添加阶段弹窗 -->
|
||||
<div>
|
||||
@@ -1091,7 +1091,7 @@ import { message } from "ant-design-vue";
|
||||
import * as api from "../../api/indexTemplate";
|
||||
import draggable from "vuedraggable";
|
||||
import { storage } from "../../api/storage";
|
||||
// import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
// import * as api1 from "../../api/index1";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
const drawercolumns = [
|
||||
@@ -1149,7 +1149,7 @@ export default {
|
||||
AddEval,
|
||||
AddInvist,
|
||||
AddVote,
|
||||
// UnlockMode,
|
||||
UnlockMode,
|
||||
},
|
||||
setup() {
|
||||
const route = useRoute();
|
||||
|
||||
Reference in New Issue
Block a user