This commit is contained in:
mindskip
2021-01-15 11:39:44 +08:00
parent 01eafa8efc
commit ba63ef6d15
342 changed files with 3005 additions and 4397 deletions

View File

@@ -20,4 +20,3 @@ yarn-error.log*
*.njsproj
*.sln
*.sw?
/package-lock.json

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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%;

View File

@@ -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)
}

View File

@@ -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)
}

View File

@@ -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)
},

View File

@@ -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>

View File

@@ -24,7 +24,7 @@ export default {
},
data () {
return {
title: 'TEKsystems Admin'
title: '学之思管理系统'
}
}
}

View File

@@ -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>

View File

@@ -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

View File

@@ -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 }
}
]
},

View File

@@ -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 = {}

View File

@@ -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)'
})

View File

@@ -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
})
},

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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' })

View File

@@ -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' })

View File

@@ -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

View File

@@ -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 () {

View File

@@ -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"/>

View File

@@ -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()
}

View File

@@ -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)

View File

@@ -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' })
},

View File

@@ -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>

View File

@@ -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' })
},

View File

@@ -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>

View File

@@ -20,4 +20,3 @@ yarn-error.log*
*.njsproj
*.sln
*.sw?
/package-lock.json

File diff suppressed because it is too large Load Diff

View File

@@ -16,7 +16,7 @@
},
"dependencies": {
"axios": "^0.19.0",
"core-js": "^3.8.0",
"core-js": "^3.8.2",
"element-ui": "^2.14.1",
"js-cookie": "2.2.0",
"normalize.css": "8.0.1",
@@ -26,11 +26,11 @@
"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.0.3",
"eslint": "^5.16.0",

View File

@@ -66,7 +66,7 @@
</div>
</el-footer>
<div class="foot-copyright">
<span>Copyright © 2020 TekSystem 版权所有</span>
<span>Copyright © 2020 武汉思维跳跃科技有限公司 版权所有</span>
</div>
</el-container>
</template>