mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-13 12:56:45 +08:00
Merge branch 'develop' of ssh://gitlab.dongwu-inc.com:10022/BOE/fe-manage into develop
This commit is contained in:
36
src/App.vue
36
src/App.vue
@@ -29,7 +29,7 @@ import BreadCrumb from "@/components/BreadCrumb";
|
|||||||
import zhCN from "ant-design-vue/es/locale/zh_CN";
|
import zhCN from "ant-design-vue/es/locale/zh_CN";
|
||||||
import * as api from "./api/index1";
|
import * as api from "./api/index1";
|
||||||
import * as api1 from "@/api/index1";
|
import * as api1 from "@/api/index1";
|
||||||
|
import * as api2 from "@/api/index";
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: {
|
components: {
|
||||||
NavLeft,
|
NavLeft,
|
||||||
@@ -43,22 +43,20 @@ export default defineComponent({
|
|||||||
const store = useStore();
|
const store = useStore();
|
||||||
const isLogin = ref(false);
|
const isLogin = ref(false);
|
||||||
// console.log("router", router.getRoutes(), route);
|
// console.log("router", router.getRoutes(), route);
|
||||||
console.log("版本0.11------------");
|
console.log("版本0.13------------");
|
||||||
const routes = computed(() => {
|
const routes = computed(() => {
|
||||||
return router.getRoutes().filter((e) => e.meta?.isLink);
|
return router.getRoutes().filter((e) => e.meta?.isLink);
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => route.path,
|
() => route.path,
|
||||||
() => {
|
() => {
|
||||||
route.path === "/login" && (isLogin.value = true);
|
route.path === "/login" && (isLogin.value = true);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
const currentRouteName = computed(() => route.name);
|
const currentRouteName = computed(() => route.name);
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
console.log(store);
|
console.log(store);
|
||||||
|
getUserInfo();
|
||||||
initDict("faceclassPic");
|
initDict("faceclassPic");
|
||||||
initDict("faceclassClass");
|
initDict("faceclassClass");
|
||||||
initDict("faceclassScene");
|
initDict("faceclassScene");
|
||||||
@@ -67,9 +65,25 @@ export default defineComponent({
|
|||||||
initDict("pathmapPic");
|
initDict("pathmapPic");
|
||||||
initDict("projectClass");
|
initDict("projectClass");
|
||||||
initDict("projectPic");
|
initDict("projectPic");
|
||||||
|
getMemberInfo();
|
||||||
getOrgTree();
|
getOrgTree();
|
||||||
}
|
}
|
||||||
|
async function getMemberInfo() {
|
||||||
|
const list = localStorage.getItem("memberInitInfo");
|
||||||
|
if (list) {
|
||||||
|
store.commit("SET_MEMBER_INFO", JSON.parse(list));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const memberInitInfo = await api1
|
||||||
|
.getMemberInfo({ keyWord: "", pageNo: 1, pageSize: 10 })
|
||||||
|
.then((res) => res.data.data.rows);
|
||||||
|
store.commit("SET_MEMBER_INFO", memberInitInfo);
|
||||||
|
localStorage.setItem("memberInitInfo", JSON.stringify(memberInitInfo));
|
||||||
|
}
|
||||||
|
async function getUserInfo() {
|
||||||
|
const userInfo = await api2.userInfo();
|
||||||
|
store.commit("SET_USER", userInfo);
|
||||||
|
}
|
||||||
async function initDict(key) {
|
async function initDict(key) {
|
||||||
let list = localStorage.getItem(key);
|
let list = localStorage.getItem(key);
|
||||||
if (list) {
|
if (list) {
|
||||||
@@ -80,7 +94,6 @@ export default defineComponent({
|
|||||||
localStorage.setItem(key, JSON.stringify(list));
|
localStorage.setItem(key, JSON.stringify(list));
|
||||||
store.commit("SET_DICT", { key, data: list });
|
store.commit("SET_DICT", { key, data: list });
|
||||||
}
|
}
|
||||||
|
|
||||||
const getDictList = (param) =>
|
const getDictList = (param) =>
|
||||||
api1
|
api1
|
||||||
.getDict({
|
.getDict({
|
||||||
@@ -89,7 +102,6 @@ export default defineComponent({
|
|||||||
setCode: param,
|
setCode: param,
|
||||||
})
|
})
|
||||||
.then((res) => res.data.data.rows);
|
.then((res) => res.data.data.rows);
|
||||||
|
|
||||||
//获取组织树
|
//获取组织树
|
||||||
const getOrgTree = () => {
|
const getOrgTree = () => {
|
||||||
const orgtreeList = localStorage.getItem("orgtreeList");
|
const orgtreeList = localStorage.getItem("orgtreeList");
|
||||||
@@ -117,9 +129,7 @@ export default defineComponent({
|
|||||||
console.log("组织树获取失败", err);
|
console.log("组织树获取失败", err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
init();
|
init();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
isLogin,
|
isLogin,
|
||||||
routes,
|
routes,
|
||||||
@@ -140,17 +150,14 @@ export default defineComponent({
|
|||||||
color: #2c3e50;
|
color: #2c3e50;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#container {
|
#container {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-width: 1000px;
|
min-width: 1000px;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
background-color: rgba(245, 247, 250, 1);
|
background-color: rgba(245, 247, 250, 1);
|
||||||
|
|
||||||
main {
|
main {
|
||||||
height: 0;
|
height: 0;
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
@@ -166,7 +173,6 @@ export default defineComponent({
|
|||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
|
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
|
||||||
}
|
}
|
||||||
|
|
||||||
// @media screen and (max-width: 1366px) {
|
// @media screen and (max-width: 1366px) {
|
||||||
// .cmMain {
|
// .cmMain {
|
||||||
// width: 750px;
|
// width: 750px;
|
||||||
@@ -188,4 +194,4 @@ export default defineComponent({
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -2,10 +2,11 @@
|
|||||||
* @Author: lixg lixg@dongwu-inc.com
|
* @Author: lixg lixg@dongwu-inc.com
|
||||||
* @Date: 2022-11-21 14:32:52
|
* @Date: 2022-11-21 14:32:52
|
||||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||||
* @LastEditTime: 2022-12-02 17:13:55
|
* @LastEditTime: 2022-12-04 13:27:07
|
||||||
* @FilePath: /fe-manage/src/api/config.js
|
* @FilePath: /fe-manage/src/api/config.js
|
||||||
* @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
|
||||||
*/
|
*/
|
||||||
|
import { message } from "ant-design-vue";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
// import { getCookie } from '../api/method'
|
// import { getCookie } from '../api/method'
|
||||||
// const Qs = require("qs");
|
// const Qs = require("qs");
|
||||||
@@ -23,6 +24,7 @@ const http = axios.create({
|
|||||||
|
|
||||||
http.interceptors.request.use(
|
http.interceptors.request.use(
|
||||||
(config) => {
|
(config) => {
|
||||||
|
// console.log('config', config)
|
||||||
// const token = localStorage.getItem("token");
|
// const token = localStorage.getItem("token");
|
||||||
// // const token = getCookie('token')
|
// // const token = getCookie('token')
|
||||||
// // console.log('token', token)
|
// // console.log('token', token)
|
||||||
@@ -54,12 +56,17 @@ http.interceptors.response.use(
|
|||||||
} else {
|
} else {
|
||||||
if (code === 1000) {
|
if (code === 1000) {
|
||||||
// window.open("https://u-pre.boe.com/web/", '_self');
|
// window.open("https://u-pre.boe.com/web/", '_self');
|
||||||
|
// window.open("http://111.231.196.214:12013/manage/login", '_self');
|
||||||
}
|
}
|
||||||
console.log("api %o", msg);
|
console.log("api %o", msg);
|
||||||
}
|
}
|
||||||
return response;
|
return response;
|
||||||
},
|
},
|
||||||
function (error) {
|
function (error) {
|
||||||
|
if (error.message == "timeout of 1ms exceeded") {
|
||||||
|
message.destroy()
|
||||||
|
message.error("请求超时")
|
||||||
|
}
|
||||||
console.log("api error %o", error);
|
console.log("api error %o", error);
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,28 +18,28 @@ import http from "./config";
|
|||||||
* name: user
|
* name: user
|
||||||
* }
|
* }
|
||||||
* }).then(res => console.log(res))
|
* }).then(res => console.log(res))
|
||||||
*
|
*
|
||||||
* 接口传参三种方式(post/put/patch)
|
* 接口传参三种方式(post/put/patch)
|
||||||
*
|
*
|
||||||
* 1.'Content-Type'= 'multipart/form-data',传参格式为 formData。
|
* 1.'Content-Type'= 'multipart/form-data',传参格式为 formData。
|
||||||
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')
|
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')
|
||||||
* (request的Header:'Content-Type'= 'multipart/form-data')
|
* (request的Header:'Content-Type'= 'multipart/form-data')
|
||||||
* var formData=new FormData();
|
* var formData=new FormData();
|
||||||
* formData.append('user',123456);formData.append('pass',12345678);
|
* formData.append('user',123456);formData.append('pass',12345678);
|
||||||
* axios.post("/notice",formData).then()
|
* axios.post("/notice",formData).then()
|
||||||
*
|
*
|
||||||
* 2.'Content-Type'= 'application/x-www-form-urlencoded',传参格式为 query 形式,使用$qs.stringify。
|
* 2.'Content-Type'= 'application/x-www-form-urlencoded',传参格式为 query 形式,使用$qs.stringify。
|
||||||
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')
|
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')
|
||||||
* (request的Header:'Content-Type'= 'application/x-www-form-urlencoded')
|
* (request的Header:'Content-Type'= 'application/x-www-form-urlencoded')
|
||||||
* let data = {"code":"1234","name":"yyyy"};
|
* let data = {"code":"1234","name":"yyyy"};
|
||||||
* axios.post(`${this.$url}/test/testRequest`,qs.stringify({data})).then()
|
* axios.post(`${this.$url}/test/testRequest`,qs.stringify({data})).then()
|
||||||
*
|
*
|
||||||
* 3.'Content-Type'= 'application/json,传参格式为 raw (JSON格式)。
|
* 3.'Content-Type'= 'application/json,传参格式为 raw (JSON格式)。
|
||||||
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')
|
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')
|
||||||
* (request的Header:'Content-Type'= 'application/json;charset=UTF-8')
|
* (request的Header:'Content-Type'= 'application/json;charset=UTF-8')
|
||||||
* let data = {"code":"1234","name":"yyyy"}
|
* let data = {"code":"1234","name":"yyyy"}
|
||||||
* axios.post(`${this.$url}/test/testRequest`,data).then()
|
* axios.post(`${this.$url}/test/testRequest`,data).then()
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ export const createProject = (obj) => http.post('/admin/project/edit', obj)
|
|||||||
export const getProjectList = (obj) => http.post('/admin/project/list', obj)
|
export const getProjectList = (obj) => http.post('/admin/project/list', obj)
|
||||||
|
|
||||||
// 获取项目详情信息(包含阶段及任务列表)
|
// 获取项目详情信息(包含阶段及任务列表)
|
||||||
export const getProjectDetail = (obj) => http.get('/admin/project/detail', { params: obj })
|
export const getProjectDetail = (obj) => http.get('/admin/project/detail', {params: obj})
|
||||||
//发布项目
|
//发布项目
|
||||||
export const releaseProject = (obj) => http.post('/admin/project/publish', obj)
|
export const releaseProject = (obj) => http.post('/admin/project/publish', obj)
|
||||||
//获取项目学员
|
//获取项目学员
|
||||||
@@ -70,10 +70,11 @@ export const getDiscussDetail = (obj) => http.post('/discuss/getDiscussDetail',
|
|||||||
//获取模版列表
|
//获取模版列表
|
||||||
export const getTemplate = (obj) => http.post('/admin/project/template/list', obj)
|
export const getTemplate = (obj) => http.post('/admin/project/template/list', obj)
|
||||||
//获取模版详细信息
|
//获取模版详细信息
|
||||||
export const getTemplateDetail = (obj) => http.get('/admin/project/template/detail', { params: obj })
|
export const getTemplateDetail = (obj) => http.get('/admin/project/template/detail', {params: obj})
|
||||||
|
|
||||||
//获取项目统计
|
//获取项目统计
|
||||||
export const getProjectCount = (projectId) => http.get('/admin/project/projectCount', { params: { projectId: projectId } })
|
export const getProjectCount = (projectId) => http.get('/admin/project/projectCount', {params: {projectId: projectId}})
|
||||||
|
|
||||||
export const login = (obj) => http.post('/admin/CheckUser/userLogin', obj)
|
export const login = (obj) => http.post('/admin/CheckUser/userLogin', obj)
|
||||||
|
export const userInfo = () => http.get('/admin/CheckUser/userInfo')
|
||||||
|
|
||||||
|
|||||||
BIN
src/assets/images/leveladd/pinggu.png
Normal file
BIN
src/assets/images/leveladd/pinggu.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
BIN
src/assets/images/leveladd/xiangmu.png
Normal file
BIN
src/assets/images/leveladd/xiangmu.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 785 B |
@@ -2,8 +2,8 @@
|
|||||||
<div class="navTop">
|
<div class="navTop">
|
||||||
<div class="navTopMain">
|
<div class="navTopMain">
|
||||||
<img
|
<img
|
||||||
style="width: 205px; height: 29px; margin-left: 37px; margin-top: 22px"
|
style="width: 205px; height: 29px; margin-left: 37px; margin-top: 22px"
|
||||||
src="../assets/images/navtop/logo.png"
|
src="../assets/images/navtop/logo.png"
|
||||||
/>
|
/>
|
||||||
<div class="navTopRight">
|
<div class="navTopRight">
|
||||||
<div class="role">
|
<div class="role">
|
||||||
@@ -11,10 +11,10 @@
|
|||||||
<div class="roleArrow"></div>
|
<div class="roleArrow"></div>
|
||||||
<div class="roleItems">
|
<div class="roleItems">
|
||||||
<div
|
<div
|
||||||
v-for="(value, index) in roleList"
|
v-for="(value, index) in roleList"
|
||||||
:key="index"
|
:key="index"
|
||||||
class="roleItem"
|
class="roleItem"
|
||||||
@click="changeRole(value)"
|
@click="changeRole(value)"
|
||||||
>
|
>
|
||||||
{{ value.name }}
|
{{ value.name }}
|
||||||
</div>
|
</div>
|
||||||
@@ -22,14 +22,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="user">
|
<div class="user">
|
||||||
<img
|
<img
|
||||||
style="
|
style="
|
||||||
width: 40px;
|
width: 40px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
border-radius: 15px;
|
border-radius: 15px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
"
|
"
|
||||||
:src="avatar"
|
:src="avatar"
|
||||||
/>
|
/>
|
||||||
<div style="margin-right: 20px">{{ username }}</div>
|
<div style="margin-right: 20px">{{ username }}</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -47,20 +47,21 @@
|
|||||||
</div> -->
|
</div> -->
|
||||||
<div class="signOutMain" @click="logOut">
|
<div class="signOutMain" @click="logOut">
|
||||||
<img
|
<img
|
||||||
style="width: 27px; height: 27px"
|
style="width: 27px; height: 27px"
|
||||||
src="../assets/images/navtop/signout.png"
|
src="../assets/images/navtop/signout.png"
|
||||||
/>
|
/>
|
||||||
<span class="signOut">登出</span>
|
<span class="signOut">登出</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<down-load v-model:downloadVisible="visible" />
|
<down-load v-model:downloadVisible="visible"/>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { reactive, toRefs } from "vue";
|
import {reactive, toRefs} from "vue";
|
||||||
import DownLoad from "../components/drawers/DownLoad";
|
import DownLoad from "../components/drawers/DownLoad";
|
||||||
import * as api from "../api/index1";
|
import * as api from "../api/index1";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "NavTop",
|
name: "NavTop",
|
||||||
components: {
|
components: {
|
||||||
@@ -100,24 +101,32 @@ export default {
|
|||||||
};
|
};
|
||||||
const getUser = () => {
|
const getUser = () => {
|
||||||
api
|
api
|
||||||
.getUser()
|
.getUser()
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
console.log("获取登录信息成功", res);
|
console.log("获取登录信息成功", res);
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
state.username = res.data.data.realName;
|
state.username = res.data.data.realName;
|
||||||
// state.avatar = res.data.data.avatar
|
// state.avatar = res.data.data.avatar
|
||||||
// ? res.data.data.avatar
|
// ? res.data.data.avatar
|
||||||
// : require("../assets/images/avatar.png");
|
// : require("../assets/images/avatar.png");
|
||||||
state.avatar = require("../assets/images/avatar.png");
|
state.avatar = require("../assets/images/avatar.png");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log("获取登录信息失败", err);
|
console.log("获取登录信息失败", err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
getUser();
|
getUser();
|
||||||
|
|
||||||
const logOut = () => {
|
const logOut = () => {
|
||||||
|
localStorage.removeItem('faceclassPic');
|
||||||
|
localStorage.removeItem('faceclassClass');
|
||||||
|
localStorage.removeItem('faceclassScene');
|
||||||
|
localStorage.removeItem('projectLevel');
|
||||||
|
localStorage.removeItem('projectSys');
|
||||||
|
localStorage.removeItem('pathmapPic');
|
||||||
|
localStorage.removeItem('projectClass');
|
||||||
|
localStorage.removeItem('projectPic');
|
||||||
window.open("https://u-pre.boe.com/web/", "_self");
|
window.open("https://u-pre.boe.com/web/", "_self");
|
||||||
};
|
};
|
||||||
return {
|
return {
|
||||||
@@ -142,9 +151,11 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
background-color: rgba(255, 255, 255, 1);
|
background-color: rgba(255, 255, 255, 1);
|
||||||
|
|
||||||
.navTopRight {
|
.navTopRight {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.role {
|
.role {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -154,6 +165,7 @@ export default {
|
|||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.roleArrow {
|
.roleArrow {
|
||||||
width: 13px;
|
width: 13px;
|
||||||
height: 7px;
|
height: 7px;
|
||||||
@@ -161,6 +173,7 @@ export default {
|
|||||||
background-image: url(../assets/images/navtop/down.png);
|
background-image: url(../assets/images/navtop/down.png);
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.roleItems {
|
.roleItems {
|
||||||
width: 109px;
|
width: 109px;
|
||||||
height: 90px;
|
height: 90px;
|
||||||
@@ -174,22 +187,27 @@ export default {
|
|||||||
display: none;
|
display: none;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
.roleItem {
|
.roleItem {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: rgba(79, 81, 86, 1);
|
color: rgba(79, 81, 86, 1);
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.roleItem:hover {
|
.roleItem:hover {
|
||||||
color: #4ea6ff;
|
color: #4ea6ff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.role:hover .roleItems {
|
.role:hover .roleItems {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.role:hover .roleArrow {
|
.role:hover .roleArrow {
|
||||||
background-image: url(../assets/images/navtop/up.png);
|
background-image: url(../assets/images/navtop/up.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
.user {
|
.user {
|
||||||
margin-left: 37px;
|
margin-left: 37px;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -199,12 +217,14 @@ export default {
|
|||||||
color: #b3bdc4;
|
color: #b3bdc4;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.signOutMain {
|
.signOutMain {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin-right: 29px;
|
margin-right: 29px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.signOut {
|
.signOut {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<button class="xkbtn" @click="showDrawerSelFacet">
|
<button class="xkbtn" @click="showDrawerSelFacet">
|
||||||
{{ chooseCourse == null ? "选择" : 重选 }}面授课
|
{{ chooseCourse == null ? "选择" : "重选" }}面授课
|
||||||
</button>
|
</button>
|
||||||
<div v-if="chooseCourse">
|
<div v-if="chooseCourse">
|
||||||
<a-tag closable color="processing" @close="logC">
|
<a-tag closable color="processing" @close="logC">
|
||||||
@@ -209,7 +209,7 @@
|
|||||||
<button class="xkbtn">配置</button>
|
<button class="xkbtn">配置</button>
|
||||||
<div v-if="EditWorkId > 0">
|
<div v-if="EditWorkId > 0">
|
||||||
<a-tag closable color="processing" @close="logW">
|
<a-tag closable color="processing" @close="logW">
|
||||||
<span style="font-size:14px;line-height: 33px;">删除作业{{EditWorkId}}</span>
|
<span style="font-size:14px;line-height: 33px;">删除作业</span>
|
||||||
</a-tag>
|
</a-tag>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -233,7 +233,7 @@
|
|||||||
<button class="xkbtn">配置</button>
|
<button class="xkbtn">配置</button>
|
||||||
<div v-if="EditTestId > 0">
|
<div v-if="EditTestId > 0">
|
||||||
<a-tag closable color="processing" @close="logT">
|
<a-tag closable color="processing" @close="logT">
|
||||||
<span style="font-size:14px;line-height: 33px;">删除考试{{EditTestId}}</span>
|
<span style="font-size:14px;line-height: 33px;">删除考试</span>
|
||||||
</a-tag>
|
</a-tag>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-form-item has-feedback label="作业名称" name="workName">
|
<a-form-item has-feedback label="作业名称" name="workName">
|
||||||
<a-input
|
<a-input
|
||||||
|
|
||||||
v-model:value="formState.workName"
|
v-model:value="formState.workName"
|
||||||
style="width: 424px; height: 32px; margin-left: 35px"
|
style="width: 424px; height: 32px; margin-left: 35px"
|
||||||
placeholder="请输入作业名称"
|
placeholder="请输入作业名称"
|
||||||
@@ -49,10 +50,12 @@
|
|||||||
placeholder="请输入作业要求"
|
placeholder="请输入作业要求"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
allow-clear
|
allow-clear
|
||||||
|
|
||||||
:rows="6"
|
:rows="6"
|
||||||
style="margin-left: 35px"
|
style="margin-left: 35px"
|
||||||
show-count :maxlength="200"
|
show-count :maxlength="200"
|
||||||
/></div>
|
/></div>
|
||||||
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="main_item">
|
<div class="main_item">
|
||||||
|
|||||||
@@ -202,7 +202,7 @@
|
|||||||
<div class="signbox"></div>
|
<div class="signbox"></div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<button class="xkbtn" @click="showAssessment">选择评估</button>
|
<button class="xkbtn" @click="showAssessment">选择评估</button>
|
||||||
<div v-if="(assessmentId !== '0')">
|
<div v-if="(assessmentId > 0)">
|
||||||
<a-tag closable @close="removePG" color="processing">
|
<a-tag closable @close="removePG" color="processing">
|
||||||
<span style="font-size: 14px; line-height: 33px"
|
<span style="font-size: 14px; line-height: 33px"
|
||||||
>删除评估</span
|
>删除评估</span
|
||||||
@@ -596,10 +596,11 @@ export default {
|
|||||||
};
|
};
|
||||||
const showAssessment = () => {
|
const showAssessment = () => {
|
||||||
state.assessmentVisible = true;
|
state.assessmentVisible = true;
|
||||||
console.log("hshs======", state.assessmentVisible);
|
|
||||||
};
|
};
|
||||||
//创建直播
|
//创建直播
|
||||||
const updateLiveBroadcast = () => {
|
const updateLiveBroadcast = () => {
|
||||||
|
console.log("hshs======", state.memberValue);
|
||||||
if (!state.inputV1) {
|
if (!state.inputV1) {
|
||||||
message.destroy();
|
message.destroy();
|
||||||
return message.warning("请输入直播名称");
|
return message.warning("请输入直播名称");
|
||||||
@@ -612,6 +613,14 @@ export default {
|
|||||||
message.destroy();
|
message.destroy();
|
||||||
return message.warning("请输入直播时长");
|
return message.warning("请输入直播时长");
|
||||||
}
|
}
|
||||||
|
if (state.memberValue.value=="") {
|
||||||
|
message.destroy();
|
||||||
|
return message.warning("请选择授课教师");
|
||||||
|
}
|
||||||
|
if (!state.imageUrl) {
|
||||||
|
message.destroy();
|
||||||
|
return message.warning("请上传封面");
|
||||||
|
}
|
||||||
const regular = /^[+]{0,1}(\d+)$/;
|
const regular = /^[+]{0,1}(\d+)$/;
|
||||||
if (!regular.test(state.inputV2)) {
|
if (!regular.test(state.inputV2)) {
|
||||||
message.destroy();
|
message.destroy();
|
||||||
|
|||||||
@@ -115,26 +115,20 @@
|
|||||||
</a-menu>
|
</a-menu>
|
||||||
</template>
|
</template>
|
||||||
</a-dropdown> -->
|
</a-dropdown> -->
|
||||||
<span style="margin-left: 10px">
|
|
||||||
<a-tag
|
<a-tag v-if="paperName != ''" closable color="processing" @close="delTag">
|
||||||
class="tag-style"
|
<span style="font-size:14px;line-height: 33px;">删除考试</span>
|
||||||
v-if="paperName != ''"
|
</a-tag>
|
||||||
:closable="true"
|
|
||||||
@close="delTag"
|
|
||||||
>{{ paperName }}</a-tag
|
|
||||||
>
|
|
||||||
<!-- <a-tag
|
|
||||||
class="tag-style"
|
|
||||||
v-for="item in choosedTestList"
|
|
||||||
:closable="true"
|
|
||||||
@close="closeTag(item.key)"
|
|
||||||
:key="item.key"
|
|
||||||
>{{ item.value }}</a-tag
|
|
||||||
> -->
|
|
||||||
</span>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main_item">
|
<div class="main_item">
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-form-item has-feedback label="考试时间" name="choosedTime">
|
<a-form-item has-feedback label="考试时间" name="choosedTime">
|
||||||
@@ -525,6 +519,7 @@ export default {
|
|||||||
return Promise.reject("请选择时间");
|
return Promise.reject("请选择时间");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let checkExaminationDuration = async (_rule, value) => {
|
let checkExaminationDuration = async (_rule, value) => {
|
||||||
if (!value) {
|
if (!value) {
|
||||||
return Promise.reject("请输入考试时长");
|
return Promise.reject("请输入考试时长");
|
||||||
@@ -674,7 +669,7 @@ export default {
|
|||||||
state.paperName = "";
|
state.paperName = "";
|
||||||
};
|
};
|
||||||
const queryTest = () => {
|
const queryTest = () => {
|
||||||
state.addLoading = true;
|
// state.addLoading = true;
|
||||||
queryExaminationDetailById({ examinationId: props.EditTestId })
|
queryExaminationDetailById({ examinationId: props.EditTestId })
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
formState.examinationName = res.data.data.examinationName;
|
formState.examinationName = res.data.data.examinationName;
|
||||||
@@ -729,9 +724,13 @@ export default {
|
|||||||
scoringModel: formState.scoringModel,
|
scoringModel: formState.scoringModel,
|
||||||
showAnalysis: formState.showAnalysis,
|
showAnalysis: formState.showAnalysis,
|
||||||
showAnswers: formState.showAnswers,
|
showAnswers: formState.showAnswers,
|
||||||
examinationTestId: state.id,
|
examinationTestId: state.paperId,
|
||||||
examinationTestName: state.testName,
|
examinationTestName: state.paperName,
|
||||||
};
|
};
|
||||||
|
if(!(state.paperId >0)){
|
||||||
|
message.destroy();
|
||||||
|
return message.error("请选择考试");
|
||||||
|
}
|
||||||
if (props.edit) {
|
if (props.edit) {
|
||||||
// 编辑任务
|
// 编辑任务
|
||||||
updateExamination(obj)
|
updateExamination(obj)
|
||||||
@@ -740,6 +739,7 @@ export default {
|
|||||||
closeDrawer();
|
closeDrawer();
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
|
message.destroy();
|
||||||
message.error(`编辑失败`);
|
message.error(`编辑失败`);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@@ -750,6 +750,7 @@ export default {
|
|||||||
closeDrawer();
|
closeDrawer();
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
|
message.destroy();
|
||||||
message.error(`创建失败`);
|
message.error(`创建失败`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -860,6 +861,7 @@ export default {
|
|||||||
state.id = value.id;
|
state.id = value.id;
|
||||||
state.testName = value.testName;
|
state.testName = value.testName;
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
formState,
|
formState,
|
||||||
afterVisibleChange,
|
afterVisibleChange,
|
||||||
@@ -885,6 +887,7 @@ export default {
|
|||||||
chooseTest,
|
chooseTest,
|
||||||
closeTag,
|
closeTag,
|
||||||
getData,
|
getData,
|
||||||
|
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -79,7 +79,6 @@
|
|||||||
<div class="chooseLeft">
|
<div class="chooseLeft">
|
||||||
<div class="boeTree">
|
<div class="boeTree">
|
||||||
<div class="boeTreeTitle">BOE组织树</div>
|
<div class="boeTreeTitle">BOE组织树</div>
|
||||||
|
|
||||||
<a-tree
|
<a-tree
|
||||||
v-model:value="valueSelectboe"
|
v-model:value="valueSelectboe"
|
||||||
class="treeMain"
|
class="treeMain"
|
||||||
@@ -110,14 +109,14 @@
|
|||||||
style="border: 1px solid #f2f6fe"
|
style="border: 1px solid #f2f6fe"
|
||||||
:columns="tablecolumns"
|
:columns="tablecolumns"
|
||||||
:data-source="tabledata"
|
:data-source="tabledata"
|
||||||
:loading="tableDataTotal === -1 ? true : false"
|
:loading="loading"
|
||||||
expandRowByClick="true"
|
|
||||||
@expand="expandTable"
|
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
|
rowKey="id"
|
||||||
:row-selection="{
|
:row-selection="{
|
||||||
columnWidth: 20,
|
columnWidth: 20,
|
||||||
selectedRowKeys: selectedRowKeys,
|
selectedRowKeys: selectedRowKeys,
|
||||||
onChange: onSelectChange,
|
onChange: onSelectChange,
|
||||||
|
preserveSelectedRowKeys: true,
|
||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
<div class="pa">
|
<div class="pa">
|
||||||
@@ -206,7 +205,6 @@
|
|||||||
>
|
>
|
||||||
<template #suffixIcon></template>
|
<template #suffixIcon></template>
|
||||||
</a-tree>
|
</a-tree>
|
||||||
|
|
||||||
<a-tree
|
<a-tree
|
||||||
v-else-if="isSearchOrg"
|
v-else-if="isSearchOrg"
|
||||||
class="treeMain treeMain2"
|
class="treeMain treeMain2"
|
||||||
@@ -288,7 +286,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- <div class="line">
|
<!-- <div class="line">
|
||||||
<div class="inline">
|
<div class="inline">
|
||||||
<div class="left1">
|
<div class="left1">
|
||||||
@@ -316,6 +313,7 @@
|
|||||||
columnWidth: 30,
|
columnWidth: 30,
|
||||||
selectedRowKeys: selectedRowKeys2,
|
selectedRowKeys: selectedRowKeys2,
|
||||||
onChange: onSelectChange2,
|
onChange: onSelectChange2,
|
||||||
|
preserveSelectedRowKeys: true,
|
||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
<div class="pa" style="margin-top: 20px">
|
<div class="pa" style="margin-top: 20px">
|
||||||
@@ -356,7 +354,7 @@
|
|||||||
<div class="selecteds" id="selecteds">
|
<div class="selecteds" id="selecteds">
|
||||||
<!-- 遍历生成 -->
|
<!-- 遍历生成 -->
|
||||||
<div class="chose" v-for="item in choosepeople" :key="item.key">
|
<div class="chose" v-for="item in choosepeople" :key="item.key">
|
||||||
<div>{{ item.name }}</div>
|
<div>{{ item.name || item.realName }}</div>
|
||||||
<div class="ch" @click="deleteChoosePeople(item)"></div>
|
<div class="ch" @click="deleteChoosePeople(item)"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -541,7 +539,6 @@
|
|||||||
<button class="btn2" @click="submitAuth">确定</button>
|
<button class="btn2" @click="submitAuth">确定</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 确认添加部门弹窗 -->
|
<!-- 确认添加部门弹窗 -->
|
||||||
<a-modal
|
<a-modal
|
||||||
v-model:visible="showOrgModal"
|
v-model:visible="showOrgModal"
|
||||||
@@ -574,7 +571,6 @@
|
|||||||
<!-- 确认添加部门弹窗 -->
|
<!-- 确认添加部门弹窗 -->
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { reactive, toRefs, onMounted, onUnmounted, computed } from "vue";
|
import { reactive, toRefs, onMounted, onUnmounted, computed } from "vue";
|
||||||
import elementResizeDetectorMaker from "element-resize-detector";
|
import elementResizeDetectorMaker from "element-resize-detector";
|
||||||
@@ -598,6 +594,14 @@ export default {
|
|||||||
type: Number,
|
type: Number,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
classify: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
selectProjectId: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
setup(props, ctx) {
|
setup(props, ctx) {
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
@@ -606,30 +610,24 @@ export default {
|
|||||||
//快速选人
|
//快速选人
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
tableDataTotal: 0,
|
tableDataTotal: 100,
|
||||||
nameSearch: "", //搜索名称
|
nameSearch: "", //搜索名称
|
||||||
|
loading: false,
|
||||||
//受众
|
//受众
|
||||||
pageSize2: 10,
|
pageSize2: 10,
|
||||||
currentPage2: 1,
|
currentPage2: 1,
|
||||||
tableDataTotal2: 0,
|
tableDataTotal2: 0,
|
||||||
audienceName: "",
|
audienceName: "",
|
||||||
|
|
||||||
pageSize1: 10,
|
pageSize1: 10,
|
||||||
currentPage1: 1,
|
currentPage1: 1,
|
||||||
tableDataTotal1: 0,
|
tableDataTotal1: 0,
|
||||||
|
|
||||||
selectedRowKeys1: [],
|
selectedRowKeys1: [],
|
||||||
|
|
||||||
activeKey: "1",
|
activeKey: "1",
|
||||||
value: [], //级联选择框
|
value: [], //级联选择框
|
||||||
choosevalue: null, //受众选择
|
choosevalue: null, //受众选择
|
||||||
valueSelect: null, //树形选择
|
valueSelect: null, //树形选择
|
||||||
|
|
||||||
valueSelectboe2: null, //boe树形选择
|
valueSelectboe2: null, //boe树形选择
|
||||||
|
|
||||||
nameadd: "",
|
nameadd: "",
|
||||||
|
|
||||||
searchOrgName: "", //搜索组织
|
searchOrgName: "", //搜索组织
|
||||||
//组织树
|
//组织树
|
||||||
treeData: [],
|
treeData: [],
|
||||||
@@ -646,8 +644,8 @@ export default {
|
|||||||
tablecolumns: [
|
tablecolumns: [
|
||||||
{
|
{
|
||||||
title: "姓名",
|
title: "姓名",
|
||||||
dataIndex: "name",
|
dataIndex: "realName",
|
||||||
key: "name",
|
key: "realName",
|
||||||
width: 80,
|
width: 80,
|
||||||
align: "center",
|
align: "center",
|
||||||
className: "h",
|
className: "h",
|
||||||
@@ -655,8 +653,8 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "工号",
|
title: "工号",
|
||||||
dataIndex: "numb",
|
dataIndex: "userNo",
|
||||||
key: "numb",
|
key: "userNo",
|
||||||
width: 80,
|
width: 80,
|
||||||
align: "center",
|
align: "center",
|
||||||
className: "h",
|
className: "h",
|
||||||
@@ -664,8 +662,8 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "归属组织",
|
title: "归属组织",
|
||||||
dataIndex: "guishu",
|
dataIndex: "orgName",
|
||||||
key: "guishu",
|
key: "orgName",
|
||||||
width: 80,
|
width: 80,
|
||||||
align: "center",
|
align: "center",
|
||||||
className: "h",
|
className: "h",
|
||||||
@@ -673,15 +671,14 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "部门",
|
title: "部门",
|
||||||
dataIndex: "bum",
|
dataIndex: "departName",
|
||||||
key: "bum",
|
key: "departName",
|
||||||
width: 80,
|
width: 80,
|
||||||
align: "center",
|
align: "center",
|
||||||
className: "h",
|
className: "h",
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
//受众关联table数据
|
//受众关联table数据
|
||||||
tabledata2: [
|
tabledata2: [
|
||||||
// {
|
// {
|
||||||
@@ -761,46 +758,59 @@ export default {
|
|||||||
selectOrgName: null, //选中的组织名称
|
selectOrgName: null, //选中的组织名称
|
||||||
//快速选人-------------------------------------
|
//快速选人-------------------------------------
|
||||||
//添加组织-------------------------------------
|
//添加组织-------------------------------------
|
||||||
|
|
||||||
selectedKeys1: [], //选中部门的key
|
selectedKeys1: [], //选中部门的key
|
||||||
chooseorganization: [], //添加组织的选择组织
|
chooseorganization: [], //添加组织的选择组织
|
||||||
chooseorganization1: [], //显示到右侧的数组
|
chooseorganization1: [], //显示到右侧的数组
|
||||||
showMore1: false, //是否显示添加组织的查看更多
|
showMore1: false, //是否显示添加组织的查看更多
|
||||||
showHidden1: false, //是否显示添加组织的收回
|
showHidden1: false, //是否显示添加组织的收回
|
||||||
|
|
||||||
showOrgModal: false, //确认弹窗
|
showOrgModal: false, //确认弹窗
|
||||||
|
|
||||||
isSearchOrg: false,
|
isSearchOrg: false,
|
||||||
treeData2: [],
|
treeData2: [],
|
||||||
//添加组织-------------------------------------
|
//添加组织-------------------------------------
|
||||||
|
|
||||||
//受众关联-------------------------------------
|
//受众关联-------------------------------------
|
||||||
relationpeople: [], //总的数组
|
relationpeople: [], //总的数组
|
||||||
showMore2: false, //是否显示快速选人的查看更多
|
showMore2: false, //是否显示快速选人的查看更多
|
||||||
showHidden2: false, //是否显示收回
|
showHidden2: false, //是否显示收回
|
||||||
selectedRowKeys2: [], //表格选中的key
|
selectedRowKeys2: [], //表格选中的key
|
||||||
//受众关联-------------------------------------
|
//受众关联-------------------------------------
|
||||||
|
|
||||||
selectAllArr: null, //所有选中
|
selectAllArr: null, //所有选中
|
||||||
|
|
||||||
expandedKeys: [], //展开的节点
|
expandedKeys: [], //展开的节点
|
||||||
});
|
});
|
||||||
|
|
||||||
const closeDrawer = () => {
|
const closeDrawer = () => {
|
||||||
state.activeKey = "1";
|
state.activeKey = "1";
|
||||||
ctx.emit("update:ProjCheckvisible", false);
|
ctx.emit("update:ProjCheckvisible", false);
|
||||||
deleteAll();
|
deleteAll();
|
||||||
// console.log("expandedKeys", state.expandedKeys);
|
// console.log("expandedKeys", state.expandedKeys);
|
||||||
state.expandedKeys = [];
|
state.expandedKeys = [];
|
||||||
|
state.tabledata = [];
|
||||||
|
//快速选人
|
||||||
|
state.currentPage = 1;
|
||||||
|
state.tableDataTotal = 0;
|
||||||
|
state.nameSearch = ""; //搜索名称
|
||||||
|
//受众
|
||||||
|
state.currentPage2 = 1;
|
||||||
|
state.tableDataTotal2 = 0;
|
||||||
|
state.audienceName = "";
|
||||||
|
state.currentPage1 = 1;
|
||||||
|
state.tableDataTotal1 = 0;
|
||||||
|
state.selectedKeys = [];
|
||||||
|
state.selectOrgId = null; //选中的组织id
|
||||||
|
state.selectOrgName = null; //选中的组织名称
|
||||||
|
state.searchOrgName = null;
|
||||||
|
state.isSearchOrg = false;
|
||||||
|
state.treeData2 = [];
|
||||||
|
getAudienceInfo();
|
||||||
};
|
};
|
||||||
const afterVisibleChange = (bool) => {
|
const afterVisibleChange = (bool) => {
|
||||||
console.log("state", bool);
|
console.log("state", bool);
|
||||||
|
if (bool) {
|
||||||
|
optionAuthPerm();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
//获取组织树
|
//获取组织树
|
||||||
state.treeData = computed(() => {
|
state.treeData = computed(() => {
|
||||||
return store.state.orgtreeList ? store.state.orgtreeList : [];
|
return store.state.orgtreeList ? store.state.orgtreeList : [];
|
||||||
});
|
});
|
||||||
|
|
||||||
const getClientHeight = () => {
|
const getClientHeight = () => {
|
||||||
state.screenHeight = document.body.clientHeight;
|
state.screenHeight = document.body.clientHeight;
|
||||||
};
|
};
|
||||||
@@ -808,19 +818,14 @@ export default {
|
|||||||
// const getClientHeightSelecteds = () => {
|
// const getClientHeightSelecteds = () => {
|
||||||
// state.selectedsHeight = document.getElementById('selecteds').offsetHeight
|
// state.selectedsHeight = document.getElementById('selecteds').offsetHeight
|
||||||
// console.log('selectedsHeight',state.selectedsHeight)
|
// console.log('selectedsHeight',state.selectedsHeight)
|
||||||
|
|
||||||
// };
|
// };
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
// console.log("11111", 1);
|
|
||||||
window.addEventListener("resize", getClientHeight, false);
|
window.addEventListener("resize", getClientHeight, false);
|
||||||
// window.addEventListener("resize", getClientHeightSelecteds, false);
|
state.tabledata = store.state.memberInitInfo;
|
||||||
// judgeUrl();
|
|
||||||
});
|
});
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
window.removeEventListener("resize", getClientHeight, false);
|
window.removeEventListener("resize", getClientHeight, false);
|
||||||
// window.removeEventListener("resize", getClientHeightSelecteds, false);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// 开始 快速选人------------------------------------------------------------------
|
// 开始 快速选人------------------------------------------------------------------
|
||||||
//选中部门
|
//选中部门
|
||||||
const departmentSelect = (e, k) => {
|
const departmentSelect = (e, k) => {
|
||||||
@@ -836,11 +841,10 @@ export default {
|
|||||||
};
|
};
|
||||||
//获取学员
|
//获取学员
|
||||||
const getMember = async (org) => {
|
const getMember = async (org) => {
|
||||||
if (!state.nameSearch && !org) {
|
// if (!state.nameSearch && !org) {
|
||||||
return false;
|
// return false;
|
||||||
}
|
// }
|
||||||
console.log("org", org);
|
await api
|
||||||
const item1 = await api
|
|
||||||
.getMemberInfo({
|
.getMemberInfo({
|
||||||
pageNo: state.currentPage,
|
pageNo: state.currentPage,
|
||||||
pageSize: state.pageSize,
|
pageSize: state.pageSize,
|
||||||
@@ -848,30 +852,28 @@ export default {
|
|||||||
org: state.nameSearch ? null : org,
|
org: state.nameSearch ? null : org,
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.data.code === 200) {
|
state.tabledata = res.data.data.rows;
|
||||||
console.log("获取学员", res.data);
|
state.tableDataTotal = res.data.data.total;
|
||||||
state.tableDataTotal = res.data.data.total;
|
|
||||||
return res.data.data.rows;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
state.tabledata = traverseArr(item1, {
|
|
||||||
key: "id",
|
|
||||||
name: "realName",
|
|
||||||
bum: "depName",
|
|
||||||
numb: "id",
|
|
||||||
guishu: "orgName",
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
// state.tabledata = traverseArr(item1, {
|
||||||
|
// key: "id",
|
||||||
|
// name: "realName",
|
||||||
|
// bum: "depName",
|
||||||
|
// numb: "id",
|
||||||
|
// guishu: "orgName",
|
||||||
|
// });
|
||||||
|
// };
|
||||||
//分页获取学员
|
//分页获取学员
|
||||||
const changePagination = (page) => {
|
const changePagination = (page) => {
|
||||||
state.currentPage = page;
|
state.currentPage = page;
|
||||||
console.log("1111111");
|
console.log("1111111", state.selectedRowKeys, state.choosepeople);
|
||||||
getMember(state.selectOrgId);
|
getMember(state.selectOrgId);
|
||||||
};
|
};
|
||||||
//搜索学员
|
//搜索学员
|
||||||
const handleSearchStu = () => {
|
const handleSearchStu = () => {
|
||||||
deleteDepSelect();
|
deleteDepSelect();
|
||||||
|
state.currentPage = 1;
|
||||||
state.currentPage2 = 1;
|
state.currentPage2 = 1;
|
||||||
console.log("22222");
|
console.log("22222");
|
||||||
getMember();
|
getMember();
|
||||||
@@ -891,10 +893,19 @@ export default {
|
|||||||
};
|
};
|
||||||
//快速选人 选中的数组
|
//快速选人 选中的数组
|
||||||
const onSelectChange = (selectedRowKeys, item) => {
|
const onSelectChange = (selectedRowKeys, item) => {
|
||||||
// console.log("selectedRowKeys changed: ", selectedRowKeys,item);
|
console.log("selectedRowKeys changed: ", selectedRowKeys, item);
|
||||||
state.selectedRowKeys.push(selectedRowKeys[selectedRowKeys.length - 1]);
|
state.selectedRowKeys = selectedRowKeys;
|
||||||
state.choosepeople.unshift(item[item.length - 1]);
|
state.choosepeople = item.reverse();
|
||||||
selectedsHeight();
|
selectedsHeight();
|
||||||
|
// if (selectedRowKeys.length > 0 && item.length > 0) {
|
||||||
|
// state.selectedRowKeys.push(selectedRowKeys[selectedRowKeys.length - 1]);
|
||||||
|
// state.choosepeople.unshift(item[item.length - 1]);
|
||||||
|
// // console.log(
|
||||||
|
// // "selectedRowKeys changed22222: ",
|
||||||
|
// // state.selectedRowKeys,
|
||||||
|
// // state.choosepeople
|
||||||
|
// // );
|
||||||
|
// }
|
||||||
};
|
};
|
||||||
//单个删除选中的人
|
//单个删除选中的人
|
||||||
const deleteChoosePeople = (item) => {
|
const deleteChoosePeople = (item) => {
|
||||||
@@ -920,7 +931,7 @@ export default {
|
|||||||
resize.listenTo(
|
resize.listenTo(
|
||||||
document.getElementById("ProjCheckship").querySelector("#selecteds"),
|
document.getElementById("ProjCheckship").querySelector("#selecteds"),
|
||||||
function (ele) {
|
function (ele) {
|
||||||
console.log("ele", ele.offsetHeight);
|
console.log("ele", ele.clientHeight, ele.offsetHeight);
|
||||||
if (ele.offsetHeight > 160 && !state.showHidden) {
|
if (ele.offsetHeight > 160 && !state.showHidden) {
|
||||||
state.showMore = true;
|
state.showMore = true;
|
||||||
document
|
document
|
||||||
@@ -962,9 +973,7 @@ export default {
|
|||||||
.getElementById("ProjCheckship")
|
.getElementById("ProjCheckship")
|
||||||
.querySelector("#selectedsBox").style.height = "160px";
|
.querySelector("#selectedsBox").style.height = "160px";
|
||||||
};
|
};
|
||||||
|
|
||||||
// 结束 快速选人------------------------------------------------------------------
|
// 结束 快速选人------------------------------------------------------------------
|
||||||
|
|
||||||
// 开始 添加组织------------------------------------------------------------------
|
// 开始 添加组织------------------------------------------------------------------
|
||||||
//搜索组织
|
//搜索组织
|
||||||
const searchOrg = (id) => {
|
const searchOrg = (id) => {
|
||||||
@@ -1002,7 +1011,6 @@ export default {
|
|||||||
return store.state.orgtreeList ? store.state.orgtreeList : [];
|
return store.state.orgtreeList ? store.state.orgtreeList : [];
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// //搜索组织
|
// //搜索组织
|
||||||
// const searchOrg = () => {
|
// const searchOrg = () => {
|
||||||
// let treeTitle = document
|
// let treeTitle = document
|
||||||
@@ -1027,7 +1035,6 @@ export default {
|
|||||||
// message.warning("请输入组织名称");
|
// message.warning("请输入组织名称");
|
||||||
// }
|
// }
|
||||||
// };
|
// };
|
||||||
|
|
||||||
//选中部门
|
//选中部门
|
||||||
const departmentSelect1 = (e, k) => {
|
const departmentSelect1 = (e, k) => {
|
||||||
console.log("选中的部门", e, k);
|
console.log("选中的部门", e, k);
|
||||||
@@ -1046,8 +1053,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
console.log("选中的部门2", state.selectedKeys1, state.chooseorganization);
|
||||||
// console.log("选中的部门2", state.selectedKeys1, state.chooseorganization);
|
|
||||||
};
|
};
|
||||||
//点击确认添加-判断是否显示确定弹窗
|
//点击确认添加-判断是否显示确定弹窗
|
||||||
const addOrgModal = () => {
|
const addOrgModal = () => {
|
||||||
@@ -1069,27 +1075,25 @@ export default {
|
|||||||
const closeOrgModal = () => {
|
const closeOrgModal = () => {
|
||||||
state.showOrgModal = false;
|
state.showOrgModal = false;
|
||||||
};
|
};
|
||||||
|
//单个删除选中的组织
|
||||||
//单个删除选中的人
|
|
||||||
const deleteChoosePeople1 = (item) => {
|
const deleteChoosePeople1 = (item) => {
|
||||||
console.log("item", item);
|
console.log("item", item, state.chooseorganization);
|
||||||
let arr = state.chooseorganization;
|
let arr = state.chooseorganization;
|
||||||
for (let i = 0; i < arr.length; i++) {
|
for (let i = 0; i < arr.length; i++) {
|
||||||
if (arr[i].key === item.key) {
|
if (arr[i].id === item.id) {
|
||||||
arr.splice(i, 1);
|
arr.splice(i, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
state.chooseorganization = arr;
|
state.chooseorganization = arr;
|
||||||
let array = state.selectedKeys1;
|
let array = state.selectedKeys1;
|
||||||
for (let i = 0; i < array.length; i++) {
|
for (let i = 0; i < array.length; i++) {
|
||||||
if (array[i] === item.key) {
|
if (array[i] === item.id) {
|
||||||
array.splice(i, 1);
|
array.splice(i, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
state.selectedKeys1 = array;
|
state.selectedKeys1 = array;
|
||||||
console.log("state.selectedKeys1", state.selectedKeys1);
|
console.log("state.selectedKeys1", state.selectedKeys1);
|
||||||
};
|
};
|
||||||
|
|
||||||
//根据右侧快速选人高度,判断是否显示更多
|
//根据右侧快速选人高度,判断是否显示更多
|
||||||
const selectedsHeight1 = () => {
|
const selectedsHeight1 = () => {
|
||||||
let resize = elementResizeDetectorMaker();
|
let resize = elementResizeDetectorMaker();
|
||||||
@@ -1138,11 +1142,8 @@ export default {
|
|||||||
.getElementById("ProjCheckship")
|
.getElementById("ProjCheckship")
|
||||||
.querySelector("#selectedsBox1").style.height = "160px";
|
.querySelector("#selectedsBox1").style.height = "160px";
|
||||||
};
|
};
|
||||||
|
|
||||||
// 结束 添加组织------------------------------------------------------------------
|
// 结束 添加组织------------------------------------------------------------------
|
||||||
|
|
||||||
// 开始 受众关联------------------------------------------------------------------
|
// 开始 受众关联------------------------------------------------------------------
|
||||||
|
|
||||||
//获取受众
|
//获取受众
|
||||||
const getAudienceInfo = async () => {
|
const getAudienceInfo = async () => {
|
||||||
const item1 = await api
|
const item1 = await api
|
||||||
@@ -1189,13 +1190,13 @@ export default {
|
|||||||
state.audienceName = "";
|
state.audienceName = "";
|
||||||
getAudienceInfo();
|
getAudienceInfo();
|
||||||
};
|
};
|
||||||
|
|
||||||
//受众关联 选中的数组
|
//受众关联 选中的数组
|
||||||
const onSelectChange2 = (selectedRowKeys, item) => {
|
const onSelectChange2 = (selectedRowKeys, item) => {
|
||||||
// console.log("selectedRowKeys changed: ", selectedRowKeys, item);
|
// console.log("selectedRowKeys changed: ", selectedRowKeys, item);
|
||||||
state.selectedRowKeys2.push(selectedRowKeys[selectedRowKeys.length - 1]);
|
state.selectedRowKeys2 = selectedRowKeys;
|
||||||
state.relationpeople.unshift(item[item.length - 1]);
|
state.relationpeople = item.reverse();
|
||||||
|
// state.selectedRowKeys2.push(selectedRowKeys[selectedRowKeys.length - 1]);
|
||||||
|
// state.relationpeople.unshift(item[item.length - 1]);
|
||||||
selectedsHeight2();
|
selectedsHeight2();
|
||||||
};
|
};
|
||||||
//单个删除选中的人
|
//单个删除选中的人
|
||||||
@@ -1263,9 +1264,7 @@ export default {
|
|||||||
.getElementById("ProjCheckship")
|
.getElementById("ProjCheckship")
|
||||||
.querySelector("#selectedsBox2").style.height = "160px";
|
.querySelector("#selectedsBox2").style.height = "160px";
|
||||||
};
|
};
|
||||||
|
|
||||||
// 结束 受众关联------------------------------------------------------------------
|
// 结束 受众关联------------------------------------------------------------------
|
||||||
|
|
||||||
//全部清除
|
//全部清除
|
||||||
const deleteAll = () => {
|
const deleteAll = () => {
|
||||||
//快速选人-------------------------------------
|
//快速选人-------------------------------------
|
||||||
@@ -1278,37 +1277,31 @@ export default {
|
|||||||
state.selectOrgName = null; //选中的组织名称
|
state.selectOrgName = null; //选中的组织名称
|
||||||
//快速选人-------------------------------------
|
//快速选人-------------------------------------
|
||||||
//添加组织-------------------------------------
|
//添加组织-------------------------------------
|
||||||
|
|
||||||
state.selectedKeys1 = []; //选中部门的key
|
state.selectedKeys1 = []; //选中部门的key
|
||||||
state.chooseorganization = []; //添加组织的选择组织
|
state.chooseorganization = []; //添加组织的选择组织
|
||||||
state.chooseorganization1 = []; //显示到右侧的数组
|
state.chooseorganization1 = []; //显示到右侧的数组
|
||||||
state.showMore1 = false; //是否显示添加组织的查看更多
|
state.showMore1 = false; //是否显示添加组织的查看更多
|
||||||
state.showHidden1 = false; //是否显示添加组织的收回
|
state.showHidden1 = false; //是否显示添加组织的收回
|
||||||
|
|
||||||
state.showOrgModal = false; //确认弹窗
|
state.showOrgModal = false; //确认弹窗
|
||||||
//添加组织-------------------------------------
|
//添加组织-------------------------------------
|
||||||
|
|
||||||
//受众关联-------------------------------------
|
//受众关联-------------------------------------
|
||||||
state.relationpeople = []; //总的数组
|
state.relationpeople = []; //总的数组
|
||||||
state.showMore2 = false; //是否显示快速选人的查看更多
|
state.showMore2 = false; //是否显示快速选人的查看更多
|
||||||
state.showHidden2 = false; //是否显示收回
|
state.showHidden2 = false; //是否显示收回
|
||||||
state.selectedRowKeys2 = []; //表格选中的key
|
state.selectedRowKeys2 = []; //表格选中的key
|
||||||
//受众关联-------------------------------------
|
//受众关联-------------------------------------
|
||||||
|
|
||||||
state.selectAllArr = null; //所有选中
|
state.selectAllArr = null; //所有选中
|
||||||
};
|
};
|
||||||
|
|
||||||
//确定添加授权
|
//确定添加授权
|
||||||
const submitAuth = () => {
|
const submitAuth = () => {
|
||||||
let choosepeople = [];
|
let choosepeople = [];
|
||||||
state.choosepeople.map((value) => {
|
state.choosepeople.map((value) => {
|
||||||
let obj = {
|
let obj = {
|
||||||
id: value.key,
|
id: value.id,
|
||||||
name: value.name,
|
name: value.realName,
|
||||||
};
|
};
|
||||||
choosepeople.push(obj);
|
choosepeople.push(obj);
|
||||||
});
|
});
|
||||||
|
|
||||||
let chooseorganization1 = [];
|
let chooseorganization1 = [];
|
||||||
state.chooseorganization1.map((value) => {
|
state.chooseorganization1.map((value) => {
|
||||||
let obj = {
|
let obj = {
|
||||||
@@ -1317,7 +1310,6 @@ export default {
|
|||||||
};
|
};
|
||||||
chooseorganization1.push(obj);
|
chooseorganization1.push(obj);
|
||||||
});
|
});
|
||||||
|
|
||||||
let relationpeople = [];
|
let relationpeople = [];
|
||||||
state.relationpeople.map((value) => {
|
state.relationpeople.map((value) => {
|
||||||
let obj = {
|
let obj = {
|
||||||
@@ -1331,7 +1323,71 @@ export default {
|
|||||||
ctx.emit("update:addAuthList", state.selectAllArr);
|
ctx.emit("update:addAuthList", state.selectAllArr);
|
||||||
closeDrawer();
|
closeDrawer();
|
||||||
};
|
};
|
||||||
|
//获取授权 坐回显
|
||||||
|
const optionAuthPerm = () => {
|
||||||
|
let obj = {
|
||||||
|
keyWord: "",
|
||||||
|
type:
|
||||||
|
props.classify === "learnPath"
|
||||||
|
? 1
|
||||||
|
: props.classify === "project"
|
||||||
|
? 2
|
||||||
|
: props.classify === "course"
|
||||||
|
? 3
|
||||||
|
: null,
|
||||||
|
tag: props.authClassify === 1 ? 3 : props.authClassify === 2 ? 4 : "",
|
||||||
|
opt: 1,
|
||||||
|
refId: props.selectProjectId,
|
||||||
|
pageNo: 0,
|
||||||
|
pageSize: 0,
|
||||||
|
deptList: [],
|
||||||
|
groupList: [],
|
||||||
|
studentList: [],
|
||||||
|
};
|
||||||
|
console.log("获取权限名单obj", obj);
|
||||||
|
api
|
||||||
|
.optionAuthPerm(obj)
|
||||||
|
.then((res) => {
|
||||||
|
// console.log("获取权限名单成功", res);
|
||||||
|
if (res.data.code === 200) {
|
||||||
|
let studentArr = res.data.data.studentList;
|
||||||
|
let selectedRowKeys = [];
|
||||||
|
let choosepeople = [];
|
||||||
|
for (let i = 0; i < studentArr.length; i++) {
|
||||||
|
selectedRowKeys.push(studentArr[i].id);
|
||||||
|
choosepeople.push(studentArr[i]);
|
||||||
|
}
|
||||||
|
//快速选人
|
||||||
|
state.selectedRowKeys = selectedRowKeys;
|
||||||
|
state.choosepeople = choosepeople;
|
||||||
|
let deptArr = res.data.data.deptList;
|
||||||
|
let selectedKeys1 = [];
|
||||||
|
let chooseorganization = [];
|
||||||
|
for (let i = 0; i < deptArr.length; i++) {
|
||||||
|
selectedKeys1.push(deptArr[i].id);
|
||||||
|
chooseorganization.push(deptArr[i]);
|
||||||
|
}
|
||||||
|
//组织
|
||||||
|
state.selectedKeys1 = selectedKeys1;
|
||||||
|
state.chooseorganization = chooseorganization;
|
||||||
|
state.chooseorganization1 = chooseorganization;
|
||||||
|
let groupArr = res.data.data.groupList;
|
||||||
|
let selectedRowKeys2 = [];
|
||||||
|
let relationpeople = [];
|
||||||
|
for (let i = 0; i < groupArr.length; i++) {
|
||||||
|
selectedRowKeys2.push(groupArr[i].id);
|
||||||
|
relationpeople.push(groupArr[i]);
|
||||||
|
}
|
||||||
|
//受众
|
||||||
|
state.selectedRowKeys2 = selectedRowKeys2;
|
||||||
|
state.relationpeople = relationpeople;
|
||||||
|
console.log("获取权限名单成功", res);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log("获取权限名单失败", err);
|
||||||
|
});
|
||||||
|
};
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
afterVisibleChange,
|
afterVisibleChange,
|
||||||
@@ -1344,7 +1400,6 @@ export default {
|
|||||||
selectedsHeight,
|
selectedsHeight,
|
||||||
morePeopleShow,
|
morePeopleShow,
|
||||||
morePeopleHidden,
|
morePeopleHidden,
|
||||||
|
|
||||||
departmentSelect1,
|
departmentSelect1,
|
||||||
addOrgModal,
|
addOrgModal,
|
||||||
addOrg,
|
addOrg,
|
||||||
@@ -1353,32 +1408,26 @@ export default {
|
|||||||
morePeopleShow1,
|
morePeopleShow1,
|
||||||
morePeopleHidden1,
|
morePeopleHidden1,
|
||||||
deleteChoosePeople1,
|
deleteChoosePeople1,
|
||||||
|
|
||||||
selectedsHeight2,
|
selectedsHeight2,
|
||||||
morePeopleShow2,
|
morePeopleShow2,
|
||||||
morePeopleHidden2,
|
morePeopleHidden2,
|
||||||
deleteChoosePeople2,
|
deleteChoosePeople2,
|
||||||
|
|
||||||
deleteAll,
|
deleteAll,
|
||||||
|
|
||||||
searchOrg,
|
searchOrg,
|
||||||
changePagination,
|
changePagination,
|
||||||
handleSearchStu,
|
handleSearchStu,
|
||||||
resetStu,
|
resetStu,
|
||||||
|
|
||||||
getAudienceInfo,
|
getAudienceInfo,
|
||||||
changePagination1,
|
changePagination1,
|
||||||
searchAudienceInfo,
|
searchAudienceInfo,
|
||||||
resetAudienceInfo,
|
resetAudienceInfo,
|
||||||
|
|
||||||
resetOrg,
|
resetOrg,
|
||||||
|
|
||||||
submitAuth,
|
submitAuth,
|
||||||
|
optionAuthPerm,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.ProjCheckship {
|
.ProjCheckship {
|
||||||
.ant-drawer-content-wrapper {
|
.ant-drawer-content-wrapper {
|
||||||
@@ -1527,42 +1576,35 @@ export default {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
border: 1px solid #c3e6fc;
|
border: 1px solid #c3e6fc;
|
||||||
|
|
||||||
.inline {
|
.inline {
|
||||||
width: 95%;
|
width: 95%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
// background-color: #bfa;
|
// background-color: #bfa;
|
||||||
.left1 {
|
.left1 {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.img {
|
.img {
|
||||||
width: 14px;
|
width: 14px;
|
||||||
height: 15px;
|
height: 15px;
|
||||||
background-image: url(../../assets/images/leveladd/gan.png);
|
background-image: url(../../assets/images/leveladd/gan.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
color: #999ba3;
|
color: #999ba3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text2 {
|
.text2 {
|
||||||
color: #4ea6ff;
|
color: #4ea6ff;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text3 {
|
.text3 {
|
||||||
color: #999ba3;
|
color: #999ba3;
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.right1 {
|
.right1 {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -1649,7 +1691,6 @@ export default {
|
|||||||
th.h {
|
th.h {
|
||||||
background-color: #eff4fc !important;
|
background-color: #eff4fc !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-table-tbody
|
.ant-table-tbody
|
||||||
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
||||||
> td {
|
> td {
|
||||||
@@ -1684,7 +1725,6 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab2 {
|
.tab2 {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -1700,7 +1740,6 @@ export default {
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.t1 {
|
.t1 {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -1748,7 +1787,6 @@ export default {
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-select-dropdown {
|
.ant-select-dropdown {
|
||||||
min-width: 800px !important;
|
min-width: 800px !important;
|
||||||
}
|
}
|
||||||
@@ -1904,7 +1942,9 @@ export default {
|
|||||||
margin-right: 32px;
|
margin-right: 32px;
|
||||||
margin-left: 32px;
|
margin-left: 32px;
|
||||||
min-height: 100px;
|
min-height: 100px;
|
||||||
|
// height: 170px;
|
||||||
// overflow: hidden;
|
// overflow: hidden;
|
||||||
|
flex-shrink: 0;
|
||||||
.chose {
|
.chose {
|
||||||
// width: 64px;
|
// width: 64px;
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
@@ -1920,6 +1960,7 @@ export default {
|
|||||||
color: rgba(56, 139, 225, 1);
|
color: rgba(56, 139, 225, 1);
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
flex-shrink: 0;
|
||||||
.ch {
|
.ch {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 18px;
|
width: 18px;
|
||||||
@@ -1977,7 +2018,6 @@ export default {
|
|||||||
width: 7px !important;
|
width: 7px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.changetreedropdownboe {
|
.changetreedropdownboe {
|
||||||
width: 240px !important;
|
width: 240px !important;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
@@ -2078,7 +2118,6 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
.btnText {
|
.btnText {
|
||||||
@@ -2106,4 +2145,4 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -133,6 +133,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import { toRefs, reactive } from "vue";
|
import { toRefs, reactive } from "vue";
|
||||||
import * as api from "../../api/index1";
|
import * as api from "../../api/index1";
|
||||||
|
import { message } from "ant-design-vue";
|
||||||
export default {
|
export default {
|
||||||
name: "ProjPowerList",
|
name: "ProjPowerList",
|
||||||
props: {
|
props: {
|
||||||
@@ -172,6 +173,7 @@ export default {
|
|||||||
// },
|
// },
|
||||||
],
|
],
|
||||||
cancelAuthInfo: null, //取消授权id
|
cancelAuthInfo: null, //取消授权id
|
||||||
|
cancelAuthState: null, //取消授权种类
|
||||||
});
|
});
|
||||||
|
|
||||||
const closeDrawer = () => {
|
const closeDrawer = () => {
|
||||||
@@ -199,6 +201,7 @@ export default {
|
|||||||
name: item.name,
|
name: item.name,
|
||||||
};
|
};
|
||||||
state.cancelAuthInfo = obj;
|
state.cancelAuthInfo = obj;
|
||||||
|
state.cancelAuthState = item.state;
|
||||||
};
|
};
|
||||||
const closeCancelModal = () => {
|
const closeCancelModal = () => {
|
||||||
state.cancelModal = false;
|
state.cancelModal = false;
|
||||||
@@ -364,7 +367,14 @@ export default {
|
|||||||
: props.classify === "course"
|
: props.classify === "course"
|
||||||
? 3
|
? 3
|
||||||
: null,
|
: null,
|
||||||
tag: 1,
|
tag:
|
||||||
|
state.cancelAuthState === "归属权"
|
||||||
|
? 2
|
||||||
|
: state.cancelAuthState === "查看权"
|
||||||
|
? 3
|
||||||
|
: state.cancelAuthState === "管理权"
|
||||||
|
? 4
|
||||||
|
: null,
|
||||||
opt: 4,
|
opt: 4,
|
||||||
refId: props.selectProjectId,
|
refId: props.selectProjectId,
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
@@ -373,7 +383,7 @@ export default {
|
|||||||
groupList: [],
|
groupList: [],
|
||||||
studentList: [state.cancelAuthInfo],
|
studentList: [state.cancelAuthInfo],
|
||||||
};
|
};
|
||||||
console.log("取消权限名单obj", obj);
|
console.log("取消权限名单obj", obj, state.cancelAuthState);
|
||||||
api
|
api
|
||||||
.optionAuthPerm(obj)
|
.optionAuthPerm(obj)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
@@ -381,6 +391,7 @@ export default {
|
|||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
// console.log("取消授权成功", res.data.data);
|
// console.log("取消授权成功", res.data.data);
|
||||||
optionAuthPerm();
|
optionAuthPerm();
|
||||||
|
message.success("取消授权成功");
|
||||||
closeCancelModal();
|
closeCancelModal();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -28,13 +28,13 @@
|
|||||||
<div class="nameinp">
|
<div class="nameinp">
|
||||||
<div class="namee">姓名:</div>
|
<div class="namee">姓名:</div>
|
||||||
<a-input
|
<a-input
|
||||||
v-model:value="name"
|
v-model:value="nameSearch"
|
||||||
style="width: 270px; height: 40px; border-radius: 8px"
|
style="width: 270px; height: 40px; border-radius: 8px"
|
||||||
placeholder="请输入姓名"
|
placeholder="请输入姓名"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="btns">
|
<div class="btns">
|
||||||
<div class="btn1">
|
<div class="btn1" @click="handleSearchStu">
|
||||||
<div class="img1">
|
<div class="img1">
|
||||||
<img
|
<img
|
||||||
src="../../assets/images/courseManage/search0.png"
|
src="../../assets/images/courseManage/search0.png"
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="wz">搜索</div>
|
<div class="wz">搜索</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn2">
|
<div class="btn2" @click="resetStu">
|
||||||
<div class="img2">
|
<div class="img2">
|
||||||
<img
|
<img
|
||||||
src="../../assets/images/courseManage/reset1.png"
|
src="../../assets/images/courseManage/reset1.png"
|
||||||
@@ -242,7 +242,7 @@ export default {
|
|||||||
valueSelect: null, //树形选择
|
valueSelect: null, //树形选择
|
||||||
|
|
||||||
valueSelectboe2: null, //boe树形选择
|
valueSelectboe2: null, //boe树形选择
|
||||||
name: "",
|
nameSearch: "",
|
||||||
nameadd: "",
|
nameadd: "",
|
||||||
nameaddd: "",
|
nameaddd: "",
|
||||||
com: "",
|
com: "",
|
||||||
@@ -317,6 +317,18 @@ export default {
|
|||||||
ctx.emit("update:ProjOwnervisible", false);
|
ctx.emit("update:ProjOwnervisible", false);
|
||||||
state.openKeys = [];
|
state.openKeys = [];
|
||||||
state.isDisabled = true;
|
state.isDisabled = true;
|
||||||
|
state.nameSearch = "";
|
||||||
|
state.tabledata = [];
|
||||||
|
state.currentPage = 1;
|
||||||
|
state.selectedKeys = [];
|
||||||
|
state.valueSelectboe = null;
|
||||||
|
state.choosepeople = []; //选中的组织名称
|
||||||
|
|
||||||
|
state.selectDepartment = null; //选中部门名称
|
||||||
|
state.showMore = false; //是否显示快速选人的查看更多
|
||||||
|
state.showHidden = false; //是否显示收回
|
||||||
|
state.selectedRowKeys = []; //表格选中的key
|
||||||
|
state.selectPeopleArr = []; //表格选中的人
|
||||||
};
|
};
|
||||||
|
|
||||||
const afterVisibleChange = (bool) => {
|
const afterVisibleChange = (bool) => {
|
||||||
@@ -336,16 +348,22 @@ export default {
|
|||||||
});
|
});
|
||||||
//获取选中部门的人员信息
|
//获取选中部门的人员信息
|
||||||
const getPeoples = () => {
|
const getPeoples = () => {
|
||||||
|
if (!state.nameSearch && !state.selectedKeys[0]) {
|
||||||
|
state.tableDataTotal = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// console.log("org", org);
|
||||||
let obj = {
|
let obj = {
|
||||||
org: state.selectedKeys[0],
|
|
||||||
pageNo: state.currentPage,
|
pageNo: state.currentPage,
|
||||||
pageSize: state.pageSize,
|
pageSize: state.pageSize,
|
||||||
|
keyWord: state.nameSearch,
|
||||||
|
org: state.nameSearch ? null : state.selectedKeys[0],
|
||||||
};
|
};
|
||||||
if (!state.selectedKeys[0]) {
|
// if (!state.selectedKeys[0]) {
|
||||||
state.tableDataTotal = 0;
|
// state.tableDataTotal = 0;
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
// console.log("obj", obj);
|
console.log("obj", obj);
|
||||||
api
|
api
|
||||||
.getMemberInfo(obj)
|
.getMemberInfo(obj)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
@@ -373,7 +391,26 @@ export default {
|
|||||||
console.log("获取学员失败", err);
|
console.log("获取学员失败", err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
//搜索学员
|
||||||
|
const handleSearchStu = () => {
|
||||||
|
// deleteDepSelect();
|
||||||
|
state.currentPage = 1;
|
||||||
|
console.log("22222");
|
||||||
|
getPeoples();
|
||||||
|
};
|
||||||
|
//重置
|
||||||
|
const resetStu = () => {
|
||||||
|
state.nameSearch = "";
|
||||||
|
state.currentPage = 1;
|
||||||
|
state.tableDataTotal = 0;
|
||||||
|
state.tabledata = [];
|
||||||
|
};
|
||||||
|
// //清空选择部门信息
|
||||||
|
// const deleteDepSelect = () => {
|
||||||
|
// state.selectedKeys = null;
|
||||||
|
// state.selectOrgId = null;
|
||||||
|
// state.selectOrgName = null;
|
||||||
|
// };
|
||||||
//分页
|
//分页
|
||||||
const changePagination = () => {
|
const changePagination = () => {
|
||||||
getPeoples();
|
getPeoples();
|
||||||
@@ -610,6 +647,8 @@ export default {
|
|||||||
changeOwnership,
|
changeOwnership,
|
||||||
addAuth,
|
addAuth,
|
||||||
removeClick,
|
removeClick,
|
||||||
|
handleSearchStu,
|
||||||
|
resetStu,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!--
|
||||||
<div class="mii_ipt">
|
<div class="mii_ipt">
|
||||||
<div class="ipt_name">课程状态:</div>
|
<div class="ipt_name">课程状态:</div>
|
||||||
<div class="select fitems">
|
<div class="select fitems">
|
||||||
@@ -44,6 +45,7 @@
|
|||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
-->
|
||||||
</div>
|
</div>
|
||||||
<div class="mi_btns">
|
<div class="mi_btns">
|
||||||
<div class="btn btn1" @click="search">
|
<div class="btn btn1" @click="search">
|
||||||
@@ -113,9 +115,9 @@
|
|||||||
:loading="tableDataTotal === -1 ? true : false"
|
:loading="tableDataTotal === -1 ? true : false"
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
/>
|
/>
|
||||||
<div class="pa">
|
<div class="pa" style="display:flex;justify-content:center;padding:20px;">
|
||||||
<a-pagination
|
<a-pagination
|
||||||
v-if="total > 10"
|
v-if="tableDataTotal > 10"
|
||||||
showSizeChanger="true"
|
showSizeChanger="true"
|
||||||
showQuickJumper="true"
|
showQuickJumper="true"
|
||||||
hideOnSinglePage="true"
|
hideOnSinglePage="true"
|
||||||
@@ -134,7 +136,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
//import { ApiFilled } from "@ant-design/icons-vue";
|
//import { ApiFilled } from "@ant-design/icons-vue";
|
||||||
import {reactive, toRefs, ref, computed} from "vue";
|
import {reactive, toRefs, computed} from "vue";
|
||||||
// import { planList } from "../../api/indexTaskadd";
|
// import { planList } from "../../api/indexTaskadd";
|
||||||
//import {detail} from "../../api/indexCourse";
|
//import {detail} from "../../api/indexCourse";
|
||||||
import {list} from "../../api/indexTaskadd";
|
import {list} from "../../api/indexTaskadd";
|
||||||
@@ -279,14 +281,14 @@ export default {
|
|||||||
//获取面授课列表
|
//获取面授课列表
|
||||||
const getClassList = (obj) => {
|
const getClassList = (obj) => {
|
||||||
let objn = obj || {
|
let objn = obj || {
|
||||||
auditStatus: state.auditStatus,
|
auditStatus:2,
|
||||||
name: state.name,
|
name: state.name,
|
||||||
pageNo: state.currentPage,
|
pageNo: state.currentPage,
|
||||||
pageSize: state.pageSize
|
pageSize: state.pageSize
|
||||||
};
|
};
|
||||||
list(objn)
|
list(objn)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
console.log(res.data.data.rows);
|
console.log('面授课列表', res.data.data);
|
||||||
let result = res.data.data;
|
let result = res.data.data;
|
||||||
state.tableDataTotal = result.total;
|
state.tableDataTotal = result.total;
|
||||||
getClassData(result.rows);
|
getClassData(result.rows);
|
||||||
@@ -314,7 +316,7 @@ export default {
|
|||||||
});
|
});
|
||||||
state.classTableData = array;
|
state.classTableData = array;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
const options1 = ref([
|
const options1 = ref([
|
||||||
{
|
{
|
||||||
value: 0,
|
value: 0,
|
||||||
@@ -328,11 +330,8 @@ export default {
|
|||||||
value: 2,
|
value: 2,
|
||||||
label: "已审核",
|
label: "已审核",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
value: -1,
|
]);*/
|
||||||
label: "审核未通过",
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
const handleChange = (value, option) => {
|
const handleChange = (value, option) => {
|
||||||
console.log("改变了", value, option);
|
console.log("改变了", value, option);
|
||||||
console.log(state.valueContent);
|
console.log(state.valueContent);
|
||||||
@@ -359,7 +358,7 @@ export default {
|
|||||||
// showDrawerSelFacet,
|
// showDrawerSelFacet,
|
||||||
afterVisibleChange,
|
afterVisibleChange,
|
||||||
closeDrawer,
|
closeDrawer,
|
||||||
options1,
|
|
||||||
columns1,
|
columns1,
|
||||||
getClassData,
|
getClassData,
|
||||||
handleChange,
|
handleChange,
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-tree-select
|
<a-tree-select
|
||||||
|
:getPopupContainer="
|
||||||
|
(triggerNode) => {
|
||||||
|
return triggerNode.parentNode || document.body;
|
||||||
|
}
|
||||||
|
"
|
||||||
v-model:value="id"
|
v-model:value="id"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
||||||
@@ -11,58 +16,36 @@
|
|||||||
label: 'name',
|
label: 'name',
|
||||||
value: 'id',
|
value: 'id',
|
||||||
}"
|
}"
|
||||||
:disabled="viewDetail ? true : false"
|
:disabled="disabled"
|
||||||
@change="change"
|
@change="change"
|
||||||
dropdownClassName="treeDropdown"
|
dropdownClassName="treeDropdown"
|
||||||
>
|
>
|
||||||
</a-tree-select>
|
</a-tree-select>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script setup>
|
||||||
import {onMounted, reactive, toRefs, watch} from "vue";
|
import {computed, defineEmits, defineProps, onMounted, ref} from "vue";
|
||||||
import {useStore} from "vuex";
|
import {useStore} from "vuex";
|
||||||
|
|
||||||
export default {
|
const store = useStore();
|
||||||
name: "OrgClass",
|
|
||||||
|
|
||||||
props: {
|
const props = defineProps({
|
||||||
modelValue: {
|
value: String
|
||||||
type: Number,
|
})
|
||||||
},
|
const emit = defineEmits({})
|
||||||
name: {
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
disabled: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, ctx) {
|
|
||||||
const store = useStore();
|
|
||||||
|
|
||||||
const state = reactive({
|
const options = ref([])
|
||||||
options: [],
|
|
||||||
id: props.value
|
|
||||||
});
|
|
||||||
watch(state.id, () => {
|
|
||||||
ctx.emit('update:modelValue', state.id)
|
|
||||||
})
|
|
||||||
watch(props, () => {
|
|
||||||
if (props.modelValue !== state.id) {
|
|
||||||
state.id = props.modelValue
|
|
||||||
}
|
|
||||||
})
|
|
||||||
onMounted(() => {
|
|
||||||
state.options = [...store.state.orgtreeList]
|
|
||||||
})
|
|
||||||
|
|
||||||
function change(key, obj) {
|
const id = computed(() => {
|
||||||
ctx.emit('update:name', obj[0])
|
return props.value
|
||||||
}
|
})
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
options.value = [...store.state.orgtreeList]
|
||||||
|
})
|
||||||
|
|
||||||
|
function change(key, obj) {
|
||||||
|
emit('update:name', obj[0])
|
||||||
|
emit('update:value', key)
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
|
||||||
...toRefs(state),
|
|
||||||
change
|
|
||||||
};
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,55 +1,46 @@
|
|||||||
<!-- 评估管理-创建评估页面 -->
|
<!-- 评估管理-创建评估页面 -->
|
||||||
<template>
|
<template>
|
||||||
<a-select
|
<a-select
|
||||||
|
:getPopupContainer="
|
||||||
|
(triggerNode) => {
|
||||||
|
return triggerNode.parentNode || document.body;
|
||||||
|
}
|
||||||
|
"
|
||||||
v-model:value="id"
|
v-model:value="id"
|
||||||
placeholder="请选择分类"
|
placeholder="请选择分类"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:options="options"
|
:options="options"
|
||||||
allowClear
|
allowClear
|
||||||
|
@change="change"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
>
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script setup>
|
||||||
import {onMounted, reactive, toRefs, watch} from "vue";
|
import {computed, defineEmits, defineProps, onMounted, ref} from "vue";
|
||||||
import {useStore} from "vuex";
|
import {useStore} from "vuex";
|
||||||
|
|
||||||
export default {
|
const store = useStore();
|
||||||
name: "ProjectClass",
|
|
||||||
|
|
||||||
props: {
|
const props = defineProps({
|
||||||
modelValue: {
|
value: String,
|
||||||
type: Number,
|
disabled: String
|
||||||
},
|
})
|
||||||
disabled: {
|
const emit = defineEmits({})
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, ctx) {
|
|
||||||
const store = useStore();
|
|
||||||
|
|
||||||
const state = reactive({
|
const options = ref([])
|
||||||
options: [],
|
|
||||||
id: props.modelValue
|
|
||||||
});
|
|
||||||
|
|
||||||
watch(props, () => {
|
const id = computed(() => {
|
||||||
if (props.modelValue !== state.id) {
|
return props.value
|
||||||
state.id = props.modelValue
|
})
|
||||||
}
|
|
||||||
})
|
onMounted(() => {
|
||||||
|
options.value = store.state.projectClass.map(e => ({value: parseInt(e.dictCode), label: e.dictName}))
|
||||||
watch(state.id,()=>{
|
})
|
||||||
ctx.emit('update:modelValue',state.id)
|
|
||||||
})
|
function change(key, obj) {
|
||||||
|
emit('update:name', obj[0])
|
||||||
|
emit('update:value', key)
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
state.options = store.state.projectClass.map(e => ({value: parseInt(e.dictCode), label: e.dictName}))
|
|
||||||
})
|
|
||||||
return {
|
|
||||||
...toRefs(state),
|
|
||||||
};
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,45 +1,42 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-select
|
<a-select
|
||||||
|
:getPopupContainer="
|
||||||
|
(triggerNode) => {
|
||||||
|
return triggerNode.parentNode || document.body;
|
||||||
|
}
|
||||||
|
"
|
||||||
v-model:value="id"
|
v-model:value="id"
|
||||||
:options="options"
|
:options="options"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
placeholder="请选择项目级别"
|
placeholder="请选择项目级别"
|
||||||
|
@change="change"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script setup>
|
||||||
import {onMounted, reactive, toRefs, watch} from "vue";
|
import {computed, defineEmits, defineProps, onMounted, ref} from "vue";
|
||||||
import {useStore} from "vuex";
|
import {useStore} from "vuex";
|
||||||
|
|
||||||
export default {
|
|
||||||
name: "ProjectClass",
|
|
||||||
|
|
||||||
props: {
|
const store = useStore();
|
||||||
modelValue: {
|
const props = defineProps({
|
||||||
type: Number,
|
value: String,
|
||||||
},
|
disabled: String
|
||||||
disabled: {
|
})
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, ctx) {
|
|
||||||
const store = useStore();
|
|
||||||
|
|
||||||
const state = reactive({
|
const id = computed(() => {
|
||||||
options: [],
|
return props.value
|
||||||
id: props.modelValue
|
})
|
||||||
});
|
|
||||||
watch(state.id, () => {
|
|
||||||
ctx.emit('update:modelValue', state.id)
|
|
||||||
})
|
|
||||||
|
|
||||||
onMounted(() => {
|
const emit = defineEmits({})
|
||||||
state.options = store.state.projectLevel.map(e => ({value: parseInt(e.dictCode), label: e.dictName}))
|
|
||||||
})
|
const options = ref([])
|
||||||
return {
|
|
||||||
...toRefs(state),
|
onMounted(() => {
|
||||||
};
|
options.value = store.state.projectLevel.map(e => ({value: parseInt(e.dictCode), label: e.dictName}))
|
||||||
},
|
})
|
||||||
};
|
|
||||||
|
function change(key) {
|
||||||
|
emit('update:value', key)
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-select
|
<a-select
|
||||||
|
:getPopupContainer="
|
||||||
|
(triggerNode) => {
|
||||||
|
return triggerNode.parentNode || document.body;
|
||||||
|
}
|
||||||
|
"
|
||||||
v-model:value="managerArray"
|
v-model:value="managerArray"
|
||||||
:placeholder="placeholder"
|
:placeholder="placeholder"
|
||||||
:filterOption="false"
|
:filterOption="false"
|
||||||
@@ -28,10 +33,12 @@ export default {
|
|||||||
|
|
||||||
props: {
|
props: {
|
||||||
value: {
|
value: {
|
||||||
type: Number,
|
type: String,
|
||||||
|
default: ''
|
||||||
},
|
},
|
||||||
name: {
|
name: {
|
||||||
type: Number,
|
type: String,
|
||||||
|
default: ''
|
||||||
},
|
},
|
||||||
disabled: {
|
disabled: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
@@ -55,9 +62,9 @@ export default {
|
|||||||
loading: false,
|
loading: false,
|
||||||
init: false
|
init: false
|
||||||
});
|
});
|
||||||
const getMemberThrottle = throttle(getMember, 500)
|
|
||||||
|
|
||||||
watch(() => state.memberParam, getMemberThrottle)
|
watch(()=>state.memberParam.keyWord , throttle(getMember, 500))
|
||||||
|
watch(()=>state.memberParam.pageNo , throttle(getPushMember, 500))
|
||||||
watch(props, init)
|
watch(props, init)
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
@@ -71,15 +78,21 @@ export default {
|
|||||||
getMemberData()
|
getMemberData()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getPushMember() {
|
||||||
|
state.loading = true
|
||||||
|
getMemberData()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function getMemberData() {
|
function getMemberData() {
|
||||||
|
console.log('getMemberData')
|
||||||
api1.getMemberInfo(state.memberParam).then((res) => {
|
api1.getMemberInfo(state.memberParam).then((res) => {
|
||||||
const list = res.data.data.rows.filter(e => !props.value?.includes(e.id + '')).map(e => ({
|
const list = res.data.data.rows.filter(e => !(props.value + '')?.includes(e.id + '')).map(e => ({
|
||||||
label: e.realName,
|
label: e.realName,
|
||||||
value: e.id
|
value: e.id
|
||||||
}));
|
}));
|
||||||
if (state.memberParam.pageNo === 1 && props.value) {
|
if (state.memberParam.pageNo === 1 && props.value) {
|
||||||
const arrManagerId = props.value.split(',')
|
const arrManagerId = (props.value + '').split(',')
|
||||||
const arrManager = props.name.split(',')
|
const arrManager = props.name.split(',')
|
||||||
state.options = [...arrManager.map((e, i) => ({label: e, value: arrManagerId[i]})), ...list]
|
state.options = [...arrManager.map((e, i) => ({label: e, value: arrManagerId[i]})), ...list]
|
||||||
} else state.options.push(...list)
|
} else state.options.push(...list)
|
||||||
@@ -102,10 +115,11 @@ export default {
|
|||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
console.log('init--', props)
|
console.log('init--', props)
|
||||||
if (props.value !== typeof state.managerArray === 'object' ? state.managerArray.join(',') : state.managerArray) {
|
console.log(Array.isArray(state.managerArray))
|
||||||
|
if ((props.value + '') !== (Array.isArray(state.managerArray) ? state.managerArray.join(',') : (state.managerArray + ''))) {
|
||||||
if (props.value) {
|
if (props.value) {
|
||||||
const arrManager = props.name.split(',')
|
const arrManager = props.name.split(',')
|
||||||
const arrManagerId = props.value.split(',')
|
const arrManagerId = (props.value + '').split(',')
|
||||||
state.managerArray = props.mode === 'select' ? props.value : arrManagerId;
|
state.managerArray = props.mode === 'select' ? props.value : arrManagerId;
|
||||||
state.options = arrManager.map((e, i) => ({label: e, value: arrManagerId[i]}))
|
state.options = arrManager.map((e, i) => ({label: e, value: arrManagerId[i]}))
|
||||||
} else {
|
} else {
|
||||||
@@ -124,7 +138,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function change(e, l) {
|
function change(e, l) {
|
||||||
console.log('change')
|
console.log('change', l)
|
||||||
if (Array.isArray(l)) {
|
if (Array.isArray(l)) {
|
||||||
ctx.emit('update:value', l.map(t => t.value).join(','))
|
ctx.emit('update:value', l.map(t => t.value).join(','))
|
||||||
ctx.emit('update:name', l.map(t => t.label).join(','))
|
ctx.emit('update:name', l.map(t => t.label).join(','))
|
||||||
|
|||||||
126
src/components/project/ProjectManagerNew.vue
Normal file
126
src/components/project/ProjectManagerNew.vue
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
<template>
|
||||||
|
<a-select
|
||||||
|
:getPopupContainer="
|
||||||
|
(triggerNode) => {
|
||||||
|
return triggerNode.parentNode || document.body;
|
||||||
|
}
|
||||||
|
"
|
||||||
|
v-model:value="managerArray"
|
||||||
|
:placeholder="placeholder"
|
||||||
|
:filterOption="true"
|
||||||
|
style="width: 100%"
|
||||||
|
:options="options"
|
||||||
|
allowClear
|
||||||
|
showSearch
|
||||||
|
:mode="mode"
|
||||||
|
:disabled="disabled"
|
||||||
|
@popupScroll="memberScroll"
|
||||||
|
@search="searchMember"
|
||||||
|
@change="change"
|
||||||
|
>
|
||||||
|
<template v-if="loading" #notFoundContent>
|
||||||
|
<a-spin size="small"/>
|
||||||
|
</template>
|
||||||
|
</a-select>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import {computed, defineEmits, defineProps, onMounted, ref, watch} from "vue";
|
||||||
|
import {scrollLoad, throttle} from "@/api/method";
|
||||||
|
import * as api1 from "@/api/index1";
|
||||||
|
import {useStore} from "vuex";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
value: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
disabled: Boolean,
|
||||||
|
placeholder: String,
|
||||||
|
mode: String
|
||||||
|
})
|
||||||
|
const store = useStore();
|
||||||
|
|
||||||
|
const managerArray = computed(() => {
|
||||||
|
return props.mode === 'select' ? props.value : props.value.split(',')
|
||||||
|
})
|
||||||
|
|
||||||
|
const emit = defineEmits({})
|
||||||
|
|
||||||
|
const options = ref([])
|
||||||
|
|
||||||
|
const memberParam = ref({keyWord: '', pageNo: 1, pageSize: 10})
|
||||||
|
const loading = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
watch(() => memberParam.value.keyWord, throttle(getSearchMember, 500))
|
||||||
|
watch(() => memberParam.value.pageNo, throttle(getPageMember, 500))
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
console.log('onMounted')
|
||||||
|
const memberOptions = store.state.memberInitInfo.map(e => ({
|
||||||
|
label: e.realName,
|
||||||
|
value: e.id
|
||||||
|
}))
|
||||||
|
if (props.value) {
|
||||||
|
options.value = [...(props.value + '').split(',').map((value, i) => ({
|
||||||
|
label: (props.name + '').split(',')[i],
|
||||||
|
value
|
||||||
|
})), ...memberOptions]
|
||||||
|
} else options.value = memberOptions
|
||||||
|
})
|
||||||
|
|
||||||
|
function getSearchMember() {
|
||||||
|
loading.value = true
|
||||||
|
options.value = []
|
||||||
|
getMemberData()
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPageMember() {
|
||||||
|
loading.value = true
|
||||||
|
getMemberData()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getMemberData() {
|
||||||
|
api1.getMemberInfo(memberParam.value).then((res) => {
|
||||||
|
const list = res.data.data.rows.filter(e => !(props.value + '').includes(e.id)).map(e => ({
|
||||||
|
label: e.realName,
|
||||||
|
value: e.id
|
||||||
|
}));
|
||||||
|
if (memberParam.value.pageNo === 1 && props.value) {
|
||||||
|
const arrManagerId = (props.value + '').split(',')
|
||||||
|
const arrManager = props.name.split(',')
|
||||||
|
options.value = [...arrManager.map((e, i) => ({label: e, value: arrManagerId[i]})), ...list]
|
||||||
|
} else options.value.push(...list)
|
||||||
|
loading.value = false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const memberScroll = (e) => {
|
||||||
|
let num = scrollLoad(e);
|
||||||
|
if (num === 2) {
|
||||||
|
memberParam.value.pageNo++;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//搜索学员
|
||||||
|
const searchMember = (keyWord) => {
|
||||||
|
keyWord && (memberParam.value = {keyWord, pageNo: 1, pageSize: 10});
|
||||||
|
};
|
||||||
|
|
||||||
|
function change(e, l) {
|
||||||
|
console.log('change', l)
|
||||||
|
if (Array.isArray(l)) {
|
||||||
|
emit('update:value', l.map(t => t.value).join(','))
|
||||||
|
emit('update:name', l.map(t => t.label).join(','))
|
||||||
|
} else {
|
||||||
|
emit('update:value', l.value)
|
||||||
|
emit('update:name', l.label)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
@@ -1,52 +1,43 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-select
|
<a-select
|
||||||
|
:getPopupContainer="
|
||||||
|
(triggerNode) => {
|
||||||
|
return triggerNode.parentNode || document.body;
|
||||||
|
}
|
||||||
|
"
|
||||||
v-model:value="id"
|
v-model:value="id"
|
||||||
:options="options"
|
:options="options"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
placeholder="请选择分类"
|
placeholder="请选择分类"
|
||||||
|
@change="change"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script setup>
|
||||||
import {onMounted, reactive, toRefs, watch} from "vue";
|
import {computed, defineEmits, defineProps, onMounted, ref} from "vue";
|
||||||
import {useStore} from "vuex";
|
import {useStore} from "vuex";
|
||||||
|
|
||||||
export default {
|
const store = useStore();
|
||||||
name: "TrainClass",
|
|
||||||
|
|
||||||
props: {
|
const props = defineProps({
|
||||||
modelValue: {
|
value: String,
|
||||||
type: Number,
|
disabled: String
|
||||||
},
|
})
|
||||||
disabled: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, ctx) {
|
|
||||||
const store = useStore();
|
|
||||||
|
|
||||||
const state = reactive({
|
const id = computed(() => {
|
||||||
options: [],
|
return props.value
|
||||||
id: props.modelValue
|
})
|
||||||
});
|
|
||||||
watch(state.id, () => {
|
|
||||||
ctx.emit('update:modelValue', state.id)
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(props, () => {
|
const emit = defineEmits({})
|
||||||
if (props.modelValue !== state.id) {
|
|
||||||
state.id = props.modelValue
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
|
const options = ref([])
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
options.value = store.state.projectSys.map(e => ({value: parseInt(e.dictCode), label: e.dictName}))
|
||||||
|
})
|
||||||
|
|
||||||
|
function change(key) {
|
||||||
|
emit('update:value', key)
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
state.options = store.state.projectSys.map(e => ({value: parseInt(e.dictCode), label: e.dictName}))
|
|
||||||
})
|
|
||||||
return {
|
|
||||||
...toRefs(state),
|
|
||||||
};
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -6,60 +6,68 @@
|
|||||||
* @FilePath: /fe-manage/src/store/index.js
|
* @FilePath: /fe-manage/src/store/index.js
|
||||||
* @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
|
||||||
*/
|
*/
|
||||||
import { createStore } from "vuex";
|
import {createStore} from "vuex";
|
||||||
// import * as api from '../api/index1'
|
// import * as api from '../api/index1'
|
||||||
export default createStore({
|
export default createStore({
|
||||||
state: {
|
state: {
|
||||||
openpages: localStorage.getItem("openpages")
|
openpages: localStorage.getItem("openpages")
|
||||||
? JSON.parse(localStorage.getItem("openpages"))
|
? JSON.parse(localStorage.getItem("openpages"))
|
||||||
: [
|
: [
|
||||||
{
|
{
|
||||||
pagename: "学习路径图",
|
pagename: "学习路径图",
|
||||||
href: "/learningpath",
|
href: "/learningpath",
|
||||||
active: true,
|
active: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
assessmentName: "",
|
||||||
|
routerId: null,
|
||||||
|
projectTemplateId: null,
|
||||||
|
userInfo: {},
|
||||||
|
orgtreeList: [],
|
||||||
|
faceclassPic: null,
|
||||||
|
faceclassClass: [],
|
||||||
|
faceclassScene: [],
|
||||||
|
projectLevel: [],//项目级别
|
||||||
|
projectSys: [],//培训分类
|
||||||
|
pathmapPic: [],//学习路径背景图
|
||||||
|
memberInitInfo: [],//学员默认
|
||||||
|
},
|
||||||
|
getters: {},
|
||||||
|
mutations: {
|
||||||
|
chengeOpenpages(state, list) {
|
||||||
|
// console.log('list', list)
|
||||||
|
state.openpages = list;
|
||||||
|
},
|
||||||
|
chengeRouterId(state, routerId) {
|
||||||
|
// console.log('list', list)
|
||||||
|
state.routerId = routerId;
|
||||||
},
|
},
|
||||||
],
|
|
||||||
|
|
||||||
assessmentName: "",
|
SET_assessmentName(state, name) {
|
||||||
routerId: null,
|
state.assessmentName = name;
|
||||||
projectTemplateId: null,
|
console.log("state.assessmentName");
|
||||||
orgtreeList: [],
|
console.log(state.assessmentName);
|
||||||
faceclassPic: null,
|
},
|
||||||
faceclassClass: [],
|
//获取组织树
|
||||||
faceclassScene: [],
|
getOrgtreeList(state, data) {
|
||||||
projectLevel: [],//项目级别
|
state.orgtreeList = data
|
||||||
projectSys: [],//培训分类
|
},
|
||||||
pathmapPic: [],//学习路径背景图
|
SET_DICT(state, {key, data}) {
|
||||||
},
|
state[key] = data
|
||||||
getters: {},
|
},
|
||||||
mutations: {
|
SET_MEMBER_INFO(state, data) {
|
||||||
chengeOpenpages(state, list) {
|
state.memberInitInfo = data
|
||||||
// console.log('list', list)
|
},
|
||||||
state.openpages = list;
|
SET_USER(state, userInfo) {
|
||||||
},
|
state.userInfo = userInfo
|
||||||
chengeRouterId(state, routerId) {
|
},
|
||||||
// console.log('list', list)
|
SET_projectTemplateId(state, projectTemplateId) {
|
||||||
state.routerId = routerId;
|
state.projectTemplateId = projectTemplateId;
|
||||||
},
|
}
|
||||||
|
|
||||||
SET_assessmentName(state, name) {
|
|
||||||
state.assessmentName = name;
|
|
||||||
console.log("state.assessmentName");
|
|
||||||
console.log(state.assessmentName);
|
|
||||||
},
|
|
||||||
//获取组织树
|
|
||||||
getOrgtreeList(state, data) {
|
|
||||||
state.orgtreeList = data
|
|
||||||
},
|
|
||||||
SET_DICT(state, { key, data }) {
|
|
||||||
state[key] = data
|
|
||||||
},
|
|
||||||
SET_projectTemplateId(state, projectTemplateId) {
|
|
||||||
state.projectTemplateId = projectTemplateId;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
actions: {},
|
actions: {},
|
||||||
modules: {},
|
modules: {},
|
||||||
});
|
});
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -230,13 +230,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mbl_items">
|
<div class="mbl_items">
|
||||||
<div class="item_nam">
|
<div v-if="(attachMap.length>0)" class="item_nam">
|
||||||
<span style="margin-right: 10px">附件</span>
|
<span style="margin-right: 10px">附件</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item_inp" v-for="(value, index) in attachMap" :key="index">
|
<div class="item_inp" v-for="(value, index) in attachMap" :key="index">
|
||||||
<a :src="value">
|
<a>
|
||||||
{{ ['附件一', '附件二', '附件三', '附件四', '附件五', '附件六'][index] }}
|
{{ ['附件一', '附件二', '附件三', '附件四', '附件五', '附件六'][index] }}
|
||||||
</a>
|
</a>
|
||||||
|
<a style="margin-left:120px;" :src="value" :href="value">查看</a>
|
||||||
<!-- <a-upload multiple :show-upload-list="false" :before-upload="beforeUpload2">
|
<!-- <a-upload multiple :show-upload-list="false" :before-upload="beforeUpload2">
|
||||||
<div class="accessory" style="cursor: pointer">
|
<div class="accessory" style="cursor: pointer">
|
||||||
<div class="accessory_icon">
|
<div class="accessory_icon">
|
||||||
@@ -287,9 +288,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="fotarea">
|
<div class="fotarea">
|
||||||
<div style="border: 1px solid #ccc">
|
<div style="border: 1px solid #ccc">
|
||||||
<Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig"
|
<!-- <Toolbar style="border-bottom: 1px solid #ccc;width:900px;height: 300px;" :defaultConfig="toolbarConfig"
|
||||||
:mode="mode" />
|
:mode="mode" /> -->
|
||||||
<Editor v-model="valueHtml" :defaultConfig="editorConfig" :mode="mode" @onCreated="handleCreated" />
|
<Editor @focus="onEditorFocus" style="border-bottom: 1px solid #ccc;width:900px;height: 300px;" v-model="valueHtml" :defaultConfig="editorConfig" :mode="mode" @onCreated="handleCreated" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -319,7 +320,7 @@ import { reactive, toRefs, onMounted, ref } from "vue";
|
|||||||
import { list, courseAuditView, courseDetail } from "../../api/indexAudit";
|
import { list, courseAuditView, courseDetail } from "../../api/indexAudit";
|
||||||
import { toDate } from "../../api/method";
|
import { toDate } from "../../api/method";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
|
import { Editor } from "@wangeditor/editor-for-vue";
|
||||||
import { iframeUrl } from "../../api/method";
|
import { iframeUrl } from "../../api/method";
|
||||||
import * as api1 from "@/api/index1";
|
import * as api1 from "@/api/index1";
|
||||||
|
|
||||||
@@ -327,7 +328,7 @@ export default {
|
|||||||
name: "CoursereViewedN",
|
name: "CoursereViewedN",
|
||||||
components: {
|
components: {
|
||||||
Editor,
|
Editor,
|
||||||
Toolbar,
|
// Toolbar,
|
||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
@@ -505,7 +506,7 @@ export default {
|
|||||||
state.faceDetailObj = result;
|
state.faceDetailObj = result;
|
||||||
heroImg.value.src = result.picUrl
|
heroImg.value.src = result.picUrl
|
||||||
valueHtml.value = result.outline
|
valueHtml.value = result.outline
|
||||||
attachMap.value = result.attach.split(",")
|
attachMap.value = result.attach==""?[]:result.attach.split(",")
|
||||||
console.log(result, attachMap.value);
|
console.log(result, attachMap.value);
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
@@ -654,6 +655,11 @@ export default {
|
|||||||
//获取分类列表
|
//获取分类列表
|
||||||
state.calssifyList = (await getDictList("faceclassClass")).map(e => ({ label: e.dictName, value: e.dictCode }))
|
state.calssifyList = (await getDictList("faceclassClass")).map(e => ({ label: e.dictName, value: e.dictCode }))
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 禁止用户编辑文本框内容
|
||||||
|
const onEditorFocus = (event) => {
|
||||||
|
event.enable(false);
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
getFaceList,
|
getFaceList,
|
||||||
@@ -671,7 +677,8 @@ export default {
|
|||||||
valueHtml,
|
valueHtml,
|
||||||
attachMap,
|
attachMap,
|
||||||
contentList11,
|
contentList11,
|
||||||
sceneist11
|
sceneist11,
|
||||||
|
onEditorFocus
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ export default {
|
|||||||
key: "topName",
|
key: "topName",
|
||||||
align: "center",
|
align: "center",
|
||||||
width: "10%",
|
width: "10%",
|
||||||
|
customRender: ({record: {parentId,name}}) => <div>{parentId==0?name:(parentId)}</div>,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "项目经理",
|
title: "项目经理",
|
||||||
@@ -219,6 +220,7 @@ export default {
|
|||||||
dataIndex: "description",
|
dataIndex: "description",
|
||||||
key: "description",
|
key: "description",
|
||||||
align: "center",
|
align: "center",
|
||||||
|
customRender: ({record: {auditList,description}}) => <div>{auditList.length!==0?auditList[auditList.length-1].description?auditList[auditList.length-1].description:'-':description?description:'-'}</div>,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -290,6 +292,7 @@ export default {
|
|||||||
status: 1,
|
status: 1,
|
||||||
};
|
};
|
||||||
auditedlist(objn).then((res) => {
|
auditedlist(objn).then((res) => {
|
||||||
|
console.log('获取已审核项目列表数据',res)
|
||||||
let result = res.data.data;
|
let result = res.data.data;
|
||||||
state.total = res.data.data.total;
|
state.total = res.data.data.total;
|
||||||
state.tableData1 = result.rows
|
state.tableData1 = result.rows
|
||||||
@@ -347,7 +350,7 @@ export default {
|
|||||||
reset,
|
reset,
|
||||||
closeProjAuditModal,
|
closeProjAuditModal,
|
||||||
showProjAuditModal,
|
showProjAuditModal,
|
||||||
setAudit,
|
setAudit
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -589,20 +589,20 @@
|
|||||||
/>
|
/>
|
||||||
<!-- 查看权抽屉 -->
|
<!-- 查看权抽屉 -->
|
||||||
<proj-check-ship
|
<proj-check-ship
|
||||||
v-model:ProjCheckvisible="Queryvisible"
|
v-model:ProjCheckvisible="showCheck"
|
||||||
:selectProjectId="selectPathId"
|
v-model:selectProjectId="selectPathId"
|
||||||
v-model:addAuthList="addAuthList"
|
v-model:addAuthList="addAuthList"
|
||||||
:authClassify="authClassify"
|
v-model:authClassify="authClassify"
|
||||||
classify="learnPath"
|
classify="learnPath"
|
||||||
/>
|
/>
|
||||||
<!-- 管理权抽屉 -->
|
<!-- 管理权抽屉 -->
|
||||||
<proj-check-ship
|
<!-- <proj-check-ship
|
||||||
v-model:ProjCheckvisible="Managevisible"
|
v-model:ProjCheckvisible="Managevisible"
|
||||||
:selectProjectId="selectPathId"
|
:selectProjectId="selectPathId"
|
||||||
v-model:addAuthList="addAuthList"
|
v-model:addAuthList="addAuthList"
|
||||||
:authClassify="authClassify"
|
:authClassify="authClassify"
|
||||||
classify="learnPath"
|
classify="learnPath"
|
||||||
/>
|
/> -->
|
||||||
<!-- 创建路径loading -->
|
<!-- 创建路径loading -->
|
||||||
|
|
||||||
<!-- 更多背景图 v-model:visible="learnBgMore" -->
|
<!-- 更多背景图 v-model:visible="learnBgMore" -->
|
||||||
@@ -733,6 +733,7 @@ export default {
|
|||||||
PLvisible: false, //授权名单抽屉
|
PLvisible: false, //授权名单抽屉
|
||||||
Queryvisible: false, //查看权抽屉
|
Queryvisible: false, //查看权抽屉
|
||||||
Managevisible: false, //管理权抽屉
|
Managevisible: false, //管理权抽屉
|
||||||
|
showCheck: false,
|
||||||
|
|
||||||
value1: "",
|
value1: "",
|
||||||
value2: "",
|
value2: "",
|
||||||
@@ -991,12 +992,12 @@ export default {
|
|||||||
const showQuery = (id) => {
|
const showQuery = (id) => {
|
||||||
state.authClassify = 1;
|
state.authClassify = 1;
|
||||||
state.selectPathId = id;
|
state.selectPathId = id;
|
||||||
state.Queryvisible = true;
|
state.showCheck = true;
|
||||||
};
|
};
|
||||||
const showManage = (id) => {
|
const showManage = (id) => {
|
||||||
state.authClassify = 2;
|
state.authClassify = 2;
|
||||||
state.selectPathId = id;
|
state.selectPathId = id;
|
||||||
state.Managevisible = true;
|
state.showCheck = true;
|
||||||
};
|
};
|
||||||
const getTableDate = (tableData) => {
|
const getTableDate = (tableData) => {
|
||||||
let data = tableData;
|
let data = tableData;
|
||||||
@@ -1713,6 +1714,7 @@ export default {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
selectProjectName,
|
selectProjectName,
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
<div class="taskmain">快速创建项目详情</div>
|
<div class="taskmain">快速创建项目详情</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="second">
|
<div class="second">
|
||||||
<router-link :to="{ path: '/leveladddetail' }">
|
<div @click="totask">
|
||||||
<div
|
<div
|
||||||
class="taskbox"
|
class="taskbox"
|
||||||
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
|
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
|
||||||
@@ -117,10 +117,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="centermain">快速添加任务/关卡</div>
|
<div class="centermain">快速添加任务/关卡</div>
|
||||||
</div>
|
</div>
|
||||||
</router-link>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="taskbox"
|
class="taskbox"
|
||||||
@click="showAddStu"
|
@click="tostudent"
|
||||||
style="background: linear-gradient(180deg, #ddeaff, #f0f8fe)"
|
style="background: linear-gradient(180deg, #ddeaff, #f0f8fe)"
|
||||||
>
|
>
|
||||||
<div class="leftt">
|
<div class="leftt">
|
||||||
@@ -415,31 +415,33 @@
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
:src="
|
:src="
|
||||||
item.type === 1
|
item.type == 1
|
||||||
? require('../../assets/images/leveladd/zai.png')
|
? require('../../assets/images/leveladd/zai.png')
|
||||||
: type === 2
|
: item.type == 2
|
||||||
? require('../../assets/images/leveladd/mian.png')
|
? require('../../assets/images/leveladd/mian.png')
|
||||||
: item.type === 3
|
: item.type == 3
|
||||||
? require('../../assets/images/leveladd/an.png')
|
? require('../../assets/images/leveladd/an.png')
|
||||||
: item.type === 4
|
: item.type == 4
|
||||||
? require('../../assets/images/leveladd/zuo.png')
|
? require('../../assets/images/leveladd/zuo.png')
|
||||||
: item.type === 5
|
: item.type == 5
|
||||||
? require('../../assets/images/leveladd/kao.png')
|
? require('../../assets/images/leveladd/kao.png')
|
||||||
: item.type === 6
|
: item.type == 6
|
||||||
? require('../../assets/images/leveladd/zhi.png')
|
? require('../../assets/images/leveladd/zhi.png')
|
||||||
: item.type === 7
|
: item.type == 7
|
||||||
? require('../../assets/images/leveladd/wai.png')
|
? require('../../assets/images/leveladd/wai.png')
|
||||||
: item.type === 8
|
: item.type == 8
|
||||||
? require('../../assets/images/leveladd/tao.png')
|
? require('../../assets/images/leveladd/tao.png')
|
||||||
: item.type === 9
|
: item.type == 9
|
||||||
? require('../../assets/images/leveladd/huo.png')
|
? require('../../assets/images/leveladd/huo.png')
|
||||||
: item.type === 10
|
: item.type == 10
|
||||||
? require('../../assets/images/leveladd/ce.png')
|
? require('../../assets/images/leveladd/ce.png')
|
||||||
: item.type === 11
|
: item.type == 11
|
||||||
? require('../../assets/images/leveladd/diao.png')
|
? require('../../assets/images/leveladd/pinggu.png')
|
||||||
: item.type === 12
|
: item.type == 12
|
||||||
? require('../../assets/images/leveladd/tou.png')
|
? require('../../assets/images/leveladd/tou.png')
|
||||||
: null
|
: item.type == 13
|
||||||
|
? require('../../assets/images/leveladd/tou.png')
|
||||||
|
: require('../../assets/images/leveladd/xiangmu.png')
|
||||||
"
|
"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -458,11 +460,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="time">
|
<div class="time">
|
||||||
<div class="timetext">开始时间</div>
|
<div class="timetext">开始时间</div>
|
||||||
<div class="timetext">{{ item.beginTime }}</div>
|
<div class="timetext">{{ item.startTime!==null?item.startTime:''}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="progress">
|
<div class="progress">
|
||||||
<div class="progresstext">
|
<div class="progresstext">
|
||||||
{{ item.complete }}/{{ item.total }}人
|
{{ item.complete?item.complete:0 }}/{{ item.total?item.total:0 }}人
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<a-progress
|
<a-progress
|
||||||
@@ -472,7 +474,7 @@
|
|||||||
trailColor="rgba(253, 209, 98, 0.2)"
|
trailColor="rgba(253, 209, 98, 0.2)"
|
||||||
/>
|
/>
|
||||||
<span class="progresstext" style="margin-left: 10px"
|
<span class="progresstext" style="margin-left: 10px"
|
||||||
>{{ item.percent }}%</span
|
>{{ item.percent?item.percent:0 }}%</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -771,7 +773,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btnbox" style="margin: 20px">
|
<div class="btnbox" style="margin: 20px">
|
||||||
<a-upload
|
<a-upload
|
||||||
v-if="(docChecked==true)"
|
v-if="docChecked == true"
|
||||||
v-model:file-list="fileList"
|
v-model:file-list="fileList"
|
||||||
name="file"
|
name="file"
|
||||||
action="/manageApi/file/upload"
|
action="/manageApi/file/upload"
|
||||||
@@ -788,7 +790,11 @@
|
|||||||
alt=""
|
alt=""
|
||||||
/>
|
/>
|
||||||
</a-upload>
|
</a-upload>
|
||||||
<div v-if="(docChecked==true)" class="btnbox" style="margin: 20px">
|
<div
|
||||||
|
v-if="docChecked == true"
|
||||||
|
class="btnbox"
|
||||||
|
style="margin: 20px"
|
||||||
|
>
|
||||||
<span style="color: #999999">
|
<span style="color: #999999">
|
||||||
支持:pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip
|
支持:pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip
|
||||||
</span>
|
</span>
|
||||||
@@ -992,7 +998,7 @@
|
|||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="icon"></div>
|
<div class="icon"></div>
|
||||||
<span>活动管理</span>
|
<span>活动管理</span>
|
||||||
<div class="close_exit" @click="closehuodModal"></div>
|
<!-- <div class="close_exit" @click="closehuodModal"></div> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<div><img src="../../assets/images/taskpage/erweima.png" /></div>
|
<div><img src="../../assets/images/taskpage/erweima.png" /></div>
|
||||||
@@ -1882,6 +1888,7 @@ export default {
|
|||||||
const getOverview = () => {
|
const getOverview = () => {
|
||||||
getRouterOverview(state.routerId)
|
getRouterOverview(state.routerId)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
|
console.log(res)
|
||||||
Object.keys(res.data.data.routerInfoOverview).forEach((item) => {
|
Object.keys(res.data.data.routerInfoOverview).forEach((item) => {
|
||||||
levelList.routerInfoOverview[item] =
|
levelList.routerInfoOverview[item] =
|
||||||
res.data.data.routerInfoOverview[item] || 0;
|
res.data.data.routerInfoOverview[item] || 0;
|
||||||
@@ -1894,7 +1901,7 @@ export default {
|
|||||||
// console.log(r)
|
// console.log(r)
|
||||||
// })
|
// })
|
||||||
state.addLoading = false;
|
state.addLoading = false;
|
||||||
console.log("项目概览--" + res);
|
console.log("项目概览--", res);
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
state.addLoading = false;
|
state.addLoading = false;
|
||||||
@@ -1906,6 +1913,8 @@ export default {
|
|||||||
const myGetRouterDetail = () => {
|
const myGetRouterDetail = () => {
|
||||||
GetRouterDetail(state.routerId)
|
GetRouterDetail(state.routerId)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
|
console.log('router-list',res)
|
||||||
|
state.fileList = JSON.parse(res.data.data.routerInfo.attach)
|
||||||
if (res.data.data.routerInfo.status == 1) {
|
if (res.data.data.routerInfo.status == 1) {
|
||||||
state.nodata = false;
|
state.nodata = false;
|
||||||
}
|
}
|
||||||
@@ -2111,6 +2120,15 @@ export default {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const totask = () => {
|
||||||
|
state.activeKey = "2";
|
||||||
|
};
|
||||||
|
const tostudent = () => {
|
||||||
|
state.activeKey = "3";
|
||||||
|
getStudent();
|
||||||
|
// state.activeKey1 = "8";
|
||||||
|
};
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
...toRefs(levelList),
|
...toRefs(levelList),
|
||||||
@@ -2162,6 +2180,8 @@ export default {
|
|||||||
setconfig,
|
setconfig,
|
||||||
deFile,
|
deFile,
|
||||||
deleteStu,
|
deleteStu,
|
||||||
|
totask,
|
||||||
|
tostudent,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1385,10 +1385,13 @@ export default {
|
|||||||
const dataAssignment = (id) => {
|
const dataAssignment = (id) => {
|
||||||
console.log(state.level);
|
console.log(state.level);
|
||||||
for (let i = 0; i < state.level.length; i++) {
|
for (let i = 0; i < state.level.length; i++) {
|
||||||
if (state.level[i].chapterId === id) {
|
console.log("state.level[i].chapterId", state.level[i].chapterId, id);
|
||||||
|
if (state.level[i].chapterId == Number(id)) {
|
||||||
let array = [];
|
let array = [];
|
||||||
state.chooseProjectList = JSON.stringify(state.level[i].taskList);
|
state.chooseProjectList = JSON.stringify(state.level[i].taskList);
|
||||||
|
console.log("state.level[i].taskList", state.level[i].taskList);
|
||||||
state.level[i].taskList.forEach((element) => {
|
state.level[i].taskList.forEach((element) => {
|
||||||
|
// console.log("element", element);
|
||||||
let obj = {
|
let obj = {
|
||||||
id: element.routerTaskId,
|
id: element.routerTaskId,
|
||||||
key: element.routerTaskId,
|
key: element.routerTaskId,
|
||||||
@@ -1403,9 +1406,12 @@ export default {
|
|||||||
routerId: element.routerId,
|
routerId: element.routerId,
|
||||||
chapterId: element.chapterId,
|
chapterId: element.chapterId,
|
||||||
};
|
};
|
||||||
|
// console.log("obj", obj);
|
||||||
array.push(obj);
|
array.push(obj);
|
||||||
|
// console.log("array", array);
|
||||||
});
|
});
|
||||||
state.tableData = array;
|
state.tableData = array;
|
||||||
|
// console.log("tableData", state.tableData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1432,12 +1438,15 @@ export default {
|
|||||||
});
|
});
|
||||||
console.log("路径图详情", res);
|
console.log("路径图详情", res);
|
||||||
if (state.level.length > 0) {
|
if (state.level.length > 0) {
|
||||||
let chapter = localStorage.getItem("chapterId");
|
let chapter = localStorage.getItem("chapterId")
|
||||||
// console.log("chapter", chapter, chapter !== "null");
|
? JSON.parse(localStorage.getItem("chapterId"))
|
||||||
|
: null;
|
||||||
|
console.log("chapter", chapter);
|
||||||
if (chapter) {
|
if (chapter) {
|
||||||
dataAssignment(chapter); //用哪个的任务表
|
dataAssignment(chapter); //用哪个的任务表
|
||||||
state.isactive = chapter; //哪个亮
|
state.isactive = chapter; //哪个亮
|
||||||
} else {
|
} else {
|
||||||
|
console.log("state.level[0]", state.level[0]);
|
||||||
dataAssignment(state.level[0].chapterId);
|
dataAssignment(state.level[0].chapterId);
|
||||||
state.isactive = state.level[0].chapterId;
|
state.isactive = state.level[0].chapterId;
|
||||||
}
|
}
|
||||||
@@ -1740,7 +1749,7 @@ export default {
|
|||||||
const moveTask = () => {
|
const moveTask = () => {
|
||||||
if (state.isactive == state.removeStageId) {
|
if (state.isactive == state.removeStageId) {
|
||||||
message.destroy();
|
message.destroy();
|
||||||
message.warning("选择的任务已在当前阶段");
|
message.warning("选择的任务已在当前关卡");
|
||||||
} else if (state.removeStageId == null) {
|
} else if (state.removeStageId == null) {
|
||||||
message.destroy();
|
message.destroy();
|
||||||
message.warning("请选择关卡");
|
message.warning("请选择关卡");
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<img class="img1" src="../../assets/images/leveladd/ma.png" />
|
<!-- <img class="img1" src="../../assets/images/leveladd/ma.png" />
|
||||||
<div class="line"></div>
|
<div class="line"></div>
|
||||||
<img class="img2" src="../../assets/images/projectadd/ending.png" />
|
<img class="img2" src="../../assets/images/projectadd/ending.png" />
|
||||||
<div class="pub">结束项目</div>
|
<div class="pub">结束项目</div>
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
<div class="sammo">复制</div>
|
<div class="sammo">复制</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="line"></div>
|
<div class="line"></div> -->
|
||||||
<router-link to="/templatelibrary"
|
<router-link to="/templatelibrary"
|
||||||
><div style="display: flex">
|
><div style="display: flex">
|
||||||
<img class="img2" src="../../assets/images/leveladd/back.png" />
|
<img class="img2" src="../../assets/images/leveladd/back.png" />
|
||||||
|
|||||||
@@ -2,12 +2,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="projectAdd">
|
<div class="projectAdd">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<span class="title">{{ projectInfo.parentId ? '编辑' : '创建' }}项目</span>
|
<span class="title"
|
||||||
|
>{{ projectInfo.parentId ? "编辑" : "创建" }}项目</span
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
@click="backPage"
|
@click="backPage"
|
||||||
style="cursor: pointer"
|
style="cursor: pointer"
|
||||||
to="/projectmanage"
|
to="/projectmanage"
|
||||||
class="goback"
|
class="goback"
|
||||||
>
|
>
|
||||||
<span class="return"></span><span class="returntext">返回</span>
|
<span class="return"></span><span class="returntext">返回</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -17,8 +19,8 @@
|
|||||||
<div class="name" v-if="projectInfo.parentName">
|
<div class="name" v-if="projectInfo.parentName">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">项目归属</div>
|
<div class="inname">项目归属</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -31,26 +33,26 @@
|
|||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">项目名称</div>
|
<div class="inname">项目名称</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-input
|
<a-input
|
||||||
v-model:value="projectInfo.name"
|
v-model:value="projectInfo.name"
|
||||||
placeholder="请输入项目名称"
|
placeholder="请输入项目名称"
|
||||||
show-count
|
show-count
|
||||||
:maxlength="30"
|
:maxlength="30"
|
||||||
:disabled="viewDetail ? true : false"
|
:disabled="viewDetail ? true : false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">分类</div>
|
<div class="inname">分类</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -61,14 +63,14 @@
|
|||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">封面图</div>
|
<div class="inname">封面图</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
:class="`box ${projectInfo.picUrl == src?'active':''}`"
|
:class="`box ${projectInfo.picUrl == src ? 'active' : ''}`"
|
||||||
style="
|
style="
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 100px;
|
height: 100px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
@@ -76,68 +78,77 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
"
|
"
|
||||||
v-for="(src,index) in projectPic"
|
v-for="(src, index) in projectPic"
|
||||||
:key="index"
|
:key="index"
|
||||||
@click="()=>{
|
@click="
|
||||||
projectInfo.picUrl = src
|
() => {
|
||||||
}"
|
projectInfo.picUrl = src;
|
||||||
|
}
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
style="
|
style="
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 100px;
|
height: 100px;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
"
|
"
|
||||||
:src="src"
|
:src="src"
|
||||||
alt="avatar"
|
alt="avatar"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">项目时间</div>
|
<div class="inname">项目时间</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-range-picker
|
<a-range-picker
|
||||||
separator="至"
|
separator="至"
|
||||||
:placeholder="[' 开始时间', ' 结束时间']"
|
:placeholder="[' 开始时间', ' 结束时间']"
|
||||||
v-model:value="projectInfo.rangeTime"
|
v-model:value="projectInfo.rangeTime"
|
||||||
style="width: 100%; height: 40px; border-radius: 5px"
|
style="width: 100%; height: 40px; border-radius: 5px"
|
||||||
valueFormat="YYYY-MM-DD HH:mm:ss"
|
valueFormat="YYYY-MM-DD HH:mm:ss"
|
||||||
@change="timeChange"
|
@change="timeChange"
|
||||||
:disabled="viewDetail ? true : false"
|
:disabled="viewDetail ? true : false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">项目经理</div>
|
<div class="inname">项目经理</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<ProjectManager v-model:value="projectInfo.managerId" v-model:name="projectInfo.manager" mode="multiple"></ProjectManager>
|
<ProjectManager
|
||||||
|
v-model:value="projectInfo.managerId"
|
||||||
|
v-model:name="projectInfo.manager"
|
||||||
|
mode="multiple"
|
||||||
|
></ProjectManager>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">资源归属</div>
|
<div class="inname">资源归属</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="in select">
|
<div class="in select">
|
||||||
<OrgClass v-model:value="projectInfo.sourceBelongId" v-model:name="projectInfo.sourceBelongName"></OrgClass>
|
<OrgClass
|
||||||
|
v-model:value="projectInfo.sourceBelongId"
|
||||||
|
v-model:name="projectInfo.sourceBelongName"
|
||||||
|
></OrgClass>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name name2">
|
<div class="name name2">
|
||||||
@@ -146,12 +157,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-textarea
|
<a-textarea
|
||||||
v-model:value="projectInfo.remark"
|
v-model:value="projectInfo.remark"
|
||||||
style="height: 80px"
|
style="height: 80px"
|
||||||
placeholder="请输入说明"
|
placeholder="请输入说明"
|
||||||
show-count
|
show-count
|
||||||
:maxlength="200"
|
:maxlength="200"
|
||||||
:disabled="viewDetail ? true : false"
|
:disabled="viewDetail ? true : false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -160,26 +171,39 @@
|
|||||||
<div class="inname">同步学习记录</div>
|
<div class="inname">同步学习记录</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-switch
|
<a-checkbox
|
||||||
v-model:checked="projectInfo.courseSyncFlag"
|
v-model:checked="courseSyncFlag"
|
||||||
:checkedValue="1"
|
:disabled="viewDetail ? true : false"
|
||||||
:unCheckedValue="0"
|
><span
|
||||||
:disabled="viewDetail ? true : false"
|
|
||||||
><span
|
|
||||||
style="
|
style="
|
||||||
width: 100%;
|
width: 100%;
|
||||||
color: rgba(109, 117, 132, 1);
|
color: rgba(109, 117, 132, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
"
|
"
|
||||||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||||
></a-switch>
|
></a-checkbox
|
||||||
|
>
|
||||||
|
<!-- <a-switch
|
||||||
|
v-model:checked="projectInfo.courseSyncFlag"
|
||||||
|
:checkedValue="1"
|
||||||
|
:unCheckedValue="0"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
|
><span
|
||||||
|
style="
|
||||||
|
width: 100%;
|
||||||
|
color: rgba(109, 117, 132, 1);
|
||||||
|
font-size: 14px;
|
||||||
|
"
|
||||||
|
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||||
|
></a-switch
|
||||||
|
> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">项目级别</div>
|
<div class="inname">项目级别</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -190,8 +214,8 @@
|
|||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">培训分类</div>
|
<div class="inname">培训分类</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -201,19 +225,30 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
|
<!-- <img-->
|
||||||
|
<!-- class="nameimg"-->
|
||||||
|
<!-- src="../../assets/images/basicinfo/asterisk.png"-->
|
||||||
|
<!-- />-->
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">是否BOEU实施</div>
|
<div class="inname">是否BOEU实施</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-switch
|
<!-- <a-switch
|
||||||
v-model:checked="projectInfo.boeFlag"
|
v-model:checked="projectInfo.boeFlag"
|
||||||
:checkedValue="1"
|
:checkedValue="1"
|
||||||
:unCheckedValue="0"
|
:unCheckedValue="0"
|
||||||
:disabled="viewDetail ? true : false"
|
:disabled="viewDetail ? true : false"
|
||||||
></a-switch>
|
></a-switch> -->
|
||||||
|
<a-radio-group
|
||||||
|
v-model:value="projectInfo.boeFlag"
|
||||||
|
:disabled="viewDetail ? true : false"
|
||||||
|
>
|
||||||
|
<a-radio :style="radioStyle" :value="1">是</a-radio>
|
||||||
|
<a-radio :style="radioStyle" :value="0">否</a-radio>
|
||||||
|
</a-radio-group>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -222,19 +257,19 @@
|
|||||||
<div class="inname" style="width: 50px">模版</div>
|
<div class="inname" style="width: 50px">模版</div>
|
||||||
<div class="in select" style="margin-left: 2px">
|
<div class="in select" style="margin-left: 2px">
|
||||||
<a-select
|
<a-select
|
||||||
:getPopupContainer="
|
:getPopupContainer="
|
||||||
(triggerNode) => {
|
(triggerNode) => {
|
||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
v-model:value="classifySelect5"
|
v-model:value="classifySelect5"
|
||||||
placeholder="请选择模版"
|
placeholder="请选择模版"
|
||||||
:size="size"
|
:size="size"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:options="classifyList5"
|
:options="classifyList5"
|
||||||
@change="classificationChange5"
|
@change="classificationChange5"
|
||||||
@popupScroll="templateScroll"
|
@popupScroll="templateScroll"
|
||||||
:fieldNames="{
|
:fieldNames="{
|
||||||
label: 'name',
|
label: 'name',
|
||||||
value: 'projectTemplateId',
|
value: 'projectTemplateId',
|
||||||
}"
|
}"
|
||||||
@@ -247,26 +282,25 @@
|
|||||||
<div class="footer">
|
<div class="footer">
|
||||||
<div class="btn">
|
<div class="btn">
|
||||||
<a-button v-on:click="createProject" type="primary" class="btn1"
|
<a-button v-on:click="createProject" type="primary" class="btn1"
|
||||||
>确定
|
>确定
|
||||||
</a-button
|
</a-button>
|
||||||
>
|
|
||||||
<a-button @click="backPage" class="btn2">取消</a-button>
|
<a-button @click="backPage" class="btn2">取消</a-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {onMounted, reactive, toRefs, watch} from "vue";
|
import { onMounted, reactive, toRefs, watch } from "vue";
|
||||||
import {message} from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import {useRoute, useRouter} from "vue-router";
|
import { useRoute, useRouter } from "vue-router";
|
||||||
import * as api from "../../api/index";
|
import * as api from "../../api/index";
|
||||||
import {useStore} from "vuex";
|
import { useStore } from "vuex";
|
||||||
import ProjectClass from "@/components/project/ProjectClass";
|
import ProjectClass from "@/components/project/ProjectClass";
|
||||||
import TrainClass from "@/components/project/TrainClass";
|
import TrainClass from "@/components/project/TrainClass";
|
||||||
import OrgClass from "@/components/project/OrgClass";
|
import OrgClass from "@/components/project/OrgClass";
|
||||||
import ProjectManager from "@/components/project/ProjectManager";
|
import ProjectManager from "@/components/project/ProjectManager";
|
||||||
import ProjectLevel from "@/components/project/ProjectLevel";
|
import ProjectLevel from "@/components/project/ProjectLevel";
|
||||||
import {scrollLoad} from "@/api/method";
|
import { scrollLoad } from "@/api/method";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "projectAdd",
|
name: "projectAdd",
|
||||||
@@ -275,7 +309,7 @@ export default {
|
|||||||
ProjectLevel,
|
ProjectLevel,
|
||||||
ProjectClass,
|
ProjectClass,
|
||||||
TrainClass,
|
TrainClass,
|
||||||
OrgClass
|
OrgClass,
|
||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
@@ -294,37 +328,48 @@ export default {
|
|||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
keyWord: "",
|
keyWord: "",
|
||||||
},
|
},
|
||||||
classifyList5: []
|
classifyList5: [],
|
||||||
|
courseSyncFlag: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
state.projectPic = store.state.projectPic.map(e => e.dictValue)
|
state.projectPic = store.state.projectPic.map((e) => e.dictValue);
|
||||||
state.viewDetail = routers.query.viewDetail
|
state.viewDetail = routers.query.viewDetail;
|
||||||
getProjectInfo()
|
getProjectInfo();
|
||||||
getTemplate()
|
getTemplate();
|
||||||
})
|
});
|
||||||
|
|
||||||
watch(routers.query, () => {
|
watch(routers.query, () => {
|
||||||
state.projectInfo.projectId = routers.query.projectId
|
state.projectInfo.projectId = routers.query.projectId;
|
||||||
state.projectInfo.parentName = routers.query.parentName
|
state.projectInfo.parentName = routers.query.parentName;
|
||||||
state.projectInfo.parentId = routers.query.parentId
|
state.projectInfo.parentId = routers.query.parentId;
|
||||||
})
|
});
|
||||||
|
|
||||||
|
|
||||||
function getProjectInfo() {
|
function getProjectInfo() {
|
||||||
if (!routers.query.projectId) {
|
if (!routers.query.projectId) {
|
||||||
state.projectInfo = {parentName: routers.query.parentName, parentId: routers.query.parentId}
|
state.projectInfo = {
|
||||||
return
|
parentName: routers.query.parentName,
|
||||||
|
parentId: routers.query.parentId,
|
||||||
|
};
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
api.getProjectDetail({projectId: routers.query.projectId}).then(res => {
|
api
|
||||||
state.projectInfo = res.data.data.projectInfo
|
.getProjectDetail({ projectId: routers.query.projectId })
|
||||||
state.projectInfo.rangeTime = [state.projectInfo.beginTime, state.projectInfo.endTime]
|
.then((res) => {
|
||||||
state.projectInfo.parentName = routers.query.parentName
|
state.projectInfo = res.data.data.projectInfo;
|
||||||
})
|
state.projectInfo.rangeTime = [
|
||||||
|
state.projectInfo.beginTime,
|
||||||
|
state.projectInfo.endTime,
|
||||||
|
];
|
||||||
|
state.projectInfo.parentName = routers.query.parentName;
|
||||||
|
state.courseSyncFlag = state.projectInfo.courseSyncFlag
|
||||||
|
? true
|
||||||
|
: false;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const backPage = () => {
|
const backPage = () => {
|
||||||
router.back()
|
router.back();
|
||||||
};
|
};
|
||||||
|
|
||||||
//选择分类
|
//选择分类
|
||||||
@@ -333,24 +378,24 @@ export default {
|
|||||||
state.projectType = value; //分类选择的id
|
state.projectType = value; //分类选择的id
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const classificationChange5 = (key, option) => {
|
const classificationChange5 = (key, option) => {
|
||||||
state.projectInfo = option
|
state.projectInfo = option;
|
||||||
state.projectInfo.type = 3
|
state.projectInfo.type = 3;
|
||||||
state.projectInfo.rangeTime = [option.beginTime, option.endTime]
|
state.projectInfo.rangeTime = [option.beginTime, option.endTime];
|
||||||
state.projectInfo.parentName = routers.query.parentName
|
state.projectInfo.parentName = routers.query.parentName;
|
||||||
state.projectInfo.parentId = routers.query.parentId
|
state.projectInfo.parentId = routers.query.parentId;
|
||||||
};
|
};
|
||||||
//获取模版列表
|
//获取模版列表
|
||||||
const getTemplate = () => {
|
const getTemplate = () => {
|
||||||
let obj = {
|
let obj = {
|
||||||
pageNo: state.currentPage,
|
pageNo: state.currentPage,
|
||||||
pageSize: state.pageSize,
|
pageSize: state.pageSize,
|
||||||
|
status: 1,
|
||||||
};
|
};
|
||||||
api.getTemplate(obj).then((res) => {
|
api.getTemplate(obj).then((res) => {
|
||||||
state.totalPages = Number(res.data.data.pages);
|
state.totalPages = Number(res.data.data.pages);
|
||||||
state.classifyList5 = res.data.data.rows
|
state.classifyList5 = res.data.data.rows;
|
||||||
})
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
//模版滚动加载模板信息
|
//模版滚动加载模板信息
|
||||||
@@ -376,18 +421,19 @@ export default {
|
|||||||
sourceBelongId: "请选择资源归属",
|
sourceBelongId: "请选择资源归属",
|
||||||
level: "请填写项目级别",
|
level: "请填写项目级别",
|
||||||
systemId: "请填写项目培训体系",
|
systemId: "请填写项目培训体系",
|
||||||
|
boeFlag: "请选择是否BOEU实施",
|
||||||
};
|
};
|
||||||
|
|
||||||
function timeChange(e) {
|
function timeChange(e) {
|
||||||
if (e && e.length === 2) {
|
if (e && e.length === 2) {
|
||||||
state.projectInfo.beginTime = e[0]
|
state.projectInfo.beginTime = e[0];
|
||||||
state.projectInfo.endTime = e[1]
|
state.projectInfo.endTime = e[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function validate(obj, errorMsgs) {
|
function validate(obj, errorMsgs) {
|
||||||
for (let i in errorMsgs) {
|
for (let i in errorMsgs) {
|
||||||
if (!obj[i]) {
|
if (!obj[i] && obj[i] !== 0) {
|
||||||
message.destroy();
|
message.destroy();
|
||||||
message.warning(errorMsgs[i]);
|
message.warning(errorMsgs[i]);
|
||||||
return false;
|
return false;
|
||||||
@@ -401,13 +447,13 @@ export default {
|
|||||||
if (!validate(state.projectInfo, errorMsgs)) {
|
if (!validate(state.projectInfo, errorMsgs)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.projectInfo.type = 3
|
state.projectInfo.type = 3;
|
||||||
|
state.projectInfo.courseSyncFlag = state.courseSyncFlag ? 1 : 0;
|
||||||
api.createProject(state.projectInfo).then(() => {
|
api.createProject(state.projectInfo).then(() => {
|
||||||
message.destroy();
|
message.destroy();
|
||||||
message.success("编辑成功");
|
message.success("编辑成功");
|
||||||
router.back()
|
router.back();
|
||||||
}
|
});
|
||||||
)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -417,7 +463,7 @@ export default {
|
|||||||
classificationChange5,
|
classificationChange5,
|
||||||
createProject,
|
createProject,
|
||||||
backPage,
|
backPage,
|
||||||
templateScroll
|
templateScroll,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -521,7 +567,6 @@ export default {
|
|||||||
position: relative;
|
position: relative;
|
||||||
margin-left: 14px;
|
margin-left: 14px;
|
||||||
|
|
||||||
|
|
||||||
.box1 {
|
.box1 {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
|||||||
@@ -47,14 +47,14 @@
|
|||||||
showSearch
|
showSearch
|
||||||
></a-select>
|
></a-select>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="select">-->
|
<div class="select">
|
||||||
<!-- <a-date-picker-->
|
<a-range-picker
|
||||||
<!-- v-model:value="searchParam.createTime"-->
|
v-model:value="searchParam.valueDate"
|
||||||
<!-- type="date"-->
|
style="border-radius: 8px; height: 40px; margin-left: 5px"
|
||||||
<!-- placeholder="创建时间"-->
|
:placeholder="[' 开始时间', ' 结束时间']"
|
||||||
<!-- style="width: 270px"-->
|
valueFormat="X"
|
||||||
<!-- />-->
|
/>
|
||||||
<!-- </div>-->
|
</div>
|
||||||
<div style="display: flex; margin-bottom: 20px">
|
<div style="display: flex; margin-bottom: 20px">
|
||||||
<div class="btnn btn1" @click="searchSubmit">
|
<div class="btnn btn1" @click="searchSubmit">
|
||||||
<div class="search"></div>
|
<div class="search"></div>
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
>
|
>
|
||||||
<div class="headerLeft" style="margin-left: 32px">
|
<div class="headerLeft" style="margin-left: 32px">
|
||||||
<span class="headerLeftText" style="font-size: 16px"
|
<span class="headerLeftText" style="font-size: 16px"
|
||||||
>{{ projectInfo.projectId ? '编辑' : '创建' }}多层项目</span
|
>{{ projectInfo.projectId ? "编辑" : "创建" }}多层项目</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div style="cursor: pointer; margin-right: 32px" @click="closeModal2">
|
<div style="cursor: pointer; margin-right: 32px" @click="closeModal2">
|
||||||
@@ -159,9 +159,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modalMain">
|
<div class="modalMain">
|
||||||
<div style="margin-left: 40px; margin-top: 40px;width:78%" v-if="projectInfo.parentName">
|
<div
|
||||||
|
style="margin-left: 40px; margin-top: 40px; width: 78%"
|
||||||
|
v-if="projectInfo.parentName"
|
||||||
|
>
|
||||||
<span style="color: #000000; font-size: 14px">项目归属:</span>
|
<span style="color: #000000; font-size: 14px">项目归属:</span>
|
||||||
<span style="color: #999999; font-size: 14px; margin-left: 10px">{{ projectInfo.parentName }}</span>
|
<span style="color: #999999; font-size: 14px; margin-left: 10px">{{
|
||||||
|
projectInfo.parentName
|
||||||
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="star" style="margin-top: -4px">
|
<div class="star" style="margin-top: -4px">
|
||||||
@@ -202,7 +207,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="inname">项目经理:</div>
|
<div class="inname">项目经理:</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<ProjectManager v-model:value="projectInfo.managerId" v-model:name="projectInfo.manager" mode="multiple"></ProjectManager>
|
<ProjectManager
|
||||||
|
v-model:value="projectInfo.managerId"
|
||||||
|
v-model:name="projectInfo.manager"
|
||||||
|
mode="multiple"
|
||||||
|
></ProjectManager>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
@@ -214,16 +223,17 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="inname">资源归属:</div>
|
<div class="inname">资源归属:</div>
|
||||||
<div class="in select">
|
<div class="in select">
|
||||||
<OrgClass v-model:value="projectInfo.sourceBelongId"
|
<OrgClass
|
||||||
v-model:name="projectInfo.sourceBelongName"></OrgClass>
|
v-model:value="projectInfo.sourceBelongId"
|
||||||
|
v-model:name="projectInfo.sourceBelongName"
|
||||||
|
></OrgClass>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pubtn">
|
<div class="pubtn">
|
||||||
<a-button class="pubtn1" @click="closeModal2">取消</a-button>
|
<a-button class="pubtn1" @click="closeModal2">取消</a-button>
|
||||||
<a-button class="pubtn2" @click="createStoreyProject"
|
<a-button class="pubtn2" @click="createStoreyProject"
|
||||||
>确定
|
>确定
|
||||||
</a-button
|
</a-button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
@@ -347,7 +357,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modalMain">
|
<div class="modalMain">
|
||||||
<router-link :to="`/projectadd?parentId=${projectInfo.parentId || ''}&parentName=${projectInfo.parentName || ''}`">
|
<router-link
|
||||||
|
:to="`/projectadd?parentId=${
|
||||||
|
projectInfo.parentId || ''
|
||||||
|
}&parentName=${projectInfo.parentName || ''}`"
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
class="taskbox"
|
class="taskbox"
|
||||||
style="
|
style="
|
||||||
@@ -722,7 +736,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
|
|
||||||
<!-- 授权名单抽屉 -->
|
<!-- 授权名单抽屉 -->
|
||||||
<proj-power-list
|
<proj-power-list
|
||||||
v-model:ProjPvisible="ProjPvisible"
|
v-model:ProjPvisible="ProjPvisible"
|
||||||
@@ -762,7 +775,6 @@ import ProjPowerList from "../../components/drawers/ProjPowerList";
|
|||||||
import ProjCheckShip from "../../components/drawers/ProjCheckPower";
|
import ProjCheckShip from "../../components/drawers/ProjCheckPower";
|
||||||
import * as api from "../../api/index";
|
import * as api from "../../api/index";
|
||||||
import * as api1 from "../../api/index1";
|
import * as api1 from "../../api/index1";
|
||||||
import {toDate} from "../../api/method";
|
|
||||||
import {storage} from "../../api/storage";
|
import {storage} from "../../api/storage";
|
||||||
import ProjectManager from "@/components/project/ProjectManager";
|
import ProjectManager from "@/components/project/ProjectManager";
|
||||||
import ProjectClass from "@/components/project/ProjectClass";
|
import ProjectClass from "@/components/project/ProjectClass";
|
||||||
@@ -776,7 +788,7 @@ export default {
|
|||||||
ProjCheckShip,
|
ProjCheckShip,
|
||||||
ProjectManager,
|
ProjectManager,
|
||||||
ProjectClass,
|
ProjectClass,
|
||||||
OrgClass
|
OrgClass,
|
||||||
// ProjManageShip
|
// ProjManageShip
|
||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
@@ -803,23 +815,18 @@ export default {
|
|||||||
reminderModal: false, //温馨提示弹窗
|
reminderModal: false, //温馨提示弹窗
|
||||||
reviewModal: false, //提交审核
|
reviewModal: false, //提交审核
|
||||||
recallReviewModal: false, //撤回审核
|
recallReviewModal: false, //撤回审核
|
||||||
|
|
||||||
ProjOwnervisible: false,
|
ProjOwnervisible: false,
|
||||||
ProjPvisible: false,
|
ProjPvisible: false,
|
||||||
ProjCheckvisible: false,
|
ProjCheckvisible: false,
|
||||||
ProjManagevisible: false,
|
ProjManagevisible: false,
|
||||||
|
|
||||||
currentProjectId: "",
|
currentProjectId: "",
|
||||||
currentProjectName: "",
|
currentProjectName: "",
|
||||||
currentEdProjectName: "",
|
currentEdProjectName: "",
|
||||||
|
|
||||||
currentEditChildrensProjectId: "",
|
currentEditChildrensProjectId: "",
|
||||||
dcProjectID: "",
|
dcProjectID: "",
|
||||||
|
|
||||||
currentPage: 1, //当前页
|
currentPage: 1, //当前页
|
||||||
tableDataTotal: -1, //学习路径列表总数
|
tableDataTotal: -1, //学习路径列表总数
|
||||||
pageSize: 10, //每页10条数据
|
pageSize: 10, //每页10条数据
|
||||||
|
|
||||||
projectStudentsNum: 0, //发布弹窗-学员人
|
projectStudentsNum: 0, //发布弹窗-学员人
|
||||||
projectStages: 0,
|
projectStages: 0,
|
||||||
projectTasks: 0,
|
projectTasks: 0,
|
||||||
@@ -833,12 +840,9 @@ export default {
|
|||||||
copyProjectId: null, //复制项目id
|
copyProjectId: null, //复制项目id
|
||||||
reviewId: null, //提交审核id
|
reviewId: null, //提交审核id
|
||||||
recallReviewId: null, //撤回审核id
|
recallReviewId: null, //撤回审核id
|
||||||
|
|
||||||
selectProjectId: null, //选择的授权id
|
selectProjectId: null, //选择的授权id
|
||||||
|
|
||||||
addAuthList: null, //确定授权列表
|
addAuthList: null, //确定授权列表
|
||||||
authClassify: null, //显示的是管理权还是查看权
|
authClassify: null, //显示的是管理权还是查看权
|
||||||
|
|
||||||
currentPage1: 1, //项目经理分页
|
currentPage1: 1, //项目经理分页
|
||||||
pageSize1: 10,
|
pageSize1: 10,
|
||||||
projectInfo: {},
|
projectInfo: {},
|
||||||
@@ -853,11 +857,11 @@ export default {
|
|||||||
searchParam: {
|
searchParam: {
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
}
|
},
|
||||||
|
valueDate: [],
|
||||||
});
|
});
|
||||||
// 数据接入 - start -
|
// 数据接入 - start -
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
const sProjectStateList = ref([
|
const sProjectStateList = ref([
|
||||||
{value: 0, label: "草稿"},
|
{value: 0, label: "草稿"},
|
||||||
{value: 1, label: "审核中"},
|
{value: 1, label: "审核中"},
|
||||||
@@ -865,16 +869,25 @@ export default {
|
|||||||
{value: 3, label: "已发布"},
|
{value: 3, label: "已发布"},
|
||||||
{value: -2, label: "未通过"},
|
{value: -2, label: "未通过"},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const searchReset = () => {
|
const searchReset = () => {
|
||||||
state.searchParam = {pageNo: 1, pageSize: 10}
|
state.searchParam = {pageNo: 1, pageSize: 10};
|
||||||
getTableDate()
|
getTableDate();
|
||||||
|
};
|
||||||
|
const searchSubmit = () => {
|
||||||
|
state.searchParam.pageNo = 1;
|
||||||
|
getTableDate();
|
||||||
};
|
};
|
||||||
|
|
||||||
const searchSubmit = () => {
|
function timeChange(e) {
|
||||||
state.searchParam.pageNo = 1
|
console.log(e);
|
||||||
getTableDate()
|
if (e && e.length === 2) {
|
||||||
};
|
state.searchParam.beginTime = e[0];
|
||||||
|
state.searchParam.endTime = e[1];
|
||||||
|
} else {
|
||||||
|
state.searchParam.beginTime = "";
|
||||||
|
state.searchParam.endTime = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function validate(obj, errorMsgs) {
|
function validate(obj, errorMsgs) {
|
||||||
for (let i in errorMsgs) {
|
for (let i in errorMsgs) {
|
||||||
@@ -905,11 +918,11 @@ export default {
|
|||||||
message.success("创建成功");
|
message.success("创建成功");
|
||||||
state.currentPage = 1;
|
state.currentPage = 1;
|
||||||
getTableDate();
|
getTableDate();
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
// 取消按钮 清空输入的数据
|
// 取消按钮 清空输入的数据
|
||||||
const closeModal2 = () => {
|
const closeModal2 = () => {
|
||||||
state.projectInfo = {}
|
state.projectInfo = {};
|
||||||
// value1.value = "";
|
// value1.value = "";
|
||||||
// type = "";
|
// type = "";
|
||||||
// manager = "";
|
// manager = "";
|
||||||
@@ -925,7 +938,6 @@ export default {
|
|||||||
const closeeditModal2 = () => {
|
const closeeditModal2 = () => {
|
||||||
state.eddoublepro = false;
|
state.eddoublepro = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 创建单层子项目 (需要传入多层项目的ProjectID)
|
// 创建单层子项目 (需要传入多层项目的ProjectID)
|
||||||
const createChildProject = () => {
|
const createChildProject = () => {
|
||||||
console.log(state.currentProjectId);
|
console.log(state.currentProjectId);
|
||||||
@@ -937,17 +949,13 @@ export default {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// 取消按钮 清空数据
|
// 取消按钮 清空数据
|
||||||
const closeModal3 = () => {
|
const closeModal3 = () => {
|
||||||
state.doublesonpro = false;
|
state.doublesonpro = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
const closeeditModal3 = () => {
|
const closeeditModal3 = () => {
|
||||||
state.eddoublesonpro = false;
|
state.eddoublesonpro = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
//打开发布弹窗
|
//打开发布弹窗
|
||||||
const showProjectPub = (object) => {
|
const showProjectPub = (object) => {
|
||||||
state.projectPub = true;
|
state.projectPub = true;
|
||||||
@@ -1114,7 +1122,7 @@ export default {
|
|||||||
message.success("模版保存成功");
|
message.success("模版保存成功");
|
||||||
state.startModal = false;
|
state.startModal = false;
|
||||||
getTableDate();
|
getTableDate();
|
||||||
})
|
});
|
||||||
};
|
};
|
||||||
//关闭存为模版弹窗
|
//关闭存为模版弹窗
|
||||||
const closeStartModal = () => {
|
const closeStartModal = () => {
|
||||||
@@ -1135,18 +1143,19 @@ export default {
|
|||||||
projectId: state.copyProjectId,
|
projectId: state.copyProjectId,
|
||||||
type: 2,
|
type: 2,
|
||||||
};
|
};
|
||||||
api.handleProject(obj).then((res) => {
|
api
|
||||||
console.log("复制成功", res);
|
.handleProject(obj)
|
||||||
message.destroy();
|
.then((res) => {
|
||||||
message.success("复制成功");
|
console.log("复制成功", res);
|
||||||
state.copyModal = false;
|
message.destroy();
|
||||||
getTableDate();
|
message.success("复制成功");
|
||||||
})
|
state.copyModal = false;
|
||||||
|
getTableDate();
|
||||||
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log("复制失败", err);
|
console.log("复制失败", err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
//打开提交审核弹窗
|
//打开提交审核弹窗
|
||||||
const showReviewModal = (projectId) => {
|
const showReviewModal = (projectId) => {
|
||||||
state.reviewModal = true;
|
state.reviewModal = true;
|
||||||
@@ -1176,7 +1185,6 @@ export default {
|
|||||||
const closeReviewModal = () => {
|
const closeReviewModal = () => {
|
||||||
state.reviewModal = false;
|
state.reviewModal = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
//打开撤回审核弹窗
|
//打开撤回审核弹窗
|
||||||
const showRecallReviewModal = (projectId) => {
|
const showRecallReviewModal = (projectId) => {
|
||||||
state.recallReviewModal = true;
|
state.recallReviewModal = true;
|
||||||
@@ -1206,15 +1214,12 @@ export default {
|
|||||||
const closeRecallReviewModal = () => {
|
const closeRecallReviewModal = () => {
|
||||||
state.recallReviewModal = false;
|
state.recallReviewModal = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
const expandTable = (e, a) => {
|
const expandTable = (e, a) => {
|
||||||
// console.log("惦记了");
|
// console.log("惦记了");
|
||||||
console.log("e", e, a);
|
console.log("e", e, a);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 获取项目列表信息
|
// 获取项目列表信息
|
||||||
let tableData = ref([]);
|
let tableData = ref([]);
|
||||||
|
|
||||||
const columns = ref([
|
const columns = ref([
|
||||||
{
|
{
|
||||||
title: "项目名称",
|
title: "项目名称",
|
||||||
@@ -1319,255 +1324,288 @@ export default {
|
|||||||
fixed: "right",
|
fixed: "right",
|
||||||
customRender: (value) => {
|
customRender: (value) => {
|
||||||
// console.log("value", value.record.type, value.record.status);
|
// console.log("value", value.record.type, value.record.status);
|
||||||
return <div className="operation">
|
return (
|
||||||
{value.record.status === 0 || value.record.status === -2 ? <span
|
<div className="operation">
|
||||||
onClick={() => {
|
{value.record.status === 0 || value.record.status === -2 ? (
|
||||||
if (value.record.type === 1 || value.record.type === 2) {
|
<span
|
||||||
state.doublepro = true;
|
onClick={() => {
|
||||||
state.projectInfo = value.record
|
if (value.record.type === 1 || value.record.type === 2) {
|
||||||
} else {
|
state.doublepro = true;
|
||||||
console.log(value.record)
|
state.projectInfo = value.record;
|
||||||
router.push({
|
} else {
|
||||||
path: '/projectadd', query: {
|
console.log(value.record);
|
||||||
projectId: value.record.projectId,
|
router.push({
|
||||||
parentId: value.record.parentId,
|
path: "/projectadd",
|
||||||
parentName: value.record.parentName
|
query: {
|
||||||
|
projectId: value.record.projectId,
|
||||||
|
parentId: value.record.parentId,
|
||||||
|
parentName: value.record.parentName,
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
})
|
}}
|
||||||
}
|
style="cursor:pointer;"
|
||||||
}}
|
className="operation1"
|
||||||
style="cursor:pointer;"
|
>
|
||||||
className="operation1"
|
|
||||||
>
|
|
||||||
编辑
|
编辑
|
||||||
</span>
|
</span>
|
||||||
: ''}
|
) : (
|
||||||
{(value.record.status === 0 || value.record.status === -2) && value.record.type === 3 ?
|
""
|
||||||
<span
|
)}
|
||||||
onClick={() => {
|
{(value.record.status === 0 || value.record.status === -2) &&
|
||||||
showReviewModal(value.record.projectId);
|
value.record.type === 3 ? (
|
||||||
}}
|
<span
|
||||||
style="cursor:pointer"
|
onClick={() => {
|
||||||
class="operation3"
|
showReviewModal(value.record.projectId);
|
||||||
>
|
}}
|
||||||
提交审核
|
style="cursor:pointer"
|
||||||
</span>
|
class="operation3"
|
||||||
: ''}
|
>
|
||||||
{value.record.status === 1 && value.record.type !== 1 ?
|
提交审核
|
||||||
<span
|
</span>
|
||||||
onClick={() => {
|
) : (
|
||||||
showRecallReviewModal(value.record.projectId);
|
""
|
||||||
}}
|
)}
|
||||||
style="cursor:pointer"
|
{value.record.status === 1 && value.record.type !== 1 ? (
|
||||||
class="operation3"
|
<span
|
||||||
>
|
onClick={() => {
|
||||||
撤回审核
|
showRecallReviewModal(value.record.projectId);
|
||||||
</span> : ''}
|
}}
|
||||||
{value.record.status === 2 ?
|
style="cursor:pointer"
|
||||||
<span
|
class="operation3"
|
||||||
onClick={() => {
|
>
|
||||||
console.log("value.record", value.record);
|
撤回审核
|
||||||
let beginTime = value.record.beginTime
|
</span>
|
||||||
? toDate(value.record.beginTime, "Y/M/D")
|
) : (
|
||||||
: "";
|
""
|
||||||
let endTime = value.record.beginTime
|
)}
|
||||||
? toDate(value.record.endTime, "Y/M/D")
|
{value.record.status === 2 ? (
|
||||||
: "";
|
<span
|
||||||
let time =
|
onClick={() => {
|
||||||
beginTime && endTime ? beginTime + "-" + endTime : "";
|
let time = value.record.beginTime + "-" + value.record.beginTime;
|
||||||
let obj = {
|
let obj = {
|
||||||
projectId: value.record.projectId,
|
projectId: value.record.projectId,
|
||||||
name: value.record.name,
|
name: value.record.name,
|
||||||
time: time,
|
time: time,
|
||||||
};
|
};
|
||||||
showProjectPub(obj);
|
showProjectPub(obj);
|
||||||
}}
|
}}
|
||||||
style="cursor:pointer"
|
style="cursor:pointer"
|
||||||
class="operation3"
|
class="operation3"
|
||||||
>
|
>
|
||||||
发布
|
发布
|
||||||
</span>
|
</span>
|
||||||
: ''}
|
) : (
|
||||||
<div className="tableSelect">
|
""
|
||||||
<a-select
|
)}
|
||||||
style="width: 50px"
|
<div className="tableSelect">
|
||||||
value="授权"
|
<a-select
|
||||||
// options={state.projectNameList}
|
style="width: 50px"
|
||||||
dropdownClassName="tabledropdown"
|
value="授权"
|
||||||
>
|
// options={state.projectNameList}
|
||||||
<a-select-option value="权限名单" label="权限名单">
|
dropdownClassName="tabledropdown"
|
||||||
<div
|
|
||||||
onClick={() => {
|
|
||||||
showProjPrower(value.record.projectId);
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
权限名单
|
<a-select-option value="权限名单" label="权限名单">
|
||||||
</div>
|
|
||||||
</a-select-option>
|
|
||||||
<a-select-option value="归属权" label="归属权">
|
|
||||||
<div
|
|
||||||
onClick={() => {
|
|
||||||
console.log("点击了111");
|
|
||||||
showProjOwner(value.record.projectId);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
归属权
|
|
||||||
</div>
|
|
||||||
</a-select-option>
|
|
||||||
<a-select-option value="查看权" label="查看权">
|
|
||||||
<div
|
|
||||||
onClick={() => {
|
|
||||||
console.log("点击了111");
|
|
||||||
showProjCheck(value.record.projectId);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
查看权
|
|
||||||
</div>
|
|
||||||
</a-select-option>
|
|
||||||
<a-select-option value="管理权" label="管理权">
|
|
||||||
<div
|
|
||||||
onClick={() => {
|
|
||||||
showProjManage(value.record.projectId);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
管理权
|
|
||||||
</div>
|
|
||||||
</a-select-option>
|
|
||||||
</a-select>
|
|
||||||
</div>
|
|
||||||
{value.record.type === 1 ? <span
|
|
||||||
className="operation3"
|
|
||||||
style="cursor: pointer"
|
|
||||||
onClick={() => {
|
|
||||||
state.projectInfo = {parentName: value.record.name, parentId: value.record.projectId,type:2};
|
|
||||||
state.reminderModal = true;
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
创建子项目
|
|
||||||
</span> : ''}
|
|
||||||
{value.record.type === 2 ? <span
|
|
||||||
className="operation3"
|
|
||||||
style="cursor: pointer"
|
|
||||||
onClick={() => {
|
|
||||||
router.push({
|
|
||||||
path: '/projectadd', query: {
|
|
||||||
parentId: value.record.projectId,
|
|
||||||
parentName: value.record.name
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
创建班级
|
|
||||||
</span> : ''}
|
|
||||||
<div className="tableSelect">
|
|
||||||
<a-select
|
|
||||||
style="width: 50px"
|
|
||||||
value="更多"
|
|
||||||
// options={state.projectNameList}
|
|
||||||
dropdownClassName="tabledropdown"
|
|
||||||
>
|
|
||||||
<a-select-option value="复制" label="复制">
|
|
||||||
<div
|
|
||||||
onClick={() => {
|
|
||||||
showCopyModal(value.record.projectId);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
复制
|
|
||||||
</div>
|
|
||||||
</a-select-option>
|
|
||||||
<a-select-option value="删除" label="删除">
|
|
||||||
<div
|
|
||||||
onClick={() => {
|
|
||||||
showDeleteModal(value.record.projectId);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
删除
|
|
||||||
</div>
|
|
||||||
</a-select-option>
|
|
||||||
{value.record.type === 3 ?
|
|
||||||
<a-select-option value="存为模版" label="存为模版">
|
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
showStartModal(value.record.projectId);
|
showProjPrower(value.record.projectId);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
存为模版
|
权限名单
|
||||||
</div>
|
</div>
|
||||||
</a-select-option> : ''}
|
</a-select-option>
|
||||||
{value.record.type === 3 ?
|
<a-select-option value="归属权" label="归属权">
|
||||||
<a-select-option value="基础信息" label="基础信息">
|
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
router.push({
|
console.log("点击了111");
|
||||||
path: "/taskpage",
|
showProjOwner(value.record.projectId);
|
||||||
});
|
|
||||||
storage.set("projectId", value.record.projectId);
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
基础信息
|
归属权
|
||||||
</div>
|
</div>
|
||||||
</a-select-option> : ''}
|
</a-select-option>
|
||||||
</a-select>
|
<a-select-option value="查看权" label="查看权">
|
||||||
</div>
|
<div
|
||||||
</div>
|
onClick={() => {
|
||||||
}
|
console.log("点击了111");
|
||||||
}
|
showProjCheck(value.record.projectId);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
查看权
|
||||||
|
</div>
|
||||||
|
</a-select-option>
|
||||||
|
<a-select-option value="管理权" label="管理权">
|
||||||
|
<div
|
||||||
|
onClick={() => {
|
||||||
|
showProjManage(value.record.projectId);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
管理权
|
||||||
|
</div>
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</div>
|
||||||
|
{value.record.type === 1 ? (
|
||||||
|
<span
|
||||||
|
className="operation3"
|
||||||
|
style="cursor: pointer"
|
||||||
|
onClick={() => {
|
||||||
|
state.projectInfo = {
|
||||||
|
parentName: value.record.name,
|
||||||
|
parentId: value.record.projectId,
|
||||||
|
type: 2,
|
||||||
|
};
|
||||||
|
state.reminderModal = true;
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
创建子项目
|
||||||
|
</span>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)}
|
||||||
|
{value.record.type === 2 ? (
|
||||||
|
<span
|
||||||
|
className="operation3"
|
||||||
|
style="cursor: pointer"
|
||||||
|
onClick={() => {
|
||||||
|
router.push({
|
||||||
|
path: "/projectadd",
|
||||||
|
query: {
|
||||||
|
parentId: value.record.projectId,
|
||||||
|
parentName: value.record.name,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
创建班级
|
||||||
|
</span>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)}
|
||||||
|
<div className="tableSelect">
|
||||||
|
<a-select
|
||||||
|
style="width: 50px"
|
||||||
|
value="更多"
|
||||||
|
// options={state.projectNameList}
|
||||||
|
dropdownClassName="tabledropdown"
|
||||||
|
>
|
||||||
|
<a-select-option value="复制" label="复制">
|
||||||
|
<div
|
||||||
|
onClick={() => {
|
||||||
|
showCopyModal(value.record.projectId);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
复制
|
||||||
|
</div>
|
||||||
|
</a-select-option>
|
||||||
|
<a-select-option value="删除" label="删除">
|
||||||
|
<div
|
||||||
|
onClick={() => {
|
||||||
|
showDeleteModal(value.record.projectId);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</div>
|
||||||
|
</a-select-option>
|
||||||
|
{value.record.type === 3 ? (
|
||||||
|
<a-select-option value="存为模版" label="存为模版">
|
||||||
|
<div
|
||||||
|
onClick={() => {
|
||||||
|
showStartModal(value.record.projectId);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
存为模版
|
||||||
|
</div>
|
||||||
|
</a-select-option>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)}
|
||||||
|
{value.record.type === 3 ? (
|
||||||
|
<a-select-option value="基础信息" label="基础信息">
|
||||||
|
<div
|
||||||
|
onClick={() => {
|
||||||
|
router.push({
|
||||||
|
path: "/taskpage",
|
||||||
|
});
|
||||||
|
storage.set("projectId", value.record.projectId);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
基础信息
|
||||||
|
</div>
|
||||||
|
</a-select-option>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)}
|
||||||
|
</a-select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
|
const getTableDate = () =>
|
||||||
const getTableDate = () => api.getProjectList(state.searchParam).then((res) => {
|
api
|
||||||
console.log(res);
|
.getProjectList({
|
||||||
state.tableDataTotal = Number(res.data.data.total);
|
...state.searchParam,
|
||||||
const data = res.data.data.rows;
|
beginTime:
|
||||||
initDataSublist('', data)
|
state.searchParam.valueDate &&
|
||||||
console.log(data)
|
state.searchParam.valueDate.length === 2
|
||||||
tableData.value = data;
|
? state.searchParam.valueDate[0]
|
||||||
console.log("tableData", tableData);
|
: "",
|
||||||
});
|
endTime:
|
||||||
|
state.searchParam.valueDate &&
|
||||||
|
state.searchParam.valueDate.length === 2
|
||||||
|
? state.searchParam.valueDate[1]
|
||||||
|
: "",
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
state.tableDataTotal = Number(res.data.data.total);
|
||||||
|
const data = res.data.data.rows;
|
||||||
|
initDataSublist("", data);
|
||||||
|
console.log(data);
|
||||||
|
tableData.value = data;
|
||||||
|
console.log("tableData", tableData);
|
||||||
|
});
|
||||||
|
|
||||||
function initDataSublist(parentName, data) {
|
function initDataSublist(parentName, data) {
|
||||||
if (data && data.length) {
|
if (data && data.length) {
|
||||||
data.forEach(e => {
|
data.forEach((e) => {
|
||||||
e.parentName = parentName
|
e.parentName = parentName;
|
||||||
e.key = e.projectId
|
e.key = e.projectId;
|
||||||
initDataSublist(e.name, e.subList)
|
initDataSublist(e.name, e.subList);
|
||||||
e.subList && e.subList.length && (e.children = e.subList)
|
e.subList && e.subList.length && (e.children = e.subList);
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getTableDate();
|
getTableDate();
|
||||||
|
|
||||||
// 翻页
|
// 翻页
|
||||||
const changePagination = (page) => {
|
const changePagination = (page) => {
|
||||||
state.searchParam.pageNo = page
|
state.searchParam.pageNo = page;
|
||||||
getTableDate()
|
getTableDate();
|
||||||
};
|
};
|
||||||
|
|
||||||
const showModal = () => {
|
const showModal = () => {
|
||||||
state.sonproject = true;
|
state.sonproject = true;
|
||||||
};
|
};
|
||||||
const closeModal = () => {
|
const closeModal = () => {
|
||||||
state.sonproject = false;
|
state.sonproject = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
const showModal1 = () => {
|
const showModal1 = () => {
|
||||||
state.projectInfo = {}
|
state.projectInfo = {};
|
||||||
state.reminderModal = true;
|
state.reminderModal = true;
|
||||||
};
|
};
|
||||||
const closeModal1 = () => {
|
const closeModal1 = () => {
|
||||||
state.estabish = false;
|
state.estabish = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
const showModal2 = () => {
|
const showModal2 = () => {
|
||||||
state.doublepro = true;
|
state.doublepro = true;
|
||||||
state.estabish = false;
|
state.estabish = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
const showModal3 = () => {
|
const showModal3 = () => {
|
||||||
state.doublesonpro = true;
|
state.doublesonpro = true;
|
||||||
state.sonproject = false;
|
state.sonproject = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
const showProjOwner = (id) => {
|
const showProjOwner = (id) => {
|
||||||
state.ProjOwnervisible = true;
|
state.ProjOwnervisible = true;
|
||||||
state.selectProjectId = id;
|
state.selectProjectId = id;
|
||||||
@@ -1587,7 +1625,6 @@ export default {
|
|||||||
// state.ProjManagevisible = true;
|
// state.ProjManagevisible = true;
|
||||||
state.ProjCheckvisible = true;
|
state.ProjCheckvisible = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
const closeReminderModal = () => {
|
const closeReminderModal = () => {
|
||||||
state.reminderModal = false;
|
state.reminderModal = false;
|
||||||
};
|
};
|
||||||
@@ -1595,9 +1632,10 @@ export default {
|
|||||||
state.reminderModal = false;
|
state.reminderModal = false;
|
||||||
state.estabish = true;
|
state.estabish = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
//添加权限
|
//添加权限
|
||||||
watch(() => state.addAuthList, (res) => {
|
watch(
|
||||||
|
() => state.addAuthList,
|
||||||
|
(res) => {
|
||||||
console.log("res", res, state.addAuthList);
|
console.log("res", res, state.addAuthList);
|
||||||
let obj = {
|
let obj = {
|
||||||
type: 2,
|
type: 2,
|
||||||
@@ -1623,9 +1661,10 @@ export default {
|
|||||||
console.log("添加授权失败", err);
|
console.log("添加授权失败", err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
)
|
);
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
|
timeChange,
|
||||||
expandTable,
|
expandTable,
|
||||||
showModal,
|
showModal,
|
||||||
closeModal,
|
closeModal,
|
||||||
@@ -1657,7 +1696,6 @@ export default {
|
|||||||
showRecallReviewModal,
|
showRecallReviewModal,
|
||||||
recallReviewProject,
|
recallReviewProject,
|
||||||
closeRecallReviewModal,
|
closeRecallReviewModal,
|
||||||
|
|
||||||
tableData,
|
tableData,
|
||||||
columns,
|
columns,
|
||||||
createStoreyProject,
|
createStoreyProject,
|
||||||
@@ -1679,8 +1717,7 @@ export default {
|
|||||||
okReminderModal,
|
okReminderModal,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
;
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.projectManage {
|
.projectManage {
|
||||||
@@ -1801,7 +1838,6 @@ export default {
|
|||||||
|
|
||||||
.btns {
|
.btns {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
// flex-wrap: wrap;
|
// flex-wrap: wrap;
|
||||||
.btn {
|
.btn {
|
||||||
padding: 0px 26px 0px 26px;
|
padding: 0px 26px 0px 26px;
|
||||||
@@ -1884,7 +1920,6 @@ export default {
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #4ea6ff;
|
color: #4ea6ff;
|
||||||
|
|
||||||
// line-height: 36px;
|
// line-height: 36px;
|
||||||
.operation1 {
|
.operation1 {
|
||||||
margin-left: 21px;
|
margin-left: 21px;
|
||||||
@@ -1905,7 +1940,6 @@ export default {
|
|||||||
margin-left: 21px;
|
margin-left: 21px;
|
||||||
position: relative;
|
position: relative;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|
||||||
// z-index: 99999;
|
// z-index: 99999;
|
||||||
.moreArrow {
|
.moreArrow {
|
||||||
width: 13px;
|
width: 13px;
|
||||||
@@ -1971,7 +2005,6 @@ export default {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
// border: 1px solid black;
|
// border: 1px solid black;
|
||||||
|
|
||||||
.inname {
|
.inname {
|
||||||
color: #000000;
|
color: #000000;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@@ -2009,7 +2042,6 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-top: 25px;
|
margin-top: 25px;
|
||||||
|
|
||||||
//margin-bottom: 29px;
|
//margin-bottom: 29px;
|
||||||
.pubtn1 {
|
.pubtn1 {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
@@ -2070,7 +2102,6 @@ export default {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
// border: 1px solid black;
|
// border: 1px solid black;
|
||||||
|
|
||||||
.inname {
|
.inname {
|
||||||
color: #000000;
|
color: #000000;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@@ -2108,7 +2139,6 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-top: 25px;
|
margin-top: 25px;
|
||||||
|
|
||||||
//margin-bottom: 29px;
|
//margin-bottom: 29px;
|
||||||
.pubtn1 {
|
.pubtn1 {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
@@ -2159,7 +2189,6 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-top: 48px;
|
margin-top: 48px;
|
||||||
|
|
||||||
//margin-bottom: 40px;
|
//margin-bottom: 40px;
|
||||||
.taskbox {
|
.taskbox {
|
||||||
width: 310px;
|
width: 310px;
|
||||||
@@ -2227,7 +2256,6 @@ export default {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-top: 48px;
|
margin-top: 48px;
|
||||||
|
|
||||||
//margin-bottom: 40px;
|
//margin-bottom: 40px;
|
||||||
.taskbox {
|
.taskbox {
|
||||||
width: 438px;
|
width: 438px;
|
||||||
@@ -2319,7 +2347,6 @@ export default {
|
|||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
|
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
|
||||||
// position: absolute;
|
// position: absolute;
|
||||||
// left: 50%;
|
// left: 50%;
|
||||||
// top: 10%;
|
// top: 10%;
|
||||||
@@ -2396,7 +2423,6 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
@@ -2581,4 +2607,4 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -343,7 +343,14 @@
|
|||||||
<span class="editext">编辑</span>
|
<span class="editext">编辑</span>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div> -->
|
</div> -->
|
||||||
<div class="taskSyllabus">
|
<div
|
||||||
|
class="taskSyllabus"
|
||||||
|
v-if="
|
||||||
|
taskSyllabus &&
|
||||||
|
taskSyllabus.length &&
|
||||||
|
(taskSyllabus.length > 1 || taskSyllabus[0].name)
|
||||||
|
"
|
||||||
|
>
|
||||||
<a-collapse v-model:activeKey="taskSyllabusActive" accordion>
|
<a-collapse v-model:activeKey="taskSyllabusActive" accordion>
|
||||||
<template #expandIcon="{ isActive }">
|
<template #expandIcon="{ isActive }">
|
||||||
<img
|
<img
|
||||||
@@ -383,31 +390,33 @@
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
:src="
|
:src="
|
||||||
item.type == '1'
|
item.type == 1
|
||||||
? require('../../assets/images/leveladd/zai.png')
|
? require('../../assets/images/leveladd/zai.png')
|
||||||
: item.type == '2'
|
: item.type == 2
|
||||||
? require('../../assets/images/leveladd/mian.png')
|
? require('../../assets/images/leveladd/mian.png')
|
||||||
: item.type == '3'
|
: item.type == 3
|
||||||
? require('../../assets/images/leveladd/an.png')
|
? require('../../assets/images/leveladd/an.png')
|
||||||
: item.type == '4'
|
: item.type == 4
|
||||||
? require('../../assets/images/leveladd/zuo.png')
|
? require('../../assets/images/leveladd/zuo.png')
|
||||||
: item.type == '5'
|
: item.type == 5
|
||||||
? require('../../assets/images/leveladd/kao.png')
|
? require('../../assets/images/leveladd/kao.png')
|
||||||
: item.type == '6'
|
: item.type == 6
|
||||||
? require('../../assets/images/leveladd/zhi.png')
|
? require('../../assets/images/leveladd/zhi.png')
|
||||||
: item.type == '7'
|
: item.type == 7
|
||||||
? require('../../assets/images/leveladd/wai.png')
|
? require('../../assets/images/leveladd/wai.png')
|
||||||
: item.type == '8'
|
: item.type == 8
|
||||||
? require('../../assets/images/leveladd/tao.png')
|
? require('../../assets/images/leveladd/tao.png')
|
||||||
: item.type == '9'
|
: item.type == 9
|
||||||
? require('../../assets/images/leveladd/huo.png')
|
? require('../../assets/images/leveladd/huo.png')
|
||||||
: item.type == '10'
|
: item.type == 10
|
||||||
? require('../../assets/images/leveladd/ce.png')
|
? require('../../assets/images/leveladd/ce.png')
|
||||||
: item.type == '11'
|
: item.type == 11
|
||||||
? require('../../assets/images/leveladd/diao.png')
|
? require('../../assets/images/leveladd/pinggu.png')
|
||||||
: item.type == '12'
|
: item.type == 12
|
||||||
? require('../../assets/images/leveladd/tou.png')
|
? require('../../assets/images/leveladd/tou.png')
|
||||||
: null
|
: item.type == 13
|
||||||
|
? require('../../assets/images/leveladd/tou.png')
|
||||||
|
: require('../../assets/images/leveladd/xiangmu.png')
|
||||||
"
|
"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -427,11 +436,23 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="time">
|
<div class="time">
|
||||||
<div class="timetext">开始时间</div>
|
<div class="timetext">开始时间</div>
|
||||||
<div class="timetext">{{item.createTime?toDate(Number(item.createTime),"Y-M-D"):'---'}}</div>
|
<div class="timetext">
|
||||||
|
{{
|
||||||
|
item.startTime !== null ? item.startTime: ''
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="progress">
|
<div class="progress">
|
||||||
<div class="progresstext">
|
<div class="progresstext">
|
||||||
{{ item.finishStuCnt&&item.finishStuCnt!==null?item.finishStuCnt:0 }}/{{ item.totalStuCnt&&item.totalStuCnt!==null?item.totalStuCnt:0 }}人
|
{{
|
||||||
|
item.finishStuCnt && item.finishStuCnt !== null
|
||||||
|
? item.finishStuCnt
|
||||||
|
: 0
|
||||||
|
}}/{{
|
||||||
|
item.totalStuCnt && item.totalStuCnt !== null
|
||||||
|
? item.totalStuCnt
|
||||||
|
: 0
|
||||||
|
}}人
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<a-progress
|
<a-progress
|
||||||
@@ -442,7 +463,12 @@
|
|||||||
/>
|
/>
|
||||||
<span class="progresstext" style="margin-left: 10px"
|
<span class="progresstext" style="margin-left: 10px"
|
||||||
>{{
|
>{{
|
||||||
(item.finishStuCnt&&item.finishStuCnt!==null?item.finishStuCnt:0 / item.totalStuCnt&&item.totalStuCnt!==null?item.totalStuCnt:0) * 100
|
(item.finishStuCnt && item.finishStuCnt !== null
|
||||||
|
? item.finishStuCnt
|
||||||
|
: 0 / item.totalStuCnt &&
|
||||||
|
item.totalStuCnt !== null
|
||||||
|
? item.totalStuCnt
|
||||||
|
: 0) * 100
|
||||||
}}%</span
|
}}%</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
@@ -533,6 +559,31 @@
|
|||||||
</router-link>
|
</router-link>
|
||||||
<!-- 无数据创建任务 -->
|
<!-- 无数据创建任务 -->
|
||||||
</div>
|
</div>
|
||||||
|
<div v-else>
|
||||||
|
<div
|
||||||
|
class="taskbox"
|
||||||
|
@click="
|
||||||
|
() => {
|
||||||
|
routered.push({ path: '/taskadd' });
|
||||||
|
}
|
||||||
|
"
|
||||||
|
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
|
||||||
|
>
|
||||||
|
<div class="leftt">
|
||||||
|
<img src="../../assets/images/taskpage/left1.png" />
|
||||||
|
</div>
|
||||||
|
<div class="photo">
|
||||||
|
<img src="../../assets/images/taskpage/picture1.png" />
|
||||||
|
</div>
|
||||||
|
<div class="rightt">
|
||||||
|
<img src="../../assets/images/taskpage/right1.png" />
|
||||||
|
</div>
|
||||||
|
<div class="centerbox" style="color: rgba(255, 182, 78, 1)">
|
||||||
|
添加任务
|
||||||
|
</div>
|
||||||
|
<div class="centermain">快速添加任务/阶段</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div style="display: flex; height: 20px"></div>
|
<div style="display: flex; height: 20px"></div>
|
||||||
</div>
|
</div>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
@@ -666,11 +717,11 @@
|
|||||||
style="border: 1px solid #f2f6fe"
|
style="border: 1px solid #f2f6fe"
|
||||||
:columns="studentColumns()"
|
:columns="studentColumns()"
|
||||||
:data-source="tabledata"
|
:data-source="tabledata"
|
||||||
:loading="tableDataTotal === -1 ? true : false"
|
|
||||||
expandRowByClick="true"
|
expandRowByClick="true"
|
||||||
:scroll="{ x: 1400 }"
|
:scroll="{ x: 1400 }"
|
||||||
@expand="expandTable"
|
@expand="expandTable"
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
|
:loading="loading"
|
||||||
:row-selection="{
|
:row-selection="{
|
||||||
columnWidth: 30,
|
columnWidth: 30,
|
||||||
selectedRowKeys: selectedRowKeys,
|
selectedRowKeys: selectedRowKeys,
|
||||||
@@ -766,28 +817,28 @@
|
|||||||
@click="showMemberList(item.projectGroupId)"
|
@click="showMemberList(item.projectGroupId)"
|
||||||
>
|
>
|
||||||
<div class="ftext">组员名单 ></div>
|
<div class="ftext">组员名单 ></div>
|
||||||
<div class="peoples">
|
<!-- <div class="peoples">
|
||||||
<div class="people1">
|
<div class="people1">
|
||||||
<img
|
<img
|
||||||
src="../../assets/images/taskpage/people1.png"
|
src="../../assets/images/taskpage/people1.png"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="people2">
|
<div class="people2">
|
||||||
<img
|
<img
|
||||||
src="../../assets/images/taskpage/people2.png"
|
src="../../assets/images/taskpage/people2.png"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="people3">
|
<div class="people3">
|
||||||
<img
|
<img
|
||||||
src="../../assets/images/taskpage/people3.png"
|
src="../../assets/images/taskpage/people3.png"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="people4">
|
<div class="people4">
|
||||||
<img
|
<img
|
||||||
src="../../assets/images/taskpage/people4.png"
|
src="../../assets/images/taskpage/people4.png"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -799,12 +850,12 @@
|
|||||||
<a-tab-pane key="4" tab="公告">
|
<a-tab-pane key="4" tab="公告">
|
||||||
<div class="split"></div>
|
<div class="split"></div>
|
||||||
<a-tabs v-model:activeKey="activeKeyNotice">
|
<a-tabs v-model:activeKey="activeKeyNotice">
|
||||||
<a-tab-pane key="11" tab="公告"
|
<a-tab-pane key="11" tab="公告">
|
||||||
><NoticePub v-model:projectId="projectId"></NoticePub
|
<NoticePub v-model:projectId="projectId"></NoticePub>
|
||||||
></a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="12" tab="历史公告" force-render
|
<a-tab-pane key="12" tab="历史公告" force-render>
|
||||||
><NoticeHis v-model:projectId="projectId"></NoticeHis
|
<NoticeHis v-model:projectId="projectId"></NoticeHis>
|
||||||
></a-tab-pane>
|
</a-tab-pane>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<!-- 2022-11-30注释 后面放开 -->
|
<!-- 2022-11-30注释 后面放开 -->
|
||||||
@@ -992,7 +1043,7 @@
|
|||||||
<div class="set_content">
|
<div class="set_content">
|
||||||
<div class="setc_name"><span>同步学习记录:</span></div>
|
<div class="setc_name"><span>同步学习记录:</span></div>
|
||||||
<div class="setc_main">
|
<div class="setc_main">
|
||||||
<a-radio v-model:checked="checkedSty"
|
<a-radio v-model:checked="checkedSty" :disabled="true"
|
||||||
><span style="color: #333333"
|
><span style="color: #333333"
|
||||||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||||
></a-radio
|
></a-radio
|
||||||
@@ -1002,19 +1053,29 @@
|
|||||||
<div class="set_content">
|
<div class="set_content">
|
||||||
<div class="setc_name"><span>项目级别:</span></div>
|
<div class="setc_name"><span>项目级别:</span></div>
|
||||||
<div class="setc_main">
|
<div class="setc_main">
|
||||||
<span style="color: #999999">{{ level }}</span>
|
<span style="color: #999999"
|
||||||
|
><ProjectLevel
|
||||||
|
v-model:value="level"
|
||||||
|
:disabled="true"
|
||||||
|
></ProjectLevel
|
||||||
|
></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="set_content">
|
<div class="set_content">
|
||||||
<div class="setc_name"><span>培训体系:</span></div>
|
<div class="setc_name"><span>培训体系:</span></div>
|
||||||
<div class="setc_main">
|
<div class="setc_main">
|
||||||
<span style="color: #999999">{{ systemId }}</span>
|
<span style="color: #999999"
|
||||||
|
><TrainClass
|
||||||
|
v-model:value="systemId"
|
||||||
|
:disabled="true"
|
||||||
|
></TrainClass
|
||||||
|
></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="set_content">
|
<div class="set_content">
|
||||||
<div class="setc_name"><span>是否BOEU实施:</span></div>
|
<div class="setc_name"><span>是否BOEU实施:</span></div>
|
||||||
<div class="setc_main">
|
<div class="setc_main">
|
||||||
<a-radio v-model:checked="checkedBOEU"
|
<a-radio v-model:checked="checkedBOEU" :disabled="true"
|
||||||
><span style="color: #333333">BOEU实施</span></a-radio
|
><span style="color: #333333">BOEU实施</span></a-radio
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
@@ -1036,7 +1097,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btnbox" style="margin: 20px">
|
<div class="btnbox" style="margin: 20px">
|
||||||
<a-upload
|
<a-upload
|
||||||
v-if="(docChecked==true)"
|
v-if="docChecked == true"
|
||||||
v-model:file-list="fileList"
|
v-model:file-list="fileList"
|
||||||
name="file"
|
name="file"
|
||||||
action="/manageApi/file/upload"
|
action="/manageApi/file/upload"
|
||||||
@@ -1053,7 +1114,11 @@
|
|||||||
alt=""
|
alt=""
|
||||||
/>
|
/>
|
||||||
</a-upload>
|
</a-upload>
|
||||||
<div v-if="(docChecked==true)" class="btnbox" style="margin: 20px">
|
<div
|
||||||
|
v-if="docChecked == true"
|
||||||
|
class="btnbox"
|
||||||
|
style="margin: 20px"
|
||||||
|
>
|
||||||
<span style="color: #999999">
|
<span style="color: #999999">
|
||||||
支持:pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip
|
支持:pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip
|
||||||
</span>
|
</span>
|
||||||
@@ -1394,11 +1459,11 @@
|
|||||||
<span>您确定要删除此学员吗</span>
|
<span>您确定要删除此学员吗</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btnbox">
|
<div class="del_btnbox">
|
||||||
<div class="del_btn btn1">
|
<div class="del_btn btn1" @click="closeDeleteOne">
|
||||||
<div class="btnText" @click="closeDeleteOne">取消</div>
|
<div class="btnText">取消</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btn btn2">
|
<div class="del_btn btn2" @click="closeDeleteOneConfirm">
|
||||||
<div class="btnText" @click="closeDeleteOneConfirm">确定</div>
|
<div class="btnText">确定</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1462,11 +1527,11 @@
|
|||||||
<span>您确定批量删除吗?</span>
|
<span>您确定批量删除吗?</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btnbox">
|
<div class="del_btnbox">
|
||||||
<div class="del_btn btn1">
|
<div class="del_btn btn1" @click="closeCancelDelete">
|
||||||
<div class="btnText" @click="closeCancelDelete">取消</div>
|
<div class="btnText">取消</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btn btn2">
|
<div class="del_btn btn2" @click="closeAllDelete">
|
||||||
<div class="btnText" @click="closeAllDelete">确定</div>
|
<div class="btnText">确定</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1700,9 +1765,14 @@ import projSet from "../../components/Modals/projSet";
|
|||||||
import { overview } from "../../api/indexProjStu";
|
import { overview } from "../../api/indexProjStu";
|
||||||
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
|
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
|
||||||
import { useStore } from "vuex";
|
import { useStore } from "vuex";
|
||||||
|
import ProjectLevel from "@/components/project/ProjectLevel";
|
||||||
|
import TrainClass from "@/components/project/TrainClass";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "taskPage",
|
name: "taskPage",
|
||||||
components: {
|
components: {
|
||||||
|
ProjectLevel,
|
||||||
|
TrainClass,
|
||||||
TimeManage,
|
TimeManage,
|
||||||
FaceManage,
|
FaceManage,
|
||||||
SubsetManage,
|
SubsetManage,
|
||||||
@@ -1726,6 +1796,7 @@ export default {
|
|||||||
setup() {
|
setup() {
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
|
loading: false,
|
||||||
projectId: storage.get("projectId")
|
projectId: storage.get("projectId")
|
||||||
? JSON.parse(storage.get("projectId"))
|
? JSON.parse(storage.get("projectId"))
|
||||||
: null,
|
: null,
|
||||||
@@ -2914,18 +2985,18 @@ export default {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/**
|
{/**
|
||||||
2022-11-30注释 后面放开
|
2022-11-30注释 后面放开
|
||||||
<div
|
<div
|
||||||
class="studentopea2"
|
class="studentopea2"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
state.Seevisible = true;
|
state.Seevisible = true;
|
||||||
console.log(text.record.studentId, "点击了查看");
|
console.log(text.record.studentId, "点击了查看");
|
||||||
state.checkStuId = text.record.studentId;
|
state.checkStuId = text.record.studentId;
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
查看
|
查看
|
||||||
</div>
|
</div>
|
||||||
*/}
|
*/}
|
||||||
<div class="studentSelect">
|
<div class="studentSelect">
|
||||||
<a-select
|
<a-select
|
||||||
style="width: 50px"
|
style="width: 50px"
|
||||||
@@ -3047,6 +3118,7 @@ export default {
|
|||||||
//点击确认删除单个学员
|
//点击确认删除单个学员
|
||||||
const closeDeleteOneConfirm = () => {
|
const closeDeleteOneConfirm = () => {
|
||||||
state.deleteOneStu = false;
|
state.deleteOneStu = false;
|
||||||
|
state.loading = true;
|
||||||
deleteStu({
|
deleteStu({
|
||||||
projectId: state.projectId,
|
projectId: state.projectId,
|
||||||
studentIds: state.chooseDeleteOne,
|
studentIds: state.chooseDeleteOne,
|
||||||
@@ -3077,6 +3149,7 @@ export default {
|
|||||||
};
|
};
|
||||||
//点击确定的批量删除弹窗
|
//点击确定的批量删除弹窗
|
||||||
const closeAllDelete = () => {
|
const closeAllDelete = () => {
|
||||||
|
state.loading = true;
|
||||||
deleteStu({
|
deleteStu({
|
||||||
projectId: state.projectId,
|
projectId: state.projectId,
|
||||||
studentIds: state.selectedRows,
|
studentIds: state.selectedRows,
|
||||||
@@ -3236,6 +3309,7 @@ export default {
|
|||||||
// studentData();
|
// studentData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
state.loading = false;
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log("获取学员列表失败", err);
|
console.log("获取学员列表失败", err);
|
||||||
@@ -3249,39 +3323,21 @@ export default {
|
|||||||
console.log("get task", res.data.data);
|
console.log("get task", res.data.data);
|
||||||
let info = res.data.data.projectInfo;
|
let info = res.data.data.projectInfo;
|
||||||
// let start = toDate(info.beginTime / 1000, "Y-M-D h:m");
|
// let start = toDate(info.beginTime / 1000, "Y-M-D h:m");
|
||||||
let start = info.beginTime
|
let start = info.beginTime;
|
||||||
// let end = toDate(info.endTime / 1000, "Y-M-D h:m");
|
// let end = toDate(info.endTime / 1000, "Y-M-D h:m");
|
||||||
let end = info.endTime
|
let end = info.endTime;
|
||||||
state.tstartTime = info.beginTime;
|
state.tstartTime = info.beginTime;
|
||||||
state.tendTime = info.endTime;
|
state.tendTime = info.endTime;
|
||||||
state.tsourceBelong = info.sourceBelongId;
|
state.tsourceBelong = info.sourceBelongName;
|
||||||
state.parentId = info.parentId;
|
state.parentId = info.parentId;
|
||||||
state.name = info.name;
|
state.name = info.name;
|
||||||
state.startTime = start;
|
state.startTime = start;
|
||||||
state.endTime = end;
|
state.endTime = end;
|
||||||
state.manager = info.manager;
|
state.manager = info.manager;
|
||||||
state.remark = info.remark;
|
state.remark = info.remark;
|
||||||
state.level =
|
state.level = info.level;
|
||||||
info.level == 1
|
|
||||||
? "集团级"
|
|
||||||
: info.level == 2
|
|
||||||
? "组织级"
|
|
||||||
: info.level == 3
|
|
||||||
? "现地级"
|
|
||||||
: info.level == 4
|
|
||||||
? "部门级"
|
|
||||||
: "-";
|
|
||||||
state.tlevel = info.level;
|
state.tlevel = info.level;
|
||||||
state.systemId =
|
state.systemId = info.systemId;
|
||||||
info.systemId == 1
|
|
||||||
? "集团级"
|
|
||||||
: info.systemId == 2
|
|
||||||
? "组织级"
|
|
||||||
: info.systemId == 3
|
|
||||||
? "现地级"
|
|
||||||
: info.systemId == 4
|
|
||||||
? "部门级"
|
|
||||||
: "-";
|
|
||||||
state.tsystemId = info.systemId;
|
state.tsystemId = info.systemId;
|
||||||
state.checkedSty = info.courseSyncFlag == 1 ? true : false;
|
state.checkedSty = info.courseSyncFlag == 1 ? true : false;
|
||||||
state.courseSyncFlag = info.courseSyncFlag;
|
state.courseSyncFlag = info.courseSyncFlag;
|
||||||
@@ -3296,14 +3352,7 @@ export default {
|
|||||||
state.noticeFlag = info.noticeFlag;
|
state.noticeFlag = info.noticeFlag;
|
||||||
// state.attach = info.attach;
|
// state.attach = info.attach;
|
||||||
// state.templateId = info.templateId;
|
// state.templateId = info.templateId;
|
||||||
state.sourceBelong =
|
state.sourceBelong = info.sourceBelongName;
|
||||||
info.sourceBelongId == 1
|
|
||||||
? "项目一"
|
|
||||||
: info.sourceBelongId == 2
|
|
||||||
? "项目二"
|
|
||||||
: info.sourceBelongId == 3
|
|
||||||
? "项目三"
|
|
||||||
: "-";
|
|
||||||
// state.fileList=info.attach.split(",")
|
// state.fileList=info.attach.split(",")
|
||||||
let d = info.attach.indexOf(",");
|
let d = info.attach.indexOf(",");
|
||||||
// console.log(info.attach, "xgo", info.attach.length);
|
// console.log(info.attach, "xgo", info.attach.length);
|
||||||
@@ -3713,6 +3762,7 @@ export default {
|
|||||||
projectGroupId: 0,
|
projectGroupId: 0,
|
||||||
};
|
};
|
||||||
console.log("obj", obj);
|
console.log("obj", obj);
|
||||||
|
state.loading = true;
|
||||||
api
|
api
|
||||||
.addStudentProject(obj)
|
.addStudentProject(obj)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
@@ -3825,7 +3875,8 @@ export default {
|
|||||||
templateProject,
|
templateProject,
|
||||||
changeGrouped,
|
changeGrouped,
|
||||||
deFile,
|
deFile,
|
||||||
toDate
|
toDate,
|
||||||
|
routered,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -4497,12 +4548,14 @@ export default {
|
|||||||
.ant-modal {
|
.ant-modal {
|
||||||
.ant-modal-body {
|
.ant-modal-body {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
||||||
.modalHeader {
|
.modalHeader {
|
||||||
background: linear-gradient(
|
background: linear-gradient(
|
||||||
rgba(78, 166, 255, 0.2) 0%,
|
rgba(78, 166, 255, 0.2) 0%,
|
||||||
rgba(78, 166, 255, 0) 100%
|
rgba(78, 166, 255, 0) 100%
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
.modalMain {
|
.modalMain {
|
||||||
.projectname {
|
.projectname {
|
||||||
color: rgba(79, 81, 86, 1);
|
color: rgba(79, 81, 86, 1);
|
||||||
@@ -4512,23 +4565,28 @@ export default {
|
|||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.projecttime {
|
.projecttime {
|
||||||
margin-left: 221px;
|
margin-left: 221px;
|
||||||
|
|
||||||
.timeti {
|
.timeti {
|
||||||
color: rgba(153, 155, 163, 1);
|
color: rgba(153, 155, 163, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.timeme {
|
.timeme {
|
||||||
color: rgba(79, 81, 86, 1);
|
color: rgba(79, 81, 86, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.projectbox {
|
.projectbox {
|
||||||
margin-top: 26px;
|
margin-top: 26px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
||||||
.promessage {
|
.promessage {
|
||||||
width: 280px;
|
width: 280px;
|
||||||
height: 110px;
|
height: 110px;
|
||||||
@@ -4539,6 +4597,7 @@ export default {
|
|||||||
);
|
);
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
margin-right: 7px;
|
margin-right: 7px;
|
||||||
|
|
||||||
.messageme {
|
.messageme {
|
||||||
color: rgba(255, 182, 78, 1);
|
color: rgba(255, 182, 78, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@@ -4546,12 +4605,14 @@ export default {
|
|||||||
margin-top: 17px;
|
margin-top: 17px;
|
||||||
margin-left: 30px;
|
margin-left: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.messagege {
|
.messagege {
|
||||||
color: rgba(153, 155, 163, 1);
|
color: rgba(153, 155, 163, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
margin-left: 30px;
|
margin-left: 30px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.stumessage {
|
.stumessage {
|
||||||
width: 280px;
|
width: 280px;
|
||||||
height: 110px;
|
height: 110px;
|
||||||
@@ -4561,6 +4622,7 @@ export default {
|
|||||||
rgba(240, 248, 254, 1)
|
rgba(240, 248, 254, 1)
|
||||||
);
|
);
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
|
|
||||||
.messageme1 {
|
.messageme1 {
|
||||||
color: rgba(78, 166, 255, 1);
|
color: rgba(78, 166, 255, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@@ -4568,6 +4630,7 @@ export default {
|
|||||||
margin-top: 17px;
|
margin-top: 17px;
|
||||||
margin-left: 30px;
|
margin-left: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.messagege1 {
|
.messagege1 {
|
||||||
color: rgba(153, 155, 163, 1);
|
color: rgba(153, 155, 163, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@@ -4575,26 +4638,32 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.send {
|
.send {
|
||||||
margin-top: 30px;
|
margin-top: 30px;
|
||||||
margin-left: 61px;
|
margin-left: 61px;
|
||||||
|
|
||||||
.sendtext {
|
.sendtext {
|
||||||
margin-left: 11px;
|
margin-left: 11px;
|
||||||
color: rgba(109, 117, 132, 1);
|
color: rgba(109, 117, 132, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.ckb {
|
.ckb {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
margin-left: 62px;
|
margin-left: 62px;
|
||||||
|
|
||||||
.sendpeo {
|
.sendpeo {
|
||||||
color: rgba(109, 117, 132, 1);
|
color: rgba(109, 117, 132, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-checkbox-inner {
|
.ant-checkbox-inner {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.pubtn {
|
.pubtn {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@@ -4613,6 +4682,7 @@ export default {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
background: rgba(255, 255, 255, 1);
|
background: rgba(255, 255, 255, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.pubtn2 {
|
.pubtn2 {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
@@ -6139,6 +6209,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//设置的共享文档
|
//设置的共享文档
|
||||||
.sametab {
|
.sametab {
|
||||||
// margin-left: 30px;
|
// margin-left: 30px;
|
||||||
@@ -6148,35 +6219,43 @@ export default {
|
|||||||
// background-color: green;
|
// background-color: green;
|
||||||
.Gcon {
|
.Gcon {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.pad {
|
.pad {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 40px;
|
width: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Gin {
|
.Gin {
|
||||||
// background-color: #bfa;
|
// background-color: #bfa;
|
||||||
margin-top: 30px;
|
margin-top: 30px;
|
||||||
|
|
||||||
.headone {
|
.headone {
|
||||||
// background-color: red;
|
// background-color: red;
|
||||||
display: flex;
|
display: flex;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
.box {
|
.box {
|
||||||
width: 4px;
|
width: 4px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
background-color: #409eff;
|
background-color: #409eff;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.onetitle {
|
.onetitle {
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.oneedi {
|
.oneedi {
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
color: #4ea6ff;
|
color: #4ea6ff;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.twobtn {
|
.twobtn {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.btnone {
|
.btnone {
|
||||||
width: 42px;
|
width: 42px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
@@ -6186,6 +6265,7 @@ export default {
|
|||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btntwo {
|
.btntwo {
|
||||||
width: 42px;
|
width: 42px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
@@ -6198,38 +6278,46 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnbox {
|
.btnbox {
|
||||||
.ant-upload-list {
|
.ant-upload-list {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.onemain {
|
.onemain {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
margin-left: 55px;
|
margin-left: 55px;
|
||||||
color: #6f6f6f;
|
color: #6f6f6f;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
|
||||||
.checkcon {
|
.checkcon {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.in {
|
.in {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
// margin-top: 10px;
|
// margin-top: 10px;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 3px;
|
top: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.yulan {
|
.yulan {
|
||||||
// color: yellow;
|
// color: yellow;
|
||||||
margin-left: 22px;
|
margin-left: 22px;
|
||||||
// display: inline-block;
|
// display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.yulan2 {
|
.yulan2 {
|
||||||
margin-left: 22px;
|
margin-left: 22px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-input-number {
|
.ant-input-number {
|
||||||
height: 24px;
|
height: 24px;
|
||||||
width: 24px;
|
width: 24px;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: 1px solid #6d7584;
|
border: 1px solid #6d7584;
|
||||||
|
|
||||||
.ant-input-number-input {
|
.ant-input-number-input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@@ -6241,58 +6329,72 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.twomain {
|
.twomain {
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
|
|
||||||
.ant-switch-checked {
|
.ant-switch-checked {
|
||||||
background-color: #5dc988;
|
background-color: #5dc988;
|
||||||
}
|
}
|
||||||
|
|
||||||
.info {
|
.info {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
color: #6f6f6f;
|
color: #6f6f6f;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
// margin-top: 10px;
|
// margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.infor {
|
.infor {
|
||||||
margin-left: 38px;
|
margin-left: 38px;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
color: #c7cbd2;
|
color: #c7cbd2;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chooseshow {
|
.chooseshow {
|
||||||
// background-color: red;
|
// background-color: red;
|
||||||
margin-left: 38px;
|
margin-left: 38px;
|
||||||
margin-top: 12px;
|
margin-top: 12px;
|
||||||
|
|
||||||
.fane {
|
.fane {
|
||||||
color: #6f6f6f;
|
color: #6f6f6f;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.choo {
|
.choo {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btm {
|
.btm {
|
||||||
margin-left: 38px;
|
margin-left: 38px;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
|
|
||||||
.bmo {
|
.bmo {
|
||||||
color: #6f6f6f;
|
color: #6f6f6f;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bmt {
|
.bmt {
|
||||||
color: #c7cbd2;
|
color: #c7cbd2;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
margin-top: 3px;
|
margin-top: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chosecon {
|
.chosecon {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-top: 6px;
|
margin-top: 6px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
|
||||||
.chose {
|
.chose {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.inl {
|
.inl {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 2px;
|
top: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sh {
|
.sh {
|
||||||
margin-left: 23px;
|
margin-left: 23px;
|
||||||
color: #6f6f6f;
|
color: #6f6f6f;
|
||||||
@@ -6303,8 +6405,10 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.Lhead {
|
.Lhead {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.btns {
|
.btns {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
@@ -6321,9 +6425,11 @@ export default {
|
|||||||
margin-right: 14px;
|
margin-right: 14px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnText {
|
.btnText {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -6332,6 +6438,7 @@ export default {
|
|||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn1 {
|
.btn1 {
|
||||||
.search {
|
.search {
|
||||||
width: 15px;
|
width: 15px;
|
||||||
@@ -6339,6 +6446,7 @@ export default {
|
|||||||
background-image: url("../../assets/images/courseManage/search1.png");
|
background-image: url("../../assets/images/courseManage/search1.png");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn2 {
|
.btn2 {
|
||||||
.search {
|
.search {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
@@ -6346,46 +6454,59 @@ export default {
|
|||||||
background-image: url("../../assets/images/courseManage/reset1.png");
|
background-image: url("../../assets/images/courseManage/reset1.png");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn3 {
|
.btn3 {
|
||||||
margin-right: 0px;
|
margin-right: 0px;
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
width: 17px;
|
width: 17px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
background-image: url("../../assets/images/courseManage/add1.png");
|
background-image: url("../../assets/images/courseManage/add1.png");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn1:hover {
|
.btn1:hover {
|
||||||
background: rgba(64, 158, 255, 1);
|
background: rgba(64, 158, 255, 1);
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
background-image: url("../../assets/images/courseManage/search0.png");
|
background-image: url("../../assets/images/courseManage/search0.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnText {
|
.btnText {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn2:hover {
|
.btn2:hover {
|
||||||
background: rgba(64, 158, 255, 1);
|
background: rgba(64, 158, 255, 1);
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
background-image: url("../../assets/images/courseManage/reset0.png");
|
background-image: url("../../assets/images/courseManage/reset0.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnText {
|
.btnText {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn3:hover {
|
.btn3:hover {
|
||||||
background: rgba(64, 158, 255, 1);
|
background: rgba(64, 158, 255, 1);
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
background-image: url("../../assets/images/courseManage/add0.png");
|
background-image: url("../../assets/images/courseManage/add0.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnText {
|
.btnText {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.Lbom {
|
.Lbom {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 200px;
|
height: 200px;
|
||||||
@@ -6393,6 +6514,7 @@ export default {
|
|||||||
margin-top: 40px;
|
margin-top: 40px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
border: 1px solid #f0f4fe;
|
border: 1px solid #f0f4fe;
|
||||||
|
|
||||||
.itemhead {
|
.itemhead {
|
||||||
height: 50px;
|
height: 50px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -6400,6 +6522,7 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.lev {
|
.lev {
|
||||||
margin-left: 27px;
|
margin-left: 27px;
|
||||||
margin-right: 16px;
|
margin-right: 16px;
|
||||||
@@ -6407,64 +6530,77 @@ export default {
|
|||||||
color: #409eff;
|
color: #409eff;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lin {
|
.lin {
|
||||||
width: 1px;
|
width: 1px;
|
||||||
height: 35%;
|
height: 35%;
|
||||||
background-color: #c7cbd2;
|
background-color: #c7cbd2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nam {
|
.nam {
|
||||||
margin-left: 16px;
|
margin-left: 16px;
|
||||||
color: #4f5156;
|
color: #4f5156;
|
||||||
line-height: 100%;
|
line-height: 100%;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.count {
|
.count {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
line-height: 100%;
|
line-height: 100%;
|
||||||
color: #4f5156;
|
color: #4f5156;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
right: 40px;
|
right: 40px;
|
||||||
|
|
||||||
span:nth-child(2) {
|
span:nth-child(2) {
|
||||||
color: #63ca8c;
|
color: #63ca8c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.itembomm {
|
.itembomm {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
|
|
||||||
.it {
|
.it {
|
||||||
// margin-left: 110px;
|
// margin-left: 110px;
|
||||||
// margin-right: 110px;
|
// margin-right: 110px;
|
||||||
width: 13%;
|
width: 13%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
.on {
|
.on {
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ittext {
|
.ittext {
|
||||||
color: #4f5156;
|
color: #4f5156;
|
||||||
margin-top: 16px;
|
margin-top: 16px;
|
||||||
margin-left: -5px;
|
margin-left: -5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.linee {
|
.linee {
|
||||||
background-color: #ecf2fb;
|
background-color: #ecf2fb;
|
||||||
width: 1px;
|
width: 1px;
|
||||||
height: 55%;
|
height: 55%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.itright {
|
.itright {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 45px;
|
right: 45px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.te {
|
.te {
|
||||||
color: #4ea6ff;
|
color: #4ea6ff;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.more {
|
.more {
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.moreArrow {
|
.moreArrow {
|
||||||
width: 13px;
|
width: 13px;
|
||||||
height: 7px;
|
height: 7px;
|
||||||
@@ -6475,6 +6611,7 @@ export default {
|
|||||||
margin-left: 7px;
|
margin-left: 7px;
|
||||||
margin-top: 6px;
|
margin-top: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.moreItems {
|
.moreItems {
|
||||||
width: 80px;
|
width: 80px;
|
||||||
height: 70px;
|
height: 70px;
|
||||||
@@ -6487,6 +6624,7 @@ export default {
|
|||||||
left: 0px;
|
left: 0px;
|
||||||
top: 20px;
|
top: 20px;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
|
|
||||||
.roleItem {
|
.roleItem {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -6496,14 +6634,17 @@ export default {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.roleItem:hover {
|
.roleItem:hover {
|
||||||
color: #4ea6ff;
|
color: #4ea6ff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.more:hover .moreArrow {
|
.more:hover .moreArrow {
|
||||||
background-image: url("../../assets/images/navtop/up.png");
|
background-image: url("../../assets/images/navtop/up.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
.more:hover .moreItems {
|
.more:hover .moreItems {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
@@ -6513,12 +6654,15 @@ export default {
|
|||||||
.show {
|
.show {
|
||||||
color: blue;
|
color: blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
.noshow {
|
.noshow {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.create {
|
.create {
|
||||||
margin-top: 40px;
|
margin-top: 40px;
|
||||||
|
|
||||||
.taskbox {
|
.taskbox {
|
||||||
width: 412px;
|
width: 412px;
|
||||||
height: 160px;
|
height: 160px;
|
||||||
@@ -6527,21 +6671,25 @@ export default {
|
|||||||
// margin-left: 68px;
|
// margin-left: 68px;
|
||||||
margin-bottom: 40px;
|
margin-bottom: 40px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
.leftt {
|
.leftt {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 18px;
|
top: 18px;
|
||||||
left: 0;
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.photo {
|
.photo {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 42px;
|
top: 42px;
|
||||||
left: 37px;
|
left: 37px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rightt {
|
.rightt {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 69px;
|
top: 69px;
|
||||||
right: 26px;
|
right: 26px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.centerbox {
|
.centerbox {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 52px;
|
top: 52px;
|
||||||
@@ -6550,6 +6698,7 @@ export default {
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
//line-height: 36px;
|
//line-height: 36px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.centermain {
|
.centermain {
|
||||||
color: rgba(135, 139, 146, 1);
|
color: rgba(135, 139, 146, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
|||||||
@@ -37,8 +37,23 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="tmpl_body">
|
<div class="tmpl_body">
|
||||||
<div class="tmpl_tabbox">
|
<div class="tmpl_tabbox">
|
||||||
<a-table :columns="columns1" :data-source="tableData1" :loading="tableDataTotal === -1 ? true : false"
|
<a-table :columns="columns1" :data-source="tableData1"
|
||||||
expandRowByClick="true" @expand="expandTable" :pagination="pagination" />
|
expandRowByClick="true" @expand="expandTable" :pagination="false"/>
|
||||||
|
<div class="tableBox" style="display:flex;justify-content:center;padding:20px;">
|
||||||
|
<div class="pa">
|
||||||
|
<a-pagination
|
||||||
|
v-if="tableDataTotal > 10"
|
||||||
|
showSizeChanger="true"
|
||||||
|
showQuickJumper="true"
|
||||||
|
hideOnSinglePage="true"
|
||||||
|
:pageSize="pageSize"
|
||||||
|
v-model:current="currentPage"
|
||||||
|
:total="tableDataTotal"
|
||||||
|
class="pagination"
|
||||||
|
@change="changePagination"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -73,13 +88,13 @@ const columns1 = [
|
|||||||
key: "creator",
|
key: "creator",
|
||||||
align: "center",
|
align: "center",
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
title: "最近学习时间",
|
// title: "最近学习时间",
|
||||||
width: "25%",
|
// width: "25%",
|
||||||
dataIndex: "stutime",
|
// dataIndex: "stutime",
|
||||||
key: "stutime",
|
// key: "stutime",
|
||||||
align: "center",
|
// align: "center",
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
title: "操作",
|
title: "操作",
|
||||||
width: "22%",
|
width: "22%",
|
||||||
@@ -100,6 +115,7 @@ export default defineComponent({
|
|||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
total:50,
|
total:50,
|
||||||
|
tableDataTotal:0,
|
||||||
tableData1: [
|
tableData1: [
|
||||||
{
|
{
|
||||||
key: "1",
|
key: "1",
|
||||||
@@ -180,6 +196,12 @@ export default defineComponent({
|
|||||||
getLibraryList();
|
getLibraryList();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 翻页
|
||||||
|
const changePagination = (page) => {
|
||||||
|
pagination.current = page;
|
||||||
|
getLibraryList();
|
||||||
|
};
|
||||||
|
|
||||||
// 获取模板列表
|
// 获取模板列表
|
||||||
const getLibraryList = () => {
|
const getLibraryList = () => {
|
||||||
let date = Math.ceil(new Date(state.time).getTime() / 1000);
|
let date = Math.ceil(new Date(state.time).getTime() / 1000);
|
||||||
@@ -193,6 +215,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
api.templateList(obj).then((res) => {
|
api.templateList(obj).then((res) => {
|
||||||
state.tableData1 = []
|
state.tableData1 = []
|
||||||
|
state.tableDataTotal = res.data.data.total;
|
||||||
console.log(res);
|
console.log(res);
|
||||||
let resData = res.data.data.rows
|
let resData = res.data.data.rows
|
||||||
if (resData.length) {
|
if (resData.length) {
|
||||||
@@ -253,6 +276,7 @@ export default defineComponent({
|
|||||||
resetLevel,
|
resetLevel,
|
||||||
pagination,
|
pagination,
|
||||||
toLibraryAdd,
|
toLibraryAdd,
|
||||||
|
changePagination
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -15,8 +15,7 @@ module.exports = defineConfig({
|
|||||||
proxy: {
|
proxy: {
|
||||||
"/manageApi": {
|
"/manageApi": {
|
||||||
target:"http://111.231.196.214:30001/",
|
target:"http://111.231.196.214:30001/",
|
||||||
// target: "http://localhost:30001/", //这里后台的地址模拟的;应该填写你们真实的后台接口
|
changeOrigin: true, //表示是否改变原域名
|
||||||
changeOrigin: true, //表示是否改变原域名
|
|
||||||
// secure: false,
|
// secure: false,
|
||||||
// ws: false, //表示WebSocket协议
|
// ws: false, //表示WebSocket协议
|
||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
|
|||||||
Reference in New Issue
Block a user