Compare commits
32 Commits
251114-fea
...
bugfix-132
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e629d127ab | ||
|
|
909a70643f | ||
|
|
3c19a7550c | ||
|
|
738add6f18 | ||
|
|
a7763057c4 | ||
|
|
421e2b2c51 | ||
|
|
12e91854fe | ||
|
|
3852a92ab3 | ||
|
|
56103bbdf6 | ||
|
|
d2f3b2d79c | ||
|
|
4e1940b36f | ||
|
|
3e344a8374 | ||
|
|
82598dd5e0 | ||
|
|
da72c156e9 | ||
|
|
f731bb425f | ||
|
|
8c2f128578 | ||
|
|
f16c6eb157 | ||
|
|
6016e00ae8 | ||
|
|
7155976f31 | ||
|
|
4ca01ba233 | ||
|
|
7368fa7a8c | ||
|
|
d09cbfac5f | ||
|
|
fd903d0974 | ||
|
|
42885e0d61 | ||
|
|
0b3b9ad082 | ||
|
|
38fe538e4e | ||
|
|
052ab0be6f | ||
|
|
4c453e3974 | ||
|
|
47dde458de | ||
|
|
3701605f7a | ||
|
|
b021be2f6f | ||
|
|
11e34ca335 |
12
src/App.vue
@@ -87,4 +87,16 @@
|
||||
border: 1px solid #e7e7e7 !important;
|
||||
box-shadow: 0px 1px 5px 1px rgba(92,98,111,.3);
|
||||
}
|
||||
|
||||
#app {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#app > *:not(.case-expert-dialog) {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.case-expert-dialog {
|
||||
pointer-events: auto;
|
||||
}
|
||||
</style>
|
||||
@@ -52,7 +52,12 @@ const formRequest=axios.create({
|
||||
if (code === 401) {
|
||||
//Message({message: msg, type: 'error'});
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = this.webBaseUrl + ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = this.webBaseUrl + ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = this.webBaseUrl + ReLoginUrl;
|
||||
}
|
||||
// location.href = this.webBaseUrl + ReLoginUrl;
|
||||
})
|
||||
} else if (code === 403) {
|
||||
var msg = '当前操作没有权限';
|
||||
|
||||
@@ -54,7 +54,12 @@ const formRequest=axios.create({
|
||||
} else {
|
||||
if (code === 401) {
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = this.webBaseUrl + ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = this.webBaseUrl + ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = this.webBaseUrl + ReLoginUrl;
|
||||
}
|
||||
// location.href = this.webBaseUrl + ReLoginUrl;
|
||||
})
|
||||
} else if (code === 403) {
|
||||
var msg = '当前操作没有权限';
|
||||
|
||||
@@ -53,7 +53,12 @@ jsonRequest.interceptors.response.use(res => {
|
||||
} else {
|
||||
if (code == 6001) { //对方是字符串,所以这里不要使用三个等号
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = ReLoginUrl;
|
||||
}
|
||||
// location.href = ReLoginUrl;
|
||||
})
|
||||
} else if (code === 403) {
|
||||
var msg = '当前操作没有权限';
|
||||
@@ -117,7 +122,12 @@ formRequest.interceptors.response.use(res => {
|
||||
} else {
|
||||
if (code == 6001) { //对方是字符串,所以这里不要使用三个等号
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = ReLoginUrl;
|
||||
}
|
||||
// location.href = ReLoginUrl;
|
||||
})
|
||||
} else if (code === 403) {
|
||||
var msg = '当前操作没有权限';
|
||||
|
||||
@@ -103,14 +103,6 @@ const getUsersByIds = function(ids) {
|
||||
return ajax.postJson(baseURL,'/user/getUserMessageToDai',ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据关键字检索用户(创建人下拉)
|
||||
* @param {string} keyword
|
||||
*/
|
||||
const selectUser = function(keyword = '') {
|
||||
return ajax.postJson(baseURL,'/user/selectuser',{ keyword });
|
||||
}
|
||||
|
||||
export default {
|
||||
userParentOrg,
|
||||
findOrgsByKeyword,
|
||||
@@ -124,6 +116,5 @@ export default {
|
||||
getInAudienceIds,
|
||||
getUsersByIds,
|
||||
updateUser,
|
||||
logout,
|
||||
selectUser
|
||||
logout
|
||||
}
|
||||
|
||||
@@ -50,7 +50,12 @@ jsonRequest.interceptors.response.use(res => {
|
||||
} else {
|
||||
if (code === 401) {
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = this.webBaseUrl + ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = this.webBaseUrl + ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = this.webBaseUrl + ReLoginUrl;
|
||||
}
|
||||
// location.href = this.webBaseUrl + ReLoginUrl;
|
||||
})
|
||||
} else if (code === 403) {
|
||||
var msg = '当前操作没有权限';
|
||||
@@ -112,7 +117,12 @@ formRequest.interceptors.response.use(res => {
|
||||
} else {
|
||||
if (code === 401) {
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = this.webBaseUrl + ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = this.webBaseUrl + ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = this.webBaseUrl + ReLoginUrl;
|
||||
}
|
||||
// location.href = this.webBaseUrl + ReLoginUrl;
|
||||
})
|
||||
} else if (code === 403) {
|
||||
var msg = '当前操作没有权限';
|
||||
|
||||
@@ -50,7 +50,12 @@ jsonRequest.interceptors.response.use(res => {
|
||||
} else {
|
||||
if (code === 401) {
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = this.webBaseUrl + ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = this.webBaseUrl + ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = this.webBaseUrl + ReLoginUrl;
|
||||
}
|
||||
// location.href = this.webBaseUrl + ReLoginUrl;
|
||||
})
|
||||
} else if (code === 403) {
|
||||
var msg = '当前操作没有权限';
|
||||
@@ -112,7 +117,12 @@ formRequest.interceptors.response.use(res => {
|
||||
} else {
|
||||
if (code === 401) {
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = this.webBaseUrl + ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = this.webBaseUrl + ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = this.webBaseUrl + ReLoginUrl;
|
||||
}
|
||||
// location.href = this.webBaseUrl + ReLoginUrl;
|
||||
})
|
||||
} else if (code === 403) {
|
||||
var msg = '当前操作没有权限';
|
||||
|
||||
@@ -269,14 +269,6 @@ const pageList = function(query) {
|
||||
return ajax.post('/xboe/m/course/manage/pagelist', query);
|
||||
}
|
||||
|
||||
/**
|
||||
* 课程管理分页查询(新)
|
||||
* @param {Object} query
|
||||
*/
|
||||
const managePage = function(query) {
|
||||
return ajax.postJson('/xboe/m/course/manage/page', query);
|
||||
}
|
||||
|
||||
|
||||
/**计算待审核课程*/
|
||||
const countWaitAudit = function() {
|
||||
@@ -363,21 +355,6 @@ const setTop = function(data) {
|
||||
return ajax.post('/xboe/m/course/manage/top', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取置顶课程列表
|
||||
*/
|
||||
const fetchTopCourseList = function() {
|
||||
return ajax.get('/xboe/m/course/manage/topList');
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新置顶课程排序
|
||||
* @param {Array<{id:string,sortWeight:number}>} data
|
||||
*/
|
||||
const updateTopCourseSort = function(data) {
|
||||
return ajax.postJson('/xboe/m/course/manage/top-sortchange', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理员的设置启用停用
|
||||
* @param {Object} query {ids:课程id,多个使用逗号分隔,title:课程的名称, Boolean enabled 是否启用}
|
||||
@@ -446,12 +423,7 @@ const exportCourseAudit=function(query){
|
||||
课程的导出和已审核的课程导出
|
||||
*/
|
||||
const exportCourse=function(query){
|
||||
return ajax.get({
|
||||
url: '/xboe/m/course/manage/export',
|
||||
method: 'get',
|
||||
params: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
return ajax.post('/xboe/m/course/manage/exportCourse',query);
|
||||
}
|
||||
|
||||
//判断受众id是否有关联
|
||||
@@ -473,13 +445,6 @@ const saveTip = function() {
|
||||
return ajax.postJson('/xboe/m/course/manage/saveTip');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取我开发的课程列表
|
||||
*/
|
||||
const courseList = function(data) {
|
||||
return ajax.postJson('/xboe/m/course/manage/develop_page', data);
|
||||
}
|
||||
|
||||
|
||||
export default {
|
||||
saveBase,
|
||||
@@ -492,7 +457,6 @@ export default {
|
||||
getDictIds,
|
||||
saveContent,
|
||||
pageList,
|
||||
managePage,
|
||||
setEnabled,
|
||||
del,
|
||||
publish,
|
||||
@@ -509,8 +473,6 @@ export default {
|
||||
auditAndPublish,
|
||||
getAssess,
|
||||
setTop,
|
||||
fetchTopCourseList,
|
||||
updateTopCourseSort,
|
||||
delSection,
|
||||
getExam,
|
||||
delContent,
|
||||
@@ -527,6 +489,6 @@ export default {
|
||||
exportCourse,
|
||||
queryCrowd,
|
||||
ids,
|
||||
saveTip,
|
||||
courseList
|
||||
saveTip
|
||||
|
||||
}
|
||||
|
||||
@@ -102,24 +102,6 @@ const courseSearch=function(query){
|
||||
const detailStudy = function(courseId,aid) {
|
||||
return ajax.get(`/xboe/m/course/portal/detail-study?courseId=${courseId}&aid=${aid}`);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 课程学习进度的详细信息-分页
|
||||
* @param {Object} data
|
||||
*/
|
||||
const detailStudyPage = function(data) {
|
||||
return ajax.get(`/xboe/m/course/portal/detail-study-page?courseId=${data.courseId}&aid=${data.aid}&pageIndex=${data.pageIndex}&pageSize=${data.pageSize}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 资源学习情况列列表-分页
|
||||
* @param {Object} data
|
||||
*/
|
||||
const pageListResource=function(data){
|
||||
return ajax.post('/xboe/school/study/course/pagelist-resource',data);
|
||||
}
|
||||
|
||||
export default {
|
||||
list,
|
||||
pageList,
|
||||
@@ -130,7 +112,5 @@ export default {
|
||||
studyCounts,
|
||||
courseSearch,
|
||||
detailStudy,
|
||||
detailPost,
|
||||
detailStudyPage,
|
||||
pageListResource
|
||||
detailPost
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@ const appendStudyTime = function(data) {
|
||||
* name: 学习人的姓名
|
||||
*/
|
||||
const studyRecords = function(data) {
|
||||
return ajax.post('/xboe/school/study/course/pagelistEx',data);
|
||||
return ajax.post('/xboe/school/study/course/pagelist',data);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -189,7 +189,7 @@ const studyContentRecords = function(data) {
|
||||
}
|
||||
*/
|
||||
const studyExport = function(data) {
|
||||
return ajax.post('/xboe/school/study/course/export',data, { responseType: 'blob' });
|
||||
return ajax.post('/xboe/school/study/course/export',data);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -402,31 +402,6 @@ const findByIds=function (ids){
|
||||
return ajax.postJson('/xboe/school/study/es/list-by-ids',ids);
|
||||
}
|
||||
|
||||
const exportSignup=function (data){
|
||||
return ajax.post('/xboe/school/study/course/export-signup',data, { responseType: 'blob' });
|
||||
}
|
||||
|
||||
// 作业导出
|
||||
const exportHomework=function (data){
|
||||
return ajax.post('/xboe/school/study/course/contents-homework-export',data, { responseType: 'blob' });
|
||||
}
|
||||
|
||||
// 考试导出
|
||||
const exportExam=function (data){
|
||||
return ajax.post('/xboe/school/study/course/contents-exam-export',data, { responseType: 'blob' });
|
||||
}
|
||||
|
||||
// 评估类型资源
|
||||
const contentsAssess=function (data){
|
||||
return ajax.post('/xboe/school/study/course/contents-assess',data);
|
||||
}
|
||||
|
||||
// 考试类型资源
|
||||
const contentsExam=function (data){
|
||||
return ajax.post('/xboe/school/study/course/contents-exam',data);
|
||||
}
|
||||
|
||||
|
||||
export default {
|
||||
hasSignup,
|
||||
signup,
|
||||
@@ -463,10 +438,5 @@ export default {
|
||||
deleteSignUp,
|
||||
ids,
|
||||
followIds,
|
||||
studyIndexPost,
|
||||
exportSignup,
|
||||
exportHomework,
|
||||
exportExam,
|
||||
contentsAssess,
|
||||
contentsExam
|
||||
studyIndexPost
|
||||
}
|
||||
|
||||
@@ -432,37 +432,6 @@
|
||||
color: #333333;
|
||||
}
|
||||
}
|
||||
.el-message.new-message {
|
||||
background-color: #edf2fc !important;
|
||||
box-shadow: none !important;
|
||||
border-color: #EBEEF5 !important;
|
||||
min-width: 170px !important;
|
||||
border-radius: 10px !important;
|
||||
}
|
||||
.el-message--success.new-message {
|
||||
background-color: #f0f9eb !important;
|
||||
box-shadow: none !important;
|
||||
border-color: #e1f3d8 !important;
|
||||
min-width: 170px !important;
|
||||
border-radius: 10px !important
|
||||
}
|
||||
.el-message--error.new-message {
|
||||
background-color: #fef0f0 !important;
|
||||
box-shadow: none !important;
|
||||
border-color: #fde2e2 !important;
|
||||
min-width: 170px !important;
|
||||
border-radius: 10px !important
|
||||
}
|
||||
.el-message--warning.new-message {
|
||||
background-color: #fdf6ec !important;
|
||||
box-shadow: none !important;
|
||||
border-color: #faecd8 !important;
|
||||
min-width: 170px !important;
|
||||
border-radius: 10px !important
|
||||
}
|
||||
|
||||
|
||||
|
||||
.el-badge__content{// badge去掉白色边框
|
||||
border:1px solid #f56c6c;
|
||||
}
|
||||
|
||||
@@ -1,234 +0,0 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="置顶排序"
|
||||
:visible.sync="dialogVisible"
|
||||
custom-class="g-dialog top-course-sorter-dialog"
|
||||
width="820px"
|
||||
:close-on-click-modal="false"
|
||||
@closed="handleClosed"
|
||||
append-to-body
|
||||
>
|
||||
<div class="top-course-sorter" v-loading="loading">
|
||||
<div class="top-course-sorter__table" v-if="topList.length">
|
||||
<div class="sorter-header">
|
||||
<div class="header-cell header-cell--handle"></div>
|
||||
<div class="header-cell header-cell--order">排序</div>
|
||||
<div class="header-cell header-cell--name">课程名称</div>
|
||||
<div class="header-cell header-cell--teacher">授课教师</div>
|
||||
</div>
|
||||
<div
|
||||
class="sorter-row"
|
||||
v-for="(item, index) in topList"
|
||||
:key="item.id"
|
||||
draggable="true"
|
||||
@dragstart="handleDragStart(index, $event)"
|
||||
@dragover.prevent
|
||||
@drop="handleDrop(index)"
|
||||
@dragend="handleDragEnd"
|
||||
:class="{ 'is-dragging': draggingIndex === index }"
|
||||
>
|
||||
<div class="row-cell row-cell--handle">
|
||||
<i class="el-icon-s-operation"></i>
|
||||
</div>
|
||||
<div class="row-cell row-cell--order">{{ index + 1 }}</div>
|
||||
<div class="row-cell row-cell--name" :title="item.name">{{ item.name }}</div>
|
||||
<div class="row-cell row-cell--teacher" :title="item.teacherName || '-'">
|
||||
{{ item.teacherName || '-' }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-empty v-else-if="!loading" description="暂无置顶课程"></el-empty>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" :disabled="!topList.length" :loading="saving" @click="handleSave">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import apiCourse from '@/api/modules/course.js';
|
||||
|
||||
export default {
|
||||
name: 'TopCourseSorter',
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
loading: false,
|
||||
saving: false,
|
||||
topList: [],
|
||||
draggingIndex: null,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
open() {
|
||||
this.dialogVisible = true;
|
||||
this.fetchTopList();
|
||||
},
|
||||
async fetchTopList() {
|
||||
this.loading = true;
|
||||
try {
|
||||
const res = await apiCourse.fetchTopCourseList();
|
||||
if (res.status === 200) {
|
||||
this.topList = Array.isArray(res.result) ? [...res.result] : [];
|
||||
} else {
|
||||
this.$message.error(res.message || '获取置顶课程失败');
|
||||
this.topList = [];
|
||||
}
|
||||
} catch (error) {
|
||||
this.$message.error(error.message || '获取置顶课程失败');
|
||||
this.topList = [];
|
||||
} finally {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
handleDragStart(index, event) {
|
||||
this.draggingIndex = index;
|
||||
if (event && event.dataTransfer) {
|
||||
event.dataTransfer.effectAllowed = 'move';
|
||||
event.dataTransfer.setData('text/plain', index);
|
||||
}
|
||||
},
|
||||
handleDrop(targetIndex) {
|
||||
if (this.draggingIndex === null || this.draggingIndex === targetIndex) {
|
||||
return;
|
||||
}
|
||||
const movingItem = this.topList.splice(this.draggingIndex, 1)[0];
|
||||
this.topList.splice(targetIndex, 0, movingItem);
|
||||
this.draggingIndex = targetIndex;
|
||||
},
|
||||
handleDragEnd() {
|
||||
this.draggingIndex = null;
|
||||
},
|
||||
async handleSave() {
|
||||
if (!this.topList.length) {
|
||||
this.$message.warning('暂无需要保存的排序');
|
||||
return;
|
||||
}
|
||||
const payload = this.topList.map((item, index) => ({
|
||||
id: item.id,
|
||||
sortWeight: index,
|
||||
}));
|
||||
this.saving = true;
|
||||
try {
|
||||
const res = await apiCourse.updateTopCourseSort(payload);
|
||||
if (res.status === 200) {
|
||||
this.$message.success('排序更新成功');
|
||||
this.$emit('sorted');
|
||||
this.dialogVisible = false;
|
||||
} else {
|
||||
throw new Error(res.message || '排序更新失败');
|
||||
}
|
||||
} catch (error) {
|
||||
this.$message.error(error.message || '排序更新失败');
|
||||
} finally {
|
||||
this.saving = false;
|
||||
}
|
||||
},
|
||||
handleClosed() {
|
||||
this.topList = [];
|
||||
this.draggingIndex = null;
|
||||
this.loading = false;
|
||||
this.saving = false;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.top-course-sorter {
|
||||
min-height: 200px;
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
.top-course-sorter__table {
|
||||
border: 1px solid #ebeef5;
|
||||
border-radius: 6px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.sorter-header,
|
||||
.sorter-row {
|
||||
display: grid;
|
||||
grid-template-columns: 60px 80px 1fr 160px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.sorter-header {
|
||||
background-color: #f5f7fa;
|
||||
height: 48px;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
border-bottom: 1px solid #ebeef5;
|
||||
}
|
||||
|
||||
.sorter-row {
|
||||
min-height: 56px;
|
||||
border-bottom: 1px solid #f2f6fc;
|
||||
cursor: move;
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
.sorter-row:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.sorter-row:hover {
|
||||
background-color: #f9fbff;
|
||||
}
|
||||
|
||||
.sorter-row.is-dragging {
|
||||
opacity: 0.7;
|
||||
background-color: #ecf5ff;
|
||||
}
|
||||
|
||||
.header-cell,
|
||||
.row-cell {
|
||||
padding: 0 16px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.header-cell--handle,
|
||||
.row-cell--handle {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.header-cell--order,
|
||||
.row-cell--order {
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.row-cell--name,
|
||||
.row-cell--teacher {
|
||||
color: #303133;
|
||||
}
|
||||
|
||||
.row-cell--name {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.row-cell--teacher {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.row-cell--handle i {
|
||||
font-size: 20px;
|
||||
color: #c0c4cc;
|
||||
}
|
||||
|
||||
.dialog-footer {
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -897,7 +897,7 @@ export default {
|
||||
}
|
||||
|
||||
} else {
|
||||
console.log(editData,'editData');
|
||||
//console.log(editData,'editData');
|
||||
this.weikeReset = editData.id;
|
||||
this.onlineReset = editData.id;
|
||||
//console.log("编辑课程?");
|
||||
|
||||
@@ -3,53 +3,108 @@
|
||||
<div class="portal-top" :style="{ color: textColor }">
|
||||
<div class="portal-top-left">
|
||||
<div class="portal-top-logo">
|
||||
<img src="../assets/logo/logo-white.png" v-if="textColor == '#fff' || textColor == '#ffffff'" style="width:160px;height: 27px;" />
|
||||
<img src="../assets/logo/logo.png" v-else style="width:160px;height: 27px;" />
|
||||
<img
|
||||
src="../assets/logo/logo-white.png"
|
||||
v-if="textColor == '#fff' || textColor == '#ffffff'"
|
||||
style="width: 160px; height: 27px"
|
||||
/>
|
||||
<img
|
||||
src="../assets/logo/logo.png"
|
||||
v-else
|
||||
style="width: 160px; height: 27px"
|
||||
/>
|
||||
</div>
|
||||
<div class="portal-top-nav" v-if="userInfo.role === 1">
|
||||
<div class="top-nav" :style="{color:textColor}" :class="current == 'index' ? activeNav : ''">
|
||||
<router-link to="/index" >首页
|
||||
<div
|
||||
class="top-nav"
|
||||
:style="{ color: textColor }"
|
||||
:class="current == 'index' ? activeNav : ''"
|
||||
>
|
||||
<router-link to="/index"
|
||||
>首页
|
||||
<div :class="current == 'index' ? 'nav-bottbor' : ''"></div>
|
||||
</router-link>
|
||||
</div>
|
||||
<div class="top-nav" :style="{color:textColor}" :class="current == 'course' ? activeNav : ''">
|
||||
<a @click="handleChangeCourse">课程
|
||||
<div
|
||||
class="top-nav"
|
||||
:style="{ color: textColor }"
|
||||
:class="current == 'course' ? activeNav : ''"
|
||||
>
|
||||
<a @click="handleChangeCourse"
|
||||
>课程
|
||||
<div :class="current == 'course' ? 'nav-bottbor' : ''"></div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="top-nav" :style="{color:textColor}" :class="current == 'case' ? activeNav : ''">
|
||||
<router-link to="/case">案例
|
||||
<div
|
||||
class="top-nav"
|
||||
:style="{ color: textColor }"
|
||||
:class="current == 'case' ? activeNav : ''"
|
||||
>
|
||||
<router-link to="/case"
|
||||
>案例
|
||||
<div :class="current == 'case' ? 'nav-bottbor' : ''"></div>
|
||||
</router-link>
|
||||
</div>
|
||||
<div class="top-nav" :style="{color:textColor}" :class="current == 'article' ? activeNav : ''">
|
||||
<router-link to="/article">文章
|
||||
<div
|
||||
class="top-nav"
|
||||
:style="{ color: textColor }"
|
||||
:class="current == 'article' ? activeNav : ''"
|
||||
>
|
||||
<router-link to="/article"
|
||||
>文章
|
||||
<div :class="current == 'article' ? 'nav-bottbor' : ''"></div>
|
||||
</router-link>
|
||||
</div>
|
||||
<div class="top-nav" :style="{color:textColor}" :class="current == 'qa' ? activeNav : ''">
|
||||
<router-link to="/qa" >问答
|
||||
<div
|
||||
class="top-nav"
|
||||
:style="{ color: textColor }"
|
||||
:class="current == 'qa' ? activeNav : ''"
|
||||
>
|
||||
<router-link to="/qa"
|
||||
>问答
|
||||
<div :class="current == 'qa' ? 'nav-bottbor' : ''"></div>
|
||||
</router-link>
|
||||
</div>
|
||||
<div class="top-nav">
|
||||
<el-dropdown placement="bottom" @command="handleCommand">
|
||||
<span class="el-dropdown-link" style="font-size:16px;cursor: pointer;" :style="{color:textColor}">专区</span>
|
||||
<span
|
||||
class="el-dropdown-link"
|
||||
style="font-size: 16px; cursor: pointer"
|
||||
:style="{ color: textColor }"
|
||||
>专区</span
|
||||
>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item command="zero">热点论坛</el-dropdown-item>
|
||||
<el-dropdown-item command="one" divided>BOE系列公开课</el-dropdown-item>
|
||||
<el-dropdown-item command="two" divided>Grow180</el-dropdown-item>
|
||||
<el-dropdown-item command="three" divided>管理者进阶</el-dropdown-item>
|
||||
<el-dropdown-item command="four" divided>U选小课堂</el-dropdown-item>
|
||||
<el-dropdown-item command="five" divided>社招新员工</el-dropdown-item>
|
||||
<el-dropdown-item command="one" divided
|
||||
>BOE系列公开课</el-dropdown-item
|
||||
>
|
||||
<el-dropdown-item command="two" divided
|
||||
>Grow180</el-dropdown-item
|
||||
>
|
||||
<el-dropdown-item command="three" divided
|
||||
>管理者进阶</el-dropdown-item
|
||||
>
|
||||
<el-dropdown-item command="four" divided
|
||||
>U选小课堂</el-dropdown-item
|
||||
>
|
||||
<el-dropdown-item command="five" divided
|
||||
>社招新员工</el-dropdown-item
|
||||
>
|
||||
<!-- <el-dropdown-item command="six" divided>贡献者专区</el-dropdown-item> -->
|
||||
<el-dropdown-item command="seven" divided>教师专区</el-dropdown-item>
|
||||
<el-dropdown-item command="seven" divided
|
||||
>教师专区</el-dropdown-item
|
||||
>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
<div class="top-nav">
|
||||
<el-dropdown placement="bottom" @command="handleContributor">
|
||||
<span class="el-dropdown-link" style="font-size:16px;cursor: pointer;" :style="{color:textColor}">贡献者大会</span>
|
||||
<span
|
||||
class="el-dropdown-link"
|
||||
style="font-size: 16px; cursor: pointer"
|
||||
:style="{ color: textColor }"
|
||||
>贡献者大会</span
|
||||
>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item command="three">2024</el-dropdown-item>
|
||||
<el-dropdown-item command="one" divided>2023</el-dropdown-item>
|
||||
@@ -58,18 +113,40 @@
|
||||
</el-dropdown>
|
||||
</div>
|
||||
|
||||
<div class="top-nav" :style="{color:textColor}" :class="current == 'follow' ? activeNav : ''">
|
||||
<router-link to="/follow">我的关注
|
||||
<div
|
||||
class="top-nav"
|
||||
:style="{ color: textColor }"
|
||||
:class="current == 'follow' ? activeNav : ''"
|
||||
>
|
||||
<router-link to="/follow"
|
||||
>我的关注
|
||||
<div :class="current == 'follow' ? 'nav-bottbor' : ''"></div>
|
||||
</router-link>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="portal-top-right">
|
||||
<div v-if="goSearch !=10 && userInfo.role === 1" style="position: relative;">
|
||||
<el-input class="portal-input" v-show="!hideSearch" placeholder="搜索全部" style="border-radius: 20px !important; " @keyup.enter.native="searchJump()" clearable maxlength="50" v-model="keyword" >
|
||||
<el-select v-if="current == 'index'" v-model="findType" style="width: 75px; border-radius:20px !important;" slot="prepend" placeholder="请选择">
|
||||
<div
|
||||
v-if="goSearch != 10 && userInfo.role === 1"
|
||||
style="position: relative"
|
||||
>
|
||||
<el-input
|
||||
class="portal-input"
|
||||
v-show="!hideSearch"
|
||||
placeholder="搜索全部"
|
||||
style="border-radius: 20px !important"
|
||||
@keyup.enter.native="searchJump()"
|
||||
clearable
|
||||
maxlength="50"
|
||||
v-model="keyword"
|
||||
>
|
||||
<el-select
|
||||
v-if="current == 'index'"
|
||||
v-model="findType"
|
||||
style="width: 75px; border-radius: 20px !important"
|
||||
slot="prepend"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option label="课程" value="1"></el-option>
|
||||
<el-option label="案例" value="2"></el-option>
|
||||
<el-option label="文章" value="3"></el-option>
|
||||
@@ -77,7 +154,14 @@
|
||||
<!-- <el-option label="专区" value="5"></el-option> -->
|
||||
</el-select>
|
||||
</el-input>
|
||||
<el-button v-show="!hideSearch" class="sear-but" @click="searchJump()" type="primary" size="mini">搜索</el-button>
|
||||
<el-button
|
||||
v-show="!hideSearch"
|
||||
class="sear-but"
|
||||
@click="searchJump()"
|
||||
type="primary"
|
||||
size="mini"
|
||||
>搜索</el-button
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="person-action">
|
||||
@@ -86,11 +170,25 @@
|
||||
<el-link v-else class="person-action-index" type="primary" style="margin-right:10px; color:#fff;" :href="`${webBaseUrl}${isTiao ? '/uc/study/task' : '/uc/study/courses'}`" :underline="false">个人中心</el-link> -->
|
||||
<!-- <el-link type="primary" @click="logout()" icon="el-icon-switch-button" :underline="false">退出</el-link> -->
|
||||
<div class="person-action-item">
|
||||
<el-badge class="person-action-index" :value="userMsg" :hidden="userMsg == 0">
|
||||
<el-tooltip content="消息" placement="bottom" effect="light" :visible-arrow="false" popper-class="text-tooltip">
|
||||
<el-badge
|
||||
class="person-action-index"
|
||||
:value="userMsg"
|
||||
:hidden="userMsg == 0"
|
||||
>
|
||||
<el-tooltip
|
||||
content="消息"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
:visible-arrow="false"
|
||||
popper-class="text-tooltip"
|
||||
>
|
||||
<!-- <el-link type="primary" :href="`${webBaseUrl}/message/center/index`" :underline="false"> -->
|
||||
<router-link to="/message/center/index">
|
||||
<svg-icon :style="{color:textColor}" style="margin-right: 0;font-size:22px;" icon-class="messfff"></svg-icon>
|
||||
<svg-icon
|
||||
:style="{ color: textColor }"
|
||||
style="margin-right: 0; font-size: 22px"
|
||||
icon-class="messfff"
|
||||
></svg-icon>
|
||||
</router-link>
|
||||
<!-- </el-link> -->
|
||||
</el-tooltip>
|
||||
@@ -100,39 +198,93 @@
|
||||
<el-dropdown class="person-action-index">
|
||||
<span class="el-dropdown-link">
|
||||
<span :style="{ color: textColor }">学员</span>
|
||||
<i :style="{color:textColor}" class="el-icon-arrow-down el-icon--right"></i>
|
||||
<i
|
||||
:style="{ color: textColor }"
|
||||
class="el-icon-arrow-down el-icon--right"
|
||||
></i>
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item><router-link to="/index">学员</router-link></el-dropdown-item>
|
||||
<el-dropdown-item v-if="identity == 2 || identity == 5" @click.native="setCurIdentity(2)"><router-link to="/need/waitaudit">教师</router-link></el-dropdown-item>
|
||||
<el-dropdown-item v-if="identity == 3 || identity == 5" ><a :href="managerPath+'/learningpath'">管理员</a></el-dropdown-item>
|
||||
<el-dropdown-item
|
||||
><router-link to="/index">学员</router-link></el-dropdown-item
|
||||
>
|
||||
<el-dropdown-item
|
||||
v-if="identity == 2 || identity == 5"
|
||||
@click.native="setCurIdentity(2)"
|
||||
><router-link to="/need/waitaudit"
|
||||
>教师</router-link
|
||||
></el-dropdown-item
|
||||
>
|
||||
<el-dropdown-item v-if="identity == 3 || identity == 5"
|
||||
><a :href="managerPath + '/learningpath'"
|
||||
>管理员</a
|
||||
></el-dropdown-item
|
||||
>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
<div class="person-action-item">
|
||||
<el-dropdown>
|
||||
<div class="el-dropdown-link" style="display:flex" :style="{color:textColor}">
|
||||
<div
|
||||
class="el-dropdown-link"
|
||||
style="display: flex"
|
||||
:style="{ color: textColor }"
|
||||
>
|
||||
<div class="person-action-index">
|
||||
<div v-if="userInfo.avatar !== ''" class="user-avatar">
|
||||
<img :src="userInfo.avatar" style="width: 35px;height: 35px;"/>
|
||||
<img
|
||||
:src="userInfo.avatar"
|
||||
style="width: 35px; height: 35px"
|
||||
/>
|
||||
</div>
|
||||
<div v-else class="uavatar">
|
||||
<div v-if="sex === 1 "><img src="../../public/images/Avatarman.png" alt="" style="width: 30px;height: 30px;"></div>
|
||||
<div v-else><img src="../../public/images/Avatarwoman.png" alt="" style="width: 30px;height: 30px;"></div>
|
||||
<div v-if="sex === 1">
|
||||
<img
|
||||
src="../../public/images/Avatarman.png"
|
||||
alt=""
|
||||
style="width: 30px; height: 30px"
|
||||
/>
|
||||
</div>
|
||||
<div v-else>
|
||||
<img
|
||||
src="../../public/images/Avatarwoman.png"
|
||||
alt=""
|
||||
style="width: 30px; height: 30px"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div style="font-weight: 400;font-size: 16px; margin-top: 8px;">{{userInfo.name}}</div>
|
||||
</div>
|
||||
<div style="font-weight: 400; font-size: 16px; margin-top: 8px">
|
||||
{{ userInfo.name }}
|
||||
</div>
|
||||
</div>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item @click.native="setCurIdentity(1)"><a :href="`${webBaseUrl}${isTiao ? '/uc/study/task' : '/uc/study/courses'}`">个人中心</a></el-dropdown-item>
|
||||
<el-dropdown-item><router-link :to="'/home/'+userInfo.aid">个人主页</router-link></el-dropdown-item>
|
||||
<el-dropdown-item @click.native="setCurIdentity(1)"
|
||||
><a
|
||||
:href="`${webBaseUrl}${
|
||||
isTiao ? '/uc/study/task' : '/uc/study/courses'
|
||||
}`"
|
||||
>个人中心</a
|
||||
></el-dropdown-item
|
||||
>
|
||||
<el-dropdown-item
|
||||
><router-link :to="'/home/' + userInfo.aid"
|
||||
>个人主页</router-link
|
||||
></el-dropdown-item
|
||||
>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
<div class="person-action-item">
|
||||
|
||||
<div class="person-action-index pointer" :style="{color:textColor}" @click="logout()">
|
||||
<svg-icon style="margin-right: 4px;font-size:16px;" icon-class="white-out"></svg-icon>登出
|
||||
<div
|
||||
class="person-action-index pointer"
|
||||
:style="{ color: textColor }"
|
||||
@click="logout()"
|
||||
>
|
||||
<svg-icon
|
||||
style="margin-right: 4px; font-size: 16px"
|
||||
icon-class="white-out"
|
||||
></svg-icon
|
||||
>登出
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -142,18 +294,18 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { mapGetters, mapActions } from 'vuex';
|
||||
import apiMessage from '@/api/system/message.js';
|
||||
import popup from '@/components/AlertPopup.vue';
|
||||
import yearMedal from '@/components/Popup/China2023.vue';
|
||||
import apiBoeCourse from '@/api/boe/course.js';
|
||||
import { mapGetters, mapActions } from "vuex";
|
||||
import apiMessage from "@/api/system/message.js";
|
||||
import popup from "@/components/AlertPopup.vue";
|
||||
import yearMedal from "@/components/Popup/China2023.vue";
|
||||
import apiBoeCourse from "@/api/boe/course.js";
|
||||
import { userAvatarText } from "@/utils/tools.js";
|
||||
import apiCase from "@/api/modules/cases.js";
|
||||
export default {
|
||||
props: {
|
||||
current: {
|
||||
type: String,
|
||||
default: '',
|
||||
default: "",
|
||||
},
|
||||
hideSearch: {
|
||||
type: Boolean,
|
||||
@@ -161,7 +313,7 @@ export default {
|
||||
},
|
||||
textColor: {
|
||||
type: String,
|
||||
default: '',
|
||||
default: "",
|
||||
},
|
||||
goSearch: {
|
||||
type: Number,
|
||||
@@ -169,63 +321,78 @@ export default {
|
||||
},
|
||||
keywords: {
|
||||
type: String,
|
||||
default:''
|
||||
default: "",
|
||||
},
|
||||
},
|
||||
components: { popup, yearMedal },
|
||||
computed: {
|
||||
...mapGetters(['userInfo','curIdentity', 'userMsg','identity','studyTaskCount']),
|
||||
...mapGetters([
|
||||
"userInfo",
|
||||
"curIdentity",
|
||||
"userMsg",
|
||||
"identity",
|
||||
"studyTaskCount",
|
||||
]),
|
||||
|
||||
avatarText() {
|
||||
return userAvatarText(this.userInfo.name);
|
||||
},
|
||||
activeNav() {
|
||||
return {
|
||||
'top-nav-active-blue': this.textColor=='#000000',
|
||||
'top-nav-active-white': this.textColor=='#fff' || this.textColor=='#ffffff',
|
||||
}
|
||||
}
|
||||
"top-nav-active-blue": this.textColor == "#000000",
|
||||
"top-nav-active-white":
|
||||
this.textColor == "#fff" || this.textColor == "#ffffff",
|
||||
};
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
keywords(newval) {
|
||||
console.log(newval, 9999);
|
||||
if(this.findType == '1'){
|
||||
this.keyword = newval
|
||||
if (this.findType == "1") {
|
||||
this.keyword = newval;
|
||||
}
|
||||
},
|
||||
"$route.query.keyword": {
|
||||
handler(newval) {
|
||||
if (newval && this.current == "case") {
|
||||
this.keyword = newval;
|
||||
}
|
||||
},
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
popupConfig: {},
|
||||
ctx: process.env.VUE_APP_PUBLIC_PATH,
|
||||
managerPath: process.env.VUE_APP_MANAGER_PATH,
|
||||
fileBaseUrl: process.env.VUE_APP_FILE_BASE_URL,
|
||||
findType: '1',
|
||||
keyword: '',
|
||||
findType: "1",
|
||||
keyword: "",
|
||||
isTiao: false,
|
||||
sex:'',
|
||||
sex: "",
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.sex = this.userInfo.sex;
|
||||
this.$store.dispatch('refrashMsg');
|
||||
this.$store.dispatch("refrashMsg");
|
||||
this.loadBoeData();
|
||||
// console.log('this.userInfo::',this.userInfo)
|
||||
//this.loadPopupConfig();
|
||||
},
|
||||
methods: {
|
||||
handleChangeCourse() {
|
||||
const paths = ["/course","/qualityCourse"]
|
||||
const paths = ["/course", "/qualityCourse"];
|
||||
// 如果是 课程 和 精品课程, 那么就不再重定向
|
||||
const needReload = paths.findIndex(e=> e === this.$route.path) === -1
|
||||
if (needReload) this.$router.push({path: paths[0]})
|
||||
const needReload = paths.findIndex((e) => e === this.$route.path) === -1;
|
||||
if (needReload) this.$router.push({ path: paths[0] });
|
||||
},
|
||||
|
||||
setCurIdentity(iden) {
|
||||
this.$store.dispatch('SetCurIdentity',iden);
|
||||
this.$store.dispatch("SetCurIdentity", iden);
|
||||
},
|
||||
tomy() {
|
||||
console.log('lll')
|
||||
console.log("lll");
|
||||
},
|
||||
loadBoeData() {
|
||||
if (this.studyTaskCount > 0) {
|
||||
@@ -253,13 +420,13 @@ export default {
|
||||
let obj = {
|
||||
one: urlPre + "/web/contributornew/index",
|
||||
two: urlPre + "/web/contributor/index",
|
||||
three: urlPre + "/web/contributor_2024/index"
|
||||
three: urlPre + "/web/contributor_2024/index",
|
||||
};
|
||||
window.open(obj[val]);
|
||||
},
|
||||
handleCommand(val) {
|
||||
if (val === "four") {
|
||||
window.open("https://m.qingxuetang.com/x/?appId=qxtcorp306130")
|
||||
window.open("https://m.qingxuetang.com/x/?appId=qxtcorp306130");
|
||||
// this.$emit('showClass',true)
|
||||
} else {
|
||||
let urlPre = window.location.protocol + "//" + window.location.host;
|
||||
@@ -272,64 +439,82 @@ export default {
|
||||
// four: 'https://m.qingxuetang.com/x/?appId=qxtcorp306130',
|
||||
five: urlPre + "/boe/new-employee/index.html",
|
||||
six: urlPre + "/web/contributor/index",
|
||||
seven: this.webBaseUrl + '/grateful/index'
|
||||
seven: this.webBaseUrl + "/grateful/index",
|
||||
};
|
||||
window.open(obj[val]);
|
||||
}
|
||||
},
|
||||
handleUcCommand(val) {
|
||||
if (val == 'uc') {
|
||||
window.location.href = `${this.webBaseUrl}${this.isTiao ? '/uc/study/task' : '/uc/study/courses'}`;
|
||||
} else if (val == 'logout') {
|
||||
if (val == "uc") {
|
||||
window.location.href = `${this.webBaseUrl}${
|
||||
this.isTiao ? "/uc/study/task" : "/uc/study/courses"
|
||||
}`;
|
||||
} else if (val == "logout") {
|
||||
this.logout();
|
||||
}
|
||||
},
|
||||
searchJump() {
|
||||
this.$emit('type1', '')
|
||||
if(this.current == 'index') {
|
||||
if (this.findType == '1') {
|
||||
if(this.keyword==''){return;}
|
||||
this.$emit("type1", "");
|
||||
if (this.current == "index") {
|
||||
if (this.findType == "1") {
|
||||
if (this.keyword == "") {
|
||||
return;
|
||||
}
|
||||
// 课程
|
||||
location.href = `${this.webBaseUrl}/course?keyword=${this.keyword}`;
|
||||
//window.open(`${this.webBaseUrl}/course?keyword=${this.keyword}`);
|
||||
} else if (this.findType == '2') {
|
||||
if(this.keyword==''){return;}
|
||||
} else if (this.findType == "2") {
|
||||
if (this.keyword == "") {
|
||||
return;
|
||||
}
|
||||
// 案例
|
||||
location.href = `${this.webBaseUrl}/case?keyword=${this.keyword}`;
|
||||
//window.open(`${this.webBaseUrl}/case?keyword=${this.keyword}`);
|
||||
} else if (this.findType == '3') {
|
||||
if(this.keyword==''){return;}
|
||||
} else if (this.findType == "3") {
|
||||
if (this.keyword == "") {
|
||||
return;
|
||||
}
|
||||
//文章
|
||||
location.href = `${this.webBaseUrl}/article?keyword=${this.keyword}`;
|
||||
//window.open(`${this.webBaseUrl}/article?keyword=${this.keyword}`);
|
||||
} else if (this.findType == '4') {
|
||||
if(this.keyword==''){return;}
|
||||
} else if (this.findType == "4") {
|
||||
if (this.keyword == "") {
|
||||
return;
|
||||
}
|
||||
// 问答
|
||||
location.href = `${this.webBaseUrl}/qa?keyword=${this.keyword}`;
|
||||
//window.open(`${this.webBaseUrl}/qa?keyword=${this.keyword}`);
|
||||
} else if (this.findType == '5') {
|
||||
} else if (this.findType == "5") {
|
||||
// 专区,专区要单独的写,因为不是一个系统呀
|
||||
window.open(`${this.webBaseUrl}/zone?keyword=${this.keyword}`);
|
||||
}
|
||||
} else {
|
||||
this.$emit('emitInput',this.keyword)
|
||||
this.$emit("emitInput", this.keyword);
|
||||
if (this.goSearch == 1) {
|
||||
if(this.keyword==''){return;}
|
||||
if (this.keyword == "") {
|
||||
return;
|
||||
}
|
||||
// 课程
|
||||
location.href = `${this.webBaseUrl}/course?keyword=${this.keyword}`;
|
||||
} else if (this.goSearch == 2) {
|
||||
if(this.keyword==''){return;}
|
||||
if (this.keyword == "") {
|
||||
return;
|
||||
}
|
||||
// 案例
|
||||
// location.href=`${this.webBaseUrl}/case?keyword=${this.keyword}`;
|
||||
this.$router.push(`/case?keyword=${this.keyword}`)
|
||||
this.$router.push(`/case?keyword=${this.keyword}`);
|
||||
//window.open(`${this.webBaseUrl}/case?keyword=${this.keyword}`);
|
||||
} else if (this.goSearch == 3) {
|
||||
if(this.keyword==''){return;}
|
||||
if (this.keyword == "") {
|
||||
return;
|
||||
}
|
||||
//文章
|
||||
location.href = `${this.webBaseUrl}/article?keyword=${this.keyword}`;
|
||||
//window.open(`${this.webBaseUrl}/article?keyword=${this.keyword}`);
|
||||
} else if (this.goSearch == 4) {
|
||||
if(this.keyword==''){return;}
|
||||
if (this.keyword == "") {
|
||||
return;
|
||||
}
|
||||
// 问答
|
||||
location.href = `${this.webBaseUrl}/qa?keyword=${this.keyword}`;
|
||||
//window.open(`${this.webBaseUrl}/qa?keyword=${this.keyword}`);
|
||||
@@ -338,17 +523,20 @@ export default {
|
||||
window.open(`${this.webBaseUrl}/zone?keyword=${this.keyword}`);
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
logout() {
|
||||
this.$confirm('您确定要退出系统吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$store.dispatch('LogOut').then(() => {
|
||||
this.$confirm("您确定要退出系统吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
})
|
||||
.then(() => {
|
||||
this.$store.dispatch("LogOut").then(() => {
|
||||
//location.href = this.webBaseUrl + '/login';
|
||||
sessionStorage.setItem('dialog_session_show'+this.userInfo.aid,null); // 清除兴趣采集的"关闭"缓存
|
||||
sessionStorage.setItem(
|
||||
"dialog_session_show" + this.userInfo.aid,
|
||||
null
|
||||
); // 清除兴趣采集的"关闭"缓存
|
||||
location.href = process.env.VUE_APP_LOGIN_URL;
|
||||
});
|
||||
})
|
||||
@@ -356,21 +544,20 @@ export default {
|
||||
},
|
||||
//获取未读消息数量
|
||||
getMsgNum() {
|
||||
apiMessage.isRead().then(res => {
|
||||
apiMessage.isRead().then((res) => {
|
||||
if (res.status == 200) {
|
||||
this.msgNum = res.result;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped rel="stylesheet/scss" lang="scss">
|
||||
|
||||
::v-deep .el-dropdown-menu__item:not(.is-disabled):hover {
|
||||
background-color: #fff !important;
|
||||
color: #0059FF !important;
|
||||
color: #0059ff !important;
|
||||
}
|
||||
::v-deep.el-dropdown-menu {
|
||||
text-align: center;
|
||||
@@ -383,21 +570,25 @@ text-align: center;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.top-nav-active-blue {
|
||||
color: #387DF7;
|
||||
a{color:#387DF7;}
|
||||
color: #387df7;
|
||||
a {
|
||||
color: #387df7;
|
||||
}
|
||||
div {
|
||||
width: 75%;
|
||||
height: 4px;
|
||||
top: 75%;
|
||||
left: 13%;
|
||||
background: #387DF7;
|
||||
background: #387df7;
|
||||
border-radius: 5px;
|
||||
position: absolute;
|
||||
}
|
||||
}
|
||||
.top-nav-active-white {
|
||||
color: #fff;
|
||||
a{color:#fff;}
|
||||
a {
|
||||
color: #fff;
|
||||
}
|
||||
div {
|
||||
width: 75%;
|
||||
height: 4px;
|
||||
@@ -440,7 +631,6 @@ text-align: center;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
.portal-top-logo {
|
||||
|
||||
}
|
||||
.portal-top-nav {
|
||||
display: flex;
|
||||
@@ -542,7 +732,6 @@ text-align: center;
|
||||
::v-deep .el-badge {
|
||||
.el-badge__content {
|
||||
top: 0px;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -563,7 +752,6 @@ text-align: center;
|
||||
}
|
||||
::v-deep .el-badge {
|
||||
margin-top: 0 !important;
|
||||
|
||||
}
|
||||
::v-deep .el-link.el-link--primary:hover {
|
||||
color: #588afc;
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog class="simple-message-box" :title="title" :visible.sync="visible" :show-close="false" append-to-body>
|
||||
<div class="message-box-content"><svg-icon style="margin-right: 5px;font-size:16px"
|
||||
icon-class="jingti"></svg-icon>{{message}}</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button class="cancel" @click="cancel">{{cancelButtonText}}</el-button>
|
||||
<el-button class="confirm" type="primary" @click="confirm">{{confirmButtonText}}</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: "SimpleMessageBox",
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
title: "",
|
||||
message: "",
|
||||
confirmButtonText: "确 认",
|
||||
cancelButtonText: "取 消",
|
||||
handleConfirm: null,
|
||||
handleCancel: null,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
open() {
|
||||
this.visible = true;
|
||||
},
|
||||
cancel() {
|
||||
this.visible = false;
|
||||
this.handleCancel();
|
||||
},
|
||||
confirm() {
|
||||
this.visible = false;
|
||||
this.handleConfirm();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.simple-message-box {
|
||||
::v-deep .el-dialog {
|
||||
border-radius: 12px;
|
||||
}
|
||||
::v-deep .el-dialog__title {
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
}
|
||||
.message-box-content {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
font-size: 16px;
|
||||
align-items: center;
|
||||
color: #000000;
|
||||
}
|
||||
.cancel {
|
||||
width: 120px;
|
||||
height: 40px;
|
||||
background: rgba(#4284f7,0.1);
|
||||
border-radius: 8px;
|
||||
margin-right: 8px;
|
||||
border: none;
|
||||
span {
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
color: #4284f7;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.confirm {
|
||||
width: 120px;
|
||||
height: 40px;
|
||||
background: #4284f7;
|
||||
border-radius: 8px;
|
||||
|
||||
span {
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
color: #ffffff;
|
||||
line-height: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -414,11 +414,6 @@ export default {
|
||||
if(meta.title == '添加受众' || meta.title == '查看受众'){
|
||||
meta.activeMenu = '/manage/ugroups'
|
||||
}
|
||||
|
||||
if(route.path == '/course/coursemanage'){
|
||||
console.log('进入课程管理');
|
||||
meta.activeMenu = '/need/course'
|
||||
}
|
||||
if (meta.activeMenu) {
|
||||
return meta.activeMenu;
|
||||
}
|
||||
|
||||
@@ -29,9 +29,6 @@ export const pages=[
|
||||
{title:'课程首页',path:'index',component:'course/Index',hidden:true},
|
||||
{title:'课程建设',path:'mylist',component:'course/TeacherList',hidden:true},
|
||||
{title:'课程管理',path:'manage',component:'course/ManageList',hidden:false},
|
||||
{title:'课程管理',path:'coursemanage',component:'course/CourseManage',hidden:true},
|
||||
{title:'课程管理新版',path:'manage-remote',component:'course/ManageListRemote',hidden:false},
|
||||
{title:'课程管理新版',path:'coursemanage-remote',component:'course/CourseManageRemote',hidden:true},
|
||||
{title:'课程统计',path:'stat',component:'course/StatIndex',hidden:false},
|
||||
{title:'课件管理',path:'courseware',component:'course/Courseware',hidden:false},
|
||||
{title:'报名管理',path:'msignup',component:'study/ManageSignup',hidden:true},
|
||||
@@ -120,8 +117,6 @@ export const iframes=[
|
||||
{title:'嵌入测试', path:'/iframe/index',hidden:false,component:'portal/iframe'},
|
||||
{title:'课件管理', path:'/iframe/course/coursewares',hidden:false,component:'course/Courseware'},
|
||||
{title:'课程管理', path:'/iframe/course/manages',hidden:false,component:'course/ManageList'},
|
||||
{title:'课程管理新版', path:'/iframe/course/manage-remote',hidden:false,component:'course/ManageListRemote'},
|
||||
{title:'课程管理新版', path:'/iframe/course/coursemanage-remote',hidden:false,component:'course/CourseManageRemote'},
|
||||
{title:'考试试题管理', path:'/iframe/exam/questions',hidden:false,component:'exam/Question'},
|
||||
{title:'查看答卷', path:'/iframe/exam/viewanswer',hidden:false,component:'exam/viewAnswer'},
|
||||
{title:'考试试卷管理', path:'/iframe/exam/papers',hidden:false,component:'exam/TestPaper'},
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="10px" height="10px" viewBox="0 0 10 10" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>check 2</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="icon" transform="translate(-178, -894)" fill="#000000" fill-rule="nonzero">
|
||||
<g id="check" transform="translate(178, 894)">
|
||||
<path d="M1.04597978,8.4501514 L8.95402022,8.4501514 C9.18512277,8.4501514 9.40057776,8.37277111 9.56186808,8.23258944 C9.72556572,8.09128631 9.81584015,7.90063923 9.81584015,7.69653471 L9.81584015,6.30368958 C9.81584015,5.89548054 9.42103996,5.55007289 8.95402022,5.55007289 L6.73206548,5.55007289 L6.50096293,4.29068072 C7.27250843,3.88247168 7.74915744,3.13334081 7.74915744,2.32253 C7.74915744,2.01300886 7.67693789,1.71021644 7.53490611,1.42424582 C7.39768897,1.14836829 7.2026962,0.89940563 6.95474242,0.68520803 C6.44198363,0.243355389 5.76793452,0 5.05416466,0 C4.32956187,0 3.6482908,0.241112482 3.13553202,0.677357856 C2.62156957,1.11584614 2.33750602,1.70012336 2.33750602,2.32253 C2.33750602,3.13334081 2.81415503,3.88135023 3.58570053,4.29068072 L3.35459798,5.55007289 L1.04597978,5.55007289 C0.814877227,5.55007289 0.599422244,5.62745318 0.438131921,5.76763485 C0.27443428,5.90893798 0.184159846,6.09958506 0.184159846,6.30368958 L0.184159846,7.69653471 C0.184159846,8.10474375 0.578960039,8.4501514 1.04597978,8.4501514 Z M1.14106885,6.43041382 L3.45450169,6.43041382 C3.87578238,6.43041382 4.24289841,6.13098576 4.29345209,5.74857015 L4.5907559,4.35908938 L4.59195956,4.35460357 C4.64010592,4.04396097 4.47400096,3.754626 4.15984593,3.59874397 C3.64347617,3.3430526 3.33533943,2.87316362 3.33533943,2.34159471 C3.33533943,1.52405518 4.10568127,0.860154761 5.052961,0.860154761 C6.00024073,0.860154761 6.77058257,1.516205 6.77058257,2.32253 C6.77058257,2.85409891 6.46244584,3.32398789 5.94607607,3.57967926 C5.63914299,3.73219693 5.46461242,4.04283952 5.51396245,4.35460357 L5.51396245,4.35684647 L5.81246991,5.74857015 C5.86302359,6.13098576 6.23134328,6.43041382 6.65262398,6.43041382 L8.86013481,6.43041382 L8.86013481,7.58999664 L1.14106885,7.58999664 L1.14106885,6.43041382 Z M9.51612903,9.09835146 L0.483870968,9.09835146 C0.217862301,9.09835146 0,9.30133453 0,9.54917573 C0,9.79701693 0.217862301,10 0.483870968,10 L9.51612903,10 C9.7821377,10 10,9.79701693 10,9.54917573 C10,9.30133453 9.78334136,9.09835146 9.51612903,9.09835146 Z" id="形状"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.5 KiB |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="10px" height="10px" viewBox="0 0 10 10" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>check</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="icon" transform="translate(-178, -920)" fill="#4284F7" fill-rule="nonzero">
|
||||
<g id="check" transform="translate(178, 920)">
|
||||
<path d="M1.04597978,8.4501514 L8.95402022,8.4501514 C9.18512277,8.4501514 9.40057776,8.37277111 9.56186808,8.23258944 C9.72556572,8.09128631 9.81584015,7.90063923 9.81584015,7.69653471 L9.81584015,6.30368958 C9.81584015,5.89548054 9.42103996,5.55007289 8.95402022,5.55007289 L6.73206548,5.55007289 L6.50096293,4.29068072 C7.27250843,3.88247168 7.74915744,3.13334081 7.74915744,2.32253 C7.74915744,2.01300886 7.67693789,1.71021644 7.53490611,1.42424582 C7.39768897,1.14836829 7.2026962,0.89940563 6.95474242,0.68520803 C6.44198363,0.243355389 5.76793452,0 5.05416466,0 C4.32956187,0 3.6482908,0.241112482 3.13553202,0.677357856 C2.62156957,1.11584614 2.33750602,1.70012336 2.33750602,2.32253 C2.33750602,3.13334081 2.81415503,3.88135023 3.58570053,4.29068072 L3.35459798,5.55007289 L1.04597978,5.55007289 C0.814877227,5.55007289 0.599422244,5.62745318 0.438131921,5.76763485 C0.27443428,5.90893798 0.184159846,6.09958506 0.184159846,6.30368958 L0.184159846,7.69653471 C0.184159846,8.10474375 0.578960039,8.4501514 1.04597978,8.4501514 Z M1.14106885,6.43041382 L3.45450169,6.43041382 C3.87578238,6.43041382 4.24289841,6.13098576 4.29345209,5.74857015 L4.5907559,4.35908938 L4.59195956,4.35460357 C4.64010592,4.04396097 4.47400096,3.754626 4.15984593,3.59874397 C3.64347617,3.3430526 3.33533943,2.87316362 3.33533943,2.34159471 C3.33533943,1.52405518 4.10568127,0.860154761 5.052961,0.860154761 C6.00024073,0.860154761 6.77058257,1.516205 6.77058257,2.32253 C6.77058257,2.85409891 6.46244584,3.32398789 5.94607607,3.57967926 C5.63914299,3.73219693 5.46461242,4.04283952 5.51396245,4.35460357 L5.51396245,4.35684647 L5.81246991,5.74857015 C5.86302359,6.13098576 6.23134328,6.43041382 6.65262398,6.43041382 L8.86013481,6.43041382 L8.86013481,7.58999664 L1.14106885,7.58999664 L1.14106885,6.43041382 Z M9.51612903,9.09835146 L0.483870968,9.09835146 C0.217862301,9.09835146 0,9.30133453 0,9.54917573 C0,9.79701693 0.217862301,10 0.483870968,10 L9.51612903,10 C9.7821377,10 10,9.79701693 10,9.54917573 C10,9.30133453 9.78334136,9.09835146 9.51612903,9.09835146 Z" id="形状"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.5 KiB |
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="11px" height="12px" viewBox="0 0 11 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>shanchu</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="icon" transform="translate(-436, -918)" fill="#FF1818" fill-rule="nonzero">
|
||||
<g id="shanchu" transform="translate(436, 918)">
|
||||
<path d="M10.4999537,3.19289906 L0.500046316,3.19289906 C0.223878361,3.19289906 0,2.97107081 0,2.6974318 C0,2.42379279 0.223878361,2.20196454 0.500046316,2.20196454 L10.4999537,2.20196454 C10.7761216,2.20196454 11,2.42379279 11,2.6974318 C11,2.97107081 10.7761216,3.19289906 10.4999537,3.19289906 Z" id="路径"></path>
|
||||
<path d="M8.27763883,12 L2.72210644,12 C1.83281125,11.9990263 1.11214015,11.2849546 1.11115743,10.4038029 L1.11115743,2.6974318 C1.11115743,2.42379279 1.33503579,2.20196454 1.61120374,2.20196454 C1.8873717,2.20196454 2.11125006,2.42379279 2.11125006,2.6974318 L2.11125006,10.4038029 C2.11125006,10.738359 2.38496787,11.0095703 2.7226159,11.0095703 L8.2781483,11.0095703 C8.61579634,11.0095703 8.88951415,10.738359 8.88951415,10.4038029 L8.88951415,2.6974318 C8.88951415,2.42379279 9.11339251,2.20196454 9.38956046,2.20196454 C9.66572842,2.20196454 9.88960678,2.42379279 9.88960678,2.6974318 L9.88960678,10.4038029 C9.88862317,11.2853484 9.16733192,11.9995828 8.27763883,12 Z M7.72206011,3.19289906 C7.4459504,3.1927598 7.22215435,2.9710131 7.22201381,2.6974318 L7.22201381,1.59619712 C7.22201381,1.43553761 7.15760223,1.2814583 7.04294889,1.16785488 C6.92829555,1.05425145 6.77279226,0.990429712 6.61064795,0.990429715 L4.3890973,0.990429715 C4.05144927,0.990429715 3.77773146,1.26164102 3.77773146,1.59619712 L3.77773146,2.6974318 C3.77773146,2.97107081 3.5538531,3.19289906 3.27768515,3.19289906 C3.00151719,3.19289906 2.77763883,2.97107081 2.77763883,2.6974318 L2.77763883,1.59619712 C2.77862156,0.715045435 3.49929265,0.000973720991 4.38858784,0 L6.6109027,0 C7.50019788,0.000973727448 8.22086897,0.71504544 8.2218517,1.59619712 L8.2218517,2.6974318 C8.22171131,2.97091464 7.99807034,3.19262061 7.72206011,3.19289906 L7.72206011,3.19289906 Z" id="形状"></path>
|
||||
<path d="M4.3890973,9.2475444 C4.11292935,9.2475444 3.88905099,9.02571608 3.88905099,8.75207707 L3.88905099,5.44938266 C3.88902352,5.27235111 3.9843258,5.10875556 4.13905195,5.02023193 C4.2937781,4.93170829 4.48441652,4.93170829 4.63914267,5.02023193 C4.79386882,5.10875556 4.8891711,5.27235111 4.88914369,5.44938266 L4.88914369,8.75207707 C4.88921124,8.88350369 4.83654966,9.00956666 4.74275812,9.10249932 C4.64896658,9.19543199 4.52173855,9.24761133 4.3890973,9.2475444 L4.3890973,9.2475444 Z" id="路径"></path>
|
||||
<path d="M6.61115743,9.24754433 C6.33498947,9.24754433 6.11111111,9.02571608 6.11111111,8.75207707 L6.11111111,5.44938266 C6.11111111,5.17574365 6.33498947,4.9539154 6.61115743,4.9539154 C6.88732538,4.9539154 7.11120374,5.17574365 7.11120374,5.44938266 L7.11120374,8.75207707 C7.11120374,9.02571608 6.88732538,9.24754433 6.61115743,9.24754433 L6.61115743,9.24754433 Z" id="路径"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.2 KiB |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>chakan</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="icon" transform="translate(-326, -920)" fill="#4284F7" fill-rule="nonzero">
|
||||
<g id="chakan" transform="translate(326, 920)">
|
||||
<path d="M8.94642857,0 C9.61213393,0 10.1517857,0.539651786 10.1517857,1.20535714 L10.1517857,3.16071429 L11.0625,3.16071429 C11.5750848,3.16071429 11.9915893,3.57208929 11.9998661,4.08270536 L12,4.09821429 L12,10.7946429 C12,11.453692 11.4710759,11.989192 10.8145714,11.9998393 L10.7946429,12 L1.20535714,12 C0.546308036,12 0.0108080357,11.4710759 0.000160714286,10.8145714 L0,10.7946429 L0,4.09821429 C0,3.58562946 0.411375,3.169125 0.921991071,3.16084821 L0.9375,3.16071429 L1.84821429,3.16071429 L1.84821429,1.20535714 C1.84821429,0.546308036 2.37713839,0.0108080357 3.03364286,0.000160714286 L3.05357143,0 L8.94642857,0 Z M11.1964286,8.83928571 L0.803571429,8.83928571 L0.803571429,10.7946429 C0.803571429,11.0143259 0.979875,11.1928259 1.19871429,11.196375 L1.20535714,11.1964286 L10.7946429,11.1964286 C11.0143259,11.1964286 11.1928259,11.020125 11.1964286,10.8012857 L11.1964286,10.7946429 L11.1964286,8.83928571 Z M1.84821429,3.96428571 L0.9375,3.96428571 C0.864776786,3.96428571 0.805607143,4.02223661 0.803625,4.09446429 L0.803571429,4.09821429 L0.803571429,8.03571429 L1.84821429,8.03571429 L1.84821429,3.96428571 Z M11.0625,3.96428571 L10.1517857,3.96428571 L10.1517857,8.03571429 L11.1964286,8.03571429 L11.1964286,4.09821429 C11.1964286,4.02549107 11.1384777,3.96632143 11.06625,3.96433929 L11.0625,3.96428571 Z M8.95307143,0.803571429 L3.05357143,0.803571429 C2.83166518,0.803571429 2.65178571,0.983450893 2.65178571,1.20535714 L2.65178571,8.03571429 L9.34821429,8.03571429 L9.34821429,1.20535714 C9.34821429,0.985674107 9.17191071,0.807174107 8.95307143,0.803571429 Z M5.69866071,1.47321429 C7.1595,1.47321429 8.34375,2.65746429 8.34375,4.11830357 C8.34375,4.70375893 8.15354464,5.24479018 7.83155357,5.68297768 L8.65222768,6.50366518 C8.80913839,6.6605625 8.80913839,6.91495982 8.65222768,7.07187054 C8.49531696,7.22878125 8.24093304,7.22878125 8.08402232,7.07187054 L7.26333482,6.25119643 C6.82513393,6.5731875 6.28411607,6.76339286 5.69866071,6.76339286 C4.23782143,6.76339286 3.05357143,5.57914286 3.05357143,4.11830357 C3.05357143,2.65746429 4.23782143,1.47321429 5.69866071,1.47321429 Z M5.69866071,2.27678571 C4.68160714,2.27678571 3.85714286,3.10125 3.85714286,4.11830357 C3.85714286,5.13535714 4.68160714,5.95982143 5.69866071,5.95982143 C6.71571429,5.95982143 7.54017857,5.13535714 7.54017857,4.11830357 C7.54017857,3.10125 6.71571429,2.27678571 5.69866071,2.27678571 Z" id="形状"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.9 KiB |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>a-zidingyipoppy_icon_zidinyi2备份 11 2</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="icon" transform="translate(-64, -893)" fill="#000000" fill-rule="nonzero">
|
||||
<g id="a-zidingyipoppy_icon_zidinyi2备份-11" transform="translate(64, 893)">
|
||||
<path d="M9.824,2.11948459 L7.938,0.198782456 C7.67766676,-0.0662608185 7.25566656,-0.0662608185 6.99533333,0.198782456 L1.11533333,6.18697362 L0.123333328,9.21908947 C0.0430921896,9.46316182 0.105275196,9.73245695 0.28391775,9.91453032 C0.462560305,10.0966037 0.726940747,10.1601436 0.966666672,10.0786189 L3.944,9.06768735 L9.824,3.08017513 C10.0842546,2.8150518 10.0842546,2.38528686 9.824,2.12016352 L9.824,2.11948459 Z M8.88266667,2.60016932 L3.46133333,8.12193334 L1.32933333,8.84974978 L2.04666667,6.68123702 L7.46866667,1.16015192 L8.88266667,2.60016932 L8.88266667,2.60016932 Z M0,10.9816001 L12,10.9816001 L12,12 L0,12 L0,10.9816001 Z" id="形状"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>a-zidingyipoppy_icon_zidinyi2备份 11</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="icon" transform="translate(-64, -919)" fill="#4284F7" fill-rule="nonzero">
|
||||
<g id="a-zidingyipoppy_icon_zidinyi2备份-11" transform="translate(64, 919)">
|
||||
<path d="M9.824,2.11948459 L7.938,0.198782456 C7.67766676,-0.0662608185 7.25566656,-0.0662608185 6.99533333,0.198782456 L1.11533333,6.18697362 L0.123333328,9.21908947 C0.0430921896,9.46316182 0.105275196,9.73245695 0.28391775,9.91453032 C0.462560305,10.0966037 0.726940747,10.1601436 0.966666672,10.0786189 L3.944,9.06768735 L9.824,3.08017513 C10.0842546,2.8150518 10.0842546,2.38528686 9.824,2.12016352 L9.824,2.11948459 Z M8.88266667,2.60016932 L3.46133333,8.12193334 L1.32933333,8.84974978 L2.04666667,6.68123702 L7.46866667,1.16015192 L8.88266667,2.60016932 L8.88266667,2.60016932 Z M0,10.9816001 L12,10.9816001 L12,12 L0,12 L0,10.9816001 Z" id="形状"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>erweima 2</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="icon" transform="translate(-258, -893)" fill="#000000" fill-rule="nonzero">
|
||||
<g id="erweima" transform="translate(258, 893)">
|
||||
<path d="M4,6.66666667 L1.33333333,6.66666667 C0.6,6.66666667 0,7.26666667 0,8 L0,10.6666667 C0,11.4 0.6,12 1.33333333,12 L4,12 C4.73333333,12 5.33333333,11.4 5.33333333,10.6666667 L5.33333333,8 C5.33333333,7.26666667 4.73333333,6.66666667 4,6.66666667 Z M4.44444444,10.6666667 C4.44444444,10.9111111 4.24444444,11.1111111 4,11.1111111 L1.33333333,11.1111111 C1.08888889,11.1111111 0.888888889,10.9111111 0.888888889,10.6666667 L0.888888889,8 C0.888888889,7.75555556 1.08888889,7.55555556 1.33333333,7.55555556 L4,7.55555556 C4.24444444,7.55555556 4.44444444,7.75555556 4.44444444,8 L4.44444444,10.6666667 Z M4,0 L1.33333333,0 C0.6,0 0,0.6 0,1.33333333 L0,4 C0,4.73333333 0.6,5.33333333 1.33333333,5.33333333 L4,5.33333333 C4.73333333,5.33333333 5.33333333,4.73333333 5.33333333,4 L5.33333333,1.33333333 C5.33333333,0.6 4.73333333,0 4,0 Z M4.44444444,4 C4.44444444,4.24444444 4.24444444,4.44444444 4,4.44444444 L1.33333333,4.44444444 C1.08888889,4.44444444 0.888888889,4.24444444 0.888888889,4 L0.888888889,1.33333333 C0.888888889,1.08888889 1.08888889,0.888888889 1.33333333,0.888888889 L4,0.888888889 C4.24444444,0.888888889 4.44444444,1.08888889 4.44444444,1.33333333 L4.44444444,4 Z M11.3333333,6.66666667 C11.0888889,6.66666667 10.8888889,6.86666667 10.8888889,7.11111111 L10.8888889,11.5555556 C10.8888889,11.8 11.0888889,12 11.3333333,12 C11.5777778,12 11.7777778,11.8 11.7777778,11.5555556 L11.7777778,7.11111111 C11.7777778,6.86666667 11.5777778,6.66666667 11.3333333,6.66666667 Z M10.6666667,0 L8,0 C7.26666667,0 6.66666667,0.6 6.66666667,1.33333333 L6.66666667,4 C6.66666667,4.73333333 7.26666667,5.33333333 8,5.33333333 L10.6666667,5.33333333 C11.4,5.33333333 12,4.73333333 12,4 L12,1.33333333 C12,0.6 11.4,0 10.6666667,0 Z M11.1111111,4 C11.1111111,4.24444444 10.9111111,4.44444444 10.6666667,4.44444444 L8,4.44444444 C7.75555556,4.44444444 7.55555556,4.24444444 7.55555556,4 L7.55555556,1.33333333 C7.55555556,1.08888889 7.75555556,0.888888889 8,0.888888889 L10.6666667,0.888888889 C10.9111111,0.888888889 11.1111111,1.08888889 11.1111111,1.33333333 L11.1111111,4 Z M7.33333333,7.33333333 C7.08888889,7.33333333 6.88888889,7.53333333 6.88888889,7.77777778 L6.88888889,11.5555556 C6.88888889,11.8 7.08888889,12 7.33333333,12 C7.57777778,12 7.77777778,11.8 7.77777778,11.5555556 L7.77777778,7.77777778 C7.77777778,7.53333333 7.57777778,7.33333333 7.33333333,7.33333333 Z M9.33333333,8.66666667 C9.08888889,8.66666667 8.88888889,8.86666667 8.88888889,9.11111111 L8.88888889,11.5555556 C8.88888889,11.8 9.08888889,12 9.33333333,12 C9.57777778,12 9.77777778,11.8 9.77777778,11.5555556 L9.77777778,9.11111111 C9.77777778,8.86666667 9.57777778,8.66666667 9.33333333,8.66666667 Z" id="形状"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.1 KiB |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>erweima</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="icon" transform="translate(-258, -919)" fill="#4284F7" fill-rule="nonzero">
|
||||
<g id="erweima" transform="translate(258, 919)">
|
||||
<path d="M4,6.66666667 L1.33333333,6.66666667 C0.6,6.66666667 0,7.26666667 0,8 L0,10.6666667 C0,11.4 0.6,12 1.33333333,12 L4,12 C4.73333333,12 5.33333333,11.4 5.33333333,10.6666667 L5.33333333,8 C5.33333333,7.26666667 4.73333333,6.66666667 4,6.66666667 Z M4.44444444,10.6666667 C4.44444444,10.9111111 4.24444444,11.1111111 4,11.1111111 L1.33333333,11.1111111 C1.08888889,11.1111111 0.888888889,10.9111111 0.888888889,10.6666667 L0.888888889,8 C0.888888889,7.75555556 1.08888889,7.55555556 1.33333333,7.55555556 L4,7.55555556 C4.24444444,7.55555556 4.44444444,7.75555556 4.44444444,8 L4.44444444,10.6666667 Z M4,0 L1.33333333,0 C0.6,0 0,0.6 0,1.33333333 L0,4 C0,4.73333333 0.6,5.33333333 1.33333333,5.33333333 L4,5.33333333 C4.73333333,5.33333333 5.33333333,4.73333333 5.33333333,4 L5.33333333,1.33333333 C5.33333333,0.6 4.73333333,0 4,0 Z M4.44444444,4 C4.44444444,4.24444444 4.24444444,4.44444444 4,4.44444444 L1.33333333,4.44444444 C1.08888889,4.44444444 0.888888889,4.24444444 0.888888889,4 L0.888888889,1.33333333 C0.888888889,1.08888889 1.08888889,0.888888889 1.33333333,0.888888889 L4,0.888888889 C4.24444444,0.888888889 4.44444444,1.08888889 4.44444444,1.33333333 L4.44444444,4 Z M11.3333333,6.66666667 C11.0888889,6.66666667 10.8888889,6.86666667 10.8888889,7.11111111 L10.8888889,11.5555556 C10.8888889,11.8 11.0888889,12 11.3333333,12 C11.5777778,12 11.7777778,11.8 11.7777778,11.5555556 L11.7777778,7.11111111 C11.7777778,6.86666667 11.5777778,6.66666667 11.3333333,6.66666667 Z M10.6666667,0 L8,0 C7.26666667,0 6.66666667,0.6 6.66666667,1.33333333 L6.66666667,4 C6.66666667,4.73333333 7.26666667,5.33333333 8,5.33333333 L10.6666667,5.33333333 C11.4,5.33333333 12,4.73333333 12,4 L12,1.33333333 C12,0.6 11.4,0 10.6666667,0 Z M11.1111111,4 C11.1111111,4.24444444 10.9111111,4.44444444 10.6666667,4.44444444 L8,4.44444444 C7.75555556,4.44444444 7.55555556,4.24444444 7.55555556,4 L7.55555556,1.33333333 C7.55555556,1.08888889 7.75555556,0.888888889 8,0.888888889 L10.6666667,0.888888889 C10.9111111,0.888888889 11.1111111,1.08888889 11.1111111,1.33333333 L11.1111111,4 Z M7.33333333,7.33333333 C7.08888889,7.33333333 6.88888889,7.53333333 6.88888889,7.77777778 L6.88888889,11.5555556 C6.88888889,11.8 7.08888889,12 7.33333333,12 C7.57777778,12 7.77777778,11.8 7.77777778,11.5555556 L7.77777778,7.77777778 C7.77777778,7.53333333 7.57777778,7.33333333 7.33333333,7.33333333 Z M9.33333333,8.66666667 C9.08888889,8.66666667 8.88888889,8.86666667 8.88888889,9.11111111 L8.88888889,11.5555556 C8.88888889,11.8 9.08888889,12 9.33333333,12 C9.57777778,12 9.77777778,11.8 9.77777778,11.5555556 L9.77777778,9.11111111 C9.77777778,8.86666667 9.57777778,8.66666667 9.33333333,8.66666667 Z" id="形状"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.1 KiB |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>jingti-copy</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="删除_弹框" transform="translate(-806, -410)" fill="#FB2727" fill-rule="nonzero">
|
||||
<g id="jingti-copy" transform="translate(806, 410)">
|
||||
<path d="M8,1.125 C8.928125,1.125 9.828125,1.30625 10.675,1.6640625 C11.49375,2.0109375 12.228125,2.50625 12.8609375,3.1375 C13.4921875,3.76875 13.9890625,4.5046875 14.334375,5.3234375 C14.69375,6.171875 14.875,7.071875 14.875,8 C14.875,8.928125 14.69375,9.828125 14.3359375,10.675 C13.9890625,11.49375 13.49375,12.228125 12.8625,12.8609375 C12.23125,13.4921875 11.4953125,13.9890625 10.6765625,14.334375 C9.828125,14.69375 8.928125,14.875 8,14.875 C7.071875,14.875 6.171875,14.69375 5.325,14.3359375 C4.50625,13.9890625 3.771875,13.49375 3.1390625,12.8625 C2.5078125,12.23125 2.0109375,11.4953125 1.665625,10.6765625 C1.30625,9.828125 1.125,8.928125 1.125,8 C1.125,7.071875 1.30625,6.171875 1.6640625,5.325 C2.0109375,4.50625 2.50625,3.771875 3.1375,3.1390625 C3.76875,2.5078125 4.5046875,2.0109375 5.3234375,1.665625 C6.171875,1.30625 7.071875,1.125 8,1.125 Z M8,0 C3.58125,0 0,3.58125 0,8 C0,12.41875 3.58125,16 8,16 C12.41875,16 16,12.41875 16,8 C16,3.58125 12.41875,0 8,0 Z M8,10 C7.6546875,10 7.375,9.7203125 7.375,9.375 L7.375,3.609375 C7.375,3.2640625 7.6546875,2.984375 8,2.984375 C8.3453125,2.984375 8.625,3.2640625 8.625,3.609375 L8.625,9.375 C8.625,9.7203125 8.3453125,10 8,10 Z M7.296875,11.703125 C7.296875,12.0914531 7.61167187,12.40625 8,12.40625 C8.38832813,12.40625 8.703125,12.0914531 8.703125,11.703125 C8.703125,11.3147969 8.38832812,11 8,11 C7.61167188,11 7.296875,11.3147969 7.296875,11.703125 Z" id="形状"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.9 KiB |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>guanli 2</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="icon" transform="translate(-124, -894)" fill="#000000" fill-rule="nonzero">
|
||||
<g id="guanli" transform="translate(124, 894)">
|
||||
<path d="M4.49064449,5.50676379 L0.997920994,5.50676379 C0.449064449,5.50676379 0,5.05723205 0,4.50780437 L0,1.01144641 C0,0.462018737 0.449064449,0.0124869995 0.997920994,0.0124869995 L4.49064449,0.0124869995 C5.03950104,0.0124869995 5.48856549,0.462018737 5.48856549,1.01144641 L5.48856549,4.50780437 C5.48856549,5.05723205 5.03950104,5.50676379 4.49064449,5.50676379 Z M4.5347973,4.50780437 L4.5347973,5.00728409 L4.5347973,4.50780437 Z M0.997920994,1.01144641 L0.997920994,4.50780437 L4.49064449,4.50780437 L4.49064449,1.01144641 L0.997920994,1.01144641 Z M9.00623701,6.0062435 C8.75675676,6.0062435 8.53222453,5.90634756 8.35758836,5.73152966 L6.28690229,3.65868887 C6.11226612,3.48387098 6.01247401,3.25910511 6.01247401,3.00936525 C6.01247401,2.75962539 6.11226611,2.53485953 6.28690229,2.36004162 L8.35758836,0.26222685 C8.70686072,-0.0874089499 9.30561332,-0.0874089499 9.65488566,0.26222685 L11.7255717,2.36004162 C11.9002079,2.53485952 12,2.75962539 12,3.00936525 C12,3.25910511 11.9002079,3.48387097 11.7255717,3.65868887 L9.65488566,5.73152966 C9.48024949,5.90634755 9.25571726,6.0062435 9.00623701,6.0062435 L9.00623701,6.0062435 Z M7.06029106,3.00936525 L9.03118504,4.98231009 L10.977131,3.00936525 L9.00623701,1.03642041 L7.06029106,3.00936525 Z M4.49064449,12 L0.997920994,12 C0.449064449,12 0,11.5504683 0,11.0010406 L0,7.50468262 C0,6.95525495 0.449064449,6.50572321 0.997920994,6.50572321 L4.49064449,6.50572321 C5.03950104,6.50572321 5.48856549,6.95525495 5.48856549,7.50468262 L5.48856549,11.0010406 C5.48856549,11.5504683 5.03950104,12 4.49064449,12 Z M4.5347973,11.0010406 L4.5347973,11.5005203 L4.5347973,11.0010406 Z M0.997920994,7.50468262 L0.997920994,11.0010406 L4.49064449,11.0010406 L4.49064449,7.50468262 L0.997920994,7.50468262 Z M11.002079,12 L7.50935551,12 C6.96049896,12 6.51143451,11.5504683 6.51143451,11.0010406 L6.51143451,7.50468262 C6.51143451,6.95525495 6.96049896,6.50572321 7.50935551,6.50572321 L11.002079,6.50572321 C11.5509356,6.50572321 12,6.95525495 12,7.50468262 L12,11.0010406 C12,11.5504683 11.5509356,12 11.002079,12 Z M11.0462318,11.0010406 L11.0462318,11.5005203 L11.0462318,11.0010406 Z M7.50935551,7.50468262 L7.50935551,11.0010406 L11.002079,11.0010406 L11.002079,7.50468262 L7.50935551,7.50468262 Z" id="形状"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.7 KiB |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>guanli</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="icon" transform="translate(-124, -920)" fill="#4284F7" fill-rule="nonzero">
|
||||
<g id="guanli" transform="translate(124, 920)">
|
||||
<path d="M4.49064449,5.50676379 L0.997920994,5.50676379 C0.449064449,5.50676379 0,5.05723205 0,4.50780437 L0,1.01144641 C0,0.462018737 0.449064449,0.0124869995 0.997920994,0.0124869995 L4.49064449,0.0124869995 C5.03950104,0.0124869995 5.48856549,0.462018737 5.48856549,1.01144641 L5.48856549,4.50780437 C5.48856549,5.05723205 5.03950104,5.50676379 4.49064449,5.50676379 Z M4.5347973,4.50780437 L4.5347973,5.00728409 L4.5347973,4.50780437 Z M0.997920994,1.01144641 L0.997920994,4.50780437 L4.49064449,4.50780437 L4.49064449,1.01144641 L0.997920994,1.01144641 Z M9.00623701,6.0062435 C8.75675676,6.0062435 8.53222453,5.90634756 8.35758836,5.73152966 L6.28690229,3.65868887 C6.11226612,3.48387098 6.01247401,3.25910511 6.01247401,3.00936525 C6.01247401,2.75962539 6.11226611,2.53485953 6.28690229,2.36004162 L8.35758836,0.26222685 C8.70686072,-0.0874089499 9.30561332,-0.0874089499 9.65488566,0.26222685 L11.7255717,2.36004162 C11.9002079,2.53485952 12,2.75962539 12,3.00936525 C12,3.25910511 11.9002079,3.48387097 11.7255717,3.65868887 L9.65488566,5.73152966 C9.48024949,5.90634755 9.25571726,6.0062435 9.00623701,6.0062435 L9.00623701,6.0062435 Z M7.06029106,3.00936525 L9.03118504,4.98231009 L10.977131,3.00936525 L9.00623701,1.03642041 L7.06029106,3.00936525 Z M4.49064449,12 L0.997920994,12 C0.449064449,12 0,11.5504683 0,11.0010406 L0,7.50468262 C0,6.95525495 0.449064449,6.50572321 0.997920994,6.50572321 L4.49064449,6.50572321 C5.03950104,6.50572321 5.48856549,6.95525495 5.48856549,7.50468262 L5.48856549,11.0010406 C5.48856549,11.5504683 5.03950104,12 4.49064449,12 Z M4.5347973,11.0010406 L4.5347973,11.5005203 L4.5347973,11.0010406 Z M0.997920994,7.50468262 L0.997920994,11.0010406 L4.49064449,11.0010406 L4.49064449,7.50468262 L0.997920994,7.50468262 Z M11.002079,12 L7.50935551,12 C6.96049896,12 6.51143451,11.5504683 6.51143451,11.0010406 L6.51143451,7.50468262 C6.51143451,6.95525495 6.96049896,6.50572321 7.50935551,6.50572321 L11.002079,6.50572321 C11.5509356,6.50572321 12,6.95525495 12,7.50468262 L12,11.0010406 C12,11.5504683 11.5509356,12 11.002079,12 Z M11.0462318,11.0010406 L11.0462318,11.5005203 L11.0462318,11.0010406 Z M7.50935551,7.50468262 L7.50935551,11.0010406 L11.002079,11.0010406 L11.002079,7.50468262 L7.50935551,7.50468262 Z" id="形状"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.7 KiB |
@@ -41,14 +41,6 @@ import 'swiper/dist/css/swiper.css';
|
||||
Vue.use(VueAwesomeSwiper)
|
||||
import watermark from './utils/warterMark.js'
|
||||
import Bus from './utils/bus.js'
|
||||
import {showMessage} from './utils/index.js'
|
||||
|
||||
import MessageBoxService from './utils/simpleMessageBox.js'
|
||||
|
||||
|
||||
Vue.use(MessageBoxService)
|
||||
|
||||
Vue.prototype.$showMessage = showMessage
|
||||
|
||||
Vue.prototype.$bus = Bus
|
||||
|
||||
|
||||
@@ -86,7 +86,12 @@ router.beforeEach((to, from, next) => {
|
||||
//console.log(location.href,'location.href');
|
||||
//let urlPre=window.location.protocol+'//'+window.location.host;
|
||||
//let backUrl=location.href.substring(urlPre.length); encodeURIComponent()
|
||||
location.href=process.env.VUE_APP_LOGIN_URL+"?returnUrl="+encodeURIComponent(location.href);
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = process.env.VUE_APP_LOGIN_URL + "?returnUrl=" + encodeURIComponent(location.href);
|
||||
} else {
|
||||
window.location.href = process.env.VUE_APP_LOGIN_URL + "?returnUrl=" + encodeURIComponent(location.href);
|
||||
}
|
||||
// location.href=process.env.VUE_APP_LOGIN_URL+"?returnUrl="+encodeURIComponent(location.href);
|
||||
NProgress.done()
|
||||
|
||||
}
|
||||
|
||||
@@ -456,12 +456,3 @@ export function resOwnerListMap(source) {
|
||||
let name = resOwnerList.get('GC005001')
|
||||
return name;
|
||||
}
|
||||
|
||||
export function showMessage(message, status) {
|
||||
this.$message({
|
||||
message: message,
|
||||
type: status,
|
||||
duration: 5000,
|
||||
customClass: 'new-message'
|
||||
});
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
import Vue from 'vue'
|
||||
import MessageBox from '@/components/SimpleMessageBox/index.vue'
|
||||
|
||||
// 创建 MessageBox 构造器
|
||||
const MessageBoxConstructor = Vue.extend(MessageBox)
|
||||
|
||||
let messageBoxInstance = null
|
||||
|
||||
const MessageBoxService = {
|
||||
open(options = {}) {
|
||||
// 如果已有实例,先销毁
|
||||
if (messageBoxInstance) {
|
||||
messageBoxInstance.$destroy()
|
||||
const el = messageBoxInstance.$el
|
||||
if (el && el.parentNode) {
|
||||
el.parentNode.removeChild(el)
|
||||
}
|
||||
}
|
||||
|
||||
// 创建新实例
|
||||
messageBoxInstance = new MessageBoxConstructor({
|
||||
el: document.createElement('div'),
|
||||
data: options
|
||||
})
|
||||
|
||||
// 挂载到 body
|
||||
document.body.appendChild(messageBoxInstance.$el)
|
||||
|
||||
// 显示并返回 Promise
|
||||
return messageBoxInstance.open(options)
|
||||
},
|
||||
|
||||
cancel() {
|
||||
messageBoxInstance.cancel()
|
||||
},
|
||||
|
||||
confirm(options) {
|
||||
return this.open({
|
||||
...options
|
||||
})
|
||||
},
|
||||
}
|
||||
|
||||
// 添加到 Vue 原型
|
||||
MessageBoxService.install = function (Vue) {
|
||||
Vue.prototype.$messageBox = MessageBoxService
|
||||
}
|
||||
|
||||
// 导出
|
||||
export default MessageBoxService
|
||||
@@ -53,15 +53,30 @@ jsonRequest.interceptors.response.use(res => {
|
||||
} else {
|
||||
if (code == 6001) { //针对于老系统的处理
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = ReLoginUrl;
|
||||
}
|
||||
// location.href = ReLoginUrl;
|
||||
})
|
||||
} else if (code === 401) {
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = ReLoginUrl;
|
||||
}
|
||||
// location.href = ReLoginUrl;
|
||||
})
|
||||
} else if (code === 402) {
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = ReLoginUrl;
|
||||
}
|
||||
// location.href = ReLoginUrl;
|
||||
})
|
||||
} else if (code === 403) {
|
||||
var msg = '当前操作没有权限';
|
||||
@@ -69,7 +84,12 @@ jsonRequest.interceptors.response.use(res => {
|
||||
return Promise.reject(new Error(msg))
|
||||
//return res.data;
|
||||
} else if (code === 302) {
|
||||
location.href = ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = ReLoginUrl;
|
||||
}
|
||||
// location.href = ReLoginUrl;
|
||||
} else {
|
||||
//Message({message: res.data.message, type: 'error'});
|
||||
//console.log('err:' + res.data.error);
|
||||
@@ -127,22 +147,42 @@ formRequest.interceptors.response.use(res => {
|
||||
} else {
|
||||
if (code == 6001) { //针对于老系统的处理,因为老系统是字符串,所以这里不使用三等于号
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = ReLoginUrl;
|
||||
}
|
||||
// location.href = ReLoginUrl;
|
||||
})
|
||||
} else if (code === 401) {
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = ReLoginUrl;
|
||||
}
|
||||
// location.href = ReLoginUrl;
|
||||
})
|
||||
} else if (code === 402) {
|
||||
store.dispatch('LogOut').then(() => {
|
||||
location.href = ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = ReLoginUrl;
|
||||
}
|
||||
// location.href = ReLoginUrl;
|
||||
})
|
||||
} else if (code === 403) {
|
||||
var msg = '当前操作没有权限';
|
||||
Message({ message: msg, type: 'error' });
|
||||
return Promise.reject(new Error(msg))
|
||||
} else if (code === 302) {
|
||||
location.href = ReLoginUrl;
|
||||
if (top !== window) { // 判断当前是否在iframe内
|
||||
top.location.href = ReLoginUrl;
|
||||
} else {
|
||||
window.location.href = ReLoginUrl;
|
||||
}
|
||||
// location.href = ReLoginUrl;
|
||||
} else {
|
||||
//Message({message: res.data.message, type: 'error'});
|
||||
//console.log('err' + res.data.error);
|
||||
|
||||
@@ -163,11 +163,12 @@
|
||||
<!-- 精品课模块 -->
|
||||
<div class="xcontent2-main">
|
||||
<div class="modules-title xindex-main" v-if="this.qusisityList.list.length > 0">
|
||||
<!-- <span class="modules-text" style="color: #3D86F4;">精品课</span> -->
|
||||
<!-- <span class="jin-text">精品课</span> -->
|
||||
<div class="jin-zhe"></div>
|
||||
<span class="quyer-tag" style="margin-left: 0px;">
|
||||
<!-- <img src="../assets/images/tutoring1.pn" alt=""> -->
|
||||
<img class="modules-text" style="height: 28px;" src="../assets/images/course/courseTitle.png" alt="">
|
||||
</span>
|
||||
|
||||
<span class="more">
|
||||
<router-link to="/qualityCourse">查看更多>></router-link>
|
||||
</span>
|
||||
@@ -2826,6 +2827,15 @@ export default {
|
||||
display: flex;
|
||||
|
||||
.modules-title {
|
||||
position: relative;
|
||||
.jin-zhe{
|
||||
width: 410px;
|
||||
height: 30px;
|
||||
background: #f7f7f9;
|
||||
position: absolute;
|
||||
left: 86px;
|
||||
|
||||
}
|
||||
.modules-text {
|
||||
height: 28px;
|
||||
font-size: 20px;
|
||||
@@ -3136,4 +3146,13 @@ export default {
|
||||
border: 1px solid #d9edf7;
|
||||
//overflow: hidden;
|
||||
}
|
||||
.jin-text{
|
||||
font-family: "Source Han Sans CN", "SourceHanSansCN", sans-serif !important;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
color: #3E87F5;
|
||||
// line-height: 29px;/
|
||||
text-align: justify;
|
||||
font-style: normal;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Cookies from 'vue-cookies'
|
||||
import apiLogin from '@/api/login.js'
|
||||
import { getToken,setToken } from '@/utils/token'
|
||||
import Cookies from "vue-cookies";
|
||||
import apiLogin from "@/api/login.js";
|
||||
import { getToken, setToken } from "@/utils/token";
|
||||
export default {
|
||||
mounted() {
|
||||
this.toUrl = this.$route.query.returnUrl;
|
||||
@@ -19,11 +19,16 @@
|
||||
$this.curToken = getToken();
|
||||
if (!$this.curToken) {
|
||||
//console.log(token,'第二次未获取token');
|
||||
location.href = process.env.VUE_APP_LOGIN_URL;
|
||||
if (top !== window) {
|
||||
// 判断当前是否在iframe内
|
||||
top.location.href = process.env.VUE_APP_LOGIN_URL;
|
||||
} else {
|
||||
window.location.href = process.env.VUE_APP_LOGIN_URL;
|
||||
}
|
||||
// location.href = process.env.VUE_APP_LOGIN_URL;
|
||||
} else {
|
||||
$this.boeLogin();
|
||||
}
|
||||
|
||||
}, 500);
|
||||
} else {
|
||||
this.curToken = token;
|
||||
@@ -32,29 +37,29 @@
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
curToken:'',
|
||||
toUrl:''
|
||||
}
|
||||
curToken: "",
|
||||
toUrl: "",
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
boeLogin() {
|
||||
apiLogin.boeLogin(this.curToken).then(rs=>{
|
||||
apiLogin.boeLogin(this.curToken).then((rs) => {
|
||||
if (rs.status == 200) {
|
||||
//setToken(rs.result.access_token);
|
||||
localStorage.setItem(this.$xpage.constants.newLoginKey, 1);
|
||||
if (this.toUrl) {
|
||||
location.href = this.toUrl;
|
||||
} else {
|
||||
this.$router.push({ path: "/index" })
|
||||
this.$router.push({ path: "/index" });
|
||||
}
|
||||
//this.$router.push({ path: "/index" })
|
||||
} else {
|
||||
this.$message.error("登录失败:" + rs.message);
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
<template>
|
||||
<section class="app-main xuc-content">
|
||||
<div class="main-body">
|
||||
<CourseManage />
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CourseManage from './CourseManage.vue';
|
||||
|
||||
export default {
|
||||
name: 'RemoteCourseManage',
|
||||
components: { CourseManage },
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.app-main {
|
||||
// padding-top: 20px;
|
||||
}
|
||||
|
||||
.xuc-content {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.main-body {
|
||||
background-color: #fff;
|
||||
padding: 30px 20px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -134,7 +134,10 @@
|
||||
<div>
|
||||
<div style="line-height: 30px;">
|
||||
<div>请在当前面板选择需要上传的课件</div>
|
||||
<div style="">提示:课件大小超过1G时,无法上传,请先压缩视频,或剪切成多个再上传。如果上传zip文件必须是scorm标准打包文件</div>
|
||||
<div style="">提示:<br>
|
||||
1、课件大小超过1G时,无法上传,请先压缩视频,或剪切成多个再上传。<br>
|
||||
2、视频码率需在1.5Mb/s及以下,帧数需在30帧及以下。<br>
|
||||
3、如果上传zip文件必须是scorm标准打包文件。</div>
|
||||
</div>
|
||||
<div>
|
||||
<div style="display: flex;line-height: 30px;padding: 5px 0px;">
|
||||
|
||||
@@ -6,59 +6,32 @@
|
||||
3.建设课程邀请人流程,提交审核流程都需要讨论!!!!! <br/>
|
||||
4.有哪种几状态和哪几种操作,需要讨论定一下 。在哪种状态下可以有哪些操作<br/>
|
||||
</Remark> -->
|
||||
|
||||
<el-row style="margin: 0 20px 20px 15px;" :gutter="8">
|
||||
<el-col :span="8">
|
||||
<div class="grid-content bg-purple"><el-input :maxlength="50" v-model="params.name" clearable
|
||||
placeholder="课程名称" /></div>
|
||||
</el-col>
|
||||
<el-col :span="3">
|
||||
<div class="grid-content bg-purple">
|
||||
<el-select v-model="params.publish" placeholder="发布状态" clearable>
|
||||
<el-option label="未发布" :value="false"></el-option>
|
||||
<el-option label="已发布" :value="true"></el-option>
|
||||
<div style="display: flex;justify-content:space-between;position: relative;">
|
||||
<div style="display: flex;justify-content: flex-start; padding: 12px 32px 10px 12px;">
|
||||
<!-- <div style="padding-left: 10px;">
|
||||
<el-select style="width: 120px;" v-model="params.type" clearable placeholder="课程类型">
|
||||
<el-option label="全部" :value="null"></el-option>
|
||||
<el-option label="微课" :value="10"></el-option>
|
||||
<el-option label="在线课" :value="20"></el-option>
|
||||
</el-select>
|
||||
</div> -->
|
||||
<div style="padding-left: 10px;">
|
||||
<el-select style="width: 120px;" v-model="params.status" clearable placeholder="状态">
|
||||
<el-option label="全部" :value="null"></el-option>
|
||||
<el-option label="草稿" :value="1"></el-option>
|
||||
<el-option label="待审核" :value="2"></el-option>
|
||||
<el-option label="已审核" :value="5"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</el-col>
|
||||
<div style="margin-left:10px"><el-input v-model="params.keyword" placeholder="名称关键字" clearable></el-input></div>
|
||||
<div style="padding-left: 10px;"><el-button type="primary" icon="el-icon-search" @click="findList()">搜索</el-button></div>
|
||||
<div style="padding: 0px 5px;"><el-button icon="el-icon-refresh-right" type="primary" @click="reset">重置</el-button></div>
|
||||
|
||||
<el-col :span="3">
|
||||
<div class="grid-content bg-purple">
|
||||
<el-select v-model="params.enabled" placeholder="启停用状态" clearable>
|
||||
<el-option label="停用" :value="false"></el-option>
|
||||
<el-option label="启用" :value="true"></el-option>
|
||||
</el-select>
|
||||
<div class="Create-coures"><el-button type="primary" @click="addNewCourse()" icon="el-icon-plus">新建课程</el-button></div>
|
||||
</div>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="3">
|
||||
<div class="grid-content bg-purple">
|
||||
<el-select v-model="params.status" placeholder="审核状态" clearable>
|
||||
<el-option label="审核中" :value="2"></el-option>
|
||||
<el-option label="审核驳回" :value="3"></el-option>
|
||||
<el-option label="审核通过" :value="5"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<div class="grid-content bg-purple">
|
||||
<el-button type="primary" @click="findList">查 询</el-button>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<div class="grid-content bg-purple">
|
||||
<el-button @click="reset">重 置</el-button>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<div class="grid-content bg-purple" style="text-align: right;">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="addNewCourse">新建课程</el-button>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!--课程列表内容-->
|
||||
<div v-infinite-scroll="load" style="overflow:auto;height:1000px" infinite-scroll-distance="50"
|
||||
:infinite-scroll-immediate="false" :infinite-scroll-disabled="disabled">
|
||||
<div style="">
|
||||
<div class="uc-course" v-for="(item, idx) in couresList" :key="idx" @click="jumpRouter(item)">
|
||||
<div class="uc-course-img" style="width: 212px;height:119px">
|
||||
<course-image :course="item"></course-image>
|
||||
@@ -66,38 +39,34 @@
|
||||
</div>
|
||||
<div class="uc-course-info">
|
||||
<div class="uc-course-name">
|
||||
<el-tooltip class="item" effect="dark" :content="item.name" placement="top-start">
|
||||
<!-- <span class="uc-course-type1">{{courseType(item.type)}}</span> -->
|
||||
<span v-if="item.type == 10" class="uc-course-type1">录播</span>
|
||||
<span v-if="item.type == 20" class="uc-course-type1">录播</span>
|
||||
<span class="caogao" v-if="item.status == 1">【草稿】</span>
|
||||
<span class="daishenhe" v-if="item.status == 2">【待审核】</span>
|
||||
<span class="weitongguo" v-if="item.status == 3">【审核未通过】</span>
|
||||
<span class="yishenhe" v-if="item.status == 5">【已审核】</span>
|
||||
<!-- <a :href="`${webBaseUrl}/course/detail?id=${item.id}`" target="_blank"> {{item.name}}</a> -->
|
||||
<span style="font-size:18px;color:#333">{{ item.name }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div class="uc-course-item">
|
||||
<div class="summary-item">
|
||||
<div>{{ item.summary }}</div>
|
||||
</div>
|
||||
<div class="uc-course-text">
|
||||
上次修改时间:{{ item.sysUpdateTime }}
|
||||
<span type="text" style="margin-left:10px;font-size:14px;cursor: pointer;color:#666" @click.stop="toExamine(item)">查看审核记录</span>
|
||||
</div>
|
||||
<div class="uc-course-item">
|
||||
<div class="status-item">发布状态:{{ item.published ? '发布' : '未发布' }}</div>
|
||||
<div class="status-item">启停用状态:{{ item.enabled ? '启用' : '停用' }}</div>
|
||||
<div class="status-item">审核状态:<el-link :type="getStatusLabel(item.status).type" @click.stop=""
|
||||
:underline="false">{{getStatusLabel(item.status).label}}</el-link></div>
|
||||
</div>
|
||||
<div class="btn-container">
|
||||
<el-link class="btn-item" @mouseenter.native="$set(hoverStates, it.uniqueKey, true )"
|
||||
@mouseleave.native="$set(hoverStates, it.uniqueKey, false )"
|
||||
:style="{color: it.labelColor ? it.labelColor : (hoverStates[it.uniqueKey] ? '#4284F7' : '#000000')}"
|
||||
v-for="(it, idx) in availableActions(item)" :key="idx" :underline="false" type="primary"
|
||||
@click.stop="it.handler(item)"><svg-icon
|
||||
style="margin-right: 5px;font-size:19px;padding-top: 4px;color:#000000"
|
||||
:icon-class="hoverStates[it.uniqueKey] ? it.hoverIcon : it.icon"></svg-icon>{{it.label}}</el-link>
|
||||
<div class="uc-course-btns" style="line-height: 30px;">
|
||||
<el-link style="display:block" :underline="false" @click.stop="examine(item)" type="primary" v-if="item.status == 1" icon="el-icon-document-checked">提交审核</el-link>
|
||||
<el-link style="display:block" :underline="false" @click.stop="editCourse(item)" v-if="item.status == 3 || item.status == 4" type="primary" icon="el-icon-edit">编辑</el-link>
|
||||
<el-link style="display:block" :underline="false" @click.stop="editCourse(item)" v-if="item.status == 1" type="primary" icon="el-icon-edit">去开发</el-link>
|
||||
<el-link style="display:block" :underline="false" @click.stop="delItem(item)" v-if="item.status == 1" type="danger" icon="el-icon-delete">删除</el-link>
|
||||
<el-link style="display:block" :underline="false" @click.stop="withdraw(item)" v-if="item.status == 2" type="info" icon="el-icon-delete">撤回</el-link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p v-if="loading" class="page-tip">加载中...</p>
|
||||
<div v-if="couresList.length == 0 && !loading">
|
||||
<div v-if="isSearh" class="zan-wu">没有查询到相关内容</div>
|
||||
<div v-else class="zan-wu">暂无数据</div>
|
||||
</div>
|
||||
<p v-else-if="noMore" class="page-tip">没有更多了</p>
|
||||
</div>
|
||||
<!-- <div v-if="couresList.length > 0" style="text-align: center; margin-top:57px;">
|
||||
<div v-if="couresList.length > 0" style="text-align: center; margin-top:57px;">
|
||||
<el-pagination
|
||||
background
|
||||
@size-change="handleSizeChange"
|
||||
@@ -110,146 +79,48 @@
|
||||
></el-pagination>
|
||||
</div>
|
||||
<div v-else>
|
||||
|
||||
</div> -->
|
||||
<div v-if="couresList.length == 0">
|
||||
<div v-if="isSearh" class="zan-wu">没有查询到相关内容</div>
|
||||
<div v-else class="zan-wu">暂无数据</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div></div>
|
||||
<el-dialog title="二维码" :visible.sync="qrCodedialogVisible" width="900px" @close="closeCode" custom-class="g-dialog">
|
||||
<div>
|
||||
<el-form size="medium" label-width="100px">
|
||||
<el-form-item label="二维码">
|
||||
<div id="qrcode" ref="qrcode" class="qrcode-img" @mouseenter="showDownloadButton = true"
|
||||
@mouseleave="showDownloadButton = false">
|
||||
|
||||
<div v-show="showDownloadButton" @click="downloadQrcode" class="downloadn-container">
|
||||
<i class="el-icon-download" style="color: #409EFF;font-size:18px;margin-bottom:5px"></i>
|
||||
<span>下载</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="链接">
|
||||
<el-input v-model="copyUrl" readonly class="input-with-select" id="text">
|
||||
<el-button slot="append" @click="handleCopyUrl">复制</el-button>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">上述内容兼容PC端与移动端,您可按需分享。</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer"><el-button @click="closeCode">关 闭</el-button></span>
|
||||
</el-dialog>
|
||||
|
||||
<!-- TODO 修改展示字段 -->
|
||||
<el-dialog title="审核记录" :visible.sync="dialogVisible" width="900px" custom-class="g-dialog">
|
||||
<div>
|
||||
<el-table max-height="500" border :data="inviteTeacher" style="width: 100%;">
|
||||
<el-table-column prop="type" label="审核类型">
|
||||
<el-table-column prop="sysCreateBy" label="姓名" width="180"></el-table-column>
|
||||
<el-table-column prop="type" label="审核状态">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.auditState ? '通过' : '不通过' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="type" label="审核状态">
|
||||
<template slot-scope="scope">
|
||||
{{ auditEnum[scope.row.status] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="auditUser" label="审核人"></el-table-column>
|
||||
<el-table-column prop="auditTime" label="审核结果"></el-table-column>
|
||||
<el-table-column prop="auditTime" label="审核时间"></el-table-column>
|
||||
<el-table-column prop="auditRemark" label="审核意见"></el-table-column>
|
||||
<el-table-column prop="auditRemark" label="备注"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer"><el-button @click="dialogVisible = false">关 闭</el-button></span>
|
||||
<span slot="footer" class="dialog-footer"><el-button @click="dialogVisible = false">取 消</el-button></span>
|
||||
</el-dialog>
|
||||
<course-form ref="courseForm" @submitSuccess="getNewList"></course-form>
|
||||
<course-form ref="courseForm" @submitSuccess="getList"></course-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import QRCode from "qrcodejs2";
|
||||
import courseImage from "@/components/Course/courseImage.vue";
|
||||
import { mapGetters } from "vuex";
|
||||
import studyItem from "@/components/Course/studyItem.vue";
|
||||
import courseForm from "@/components/Course/courseForm.vue";
|
||||
import apiCourse from "@/api/modules/course.js";
|
||||
import { courseType } from "@/utils/tools.js";
|
||||
import apiAudit from "@/api/system/audit.js";
|
||||
import apiHRBP from "@/api/boe/HRBP.js";
|
||||
import apiOrg from "@/api/system/organiza.js";
|
||||
import apiUserBasic from "@/api/boe/userbasic.js";
|
||||
|
||||
// 状态权限映射
|
||||
const STATUS_PERMISSIONS = {
|
||||
// 未发布状态
|
||||
unpublished: {
|
||||
1: ["edit", "delete"], // 无审核状态
|
||||
2: ["auditRecord"], // 审核中'withdraw'
|
||||
3: ["edit", "delete", "auditRecord"], // 审核驳回
|
||||
},
|
||||
// 已发布状态
|
||||
published: {
|
||||
enabled: {
|
||||
1: ["edit", "manage", "auditRecord", "qrcode"], //'offShelfApply', 'viewCurrent'
|
||||
2: ["manage", "auditRecord", "qrcode"], // withdraw , 'viewCurrent'
|
||||
3: ["edit", "manage", "auditRecord", "qrcode"], //'offShelfApply', 'viewCurrent'
|
||||
5: ["edit", "manage", "auditRecord", "qrcode"], //'offShelfApply', 'viewCurrent'
|
||||
},
|
||||
disabled: {
|
||||
// 所有状态在停用时操作一致
|
||||
1: ["manage", "auditRecord"], //, 'viewCurrent'
|
||||
2: ["manage", "auditRecord"], //, 'viewCurrent'
|
||||
3: ["manage", "auditRecord"], //, 'viewCurrent'
|
||||
5: ["manage", "auditRecord"], //, 'viewCurrent'
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
// 操作配置映射表
|
||||
const ACTION_CONFIG = {
|
||||
edit: {
|
||||
label: "编辑",
|
||||
handler: "editCourse",
|
||||
icon: "edit",
|
||||
hoverIcon: "editHover",
|
||||
},
|
||||
manage: {
|
||||
label: "管理",
|
||||
handler: "handleManage",
|
||||
icon: "manage",
|
||||
hoverIcon: "manageHover",
|
||||
},
|
||||
// withdraw: { label: '撤回', handler: 'handleWithdraw' },
|
||||
auditRecord: {
|
||||
label: "审核记录",
|
||||
handler: "toExamine",
|
||||
icon: "check",
|
||||
hoverIcon: "checkHover",
|
||||
},
|
||||
qrcode: {
|
||||
label: "二维码",
|
||||
handler: "handleQrcode",
|
||||
icon: "ercode",
|
||||
hoverIcon: "ercodeHover",
|
||||
},
|
||||
// offShelfApply: { label: '下架申请', handler: 'handleOffShelfApply' },
|
||||
// viewCurrent: { label: '查看当前版本', handler: 'handleViewCurrent', icon: 'detail' },
|
||||
delete: {
|
||||
label: "删除",
|
||||
labelColor: "#FF1718",
|
||||
handler: "delItem",
|
||||
icon: "del",
|
||||
hoverIcon: "del",
|
||||
},
|
||||
};
|
||||
|
||||
import courseImage from '@/components/Course/courseImage.vue';
|
||||
import { mapGetters } from 'vuex';
|
||||
import studyItem from '@/components/Course/studyItem.vue';
|
||||
import courseForm from '@/components/Course/courseForm.vue';
|
||||
import apiCourse from '@/api/modules/course.js';
|
||||
import { courseType } from '@/utils/tools.js';
|
||||
import apiAudit from '@/api/system/audit.js';
|
||||
import apiHRBP from '@/api/boe/HRBP.js';
|
||||
import apiOrg from '@/api/system/organiza.js';
|
||||
import apiUserBasic from '@/api/boe/userbasic.js';
|
||||
export default {
|
||||
name: "ucStudyIndex",
|
||||
name: 'ucStudyIndex',
|
||||
components: { studyItem, courseForm, courseImage },
|
||||
computed: {
|
||||
...mapGetters(["userInfo"]),
|
||||
disabled() {
|
||||
return this.loading || this.noMore;
|
||||
},
|
||||
...mapGetters(['userInfo'])
|
||||
},
|
||||
|
||||
data() {
|
||||
@@ -259,40 +130,17 @@ export default {
|
||||
courseType: courseType,
|
||||
fileBaseUrl: process.env.VUE_APP_FILE_BASE_URL,
|
||||
count: 0,
|
||||
params: {
|
||||
name: "",
|
||||
publish: "",
|
||||
status: "",
|
||||
enabled: "",
|
||||
pageIndex: 0,
|
||||
pageSize: 10,
|
||||
},
|
||||
params: { keyword: '', type: '', status: '', createUser: '', pageIndex: 1, pageSize: 10, sysCreateAid: '' },
|
||||
couresList: [],
|
||||
flag: true,
|
||||
isSearh:false,
|
||||
qrCodedialogVisible: false,
|
||||
copyUrl: "",
|
||||
qrcodeImgUrl: "",
|
||||
showDownloadButton: false, // 是否显示下载按钮
|
||||
loading: false,
|
||||
noMore: false,
|
||||
auditEnum: {
|
||||
1: "未审核",
|
||||
2: "审核不通过",
|
||||
9: "审核通过",
|
||||
},
|
||||
hoverStates: {},
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
if (
|
||||
this.$route.query &&
|
||||
this.$route.query.open &&
|
||||
this.$route.query.open == "new"
|
||||
) {
|
||||
if(this.$route.query && this.$route.query.open && this.$route.query.open == 'new') {
|
||||
this.addNewCourse();
|
||||
}
|
||||
// this.getList();
|
||||
this.getList();
|
||||
},
|
||||
watch:{
|
||||
// '$route.query.open':function(val){
|
||||
@@ -302,182 +150,45 @@ export default {
|
||||
// }
|
||||
},
|
||||
methods: {
|
||||
handleM() {
|
||||
console.log("handleM");
|
||||
},
|
||||
load() {
|
||||
this.loading = true;
|
||||
this.params.pageIndex++;
|
||||
this.getList();
|
||||
},
|
||||
|
||||
getNewList() {
|
||||
this.couresList = [];
|
||||
this.params.pageIndex = 1;
|
||||
this.getList();
|
||||
},
|
||||
getStatusLabel(code) {
|
||||
if (code == "1") {
|
||||
return { type: "info", label: "-" };
|
||||
} else if (code == "2") {
|
||||
return { type: "warning", label: "审核中" };
|
||||
} else if (code == "3") {
|
||||
return { type: "danger", label: "审核驳回" };
|
||||
} else if (code == "5") {
|
||||
return { type: "success", label: "审核通过" };
|
||||
}
|
||||
},
|
||||
// 获取可用的操作配置
|
||||
availableActions(item) {
|
||||
const { status, published, enabled } = item;
|
||||
let actionKeys = [];
|
||||
|
||||
if (!published) {
|
||||
// 未发布状态
|
||||
actionKeys = STATUS_PERMISSIONS.unpublished[status] || [];
|
||||
} else {
|
||||
// 已发布状态
|
||||
const stateKey = enabled ? "enabled" : "disabled";
|
||||
actionKeys = STATUS_PERMISSIONS.published[stateKey][status] || [];
|
||||
}
|
||||
|
||||
return actionKeys
|
||||
.map((key, index) => ({
|
||||
name: key,
|
||||
label: ACTION_CONFIG[key].label,
|
||||
handler: this[ACTION_CONFIG[key].handler],
|
||||
icon: ACTION_CONFIG[key].icon,
|
||||
hoverIcon: ACTION_CONFIG[key].hoverIcon,
|
||||
labelColor: ACTION_CONFIG[key].labelColor,
|
||||
uniqueKey: `${item.id}-${key}-${index}`,
|
||||
}))
|
||||
.filter(Boolean);
|
||||
},
|
||||
handleManage(item) {
|
||||
sessionStorage.setItem("courseDetail", JSON.stringify(item));
|
||||
this.$router.push({ path: "/course/coursemanage" });
|
||||
},
|
||||
downloadQrcode() {
|
||||
let img = document
|
||||
.getElementById("qrcode")
|
||||
.getElementsByTagName("img")[0];
|
||||
let canvas = document.createElement("canvas");
|
||||
canvas.width = img.width;
|
||||
canvas.height = img.height;
|
||||
let ctx = canvas.getContext("2d");
|
||||
ctx.drawImage(img, 0, 0);
|
||||
let tempUrl = canvas.toDataURL("image/png");
|
||||
// 创建a标签下载
|
||||
|
||||
let link = document.createElement("a"); //创建a标签
|
||||
link.style.display = "none"; //使其隐藏
|
||||
link.download = tempUrl;
|
||||
link.setAttribute("target", "_blank");
|
||||
link.href = tempUrl; //赋予文件下载地址
|
||||
link.setAttribute("download", "二维码.jpg"); //设置下载属性 以及文件名
|
||||
document.body.appendChild(link); //a标签插至页面中
|
||||
link.click(); //强制触发a标签事件
|
||||
document.body.removeChild(link);
|
||||
},
|
||||
handleCopyUrl() {
|
||||
document.getElementById("text").select();
|
||||
document.execCommand("Copy");
|
||||
this.$showMessage('复制成功', 'success')
|
||||
|
||||
},
|
||||
|
||||
handleQrcode(row) {
|
||||
this.qrCodedialogVisible = true;
|
||||
let urlPre = window.location.protocol + "//" + window.location.host;
|
||||
|
||||
//动态的地址
|
||||
//urlPre=urlPre+'/m?returnUrl='+urlPre+'/mobile/pages/login/loading?returnUrl=';
|
||||
//固定的地址
|
||||
// let returnUrl=urlPre+'/mobile/pages/login/loading?returnUrl=/pages/study/courseStudy?id='+row.id;
|
||||
// let mobilePre=urlPre+'/m?returnUrl=';
|
||||
// this.qrcodeImgUrl = mobilePre+encodeURIComponent(returnUrl);
|
||||
// this.copyUrl=urlPre+this.webBaseUrl+'/course/studyindex?id='+row.id;
|
||||
// if(row.type==20){
|
||||
// this.copyUrl=urlPre+this.webBaseUrl+'/course/detail?id='+row.id;
|
||||
// }
|
||||
this.copyUrl = this.qrcodeImgUrl =
|
||||
process.env.VUE_APP_BOE_WEB_URL +
|
||||
"/systemapi/xboe/m/course/manage/redirectDetail?courseId=" +
|
||||
row.id;
|
||||
console.log("qrcodeImgUrl", this.qrcodeImgUrl);
|
||||
console.log("webBaseUrl", this.webBaseUrl);
|
||||
// 使用$nextTick确保数据渲染
|
||||
this.$nextTick(() => {
|
||||
this.crateQrcode();
|
||||
});
|
||||
},
|
||||
// 生成二维码
|
||||
crateQrcode() {
|
||||
let qrcode = new QRCode("qrcode", {
|
||||
width: 150,
|
||||
height: 150, // 高度
|
||||
text: this.qrcodeImgUrl, // 二维码内容
|
||||
// render: 'canvas' // 设置渲染方式(有两种方式 table和canvas,默认是canvas)
|
||||
// background: '#f0f'
|
||||
// foreground: '#ff0'
|
||||
});
|
||||
console.log("qrcode", qrcode);
|
||||
},
|
||||
// 关闭弹框,清除已经生成的二维码
|
||||
closeCode() {
|
||||
this.qrCodedialogVisible = false;
|
||||
|
||||
// 逐个节点移除防止事件一起移除
|
||||
let images = document.querySelectorAll(".qrcode-img img");
|
||||
images.forEach((img) => img.remove());
|
||||
|
||||
let canvas = document.querySelectorAll(".qrcode-img canvas");
|
||||
canvas.forEach((canvas) => canvas.remove());
|
||||
},
|
||||
// 撤回接口
|
||||
withdraw(item) {
|
||||
this.$confirm("此操作将撤回审核中的课程, 是否继续?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
this.$confirm('此操作将撤回审核中的课程, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
apiCourse.revokeSubmit(item.id).then((res) => {
|
||||
apiCourse.revokeSubmit(item.id).then(res => {
|
||||
if (res.status == 200) {
|
||||
if (res.result) {
|
||||
this.$message({
|
||||
type: "success",
|
||||
message: "撤回成功!",
|
||||
type: 'success',
|
||||
message: '撤回成功!'
|
||||
});
|
||||
this.getNewList();
|
||||
this.getList();
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: "info",
|
||||
message: "已取消撤回",
|
||||
type: 'info',
|
||||
message: '已取消撤回'
|
||||
});
|
||||
});
|
||||
},
|
||||
reset() {
|
||||
this.params.name = "";
|
||||
this.params.publish = "";
|
||||
this.params.status = "";
|
||||
this.params.enabled = "";
|
||||
this.params.keyword = '';
|
||||
this.params.status = '';
|
||||
this.params.type = '';
|
||||
this.params.pageIndex = 1;
|
||||
// this.getList();
|
||||
this.getList();
|
||||
this.isSearh = false;
|
||||
},
|
||||
toExamine(row) {
|
||||
// this.detailType = row.type;
|
||||
this.dialogVisible = true;
|
||||
apiCourse
|
||||
.auditCourseRecords({
|
||||
courseId: row.id,
|
||||
})
|
||||
.then((res) => {
|
||||
apiAudit.page(1, row.id).then(res => {
|
||||
if (res.status === 200) {
|
||||
this.inviteTeacher = res.result;
|
||||
} else {
|
||||
@@ -491,13 +202,13 @@ export default {
|
||||
return;
|
||||
}
|
||||
let $this=this;
|
||||
this.$confirm("您确定要直接提交审核所选课程吗?", "友情提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
this.$confirm('您确定要直接提交审核所选课程吗?', '友情提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(()=>{
|
||||
//新的提交流程
|
||||
apiUserBasic.getOrgHrbpInfo(row.orgId).then((rs) => {
|
||||
apiUserBasic.getOrgHrbpInfo(row.orgId).then(rs=>{
|
||||
if(rs.status==200 && rs.result){
|
||||
let req={
|
||||
courseId:row.id,
|
||||
@@ -508,49 +219,98 @@ export default {
|
||||
auditUser:rs.result.name,
|
||||
//ukid:hrbpUser.user_id,
|
||||
orgId:row.orgId,
|
||||
orgName: rs.result.orgNamePath + "/" + rs.result.name,
|
||||
};
|
||||
apiCourse.sumbits(req).then((res) => {
|
||||
orgName:rs.result.orgNamePath +'/'+rs.result.name
|
||||
}
|
||||
apiCourse.sumbits(req).then(res=>{
|
||||
if(res.status==200){
|
||||
$this.$message.success("提交成功");
|
||||
row.status = 2;
|
||||
$this.$message.success('提交成功');
|
||||
row.status=2
|
||||
}
|
||||
if(res.status==400){
|
||||
$this.$message.error("提交失败:" + res.message);
|
||||
$this.$message.error('提交失败:'+res.message);
|
||||
}
|
||||
});
|
||||
})
|
||||
}else{
|
||||
$this.$message.error("获取HRBP审核人员失败:"+rs.message);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// apiOrg.getSimple(row.orgId).then(rrs=>{
|
||||
// if(rrs.status==200){
|
||||
// apiHRBP.getHRBP(rrs.result.kid).then(rs=>{
|
||||
// if(rs.status==200 && rs.result.length>0){
|
||||
// let hrbpUser=rs.result[0];
|
||||
// let req={
|
||||
// courseId:row.id,
|
||||
// email:hrbpUser.email,
|
||||
// courseUser:row.sysCreateBy,
|
||||
// courseName:row.name,
|
||||
// ucode:hrbpUser.user_no,
|
||||
// auditUser:hrbpUser.real_name,
|
||||
// ukid:hrbpUser.user_id,
|
||||
// orgId:row.orgId,
|
||||
// orgName:rs.result.orgnization_name_path+'/'+rrs.result.name
|
||||
// }
|
||||
// apiCourse.sumbits(req).then(res=>{
|
||||
// if(res.status==200){
|
||||
// $this.$message.success('提交成功');
|
||||
// row.status=2
|
||||
// }
|
||||
// if(res.status==400){
|
||||
// $this.$message.error('提交失败:'+res.message);
|
||||
// }
|
||||
// })
|
||||
// }else{
|
||||
// $this.$message.error("获取HRBP审核人员失败:"+rs.message);
|
||||
// }
|
||||
// })
|
||||
// }else{
|
||||
// $this.$message.error("处理资源归属失败,请重新设置资源归属");
|
||||
// }
|
||||
// })
|
||||
})
|
||||
},
|
||||
async delItem(row) {
|
||||
this.$messageBox.confirm({
|
||||
title: "删除确认",
|
||||
message: `确认删除${row.name}吗?`,
|
||||
handleConfirm: async () => {
|
||||
delItem(row) {
|
||||
this.$confirm('您确定要删除所选课程吗?', '删除提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(async () => {
|
||||
let params = {
|
||||
id: row.id,
|
||||
title: row.name,
|
||||
title: row.name
|
||||
};
|
||||
try {
|
||||
// {id:课程id,多个使用逗号分隔,Boolean erasable 是否物理删除,title:课程的名称, remark 备注}
|
||||
const { status } = await apiCourse.del(params);
|
||||
if (status === 200) {
|
||||
this.$showMessage('删除成功', 'success')
|
||||
// this.$message.success("操作成功!");
|
||||
this.getNewList();
|
||||
} else {
|
||||
this.$showMessage('删除失败', 'error')
|
||||
this.$message.success('操作成功!');
|
||||
//事件移到后端处理
|
||||
// if(!row.erasable){
|
||||
// let event = {
|
||||
// key: "DeleteCourse",//被管理员删除
|
||||
// title: '自己删除课程',//事件的标题
|
||||
// parameters:"author:"+this.userInfo.aid,//自己删除自己的课程,作者就是当前人
|
||||
// content: '自己删除课程',//事件的内容
|
||||
// objId: row.id,//关联的id
|
||||
// objType: "1",//关联的类型
|
||||
// objInfo:row.name,
|
||||
// aid: this.userInfo.aid, //当前登录人的id
|
||||
// aname: this.userInfo.name,//当前人的姓名
|
||||
// status: 1 //状态,直接写1
|
||||
// }
|
||||
// this.$store.dispatch("userTrigger", event);
|
||||
// }
|
||||
|
||||
this.getList();
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
},
|
||||
handleCancel: () => {
|
||||
this.$showMessage('已取消删除', 'warning')
|
||||
},
|
||||
})
|
||||
.catch(err => {
|
||||
this.$message({ type: 'info', message: '已取消删除', offset: 50 });
|
||||
});
|
||||
},
|
||||
jumpRouter(item) {
|
||||
@@ -566,10 +326,7 @@ export default {
|
||||
// window.open(this.webBaseUrl+routeData.href, '_blank');
|
||||
// window.open(this.webBaseUrl + '/course/detail?id=' + item.id, '_blank');
|
||||
//this.$router.push({path:'/course/detail',query:{id:item.id}})
|
||||
this.$router.push({
|
||||
path: "/course/studyindex",
|
||||
query: { id: item.id },
|
||||
});
|
||||
this.$router.push({path:'/course/studyindex',query:{id:item.id}})
|
||||
// }
|
||||
} else {
|
||||
// if (item.type == 10) {
|
||||
@@ -577,55 +334,51 @@ export default {
|
||||
// this.$router.push({path:'/course/microPreview',query:{id:item.id}})
|
||||
// } else {
|
||||
// window.open(`${this.webBaseUrl}/course/rePreview?id=${item.id}`);
|
||||
this.$router.push({
|
||||
path: "/course/rePreview",
|
||||
query: { id: item.id },
|
||||
});
|
||||
this.$router.push({path:'/course/rePreview',query:{id:item.id}})
|
||||
// }
|
||||
}
|
||||
},
|
||||
findList() {
|
||||
this.params.pageIndex = 1;
|
||||
this.isSearh = true;
|
||||
this.getNewList();
|
||||
this.getList();
|
||||
},
|
||||
getList() {
|
||||
this.noMore = false;
|
||||
// this.params.teacherId = this.userInfo.aid;
|
||||
apiCourse.courseList(this.params).then((res) => {
|
||||
this.loading = false;
|
||||
this.params.aid = this.userInfo.aid;
|
||||
apiCourse.pageList(this.params).then(res => {
|
||||
if (res.status == 200) {
|
||||
this.couresList = [...this.couresList, ...res.result.list];
|
||||
|
||||
this.couresList = res.result.list;
|
||||
this.count = res.result.count;
|
||||
console.log(this.couresList.length, "this.count", this.count);
|
||||
if (this.couresList.length >= this.count) {
|
||||
this.noMore = true;
|
||||
}
|
||||
} else {
|
||||
this.$showMessage(res.message, 'error')
|
||||
this.$message.error(res.message);
|
||||
}
|
||||
});
|
||||
},
|
||||
handleSizeChange(val) {
|
||||
this.params.pageSize = val;
|
||||
// this.params.pageIndex = 1;
|
||||
|
||||
|
||||
this.getList();
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.params.pageIndex = val;
|
||||
this.getList();
|
||||
},
|
||||
addNewCourse() {
|
||||
this.$refs.courseForm.initShow();
|
||||
},
|
||||
editCourse(row) {
|
||||
console.log(row, "editCourse");
|
||||
this.$refs.courseForm.initShow(row);
|
||||
},
|
||||
lastTabChange(tab, event) {
|
||||
console.log(tab.name);
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.page-tip {
|
||||
margin: 20px auto;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
}
|
||||
.list-wu{
|
||||
text-align: center;
|
||||
margin: 40px;
|
||||
@@ -669,35 +422,6 @@ export default {
|
||||
margin-top: 10px;
|
||||
margin-right: 40px;
|
||||
}
|
||||
.qrcode-img {
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
display: block;
|
||||
position: relative;
|
||||
.downloadn-container {
|
||||
position: absolute;
|
||||
width: 40px;
|
||||
height: 45px;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
z-index: 99;
|
||||
background: white;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
transition: all 0.3s ease;
|
||||
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
|
||||
cursor: pointer;
|
||||
span {
|
||||
color: #409eff;
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
line-height: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.uc-course {
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
@@ -708,8 +432,7 @@ export default {
|
||||
::v-deep .uc-course-img {
|
||||
width: 212px;
|
||||
img {
|
||||
width: 212px;
|
||||
height: 119px;
|
||||
width: 212px;height:119px;
|
||||
border: 1px solid #f4f4f5;
|
||||
}
|
||||
}
|
||||
@@ -743,27 +466,13 @@ export default {
|
||||
word-break:break-all;
|
||||
// font-weight: 700;
|
||||
}
|
||||
.uc-course-item {
|
||||
.uc-course-text {
|
||||
color: #666;
|
||||
// margin-top: 4px;
|
||||
font-size: 14px;
|
||||
display: flex;
|
||||
// flex-wrap: nowrap;
|
||||
.status-item {
|
||||
margin-right: 20px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-container {
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
.btn-item {
|
||||
margin-right: 20px;
|
||||
}
|
||||
margin-top: 28px;
|
||||
}
|
||||
}
|
||||
.uc-course-btns {
|
||||
|
||||
text-align: right;
|
||||
.btn1 {
|
||||
height: 44px;
|
||||
|
||||
@@ -2,17 +2,15 @@
|
||||
<div>
|
||||
<!-- 最大化状态的弹窗 -->
|
||||
<el-dialog
|
||||
v-show=" windowState === 'maximized'"
|
||||
v-if="dialogVisible"
|
||||
v-if="dialogVisible && windowState === 'maximized'"
|
||||
:visible="true"
|
||||
:close-on-click-modal="false"
|
||||
:show-close="true"
|
||||
@close="onClose"
|
||||
class="case-expert-dialog"
|
||||
:modal="false"
|
||||
:append-to-body="true"
|
||||
:fullscreen="false"
|
||||
top="10vh"
|
||||
top="0"
|
||||
v-resizeable
|
||||
v-draggable
|
||||
>
|
||||
@@ -35,6 +33,7 @@
|
||||
class="welcome-message"
|
||||
ref="messageContainer"
|
||||
@scroll="handleScroll"
|
||||
@wheel="handleWheel"
|
||||
>
|
||||
<div class="message-text" v-for="(item, index) in messageList" :key="index">
|
||||
<messages :messageData="item" :suggestions="suggestions" @getMinWindow="minimizeWindow"></messages>
|
||||
@@ -193,7 +192,7 @@ export default {
|
||||
left: parseInt(dialogEl.style.left),
|
||||
top: parseInt(dialogEl.style.top)
|
||||
};
|
||||
sessionStorage.setItem('aiCallDialogPosition', JSON.stringify(currentPosition));
|
||||
// sessionStorage.setItem('aiCallDialogPosition', JSON.stringify(currentPosition));
|
||||
|
||||
// 移除全局事件监听
|
||||
document.removeEventListener('mousemove', handleMouseMove);
|
||||
@@ -498,6 +497,9 @@ export default {
|
||||
watch: {
|
||||
dialogVisible: {
|
||||
handler(newVal) {
|
||||
console.log('dialogVisible发生变化');
|
||||
console.log(newVal);
|
||||
console.log(this.windowState);
|
||||
if (newVal) {
|
||||
this.$nextTick(() => {
|
||||
// 获取对话框元素
|
||||
@@ -514,12 +516,12 @@ export default {
|
||||
}
|
||||
|
||||
// 检查是否有保存的位置状态
|
||||
const savedPosition = sessionStorage.getItem('aiCallDialogPosition');
|
||||
if (savedPosition) {
|
||||
const { left, top } = JSON.parse(savedPosition);
|
||||
dialogEl.style.left = left + 'px';
|
||||
dialogEl.style.top = top + 'px';
|
||||
}
|
||||
// const savedPosition = sessionStorage.getItem('aiCallDialogPosition');
|
||||
// if (savedPosition) {
|
||||
// const { left, top } = JSON.parse(savedPosition);
|
||||
// dialogEl.style.left = left + 'px';
|
||||
// dialogEl.style.top = top + 'px';
|
||||
// }
|
||||
}
|
||||
|
||||
let doc = document.querySelector('.welcome-message')
|
||||
@@ -566,7 +568,7 @@ closeMinimizedWindow() {
|
||||
console.log('关闭弹窗')
|
||||
// 清除保存的状态
|
||||
sessionStorage.removeItem('aiCallDialogSize');
|
||||
sessionStorage.removeItem('aiCallDialogPosition');
|
||||
// sessionStorage.removeItem('aiCallDialogPosition');
|
||||
this.$emit('close')
|
||||
// 可以在这里执行其他逻辑
|
||||
},
|
||||
@@ -595,6 +597,7 @@ closeMinimizedWindow() {
|
||||
|
||||
// 处理加载状态
|
||||
handleLoading(status) {
|
||||
console.log('handleLoading---'+status);
|
||||
this.isLoading = status;
|
||||
},
|
||||
|
||||
@@ -655,6 +658,31 @@ closeMinimizedWindow() {
|
||||
}
|
||||
},
|
||||
|
||||
// 处理鼠标滚轮事件
|
||||
handleWheel(event) {
|
||||
const element = this.$refs.messageContainer;
|
||||
if (!element) return;
|
||||
|
||||
// 阻止事件冒泡,防止滚动底层页面
|
||||
event.stopPropagation();
|
||||
|
||||
// 计算滚动方向和距离
|
||||
const delta = event.deltaY || event.detail || event.wheelDelta;
|
||||
|
||||
// 检查是否可以继续滚动
|
||||
if (delta < 0 && element.scrollTop === 0) {
|
||||
// 向上滚动且已在顶部,阻止默认行为
|
||||
event.preventDefault();
|
||||
} else if (delta > 0 && element.scrollHeight - element.scrollTop <= element.clientHeight) {
|
||||
// 向下滚动且已在底部,阻止默认行为
|
||||
event.preventDefault();
|
||||
} else {
|
||||
// 允许在容器内滚动
|
||||
element.scrollTop += delta;
|
||||
event.preventDefault();
|
||||
}
|
||||
},
|
||||
|
||||
// 最小化窗口的点击事件处理方法
|
||||
onMinimizedWindowClick() {
|
||||
// 当点击最小化窗口时,如果dialogVisible为false,则通过事件通知父组件显示对话框
|
||||
@@ -669,6 +697,9 @@ closeMinimizedWindow() {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
::v-deep .el-dialog__wrapper{
|
||||
position: unset!important;
|
||||
}
|
||||
.case-expert-dialog {
|
||||
::v-deep .el-dialog{
|
||||
background: url("./components/u762.svg") no-repeat ;
|
||||
@@ -677,6 +708,8 @@ closeMinimizedWindow() {
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
pointer-events: auto;
|
||||
z-index: 2000;
|
||||
|
||||
//background-color: rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
type="textarea"
|
||||
class="input-placeholder"
|
||||
placeholder="有问题,尽管问"
|
||||
@keyup.enter.native="handleSend"
|
||||
@keyup.enter.native.prevent="handleSend"
|
||||
:disabled="disabled"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
resize="none"
|
||||
@@ -56,7 +56,14 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSend() {
|
||||
handleSend(event) {
|
||||
// 阻止事件的默认行为和冒泡
|
||||
if (event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
console.log('preventDefault');
|
||||
}
|
||||
console.log('handleSend');
|
||||
if (!this.inputContent.trim() || this.disabled) return
|
||||
// 添加用户消息到列表
|
||||
const userMessage = {
|
||||
|
||||
@@ -39,14 +39,16 @@
|
||||
:class="{ courseTwoActive: twoList.id == twoId || twoList.checked }" @mouseleave.stop="leaveIndex"
|
||||
@mouseenter.stop="changeIndex(twoList.id)">
|
||||
<!-- 三级分类 -->
|
||||
<el-menu>
|
||||
<el-submenu :index="String(twoIndex)" v-if="twoList.children && twoList.children.length > 0">
|
||||
<template slot="title">
|
||||
<div class="course-two-content">
|
||||
<el-popover class="popover" popper-class='coursePopperClass' placement="right-start" width="536"
|
||||
:disabled="!twoList.children.length" :open-delay="0" :close-delay="0" trigger="hover"
|
||||
:visible-arrow="false" @hide="leaveIndex" @show="changeIndex(twoList.id)" transition="none">
|
||||
<div class="course-two-content" slot="reference">{{
|
||||
twoList.name }}</div>-
|
||||
<!-- 内容 -->
|
||||
<div class="course-three-box">
|
||||
<div class="course-three-box-title">
|
||||
{{ twoList.name }}
|
||||
</div>
|
||||
</template>
|
||||
<el-menu-item-group>
|
||||
<div style="padding: 0 40px;display: flex;flex-wrap: wrap;">
|
||||
<div :class="threeList.checked ? 'threeActive' : ''" v-for="threeList in twoList.children"
|
||||
:key="threeList.id" @click.stop="handleOptionClick(threeList, 3, twoList.children)"
|
||||
@@ -54,13 +56,8 @@
|
||||
<span>{{ threeList.name }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-menu-item-group>
|
||||
</el-submenu>
|
||||
<el-menu-item :index="String(twoIndex)" v-else>
|
||||
<div slot="title" class="course-two-content"> {{ twoList.name }}</div>
|
||||
</el-menu-item>
|
||||
</el-menu>
|
||||
<!-- </el-popover> -->
|
||||
</div>
|
||||
</el-popover>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -462,7 +459,6 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
menuActiveIndex: '-1', //无默认选中
|
||||
hotTagsList: [],
|
||||
newData: false,//线上品牌系列隐藏
|
||||
navTitle: [],
|
||||
@@ -1661,38 +1657,6 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
|
||||
.course-three-box-title{
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
height: 68px;
|
||||
line-height: 80px;
|
||||
background: linear-gradient(180deg, rgba(78,166,255,0.2) 0%,
|
||||
rgba(78,166,255,0) 100%);padding-left: 40px;
|
||||
}
|
||||
.course-three{
|
||||
border-radius: 6px;
|
||||
border: 1px solid #C7CBD2;display: inline-block;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
padding: 0 10px;
|
||||
margin-right: 20px;
|
||||
margin-bottom: 10px;
|
||||
cursor: pointer;
|
||||
color: rgb(48, 49, 51);
|
||||
|
||||
&:hover{
|
||||
color: #387DF7;
|
||||
border: 1px solid #387DF7 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.threeActive{
|
||||
color: #387DF7;
|
||||
border: 1px solid #387DF7 !important;
|
||||
}
|
||||
|
||||
.couser-list-content {
|
||||
min-height: 110%;
|
||||
}
|
||||
@@ -1753,29 +1717,10 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 三级列表
|
||||
.course-list {
|
||||
background-color: #fff;
|
||||
|
||||
::v-deep .el-submenu__title, .el-menu-item {
|
||||
height: 38px;
|
||||
padding: 0 5px!important;
|
||||
}
|
||||
|
||||
|
||||
::v-deep .el-menu-item.is-active {
|
||||
background-color: inherit;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
::v-deep .el-submenu__title {
|
||||
background-color: inherit;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
|
||||
.course-one {
|
||||
position: relative;
|
||||
|
||||
@@ -1789,7 +1734,7 @@ export default {
|
||||
|
||||
// 二级的高亮
|
||||
.courseTwoActive {
|
||||
color: #387DF7 !important;
|
||||
color: #387DF7;
|
||||
border-image: linear-gradient(90deg, rgba(47, 101, 236, 1), rgba(228, 236, 255, 1)) 1 1 !important;
|
||||
}
|
||||
|
||||
@@ -2645,7 +2590,7 @@ a.custom2 {
|
||||
}
|
||||
|
||||
.course-tags {
|
||||
margin: 5px 0;
|
||||
margin: 10px 0 0;
|
||||
min-height: 20px;
|
||||
}
|
||||
|
||||
|
||||
@@ -2477,6 +2477,10 @@ export default {
|
||||
background-color: #f4f4f5;
|
||||
border-color: #e9e9eb;
|
||||
}
|
||||
.course-tags {
|
||||
margin: 10px 0 0;
|
||||
min-height: 20px;
|
||||
}
|
||||
.course-tags ::v-deep .el-tag .keyword-highlight,
|
||||
.course-tags ::v-deep .el-tag .exact-match-highlight {
|
||||
color: #387DF7 !important;
|
||||
|
||||