mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-24 18:22:55 +08:00
Merge branch 'develop' of http://gitlab.dongwu-inc.com:10080/BOE/fe-manage into develop
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
|
||||
|
||||
2
.env.boe
2
.env.boe
@@ -2,4 +2,6 @@ NODE_ENV=boe
|
||||
VUE_APP_BASE=/manage
|
||||
VUE_APP_BASE_API=/manageApi
|
||||
|
||||
VUE_APP_BOE_API_URL=https://u-pre.boe.com
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
NODE_ENV=prod
|
||||
VUE_APP_BASE=/manage
|
||||
VUE_APP_BASE_API=/manageApi
|
||||
VUE_APP_BASE_API=/manageApi
|
||||
|
||||
VUE_APP_BOE_API_URL=https://u-pre.boe.com
|
||||
@@ -3,6 +3,8 @@ VUE_APP_BASE=/manage-release
|
||||
VUE_APP_BASE_API=/manageApi-release
|
||||
VUE_APP_LOGIN_URL=https://u.boe.com/web
|
||||
|
||||
VUE_APP_BOE_API_URL=https://u.boe.com
|
||||
|
||||
|
||||
VUE_APP_IFRAME_URL=https://u.boe.com/pc-release/iframe
|
||||
VUE_APP_IFRAME_STUDENT_URL=https://u.boe.com/pc-release/loading
|
||||
@@ -1,3 +1,5 @@
|
||||
NODE_ENV=test
|
||||
VUE_APP_BASE=/manage
|
||||
VUE_APP_BASE_API=/manageApi
|
||||
VUE_APP_BASE_API=/manageApi
|
||||
|
||||
VUE_APP_BOE_API_URL=https://u-pre.boe.com
|
||||
42388
package-lock.json
generated
42388
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -21,6 +21,7 @@
|
||||
"element-resize-detector": "^1.2.4",
|
||||
"html2canvas": "^1.4.1",
|
||||
"jquery": "^3.6.1",
|
||||
"json-bigint": "^1.0.0",
|
||||
"mitt": "^3.0.0",
|
||||
"moment": "^2.29.4",
|
||||
"qrcode.vue": "^3.3.3",
|
||||
|
||||
54
src/App.vue
54
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";
|
||||
@@ -44,7 +44,7 @@ export default defineComponent({
|
||||
const store = useStore();
|
||||
const isLogin = ref(false);
|
||||
// console.log("router", router.getRoutes(), route);
|
||||
console.log("版本0.9.15------------");
|
||||
console.log("版本0.9.16------------");
|
||||
const routes = computed(() => {
|
||||
return router.getRoutes().filter((e) => e.meta?.isLink);
|
||||
});
|
||||
@@ -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);
|
||||
|
||||
//获取积分列表
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import {reactive, ref, toRefs, watch} from "vue";
|
||||
import axios from 'axios';
|
||||
import {getCookie} from "@/api/method";
|
||||
import JSONBigInt from 'json-bigint';
|
||||
|
||||
|
||||
const JSONBigIntStr = JSONBigInt({ storeAsString: true });
|
||||
export function useBoeApiPage(_url, params = {}, config = {
|
||||
init: true,
|
||||
result: res => res.result,
|
||||
@@ -23,6 +23,8 @@ export function useBoeApiPage(_url, params = {}, config = {
|
||||
console.log('params', params)
|
||||
state.loading = true
|
||||
return request(_url, params).then(r => {
|
||||
console.log(2222222222222)
|
||||
console.log(r)
|
||||
state.data = config.result(r)
|
||||
state.totalPage = config.totalPage(r)
|
||||
state.total = config.total(r)
|
||||
@@ -122,7 +124,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 = [];
|
||||
//拼接参数
|
||||
@@ -136,34 +138,36 @@ export async function request(_url, params) {
|
||||
}
|
||||
}
|
||||
const body = method !== 'get' ? params || {} : {}
|
||||
console.log('token', getCookie('token'))
|
||||
return axios({
|
||||
url,
|
||||
url = process.env.VUE_APP_BOE_API_URL + url
|
||||
return fetch(url,{
|
||||
method,
|
||||
headers: {
|
||||
headers:{
|
||||
token: getCookie('token'),
|
||||
...method !== 'get' ? {'Content-Type': 'application/json'} : {}
|
||||
},
|
||||
baseURL: '',
|
||||
...method !== 'get' ? {data: JSON.stringify(body)} : {}
|
||||
}).then(resp => resp.data).then(response => {
|
||||
console.log(response)
|
||||
// if (response.status !== 200 && response.code !== 0) {
|
||||
// if (response.code === 3 || response.code === 4 || response.code === 100) {
|
||||
// router.push({path: '/login'})
|
||||
// return
|
||||
// } else {
|
||||
// response.showMsg && notification.open({
|
||||
// message: response.showMsg,
|
||||
// duration: 2,
|
||||
// });
|
||||
// return
|
||||
// }
|
||||
// }
|
||||
return response
|
||||
}).catch(e => {
|
||||
console.log(2222)
|
||||
console.log(e)
|
||||
// router.push({path: '/login'})
|
||||
...method !== 'get' ? {body: JSON.stringify(body)} : {}
|
||||
}).then(res=>{
|
||||
return res.text()
|
||||
}).then(res=>{
|
||||
return JSONBigIntStr.parse(res)
|
||||
})
|
||||
// return axios({
|
||||
// url,
|
||||
// method,
|
||||
// headers: {
|
||||
// token: getCookie('token'),
|
||||
// ...method !== 'get' ? {'Content-Type': 'application/json'} : {}
|
||||
// },
|
||||
// baseURL: '',
|
||||
// ...method !== 'get' ? {data: JSON.stringify(body)} : {}
|
||||
// }).then(resp => {
|
||||
// return resp.data
|
||||
// }).then(response => {
|
||||
// console.log(response)
|
||||
// return response
|
||||
// }).catch(e => {
|
||||
// console.log(2222)
|
||||
// console.log(e)
|
||||
// // router.push({path: '/login'})
|
||||
// })
|
||||
}
|
||||
@@ -267,7 +267,7 @@
|
||||
<div class="signbox"></div>
|
||||
<div class="btnbox">
|
||||
<button class="xkbtn" @click="showAssessment">选择评估</button>
|
||||
<div v-if="assessmentId > 0">
|
||||
<div v-if="assessmentName">
|
||||
<a-tag closable color="processing" @close="logA">
|
||||
<span style="font-size: 14px; line-height: 33px">{{
|
||||
assessmentName
|
||||
@@ -483,7 +483,7 @@ export default {
|
||||
fileList: [],
|
||||
chooseCourse: null, //选择的在线课程
|
||||
chooseCourseName: null, //选择的在线课程
|
||||
assessmetId: null,
|
||||
assessmentId: null,
|
||||
EditTestId: null,
|
||||
EditWorkId: null,
|
||||
workName: null,
|
||||
@@ -512,6 +512,7 @@ export default {
|
||||
state.chooseCourse = null;
|
||||
state.EditTestId = null;
|
||||
state.assessmentId = null;
|
||||
state.assessmentName ="";
|
||||
state.EditWorkId = null;
|
||||
state.EditEvalId = null;
|
||||
state.applyFlag = "";
|
||||
@@ -546,7 +547,8 @@ export default {
|
||||
console.log(e);
|
||||
};
|
||||
const logA = (e) => {
|
||||
state.EditEvalId = null;
|
||||
state.assessmentId = null;
|
||||
state.assessmentName ="";
|
||||
console.log(e);
|
||||
};
|
||||
|
||||
@@ -593,8 +595,8 @@ export default {
|
||||
state.EditTestId = result.testId;
|
||||
state.EditWorkId = result.homeWorkId;
|
||||
state.assessmentId = result.evaluateId;
|
||||
state.needEval = result.evaluateId;
|
||||
console.log("====",!result.offcourseId,!result.homeWorkId,!result.testId);
|
||||
state.needEval = result.evalFlag == 1? true:false;
|
||||
console.log("==state.needEval ==",state.needEval );
|
||||
if(result.offcourseId){
|
||||
detail({offcourseId:result.offcourseId}).then((res)=>{
|
||||
state.chooseCourseName =res.data.data.name;
|
||||
@@ -602,8 +604,8 @@ export default {
|
||||
|
||||
});
|
||||
}
|
||||
if(result.evaluateId){
|
||||
queryAppraiseDetailById({assessmentId:!result.offcourseId}).then((res)=>{
|
||||
if(result.evalFlag == 1 && result.evaluateId){
|
||||
queryAppraiseDetailById({assessmentId:result.evaluateId}).then((res)=>{
|
||||
state.assessmentName =res.data.data.assessmentName;
|
||||
});
|
||||
}
|
||||
@@ -659,15 +661,16 @@ export default {
|
||||
completeType: type.concat(t),
|
||||
description: state.description,
|
||||
endTime: parseInt(new Date(state.chooseTime[1].$d).getTime() / 1000),
|
||||
evalFlag: state.needEval ? 1 : 0,
|
||||
evalFlag: state.needEval && state.assessmentId > 0 ? 1 : 0,
|
||||
evaluateId: state.assessmentId,
|
||||
homeWorkId: state.EditWorkId,
|
||||
name: state.courseName,
|
||||
name: state.courseName,
|
||||
projectMember: p.concat(p1),
|
||||
offcourseId: state.chooseCourse,
|
||||
offcoursePlanId: props.EditFaceId > 0 ? props.EditFaceId : 0,
|
||||
testId: state.EditTestId,
|
||||
duration: state.duration,
|
||||
|
||||
};
|
||||
console.log("obj============", obj, "6" + "9");
|
||||
console.log("222222222");
|
||||
|
||||
@@ -257,18 +257,25 @@ export default {
|
||||
let data = tableData;
|
||||
let array = [];
|
||||
data.map((value) => {
|
||||
let n1 = value.essayQuestionVoList
|
||||
? Number(value.essayQuestionVoList.length)
|
||||
: 0 ;
|
||||
let n2 = value.multipleStemVoList
|
||||
? Number(value.multipleStemVoList.length)
|
||||
: 0;
|
||||
|
||||
let n3 = value.scoringQuestionVoList
|
||||
? Number(value.scoringQuestionVoList.length)
|
||||
: 0;
|
||||
let n4 = value.singleStemVoList
|
||||
? Number(value.singleStemVoList.length)
|
||||
: 0;
|
||||
|
||||
let num = n1 + n2 + n3 +n4;
|
||||
let obj = {
|
||||
key: value.assessmentId,
|
||||
assessmentId: value.assessmentId,
|
||||
num: value.essayQuestionVoList
|
||||
? Number(value.essayQuestionVoList.length)
|
||||
: 0 + value.multipleStemVoList
|
||||
? Number(value.multipleStemVoList.length)
|
||||
: 0 + value.scoringQuestionVoList
|
||||
? Number(value.scoringQuestionVoList.length)
|
||||
: 0 + value.singleStemVoList
|
||||
? Number(value.singleStemVoList.length)
|
||||
: 0,
|
||||
num: num,
|
||||
name: value.assessmentName ? value.assessmentName : "-",
|
||||
creator: value.createUser ? value.createUser : "-",
|
||||
time: dayjs(value.createTime).format("YYYY-MM-DD"),
|
||||
@@ -286,6 +293,7 @@ export default {
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
releaseStatus:2,
|
||||
searchEndTime:"",
|
||||
})
|
||||
.then((res) => {
|
||||
let arr = res.data.data.rows;
|
||||
|
||||
@@ -216,6 +216,8 @@ export default {
|
||||
assessmentName: state.inputV1,
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
releaseStatus: 2 ,
|
||||
searchEndTime:"",
|
||||
})
|
||||
.then((res) => {
|
||||
let arr = res.data.data.rows;
|
||||
|
||||
@@ -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} 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: {},
|
||||
@@ -4836,6 +4836,7 @@ export default defineComponent({
|
||||
state.checked4 = false;
|
||||
state.EditTestId = null;
|
||||
state.assessmentId = null;
|
||||
state.assessmentName = "";
|
||||
state.EditWorkId = null;
|
||||
|
||||
removePG();
|
||||
@@ -4862,7 +4863,7 @@ export default defineComponent({
|
||||
beginTime: startTime,
|
||||
completeType: type,
|
||||
endTime: endTime,
|
||||
evalFlag: state.checked4 ? 1 : 0,
|
||||
evalFlag: Number(state.assessmentId) >0 &&state.checked4 ? 1 : 0,
|
||||
evaluateId: Number(state.assessmentId),
|
||||
testId: state.EditTestId,
|
||||
homeWorkId: state.EditWorkId,
|
||||
@@ -8640,6 +8641,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 {
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
class="img1"
|
||||
src="../../assets/images/leveladd/ma.png"
|
||||
@click="showCodeModel2()"
|
||||
/>
|
||||
/>
|
||||
<div v-if="action == 1 || action == 0" class="line"></div>-->
|
||||
<div class ="pubIcon" v-if="action == 1 || action == 0" @click="pubIcon(action)">
|
||||
<img
|
||||
<img
|
||||
class="img2"
|
||||
src="../../assets/images/leveladd/pub.png"
|
||||
/>
|
||||
@@ -505,135 +505,15 @@
|
||||
</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="2" :id="routerId" :stage="stage"></TableStudent>
|
||||
</a-tab-pane>
|
||||
<!--1211注释 待开放
|
||||
<!--1211注释 待开放
|
||||
<a-tab-pane key="4" tab="设置">
|
||||
<div class="split"></div>
|
||||
|
||||
<a-tabs>
|
||||
|
||||
|
||||
|
||||
|
||||
<a-tab-pane key="1" tab="基本信息">
|
||||
<div class="sametab">
|
||||
<div class="Gcon">
|
||||
@@ -657,7 +537,7 @@
|
||||
:disabled="number"
|
||||
v-model:checked="previewSelect"
|
||||
></a-checkbox>
|
||||
|
||||
|
||||
<span class="yulan">预览其他关卡</span><br />
|
||||
<div style="width: 10px; height: 4px"></div>
|
||||
<div style="display: flex; align-items: center">
|
||||
@@ -694,7 +574,7 @@
|
||||
:disabled="number"
|
||||
v-model:checked="studySelect"
|
||||
></a-checkbox>
|
||||
|
||||
|
||||
<span class="yulan">学习其他关卡</span><br />
|
||||
<div style="width: 10px; height: 4px"></div>
|
||||
<div style="display: flex; align-items: center">
|
||||
@@ -731,7 +611,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
|
||||
|
||||
|
||||
<a-tab-pane key="2" tab="共享文档">
|
||||
<div class="sametab">
|
||||
@@ -775,8 +655,8 @@
|
||||
<span style="color: #999999">
|
||||
支持:pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-for="item in fileList"
|
||||
:key="item.uid"
|
||||
@@ -825,7 +705,7 @@
|
||||
-->
|
||||
|
||||
</a-tabs>
|
||||
|
||||
|
||||
<a-modal
|
||||
style="padding: 0"
|
||||
:closable="sh"
|
||||
@@ -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,11 +1129,13 @@ export default {
|
||||
WorkManage,
|
||||
SeeStu,
|
||||
TwoDimensionalCode,
|
||||
TableStudent,
|
||||
},
|
||||
setup() {
|
||||
const router = useRouter();
|
||||
// const store = useStore();
|
||||
const state = reactive({
|
||||
stage: [],
|
||||
routerId: storage.get("routerId")
|
||||
? JSON.parse(storage.get("routerId"))
|
||||
: null, //学习路径页面传的学习路径id
|
||||
@@ -1985,6 +1868,7 @@ export default {
|
||||
state.nodata = false;
|
||||
}
|
||||
let data = res.data.data.chapterList;
|
||||
state.stage = res.data.data.chapterList.map(e => ({id: e.chapterId, name: e.name}))
|
||||
state.taskSyllabus = data;
|
||||
// for(let i in data) {
|
||||
// state.taskSyllabus[i].name = data[i].name
|
||||
@@ -4379,6 +4263,6 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -500,7 +500,7 @@
|
||||
</div>
|
||||
<div class="lin"></div>
|
||||
</div>
|
||||
-->
|
||||
|
||||
<div class="item" @click="showDrawerAddProj">
|
||||
<div class="itcon">
|
||||
<div class="img">
|
||||
@@ -523,6 +523,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
<div class="boom">
|
||||
<div class="boomcen">
|
||||
@@ -1059,7 +1060,7 @@ import AddInvist from "../../components/drawers/AddInvist.vue";
|
||||
//import AddVote from "../../components/vote/AddVote.vue";
|
||||
import AddLive from "../../components/drawers/AddLive.vue";
|
||||
import AddRef from "../../components/drawers/AddRef.vue";
|
||||
import AddProject from "../../components/drawers/AddProject.vue";
|
||||
//import AddProject from "../../components/drawers/AddProject.vue";
|
||||
import AddFaceteach from "../../components/drawers/AddFaceteach.vue";
|
||||
import * as api from "../../api/indexLevel";
|
||||
import { GetRouterDetail } from "../../api/indexTask";
|
||||
@@ -1091,7 +1092,7 @@ export default {
|
||||
draggable,
|
||||
// UnlockMode,
|
||||
AddFaceteach,
|
||||
AddProject,
|
||||
//AddProject,
|
||||
},
|
||||
setup() {
|
||||
const router = useRouter();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -164,6 +164,10 @@
|
||||
</a-modal>
|
||||
<!--操作弹窗 -->
|
||||
</div>
|
||||
<!-- 加载动画 -->
|
||||
<div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }">
|
||||
<a-spin :spinning="addLoading" tip="" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs, onMounted, ref } from "vue";
|
||||
@@ -186,6 +190,7 @@ export default {
|
||||
setup() {
|
||||
const router = useRouter();
|
||||
const state = reactive({
|
||||
addLoading: false,
|
||||
// projectNameList: [
|
||||
// {
|
||||
// id: 1,
|
||||
@@ -383,6 +388,7 @@ export default {
|
||||
|
||||
const getTableDate = async () => {
|
||||
// let data = state.tableData;
|
||||
state.addLoading = true;
|
||||
let startTime,
|
||||
endTime = "";
|
||||
if (state.projectTime) {
|
||||
@@ -419,6 +425,7 @@ export default {
|
||||
},
|
||||
true
|
||||
);
|
||||
state.addLoading = false;
|
||||
data.map((value) => {
|
||||
{
|
||||
//单层项目
|
||||
|
||||
@@ -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