mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-11 03:46:45 +08:00
-- 添加学员
This commit is contained in:
2
.env
2
.env
@@ -3,6 +3,8 @@ VUE_APP_BASE_API=/manageApi
|
|||||||
VUE_APP_PROXY_URL=http://111.231.196.214:30001/
|
VUE_APP_PROXY_URL=http://111.231.196.214:30001/
|
||||||
VUE_APP_LOGIN_URL=https://u-pre.boe.com/web
|
VUE_APP_LOGIN_URL=https://u-pre.boe.com/web
|
||||||
|
|
||||||
|
VUE_APP_BOE_API_URL=https://u-pre.boe.com
|
||||||
|
|
||||||
|
|
||||||
VUE_APP_IFRAME_URL=https://u-pre.boe.com/pc/iframe
|
VUE_APP_IFRAME_URL=https://u-pre.boe.com/pc/iframe
|
||||||
VUE_APP_IFRAME_STUDENT_URL=https://u-pre.boe.com/pc/loading
|
VUE_APP_IFRAME_STUDENT_URL=https://u-pre.boe.com/pc/loading
|
||||||
|
|||||||
52
src/App.vue
52
src/App.vue
@@ -1,27 +1,27 @@
|
|||||||
<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>
|
||||||
import { computed, defineComponent, ref } from "vue";
|
import {computed, defineComponent, ref} from "vue";
|
||||||
import { useRouter, useRoute } from "vue-router";
|
import {useRouter, useRoute} from "vue-router";
|
||||||
import { useStore } from "vuex";
|
import {useStore} 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";
|
||||||
@@ -78,7 +78,7 @@ export default defineComponent({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const memberInitInfo = await api1
|
const memberInitInfo = await api1
|
||||||
.getMemberInfo({ keyWord: "", pageNo: 1, pageSize: 10 })
|
.getMemberInfo({keyWord: "", pageNo: 1, pageSize: 10})
|
||||||
.then((res) => res.data.data.rows);
|
.then((res) => res.data.data.rows);
|
||||||
store.commit("SET_MEMBER_INFO", memberInitInfo);
|
store.commit("SET_MEMBER_INFO", memberInitInfo);
|
||||||
localStorage.setItem("memberInitInfo", JSON.stringify(memberInitInfo));
|
localStorage.setItem("memberInitInfo", JSON.stringify(memberInitInfo));
|
||||||
@@ -94,13 +94,13 @@ export default defineComponent({
|
|||||||
if (localStory) {
|
if (localStory) {
|
||||||
list = localStorage.getItem(key);
|
list = localStorage.getItem(key);
|
||||||
if (list) {
|
if (list) {
|
||||||
store.commit("SET_DICT", { key, data: JSON.parse(list) });
|
store.commit("SET_DICT", {key, data: JSON.parse(list)});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
list = await getDictList(key);
|
list = await getDictList(key);
|
||||||
localStory && localStorage.setItem(key, JSON.stringify(list));
|
localStory && localStorage.setItem(key, JSON.stringify(list));
|
||||||
store.commit("SET_DICT", { key, data: list });
|
store.commit("SET_DICT", {key, data: list});
|
||||||
}
|
}
|
||||||
|
|
||||||
const getDictList = (param) =>
|
const getDictList = (param) =>
|
||||||
@@ -199,6 +199,34 @@ export default defineComponent({
|
|||||||
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 {
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-right: 16px;
|
||||||
|
border: 1px solid #4ea6ff;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #4ea6ff;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.white {
|
||||||
|
background: #fff;
|
||||||
|
color: #4ea6ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cus-input {
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
.cus-select{
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
// @media screen and (max-width: 1366px) {
|
// @media screen and (max-width: 1366px) {
|
||||||
// .cmMain {
|
// .cmMain {
|
||||||
// width: 750px;
|
// width: 750px;
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
export const BASE = 'https://pre.boe.com'
|
|
||||||
export const BASE_DEV = 'https://u-pre.boe.com'
|
|
||||||
|
|
||||||
export const USER_LIST = '/userbasic/user/list post'
|
export const USER_LIST = '/userbasic/user/list post'
|
||||||
export const ORG_LIST = '/userbasic/org/list post'
|
export const ORG_LIST = '/userbasic/org/list post'
|
||||||
export const ORG_CHILD_LIST = '/userbasic/org/info post'
|
export const ORG_CHILD_LIST = '/userbasic/org/info post'
|
||||||
|
|
||||||
export const AUDIENCE_LIST = '/userbasic/audience/list post'
|
export const AUDIENCE_LIST = '/userbasic/audience/list post'
|
||||||
@@ -131,6 +131,8 @@ export const addStudentCourse = (obj) => http.post("/admin/offcourse/addStudent"
|
|||||||
// 获取组织结构树
|
// 获取组织结构树
|
||||||
export const orgtree = () => http.get("/org/tree");
|
export const orgtree = () => http.get("/org/tree");
|
||||||
export const saveStu = obj => http.post("/admin/student/addStudent", obj);
|
export const saveStu = obj => http.post("/admin/student/addStudent", obj);
|
||||||
|
export const getStuPage = obj => http.get("/admin/student/getStudent", {params: obj});
|
||||||
|
export const delStudentList = obj => http.post("/admin/student/delStudent", obj);
|
||||||
export const validateName = obj => http.post("/admin/validate/validateName", obj);
|
export const validateName = obj => http.post("/admin/validate/validateName", obj);
|
||||||
|
|
||||||
//获取积分列表
|
//获取积分列表
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ export function useRequest(_url, params = {}, init = true) {
|
|||||||
export async function request(_url, params) {
|
export async function request(_url, params) {
|
||||||
const s = _url.split(' ')
|
const s = _url.split(' ')
|
||||||
let url = s[0]
|
let url = s[0]
|
||||||
const method = s[1] || 'get'
|
const method = s[1]?.toLowerCase() || 'get'
|
||||||
if (method === 'get') {
|
if (method === 'get') {
|
||||||
let paramsArray = [];
|
let paramsArray = [];
|
||||||
//拼接参数
|
//拼接参数
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<div>
|
||||||
<a-drawer
|
<a-drawer
|
||||||
:visible="visiableState"
|
:visible="visiable"
|
||||||
class="drawerStyle ProjCheckship"
|
class="drawerStyle ProjCheckship"
|
||||||
placement="right"
|
placement="right"
|
||||||
width="45%"
|
width="45%"
|
||||||
@@ -8,7 +9,7 @@
|
|||||||
<div class="drawerMain" id="ProjCheckship">
|
<div class="drawerMain" id="ProjCheckship">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="headerTitle">
|
<div class="headerTitle">
|
||||||
{{ {1: '查看权', 2: '管理权', 3: '添加学员'}[type] || '' }}
|
{{ {1: '添加学员', 2: '添加学员', 3: '添加学员'}[type] || '' }}
|
||||||
</div>
|
</div>
|
||||||
<img
|
<img
|
||||||
style="width: 29px; height: 29px; cursor: pointer"
|
style="width: 29px; height: 29px; cursor: pointer"
|
||||||
@@ -101,16 +102,6 @@
|
|||||||
multiple
|
multiple
|
||||||
>
|
>
|
||||||
</a-tree>
|
</a-tree>
|
||||||
<!-- <div>-->
|
|
||||||
<!-- <a-table-->
|
|
||||||
<!-- :columns="stuColumns"-->
|
|
||||||
<!-- :data-source="stuData"-->
|
|
||||||
<!-- :pagination="stuPagination"-->
|
|
||||||
<!-- :loading="orgLoading"-->
|
|
||||||
<!-- row-key="id"-->
|
|
||||||
<!-- :row-selection="stuRowSelection"-->
|
|
||||||
<!-- />-->
|
|
||||||
<!-- </div>-->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
@@ -159,7 +150,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style="margin-top: 20px">组织添加</div>
|
<div style="margin-top: 20px">组织添加</div>
|
||||||
<a-tag :closable="true" color="#4ea6ff" @close="orgDel(i)" v-for="(item,i) in selectsData.deptList" :key="i"
|
<a-tag :closable="true" color="#4ea6ff" @close="orgDel(i)" v-for="(item,i) in selectsData.deptList"
|
||||||
|
:key="i"
|
||||||
style="margin-top:20px">
|
style="margin-top:20px">
|
||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</a-tag>
|
</a-tag>
|
||||||
@@ -179,9 +171,25 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
|
<div @click="openDrawer">
|
||||||
|
<slot></slot>
|
||||||
|
</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>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {computed, defineEmits, defineProps, onMounted, ref} from "vue";
|
import {computed, defineEmits, defineProps, ref, watch} from "vue";
|
||||||
import {useStore} from "vuex";
|
import {useStore} from "vuex";
|
||||||
import {useBoeApi, useBoeApiPage} from "@/api/request";
|
import {useBoeApi, useBoeApiPage} from "@/api/request";
|
||||||
import {AUDIENCE_LIST, ORG_LIST, USER_LIST} from "@/api/ThirdApi";
|
import {AUDIENCE_LIST, ORG_LIST, USER_LIST} from "@/api/ThirdApi";
|
||||||
@@ -191,16 +199,17 @@ const store = useStore();
|
|||||||
const emit = defineEmits({})
|
const emit = defineEmits({})
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
type: Number,
|
type: Number,
|
||||||
visiable: {
|
id: String,
|
||||||
type: Boolean,
|
stage: {
|
||||||
default: false
|
type: Array,
|
||||||
},
|
default: () => []
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
const visiable = ref(false)
|
||||||
const visiableState = computed(() => props.visiable)
|
|
||||||
|
|
||||||
const activeKey = ref(1)
|
const activeKey = ref(1)
|
||||||
|
const stageVisible = ref(false)
|
||||||
const selectsData = ref({
|
const selectsData = ref({
|
||||||
|
stageId: '',
|
||||||
studentList: [],
|
studentList: [],
|
||||||
deptList: [],
|
deptList: [],
|
||||||
groupList: []
|
groupList: []
|
||||||
@@ -222,6 +231,8 @@ const searchOrgName = ref({
|
|||||||
pageSize: 10
|
pageSize: 10
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const stageIds = computed(() => props.stage)
|
||||||
|
|
||||||
const {
|
const {
|
||||||
data: stuData,
|
data: stuData,
|
||||||
fetch: searchStu,
|
fetch: searchStu,
|
||||||
@@ -250,7 +261,7 @@ const {
|
|||||||
total: audiTotal
|
total: audiTotal
|
||||||
} = useBoeApiPage(AUDIENCE_LIST, audienceName.value, {
|
} = useBoeApiPage(AUDIENCE_LIST, audienceName.value, {
|
||||||
init: true,
|
init: true,
|
||||||
result: res => res.result.audienceList,
|
result: res => res.result.audienceList.map(e => ({...e, id: e.id + ''})),
|
||||||
totalPage: res => res.result.totalPage,
|
totalPage: res => res.result.totalPage,
|
||||||
total: res => res.result.totalElement
|
total: res => res.result.totalElement
|
||||||
})
|
})
|
||||||
@@ -367,11 +378,11 @@ const auditRowSelection = computed(() => ({
|
|||||||
preserveSelectedRowKeys: true,
|
preserveSelectedRowKeys: true,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
});
|
|
||||||
|
|
||||||
const closeDrawer = () => {
|
const closeDrawer = () => {
|
||||||
|
visiable.value = false
|
||||||
|
};
|
||||||
|
const openDrawer = () => {
|
||||||
|
visiable.value = true
|
||||||
};
|
};
|
||||||
//获取组织树
|
//获取组织树
|
||||||
const treeData = computed(() => {
|
const treeData = computed(() => {
|
||||||
@@ -397,6 +408,7 @@ function AuditDel(i) {
|
|||||||
auditSelectKeys.value = auditSelectKeys.value.filter(e => e !== selectsData.value.groupList[i].id)
|
auditSelectKeys.value = auditSelectKeys.value.filter(e => e !== selectsData.value.groupList[i].id)
|
||||||
selectsData.value.groupList.splice(i, 1)
|
selectsData.value.groupList.splice(i, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// function orgSelect(key, obj) {
|
// function orgSelect(key, obj) {
|
||||||
// console.log(obj)
|
// console.log(obj)
|
||||||
@@ -432,8 +444,6 @@ const changePagination = (page) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const auditChangePagination = (page) => {
|
const auditChangePagination = (page) => {
|
||||||
console.log(1111111111)
|
|
||||||
console.log(page)
|
|
||||||
audienceName.value.page = page;
|
audienceName.value.page = page;
|
||||||
searchAudi()
|
searchAudi()
|
||||||
};
|
};
|
||||||
@@ -468,14 +478,50 @@ const resetAudienceInfo = () => {
|
|||||||
// };
|
// };
|
||||||
//确定添加授权
|
//确定添加授权
|
||||||
const submitAuth = () => {
|
const submitAuth = () => {
|
||||||
emit('update:visiable', false)
|
if (props.type !== 3) {
|
||||||
saveStu(selectsData.value)
|
stageVisible.value = true
|
||||||
|
} else {
|
||||||
|
handleStageOk()
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function handleStageOk() {
|
||||||
|
stageVisible.value = false
|
||||||
|
visiable.value = false
|
||||||
|
emit('finash', false)
|
||||||
|
saveStu({
|
||||||
|
targetId: props.id,
|
||||||
|
type: props.type,
|
||||||
|
deptIds: selectsData.value.deptList?.map(e => e.id),
|
||||||
|
stageId: selectsData.value.stageId,
|
||||||
|
groupIds: selectsData.value.groupList?.map(e => e.id),
|
||||||
|
studentList: selectsData.value.studentList
|
||||||
|
}).then(() => {
|
||||||
|
emit('finash', true)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
watch(visiable, () => {
|
||||||
|
stuSelectKeys.value = []
|
||||||
|
orgSelectKeys.value = []
|
||||||
|
auditSelectKeys.value = []
|
||||||
|
selectsData.value = {
|
||||||
|
stageId: '',
|
||||||
|
studentList: [],
|
||||||
|
deptList: [],
|
||||||
|
groupList: []
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.ant-btn-primary {
|
.ant-btn-primary {
|
||||||
background-color: #4ea6ff !important;
|
background-color: #4ea6ff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cus-select {
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
213
src/components/student/TableStudent.vue
Normal file
213
src/components/student/TableStudent.vue
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<a-row type="flex" gutter="12" style="padding-left: 20px">
|
||||||
|
<a-col>
|
||||||
|
<a-form-item title="姓名:" @click="getStuList">
|
||||||
|
<a-input class="cus-input" v-model:value="tableParam.studentName" placeholder="请输入姓名"/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col>
|
||||||
|
<a-button class="cus-btn" style="width: 100px">
|
||||||
|
<template #icon>
|
||||||
|
<img style="margin-right: 10px" src="../../assets/images/courseManage/search0.png"/></template>
|
||||||
|
搜索
|
||||||
|
</a-button>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="2">
|
||||||
|
<a-button class="cus-btn white" style="width: 100px" @click="reset">重置</a-button>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
|
||||||
|
<a-row type="flex" gutter="12" style="padding-left: 20px">
|
||||||
|
<a-col :span="1.5">
|
||||||
|
<CommonStudent :type="type" :id="id" @finash="submitCall" :stage="stage">
|
||||||
|
<a-button class="cus-btn">
|
||||||
|
<template #icon><img style="margin-right: 10px" src="../../assets/images/courseManage/add0.png"/></template>
|
||||||
|
添加学员
|
||||||
|
</a-button>
|
||||||
|
</CommonStudent>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="1.5">
|
||||||
|
<a-button class="cus-btn white" @click="bathDel">
|
||||||
|
<template #icon><img style="margin-right: 10px" src="../../assets/images/projectadd/delete.png"/></template>
|
||||||
|
批量删除
|
||||||
|
</a-button>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<div style="margin-top: 20px">
|
||||||
|
<a-table
|
||||||
|
:columns="tablecolumns"
|
||||||
|
:data-source="tableData.list"
|
||||||
|
:pagination="stuPagination"
|
||||||
|
:loading="tableData.loading"
|
||||||
|
row-key="id"
|
||||||
|
:row-selection="stuRowSelection"
|
||||||
|
>
|
||||||
|
<template #action="{record}">
|
||||||
|
<a-row gutter="12">
|
||||||
|
<a-col>
|
||||||
|
<slot name="extension" v-bind:data="{record}"></slot>
|
||||||
|
</a-col>
|
||||||
|
<a-col>
|
||||||
|
<a-select style="width: 80px" value="更多">
|
||||||
|
<a-select-option value="删除" label="删除">
|
||||||
|
<div @click="del(record.id)">删除</div>
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</template>
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import {computed, defineProps, onMounted, ref, watch} from "vue";
|
||||||
|
import {delStudentList, getStuPage} from "@/api/index1";
|
||||||
|
import CommonStudent from '@/components/student/CommonStudent'
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
type: Number,
|
||||||
|
id: String,
|
||||||
|
columns: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
},
|
||||||
|
stage: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const tablecolumns = ref([
|
||||||
|
{
|
||||||
|
title: "姓名",
|
||||||
|
dataIndex: "studentName",
|
||||||
|
key: "studentName",
|
||||||
|
width: "20%",
|
||||||
|
align: "left",
|
||||||
|
className: "h",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "工号",
|
||||||
|
dataIndex: "studentUserNo",
|
||||||
|
key: "studentUserNo",
|
||||||
|
width: "10%",
|
||||||
|
align: "center",
|
||||||
|
className: "h",
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "部门",
|
||||||
|
dataIndex: "studentDepartName",
|
||||||
|
key: "studentDepartName",
|
||||||
|
width: "10%",
|
||||||
|
align: "center",
|
||||||
|
className: "h",
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "加入方式",
|
||||||
|
dataIndex: "source",
|
||||||
|
key: "source",
|
||||||
|
width: "10%",
|
||||||
|
align: "center",
|
||||||
|
customRender: ({record: {source}}) => ({1: '快速添加', 2: '组织', 3: '受众'}[source])
|
||||||
|
},
|
||||||
|
...props.columns,
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
dataIndex: "operation",
|
||||||
|
key: "operation",
|
||||||
|
width: "25%",
|
||||||
|
align: "center",
|
||||||
|
slots: {customRender: 'action'}
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
const tableParam = ref({
|
||||||
|
studentName: "",
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
type: props.type,
|
||||||
|
pid: props.id,
|
||||||
|
})
|
||||||
|
const stuSelectKeys = ref([])
|
||||||
|
const tableData = ref({
|
||||||
|
list: [],
|
||||||
|
total: 0,
|
||||||
|
loading: false
|
||||||
|
})
|
||||||
|
|
||||||
|
const stuRowSelection = computed(() => ({
|
||||||
|
columnWidth: 20,
|
||||||
|
selectedRowKeys: stuSelectKeys.value,
|
||||||
|
onChange: onStuSelectChange,
|
||||||
|
preserveSelectedRowKeys: true,
|
||||||
|
}))
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getStuList()
|
||||||
|
})
|
||||||
|
|
||||||
|
function onStuSelectChange(e) {
|
||||||
|
stuSelectKeys.value = e
|
||||||
|
}
|
||||||
|
|
||||||
|
const stuPagination = computed(() => ({
|
||||||
|
total: tableData.value.total,
|
||||||
|
showSizeChanger: false,
|
||||||
|
current: tableParam.value.pageNo,
|
||||||
|
pageSize: tableParam.value.pageSize,
|
||||||
|
onChange: changePagination
|
||||||
|
}))
|
||||||
|
|
||||||
|
function changePagination(page) {
|
||||||
|
tableParam.value.pageNo = page;
|
||||||
|
getStuList()
|
||||||
|
}
|
||||||
|
|
||||||
|
function getStuList() {
|
||||||
|
tableData.value.loading = true
|
||||||
|
getStuPage(tableParam.value).then(res => {
|
||||||
|
tableData.value.total = res.data.data.total;
|
||||||
|
tableData.value.list = res.data.data.records;
|
||||||
|
tableData.value.loading = false;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function reset() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function bathDel() {
|
||||||
|
stuSelectKeys.value && stuSelectKeys.value.length && delStudentList({
|
||||||
|
ids: stuSelectKeys.value,
|
||||||
|
}).then(() => {
|
||||||
|
getStuList()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function del(id) {
|
||||||
|
id && delStudentList({
|
||||||
|
ids: [id],
|
||||||
|
}).then(() => {
|
||||||
|
getStuList()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function submitCall(flag) {
|
||||||
|
tableData.value.loading = true
|
||||||
|
flag && getStuList()
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.studentopea1 {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #387df7;
|
||||||
|
line-height: 22px;
|
||||||
|
padding-right: 8px;
|
||||||
|
border-right: 1px solid #e9e9e9;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -2276,236 +2276,168 @@
|
|||||||
<span>{{ currentPlanItem.teacher }}</span>
|
<span>{{ currentPlanItem.teacher }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="stmm_i5">
|
<div class="stmm_i5">
|
||||||
<div class="i5_left">
|
<TableStudent :type="3" :id="offcourseId" :columns="stuColumns">
|
||||||
<!-- <a-input
|
<!-- <template #extension = "data">-->
|
||||||
v-model:value="xygl_inputV1"
|
<!-- <div style="display: flex">-->
|
||||||
style="
|
<!-- <button @click="handlJoinStu(data)">成绩录入</button>-->
|
||||||
width: 270px;
|
<!-- </div>-->
|
||||||
height: 40px;
|
<!-- </template>-->
|
||||||
border-radius: 8px;
|
</TableStudent>
|
||||||
margin-right: 14px;
|
|
||||||
"
|
|
||||||
placeholder="请输入姓名"
|
|
||||||
/> -->
|
|
||||||
<a-input
|
|
||||||
v-model:value="xygl_inputV1"
|
|
||||||
placeholder="请输入姓名"
|
|
||||||
style="
|
|
||||||
width: 400px;
|
|
||||||
height: 40px;
|
|
||||||
border-radius: 8px;
|
|
||||||
margin-right: 14px;
|
|
||||||
"
|
|
||||||
/>
|
|
||||||
<div class="btn btn1" @click="handleSearchStu">
|
|
||||||
<div class="search"></div>
|
|
||||||
<div class="btnText">搜索</div>
|
|
||||||
</div>
|
|
||||||
<div class="btnn btn2" @click="handleRestStu">
|
|
||||||
<div class="search"></div>
|
|
||||||
<div class="btnText">重置</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="btns">
|
|
||||||
<div class="btn btn3" @click="showStuAdd(currentPlanItem)">
|
|
||||||
<div class="search"></div>
|
|
||||||
<div class="btnText">添加学员</div>
|
|
||||||
</div>
|
|
||||||
<!-- 2022-11-30注释 后面放开 -->
|
|
||||||
<!-- <div class="stmm_btn btn4" @click="hideShow">
|
|
||||||
<div class="btn4_sub">
|
|
||||||
<span style="color: #4ea6ff; margin-right: 4px">
|
|
||||||
批量操作
|
|
||||||
</span>
|
|
||||||
<div
|
|
||||||
class="b_zk"
|
|
||||||
:style="{ display: hideshow ? 'block' : 'none' }"
|
|
||||||
></div>
|
|
||||||
<div
|
|
||||||
class="b_sq"
|
|
||||||
:style="{ display: hideshow ? 'none' : 'block' }"
|
|
||||||
></div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="btn4_sup"
|
|
||||||
:style="{ display: hideshow ? 'none' : 'block' }"
|
|
||||||
>
|
|
||||||
<div class="btnsbox">
|
|
||||||
<div class="btn4_tit" @click="handleAllJion">
|
|
||||||
<span style="color: #4ea6ff">批量录入成绩</span>
|
|
||||||
</div>
|
|
||||||
<div class="btn4_op1" @click="handleAllover">
|
|
||||||
<span>批量结业</span>
|
|
||||||
</div>
|
|
||||||
<div class="btn4_op2" @click="handleAllSuc">
|
|
||||||
<span>批量通过</span>
|
|
||||||
</div>
|
|
||||||
<div class="btn4_op3" @click="handleAllReject">
|
|
||||||
<span>批量拒绝</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="stmm_btn btn5" @click="handleExportStu">
|
|
||||||
<div class="export"></div>
|
|
||||||
<div class="btnText">导出</div>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="tableBox" style="margin-top: 20px">
|
<div class="tableBox" style="margin-top: 20px">
|
||||||
<a-table
|
<!-- <a-table-->
|
||||||
:columns="columns7"
|
<!-- :columns="columns7"-->
|
||||||
:data-source="tableData7"
|
<!-- :data-source="tableData7"-->
|
||||||
:loading="tableDataTotal3 === -1 ? true : false"
|
<!-- :loading="tableDataTotal3 === -1 ? true : false"-->
|
||||||
:scroll="{ x: 800 }"
|
<!-- :scroll="{ x: 800 }"-->
|
||||||
expandRowByClick="true"
|
<!-- expandRowByClick="true"-->
|
||||||
@expand="expandTable"
|
<!-- @expand="expandTable"-->
|
||||||
:pagination="false"
|
<!-- :pagination="false"-->
|
||||||
:row-selection="{
|
<!-- :row-selection="{-->
|
||||||
selectedRowKeys: selectedRowKeys7,
|
<!-- selectedRowKeys: selectedRowKeys7,-->
|
||||||
onChange: onSelectChange7,
|
<!-- onChange: onSelectChange7,-->
|
||||||
}"
|
<!-- }"-->
|
||||||
>
|
<!-- >-->
|
||||||
<template #bodyCell="{ record, column }">
|
<!-- <template #bodyCell="{ record, column }">-->
|
||||||
<!-- 操作1 -->
|
<!-- <!– 操作1 –>-->
|
||||||
<template
|
<!-- <template-->
|
||||||
v-if="
|
<!-- v-if="-->
|
||||||
(String(record.applyStatus) === '0' ||
|
<!-- (String(record.applyStatus) === '0' ||-->
|
||||||
record.status === '待审核') &&
|
<!-- record.status === '待审核') &&-->
|
||||||
column.key === 'overstatus'
|
<!-- column.key === 'overstatus'-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
<span class="table-operation">-</span>
|
<!-- <span class="table-operation">-</span>-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
<template
|
<!-- <template-->
|
||||||
v-if="
|
<!-- v-if="-->
|
||||||
(String(record.applyStatus) === '-1' ||
|
<!-- (String(record.applyStatus) === '-1' ||-->
|
||||||
record.status === '已拒绝') &&
|
<!-- record.status === '已拒绝') &&-->
|
||||||
column.key === 'overstatus'
|
<!-- column.key === 'overstatus'-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
<span class="table-operation">-</span>
|
<!-- <span class="table-operation">-</span>-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
<template
|
<!-- <template-->
|
||||||
v-if="
|
<!-- v-if="-->
|
||||||
(String(record.applyStatus) === '1' ||
|
<!-- (String(record.applyStatus) === '1' ||-->
|
||||||
record.status === '已通过') &&
|
<!-- record.status === '已通过') &&-->
|
||||||
column.key === 'overstatus'
|
<!-- column.key === 'overstatus'-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
<span class="table-operation">
|
<!-- <span class="table-operation">-->
|
||||||
<a
|
<!-- <a-->
|
||||||
@click="
|
<!-- @click="-->
|
||||||
() => {
|
<!-- () => {-->
|
||||||
handlJoinStu(record);
|
<!-- handlJoinStu(record);-->
|
||||||
}
|
<!-- }-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
成绩录入
|
<!-- 成绩录入-->
|
||||||
</a>
|
<!-- </a>-->
|
||||||
<a
|
<!-- <a-->
|
||||||
@click="
|
<!-- @click="-->
|
||||||
() => {
|
<!-- () => {-->
|
||||||
handleOverStu(record);
|
<!-- handleOverStu(record);-->
|
||||||
}
|
<!-- }-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
结业
|
<!-- 结业-->
|
||||||
</a>
|
<!-- </a>-->
|
||||||
</span>
|
<!-- </span>-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
<!-- 操作2 -->
|
<!-- <!– 操作2 –>-->
|
||||||
<template
|
<!-- <template-->
|
||||||
v-if="
|
<!-- v-if="-->
|
||||||
(String(record.applyStatus) === '0' ||
|
<!-- (String(record.applyStatus) === '0' ||-->
|
||||||
record.status === '待审核') &&
|
<!-- record.status === '待审核') &&-->
|
||||||
column.key === 'operation'
|
<!-- column.key === 'operation'-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
<span class="table-operation">
|
<!-- <span class="table-operation">-->
|
||||||
<a
|
<!-- <a-->
|
||||||
@click="
|
<!-- @click="-->
|
||||||
() => {
|
<!-- () => {-->
|
||||||
handleSucessStu(record);
|
<!-- handleSucessStu(record);-->
|
||||||
}
|
<!-- }-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
通过
|
<!-- 通过-->
|
||||||
</a>
|
<!-- </a>-->
|
||||||
<a
|
<!-- <a-->
|
||||||
@click="
|
<!-- @click="-->
|
||||||
() => {
|
<!-- () => {-->
|
||||||
handleRejectStu(record);
|
<!-- handleRejectStu(record);-->
|
||||||
}
|
<!-- }-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
拒绝
|
<!-- 拒绝-->
|
||||||
</a>
|
<!-- </a>-->
|
||||||
<a
|
<!-- <a-->
|
||||||
@click="
|
<!-- @click="-->
|
||||||
() => {
|
<!-- () => {-->
|
||||||
handleDeleteStu(record);
|
<!-- handleDeleteStu(record);-->
|
||||||
}
|
<!-- }-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
删除
|
<!-- 删除-->
|
||||||
</a>
|
<!-- </a>-->
|
||||||
</span>
|
<!-- </span>-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
<template
|
<!-- <template-->
|
||||||
v-if="
|
<!-- v-if="-->
|
||||||
(String(record.applyStatus) === '1' ||
|
<!-- (String(record.applyStatus) === '1' ||-->
|
||||||
record.status === '已通过') &&
|
<!-- record.status === '已通过') &&-->
|
||||||
column.key === 'operation'
|
<!-- column.key === 'operation'-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
<span class="table-operation">
|
<!-- <span class="table-operation">-->
|
||||||
<a
|
<!-- <a-->
|
||||||
@click="
|
<!-- @click="-->
|
||||||
() => {
|
<!-- () => {-->
|
||||||
handleDeleteStu(record);
|
<!-- handleDeleteStu(record);-->
|
||||||
}
|
<!-- }-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
删除
|
<!-- 删除-->
|
||||||
</a>
|
<!-- </a>-->
|
||||||
</span>
|
<!-- </span>-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
<template
|
<!-- <template-->
|
||||||
v-if="
|
<!-- v-if="-->
|
||||||
(String(record.applyStatus) === '-1' ||
|
<!-- (String(record.applyStatus) === '-1' ||-->
|
||||||
record.status === '已拒绝') &&
|
<!-- record.status === '已拒绝') &&-->
|
||||||
column.key === 'operation'
|
<!-- column.key === 'operation'-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
<span class="table-operation">
|
<!-- <span class="table-operation">-->
|
||||||
<a
|
<!-- <a-->
|
||||||
@click="
|
<!-- @click="-->
|
||||||
() => {
|
<!-- () => {-->
|
||||||
handleDeleteStu(record);
|
<!-- handleDeleteStu(record);-->
|
||||||
}
|
<!-- }-->
|
||||||
"
|
<!-- "-->
|
||||||
>
|
<!-- >-->
|
||||||
删除
|
<!-- 删除-->
|
||||||
</a>
|
<!-- </a>-->
|
||||||
</span>
|
<!-- </span>-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
</a-table>
|
<!-- </a-table>-->
|
||||||
<div class="tableBox" style="margin-top: 50px">
|
<!-- <div class="tableBox" style="margin-top: 50px">-->
|
||||||
<div class="pa">
|
<!-- <div class="pa">-->
|
||||||
<a-pagination
|
<!-- <a-pagination-->
|
||||||
:showSizeChanger="false"
|
<!-- :showSizeChanger="false"-->
|
||||||
showQuickJumper="true"
|
<!-- showQuickJumper="true"-->
|
||||||
hideOnSinglePage="true"
|
<!-- hideOnSinglePage="true"-->
|
||||||
:pageSize="pageSize3"
|
<!-- :pageSize="pageSize3"-->
|
||||||
:current="currentPage3"
|
<!-- :current="currentPage3"-->
|
||||||
:total="tableDataTotal3"
|
<!-- :total="tableDataTotal3"-->
|
||||||
class="pagination"
|
<!-- class="pagination"-->
|
||||||
@change="handelChangePage3"
|
<!-- @change="handelChangePage3"-->
|
||||||
/>
|
<!-- />-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -2604,11 +2536,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="qrm_btnbox">
|
<div class="qrm_btnbox">
|
||||||
<div class="qrm_btn btn1">
|
<div class="qrm_btn btn1" @click="rg_exit">
|
||||||
<div class="btnText" @click="rg_exit">取消</div>
|
<div class="btnText">取消</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="qrm_btn btn2">
|
<div class="qrm_btn btn2" @click="handleJoin">
|
||||||
<div class="btnText" @click="handleJoin">确定</div>
|
<div class="btnText">确定</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -2930,6 +2862,7 @@ import { queryWorkDetailById } from "@/api/indexWork";
|
|||||||
import { queryExaminationDetailById } from "@/api/indexExam";
|
import { queryExaminationDetailById } from "@/api/indexExam";
|
||||||
import AddHomework from "../../components/drawers/AddHomework.vue";
|
import AddHomework from "../../components/drawers/AddHomework.vue";
|
||||||
import AddTest from "../../components/drawers/AddTest.vue";
|
import AddTest from "../../components/drawers/AddTest.vue";
|
||||||
|
import TableStudent from "@/components/student/TableStudent";
|
||||||
//列表表格
|
//列表表格
|
||||||
const columns1 = [
|
const columns1 = [
|
||||||
// {
|
// {
|
||||||
@@ -3448,6 +3381,7 @@ export default defineComponent({
|
|||||||
AddHomework,
|
AddHomework,
|
||||||
AddTest,
|
AddTest,
|
||||||
NameInput,
|
NameInput,
|
||||||
|
TableStudent,
|
||||||
// VNodes: (_, {attrs}) => {
|
// VNodes: (_, {attrs}) => {
|
||||||
// return attrs.vnodes;
|
// return attrs.vnodes;
|
||||||
// },
|
// },
|
||||||
@@ -3458,6 +3392,72 @@ export default defineComponent({
|
|||||||
const CourseModalRef = ref(null);
|
const CourseModalRef = ref(null);
|
||||||
|
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
|
stuColumns:[
|
||||||
|
{
|
||||||
|
title: "报名状态",
|
||||||
|
width: '10%',
|
||||||
|
dataIndex: "status",
|
||||||
|
key: "5",
|
||||||
|
align: "center",
|
||||||
|
customRender: ({ record }) => {
|
||||||
|
switch (String(record.source)) {
|
||||||
|
case "0":
|
||||||
|
return "待审核";
|
||||||
|
case "1":
|
||||||
|
return "审核通过";
|
||||||
|
case "2":
|
||||||
|
return "审核拒绝";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "加入方式",
|
||||||
|
width: '10%',
|
||||||
|
dataIndex: "join",
|
||||||
|
key: "6",
|
||||||
|
align: "center",
|
||||||
|
customRender: ({ record }) => {
|
||||||
|
switch (String(record.source)) {
|
||||||
|
case "1":
|
||||||
|
return "手动加入";
|
||||||
|
case "2":
|
||||||
|
return "报名加入";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "签到状态",
|
||||||
|
width: '10%',
|
||||||
|
dataIndex: "signstatus",
|
||||||
|
key: "7",
|
||||||
|
align: "center",
|
||||||
|
customRender: ({ record }) => {
|
||||||
|
switch (String(record.signStatus)) {
|
||||||
|
case "0":
|
||||||
|
return "未签到";
|
||||||
|
case "1":
|
||||||
|
return "已签到";
|
||||||
|
case "2":
|
||||||
|
return "请假";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "评估状态",
|
||||||
|
width: '10%',
|
||||||
|
dataIndex: "evastatus",
|
||||||
|
key: "8",
|
||||||
|
align: "center",
|
||||||
|
customRender: ({ record }) => {
|
||||||
|
switch (String(record.evalStatus)) {
|
||||||
|
case "0":
|
||||||
|
return "未评估";
|
||||||
|
case "1":
|
||||||
|
return "已评估";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
shipType: 1,
|
shipType: 1,
|
||||||
addLoading: false,
|
addLoading: false,
|
||||||
currentPlanItem: {},
|
currentPlanItem: {},
|
||||||
@@ -8640,6 +8640,30 @@ export default defineComponent({
|
|||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cus-btn {
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-right: 16px;
|
||||||
|
border: 1px solid #4ea6ff;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #4ea6ff;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.white {
|
||||||
|
background: #fff;
|
||||||
|
color: #4ea6ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cus-input {
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
// .tableSelect {
|
// .tableSelect {
|
||||||
// position: relative;
|
// position: relative;
|
||||||
// .hoverList {
|
// .hoverList {
|
||||||
|
|||||||
@@ -505,127 +505,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="3" tab="学员管理" force-render>
|
<a-tab-pane key="3" tab="学员管理" force-render>
|
||||||
<div class="split"></div>
|
<TableStudent :type="3" :id="routerId"></TableStudent>
|
||||||
<div class="xwid">
|
|
||||||
<div class="pad"></div>
|
|
||||||
<div class="xin" style="overflow-x: auto">
|
|
||||||
<div class="xhead">
|
|
||||||
<a-input
|
|
||||||
v-model:value="gatenamee"
|
|
||||||
style="width: 270px; height: 40px; border-radius: 8px"
|
|
||||||
placeholder="请输入姓名"
|
|
||||||
/>
|
|
||||||
<div class="btns" @click="searchLevel">
|
|
||||||
<div class="btn btn1">
|
|
||||||
<div class="search"></div>
|
|
||||||
<a-button
|
|
||||||
class="btnText"
|
|
||||||
style="
|
|
||||||
border: none;
|
|
||||||
background: none;
|
|
||||||
transform: translateY(-20%);
|
|
||||||
"
|
|
||||||
>搜索
|
|
||||||
</a-button>
|
|
||||||
</div>
|
|
||||||
<div class="btn btn2" @click="resetLevel">
|
|
||||||
<div class="search"></div>
|
|
||||||
<a-button
|
|
||||||
style="
|
|
||||||
border: none;
|
|
||||||
background: none;
|
|
||||||
transform: translateY(-20%);
|
|
||||||
width: 100%;
|
|
||||||
"
|
|
||||||
class="btnText"
|
|
||||||
>重置</a-button
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="xheadb">
|
|
||||||
<button class="addx" @click="showAddStu">添加学员</button>
|
|
||||||
<!-- 2022-11-30注释 后面放开 -->
|
|
||||||
<!-- <button class="addd" @click="showImpStu">导入学员</button> -->
|
|
||||||
<div class="select">
|
|
||||||
<a-button
|
|
||||||
style="
|
|
||||||
border: 1px solid rgba(64, 158, 255, 1);
|
|
||||||
background: none;
|
|
||||||
width: 130px;
|
|
||||||
height: 40px;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 400;
|
|
||||||
color: rgba(64, 158, 255, 1);
|
|
||||||
margin-left: 5px;
|
|
||||||
border-radius: 8px;
|
|
||||||
cursor: pointer;
|
|
||||||
"
|
|
||||||
class="btnText"
|
|
||||||
@click="deleteStu()"
|
|
||||||
>批量删除</a-button
|
|
||||||
>
|
|
||||||
<!-- <a-select
|
|
||||||
style="width: 130px"
|
|
||||||
value="更多操作"
|
|
||||||
@change="handleStuChange"
|
|
||||||
:options="projectNameList"
|
|
||||||
>
|
|
||||||
</a-select> -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 2022-12-11注释 后面放开 -->
|
|
||||||
<!--
|
|
||||||
<div class="talk">
|
|
||||||
<img class="im" src="../../assets/images/leveladd/gan.png" />
|
|
||||||
<div class="xu">
|
|
||||||
<span class="yi">已选择</span>
|
|
||||||
<div style="width: 5px; display: inline-block"></div>
|
|
||||||
<span class="th">{{ selectedRowKeys.length }}</span>
|
|
||||||
<div style="width: 5px; display: inline-block"></div>
|
|
||||||
<span class="yi">项</span>
|
|
||||||
<span class="zon">列表选项总数:</span>
|
|
||||||
<span class="th">{{ stuTotal }}</span>
|
|
||||||
<span class="yi"> 条</span>
|
|
||||||
</div>
|
|
||||||
<div class="clear" @click="clearChooseStu">清空</div>
|
|
||||||
</div>-->
|
|
||||||
<div class="tableBox" style="margin-top: 30px">
|
|
||||||
<a-table
|
|
||||||
style="border: 1px solid #f2f6fe"
|
|
||||||
:columns="tableDataFunc()"
|
|
||||||
:scroll="{ x: 1400 }"
|
|
||||||
:data-source="tableData"
|
|
||||||
:loading="tableDataTotal === -1 ? true : false"
|
|
||||||
expandRowByClick="true"
|
|
||||||
@expand="expandTable"
|
|
||||||
:pagination="false"
|
|
||||||
:row-selection="{
|
|
||||||
columnWidth: 30,
|
|
||||||
selectedRowKeys: selectedRowKeys,
|
|
||||||
onChange: onSelectChange,
|
|
||||||
}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<div class="pa">
|
|
||||||
<a-pagination
|
|
||||||
v-if="tableDataTotal > 10"
|
|
||||||
:showSizeChanger="false"
|
|
||||||
showQuickJumper="true"
|
|
||||||
hideOnSinglePage="true"
|
|
||||||
:pageSize="pageSize"
|
|
||||||
:current="currentPage"
|
|
||||||
:total="tableDataTotal"
|
|
||||||
@change="pageChange"
|
|
||||||
class="pagination"
|
|
||||||
style="display: block"
|
|
||||||
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="pad"></div>
|
|
||||||
</div>
|
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<!--1211注释 待开放
|
<!--1211注释 待开放
|
||||||
<a-tab-pane key="4" tab="设置">
|
<a-tab-pane key="4" tab="设置">
|
||||||
@@ -1232,6 +1112,7 @@ import * as api from "../../api/index1";
|
|||||||
import { editRoutered } from "../../api/indexLearningPath";
|
import { editRoutered } from "../../api/indexLearningPath";
|
||||||
import { codeUrl } from "../../api/method";
|
import { codeUrl } from "../../api/method";
|
||||||
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
|
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
|
||||||
|
import TableStudent from "@/components/student/TableStudent";
|
||||||
// import * as student from "@/api/student";
|
// import * as student from "@/api/student";
|
||||||
export default {
|
export default {
|
||||||
name: "LevelAdd",
|
name: "LevelAdd",
|
||||||
@@ -1248,6 +1129,7 @@ export default {
|
|||||||
WorkManage,
|
WorkManage,
|
||||||
SeeStu,
|
SeeStu,
|
||||||
TwoDimensionalCode,
|
TwoDimensionalCode,
|
||||||
|
TableStudent,
|
||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div class="taskpage">
|
<div class="taskpage">
|
||||||
<div class="addhead" style="flex-shrink: 0">
|
<div class="addhead" style="flex-shrink: 0">
|
||||||
<div class="leftimg">
|
<div class="leftimg">
|
||||||
<img class="img" :src="picUrl" />
|
<img class="img" :src="picUrl"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="imgfor">
|
<div class="imgfor">
|
||||||
<div class="forz">{{ name }}</div>
|
<div class="forz">{{ name }}</div>
|
||||||
@@ -171,7 +171,7 @@
|
|||||||
<div class="line"></div>
|
<div class="line"></div>
|
||||||
<router-link to="/projectmanage">
|
<router-link to="/projectmanage">
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<img class="img2" src="../../assets/images/leveladd/back.png" />
|
<img class="img2" src="../../assets/images/leveladd/back.png"/>
|
||||||
<div class="return">返回</div>
|
<div class="return">返回</div>
|
||||||
</div>
|
</div>
|
||||||
</router-link>
|
</router-link>
|
||||||
@@ -208,13 +208,13 @@
|
|||||||
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
|
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
|
||||||
>
|
>
|
||||||
<div class="leftt">
|
<div class="leftt">
|
||||||
<img src="../../assets/images/taskpage/left1.png" />
|
<img src="../../assets/images/taskpage/left1.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="photo">
|
<div class="photo">
|
||||||
<img src="../../assets/images/taskpage/picture1.png" />
|
<img src="../../assets/images/taskpage/picture1.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="rightt">
|
<div class="rightt">
|
||||||
<img src="../../assets/images/taskpage/right1.png" />
|
<img src="../../assets/images/taskpage/right1.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="centerbox" style="color: rgba(255, 182, 78, 1)">
|
<div class="centerbox" style="color: rgba(255, 182, 78, 1)">
|
||||||
添加任务
|
添加任务
|
||||||
@@ -227,13 +227,13 @@
|
|||||||
style="background: linear-gradient(180deg, #ddeaff, #f0f8fe)"
|
style="background: linear-gradient(180deg, #ddeaff, #f0f8fe)"
|
||||||
>
|
>
|
||||||
<div class="leftt">
|
<div class="leftt">
|
||||||
<img src="../../assets/images/taskpage/left2.png" />
|
<img src="../../assets/images/taskpage/left2.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="photo">
|
<div class="photo">
|
||||||
<img src="../../assets/images/taskpage/picture2.png" />
|
<img src="../../assets/images/taskpage/picture2.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="rightt">
|
<div class="rightt">
|
||||||
<img src="../../assets/images/taskpage/right2.png" />
|
<img src="../../assets/images/taskpage/right2.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="centerbox" style="color: rgba(78, 166, 255, 1)">
|
<div class="centerbox" style="color: rgba(78, 166, 255, 1)">
|
||||||
添加学员
|
添加学员
|
||||||
@@ -640,13 +640,13 @@
|
|||||||
v-if="taskSyllabus.length == 0"
|
v-if="taskSyllabus.length == 0"
|
||||||
>
|
>
|
||||||
<div class="leftt">
|
<div class="leftt">
|
||||||
<img src="../../assets/images/taskpage/left2.png" />
|
<img src="../../assets/images/taskpage/left2.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="photo">
|
<div class="photo">
|
||||||
<img src="../../assets/images/taskpage/picture8.png" />
|
<img src="../../assets/images/taskpage/picture8.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="rightt">
|
<div class="rightt">
|
||||||
<img src="../../assets/images/taskpage/right2.png" />
|
<img src="../../assets/images/taskpage/right2.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="centerbox" style="color: rgba(78, 166, 255, 1)">
|
<div class="centerbox" style="color: rgba(78, 166, 255, 1)">
|
||||||
创建任务
|
创建任务
|
||||||
@@ -669,13 +669,13 @@
|
|||||||
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
|
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
|
||||||
>
|
>
|
||||||
<div class="leftt">
|
<div class="leftt">
|
||||||
<img src="../../assets/images/taskpage/left1.png" />
|
<img src="../../assets/images/taskpage/left1.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="photo">
|
<div class="photo">
|
||||||
<img src="../../assets/images/taskpage/picture1.png" />
|
<img src="../../assets/images/taskpage/picture1.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="rightt">
|
<div class="rightt">
|
||||||
<img src="../../assets/images/taskpage/right1.png" />
|
<img src="../../assets/images/taskpage/right1.png"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="centerbox" style="color: rgba(255, 182, 78, 1)">
|
<div class="centerbox" style="color: rgba(255, 182, 78, 1)">
|
||||||
添加任务
|
添加任务
|
||||||
@@ -691,271 +691,8 @@
|
|||||||
<div class="content3">
|
<div class="content3">
|
||||||
<a-tabs v-model:activeKey="activeKey1">
|
<a-tabs v-model:activeKey="activeKey1">
|
||||||
<a-tab-pane key="8" tab="学员管理">
|
<a-tab-pane key="8" tab="学员管理">
|
||||||
<div class="group">
|
<TableStudent :type="1" :id="projectId" :columns="stuColumns" :stage="stage"></TableStudent>
|
||||||
<div class="groupleft">
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-right: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<div class="groupname" style="width: 42px">姓名:</div>
|
|
||||||
<a-input
|
|
||||||
v-model:value="valuestun"
|
|
||||||
placeholder="请输入姓名"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<!-- 2022-11-30注释 后面放开 -->
|
|
||||||
<!--
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-right: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
|
|
||||||
<div class="groupname">小组名称:</div>
|
|
||||||
<a-input
|
|
||||||
v-model:value="valuestugroup"
|
|
||||||
placeholder="请输入小组名称"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-right: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<div class="groupname" style="width: 42px">部门:</div>
|
|
||||||
<a-tree-select
|
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
v-model:value="valuestub"
|
|
||||||
:dropdown-style="{
|
|
||||||
maxHeight: '400px',
|
|
||||||
overflow: 'auto',
|
|
||||||
}"
|
|
||||||
placeholder="请选择部门"
|
|
||||||
:options="bum"
|
|
||||||
@change="handleChangeBum"
|
|
||||||
:tree-data="bum"
|
|
||||||
:fieldNames="{
|
|
||||||
children: 'treeChildList',
|
|
||||||
label: 'name',
|
|
||||||
value: 'id',
|
|
||||||
}"
|
|
||||||
></a-tree-select>
|
|
||||||
|
|
||||||
</div> -->
|
|
||||||
<!-- 2022-11-30注释 后面放开 -->
|
|
||||||
<!-- <div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<div class="groupname" style="width: 42px">学员:</div>
|
|
||||||
<a-select
|
|
||||||
v-model:value="valuegood"
|
|
||||||
placeholder="是否为优秀学员"
|
|
||||||
:options="goodstuList"
|
|
||||||
@change="handleChangeGood"
|
|
||||||
/>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
|
||||||
<div class="groupright">
|
|
||||||
<div class="btn1" @click="searchStu">
|
|
||||||
<img src="../../assets/images/courseManage/search0.png" />
|
|
||||||
<span class="btn1text">搜索</span>
|
|
||||||
</div>
|
|
||||||
<div class="btn2" @click="resetCancel">
|
|
||||||
<img src="../../assets/images/courseManage/reset1.png" />
|
|
||||||
<span class="btn2text">重置</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="second2" style="margin-top: 20px">
|
|
||||||
<div class="btn1" @click="showStuAdd">
|
|
||||||
<img src="../../assets/images/courseManage/add0.png" />
|
|
||||||
<span class="btn1text">添加学员</span>
|
|
||||||
</div>
|
|
||||||
<!-- 2022-11-30注释 后面放开 -->
|
|
||||||
<!-- <div class="btn2" @click="showImportStu">
|
|
||||||
<img src="../../assets/images/courseManage/reset2.png" />
|
|
||||||
<span class="btn2text">导入学员</span>
|
|
||||||
</div> -->
|
|
||||||
<div class="btn2" @click="showAllDelete">
|
|
||||||
<img src="../../assets/images/projectadd/delete.png" />
|
|
||||||
<span class="btn2text">批量删除</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 2022-12-11注释 后面放开 -->
|
|
||||||
<!--
|
|
||||||
<div class="talk">
|
|
||||||
<img class="im" src="../../assets/images/leveladd/gan.png" />
|
|
||||||
<div class="xu">
|
|
||||||
<span class="yi">已选择</span>
|
|
||||||
<div style="width: 5px; display: inline-block"></div>
|
|
||||||
<span class="th">{{ choosed }}</span>
|
|
||||||
<div style="width: 5px; display: inline-block"></div>
|
|
||||||
<span class="yi">项</span>
|
|
||||||
<span class="zon">列表选项总计:</span>
|
|
||||||
<span class="yi">{{ total }}</span>
|
|
||||||
<span class="yi">条</span>
|
|
||||||
</div>
|
|
||||||
<div class="clear" @click="clearChooseStu">清空</div>
|
|
||||||
</div>-->
|
|
||||||
<div class="tab" style="margin: 20px 32px 30px 32px">
|
|
||||||
<a-table
|
|
||||||
style="border: 1px solid #f2f6fe"
|
|
||||||
:columns="studentColumns()"
|
|
||||||
:data-source="tabledata"
|
|
||||||
expandRowByClick="true"
|
|
||||||
:scroll="{ x: 1400 }"
|
|
||||||
@expand="expandTable"
|
|
||||||
:pagination="false"
|
|
||||||
:loading="loading"
|
|
||||||
:row-selection="{
|
|
||||||
columnWidth: 30,
|
|
||||||
selectedRowKeys: selectedRowKeys,
|
|
||||||
onChange: onSelectChange,
|
|
||||||
}"
|
|
||||||
/>
|
|
||||||
<!-- 列表无数据样式
|
|
||||||
<div
|
|
||||||
class="nostu"
|
|
||||||
:style="{ display: total > 0 ? 'none' : 'block' }"
|
|
||||||
> -->
|
|
||||||
<div class="nostu" style="display: none">
|
|
||||||
<div class="nostuimg"></div>
|
|
||||||
</div>
|
|
||||||
<div class="tableBox">
|
|
||||||
<div class="pa">
|
|
||||||
<a-pagination
|
|
||||||
v-if="total > 10"
|
|
||||||
:showSizeChanger="false"
|
|
||||||
showQuickJumper="true"
|
|
||||||
hideOnSinglePage="true"
|
|
||||||
:pageSize="stupageSize"
|
|
||||||
:current="currentPageStu"
|
|
||||||
:total="total"
|
|
||||||
class="pagination"
|
|
||||||
@change="changePaginationStu"
|
|
||||||
/>
|
|
||||||
</div></div>
|
|
||||||
</div>
|
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<!--
|
|
||||||
<a-tab-pane key="9" tab="小组管理" force-render>
|
|
||||||
<div class="group">
|
|
||||||
<div class="groupleft">
|
|
||||||
<div class="groupname">小组名称:</div>
|
|
||||||
<a-input
|
|
||||||
v-model:value="valuestugn"
|
|
||||||
placeholder="请输入小组名称"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="groupright">
|
|
||||||
<div class="btn1" @click="searchGroup">
|
|
||||||
<img src="../../assets/images/courseManage/search0.png" />
|
|
||||||
<span class="btn1text">搜索</span>
|
|
||||||
</div>
|
|
||||||
<div class="btn2" @click="resetGroupName">
|
|
||||||
<img src="../../assets/images/courseManage/reset1.png" />
|
|
||||||
<span class="btn2text">重置</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="second2">
|
|
||||||
<div class="btn1" @click="showModal2(1, null)">
|
|
||||||
<img src="../../assets/images/courseManage/add0.png" />
|
|
||||||
<span class="btn1text">创建小组</span>
|
|
||||||
</div>-->
|
|
||||||
<!-- 2022-12-2注释 后面放开 -->
|
|
||||||
<!-- <div class="btn2" @click="showSubset">
|
|
||||||
<img src="../../assets/images/courseManage/reset2.png" />
|
|
||||||
<span class="btn2text">随机分组</span>
|
|
||||||
</div>
|
|
||||||
</div>-->
|
|
||||||
<!-- 小组列表
|
|
||||||
<div class="groupmain">
|
|
||||||
<div
|
|
||||||
class="groupbox"
|
|
||||||
v-for="item in groupList"
|
|
||||||
:key="item.projectGroupId"
|
|
||||||
>
|
|
||||||
<div style="width: 90%">
|
|
||||||
<div class="grouptitle">
|
|
||||||
<div class="goodgruop">{{ item.groupName }}</div>
|
|
||||||
<div class="more">
|
|
||||||
<span
|
|
||||||
style="color: rgba(0, 0, 0, 0.45); cursor: pointer"
|
|
||||||
>. . .</span
|
|
||||||
>
|
|
||||||
<div class="moreItems">
|
|
||||||
<div class="sammo" @click="showModal2(2, item)">
|
|
||||||
编辑
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="sammo"
|
|
||||||
@click="deleteGroupBtn(item.projectGroupId)"
|
|
||||||
>
|
|
||||||
删除
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="leader">组长:{{ item.leaderName }}</div>
|
|
||||||
<div class="grocenter">
|
|
||||||
<div class="leader1">进度</div>
|
|
||||||
<a-progress :percent="item.completeRatio" />
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="grofooter"
|
|
||||||
@click="showMemberList(item.projectGroupId)"
|
|
||||||
>
|
|
||||||
<div class="ftext">组员名单 ></div>-->
|
|
||||||
<!-- <div class="peoples">
|
|
||||||
<div class="people1">
|
|
||||||
<img
|
|
||||||
src="../../assets/images/taskpage/people1.png"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="people2">
|
|
||||||
<img
|
|
||||||
src="../../assets/images/taskpage/people2.png"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="people3">
|
|
||||||
<img
|
|
||||||
src="../../assets/images/taskpage/people3.png"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="people4">
|
|
||||||
<img
|
|
||||||
src="../../assets/images/taskpage/people4.png"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a-tab-pane>
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
</div>
|
</div>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
@@ -1307,7 +1044,7 @@
|
|||||||
:title="showFaceText"
|
:title="showFaceText"
|
||||||
/>
|
/>
|
||||||
<!-- 学员(小组管理)创建小组抽屉 -->
|
<!-- 学员(小组管理)创建小组抽屉 -->
|
||||||
<subset-manage v-model:Svisible="subsetVisivle" />
|
<subset-manage v-model:Svisible="subsetVisivle"/>
|
||||||
<!-- 学员管理-添加学员抽屉 -->
|
<!-- 学员管理-添加学员抽屉 -->
|
||||||
<!-- <stu-add v-model:Stuvisible="Stuvisible" /> -->
|
<!-- <stu-add v-model:Stuvisible="Stuvisible" /> -->
|
||||||
<!-- 添加学员抽屉 -->
|
<!-- 添加学员抽屉 -->
|
||||||
@@ -1320,7 +1057,7 @@
|
|||||||
:type="2"
|
:type="2"
|
||||||
/>
|
/>
|
||||||
<!-- 学员管理-导入学员抽屉 -->
|
<!-- 学员管理-导入学员抽屉 -->
|
||||||
<import-stu v-model:Importvisible="Importvisible" />
|
<import-stu v-model:Importvisible="Importvisible"/>
|
||||||
<!-- 查看学员 传入查看学员的id-->
|
<!-- 查看学员 传入查看学员的id-->
|
||||||
<see-stu
|
<see-stu
|
||||||
v-model:Seevisible="Seevisible"
|
v-model:Seevisible="Seevisible"
|
||||||
@@ -1343,9 +1080,9 @@
|
|||||||
v-model:projectId="projectId"
|
v-model:projectId="projectId"
|
||||||
/>
|
/>
|
||||||
<!-- 面授学员抽屉 -->
|
<!-- 面授学员抽屉 -->
|
||||||
<face-stu v-model:FSvisible="FSvisible" />
|
<face-stu v-model:FSvisible="FSvisible"/>
|
||||||
<!-- 活动考勤抽屉 -->
|
<!-- 活动考勤抽屉 -->
|
||||||
<active-attendance v-model:AAvisible="AAvisible" :title="showkaoqinText" />
|
<active-attendance v-model:AAvisible="AAvisible" :title="showkaoqinText"/>
|
||||||
<!-- 作业管理抽屉 -->
|
<!-- 作业管理抽屉 -->
|
||||||
<work-manage
|
<work-manage
|
||||||
v-model:Wvisible="Wvisible"
|
v-model:Wvisible="Wvisible"
|
||||||
@@ -1360,7 +1097,7 @@
|
|||||||
:itemsType="itemstype"
|
:itemsType="itemstype"
|
||||||
/>
|
/>
|
||||||
<!-- 批量面授报名 -->
|
<!-- 批量面授报名 -->
|
||||||
<task-imp-stu v-model:TaskFaceImpStuvisible="TaskFaceImpStuvisible" />
|
<task-imp-stu v-model:TaskFaceImpStuvisible="TaskFaceImpStuvisible"/>
|
||||||
|
|
||||||
<!-- 概览(无数据)-项目发布弹窗 -->
|
<!-- 概览(无数据)-项目发布弹窗 -->
|
||||||
<div>
|
<div>
|
||||||
@@ -1419,7 +1156,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="send">
|
<div class="send">
|
||||||
<a-switch v-model:checked="checked" size="small" />
|
<a-switch v-model:checked="checked" size="small"/>
|
||||||
<span class="sendtext">发送项目通知</span>
|
<span class="sendtext">发送项目通知</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="ckb">
|
<div class="ckb">
|
||||||
@@ -1683,7 +1420,7 @@
|
|||||||
</a-modal>
|
</a-modal>
|
||||||
</div>
|
</div>
|
||||||
<!-- 编辑项目弹窗 -->
|
<!-- 编辑项目弹窗 -->
|
||||||
<proj-set v-model:editHs="editHs" v-model:projectId="projectId" />
|
<proj-set v-model:editHs="editHs" v-model:projectId="projectId"/>
|
||||||
|
|
||||||
<!-- 发布弹窗 -->
|
<!-- 发布弹窗 -->
|
||||||
<a-modal
|
<a-modal
|
||||||
@@ -1765,7 +1502,7 @@
|
|||||||
class="aeLoading"
|
class="aeLoading"
|
||||||
:style="{ display: projectPubLoading ? 'flex' : 'none' }"
|
:style="{ display: projectPubLoading ? 'flex' : 'none' }"
|
||||||
>
|
>
|
||||||
<a-spin :spinning="projectPubLoading" />
|
<a-spin :spinning="projectPubLoading"/>
|
||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
|
|
||||||
@@ -1907,9 +1644,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { reactive, toRefs, onMounted, watch, computed } from "vue";
|
import {reactive, toRefs, onMounted, watch, computed} from "vue";
|
||||||
import { useRoute } from "vue-router";
|
import {useRoute} from "vue-router";
|
||||||
import { useRouter } from "vue-router";
|
import {useRouter} from "vue-router";
|
||||||
import TimeManage from "../../components/drawers/TimeManage";
|
import TimeManage from "../../components/drawers/TimeManage";
|
||||||
import FaceManage from "../../components/drawers/FaceManage";
|
import FaceManage from "../../components/drawers/FaceManage";
|
||||||
import SubsetManage from "../../components/drawers/SubsetManage";
|
import SubsetManage from "../../components/drawers/SubsetManage";
|
||||||
@@ -1925,7 +1662,7 @@ import ChangeGroup from "../../components/drawers/ChangeGroup";
|
|||||||
import NoticePub from "../../components/drawers/NoticePub";
|
import NoticePub from "../../components/drawers/NoticePub";
|
||||||
import NoticeHis from "../../components/drawers/NoticeHis";
|
import NoticeHis from "../../components/drawers/NoticeHis";
|
||||||
import TaskImpStu from "../../components/drawers/TaskFaceIn";
|
import TaskImpStu from "../../components/drawers/TaskFaceIn";
|
||||||
import { storage } from "../../api/storage";
|
import {storage} from "../../api/storage";
|
||||||
import * as api from "../../api/index1";
|
import * as api from "../../api/index1";
|
||||||
import * as apis from "../../api/index";
|
import * as apis from "../../api/index";
|
||||||
import * as apiproj from "../../api/index";
|
import * as apiproj from "../../api/index";
|
||||||
@@ -1938,18 +1675,19 @@ import {
|
|||||||
editGroup,
|
editGroup,
|
||||||
topStudent,
|
topStudent,
|
||||||
} from "../../api/indexProjStu";
|
} from "../../api/indexProjStu";
|
||||||
import { message, Modal } from "ant-design-vue";
|
import {message, Modal} from "ant-design-vue";
|
||||||
import * as apitl from "../../api/index";
|
import * as apitl from "../../api/index";
|
||||||
import { getTask } from "../../api/indexTaskadd";
|
import {getTask} from "../../api/indexTaskadd";
|
||||||
import { editProj } from "../../api/indexTaskadd";
|
import {editProj} from "../../api/indexTaskadd";
|
||||||
import { toDate, codeUrl } from "../../api/method";
|
import {toDate, codeUrl} from "../../api/method";
|
||||||
import projSet from "../../components/Modals/projSet";
|
import projSet from "../../components/Modals/projSet";
|
||||||
import { overview } from "../../api/indexProjStu";
|
import {overview} from "../../api/indexProjStu";
|
||||||
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
|
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
|
||||||
import { useStore } from "vuex";
|
import {useStore} from "vuex";
|
||||||
import ProjectLevel from "@/components/project/ProjectLevel";
|
import ProjectLevel from "@/components/project/ProjectLevel";
|
||||||
import TrainClass from "@/components/project/TrainClass";
|
import TrainClass from "@/components/project/TrainClass";
|
||||||
import ProjectManager from "@/components/project/ProjectManagerNew";
|
import ProjectManager from "@/components/project/ProjectManagerNew";
|
||||||
|
import TableStudent from "@/components/student/TableStudent";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "taskPage",
|
name: "taskPage",
|
||||||
@@ -1976,11 +1714,30 @@ export default {
|
|||||||
NoticeHis,
|
NoticeHis,
|
||||||
TwoDimensionalCode,
|
TwoDimensionalCode,
|
||||||
ProjectManager,
|
ProjectManager,
|
||||||
|
TableStudent
|
||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
|
stage: [],
|
||||||
|
stuColumns: [{
|
||||||
|
title: "进度",
|
||||||
|
dataIndex: "progress",
|
||||||
|
key: "progress",
|
||||||
|
width: 80,
|
||||||
|
align: "center",
|
||||||
|
className: "h",
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "最近学习时间",
|
||||||
|
dataIndex: "stutime",
|
||||||
|
key: "stutime",
|
||||||
|
width: 80,
|
||||||
|
align: "center",
|
||||||
|
className: "h",
|
||||||
|
}],
|
||||||
loading: false,
|
loading: false,
|
||||||
projectId: route.query.projectId,
|
projectId: route.query.projectId,
|
||||||
isbj: storage.get("isbj") ? JSON.parse(storage.get("isbj")) : null,
|
isbj: storage.get("isbj") ? JSON.parse(storage.get("isbj")) : null,
|
||||||
@@ -2047,23 +1804,23 @@ export default {
|
|||||||
projectTaskId: "", //项目任务任务id
|
projectTaskId: "", //项目任务任务id
|
||||||
//进度排行学员
|
//进度排行学员
|
||||||
rankjindu: [
|
rankjindu: [
|
||||||
{ value: "学员", label: "学员" },
|
{value: "学员", label: "学员"},
|
||||||
{ value: "小组", label: "小组" },
|
{value: "小组", label: "小组"},
|
||||||
],
|
],
|
||||||
valuestu1: "学员",
|
valuestu1: "学员",
|
||||||
//进度排行阶段
|
//进度排行阶段
|
||||||
rankjieduan: [{ value: "第一阶段", label: "第一阶段" }],
|
rankjieduan: [{value: "第一阶段", label: "第一阶段"}],
|
||||||
valuestu2: "第一阶段",
|
valuestu2: "第一阶段",
|
||||||
//积分排行
|
//积分排行
|
||||||
rankxuefen: [
|
rankxuefen: [
|
||||||
{ value: "学员", label: "学员" },
|
{value: "学员", label: "学员"},
|
||||||
{ value: "小组", label: "小组" },
|
{value: "小组", label: "小组"},
|
||||||
],
|
],
|
||||||
valuestu3: "学员",
|
valuestu3: "学员",
|
||||||
//学时排行
|
//学时排行
|
||||||
rankxueshi: [
|
rankxueshi: [
|
||||||
{ value: "学员", label: "学员" },
|
{value: "学员", label: "学员"},
|
||||||
{ value: "小组", label: "小组" },
|
{value: "小组", label: "小组"},
|
||||||
],
|
],
|
||||||
valuestu4: "学员",
|
valuestu4: "学员",
|
||||||
visible: false, //时间管理
|
visible: false, //时间管理
|
||||||
@@ -2211,21 +1968,21 @@ export default {
|
|||||||
if (text.record.rank == "1") {
|
if (text.record.rank == "1") {
|
||||||
return (
|
return (
|
||||||
<img
|
<img
|
||||||
style={{ width: 24, height: 24 }}
|
style={{width: 24, height: 24}}
|
||||||
src={require("../../assets/images/taskpage/one.png")}
|
src={require("../../assets/images/taskpage/one.png")}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
} else if (text.record.rank == "2") {
|
} else if (text.record.rank == "2") {
|
||||||
return (
|
return (
|
||||||
<img
|
<img
|
||||||
style={{ width: 24, height: 24 }}
|
style={{width: 24, height: 24}}
|
||||||
src={require("../../assets/images/taskpage/two.png")}
|
src={require("../../assets/images/taskpage/two.png")}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
} else if (text.record.rank == "3") {
|
} else if (text.record.rank == "3") {
|
||||||
return (
|
return (
|
||||||
<img
|
<img
|
||||||
style={{ width: 24, height: 24 }}
|
style={{width: 24, height: 24}}
|
||||||
src={require("../../assets/images/taskpage/three.png")}
|
src={require("../../assets/images/taskpage/three.png")}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@@ -2318,21 +2075,21 @@ export default {
|
|||||||
if (text.record.rank == "1") {
|
if (text.record.rank == "1") {
|
||||||
return (
|
return (
|
||||||
<img
|
<img
|
||||||
style={{ width: 24, height: 24 }}
|
style={{width: 24, height: 24}}
|
||||||
src={require("../../assets/images/taskpage/one.png")}
|
src={require("../../assets/images/taskpage/one.png")}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
} else if (text.record.rank == "2") {
|
} else if (text.record.rank == "2") {
|
||||||
return (
|
return (
|
||||||
<img
|
<img
|
||||||
style={{ width: 24, height: 24 }}
|
style={{width: 24, height: 24}}
|
||||||
src={require("../../assets/images/taskpage/two.png")}
|
src={require("../../assets/images/taskpage/two.png")}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
} else if (text.record.rank == "3") {
|
} else if (text.record.rank == "3") {
|
||||||
return (
|
return (
|
||||||
<img
|
<img
|
||||||
style={{ width: 24, height: 24 }}
|
style={{width: 24, height: 24}}
|
||||||
src={require("../../assets/images/taskpage/three.png")}
|
src={require("../../assets/images/taskpage/three.png")}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@@ -2425,21 +2182,21 @@ export default {
|
|||||||
if (text.record.rank == "1") {
|
if (text.record.rank == "1") {
|
||||||
return (
|
return (
|
||||||
<img
|
<img
|
||||||
style={{ width: 24, height: 24 }}
|
style={{width: 24, height: 24}}
|
||||||
src={require("../../assets/images/taskpage/one.png")}
|
src={require("../../assets/images/taskpage/one.png")}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
} else if (text.record.rank == "2") {
|
} else if (text.record.rank == "2") {
|
||||||
return (
|
return (
|
||||||
<img
|
<img
|
||||||
style={{ width: 24, height: 24 }}
|
style={{width: 24, height: 24}}
|
||||||
src={require("../../assets/images/taskpage/two.png")}
|
src={require("../../assets/images/taskpage/two.png")}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
} else if (text.record.rank == "3") {
|
} else if (text.record.rank == "3") {
|
||||||
return (
|
return (
|
||||||
<img
|
<img
|
||||||
style={{ width: 24, height: 24 }}
|
style={{width: 24, height: 24}}
|
||||||
src={require("../../assets/images/taskpage/three.png")}
|
src={require("../../assets/images/taskpage/three.png")}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@@ -2647,7 +2404,7 @@ export default {
|
|||||||
// 输入接入 -- start --
|
// 输入接入 -- start --
|
||||||
// 资源归属 sourceBelongId 后续给接口
|
// 资源归属 sourceBelongId 后续给接口
|
||||||
state.bum = computed(() => {
|
state.bum = computed(() => {
|
||||||
console.log("基础信息 store.state.orgtreeList",store.state.orgtreeList);
|
console.log("基础信息 store.state.orgtreeList", store.state.orgtreeList);
|
||||||
return store.state.orgtreeList ? store.state.orgtreeList : [];
|
return store.state.orgtreeList ? store.state.orgtreeList : [];
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2771,7 +2528,7 @@ export default {
|
|||||||
// state.activeKey = "2";
|
// state.activeKey = "2";
|
||||||
routered.push({
|
routered.push({
|
||||||
path: `/taskadd`,
|
path: `/taskadd`,
|
||||||
query: { projectId: state.projectId },
|
query: {projectId: state.projectId},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const tostudent = () => {
|
const tostudent = () => {
|
||||||
@@ -3109,7 +2866,7 @@ export default {
|
|||||||
title: "姓名",
|
title: "姓名",
|
||||||
dataIndex: "name",
|
dataIndex: "name",
|
||||||
key: "name",
|
key: "name",
|
||||||
width:"20%",
|
width: "20%",
|
||||||
align: "left",
|
align: "left",
|
||||||
className: "h",
|
className: "h",
|
||||||
// scopedSlots: { customRender: "action" }, //引入的插槽
|
// scopedSlots: { customRender: "action" }, //引入的插槽
|
||||||
@@ -3146,7 +2903,7 @@ export default {
|
|||||||
title: "部门",
|
title: "部门",
|
||||||
dataIndex: "bum",
|
dataIndex: "bum",
|
||||||
key: "bum",
|
key: "bum",
|
||||||
width:"10%",
|
width: "10%",
|
||||||
align: "center",
|
align: "center",
|
||||||
className: "h",
|
className: "h",
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
@@ -3171,7 +2928,7 @@ export default {
|
|||||||
title: "进度",
|
title: "进度",
|
||||||
dataIndex: "progress",
|
dataIndex: "progress",
|
||||||
key: "progress",
|
key: "progress",
|
||||||
width:"10%",
|
width: "10%",
|
||||||
align: "center",
|
align: "center",
|
||||||
className: "h",
|
className: "h",
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
@@ -3188,7 +2945,7 @@ export default {
|
|||||||
title: "最近学习时间",
|
title: "最近学习时间",
|
||||||
dataIndex: "stutime",
|
dataIndex: "stutime",
|
||||||
key: "stutime",
|
key: "stutime",
|
||||||
width:"20%",
|
width: "20%",
|
||||||
align: "center",
|
align: "center",
|
||||||
className: "h",
|
className: "h",
|
||||||
// sorter: {
|
// sorter: {
|
||||||
@@ -3200,7 +2957,7 @@ export default {
|
|||||||
title: "加入方式",
|
title: "加入方式",
|
||||||
dataIndex: "putin",
|
dataIndex: "putin",
|
||||||
key: "putin",
|
key: "putin",
|
||||||
width:"10%",
|
width: "10%",
|
||||||
align: "center",
|
align: "center",
|
||||||
className: "h",
|
className: "h",
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
@@ -3209,10 +2966,10 @@ export default {
|
|||||||
title: "操作",
|
title: "操作",
|
||||||
dataIndex: "operation",
|
dataIndex: "operation",
|
||||||
key: "operation",
|
key: "operation",
|
||||||
width:"20%",
|
width: "20%",
|
||||||
align: "center",
|
align: "center",
|
||||||
className: "h",
|
className: "h",
|
||||||
scopedSlots: { customRender: "action" }, //引入的插槽
|
scopedSlots: {customRender: "action"}, //引入的插槽
|
||||||
customRender: (text) => {
|
customRender: (text) => {
|
||||||
// console.log(text);
|
// console.log(text);
|
||||||
return (
|
return (
|
||||||
@@ -3538,7 +3295,7 @@ export default {
|
|||||||
title: "确定清空所有学员吗?",
|
title: "确定清空所有学员吗?",
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
state.tabledata = [];
|
state.tabledata = [];
|
||||||
student.studentDelAll({ id: state.projectId, type: 1 });
|
student.studentDelAll({id: state.projectId, type: 1});
|
||||||
},
|
},
|
||||||
bodyStyle: "margin-top:70%",
|
bodyStyle: "margin-top:70%",
|
||||||
});
|
});
|
||||||
@@ -3587,7 +3344,7 @@ export default {
|
|||||||
if (res.data.data.status == -5 && res.data.data.projectAuditLogDtoList !== null) {
|
if (res.data.data.status == -5 && res.data.data.projectAuditLogDtoList !== null) {
|
||||||
console.log("审核信息是什么", res.data.data.projectAuditLogDtoList);
|
console.log("审核信息是什么", res.data.data.projectAuditLogDtoList);
|
||||||
let dataset = res.data.data.projectAuditLogDtoList;
|
let dataset = res.data.data.projectAuditLogDtoList;
|
||||||
state.passInfo = dataset[dataset.length-1];
|
state.passInfo = dataset[dataset.length - 1];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
for (let i = 0; i < dataset.length; i++) {
|
for (let i = 0; i < dataset.length; i++) {
|
||||||
@@ -3599,7 +3356,9 @@ export default {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
state.stage = res.data.data.stageList.map(e => ({id: e.stageId, name: e.name}))
|
||||||
|
console.log(1111111111111)
|
||||||
|
console.log(state.stage)
|
||||||
let info = res.data.data.projectInfo;
|
let info = res.data.data.projectInfo;
|
||||||
// let start = toDate(info.beginTime / 1000, "Y-M-D h:m");
|
// let start = toDate(info.beginTime / 1000, "Y-M-D h:m");
|
||||||
let start = info.beginTime;
|
let start = info.beginTime;
|
||||||
@@ -3765,7 +3524,7 @@ export default {
|
|||||||
//start---------项目概览
|
//start---------项目概览
|
||||||
// 获取项目概览
|
// 获取项目概览
|
||||||
const getOverview = () => {
|
const getOverview = () => {
|
||||||
overview({ projectId: state.projectId })
|
overview({projectId: state.projectId})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
Object.keys(res.data.data.projectInfoOverview).forEach((item) => {
|
Object.keys(res.data.data.projectInfoOverview).forEach((item) => {
|
||||||
levelList.projectInfoOverview[item] =
|
levelList.projectInfoOverview[item] =
|
||||||
@@ -3824,7 +3583,7 @@ export default {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleChange = ({ file, fileList }) => {
|
const handleChange = ({file, fileList}) => {
|
||||||
let list = [];
|
let list = [];
|
||||||
if (file.status !== "uploading") {
|
if (file.status !== "uploading") {
|
||||||
console.log("上传的list", fileList);
|
console.log("上传的list", fileList);
|
||||||
@@ -4192,7 +3951,7 @@ export default {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getStu();
|
// getStu();
|
||||||
getTaskList();
|
getTaskList();
|
||||||
getTaskInfo();
|
getTaskInfo();
|
||||||
getGroup();
|
getGroup();
|
||||||
|
|||||||
@@ -22,6 +22,9 @@ module.exports = defineConfig({
|
|||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
"^/manageApi": "",
|
"^/manageApi": "",
|
||||||
},
|
},
|
||||||
|
},"/userbasic": {
|
||||||
|
target: process.env.VUE_APP_BOE_API_URL,
|
||||||
|
changeOrigin: true, //表示是否改变原域名
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user