sync
This commit is contained in:
1
source/vue/xzs-admin/.gitignore
vendored
1
source/vue/xzs-admin/.gitignore
vendored
@@ -20,4 +20,3 @@ yarn-error.log*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
/package-lock.json
|
||||
|
||||
1530
source/vue/xzs-admin/package-lock.json
generated
1530
source/vue/xzs-admin/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -16,7 +16,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^0.19.0",
|
||||
"core-js": "^3.7.0",
|
||||
"core-js": "^3.8.2",
|
||||
"element-ui": "^2.14.1",
|
||||
"js-cookie": "2.2.0",
|
||||
"normalize.css": "8.0.1",
|
||||
@@ -24,14 +24,14 @@
|
||||
"vue": "^2.6.10",
|
||||
"vue-count-to": "^1.0.13",
|
||||
"vue-router": "^3.4.9",
|
||||
"vuex": "^3.5.1"
|
||||
"vuex": "^3.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "^4.5.9",
|
||||
"@vue/cli-plugin-eslint": "^4.5.9",
|
||||
"@vue/cli-plugin-router": "^4.5.9",
|
||||
"@vue/cli-plugin-vuex": "^4.5.9",
|
||||
"@vue/cli-service": "^4.5.9",
|
||||
"@vue/cli-plugin-babel": "^4.5.10",
|
||||
"@vue/cli-plugin-eslint": "^4.5.10",
|
||||
"@vue/cli-plugin-router": "^4.5.10",
|
||||
"@vue/cli-plugin-vuex": "^4.5.10",
|
||||
"@vue/cli-service": "^4.5.10",
|
||||
"@vue/eslint-config-standard": "^4.0.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"eslint": "^5.16.0",
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -8,7 +8,7 @@
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title>TEKsystems Admin</title>
|
||||
<title>学之思管理系统</title>
|
||||
<style>
|
||||
html {
|
||||
height: 100%;
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
import { post } from '@/utils/request'
|
||||
|
||||
export default {
|
||||
list: query => post('/api/admin/industry/list'),
|
||||
pageList: query => post('/api/admin/industry/page', query),
|
||||
edit: query => post('/api/admin/industry/edit', query),
|
||||
select: id => post('/api/admin/industry/select/' + id),
|
||||
deleteSubject: id => post('/api/admin/industry/delete/' + id)
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
import { post } from '@/utils/request'
|
||||
|
||||
export default {
|
||||
list: query => post('/api/admin/skill/list'),
|
||||
pageList: query => post('/api/admin/skill/page', query),
|
||||
edit: query => post('/api/admin/skill/edit', query),
|
||||
select: id => post('/api/admin/skill/select/' + id),
|
||||
deleteSubject: id => post('/api/admin/skill/delete/' + id)
|
||||
list: query => post('/api/admin/education/subject/list'),
|
||||
pageList: query => post('/api/admin/education/subject/page', query),
|
||||
edit: query => post('/api/admin/education/subject/edit', query),
|
||||
select: id => post('/api/admin/education/subject/select/' + id),
|
||||
deleteSubject: id => post('/api/admin/education/subject/delete/' + id)
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ export default {
|
||||
const first = matched[0]
|
||||
|
||||
if (!this.isDashboard(first)) {
|
||||
matched = [{ path: '/dashboard', meta: { title: 'Home' } }].concat(matched)
|
||||
matched = [{ path: '/dashboard', meta: { title: '主页' } }].concat(matched)
|
||||
}
|
||||
this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
|
||||
},
|
||||
|
||||
@@ -12,12 +12,12 @@
|
||||
</div>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<router-link to="/profile/index">
|
||||
<el-dropdown-item>Personal information</el-dropdown-item>
|
||||
<el-dropdown-item>个人信息</el-dropdown-item>
|
||||
</router-link>
|
||||
<router-link to="/">
|
||||
<el-dropdown-item>Home</el-dropdown-item>
|
||||
<el-dropdown-item>主页</el-dropdown-item>
|
||||
</router-link>
|
||||
<el-dropdown-item @click.native="logout" divided>Log out</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="logout" divided>退出</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
|
||||
@@ -24,7 +24,7 @@ export default {
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
title: 'TEKsystems Admin'
|
||||
title: '学之思管理系统'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
</div>
|
||||
<app-main />
|
||||
<div class="foot-copyright">
|
||||
<span>Copyright © 2020 TekSystems</span>
|
||||
<span>Copyright © 2020 武汉思维跳跃科技有限公司 版权所有</span>
|
||||
</div>
|
||||
<back-to-top :visibility-height="100" :back-position="0" transition-name="fade" ref="backTop"/>
|
||||
</div>
|
||||
|
||||
@@ -10,11 +10,9 @@ import '@/styles/index.scss' // global css
|
||||
import './icons' // icon
|
||||
import NProgress from 'nprogress' // progress bar
|
||||
import 'nprogress/nprogress.css' // progress bar style
|
||||
import locale from 'element-ui/lib/locale/lang/en'
|
||||
|
||||
Vue.use(Element, {
|
||||
locale,
|
||||
size: 'medium', // set element-ui default size
|
||||
size: 'medium' // set element-ui default size
|
||||
})
|
||||
|
||||
Vue.config.productionTip = false
|
||||
|
||||
@@ -21,7 +21,7 @@ const constantRoutes = [
|
||||
name: 'Login',
|
||||
hidden: true,
|
||||
component: () => import('@/views/login/index'),
|
||||
meta: { title: 'Login' }
|
||||
meta: { title: '登录' }
|
||||
},
|
||||
{
|
||||
path: '/',
|
||||
@@ -32,7 +32,7 @@ const constantRoutes = [
|
||||
path: 'dashboard',
|
||||
component: () => import('@/views/dashboard/index'),
|
||||
name: 'Dashboard',
|
||||
meta: { title: 'Home', icon: 'home', affix: true }
|
||||
meta: { title: '主页', icon: 'home', affix: true }
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -41,7 +41,7 @@ const constantRoutes = [
|
||||
component: Layout,
|
||||
name: 'UserPage',
|
||||
meta: {
|
||||
title: 'User Management',
|
||||
title: '用户管理',
|
||||
icon: 'users'
|
||||
},
|
||||
children: [
|
||||
@@ -49,26 +49,26 @@ const constantRoutes = [
|
||||
path: 'student/list',
|
||||
component: () => import('@/views/user/student/list'),
|
||||
name: 'UserStudentPageList',
|
||||
meta: { title: 'Recruiter List', noCache: true }
|
||||
meta: { title: '学生列表', noCache: true }
|
||||
},
|
||||
{
|
||||
path: 'student/edit',
|
||||
component: () => import('@/views/user/student/edit'),
|
||||
name: 'UserStudentEdit',
|
||||
meta: { title: 'Recruiter edit', noCache: true, activeMenu: '/user/student/list' },
|
||||
meta: { title: '学生编辑', noCache: true, activeMenu: '/user/student/list' },
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: 'admin/list',
|
||||
component: () => import('@/views/user/admin/list'),
|
||||
name: 'UserAdminPageList',
|
||||
meta: { title: 'Admin List', noCache: true }
|
||||
meta: { title: '管理员列表', noCache: true }
|
||||
},
|
||||
{
|
||||
path: 'admin/edit',
|
||||
component: () => import('@/views/user/admin/edit'),
|
||||
name: 'UserAdminEdit',
|
||||
meta: { title: 'Admin edit', noCache: true, activeMenu: '/user/admin/list' },
|
||||
meta: { title: '管理员编辑', noCache: true, activeMenu: '/user/admin/list' },
|
||||
hidden: true
|
||||
}
|
||||
]
|
||||
@@ -78,7 +78,7 @@ const constantRoutes = [
|
||||
component: Layout,
|
||||
name: 'ExamPage',
|
||||
meta: {
|
||||
title: 'Paper management',
|
||||
title: '卷题管理',
|
||||
icon: 'exam'
|
||||
},
|
||||
children: [
|
||||
@@ -86,8 +86,7 @@ const constantRoutes = [
|
||||
path: 'paper/list',
|
||||
component: () => import('@/views/exam/paper/list'),
|
||||
name: 'ExamPaperPageList',
|
||||
meta: { title: '试卷列表', noCache: true },
|
||||
hidden: true
|
||||
meta: { title: '试卷列表', noCache: true }
|
||||
},
|
||||
{
|
||||
path: 'paper/edit',
|
||||
@@ -100,7 +99,7 @@ const constantRoutes = [
|
||||
path: 'question/list',
|
||||
component: () => import('@/views/exam/question/list'),
|
||||
name: 'ExamQuestionPageList',
|
||||
meta: { title: 'Question List', noCache: true }
|
||||
meta: { title: '题目列表', noCache: true }
|
||||
},
|
||||
{
|
||||
path: 'question/edit/singleChoice',
|
||||
@@ -134,103 +133,90 @@ const constantRoutes = [
|
||||
path: 'question/edit/shortAnswer',
|
||||
component: () => import('@/views/exam/question/edit/short-answer'),
|
||||
name: 'shortAnswerPage',
|
||||
meta: { title: 'Question edit', noCache: true, activeMenu: '/exam/question/list' },
|
||||
meta: { title: '简答题编辑', noCache: true, activeMenu: '/exam/question/list' },
|
||||
hidden: true
|
||||
}
|
||||
]
|
||||
},
|
||||
// {
|
||||
// path: '/task',
|
||||
// component: Layout,
|
||||
// name: 'TaskPage',
|
||||
// meta: {
|
||||
// title: '任务管理',
|
||||
// icon: 'task'
|
||||
// },
|
||||
// alwaysShow: true,
|
||||
// children: [
|
||||
// {
|
||||
// path: 'list',
|
||||
// component: () => import('@/views/task/list'),
|
||||
// name: 'TaskListPage',
|
||||
// meta: { title: '任务列表', noCache: true }
|
||||
// },
|
||||
// {
|
||||
// path: 'edit',
|
||||
// component: () => import('@/views/task/edit'),
|
||||
// name: 'TaskEditPage',
|
||||
// meta: { title: '任务创建', noCache: true }
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
{
|
||||
path: '/task',
|
||||
component: Layout,
|
||||
name: 'TaskPage',
|
||||
meta: {
|
||||
title: '任务管理',
|
||||
icon: 'task'
|
||||
},
|
||||
alwaysShow: true,
|
||||
children: [
|
||||
{
|
||||
path: 'list',
|
||||
component: () => import('@/views/task/list'),
|
||||
name: 'TaskListPage',
|
||||
meta: { title: '任务列表', noCache: true }
|
||||
},
|
||||
{
|
||||
path: 'edit',
|
||||
component: () => import('@/views/task/edit'),
|
||||
name: 'TaskEditPage',
|
||||
meta: { title: '任务创建', noCache: true }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/education',
|
||||
component: Layout,
|
||||
name: 'EducationPage',
|
||||
meta: {
|
||||
title: 'Configuration',
|
||||
title: '教育管理',
|
||||
icon: 'education'
|
||||
},
|
||||
alwaysShow: true,
|
||||
children: [
|
||||
{
|
||||
path: 'industry/list',
|
||||
component: () => import('@/views/education/industry/list'),
|
||||
name: 'EducationIndustryPage',
|
||||
meta: { title: 'Industry', noCache: true }
|
||||
},
|
||||
{
|
||||
path: 'industry/edit',
|
||||
component: () => import('@/views/education/industry/edit'),
|
||||
name: 'EducationIndustryEditPage',
|
||||
meta: { title: 'Industry edit', noCache: true, activeMenu: '/education/industry/list' },
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: 'subject/list',
|
||||
component: () => import('@/views/education/subject/list'),
|
||||
name: 'EducationSubjectPage',
|
||||
meta: { title: 'Skill', noCache: true }
|
||||
meta: { title: '学科列表', noCache: true }
|
||||
},
|
||||
{
|
||||
path: 'subject/edit',
|
||||
component: () => import('@/views/education/subject/edit'),
|
||||
name: 'EducationSubjectEditPage',
|
||||
meta: { title: 'Skill edit', noCache: true, activeMenu: '/education/subject/list' },
|
||||
meta: { title: '学科编辑', noCache: true, activeMenu: '/education/subject/list' },
|
||||
hidden: true
|
||||
}
|
||||
]
|
||||
},
|
||||
// {
|
||||
// path: '/message',
|
||||
// component: Layout,
|
||||
// name: 'MessagePage',
|
||||
// meta: {
|
||||
// title: '消息中心',
|
||||
// icon: 'message'
|
||||
// },
|
||||
// alwaysShow: true,
|
||||
// children: [
|
||||
// {
|
||||
// path: 'list',
|
||||
// component: () => import('@/views/message/list'),
|
||||
// name: 'MessageListPage',
|
||||
// meta: { title: '消息列表', noCache: true }
|
||||
// },
|
||||
// {
|
||||
// path: 'send',
|
||||
// component: () => import('@/views/message/send'),
|
||||
// name: 'MessageSendPage',
|
||||
// meta: { title: '消息发送', noCache: true }
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
{
|
||||
path: '/message',
|
||||
component: Layout,
|
||||
name: 'MessagePage',
|
||||
meta: {
|
||||
title: '消息中心',
|
||||
icon: 'message'
|
||||
},
|
||||
alwaysShow: true,
|
||||
children: [
|
||||
{
|
||||
path: 'list',
|
||||
component: () => import('@/views/message/list'),
|
||||
name: 'MessageListPage',
|
||||
meta: { title: '消息列表', noCache: true }
|
||||
},
|
||||
{
|
||||
path: 'send',
|
||||
component: () => import('@/views/message/send'),
|
||||
name: 'MessageSendPage',
|
||||
meta: { title: '消息发送', noCache: true }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/log',
|
||||
component: Layout,
|
||||
name: 'LogPage',
|
||||
meta: {
|
||||
title: 'Activity Logs',
|
||||
title: '日志中心',
|
||||
icon: 'log'
|
||||
},
|
||||
alwaysShow: true,
|
||||
@@ -239,7 +225,7 @@ const constantRoutes = [
|
||||
path: 'user/list',
|
||||
component: () => import('@/views/log/list'),
|
||||
name: 'LogUserPage',
|
||||
meta: { title: 'User Activities', noCache: true }
|
||||
meta: { title: '用户日志', noCache: true }
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// initial state
|
||||
const state = {
|
||||
user: {
|
||||
sexEnum: [{ key: 1, value: 'Male' }, { key: 2, value: 'Female' }],
|
||||
statusEnum: [{ key: 1, value: 'Enabled' }, { key: 2, value: 'Disable' }],
|
||||
sexEnum: [{ key: 1, value: '男' }, { key: 2, value: '女' }],
|
||||
statusEnum: [{ key: 1, value: '启用' }, { key: 2, value: '禁用' }],
|
||||
levelEnum: [{ key: 1, value: '一年级' }, { key: 2, value: '二年级' }, { key: 3, value: '三年级' }, { key: 4, value: '四年级' }, { key: 5, value: '五年级' }, { key: 6, value: '六年级' },
|
||||
{ key: 7, value: '初一' }, { key: 8, value: '初二' }, { key: 9, value: '初三' },
|
||||
{ key: 10, value: '高一' }, { key: 11, value: '高二' }, { key: 12, value: '高三' }],
|
||||
roleEnum: [{ key: 1, value: '学生' }, { key: 2, value: '教师' }, { key: 3, value: '管理员' }],
|
||||
statusTag: [{ key: 1, value: 'success' }, { key: 2, value: 'danger' }],
|
||||
statusBtn: [{ key: 1, value: 'Disable' }, { key: 2, value: 'Enabled' }]
|
||||
statusBtn: [{ key: 1, value: '禁用' }, { key: 2, value: '启用' }]
|
||||
},
|
||||
exam: {
|
||||
examPaper: {
|
||||
@@ -18,7 +18,7 @@ const state = {
|
||||
typeEnum: [{ key: 1, value: '单选题' }, { key: 2, value: '多选题' }, { key: 3, value: '判断题' }, { key: 4, value: '填空题' }, { key: 5, value: '简答题' }],
|
||||
editUrlEnum: [{ key: 1, value: '/exam/question/edit/singleChoice', name: '单选题' },
|
||||
{ key: 2, value: '/exam/question/edit/multipleChoice', name: '多选题' },
|
||||
{ key: 3, value: '/exam/question/edit/trueFaltagsViewse', name: '判断题' },
|
||||
{ key: 3, value: '/exam/question/edit/trueFalse', name: '判断题' },
|
||||
{ key: 4, value: '/exam/question/edit/gapFilling', name: '填空题' },
|
||||
{ key: 5, value: '/exam/question/edit/shortAnswer', name: '简答题' }]
|
||||
}
|
||||
@@ -33,9 +33,7 @@ const getters = {
|
||||
}
|
||||
|
||||
// actions
|
||||
const actions = {
|
||||
|
||||
}
|
||||
const actions = {}
|
||||
|
||||
// mutations
|
||||
const mutations = {}
|
||||
|
||||
@@ -6,7 +6,7 @@ const request = function (loadtip, query) {
|
||||
if (loadtip) {
|
||||
loading = vue.prototype.$loading({
|
||||
lock: false,
|
||||
text: 'Loading…',
|
||||
text: '正在加载中…',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.5)'
|
||||
})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="dashboard-container">
|
||||
<el-row :gutter="40" class="panel-group">
|
||||
<!--<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
||||
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
||||
<div class="card-panel">
|
||||
<div class="card-panel-icon-wrapper icon-people">
|
||||
<svg-icon icon-class="exam" class-name="card-panel-icon"/>
|
||||
@@ -13,7 +13,7 @@
|
||||
<count-to :start-val="0" :end-val="examPaperCount" :duration="2600" class="card-panel-num" v-loading="loading"/>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>-->
|
||||
</el-col>
|
||||
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
||||
<div class="card-panel" >
|
||||
<div class="card-panel-icon-wrapper icon-message">
|
||||
@@ -21,13 +21,12 @@
|
||||
</div>
|
||||
<div class="card-panel-description">
|
||||
<div class="card-panel-text">
|
||||
Question Count
|
||||
题目总数
|
||||
</div>
|
||||
<count-to :start-val="0" :end-val="questionCount" :duration="3000" class="card-panel-num" v-loading="loading"/>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<!--
|
||||
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
||||
<div class="card-panel">
|
||||
<div class="card-panel-icon-wrapper icon-shopping">
|
||||
@@ -54,7 +53,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
-->
|
||||
</el-row>
|
||||
<el-row class="echarts-line">
|
||||
<div id="echarts-moth-user" style="width: 100%;height:400px;" v-loading="loading"/>
|
||||
@@ -98,8 +96,8 @@ export default {
|
||||
_this.questionCount = response.questionCount
|
||||
_this.doExamPaperCount = response.doExamPaperCount
|
||||
_this.doQuestionCount = response.doQuestionCount
|
||||
_this.echartsUserAction.setOption(this.option('User Activity', '{b}day{c}°', response.mothDayText, response.mothDayUserActionValue))
|
||||
_this.echartsQuestion.setOption(this.option('Monthly Question Count', '{b}day{c}topic', response.mothDayText, response.mothDayDoExamQuestionValue))
|
||||
_this.echartsUserAction.setOption(this.option('用户活跃度', '{b}日{c}度', response.mothDayText, response.mothDayUserActionValue))
|
||||
_this.echartsQuestion.setOption(this.option('题目月数量', '{b}日{c}题', response.mothDayText, response.mothDayDoExamQuestionValue))
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
|
||||
<el-form :model="form" ref="form" label-width="100px" v-loading="formLoading">
|
||||
<el-form-item label="Industry:" required>
|
||||
<el-input v-model="form.name"></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="年级:" required>
|
||||
<el-select v-model="form.level" placeholder="年级">
|
||||
<el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm">Submit</el-button>
|
||||
<el-button @click="resetForm">Reset</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters, mapState, mapActions } from 'vuex'
|
||||
import industryApi from '@/api/industry'
|
||||
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
form: {
|
||||
id: null,
|
||||
name: '',
|
||||
level: 1,
|
||||
levelName: ''
|
||||
},
|
||||
formLoading: false
|
||||
}
|
||||
},
|
||||
created () {
|
||||
let id = this.$route.query.id
|
||||
let _this = this
|
||||
if (id && parseInt(id) !== 0) {
|
||||
_this.formLoading = true
|
||||
industryApi.select(id).then(re => {
|
||||
_this.form = re.response
|
||||
_this.formLoading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
submitForm () {
|
||||
let _this = this
|
||||
this.formLoading = true
|
||||
this.form.levelName = this.enumFormat(this.levelEnum, this.form.level)
|
||||
industryApi.edit(this.form).then(data => {
|
||||
if (data.code === 1) {
|
||||
_this.$message.success(data.message)
|
||||
_this.delCurrentView(_this).then(() => {
|
||||
_this.$router.push('/education/industry/list')
|
||||
})
|
||||
} else {
|
||||
_this.$message.error(data.message)
|
||||
_this.formLoading = false
|
||||
}
|
||||
}).catch(e => {
|
||||
_this.formLoading = false
|
||||
})
|
||||
},
|
||||
resetForm () {
|
||||
this.$refs['form'].resetFields()
|
||||
this.form = {
|
||||
id: null,
|
||||
name: '',
|
||||
level: 1,
|
||||
levelName: ''
|
||||
}
|
||||
},
|
||||
...mapActions('tagsView', { delCurrentView: 'delCurrentView' })
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('enumItem', [
|
||||
'enumFormat'
|
||||
]),
|
||||
...mapState('enumItem', {
|
||||
levelEnum: state => state.user.levelEnum
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -1,92 +0,0 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParam" ref="queryForm" :inline="true">
|
||||
<!--<el-form-item label="年级:">
|
||||
<el-select v-model="queryParam.level" placeholder="年级" clearable="">
|
||||
<el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>-->
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm">Search</el-button>
|
||||
<router-link :to="{path:'/education/industry/edit'}" class="link-left">
|
||||
<el-button type="primary">Add</el-button>
|
||||
</router-link>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
|
||||
<el-table-column prop="id" label="ID" />
|
||||
<el-table-column prop="name" label="Industry"/>
|
||||
<el-table-column width="220px" label="Operation" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<router-link :to="{path:'/education/industry/edit', query:{id:row.id}}" class="link-left">
|
||||
<el-button size="mini">Edit</el-button>
|
||||
</router-link>
|
||||
<el-button size="mini" type="danger" @click="delSubject(row)" class="link-left">Delete</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination v-show="total>0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
|
||||
@pagination="search"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters, mapState } from 'vuex'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import industryApi from '@/api/industry'
|
||||
|
||||
export default {
|
||||
components: { Pagination },
|
||||
data () {
|
||||
return {
|
||||
queryParam: {
|
||||
level: null,
|
||||
pageIndex: 1,
|
||||
pageSize: 10
|
||||
},
|
||||
listLoading: true,
|
||||
tableData: [],
|
||||
total: 0
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.search()
|
||||
},
|
||||
methods: {
|
||||
search () {
|
||||
this.listLoading = true
|
||||
industryApi.pageList(this.queryParam).then(data => {
|
||||
const re = data.response
|
||||
this.tableData = re.list
|
||||
this.total = re.total
|
||||
this.queryParam.pageIndex = re.pageNum
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
submitForm () {
|
||||
this.queryParam.pageIndex = 1
|
||||
this.search()
|
||||
},
|
||||
delSubject (row) {
|
||||
let _this = this
|
||||
industryApi.deleteSubject(row.id).then(re => {
|
||||
if (re.code === 1) {
|
||||
_this.search()
|
||||
_this.$message.success(re.message)
|
||||
} else {
|
||||
_this.$message.error(re.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('enumItem', [
|
||||
'enumFormat'
|
||||
]),
|
||||
...mapState('enumItem', {
|
||||
levelEnum: state => state.user.levelEnum
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -2,17 +2,17 @@
|
||||
<div class="app-container">
|
||||
|
||||
<el-form :model="form" ref="form" label-width="100px" v-loading="formLoading">
|
||||
<el-form-item label="Skill:" required>
|
||||
<el-form-item label="学科:" required>
|
||||
<el-input v-model="form.name"></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="年级:" required>
|
||||
<el-form-item label="年级:" required>
|
||||
<el-select v-model="form.level" placeholder="年级">
|
||||
<el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm">Submit</el-button>
|
||||
<el-button @click="resetForm">Reset</el-button>
|
||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
@@ -1,30 +1,29 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParam" ref="queryForm" :inline="true">
|
||||
<!--<el-form-item label="年级:">
|
||||
<el-form-item label="年级:">
|
||||
<el-select v-model="queryParam.level" placeholder="年级" clearable="">
|
||||
<el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>-->
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm">Search</el-button>
|
||||
<el-button type="primary" @click="submitForm">查询</el-button>
|
||||
<router-link :to="{path:'/education/subject/edit'}" class="link-left">
|
||||
<el-button type="primary">Add</el-button>
|
||||
<el-button type="primary">添加</el-button>
|
||||
</router-link>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
|
||||
<el-table-column prop="id" label="ID" />
|
||||
<el-table-column prop="name" label="Skill"/>
|
||||
<!-- <el-table-column prop="industry" label="industry"/> -->
|
||||
<!-- <el-table-column prop="levelName" label="年级" /> -->
|
||||
<el-table-column width="220px" label="Operation" align="center">
|
||||
<el-table-column prop="id" label="Id" />
|
||||
<el-table-column prop="name" label="学科"/>
|
||||
<el-table-column prop="levelName" label="年级" />
|
||||
<el-table-column width="220px" label="操作" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<router-link :to="{path:'/education/subject/edit', query:{id:row.id}}" class="link-left">
|
||||
<el-button size="mini">Edit</el-button>
|
||||
<el-button size="mini">编辑</el-button>
|
||||
</router-link>
|
||||
<el-button size="mini" type="danger" @click="delSubject(row)" class="link-left">Delete</el-button>
|
||||
<el-button size="mini" type="danger" @click="delSubject(row)" class="link-left">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -30,9 +30,7 @@
|
||||
<div class="q-title" v-html="question.title"/>
|
||||
</div>
|
||||
<div v-else-if="qType==5" v-loading="qLoading">
|
||||
Question:<div class="q-title" v-html="question.title"/>
|
||||
Answer: <div class="q-title" v-html="question.correct"/>
|
||||
Analysis:<div class="q-title" v-html="question.analyze"/>
|
||||
<div class="q-title" v-html="question.title"/>
|
||||
</div>
|
||||
<div v-else>
|
||||
</div>
|
||||
|
||||
@@ -208,6 +208,7 @@ export default {
|
||||
this.questionShow.question = this.form
|
||||
},
|
||||
resetForm () {
|
||||
let lastId = this.form.id
|
||||
this.$refs['form'].resetFields()
|
||||
this.form = {
|
||||
id: null,
|
||||
@@ -222,6 +223,7 @@ export default {
|
||||
score: '',
|
||||
difficult: 0
|
||||
}
|
||||
this.form.id = lastId
|
||||
},
|
||||
...mapActions('exam', { initSubject: 'initSubject' }),
|
||||
...mapActions('tagsView', { delCurrentView: 'delCurrentView' })
|
||||
|
||||
@@ -195,6 +195,7 @@ export default {
|
||||
this.questionShow.question = this.form
|
||||
},
|
||||
resetForm () {
|
||||
let lastId = this.form.id
|
||||
this.$refs['form'].resetFields()
|
||||
this.form = {
|
||||
id: null,
|
||||
@@ -214,6 +215,7 @@ export default {
|
||||
score: '',
|
||||
difficult: 0
|
||||
}
|
||||
this.form.id = lastId
|
||||
},
|
||||
...mapActions('exam', { initSubject: 'initSubject' }),
|
||||
...mapActions('tagsView', { delCurrentView: 'delCurrentView' })
|
||||
|
||||
@@ -1,42 +1,42 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
|
||||
<el-form-item label="Industry:" prop="industryId" required>
|
||||
<el-select v-model="form.industryId" placeholder="Industry" @change="levelChange">
|
||||
<el-option v-for="item in industryFilter" :key="item.id" :value="item.id" :label="item.name"></el-option>
|
||||
<el-form-item label="年级:" prop="gradeLevel" required>
|
||||
<el-select v-model="form.gradeLevel" placeholder="年级" @change="levelChange">
|
||||
<el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="Skill:" prop="skillId" required>
|
||||
<el-select v-model="form.skillId" placeholder="Skill" >
|
||||
<el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name"></el-option>
|
||||
<el-form-item label="学科:" prop="subjectId" required>
|
||||
<el-select v-model="form.subjectId" placeholder="学科" >
|
||||
<el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' ( '+item.levelName+' )'"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="Question:" prop="title" required>
|
||||
<el-form-item label="题干:" prop="title" required>
|
||||
<el-input v-model="form.title" @focus="inputClick(form,'title')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Answer:" prop="correct" required>
|
||||
<el-form-item label="答案:" prop="correct" required>
|
||||
<el-input v-model="form.correct" @focus="inputClick(form,'correct')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Analysis:" prop="analyze" required>
|
||||
<el-form-item label="解析:" prop="analyze" required>
|
||||
<el-input v-model="form.analyze" @focus="inputClick(form,'analyze')" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="分数:" prop="score" required>
|
||||
<el-form-item label="分数:" prop="score" required>
|
||||
<el-input-number v-model="form.score" :precision="1" :step="1" :max="100"></el-input-number>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="Difficulty:" required>
|
||||
</el-form-item>
|
||||
<el-form-item label="难度:" required>
|
||||
<el-rate v-model="form.difficult" class="question-item-rate"></el-rate>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm">Submit</el-button>
|
||||
<el-button @click="resetForm">Reset</el-button>
|
||||
<el-button type="success" @click="showQuestion">Preview</el-button>
|
||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
<el-button type="success" @click="showQuestion">预览</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-dialog :visible.sync="richEditor.dialogVisible" append-to-body :close-on-click-modal="false" style="width: 100%;height: 100%" :show-close="false" center>
|
||||
<Ueditor @ready="editorReady"/>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="editorConfirm">Confirm</el-button>
|
||||
<el-button @click="richEditor.dialogVisible = false">Cancel</el-button>
|
||||
<el-button type="primary" @click="editorConfirm">确 定</el-button>
|
||||
<el-button @click="richEditor.dialogVisible = false">取 消</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
<el-dialog :visible.sync="questionShow.dialog" style="width: 100%;height: 100%">
|
||||
@@ -50,7 +50,6 @@ import QuestionShow from '../components/Show'
|
||||
import Ueditor from '@/components/Ueditor'
|
||||
import { mapGetters, mapState, mapActions } from 'vuex'
|
||||
import questionApi from '@/api/question'
|
||||
import industryApi from '@/api/industry'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -61,36 +60,35 @@ export default {
|
||||
form: {
|
||||
id: null,
|
||||
questionType: 5,
|
||||
industryId: null,
|
||||
skillId: null,
|
||||
gradeLevel: null,
|
||||
subjectId: null,
|
||||
title: '',
|
||||
items: [],
|
||||
analyze: '',
|
||||
correct: '',
|
||||
score: '0',
|
||||
score: '',
|
||||
difficult: 0
|
||||
},
|
||||
subjectFilter: null,
|
||||
industryFilter: null,
|
||||
formLoading: false,
|
||||
rules: {
|
||||
gradeLevel: [
|
||||
{ required: true, message: 'Please select grade', trigger: 'change' }
|
||||
{ required: true, message: '请选择年级', trigger: 'change' }
|
||||
],
|
||||
subjectId: [
|
||||
{ required: true, message: 'Please select subject', trigger: 'change' }
|
||||
{ required: true, message: '请选择学科', trigger: 'change' }
|
||||
],
|
||||
title: [
|
||||
{ required: true, message: 'Please enter the question', trigger: 'blur' }
|
||||
{ required: true, message: '请输入题干', trigger: 'blur' }
|
||||
],
|
||||
correct: [
|
||||
{ required: true, message: 'Please enter the answer', trigger: 'blur' }
|
||||
{ required: true, message: '请输入答案', trigger: 'blur' }
|
||||
],
|
||||
analyze: [
|
||||
{ required: true, message: 'Please enter parse', trigger: 'blur' }
|
||||
{ required: true, message: '请输入解析', trigger: 'blur' }
|
||||
],
|
||||
score: [
|
||||
{ required: true, message: 'Please enter the score', trigger: 'blur' }
|
||||
{ required: true, message: '请输入分数', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
richEditor: {
|
||||
@@ -113,7 +111,6 @@ export default {
|
||||
this.initSubject(function () {
|
||||
_this.subjectFilter = _this.subjects
|
||||
})
|
||||
this.subjectFilter = this.subjects.filter(data => data.level === this.form.gradeLevel)
|
||||
if (id && parseInt(id) !== 0) {
|
||||
_this.formLoading = true
|
||||
questionApi.select(id).then(re => {
|
||||
@@ -121,10 +118,6 @@ export default {
|
||||
_this.formLoading = false
|
||||
})
|
||||
}
|
||||
industryApi.list().then(re => {
|
||||
this.industryFilter=re.response;
|
||||
})
|
||||
|
||||
},
|
||||
methods: {
|
||||
editorReady (instance) {
|
||||
@@ -168,6 +161,7 @@ export default {
|
||||
})
|
||||
},
|
||||
resetForm () {
|
||||
let lastId = this.form.id
|
||||
this.$refs['form'].resetFields()
|
||||
this.form = {
|
||||
id: null,
|
||||
@@ -178,15 +172,14 @@ export default {
|
||||
items: [],
|
||||
analyze: '',
|
||||
correct: '',
|
||||
score: '0',
|
||||
score: '',
|
||||
difficult: 0
|
||||
}
|
||||
this.form.id = lastId
|
||||
},
|
||||
levelChange () {
|
||||
this.form.subjectId = null
|
||||
//this.subjectFilter = this.subjects.filter(data => data.level === this.form.gradeLevel)
|
||||
console.log(this.subjectFilter);
|
||||
|
||||
this.subjectFilter = this.subjects.filter(data => data.level === this.form.gradeLevel)
|
||||
},
|
||||
showQuestion () {
|
||||
this.questionShow.dialog = true
|
||||
|
||||
@@ -1,49 +1,48 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParam" ref="queryForm" :inline="true">
|
||||
<el-form-item label="Question ID:">
|
||||
<el-form-item label="题目ID:">
|
||||
<el-input v-model="queryParam.id" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Industry:">
|
||||
<el-select v-model="queryParam.industry" placeholder="Industry" @change="levelChange" clearable>
|
||||
<el-option v-for="item in industryFilter" :key="item.id" :value="item.id" :label="item.name"></el-option>
|
||||
<el-form-item label="年级:">
|
||||
<el-select v-model="queryParam.level" placeholder="年级" @change="levelChange" clearable>
|
||||
<el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="Skill:">
|
||||
<el-select v-model="queryParam.skill" clearable placeholder="Skill">
|
||||
<el-form-item label="学科:">
|
||||
<el-select v-model="queryParam.subjectId" clearable>
|
||||
<el-option v-for="item in subjectFilter" :key="item.id" :value="item.id"
|
||||
:label="item.name"></el-option>
|
||||
:label="item.name+' ( '+item.levelName+' )'"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="题型:">
|
||||
<el-form-item label="题型:">
|
||||
<el-select v-model="queryParam.questionType" clearable>
|
||||
<el-option v-for="item in questionType" :key="item.key" :value="item.key" :label="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm">Search</el-button>
|
||||
<el-button type="primary" @click="submitForm">查询</el-button>
|
||||
<el-popover placement="bottom" trigger="click">
|
||||
<!--<el-button type="warning" size="mini" v-for="item in editUrlEnum" :key="item.key"
|
||||
<el-button type="warning" size="mini" v-for="item in editUrlEnum" :key="item.key"
|
||||
@click="$router.push({path:item.value})">{{item.name}}
|
||||
</el-button> -->
|
||||
<el-button slot="reference" type="primary" class="link-left" @click="$router.push('/exam/question/edit/shortAnswer')">Add</el-button>
|
||||
</el-button>
|
||||
<el-button slot="reference" type="primary" class="link-left">添加</el-button>
|
||||
</el-popover>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
|
||||
<el-table-column prop="id" label="ID" width="90px"/>
|
||||
<el-table-column prop="industryName" label="Industry" width="120px"/>
|
||||
<el-table-column prop="skillName" label="Skill" width="120px"/>
|
||||
<!-- <el-table-column prop="questionType" label="题型" :formatter="questionTypeFormatter" width="70px"/> -->
|
||||
<el-table-column prop="shortTitle" label="Question" show-overflow-tooltip/>
|
||||
<!-- <el-table-column prop="score" label="分数" width="60px"/> -->
|
||||
<el-table-column prop="difficult" label="Difficulty" width="100px"/>
|
||||
<el-table-column prop="createTime" label="Create Time" width="160px"/>
|
||||
<el-table-column label="Operation" align="center" width="220px">
|
||||
<el-table-column prop="id" label="Id" width="90px"/>
|
||||
<el-table-column prop="subjectId" label="学科" :formatter="subjectFormatter" width="120px"/>
|
||||
<el-table-column prop="questionType" label="题型" :formatter="questionTypeFormatter" width="70px"/>
|
||||
<el-table-column prop="shortTitle" label="题干" show-overflow-tooltip/>
|
||||
<el-table-column prop="score" label="分数" width="60px"/>
|
||||
<el-table-column prop="difficult" label="难度" width="60px"/>
|
||||
<el-table-column prop="createTime" label="创建时间" width="160px"/>
|
||||
<el-table-column label="操作" align="center" width="220px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" @click="showQuestion(row)">Preview</el-button>
|
||||
<el-button size="mini" @click="editQuestion(row)">Edit</el-button>
|
||||
<el-button size="mini" type="danger" @click="deleteQuestion(row)" class="link-left">Delete</el-button>
|
||||
<el-button size="mini" @click="showQuestion(row)">预览</el-button>
|
||||
<el-button size="mini" @click="editQuestion(row)">编辑</el-button>
|
||||
<el-button size="mini" type="danger" @click="deleteQuestion(row)" class="link-left">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -60,7 +59,6 @@ import { mapGetters, mapState, mapActions } from 'vuex'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import QuestionShow from './components/Show'
|
||||
import questionApi from '@/api/question'
|
||||
import industryApi from '@/api/industry'
|
||||
|
||||
export default {
|
||||
components: { Pagination, QuestionShow },
|
||||
@@ -68,15 +66,14 @@ export default {
|
||||
return {
|
||||
queryParam: {
|
||||
id: null,
|
||||
questionType: '5',
|
||||
skill: null,
|
||||
industry: null,
|
||||
questionType: null,
|
||||
level: null,
|
||||
subjectId: null,
|
||||
pageIndex: 1,
|
||||
pageSize: 10
|
||||
},
|
||||
subjectFilter: null,
|
||||
industryFilter: null,
|
||||
listLoading: false,
|
||||
listLoading: true,
|
||||
tableData: [],
|
||||
total: 0,
|
||||
questionShow: {
|
||||
@@ -90,13 +87,6 @@ export default {
|
||||
created () {
|
||||
this.initSubject()
|
||||
this.search()
|
||||
let _this = this
|
||||
this.initSubject(function () {
|
||||
_this.subjectFilter = _this.subjects
|
||||
})
|
||||
industryApi.list().then(re => {
|
||||
this.industryFilter=re.response;
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
submitForm () {
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParam" ref="queryForm" :inline="true">
|
||||
<el-form-item label="User ID:">
|
||||
<el-form-item label="用户Id:">
|
||||
<el-input v-model="queryParam.userId"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Username: ">
|
||||
<el-form-item label="用户名:">
|
||||
<el-input v-model="queryParam.userName"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm">Search</el-button>
|
||||
<el-button type="primary" @click="submitForm">查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
|
||||
<el-table-column prop="Id" label="ID" width="100" />
|
||||
<el-table-column prop="userName" label="Username" width="150" />
|
||||
<el-table-column prop="realName" label="Name" width="150" />
|
||||
<el-table-column prop="content" label="Activity" />
|
||||
<el-table-column prop="createTime" label="Create Time" width="160px"/>
|
||||
<el-table-column prop="id" label="Id" width="100" />
|
||||
<el-table-column prop="userName" label="用户名" width="150" />
|
||||
<el-table-column prop="realName" label="真实姓名" width="150" />
|
||||
<el-table-column prop="content" label="动态" />
|
||||
<el-table-column prop="createTime" label="创建时间" width="160px"/>
|
||||
</el-table>
|
||||
<pagination v-show="total>0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
|
||||
@pagination="search"/>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left">
|
||||
|
||||
<div class="title-container">
|
||||
<h3 class="title">TEKSystems Question Bank Admin Portal</h3>
|
||||
<h3 class="title">学之思管理系统</h3>
|
||||
</div>
|
||||
|
||||
<el-form-item prop="userName">
|
||||
@@ -13,7 +13,7 @@
|
||||
<el-input
|
||||
ref="userName"
|
||||
v-model="loginForm.userName"
|
||||
placeholder="Username"
|
||||
placeholder="用户名"
|
||||
name="userName"
|
||||
type="text"
|
||||
tabindex="1"
|
||||
@@ -31,7 +31,7 @@
|
||||
ref="password"
|
||||
v-model="loginForm.password"
|
||||
:type="passwordType"
|
||||
placeholder="Password"
|
||||
placeholder="密码"
|
||||
name="password"
|
||||
tabindex="2"
|
||||
auto-complete="on"
|
||||
@@ -45,14 +45,14 @@
|
||||
</el-form-item>
|
||||
</el-tooltip>
|
||||
|
||||
<el-checkbox v-model="loginForm.remember" style="margin-bottom: 20px;margin-left: 5px;">Remember me</el-checkbox>
|
||||
<el-checkbox v-model="loginForm.remember" style="margin-bottom: 20px;margin-left: 5px;">记住密码</el-checkbox>
|
||||
|
||||
<el-button :loading="loading" type="primary" style="width:100%;margin-bottom:30px;" @click.native.prevent="handleLogin">Login</el-button>
|
||||
<el-button :loading="loading" type="primary" style="width:100%;margin-bottom:30px;" @click.native.prevent="handleLogin">登录</el-button>
|
||||
|
||||
</el-form>
|
||||
|
||||
<div class="account-foot-copyright">
|
||||
<span>Copyright © 2020 TEKSystems</span>
|
||||
<span>Copyright © 2020 武汉思维跳跃科技有限公司 版权所有</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -66,14 +66,14 @@ export default {
|
||||
data () {
|
||||
const validateUsername = (rule, value, callback) => {
|
||||
if (value.length < 5) {
|
||||
callback(new Error('The username can not be less than 5 characters.'))
|
||||
callback(new Error('用户名不能少于5个字符'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
const validatePassword = (rule, value, callback) => {
|
||||
if (value.length < 5) {
|
||||
callback(new Error('The password must be no less than 5 characters.'))
|
||||
callback(new Error('密码不能少于5个字符'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
|
||||
@@ -175,6 +175,7 @@ export default {
|
||||
})
|
||||
},
|
||||
resetForm () {
|
||||
let lastId = this.form.id
|
||||
this.$refs['form'].resetFields()
|
||||
this.form = {
|
||||
id: null,
|
||||
@@ -182,6 +183,7 @@ export default {
|
||||
title: '',
|
||||
paperItems: []
|
||||
}
|
||||
this.form.id = lastId
|
||||
},
|
||||
subjectFormatter (row, column, cellValue, index) {
|
||||
return this.subjectEnumFormat(cellValue)
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
|
||||
<el-form :model="form" ref="form" label-width="120px" v-loading="formLoading" :rules="rules">
|
||||
<el-form-item label="User name:" prop="userName" required>
|
||||
<el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
|
||||
<el-form-item label="用户名:" prop="userName" required>
|
||||
<el-input v-model="form.userName"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Password:" required>
|
||||
<el-form-item label="密码:" required>
|
||||
<el-input v-model="form.password"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Name: " prop="realName" required>
|
||||
<el-form-item label="真实姓名:" prop="realName" required>
|
||||
<el-input v-model="form.realName"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Age:">
|
||||
<el-form-item label="年龄:">
|
||||
<el-input v-model="form.age"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="gender:">
|
||||
<el-select v-model="form.sex" placeholder="Gender" clearable>
|
||||
<el-form-item label="性别:">
|
||||
<el-select v-model="form.sex" placeholder="性别" clearable>
|
||||
<el-option v-for="item in sexEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="BirthDay:">
|
||||
<el-date-picker v-model="form.birthDay" value-format="yyyy-MM-dd" type="date" placeholder="Option date"/>
|
||||
<el-form-item label="出生日期:">
|
||||
<el-date-picker v-model="form.birthDay" value-format="yyyy-MM-dd" type="date" placeholder="选择日期"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="Phone:">
|
||||
<el-form-item label="手机:">
|
||||
<el-input v-model="form.phone"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Status:" required>
|
||||
<el-select v-model="form.status" placeholder="Status">
|
||||
<el-form-item label="状态:" required>
|
||||
<el-select v-model="form.status" placeholder="状态">
|
||||
<el-option v-for="item in statusEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm">Submit</el-button>
|
||||
<el-button @click="resetForm">Reset</el-button>
|
||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
@@ -60,10 +60,10 @@ export default {
|
||||
formLoading: false,
|
||||
rules: {
|
||||
userName: [
|
||||
{ required: true, message: 'Please enter the user name', trigger: 'blur' }
|
||||
{ required: true, message: '请输入用户名', trigger: 'blur' }
|
||||
],
|
||||
realName: [
|
||||
{ required: true, message: 'Please enter your real name', trigger: 'blur' }
|
||||
{ required: true, message: '请输入真实姓名', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -118,7 +118,7 @@ export default {
|
||||
birthDay: null,
|
||||
phone: null
|
||||
}
|
||||
this.form = lastId
|
||||
this.form.id = lastId
|
||||
},
|
||||
...mapActions('tagsView', { delCurrentView: 'delCurrentView' })
|
||||
},
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParam" ref="queryForm" :inline="true">
|
||||
<el-form-item label="Username:">
|
||||
<el-form-item label="用户名:">
|
||||
<el-input v-model="queryParam.userName"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm">Search</el-button>
|
||||
<el-button type="primary" @click="submitForm">查询</el-button>
|
||||
<router-link :to="{path:'/user/admin/edit'}" class="link-left">
|
||||
<el-button type="primary">Add</el-button>
|
||||
<el-button type="primary">添加</el-button>
|
||||
</router-link>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
|
||||
<el-table-column prop="id" label="ID" />
|
||||
<el-table-column prop="userName" label="Username"/>
|
||||
<el-table-column prop="realName" label="Name" />
|
||||
<el-table-column prop="sex" label="Gender" width="100px;" :formatter="sexFormatter"/>
|
||||
<el-table-column prop="phone" label="Phone"/>
|
||||
<el-table-column prop="createTime" label="Create Time" width="160px"/>
|
||||
<el-table-column label="Status" prop="status" width="70px">
|
||||
<el-table-column prop="id" label="Id" />
|
||||
<el-table-column prop="userName" label="用户名"/>
|
||||
<el-table-column prop="realName" label="真实姓名" />
|
||||
<el-table-column prop="sex" label="性别" width="60px;" :formatter="sexFormatter"/>
|
||||
<el-table-column prop="phone" label="手机号"/>
|
||||
<el-table-column prop="createTime" label="创建时间" width="160px"/>
|
||||
<el-table-column label="状态" prop="status" width="70px">
|
||||
<template slot-scope="{row}">
|
||||
<el-tag :type="statusTagFormatter(row.status)">
|
||||
{{ statusFormatter(row.status) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="220px" label="Operation" align="center">
|
||||
<el-table-column width="220px" label="操作" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" @click="changeStatus(row)" class="link-left">
|
||||
{{ statusBtnFormatter(row.status) }}
|
||||
</el-button>
|
||||
<router-link :to="{path:'/user/admin/edit', query:{id:row.id}}" class="link-left">
|
||||
<el-button size="mini">Edit</el-button>
|
||||
<el-button size="mini">编辑</el-button>
|
||||
</router-link>
|
||||
<el-button size="mini" type="danger" @click="deleteUser(row)" class="link-left">Delete</el-button>
|
||||
<el-button size="mini" type="danger" @click="deleteUser(row)" class="link-left">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -2,42 +2,42 @@
|
||||
<div class="app-container">
|
||||
|
||||
<el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
|
||||
<el-form-item label="Username:" prop="userName" required>
|
||||
<el-form-item label="用户名:" prop="userName" required>
|
||||
<el-input v-model="form.userName"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Password:" prop="password" required>
|
||||
<el-form-item label="密码:" required>
|
||||
<el-input v-model="form.password"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Name:" prop="realName" required>
|
||||
<el-form-item label="真实姓名:" prop="realName" required>
|
||||
<el-input v-model="form.realName"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Age:">
|
||||
<el-form-item label="年龄:">
|
||||
<el-input v-model="form.age"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Gender:">
|
||||
<el-select v-model="form.sex" placeholder="Gender" clearable>
|
||||
<el-form-item label="性别:">
|
||||
<el-select v-model="form.sex" placeholder="性别" clearable>
|
||||
<el-option v-for="item in sexEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="Birthday:">
|
||||
<el-date-picker v-model="form.birthDay" type="date" value-format="yyyy-MM-dd" placeholder="Option date" />
|
||||
<el-form-item label="出生日期:">
|
||||
<el-date-picker v-model="form.birthDay" type="date" value-format="yyyy-MM-dd" placeholder="选择日期" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Phone:">
|
||||
<el-form-item label="手机:">
|
||||
<el-input v-model="form.phone"></el-input>
|
||||
</el-form-item>
|
||||
<!--<el-form-item label="年级:" prop="userLevel" required>
|
||||
<el-form-item label="年级:" prop="userLevel" required>
|
||||
<el-select v-model="form.userLevel" placeholder="年级">
|
||||
<el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>-->
|
||||
<el-form-item label="Status:" required>
|
||||
<el-select v-model="form.status" placeholder="Status">
|
||||
</el-form-item>
|
||||
<el-form-item label="状态:" required>
|
||||
<el-select v-model="form.status" placeholder="状态">
|
||||
<el-option v-for="item in statusEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm">Submit</el-button>
|
||||
<el-button @click="resetForm">Reset</el-button>
|
||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
@@ -61,21 +61,18 @@ export default {
|
||||
sex: '',
|
||||
birthDay: null,
|
||||
phone: null,
|
||||
userLevel: '1'
|
||||
userLevel: null
|
||||
},
|
||||
formLoading: false,
|
||||
rules: {
|
||||
userName: [
|
||||
{ required: true, message: 'Please enter a username', trigger: 'blur' }
|
||||
{ required: true, message: '请输入用户名', trigger: 'blur' }
|
||||
],
|
||||
realName: [
|
||||
{ required: true, message: 'Please enter a real name', trigger: 'blur' }
|
||||
{ required: true, message: '请输入真实姓名', trigger: 'blur' }
|
||||
],
|
||||
userLevel: [
|
||||
{ required: true, message: 'Please select grade', trigger: 'change' }
|
||||
],
|
||||
password: [
|
||||
{ required: true, message: 'Please enter a password', trigger: 'blur' }
|
||||
{ required: true, message: '请选择年级', trigger: 'change' }
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -116,6 +113,7 @@ export default {
|
||||
})
|
||||
},
|
||||
resetForm () {
|
||||
let lastId = this.form.id
|
||||
this.$refs['form'].resetFields()
|
||||
this.form = {
|
||||
id: null,
|
||||
@@ -128,8 +126,9 @@ export default {
|
||||
sex: '',
|
||||
birthDay: null,
|
||||
phone: null,
|
||||
userLevel: '1'
|
||||
userLevel: null
|
||||
}
|
||||
this.form.id = lastId
|
||||
},
|
||||
...mapActions('tagsView', { delCurrentView: 'delCurrentView' })
|
||||
},
|
||||
|
||||
@@ -1,44 +1,44 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParam" ref="queryForm" :inline="true">
|
||||
<el-form-item label="Username:">
|
||||
<el-form-item label="用户名:">
|
||||
<el-input v-model="queryParam.userName"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm">Search</el-button>
|
||||
<el-button type="primary" @click="submitForm">查询</el-button>
|
||||
<router-link :to="{path:'/user/student/edit'}" class="link-left">
|
||||
<el-button type="primary">Add</el-button>
|
||||
<el-button type="primary">添加</el-button>
|
||||
</router-link>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
|
||||
<el-table-column prop="id" label="ID" />
|
||||
<el-table-column prop="userName" label="Username"/>
|
||||
<el-table-column prop="realName" label="Name" />
|
||||
<!--<el-table-column prop="userLevel" label="学级" :formatter="levelFormatter"/>-->
|
||||
<el-table-column prop="sex" label="Gender" width="100px;" :formatter="sexFormatter"/>
|
||||
<el-table-column prop="phone" label="Phone Number"/>
|
||||
<el-table-column prop="createTime" label="Create Time" width="160px"/>
|
||||
<el-table-column label="Status" prop="status" width="70px">
|
||||
<el-table-column prop="id" label="Id" />
|
||||
<el-table-column prop="userName" label="用户名"/>
|
||||
<el-table-column prop="realName" label="真实姓名" />
|
||||
<el-table-column prop="userLevel" label="学级" :formatter="levelFormatter"/>
|
||||
<el-table-column prop="sex" label="性别" width="60px;" :formatter="sexFormatter"/>
|
||||
<el-table-column prop="phone" label="手机号"/>
|
||||
<el-table-column prop="createTime" label="创建时间" width="160px"/>
|
||||
<el-table-column label="状态" prop="status" width="70px">
|
||||
<template slot-scope="{row}">
|
||||
<el-tag :type="statusTagFormatter(row.status)">
|
||||
{{ statusFormatter(row.status) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="270px" label="Operation" align="center">
|
||||
<el-table-column width="270px" label="操作" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" @click="changeStatus(row)" class="link-left">
|
||||
{{ statusBtnFormatter(row.status) }}
|
||||
</el-button>
|
||||
<router-link :to="{path:'/user/student/edit', query:{id:row.id}}" class="link-left">
|
||||
<el-button size="mini" >Edit</el-button>
|
||||
<el-button size="mini" >编辑</el-button>
|
||||
</router-link>
|
||||
<router-link :to="{path:'/log/user/list', query:{userId:row.id}}" class="link-left">
|
||||
<el-button size="mini" >Logs</el-button>
|
||||
<el-button size="mini" >日志</el-button>
|
||||
</router-link>
|
||||
<el-button size="mini" type="danger" @click="deleteUser(row)" class="link-left">Delete</el-button>
|
||||
<el-button size="mini" type="danger" @click="deleteUser(row)" class="link-left">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
Reference in New Issue
Block a user