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