mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-06 17:36:44 +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_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_STUDENT_URL=https://u-pre.boe.com/pc/loading
|
||||
|
||||
52
src/App.vue
52
src/App.vue
@@ -1,27 +1,27 @@
|
||||
<template>
|
||||
<div id="container" v-if="!isLogin">
|
||||
<nav-top />
|
||||
<nav-top/>
|
||||
<div style="display: flex">
|
||||
<nav-left />
|
||||
<nav-left/>
|
||||
<div style="flex: 1; display: flex; flex-direction: column; width: 0">
|
||||
<open-pages />
|
||||
<bread-crumb />
|
||||
<open-pages/>
|
||||
<bread-crumb/>
|
||||
<main>
|
||||
<a-config-provider :locale="zhCN">
|
||||
<router-view />
|
||||
<router-view/>
|
||||
</a-config-provider>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="container" v-if="isLogin">
|
||||
<router-view />
|
||||
<router-view/>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { computed, defineComponent, ref } from "vue";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import { useStore } from "vuex";
|
||||
import {computed, defineComponent, ref} from "vue";
|
||||
import {useRouter, useRoute} from "vue-router";
|
||||
import {useStore} from "vuex";
|
||||
import NavLeft from "@/components/NavLeft";
|
||||
import NavTop from "@/components/NavTop";
|
||||
import OpenPages from "@/components/OpenPages";
|
||||
@@ -78,7 +78,7 @@ export default defineComponent({
|
||||
return;
|
||||
}
|
||||
const memberInitInfo = await api1
|
||||
.getMemberInfo({ keyWord: "", pageNo: 1, pageSize: 10 })
|
||||
.getMemberInfo({keyWord: "", pageNo: 1, pageSize: 10})
|
||||
.then((res) => res.data.data.rows);
|
||||
store.commit("SET_MEMBER_INFO", memberInitInfo);
|
||||
localStorage.setItem("memberInitInfo", JSON.stringify(memberInitInfo));
|
||||
@@ -94,13 +94,13 @@ export default defineComponent({
|
||||
if (localStory) {
|
||||
list = localStorage.getItem(key);
|
||||
if (list) {
|
||||
store.commit("SET_DICT", { key, data: JSON.parse(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 });
|
||||
store.commit("SET_DICT", {key, data: list});
|
||||
}
|
||||
|
||||
const getDictList = (param) =>
|
||||
@@ -199,6 +199,34 @@ export default defineComponent({
|
||||
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) {
|
||||
// .cmMain {
|
||||
// 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 ORG_LIST = '/userbasic/org/list post'
|
||||
export const ORG_CHILD_LIST = '/userbasic/org/info 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 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);
|
||||
|
||||
//获取积分列表
|
||||
|
||||
@@ -122,7 +122,7 @@ export function useRequest(_url, params = {}, init = true) {
|
||||
export async function request(_url, params) {
|
||||
const s = _url.split(' ')
|
||||
let url = s[0]
|
||||
const method = s[1] || 'get'
|
||||
const method = s[1]?.toLowerCase() || 'get'
|
||||
if (method === 'get') {
|
||||
let paramsArray = [];
|
||||
//拼接参数
|
||||
|
||||
@@ -1,187 +1,195 @@
|
||||
<template>
|
||||
<a-drawer
|
||||
:visible="visiableState"
|
||||
class="drawerStyle ProjCheckship"
|
||||
placement="right"
|
||||
width="45%"
|
||||
>
|
||||
<div class="drawerMain" id="ProjCheckship">
|
||||
<div class="header">
|
||||
<div class="headerTitle">
|
||||
{{ {1: '查看权', 2: '管理权', 3: '添加学员'}[type] || '' }}
|
||||
<div>
|
||||
<a-drawer
|
||||
:visible="visiable"
|
||||
class="drawerStyle ProjCheckship"
|
||||
placement="right"
|
||||
width="45%"
|
||||
>
|
||||
<div class="drawerMain" id="ProjCheckship">
|
||||
<div class="header">
|
||||
<div class="headerTitle">
|
||||
{{ {1: '添加学员', 2: '添加学员', 3: '添加学员'}[type] || '' }}
|
||||
</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div style="width:100%;display: grid;grid-template-columns: 750px auto;">
|
||||
<div class="tabs">
|
||||
<a-tabs v-model:activeKey="activeKey">
|
||||
<a-tab-pane :key="1" tab="快速选人">
|
||||
<div :style="{ height: screenHeight - 235 + 'px' }">
|
||||
<div class="tab1">
|
||||
<a-form-item label="姓名">
|
||||
<a-input
|
||||
v-model:value="nameSearch.keyword"
|
||||
style="width: 270px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
<a-button type="primary" @click="onSearchStu" style="margin-left: 20px;border-radius: 4px">
|
||||
<template #icon>
|
||||
<SearchOutlined/>
|
||||
</template>
|
||||
搜索
|
||||
</a-button>
|
||||
<a-button @click="resetStu" style="margin-left: 20px;border-radius: 4px">重置</a-button>
|
||||
</a-form-item>
|
||||
<div style="width:100%;display: grid;grid-template-columns: 750px auto;">
|
||||
<div class="tabs">
|
||||
<a-tabs v-model:activeKey="activeKey">
|
||||
<a-tab-pane :key="1" tab="快速选人">
|
||||
<div :style="{ height: screenHeight - 235 + 'px' }">
|
||||
<div class="tab1">
|
||||
<a-form-item label="姓名">
|
||||
<a-input
|
||||
v-model:value="nameSearch.keyword"
|
||||
style="width: 270px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
<a-button type="primary" @click="onSearchStu" style="margin-left: 20px;border-radius: 4px">
|
||||
<template #icon>
|
||||
<SearchOutlined/>
|
||||
</template>
|
||||
搜索
|
||||
</a-button>
|
||||
<a-button @click="resetStu" style="margin-left: 20px;border-radius: 4px">重置</a-button>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div class="chooseLeft" style="display: grid;grid-template-columns: 250px auto">
|
||||
<div :style="{ height: screenHeight - 235 + 'px' ,overflowY:'auto'}">
|
||||
<a-tree
|
||||
allow-clear
|
||||
tree-default-expand-all
|
||||
:tree-data="treeData"
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
key: 'id',
|
||||
title: 'name',
|
||||
value: 'name',
|
||||
}"
|
||||
@select="stuStuOrgSelect"
|
||||
>
|
||||
</a-tree>
|
||||
</div>
|
||||
<div class="tableBox tabb">
|
||||
<a-table
|
||||
:columns="stuColumns"
|
||||
:data-source="stuData"
|
||||
:pagination="stuPagination"
|
||||
:loading="stuLoading"
|
||||
row-key="id"
|
||||
:row-selection="stuRowSelection"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chooseLeft" style="display: grid;grid-template-columns: 250px auto">
|
||||
<div :style="{ height: screenHeight - 235 + 'px' ,overflowY:'auto'}">
|
||||
</a-tab-pane>
|
||||
<a-tab-pane :key="2" tab="添加组织">
|
||||
<div
|
||||
:style="{ height: screenHeight - 235 + 'px' }"
|
||||
>
|
||||
<div class="tab2">
|
||||
<a-form-item label="组织:">
|
||||
<a-input
|
||||
v-model:value="searchOrgName.keyword"
|
||||
style="width: 230px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入组织"
|
||||
/>
|
||||
<a-button type="primary" @click="searchOrg" style="margin-left: 20px;border-radius: 4px">
|
||||
<template #icon>
|
||||
<SearchOutlined/>
|
||||
</template>
|
||||
搜索
|
||||
</a-button>
|
||||
<a-button @click="resetOrg" style="margin-left: 20px;border-radius: 4px">重置</a-button>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div class="boeTree">
|
||||
<a-tree
|
||||
allow-clear
|
||||
tree-default-expand-all
|
||||
:tree-data="treeData"
|
||||
:tree-data="searchOrgName.keyword ? orgData : treeData"
|
||||
@select="onOrgSelectChange"
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
key: 'id',
|
||||
title: 'name',
|
||||
value: 'name',
|
||||
}"
|
||||
@select="stuStuOrgSelect"
|
||||
row-key="id"
|
||||
:row-selection="orgRowSelection"
|
||||
multiple
|
||||
>
|
||||
</a-tree>
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane :key="3" tab="受众关联">
|
||||
<div
|
||||
:style="{ height: screenHeight - 235 + 'px' }"
|
||||
>
|
||||
<div>
|
||||
<a-form-item label="受众名称:">
|
||||
<a-input
|
||||
v-model:value="audienceName.keyword"
|
||||
style="width: 260px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入受众名称"
|
||||
/>
|
||||
<a-button type="primary" @click="searchAudi" style="margin-left: 20px;border-radius: 4px">
|
||||
<template #icon>
|
||||
<SearchOutlined/>
|
||||
</template>
|
||||
搜索
|
||||
</a-button>
|
||||
<a-button @click="resetAudienceInfo" style="margin-left: 20px;border-radius: 4px">重置</a-button>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div class="tableBox tabb">
|
||||
<a-table
|
||||
:columns="stuColumns"
|
||||
:data-source="stuData"
|
||||
:pagination="stuPagination"
|
||||
:loading="stuLoading"
|
||||
style="border: 1px solid #f2f6fe"
|
||||
row-key="id"
|
||||
:row-selection="stuRowSelection"
|
||||
:columns="audiColums"
|
||||
:data-source="audiData"
|
||||
:loading="audiLoading"
|
||||
:pagination="auditPagination"
|
||||
:row-selection="auditRowSelection"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane :key="2" tab="添加组织">
|
||||
<div
|
||||
:style="{ height: screenHeight - 235 + 'px' }"
|
||||
>
|
||||
<div class="tab2">
|
||||
<a-form-item label="组织:">
|
||||
<a-input
|
||||
v-model:value="searchOrgName.keyword"
|
||||
style="width: 230px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入组织"
|
||||
/>
|
||||
<a-button type="primary" @click="searchOrg" style="margin-left: 20px;border-radius: 4px">
|
||||
<template #icon>
|
||||
<SearchOutlined/>
|
||||
</template>
|
||||
搜索
|
||||
</a-button>
|
||||
<a-button @click="resetOrg" style="margin-left: 20px;border-radius: 4px">重置</a-button>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div class="boeTree">
|
||||
<a-tree
|
||||
:tree-data="searchOrgName.keyword ? orgData : treeData"
|
||||
@select="onOrgSelectChange"
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
key: 'id',
|
||||
title: 'name',
|
||||
value: 'name',
|
||||
}"
|
||||
row-key="id"
|
||||
:row-selection="orgRowSelection"
|
||||
multiple
|
||||
>
|
||||
</a-tree>
|
||||
<!-- <div>-->
|
||||
<!-- <a-table-->
|
||||
<!-- :columns="stuColumns"-->
|
||||
<!-- :data-source="stuData"-->
|
||||
<!-- :pagination="stuPagination"-->
|
||||
<!-- :loading="orgLoading"-->
|
||||
<!-- row-key="id"-->
|
||||
<!-- :row-selection="stuRowSelection"-->
|
||||
<!-- />-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane :key="3" tab="受众关联">
|
||||
<div
|
||||
:style="{ height: screenHeight - 235 + 'px' }"
|
||||
>
|
||||
<div>
|
||||
<a-form-item label="受众名称:">
|
||||
<a-input
|
||||
v-model:value="audienceName.keyword"
|
||||
style="width: 260px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入受众名称"
|
||||
/>
|
||||
<a-button type="primary" @click="searchAudi" style="margin-left: 20px;border-radius: 4px">
|
||||
<template #icon>
|
||||
<SearchOutlined/>
|
||||
</template>
|
||||
搜索
|
||||
</a-button>
|
||||
<a-button @click="resetAudienceInfo" style="margin-left: 20px;border-radius: 4px">重置</a-button>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div class="tableBox tabb">
|
||||
<a-table
|
||||
style="border: 1px solid #f2f6fe"
|
||||
row-key="id"
|
||||
:columns="audiColums"
|
||||
:data-source="audiData"
|
||||
:loading="audiLoading"
|
||||
:pagination="auditPagination"
|
||||
:row-selection="auditRowSelection"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</div>
|
||||
<div style="padding:100px 0 0 20px;display: grid;grid-template-rows: auto auto auto;">
|
||||
<div>
|
||||
<div style="margin-top: 20px">快速选人</div>
|
||||
<a-tag :closable="true" color="#4ea6ff" @close="stuDel(i)" v-for="(item,i) in selectsData.studentList"
|
||||
:key="i" style="margin-top:20px">
|
||||
{{ item.realName }}
|
||||
</a-tag>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</div>
|
||||
<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"
|
||||
style="margin-top:20px">
|
||||
{{ item.name }}
|
||||
</a-tag>
|
||||
</div>
|
||||
<div>
|
||||
<div style="margin-top: 20px">受众添加</div>
|
||||
<a-tag :closable="true" color="#4ea6ff" @close="AuditDel(i)" v-for="(item,i) in selectsData.groupList"
|
||||
:key="i" style="margin-top:20px">
|
||||
{{ item.audienceName }}
|
||||
</a-tag>
|
||||
<div style="padding:100px 0 0 20px;display: grid;grid-template-rows: auto auto auto;">
|
||||
<div>
|
||||
<div style="margin-top: 20px">快速选人</div>
|
||||
<a-tag :closable="true" color="#4ea6ff" @close="stuDel(i)" v-for="(item,i) in selectsData.studentList"
|
||||
:key="i" style="margin-top:20px">
|
||||
{{ item.realName }}
|
||||
</a-tag>
|
||||
</div>
|
||||
<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"
|
||||
style="margin-top:20px">
|
||||
{{ item.name }}
|
||||
</a-tag>
|
||||
</div>
|
||||
<div>
|
||||
<div style="margin-top: 20px">受众添加</div>
|
||||
<a-tag :closable="true" color="#4ea6ff" @close="AuditDel(i)" v-for="(item,i) in selectsData.groupList"
|
||||
:key="i" style="margin-top:20px">
|
||||
{{ item.audienceName }}
|
||||
</a-tag>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="submitAuth">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="submitAuth">确定</button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<div @click="openDrawer">
|
||||
<slot></slot>
|
||||
</div>
|
||||
</a-drawer>
|
||||
</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>
|
||||
<script setup>
|
||||
import {computed, defineEmits, defineProps, onMounted, ref} from "vue";
|
||||
import {computed, defineEmits, defineProps, ref, watch} from "vue";
|
||||
import {useStore} from "vuex";
|
||||
import {useBoeApi, useBoeApiPage} from "@/api/request";
|
||||
import {AUDIENCE_LIST, ORG_LIST, USER_LIST} from "@/api/ThirdApi";
|
||||
@@ -191,16 +199,17 @@ const store = useStore();
|
||||
const emit = defineEmits({})
|
||||
const props = defineProps({
|
||||
type: Number,
|
||||
visiable: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
id: String,
|
||||
stage: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
})
|
||||
|
||||
const visiableState = computed(() => props.visiable)
|
||||
|
||||
const visiable = ref(false)
|
||||
const activeKey = ref(1)
|
||||
const stageVisible = ref(false)
|
||||
const selectsData = ref({
|
||||
stageId: '',
|
||||
studentList: [],
|
||||
deptList: [],
|
||||
groupList: []
|
||||
@@ -222,6 +231,8 @@ const searchOrgName = ref({
|
||||
pageSize: 10
|
||||
})
|
||||
|
||||
const stageIds = computed(() => props.stage)
|
||||
|
||||
const {
|
||||
data: stuData,
|
||||
fetch: searchStu,
|
||||
@@ -250,7 +261,7 @@ const {
|
||||
total: audiTotal
|
||||
} = useBoeApiPage(AUDIENCE_LIST, audienceName.value, {
|
||||
init: true,
|
||||
result: res => res.result.audienceList,
|
||||
result: res => res.result.audienceList.map(e => ({...e, id: e.id + ''})),
|
||||
totalPage: res => res.result.totalPage,
|
||||
total: res => res.result.totalElement
|
||||
})
|
||||
@@ -367,11 +378,11 @@ const auditRowSelection = computed(() => ({
|
||||
preserveSelectedRowKeys: true,
|
||||
}))
|
||||
|
||||
onMounted(() => {
|
||||
});
|
||||
|
||||
const closeDrawer = () => {
|
||||
|
||||
visiable.value = false
|
||||
};
|
||||
const openDrawer = () => {
|
||||
visiable.value = true
|
||||
};
|
||||
//获取组织树
|
||||
const treeData = computed(() => {
|
||||
@@ -397,6 +408,7 @@ function AuditDel(i) {
|
||||
auditSelectKeys.value = auditSelectKeys.value.filter(e => e !== selectsData.value.groupList[i].id)
|
||||
selectsData.value.groupList.splice(i, 1)
|
||||
}
|
||||
|
||||
//
|
||||
// function orgSelect(key, obj) {
|
||||
// console.log(obj)
|
||||
@@ -432,8 +444,6 @@ const changePagination = (page) => {
|
||||
};
|
||||
|
||||
const auditChangePagination = (page) => {
|
||||
console.log(1111111111)
|
||||
console.log(page)
|
||||
audienceName.value.page = page;
|
||||
searchAudi()
|
||||
};
|
||||
@@ -468,14 +478,50 @@ const resetAudienceInfo = () => {
|
||||
// };
|
||||
//确定添加授权
|
||||
const submitAuth = () => {
|
||||
emit('update:visiable', false)
|
||||
saveStu(selectsData.value)
|
||||
if (props.type !== 3) {
|
||||
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>
|
||||
<style>
|
||||
.ant-btn-primary {
|
||||
background-color: #4ea6ff !important;
|
||||
}
|
||||
|
||||
.cus-select {
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
</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>
|
||||
</div>
|
||||
<div class="stmm_i5">
|
||||
<div class="i5_left">
|
||||
<!-- <a-input
|
||||
v-model:value="xygl_inputV1"
|
||||
style="
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
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>
|
||||
<TableStudent :type="3" :id="offcourseId" :columns="stuColumns">
|
||||
<!-- <template #extension = "data">-->
|
||||
<!-- <div style="display: flex">-->
|
||||
<!-- <button @click="handlJoinStu(data)">成绩录入</button>-->
|
||||
<!-- </div>-->
|
||||
<!-- </template>-->
|
||||
</TableStudent>
|
||||
</div>
|
||||
<div class="tableBox" style="margin-top: 20px">
|
||||
<a-table
|
||||
:columns="columns7"
|
||||
:data-source="tableData7"
|
||||
:loading="tableDataTotal3 === -1 ? true : false"
|
||||
:scroll="{ x: 800 }"
|
||||
expandRowByClick="true"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
:row-selection="{
|
||||
selectedRowKeys: selectedRowKeys7,
|
||||
onChange: onSelectChange7,
|
||||
}"
|
||||
>
|
||||
<template #bodyCell="{ record, column }">
|
||||
<!-- 操作1 -->
|
||||
<template
|
||||
v-if="
|
||||
(String(record.applyStatus) === '0' ||
|
||||
record.status === '待审核') &&
|
||||
column.key === 'overstatus'
|
||||
"
|
||||
>
|
||||
<span class="table-operation">-</span>
|
||||
</template>
|
||||
<template
|
||||
v-if="
|
||||
(String(record.applyStatus) === '-1' ||
|
||||
record.status === '已拒绝') &&
|
||||
column.key === 'overstatus'
|
||||
"
|
||||
>
|
||||
<span class="table-operation">-</span>
|
||||
</template>
|
||||
<template
|
||||
v-if="
|
||||
(String(record.applyStatus) === '1' ||
|
||||
record.status === '已通过') &&
|
||||
column.key === 'overstatus'
|
||||
"
|
||||
>
|
||||
<span class="table-operation">
|
||||
<a
|
||||
@click="
|
||||
() => {
|
||||
handlJoinStu(record);
|
||||
}
|
||||
"
|
||||
>
|
||||
成绩录入
|
||||
</a>
|
||||
<a
|
||||
@click="
|
||||
() => {
|
||||
handleOverStu(record);
|
||||
}
|
||||
"
|
||||
>
|
||||
结业
|
||||
</a>
|
||||
</span>
|
||||
</template>
|
||||
<!-- 操作2 -->
|
||||
<template
|
||||
v-if="
|
||||
(String(record.applyStatus) === '0' ||
|
||||
record.status === '待审核') &&
|
||||
column.key === 'operation'
|
||||
"
|
||||
>
|
||||
<span class="table-operation">
|
||||
<a
|
||||
@click="
|
||||
() => {
|
||||
handleSucessStu(record);
|
||||
}
|
||||
"
|
||||
>
|
||||
通过
|
||||
</a>
|
||||
<a
|
||||
@click="
|
||||
() => {
|
||||
handleRejectStu(record);
|
||||
}
|
||||
"
|
||||
>
|
||||
拒绝
|
||||
</a>
|
||||
<a
|
||||
@click="
|
||||
() => {
|
||||
handleDeleteStu(record);
|
||||
}
|
||||
"
|
||||
>
|
||||
删除
|
||||
</a>
|
||||
</span>
|
||||
</template>
|
||||
<template
|
||||
v-if="
|
||||
(String(record.applyStatus) === '1' ||
|
||||
record.status === '已通过') &&
|
||||
column.key === 'operation'
|
||||
"
|
||||
>
|
||||
<span class="table-operation">
|
||||
<a
|
||||
@click="
|
||||
() => {
|
||||
handleDeleteStu(record);
|
||||
}
|
||||
"
|
||||
>
|
||||
删除
|
||||
</a>
|
||||
</span>
|
||||
</template>
|
||||
<template
|
||||
v-if="
|
||||
(String(record.applyStatus) === '-1' ||
|
||||
record.status === '已拒绝') &&
|
||||
column.key === 'operation'
|
||||
"
|
||||
>
|
||||
<span class="table-operation">
|
||||
<a
|
||||
@click="
|
||||
() => {
|
||||
handleDeleteStu(record);
|
||||
}
|
||||
"
|
||||
>
|
||||
删除
|
||||
</a>
|
||||
</span>
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
<div class="tableBox" style="margin-top: 50px">
|
||||
<div class="pa">
|
||||
<a-pagination
|
||||
:showSizeChanger="false"
|
||||
showQuickJumper="true"
|
||||
hideOnSinglePage="true"
|
||||
:pageSize="pageSize3"
|
||||
:current="currentPage3"
|
||||
:total="tableDataTotal3"
|
||||
class="pagination"
|
||||
@change="handelChangePage3"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <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>
|
||||
@@ -2604,11 +2536,11 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="qrm_btnbox">
|
||||
<div class="qrm_btn btn1">
|
||||
<div class="btnText" @click="rg_exit">取消</div>
|
||||
<div class="qrm_btn btn1" @click="rg_exit">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
<div class="qrm_btn btn2">
|
||||
<div class="btnText" @click="handleJoin">确定</div>
|
||||
<div class="qrm_btn btn2" @click="handleJoin">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2930,6 +2862,7 @@ import { queryWorkDetailById } from "@/api/indexWork";
|
||||
import { queryExaminationDetailById } from "@/api/indexExam";
|
||||
import AddHomework from "../../components/drawers/AddHomework.vue";
|
||||
import AddTest from "../../components/drawers/AddTest.vue";
|
||||
import TableStudent from "@/components/student/TableStudent";
|
||||
//列表表格
|
||||
const columns1 = [
|
||||
// {
|
||||
@@ -3448,6 +3381,7 @@ export default defineComponent({
|
||||
AddHomework,
|
||||
AddTest,
|
||||
NameInput,
|
||||
TableStudent,
|
||||
// VNodes: (_, {attrs}) => {
|
||||
// return attrs.vnodes;
|
||||
// },
|
||||
@@ -3458,6 +3392,72 @@ export default defineComponent({
|
||||
const CourseModalRef = ref(null);
|
||||
|
||||
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,
|
||||
addLoading: false,
|
||||
currentPlanItem: {},
|
||||
@@ -8640,6 +8640,30 @@ export default defineComponent({
|
||||
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 {
|
||||
// position: relative;
|
||||
// .hoverList {
|
||||
|
||||
@@ -505,127 +505,7 @@
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="3" tab="学员管理" force-render>
|
||||
<div class="split"></div>
|
||||
<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>
|
||||
<TableStudent :type="3" :id="routerId"></TableStudent>
|
||||
</a-tab-pane>
|
||||
<!--1211注释 待开放
|
||||
<a-tab-pane key="4" tab="设置">
|
||||
@@ -1232,6 +1112,7 @@ import * as api from "../../api/index1";
|
||||
import { editRoutered } from "../../api/indexLearningPath";
|
||||
import { codeUrl } from "../../api/method";
|
||||
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
|
||||
import TableStudent from "@/components/student/TableStudent";
|
||||
// import * as student from "@/api/student";
|
||||
export default {
|
||||
name: "LevelAdd",
|
||||
@@ -1248,6 +1129,7 @@ export default {
|
||||
WorkManage,
|
||||
SeeStu,
|
||||
TwoDimensionalCode,
|
||||
TableStudent,
|
||||
},
|
||||
setup() {
|
||||
const router = useRouter();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -22,6 +22,9 @@ module.exports = defineConfig({
|
||||
pathRewrite: {
|
||||
"^/manageApi": "",
|
||||
},
|
||||
},"/userbasic": {
|
||||
target: process.env.VUE_APP_BOE_API_URL,
|
||||
changeOrigin: true, //表示是否改变原域名
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user