diff --git a/.env.development b/.env.development index de583d0940..d2124efd92 100644 --- a/.env.development +++ b/.env.development @@ -2,4 +2,5 @@ ENV = 'development' # base api -VUE_APP_BASE_API = '/dev-api' +# VUE_APP_BASE_API = '/dev-api' +VUE_APP_BASE_API = 'HTTP://LOCALHOST:8333' diff --git a/.gitignore b/.gitignore index 9ad28d23dd..0a730a8258 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ tests/**/coverage/ *.ntvs* *.njsproj *.sln +.history/* diff --git a/package.json b/package.json index 24138249e2..c3b69b7fa6 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "dependencies": { "axios": "0.18.1", "core-js": "3.6.5", + "echarts": "^4.1.0", "element-ui": "2.13.2", "js-cookie": "2.2.0", "normalize.css": "7.0.0", diff --git a/src/api/activity/couponInfo.js b/src/api/activity/couponInfo.js new file mode 100644 index 0000000000..4dc601af26 --- /dev/null +++ b/src/api/activity/couponInfo.js @@ -0,0 +1,56 @@ +import request from '@/utils/request' + +const api_name = '/admin/activity/couponInfo' + +export default { + + getPageList(page, limit) { + return request({ + url: `${api_name}/${page}/${limit}`, + method: 'get' + }) + }, + getById(id) { + return request({ + url: `${api_name}/get/${id}`, + method: 'get' + }) + }, + + save(role) { + return request({ + url: `${api_name}/save`, + method: 'post', + data: role + }) + }, + + updateById(role) { + return request({ + url: `${api_name}/update`, + method: 'put', + data: role + }) + }, + removeById(id) { + return request({ + url: `${api_name}/remove/${id}`, + method: 'delete' + }) + }, + removeRows(idList) { + return request({ + url: `${api_name}/batchRemove`, + method: 'delete', + data: idList + }) + }, + + getPageCouponUseList(page, limit, searchObj) { + return request({ + url: `${api_name}/couponUse/${page}/${limit}`, + method: 'get', + params: searchObj + }) + } +} diff --git a/src/api/order/orderinfo.js b/src/api/order/orderinfo.js new file mode 100644 index 0000000000..765ff46fd1 --- /dev/null +++ b/src/api/order/orderinfo.js @@ -0,0 +1,14 @@ +import request from '@/utils/request' + +const api_name = '/admin/order/orderInfo' + +export default { + + getPageList(page, limit, searchObj) { + return request({ + url: `${api_name}/${page}/${limit}`, + method: 'get', + params: searchObj + }) + } +} diff --git a/src/api/user.js b/src/api/user.js index 8ff4389dba..218db72d5d 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -2,7 +2,7 @@ import request from '@/utils/request' export function login(data) { return request({ - url: '/vue-admin-template/user/login', + url: '/admin/vod/user/login', method: 'post', data }) @@ -10,7 +10,7 @@ export function login(data) { export function getInfo(token) { return request({ - url: '/vue-admin-template/user/info', + url: '/admin/vod/user/info', method: 'get', params: { token } }) diff --git a/src/api/vod/chapter.js b/src/api/vod/chapter.js new file mode 100644 index 0000000000..6771d277db --- /dev/null +++ b/src/api/vod/chapter.js @@ -0,0 +1,43 @@ +import request from '@/utils/request' + +const api_name = '/admin/vod/chapter' + +export default { + + getNestedTreeList(courseId) { + return request({ + url: `${api_name}/getNestedTreeList/${courseId}`, + method: 'get' + }) + }, + + removeById(id) { + return request({ + url: `${api_name}/remove/${id}`, + method: 'delete' + }) + }, + + save(chapter) { + return request({ + url: `${api_name}/save`, + method: 'post', + data: chapter + }) + }, + + getById(id) { + return request({ + url: `${api_name}/get/${id}`, + method: 'get' + }) + }, + + updateById(chapter) { + return request({ + url: `${api_name}/update`, + method: 'post', + data: chapter + }) + } +} diff --git a/src/api/vod/course.js b/src/api/vod/course.js new file mode 100644 index 0000000000..ede052b350 --- /dev/null +++ b/src/api/vod/course.js @@ -0,0 +1,63 @@ +import request from '@/utils/request' + +const api_name = '/admin/vod/course' + +export default { + //课程列表 + getPageList(page, limit, searchObj) { + return request({ + url: `${api_name}/${page}/${limit}`, + method: 'get', + params: searchObj + }) + }, + + //添加课程基本信息 + saveCourseInfo(courseInfo) { + return request({ + url: `${api_name}/save`, + method: 'post', + data: courseInfo + }) + }, + + //id获取课程信息 + getCourseInfoById(id) { + return request({ + url: `${api_name}/get/${id}`, + method: 'get' + }) + }, + //修改课程信息 + updateCourseInfoById(courseInfo) { + return request({ + url: `${api_name}/update`, + method: 'post', + data: courseInfo + }) + }, + + //获取发布课程信息 + getCoursePublishById(id) { + return request({ + url: `${api_name}/getCoursePublishVo/${id}`, + method: 'get' + }) + }, + //发布课程 + publishCourseById(id) { + return request({ + url: `${api_name}/publishCourseById/${id}`, + method: 'put' + }) + }, + + //删除课程 + removeById(id) { + return request({ + url: `${api_name}/remove/${id}`, + method: 'delete' + }) + }, + +} diff --git a/src/api/vod/subject.js b/src/api/vod/subject.js new file mode 100644 index 0000000000..4a3f348bce --- /dev/null +++ b/src/api/vod/subject.js @@ -0,0 +1,13 @@ +import request from '@/utils/request' + +const api_name = '/admin/vod/subject' + +export default { + // 课程分类列表接口 + getChildList(id) { + return request({ + url: `${api_name}/getChildSubject/${id}`, + method: 'get' + }) + } +} diff --git a/src/api/vod/teacher.js b/src/api/vod/teacher.js new file mode 100644 index 0000000000..a4f5d4c693 --- /dev/null +++ b/src/api/vod/teacher.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +const api_name = '/admin/vod/teacher' + +export default { + //讲师列表 + pageList(page, limit, searchObj) { + return request({ + url: `${api_name}/findQueryPage/${page}/${limit}`, + method: `post`, + data: searchObj + }) + }, + //讲师删除 + removeById(id) { + return request({ + url: `${api_name}/remove/${id}`, + method: `delete` + }) + }, + //讲师添加 + saveTeacher(teacher) { + return request({ + url: `${api_name}/saveTeacher`, + method: `post`, + data:teacher + }) + }, + //根据id得到数据 + getById(id) { + return request({ + url: `${api_name}/getTeacher/${id}`, + method: `get` + }) + }, + //更新数据 + updateTeacher(teacher) { + return request({ + url: `${api_name}/updateTeacher`, + method: `post`, + data: teacher + }) + }, + //批量删除 + batchRemove(idList) { + return request({ + url: `${api_name}/removeBatch`, + method: `delete`, + data: idList + }) + }, + + //查询所有讲师 + list(){ + return request({ + url: `${api_name}/findAll`, + method: `get` + }) + } +} diff --git a/src/api/vod/video.js b/src/api/vod/video.js new file mode 100644 index 0000000000..094df3e011 --- /dev/null +++ b/src/api/vod/video.js @@ -0,0 +1,36 @@ +import request from '@/utils/request' + +const api_name = '/admin/vod/video' + +export default { + + save(video) { + return request({ + url: `${api_name}/save`, + method: 'post', + data: video + }) + }, + + getById(id) { + return request({ + url: `${api_name}/get/${id}`, + method: 'get' + }) + }, + + updateById(video) { + return request({ + url: `${api_name}/update`, + method: 'put', + data: video + }) + }, + + removeById(id) { + return request({ + url: `${api_name}/remove/${id}`, + method: 'delete' + }) + } +} diff --git a/src/api/vod/videoVisitor.js b/src/api/vod/videoVisitor.js new file mode 100644 index 0000000000..180835975c --- /dev/null +++ b/src/api/vod/videoVisitor.js @@ -0,0 +1,13 @@ +import request from '@/utils/request' + +const api_name = '/admin/vod/videoVisitor' + +export default { + + findCount(courseId, startDate, endDate) { + return request({ + url: `${api_name}/findCount/${courseId}/${startDate}/${endDate}`, + method: 'get' + }) + } +} diff --git a/src/api/vod/vod.js b/src/api/vod/vod.js new file mode 100644 index 0000000000..b429b85e20 --- /dev/null +++ b/src/api/vod/vod.js @@ -0,0 +1,11 @@ +import request from '@/utils/request' + +export default { + //删除视频 + removeByVodId(id) { + return request({ + url: `/admin/vod/remove/${id}`, + method: 'delete' + }) + } +} diff --git a/src/api/wechat/menu.js b/src/api/wechat/menu.js new file mode 100644 index 0000000000..7ec2eee251 --- /dev/null +++ b/src/api/wechat/menu.js @@ -0,0 +1,64 @@ +import request from '@/utils/request' + +const api_name = '/admin/wechat/menu' + +export default { + + findMenuInfo() { + return request({ + url: `${api_name}/findMenuInfo`, + method: `get` + }) + }, + + findOneMenuInfo() { + return request({ + url: `${api_name}/findOneMenuInfo`, + method: `get` + }) + }, + + save(menu) { + return request({ + url: `${api_name}/save`, + method: `post`, + data: menu + }) + }, + + getById(id) { + return request({ + url: `${api_name}/get/${id}`, + method: `get` + }) + }, + + updateById(menu) { + return request({ + url: `${api_name}/update`, + method: `put`, + data: menu + }) + }, + + syncMenu() { + return request({ + url: `${api_name}/syncMenu`, + method: `get` + }) + }, + + removeById(id) { + return request({ + url: `${api_name}/remove/${id}`, + method: 'delete' + }) + }, + + removeMenu() { + return request({ + url: `${api_name}/removeMenu`, + method: `delete` + }) + } +} diff --git a/src/router/index.js b/src/router/index.js index 13459e90e2..c8dca90c7c 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -55,6 +55,84 @@ export const constantRoutes = [ }] }, + { + path: '/vod', + component: Layout, + redirect: '/vod/teacher/list', + name: 'vod', + meta: { title: '讲师管理', icon: 'el-icon-s-help' }, + children: [ + { + path: 'teacher/list', + name: 'TeacherList', + component: () => import('@/views/vod/teacher/list'), + meta: { title: '讲师列表', icon: 'table' } + }, + { + path: 'teacher/create', + name: 'TeacherCreate', + component: () => import('@/views/vod/teacher/form'), + meta: { title: '添加讲师', icon: 'tree' } + }, + { + path: 'teacher/edit/:id', + name: 'TeacherEdit', + component: () => import('@/views/vod/teacher/form'), + meta: { title: '编辑讲师' }, + hidden: true + } + ] + }, + + // 课程管理 + { + path: '/vodcourse', + component: Layout, + redirect: '/vodcourse/course/list', + name: 'Vodcourse', + meta: { + title: '点播管理', + icon: 'el-icon-bank-card' + }, + alwaysShow: true, + children: [ + { + path: 'course/list', + name: 'CourseList', + component: () => import('@/views/vod/course/list'), + meta: { title: '课程列表', icon: 'table'} + }, + { + path: 'course/info', + name: 'CourseInfo', + component: () => import('@/views/vod/course/form'), + meta: { title: '发布课程' }, + hidden: true + }, + { + path: 'course/info/:id', + name: 'CourseInfoEdit', + component: () => import('@/views/vod/course/form'), + meta: { title: '编辑课程' }, + hidden: true + }, + { + path: 'course/chapter/:id', + name: 'CourseChapterEdit', + component: () => import('@/views/vod/course/form'), + meta: { title: '编辑大纲' }, + hidden: true + }, + { + path: 'course/chart/:id', + name: 'CourseChart', + component: () => import('@/views/vod/course/chart'), + meta: { title: '课程统计' }, + hidden: true + } + ] + }, + { path: '/example', component: Layout, @@ -77,6 +155,98 @@ export const constantRoutes = [ ] }, + { + path: '/order', + component: Layout, + redirect: '/order/orderInfo/list', + name: 'Order', + meta: { title: '订单管理', icon: 'el-icon-truck' }, + alwaysShow: true, + children: [ + { + path: 'orderInfo/list', + name: 'OrderInfo', + component: () => import('@/views/order/list'), + meta: { title: '订单列表' } + } + ] + }, + + { + path: '/activity', + component: Layout, + redirect: '/couponInfo/list', + name: 'Activity', + meta: { title: '营销活动管理', icon: 'el-icon-football' }, + alwaysShow: true, + children: [ + { + path: 'couponInfo/list', + name: 'CouponInfo', + component: () => import('@/views/activity/couponInfo/list'), + meta: { title: '优惠券列表' } + }, + { + path: 'couponInfo/add', + name: 'CouponInfoAdd', + component: () => import('@/views/activity/couponInfo/form'), + meta: { title: '添加' }, + hidden: true + }, + { + path: 'couponInfo/edit/:id', + name: 'CouponInfoEdit', + component: () => import('@/views/activity/couponInfo/form'), + meta: { title: '编辑', noCache: true }, + hidden: true + }, + { + path: 'couponInfo/show/:id', + name: 'CouponInfoShow', + component: () => import('@/views/activity/couponInfo/show'), + meta: { title: '详情', noCache: true }, + hidden: true + } + ] + }, + + { + path: '/wechat', + component: Layout, + redirect: '/wechat/menu/list', + name: 'Wechat', + meta: { + title: '公众号菜单管理', + icon: 'el-icon-refrigerator' + }, + alwaysShow: true, + children: [ + { + path: 'menu/list', + name: 'Menu', + component: () => import('@/views/wechat/menu/list'), + meta: { title: '菜单列表' } + } + ] + }, + + { + path: '/subject', + component: Layout, + redirect: '/subject/list', + name: '课程分类管理', + alwaysShow: true, + meta: { title: '课程分类管理', icon: 'example' }, + children: [ + { + path: 'list', + name: '课程分类列表', + component: () => import('@/views/vod/subject/list'), + meta: { title: '课程分类列表', icon: 'table' } + } + ] + }, + { path: '/form', component: Layout, diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 2f6423fa9c..550dc84488 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -67,14 +67,14 @@ const actions = { // user logout logout({ commit, state }) { return new Promise((resolve, reject) => { - logout(state.token).then(() => { + //logout(state.token).then(() => { removeToken() // must remove token first resetRouter() commit('RESET_STATE') resolve() - }).catch(error => { - reject(error) - }) + //}).catch(error => { + //reject(error) + //}) }) }, diff --git a/src/views/activity/couponInfo/form.vue b/src/views/activity/couponInfo/form.vue new file mode 100644 index 0000000000..6accc6bbef --- /dev/null +++ b/src/views/activity/couponInfo/form.vue @@ -0,0 +1,162 @@ + + + diff --git a/src/views/activity/couponInfo/list.vue b/src/views/activity/couponInfo/list.vue new file mode 100644 index 0000000000..082b658a65 --- /dev/null +++ b/src/views/activity/couponInfo/list.vue @@ -0,0 +1,164 @@ + + + diff --git a/src/views/activity/couponInfo/show.vue b/src/views/activity/couponInfo/show.vue new file mode 100644 index 0000000000..b4ee78fab0 --- /dev/null +++ b/src/views/activity/couponInfo/show.vue @@ -0,0 +1,173 @@ + + + + diff --git a/src/views/order/list.vue b/src/views/order/list.vue new file mode 100644 index 0000000000..6a966086f8 --- /dev/null +++ b/src/views/order/list.vue @@ -0,0 +1,143 @@ + + diff --git a/src/views/vod/course/chart.vue b/src/views/vod/course/chart.vue new file mode 100644 index 0000000000..5487e0229a --- /dev/null +++ b/src/views/vod/course/chart.vue @@ -0,0 +1,99 @@ + + diff --git a/src/views/vod/course/components/Chapter/Form.vue b/src/views/vod/course/components/Chapter/Form.vue new file mode 100644 index 0000000000..6e01129e16 --- /dev/null +++ b/src/views/vod/course/components/Chapter/Form.vue @@ -0,0 +1,83 @@ + + + diff --git a/src/views/vod/course/components/Chapter/index.vue b/src/views/vod/course/components/Chapter/index.vue new file mode 100644 index 0000000000..af56089b6d --- /dev/null +++ b/src/views/vod/course/components/Chapter/index.vue @@ -0,0 +1,177 @@ + + + diff --git a/src/views/vod/course/components/Info.vue b/src/views/vod/course/components/Info.vue new file mode 100644 index 0000000000..e0f34fa0cd --- /dev/null +++ b/src/views/vod/course/components/Info.vue @@ -0,0 +1,234 @@ + + + diff --git a/src/views/vod/course/components/Publish.vue b/src/views/vod/course/components/Publish.vue new file mode 100644 index 0000000000..c2b0fefbd8 --- /dev/null +++ b/src/views/vod/course/components/Publish.vue @@ -0,0 +1,108 @@ + + + + diff --git a/src/views/vod/course/components/Video/Form.vue b/src/views/vod/course/components/Video/Form.vue new file mode 100644 index 0000000000..73436dd1a4 --- /dev/null +++ b/src/views/vod/course/components/Video/Form.vue @@ -0,0 +1,152 @@ + + diff --git a/src/views/vod/course/form.vue b/src/views/vod/course/form.vue new file mode 100644 index 0000000000..9636de1758 --- /dev/null +++ b/src/views/vod/course/form.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/views/vod/course/list.vue b/src/views/vod/course/list.vue new file mode 100644 index 0000000000..765e3676d3 --- /dev/null +++ b/src/views/vod/course/list.vue @@ -0,0 +1,249 @@ + + + diff --git a/src/views/vod/subject/list.vue b/src/views/vod/subject/list.vue new file mode 100644 index 0000000000..c283dc7d76 --- /dev/null +++ b/src/views/vod/subject/list.vue @@ -0,0 +1,95 @@ + + + diff --git a/src/views/vod/teacher/form.vue b/src/views/vod/teacher/form.vue new file mode 100644 index 0000000000..713c8f0883 --- /dev/null +++ b/src/views/vod/teacher/form.vue @@ -0,0 +1,147 @@ + + + diff --git a/src/views/vod/teacher/list.vue b/src/views/vod/teacher/list.vue new file mode 100644 index 0000000000..ef544a942d --- /dev/null +++ b/src/views/vod/teacher/list.vue @@ -0,0 +1,192 @@ + + diff --git a/src/views/wechat/menu/list.vue b/src/views/wechat/menu/list.vue new file mode 100644 index 0000000000..072885086d --- /dev/null +++ b/src/views/wechat/menu/list.vue @@ -0,0 +1,289 @@ + + diff --git a/vue.config.js b/vue.config.js index 4856ed02a7..24fb6d5463 100644 --- a/vue.config.js +++ b/vue.config.js @@ -27,7 +27,7 @@ module.exports = { publicPath: '/', outputDir: 'dist', assetsDir: 'static', - lintOnSave: process.env.NODE_ENV === 'development', + lintOnSave: false, //process.env.NODE_ENV === 'development', productionSourceMap: false, devServer: { port: port,