mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-07 01:46:43 +08:00
feat:合并
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 25 KiB |
@@ -2,7 +2,7 @@
|
|||||||
* @Author: lixg lixg@dongwu-inc.com
|
* @Author: lixg lixg@dongwu-inc.com
|
||||||
* @Date: 2022-11-09 09:26:26
|
* @Date: 2022-11-09 09:26:26
|
||||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||||
* @LastEditTime: 2022-12-09 18:36:00
|
* @LastEditTime: 2022-12-10 15:22:22
|
||||||
* @FilePath: /fe-manage/public/index.html
|
* @FilePath: /fe-manage/public/index.html
|
||||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
-->
|
-->
|
||||||
|
|||||||
8
src/api/ThirdApi.js
Normal file
8
src/api/ThirdApi.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
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'
|
||||||
@@ -44,7 +44,7 @@ import qs from "qs";
|
|||||||
|
|
||||||
//上传文件
|
//上传文件
|
||||||
export const uploadFile = (obj) =>
|
export const uploadFile = (obj) =>
|
||||||
http.post("/test/testRequest", qs.stringify({ obj }));
|
http.post("/test/testRequest", qs.stringify({obj}));
|
||||||
|
|
||||||
// 接口-请求
|
// 接口-请求
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ export const getLearnPath = (obj) => http.post("/admin/router/list", obj);
|
|||||||
export const handleLearnPath = (obj) => http.post("/admin/router/handle", obj);
|
export const handleLearnPath = (obj) => http.post("/admin/router/handle", obj);
|
||||||
//获取路径图统计数据
|
//获取路径图统计数据
|
||||||
export const getLearnCount = (routerId) =>
|
export const getLearnCount = (routerId) =>
|
||||||
http.get("/admin/router/getCount", { params: { routerId: routerId } });
|
http.get("/admin/router/getCount", {params: {routerId: routerId}});
|
||||||
|
|
||||||
//新建或编辑关卡
|
//新建或编辑关卡
|
||||||
export const editChapter = (obj) => http.post("/admin/router/editChapter", obj);
|
export const editChapter = (obj) => http.post("/admin/router/editChapter", obj);
|
||||||
@@ -66,20 +66,20 @@ export const setConfig = (obj) => http.post("/admin/router/setConfig", obj);
|
|||||||
export const getStudent = (obj) => http.post("/admin/router/studentList", obj);
|
export const getStudent = (obj) => http.post("/admin/router/studentList", obj);
|
||||||
//获取路径图详情-包含关卡及任务列表
|
//获取路径图详情-包含关卡及任务列表
|
||||||
export const getRouterDetail = (routerId) =>
|
export const getRouterDetail = (routerId) =>
|
||||||
http.get("/admin/router/detail", {
|
http.get("/admin/router/detail", {
|
||||||
params: {
|
params: {
|
||||||
routerId: routerId,
|
routerId: routerId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
//添加学员
|
//添加学员
|
||||||
export const addStudent = (obj) => http.post("/admin/router/addStudent", obj);
|
export const addStudent = (obj) => http.post("/admin/router/addStudent", obj);
|
||||||
//删除学员
|
//删除学员
|
||||||
export const delStudent = (obj) =>
|
export const delStudent = (obj) =>
|
||||||
http.post("/admin/router/deleteStudent", obj);
|
http.post("/admin/router/deleteStudent", obj);
|
||||||
|
|
||||||
// 获取学员路径图进度明细
|
// 获取学员路径图进度明细
|
||||||
export const stuProgress = (obj) =>
|
export const stuProgress = (obj) =>
|
||||||
http.post("/admin/router/studentProcess", obj);
|
http.post("/admin/router/studentProcess", obj);
|
||||||
//编辑学习路径基本信息
|
//编辑学习路径基本信息
|
||||||
export const editLearnInfo = (obj) => http.post('/admin/router/editInfo', obj)
|
export const editLearnInfo = (obj) => http.post('/admin/router/editInfo', obj)
|
||||||
|
|
||||||
@@ -92,7 +92,6 @@ export const billboard = (obj) => http.post("/admin/project/billboard", obj);
|
|||||||
//项目基础信息-----------------------------------
|
//项目基础信息-----------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//课程----------------------------------------------
|
//课程----------------------------------------------
|
||||||
|
|
||||||
// //提交审核
|
// //提交审核
|
||||||
@@ -121,7 +120,7 @@ export const optionAuthPerm = (obj) => http.post('/admin/AuthPerm/optionAuthPerm
|
|||||||
//获取学员列表
|
//获取学员列表
|
||||||
export const getStuList = (obj) => http.post('/admin/orgStruct/getStudentRef', obj)
|
export const getStuList = (obj) => http.post('/admin/orgStruct/getStudentRef', obj)
|
||||||
//获取用户登录
|
//获取用户登录
|
||||||
export const getUser = () => http.post('/admin/CheckUser/login', { withCredentials: true })
|
export const getUser = () => http.post('/admin/CheckUser/login', {withCredentials: true})
|
||||||
//公共信息---------------------------------------------------
|
//公共信息---------------------------------------------------
|
||||||
|
|
||||||
//添加项目学员
|
//添加项目学员
|
||||||
@@ -131,14 +130,15 @@ export const addStudentCourse = (obj) => http.post("/admin/offcourse/addStudent"
|
|||||||
|
|
||||||
// 获取组织结构树
|
// 获取组织结构树
|
||||||
export const orgtree = () => http.get("/org/tree");
|
export const orgtree = () => http.get("/org/tree");
|
||||||
|
export const saveStu = obj => http.post("/admin/student/addStudent", obj);
|
||||||
|
|
||||||
//获取积分列表
|
//获取积分列表
|
||||||
export const noticeList = (projectId) =>
|
export const noticeList = (projectId) =>
|
||||||
http.post(
|
http.post(
|
||||||
`/admin/project/noticeList?projectId=` +
|
`/admin/project/noticeList?projectId=` +
|
||||||
projectId +
|
projectId +
|
||||||
``
|
``
|
||||||
);
|
);
|
||||||
|
|
||||||
// 测试方法
|
// 测试方法
|
||||||
// import * as api from '../../api/index'
|
// import * as api from '../../api/index'
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import * as api from './index1'
|
import * as api from './index1'
|
||||||
|
|
||||||
function formatNumber(n) {
|
function formatNumber(n) {
|
||||||
n = n.toString();
|
n = n.toString();
|
||||||
return n[1] ? n : "0" + n;
|
return n[1] ? n : "0" + n;
|
||||||
@@ -192,31 +193,33 @@ const setCookie = (name, value, perpetual) => {
|
|||||||
|
|
||||||
//先写一个方法
|
//先写一个方法
|
||||||
function getCookie(name) {
|
function getCookie(name) {
|
||||||
|
return document.cookie?.split(";").find(e => e.includes(name)).replace(`${name}=`,'') || ''
|
||||||
//1.获取cookie字符串
|
//1.获取cookie字符串
|
||||||
var cookies = document.cookie;
|
// const cookies = document.cookie;
|
||||||
//通过;来分割字符串
|
// console.log('cookies',cookies)
|
||||||
var cookie = cookies.split("; ");
|
// //通过;来分割字符串
|
||||||
// console.log('cookie', cookie)
|
// const cookie = cookies.split(";");
|
||||||
//遍历,使键值对匹配上
|
// // console.log('cookie', cookie)
|
||||||
for (var i = 0; i < cookie.length; i++) {
|
// //遍历,使键值对匹配上
|
||||||
var arr = cookie[i].split("token=");
|
// for (var i = 0; i < cookie.length; i++) {
|
||||||
// console.log('arr', arr)
|
// var arr = cookie[i].split("token=");
|
||||||
console.log('name', name)
|
// // console.log('arr', arr)
|
||||||
// if (arr[0] == name) {
|
// console.log('name', name)
|
||||||
// console.log('arr[1]', arr[1])
|
// // if (arr[0] == name) {
|
||||||
// return arr[1];
|
// // console.log('arr[1]', arr[1])
|
||||||
// }
|
// // return arr[1];
|
||||||
// console.log('arr[1]', arr[1])
|
// // }
|
||||||
return arr[1]
|
// // console.log('arr[1]', arr[1])
|
||||||
}
|
// return arr[1]
|
||||||
return "";
|
// }
|
||||||
|
// return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//滚动加载信息
|
//滚动加载信息
|
||||||
const scrollLoad = (e) => {
|
const scrollLoad = (e) => {
|
||||||
// console.log("滚动", e, b);
|
// console.log("滚动", e, b);
|
||||||
const { target } = e;
|
const {target} = e;
|
||||||
const scrllHeight = target.scrollHeight - target.scrollTop;
|
const scrllHeight = target.scrollHeight - target.scrollTop;
|
||||||
const clientHeight = target.clientHeight;
|
const clientHeight = target.clientHeight;
|
||||||
// console.log("scrllHeight", scrllHeight, clientHeight);
|
// console.log("scrllHeight", scrllHeight, clientHeight);
|
||||||
@@ -226,6 +229,7 @@ const scrollLoad = (e) => {
|
|||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//添加归属权
|
//添加归属权
|
||||||
function changeOwnership(classify, selectProjectId, selectPeopleArr) {
|
function changeOwnership(classify, selectProjectId, selectPeopleArr) {
|
||||||
let obj = {
|
let obj = {
|
||||||
|
|||||||
169
src/api/request.js
Normal file
169
src/api/request.js
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
import {reactive, ref, toRefs, watch} from "vue";
|
||||||
|
import axios from 'axios';
|
||||||
|
import {getCookie} from "@/api/method";
|
||||||
|
|
||||||
|
|
||||||
|
export function useBoeApiPage(_url, params = {}, config = {
|
||||||
|
init: true,
|
||||||
|
result: res => res.result,
|
||||||
|
totalPage: res => res.result.totalPage,
|
||||||
|
total: res => res.result.totalElement
|
||||||
|
}) {
|
||||||
|
|
||||||
|
const state = reactive({
|
||||||
|
data: [],
|
||||||
|
loading: false,
|
||||||
|
page: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
totalPage: 0,
|
||||||
|
total: 0
|
||||||
|
})
|
||||||
|
|
||||||
|
function fetch() {
|
||||||
|
console.log('params', params)
|
||||||
|
state.loading = true
|
||||||
|
return request(_url, params).then(r => {
|
||||||
|
state.data = config.result(r)
|
||||||
|
state.totalPage = config.totalPage(r)
|
||||||
|
state.total = config.total(r)
|
||||||
|
state.loading = false
|
||||||
|
state.page = params.page
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
config.init && fetch()
|
||||||
|
return {
|
||||||
|
...toRefs(state),
|
||||||
|
fetch,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function useBoeApi(_url, params = {}, config = {
|
||||||
|
init: true,
|
||||||
|
result: res => res.result,
|
||||||
|
}) {
|
||||||
|
|
||||||
|
const state = reactive({
|
||||||
|
data: [],
|
||||||
|
loading: false,
|
||||||
|
})
|
||||||
|
watch(() => params, () => {
|
||||||
|
fetch()
|
||||||
|
})
|
||||||
|
|
||||||
|
function fetch() {
|
||||||
|
state.loading = true
|
||||||
|
return request(_url, params).then(r => {
|
||||||
|
state.data = config.result(r)
|
||||||
|
state.loading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
config.init && fetch()
|
||||||
|
return {
|
||||||
|
...toRefs(state),
|
||||||
|
fetch,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function usePage(_url, params = {}, init = true) {
|
||||||
|
|
||||||
|
const state = reactive({
|
||||||
|
data: [],
|
||||||
|
loading: false
|
||||||
|
})
|
||||||
|
|
||||||
|
watch(params, () => {
|
||||||
|
fetch()
|
||||||
|
})
|
||||||
|
|
||||||
|
function fetch() {
|
||||||
|
state.loading = true
|
||||||
|
return request(_url, params).then(r => {
|
||||||
|
console.log('fetch')
|
||||||
|
console.log(r)
|
||||||
|
state.data = r.result
|
||||||
|
state.loading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
init && fetch()
|
||||||
|
return {
|
||||||
|
...toRefs(state),
|
||||||
|
fetch,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function useRequest(_url, params = {}, init = true) {
|
||||||
|
|
||||||
|
const data = ref({})
|
||||||
|
const loading = ref(false)
|
||||||
|
|
||||||
|
watch(params, () => {
|
||||||
|
fetchData()
|
||||||
|
})
|
||||||
|
|
||||||
|
function fetchData() {
|
||||||
|
loading.value = true
|
||||||
|
request(_url, params).then(r => {
|
||||||
|
data.value = r
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
init && fetchData()
|
||||||
|
return {
|
||||||
|
data,
|
||||||
|
loading,
|
||||||
|
fetchData,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function request(_url, params) {
|
||||||
|
const s = _url.split(' ')
|
||||||
|
let url = s[0]
|
||||||
|
const method = s[1] || 'get'
|
||||||
|
if (method === 'get') {
|
||||||
|
let paramsArray = [];
|
||||||
|
//拼接参数
|
||||||
|
if (params) {
|
||||||
|
Object.keys(params).forEach(key => paramsArray.push(key + '=' + params[key]))
|
||||||
|
if (url.search(/\?/) === -1) {
|
||||||
|
url += '?' + paramsArray.join('&')
|
||||||
|
} else {
|
||||||
|
url += '&' + paramsArray.join('&')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const body = method !== 'get' ? params || {} : {}
|
||||||
|
console.log('token', getCookie('token'))
|
||||||
|
return axios({
|
||||||
|
url,
|
||||||
|
method,
|
||||||
|
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'})
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -205,7 +205,7 @@ export default {
|
|||||||
name: "课程库",
|
name: "课程库",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "课程管理",
|
name: "面授管理",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -132,7 +132,7 @@
|
|||||||
circle: selectedKeys[0] === 'sub3-1' ? false : true,
|
circle: selectedKeys[0] === 'sub3-1' ? false : true,
|
||||||
}"
|
}"
|
||||||
></span>
|
></span>
|
||||||
<router-link to="/coursemanage">课件管理</router-link>
|
<router-link to="/coursewaremanage">面授管理</router-link>
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="sub3-2">
|
<a-menu-item key="sub3-2">
|
||||||
<span
|
<span
|
||||||
@@ -141,7 +141,16 @@
|
|||||||
circle: selectedKeys[0] === 'sub3-2' ? false : true,
|
circle: selectedKeys[0] === 'sub3-2' ? false : true,
|
||||||
}"
|
}"
|
||||||
></span>
|
></span>
|
||||||
<router-link to="/coursewaremanage">课程管理</router-link>
|
<router-link to="/onlinemanage">在线管理</router-link>
|
||||||
|
</a-menu-item>
|
||||||
|
<a-menu-item key="sub3-3">
|
||||||
|
<span
|
||||||
|
:class="{
|
||||||
|
circleActive: selectedKeys[0] === 'sub3-3' ? true : false,
|
||||||
|
circle: selectedKeys[0] === 'sub3-3' ? false : true,
|
||||||
|
}"
|
||||||
|
></span>
|
||||||
|
<router-link to="/coursemanage">课件管理</router-link>
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
</a-sub-menu>
|
</a-sub-menu>
|
||||||
|
|
||||||
@@ -370,17 +379,23 @@ export default {
|
|||||||
selectedKeys: "sub2-2",
|
selectedKeys: "sub2-2",
|
||||||
pagename: "查看",
|
pagename: "查看",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
href: "/coursemanage",
|
|
||||||
openKeys: "sub3",
|
|
||||||
selectedKeys: "sub3-1",
|
|
||||||
pagename: "课件管理",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
href: "/coursewaremanage",
|
href: "/coursewaremanage",
|
||||||
openKeys: "sub3",
|
openKeys: "sub3",
|
||||||
|
selectedKeys: "sub3-1",
|
||||||
|
pagename: "面授管理",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
href: "/onlinemanage",
|
||||||
|
openKeys: "sub3",
|
||||||
selectedKeys: "sub3-2",
|
selectedKeys: "sub3-2",
|
||||||
pagename: "课程管理",
|
pagename: "在线管理",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
href: "/coursemanage",
|
||||||
|
openKeys: "sub3",
|
||||||
|
selectedKeys: "sub3-3",
|
||||||
|
pagename: "课件管理",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
href: "/certificatecenter",
|
href: "/certificatecenter",
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
v-model:value="managerArray"
|
v-model:value="managerArray"
|
||||||
:placeholder="placeholder"
|
:placeholder="placeholder"
|
||||||
:filterOption="false"
|
:filterOption="false"
|
||||||
style="width: 100%"
|
style="width: 440px;"
|
||||||
:options="isOpen?options:selectOptions"
|
:options="isOpen?options:selectOptions"
|
||||||
allowClear
|
allowClear
|
||||||
showSearch
|
showSearch
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
:open="isOpen"
|
:open="isOpen"
|
||||||
@change="change"
|
@change="change"
|
||||||
@blur="blur"
|
@blur="blur"
|
||||||
|
:show-arrow="false"
|
||||||
>
|
>
|
||||||
<template v-if="loading" #notFoundContent>
|
<template v-if="loading" #notFoundContent>
|
||||||
<a-spin size="small"/>
|
<a-spin size="small"/>
|
||||||
|
|||||||
481
src/components/student/Student.vue
Normal file
481
src/components/student/Student.vue
Normal file
@@ -0,0 +1,481 @@
|
|||||||
|
<template>
|
||||||
|
<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>
|
||||||
|
<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>
|
||||||
|
</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="#409eff" @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="#409eff" @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="#409eff" @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>
|
||||||
|
</a-drawer>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import {computed, defineEmits, defineProps, onMounted, ref, watch} from "vue";
|
||||||
|
import {useStore} from "vuex";
|
||||||
|
import {request, useBoeApi, useBoeApiPage} from "@/api/request";
|
||||||
|
import {AUDIENCE_LIST, ORG_CHILD_LIST, ORG_LIST, USER_LIST} from "@/api/ThirdApi";
|
||||||
|
import {saveStu} from "@/api/index1";
|
||||||
|
|
||||||
|
const store = useStore();
|
||||||
|
const emit = defineEmits()
|
||||||
|
const props = defineProps({
|
||||||
|
type: Number,
|
||||||
|
visiable: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const activeKey = ref(1)
|
||||||
|
const visiableState = ref(false)
|
||||||
|
const selectsData = ref({
|
||||||
|
studentList: [],
|
||||||
|
deptList: [],
|
||||||
|
groupList: []
|
||||||
|
})
|
||||||
|
const nameSearch = ref({
|
||||||
|
keyword: '',
|
||||||
|
departId: null,
|
||||||
|
page: 1,
|
||||||
|
pageSize: 10
|
||||||
|
})
|
||||||
|
const audienceName = ref({
|
||||||
|
keyword: '',
|
||||||
|
page: 1,
|
||||||
|
pageSize: 10
|
||||||
|
})
|
||||||
|
const searchOrgName = ref({
|
||||||
|
keyword: '',
|
||||||
|
page: 1,
|
||||||
|
pageSize: 10
|
||||||
|
})
|
||||||
|
|
||||||
|
const {
|
||||||
|
data: stuData,
|
||||||
|
fetch: searchStu,
|
||||||
|
page: stuPageNo,
|
||||||
|
pageSize: stuPageSize,
|
||||||
|
loading: stuLoading,
|
||||||
|
total: stuTotal
|
||||||
|
} = useBoeApiPage(USER_LIST, nameSearch.value, {
|
||||||
|
init: true,
|
||||||
|
result: res => res.result.userInfoList,
|
||||||
|
totalPage: res => res.result.totalPage,
|
||||||
|
total: res => res.result.totalElement
|
||||||
|
})
|
||||||
|
|
||||||
|
const {
|
||||||
|
data: orgData,
|
||||||
|
fetch: searchOrg,
|
||||||
|
loading: orgLoading
|
||||||
|
} = useBoeApi(ORG_LIST, searchOrgName.value)
|
||||||
|
|
||||||
|
const {
|
||||||
|
data: audiData,
|
||||||
|
fetch: searchAudi,
|
||||||
|
page: audiPageNo,
|
||||||
|
pageSize: audiPageSize,
|
||||||
|
loading: audiLoading,
|
||||||
|
total: audiTotal
|
||||||
|
} = useBoeApiPage(AUDIENCE_LIST, audienceName.value, {
|
||||||
|
init: true,
|
||||||
|
result: res => res.result.audienceList,
|
||||||
|
totalPage: res => res.result.totalPage,
|
||||||
|
total: res => res.result.totalElement
|
||||||
|
})
|
||||||
|
|
||||||
|
const stuColumns = ref([
|
||||||
|
{
|
||||||
|
title: "姓名",
|
||||||
|
dataIndex: "realName",
|
||||||
|
key: "realName",
|
||||||
|
width: 80,
|
||||||
|
align: "center",
|
||||||
|
className: "h",
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "工号",
|
||||||
|
dataIndex: "userNo",
|
||||||
|
key: "userNo",
|
||||||
|
width: 80,
|
||||||
|
align: "center",
|
||||||
|
className: "h",
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "归属组织",
|
||||||
|
dataIndex: "orgName",
|
||||||
|
key: "orgName",
|
||||||
|
width: 80,
|
||||||
|
align: "center",
|
||||||
|
className: "h",
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "部门",
|
||||||
|
dataIndex: "departName",
|
||||||
|
key: "departName",
|
||||||
|
width: 80,
|
||||||
|
align: "center",
|
||||||
|
className: "h",
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
])
|
||||||
|
const audiColums = ref([{
|
||||||
|
title: "id",
|
||||||
|
dataIndex: "id",
|
||||||
|
key: "id",
|
||||||
|
width: 35,
|
||||||
|
align: "center",
|
||||||
|
className: "h",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "受众名称",
|
||||||
|
dataIndex: "audienceName",
|
||||||
|
key: "audienceName",
|
||||||
|
width: 30,
|
||||||
|
align: "left",
|
||||||
|
className: "h",
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "人数",
|
||||||
|
dataIndex: "totalMember",
|
||||||
|
key: "totalMember",
|
||||||
|
width: 30,
|
||||||
|
align: "center",
|
||||||
|
className: "h",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "类型",
|
||||||
|
dataIndex: "audienceType",
|
||||||
|
key: "audienceType",
|
||||||
|
width: 40,
|
||||||
|
align: "center",
|
||||||
|
className: "h",
|
||||||
|
},
|
||||||
|
])
|
||||||
|
const stuSelectKeys = ref([])
|
||||||
|
const orgSelectKeys = ref([])
|
||||||
|
const auditSelectKeys = ref([])
|
||||||
|
const screenHeight = ref(document.body.clientHeight)
|
||||||
|
const stuRowSelection = computed(() => ({
|
||||||
|
columnWidth: 20,
|
||||||
|
selectedRowKeys: stuSelectKeys.value,
|
||||||
|
onChange: onStuSelectChange,
|
||||||
|
preserveSelectedRowKeys: true,
|
||||||
|
}))
|
||||||
|
const orgRowSelection = computed(() => ({
|
||||||
|
columnWidth: 20,
|
||||||
|
selectedRowKeys: orgSelectKeys.value,
|
||||||
|
onChange: onOrgSelectChange,
|
||||||
|
preserveSelectedRowKeys: true,
|
||||||
|
}))
|
||||||
|
|
||||||
|
const stuPagination = computed(() => ({
|
||||||
|
total: stuTotal.value,
|
||||||
|
showSizeChanger: false,
|
||||||
|
current: stuPageNo.value,
|
||||||
|
pageSize: stuPageSize.value,
|
||||||
|
onChange: changePagination
|
||||||
|
}))
|
||||||
|
|
||||||
|
const auditPagination = computed(() => ({
|
||||||
|
total: audiTotal.value,
|
||||||
|
showSizeChanger: false,
|
||||||
|
current: audiPageNo.value,
|
||||||
|
pageSize: audiPageSize.value,
|
||||||
|
onChange: auditChangePagination
|
||||||
|
}))
|
||||||
|
|
||||||
|
const auditRowSelection = computed(() => ({
|
||||||
|
columnWidth: 20,
|
||||||
|
selectedRowKeys: auditSelectKeys.value,
|
||||||
|
onChange: onAuditSelectChange,
|
||||||
|
preserveSelectedRowKeys: true,
|
||||||
|
}))
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
});
|
||||||
|
|
||||||
|
const closeDrawer = () => {
|
||||||
|
|
||||||
|
};
|
||||||
|
//获取组织树
|
||||||
|
const treeData = computed(() => {
|
||||||
|
return store.state.orgtreeList ? store.state.orgtreeList : [];
|
||||||
|
});
|
||||||
|
|
||||||
|
function onSearchStu() {
|
||||||
|
nameSearch.value.page = 1
|
||||||
|
searchStu()
|
||||||
|
}
|
||||||
|
|
||||||
|
function stuStuOrgSelect(e) {
|
||||||
|
nameSearch.value.departId = e.join('')
|
||||||
|
searchStu()
|
||||||
|
}
|
||||||
|
|
||||||
|
function stuDel(i) {
|
||||||
|
stuSelectKeys.value = stuSelectKeys.value.filter(e => e !== selectsData.value.studentList[i].id)
|
||||||
|
selectsData.value.studentList.splice(i, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
request(ORG_CHILD_LIST, {orgId: null}).then(res => {
|
||||||
|
console.log(res.result)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function onStuSelectChange(e, l) {
|
||||||
|
stuSelectKeys.value = e
|
||||||
|
selectsData.value.studentList = l
|
||||||
|
}
|
||||||
|
|
||||||
|
function onOrgSelectChange(e, l) {
|
||||||
|
orgRowSelection.value = e
|
||||||
|
selectsData.value.deptList = l.selectedNodes
|
||||||
|
}
|
||||||
|
|
||||||
|
function onAuditSelectChange(e, l) {
|
||||||
|
auditSelectKeys.value = e
|
||||||
|
selectsData.value.groupList = l
|
||||||
|
}
|
||||||
|
|
||||||
|
const stuDepartmentSelect = (e) => {
|
||||||
|
nameSearch.value.orgId = e.join('')
|
||||||
|
searchStu()
|
||||||
|
};
|
||||||
|
|
||||||
|
//分页获取学员
|
||||||
|
const changePagination = (page) => {
|
||||||
|
nameSearch.value.page = page;
|
||||||
|
searchStu()
|
||||||
|
};
|
||||||
|
|
||||||
|
const auditChangePagination = (page) => {
|
||||||
|
console.log(1111111111)
|
||||||
|
console.log(page)
|
||||||
|
audienceName.value.page = page;
|
||||||
|
searchAudi()
|
||||||
|
};
|
||||||
|
|
||||||
|
//重置
|
||||||
|
const resetStu = () => {
|
||||||
|
deleteDepSelect();
|
||||||
|
nameSearch.value = {keyword: '', page: 1, pageSize: 10}
|
||||||
|
};
|
||||||
|
//清空选择部门信息
|
||||||
|
const deleteDepSelect = () => {
|
||||||
|
stuSelectKeys.value = []
|
||||||
|
};
|
||||||
|
|
||||||
|
//重置组织
|
||||||
|
const resetOrg = () => {
|
||||||
|
searchOrgName.value = {keyword: '', page: 1, pageSize: 10}
|
||||||
|
};
|
||||||
|
|
||||||
|
//重置受众
|
||||||
|
const resetAudienceInfo = () => {
|
||||||
|
audienceName.value = {keyword: '', page: 1, pageSize: 10}
|
||||||
|
};
|
||||||
|
|
||||||
|
//全部清除
|
||||||
|
const deleteAll = () => {
|
||||||
|
selectsData.value = {
|
||||||
|
studentList: [],
|
||||||
|
deptList: [],
|
||||||
|
groupList: []
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//确定添加授权
|
||||||
|
const submitAuth = () => {
|
||||||
|
emit('update:visiable', false)
|
||||||
|
saveStu(selectsData.value)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.ant-btn-primary {
|
||||||
|
background-color: #409eff !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -52,15 +52,10 @@
|
|||||||
<div class="select fitems">
|
<div class="select fitems">
|
||||||
<a-range-picker
|
<a-range-picker
|
||||||
v-model:value="projectTime"
|
v-model:value="projectTime"
|
||||||
:show-time="{
|
style="width:420px;"
|
||||||
defaultValue: [
|
|
||||||
moment('00:00:00', 'HH:mm:ss'),
|
|
||||||
moment('23:59:59', 'HH:mm:ss'),
|
|
||||||
],
|
|
||||||
}"
|
|
||||||
valueFormat="X"
|
valueFormat="X"
|
||||||
separator="至"
|
separator="至"
|
||||||
:placeholder="[' 开始时间', ' 结束时间']"
|
:placeholder="[' 开始时间(创建时间)', ' 结束时间(创建时间)']"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -741,6 +736,7 @@
|
|||||||
"
|
"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
|
style="margin-right: 24px;"
|
||||||
:class="[
|
:class="[
|
||||||
String(record.courseform) === '1'
|
String(record.courseform) === '1'
|
||||||
? 'disabled table-operation'
|
? 'disabled table-operation'
|
||||||
@@ -839,6 +835,7 @@
|
|||||||
"
|
"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
|
style="margin-right: 24px;"
|
||||||
:class="[
|
:class="[
|
||||||
String(record.courseform) === '1'
|
String(record.courseform) === '1'
|
||||||
? 'disabled table-operation'
|
? 'disabled table-operation'
|
||||||
@@ -929,6 +926,7 @@
|
|||||||
"
|
"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
|
style="margin-right: 24px;"
|
||||||
:class="[
|
:class="[
|
||||||
String(record.courseform) === '1'
|
String(record.courseform) === '1'
|
||||||
? 'disabled table-operation'
|
? 'disabled table-operation'
|
||||||
@@ -1058,6 +1056,7 @@
|
|||||||
"
|
"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
|
style="margin-right: 24px;"
|
||||||
:class="[
|
:class="[
|
||||||
String(record.courseform) === '1'
|
String(record.courseform) === '1'
|
||||||
? 'disabled table-operation'
|
? 'disabled table-operation'
|
||||||
@@ -1194,6 +1193,7 @@
|
|||||||
"
|
"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
|
style="margin-right: 24px;"
|
||||||
:class="[
|
:class="[
|
||||||
String(record.courseform) === '1'
|
String(record.courseform) === '1'
|
||||||
? 'disabled table-operation'
|
? 'disabled table-operation'
|
||||||
@@ -2754,21 +2754,21 @@ import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
|
|||||||
import { codeUrl, toDate } from "../../api/method";
|
import { codeUrl, toDate } from "../../api/method";
|
||||||
//列表表格
|
//列表表格
|
||||||
const columns1 = [
|
const columns1 = [
|
||||||
{
|
// {
|
||||||
title: "序号",
|
// title: "序号",
|
||||||
width: 100,
|
// width: 100,
|
||||||
dataIndex: "num",
|
// dataIndex: "num",
|
||||||
key: "num",
|
// key: "num",
|
||||||
align: "center",
|
// align: "center",
|
||||||
customRender: ({ index, record }) => {
|
// customRender: ({ index, record }) => {
|
||||||
const pageNum =
|
// const pageNum =
|
||||||
Number(record.pageNo) - 1 > 0 ? (Number(record.pageNo) - 1) * 10 : 0;
|
// Number(record.pageNo) - 1 > 0 ? (Number(record.pageNo) - 1) * 10 : 0;
|
||||||
return index + 1 + pageNum;
|
// return index + 1 + pageNum;
|
||||||
},
|
// },
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
title: "名称",
|
title: "名称",
|
||||||
width: 200,
|
width: 400,
|
||||||
dataIndex: "name",
|
dataIndex: "name",
|
||||||
key: "name",
|
key: "name",
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
@@ -5522,15 +5522,15 @@ export default defineComponent({
|
|||||||
.btn {
|
.btn {
|
||||||
padding: 0px 26px 0px 26px;
|
padding: 0px 26px 0px 26px;
|
||||||
height: 38px;
|
height: 38px;
|
||||||
background: rgba(64, 158, 255, 0);
|
background: #409eff;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
border: 1px solid rgba(64, 158, 255, 1);
|
border: 1px solid rgba(64, 158, 255, 1);
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-right: 14px;
|
margin-right: 14px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
@@ -5539,7 +5539,7 @@ export default defineComponent({
|
|||||||
.btnText {
|
.btnText {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: rgba(64, 158, 255, 1);
|
color: #ffffff;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
@@ -5549,7 +5549,7 @@ export default defineComponent({
|
|||||||
.search {
|
.search {
|
||||||
width: 15px;
|
width: 15px;
|
||||||
height: 17px;
|
height: 17px;
|
||||||
background-image: url("../../assets/images/courseManage/search1.png");
|
background-image: url("../../assets/images/courseManage/search0.png");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5557,7 +5557,7 @@ export default defineComponent({
|
|||||||
.search {
|
.search {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
background-image: url("../../assets/images/courseManage/reset1.png");
|
background-image: url("../../assets/images/courseManage/reset0.png");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5565,7 +5565,7 @@ export default defineComponent({
|
|||||||
.search {
|
.search {
|
||||||
width: 17px;
|
width: 17px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
background-image: url("../../assets/images/coursewareManage/export.png");
|
background-image: url("../../assets/images/coursewareManage/export1.png");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5575,12 +5575,12 @@ export default defineComponent({
|
|||||||
.search {
|
.search {
|
||||||
width: 17px;
|
width: 17px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
background-image: url("../../assets/images/courseManage/add1.png");
|
background-image: url("../../assets/images/courseManage/add0.png");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn1:hover {
|
.btn1:hover {
|
||||||
background: rgba(64, 158, 255, 1);
|
background: rgba(64, 158, 255, 0.76);
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
background-image: url("../../assets/images/courseManage/search0.png");
|
background-image: url("../../assets/images/courseManage/search0.png");
|
||||||
@@ -5592,7 +5592,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn2:hover {
|
.btn2:hover {
|
||||||
background: rgba(64, 158, 255, 1);
|
background: rgba(64, 158, 255, 0.76);
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
background-image: url("../../assets/images/courseManage/reset0.png");
|
background-image: url("../../assets/images/courseManage/reset0.png");
|
||||||
@@ -5604,7 +5604,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn3:hover {
|
.btn3:hover {
|
||||||
background: rgba(64, 158, 255, 1);
|
background: rgba(64, 158, 255, 0.76);
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
background-image: url("../../assets/images/coursewareManage/export1.png");
|
background-image: url("../../assets/images/coursewareManage/export1.png");
|
||||||
@@ -5616,7 +5616,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn4:hover {
|
.btn4:hover {
|
||||||
background: rgba(64, 158, 255, 1);
|
background: rgba(64, 158, 255, 0.76);
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
background-image: url("../../assets/images/courseManage/add0.png");
|
background-image: url("../../assets/images/courseManage/add0.png");
|
||||||
@@ -5627,11 +5627,23 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tableBox {
|
.tableBox {
|
||||||
margin: 20px 38px 30px;
|
margin: 20px 38px 30px;
|
||||||
|
|
||||||
|
th {
|
||||||
|
background-color: #eff4fc !important;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-table-tbody
|
||||||
|
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
||||||
|
> td {
|
||||||
|
background: #f6f9fd;
|
||||||
|
}
|
||||||
|
|
||||||
.operation {
|
.operation {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@@ -7389,7 +7401,12 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ant-table-thead > tr > th {
|
.ant-table-thead > tr > th {
|
||||||
background-color: rgba(239, 244, 252, 1);
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #999ba3;
|
||||||
|
line-height: 36px;
|
||||||
|
padding: 5px 16px;
|
||||||
|
background-color: #eff4fc !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
th.h {
|
th.h {
|
||||||
@@ -7690,7 +7707,12 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ant-table-thead > tr > th {
|
.ant-table-thead > tr > th {
|
||||||
background-color: rgba(239, 244, 252, 1);
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #999ba3;
|
||||||
|
line-height: 36px;
|
||||||
|
padding: 5px 16px;
|
||||||
|
background-color: #eff4fc !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
th.h {
|
th.h {
|
||||||
|
|||||||
53
src/views/courselibrary/OnlineManage.vue
Normal file
53
src/views/courselibrary/OnlineManage.vue
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: lixg lixg@dongwu-inc.com
|
||||||
|
* @Date: 2022-11-09 09:26:26
|
||||||
|
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||||
|
* @LastEditTime: 2022-11-25 17:37:05
|
||||||
|
* @FilePath: /fe-manage/src/views/courselibrary/CourseManage.vue
|
||||||
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
|
-->
|
||||||
|
<!-- 课件管理页面 -->
|
||||||
|
<!-- sandbox="allow-forms allow-scripts allow-same-origin allow-popups" -->
|
||||||
|
<template>
|
||||||
|
<div class="courseManage">
|
||||||
|
<iframe
|
||||||
|
id="iframe"
|
||||||
|
style="width: 100%; height: 100%"
|
||||||
|
:src="iframeUrl + '/course/manages'"
|
||||||
|
frameborder="0"
|
||||||
|
name="myframe"
|
||||||
|
security="restricted"
|
||||||
|
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
|
||||||
|
></iframe>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { reactive, toRefs, onMounted } from "vue";
|
||||||
|
import { iframeUrl } from "../../api/method";
|
||||||
|
export default {
|
||||||
|
name: "OnlineManage",
|
||||||
|
|
||||||
|
setup() {
|
||||||
|
const state = reactive({
|
||||||
|
iframeUrl: iframeUrl,
|
||||||
|
});
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
// console.log("执行");
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
...toRefs(state),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.courseManage {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
Reference in New Issue
Block a user