From f542d731de01e6897243b2072523ecdaa6c63505 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期五, 01 三月 2024 08:50:02 +0800
Subject: [PATCH] 修改
---
src/views/commonMod/examApply/components/examApplyDialog.vue | 353 +++++++++++++++++++
src/views/system/user/authRole.vue | 6
src/views/monitor/logininfor/index.vue | 6
src/views/notCoalMine/nCertificateList/components/certificateDialog.vue | 23
src/views/redirect.vue | 1
src/api/commonMod/examApply.js | 52 ++
src/layout/components/Sidebar/Logo.vue | 10
src/views/error/401.vue | 7
src/views/system/role/authUser.vue | 10
src/plugins/tab.js | 9
src/views/system/role/selectUser.vue | 8
src/store/getters.js | 1
src/permission.js | 29 +
src/views/coalMine/cTeacherManage/cReviewer/index.vue | 3
src/store/modules/user.js | 7
src/views/commonMod/examApply/index.vue | 237 +++++++++++++
src/views/system/user/profile/index.vue | 2
src/store/modules/permission.js | 21 +
src/layout/components/TagsView/index.vue | 14
src/views/monitor/online/index.vue | 4
src/router/index.js | 14
src/components/Breadcrumb/index.vue | 6
src/utils/request.js | 4
.env.development | 3
src/views/system/user/index.vue | 227 ++++++++---
src/views/login.vue | 6
src/views/system/user/profile/userInfo.vue | 6
27 files changed, 942 insertions(+), 127 deletions(-)
diff --git a/.env.development b/.env.development
index 7bb0001..cdae439 100644
--- a/.env.development
+++ b/.env.development
@@ -11,5 +11,8 @@
#张凤
VUE_APP_BASE_API = 'http://192.168.0.70:8085/api'
+#线上
+#VUE_APP_BASE_API = 'http://121.239.169.30:8086/api'
+
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true
diff --git a/src/api/commonMod/examApply.js b/src/api/commonMod/examApply.js
new file mode 100644
index 0000000..ba4cf39
--- /dev/null
+++ b/src/api/commonMod/examApply.js
@@ -0,0 +1,52 @@
+import request from '@/utils/request'
+
+// 数据分页
+export function getExamPage(query) {
+ return request({
+ url: '/exam/apply/page/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 获取数据
+export function getExamApply(id) {
+ return request({
+ url: '/exam/apply/get/' + id,
+ method: 'get'
+ })
+}
+
+// 根据机构查询考点
+export function getExamSite(id) {
+ return request({
+ url: '/exam/site/select/' + id,
+ method: 'get'
+ })
+}
+
+// 新增数据
+export function addExamApply(data) {
+ return request({
+ url: '/exam/apply/add',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改数据
+export function editExamApply(data) {
+ return request({
+ url: '/exam/apply/mod',
+ method: 'post',
+ data: data
+ })
+}
+
+// 删除数据
+export function delExamApply(ids) {
+ return request({
+ url: '/exam/apply/del/batch/' + ids,
+ method: 'delete'
+ })
+}
diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue
index 1696f54..9ed9418 100644
--- a/src/components/Breadcrumb/index.vue
+++ b/src/components/Breadcrumb/index.vue
@@ -34,9 +34,9 @@
let matched = this.$route.matched.filter(item => item.meta && item.meta.title)
const first = matched[0]
- if (!this.isDashboard(first)) {
- matched = [{ path: '/index', meta: { title: '首页' }}].concat(matched)
- }
+ // if (!this.isDashboard(first)) {
+ // matched = [{ path: '/index', meta: { title: '首页' }}].concat(matched)
+ // }
this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
},
diff --git a/src/layout/components/Sidebar/Logo.vue b/src/layout/components/Sidebar/Logo.vue
index 2774cc8..e42beb5 100644
--- a/src/layout/components/Sidebar/Logo.vue
+++ b/src/layout/components/Sidebar/Logo.vue
@@ -1,11 +1,11 @@
<template>
<div class="sidebar-logo-container" :class="{'collapse':collapse}" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
<transition name="sidebarLogoFade">
- <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
+ <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" :to="indexPage">
<img v-if="logo" :src="logo" class="sidebar-logo" />
<h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
</router-link>
- <router-link v-else key="expand" class="sidebar-logo-link" to="/">
+ <router-link v-else key="expand" class="sidebar-logo-link" :to="indexPage">
<img v-if="logo" :src="logo" class="sidebar-logo" />
<h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
</router-link>
@@ -15,6 +15,7 @@
<script>
import logoImg from '@/assets/logo/logo.png'
+import {mapState} from "vuex";
import variables from '@/assets/styles/variables.scss'
export default {
@@ -31,7 +32,10 @@
},
sideTheme() {
return this.$store.state.settings.sideTheme
- }
+ },
+ ...mapState({
+ indexPage: state => state.permission.indexPage
+ })
},
data() {
return {
diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue
index 96585a5..708ed6e 100644
--- a/src/layout/components/TagsView/index.vue
+++ b/src/layout/components/TagsView/index.vue
@@ -31,6 +31,7 @@
<script>
import ScrollPane from './ScrollPane'
import path from 'path'
+import {mapState} from "vuex";
export default {
components: { ScrollPane },
@@ -52,7 +53,10 @@
},
theme() {
return this.$store.state.settings.theme;
- }
+ },
+ ...mapState({
+ indexPage: state => state.permission.indexPage
+ })
},
watch: {
$route() {
@@ -83,7 +87,11 @@
};
},
isAffix(tag) {
- return tag.meta && tag.meta.affix
+ if (tag.fullPath == this.indexPage) {
+ return true
+ } else {
+ return tag.meta && tag.meta.affix
+ }
},
isFirstView() {
try {
@@ -206,7 +214,7 @@
// to reload home page
this.$router.replace({ path: '/redirect' + view.fullPath })
} else {
- this.$router.push('/')
+ this.$router.push(this.indexPage)
}
}
},
diff --git a/src/permission.js b/src/permission.js
index 609d215..01ff805 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -27,7 +27,34 @@
store.dispatch('GenerateRoutes').then(accessRoutes => {
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes) // 动态添加可访问路由表
- next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
+ // next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
+ let path = '';
+ if (accessRoutes[0].path === '/') {
+ path = accessRoutes[0].path + accessRoutes[0].children[0].path; //获取第一路由路径
+ } else {
+ path = accessRoutes[0].path + '/' + accessRoutes[0].children[0].path; //获取第一路由路径
+ }
+
+ if (accessRoutes[0].children[0].query !== undefined) { //如果当前路由存在路由参数,则带入
+ let query = JSON.parse(accessRoutes[0].children[0].query);
+ let temp = '';
+ for (var val in query) {
+ if (temp.length == 0) {
+ temp = "?";
+ } else {
+ temp = temp + "&";
+ }
+ temp = temp + val + "=" + query[val];
+ }
+ path = path + temp;
+ }
+ var temp = {...to, replace: true};
+ var curPath = temp.path;
+ if (from.path == '/login' || curPath == "/" ) {
+ next({path, replace: true}) // hack方法 确保addRoutes已完成
+ } else {
+ next(temp) // hack方法 确保addRoutes已完成
+ }
})
}).catch(err => {
store.dispatch('LogOut').then(() => {
diff --git a/src/plugins/tab.js b/src/plugins/tab.js
index b029c0e..a287983 100644
--- a/src/plugins/tab.js
+++ b/src/plugins/tab.js
@@ -31,13 +31,10 @@
},
// 关闭指定tab页签
closePage(obj) {
+ let indexPage = store.state.permission.indexPage;
if (obj === undefined) {
- return store.dispatch('tagsView/delView', router.currentRoute).then(({ visitedViews }) => {
- const latestView = visitedViews.slice(-1)[0]
- if (latestView) {
- return router.push(latestView.fullPath)
- }
- return router.push('/');
+ return store.dispatch('tagsView/delView', router.currentRoute).then(({ lastPath }) => {
+ return router.push(lastPath || indexPage);
});
}
return store.dispatch('tagsView/delView', obj);
diff --git a/src/router/index.js b/src/router/index.js
index a1c7386..1733f35 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -61,20 +61,20 @@
component: () => import('@/views/error/401'),
hidden: true
},
- {
- path: '',
- component: Layout,
+ // {
+ // path: '',
+ // component: Layout,
// redirect: '/notCoalMine/nPeopleManage/index',
- hidden: true,
- children: [
+ // hidden: true,
+ // children: [
// {
// path: 'index',
// component: () => import('@/views/index'),
// name: 'Index',
// meta: { title: '人员管理', icon: 'peoples', affix: true }
// }
- ]
- },
+ // ]
+ // },
{
path: '/user',
component: Layout,
diff --git a/src/store/getters.js b/src/store/getters.js
index 8adb1b6..005454f 100644
--- a/src/store/getters.js
+++ b/src/store/getters.js
@@ -10,6 +10,7 @@
name: state => state.user.name,
introduction: state => state.user.introduction,
roles: state => state.user.roles,
+ userInfo: state => state.user.userInfo,
permissions: state => state.user.permissions,
permission_routes: state => state.permission.routes,
topbarRouters:state => state.permission.topbarRouters,
diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js
index 2287665..bbfd7c9 100644
--- a/src/store/modules/permission.js
+++ b/src/store/modules/permission.js
@@ -11,7 +11,8 @@
addRoutes: [],
defaultRoutes: [],
topbarRouters: [],
- sidebarRouters: []
+ sidebarRouters: [],
+ indexPage: ''
},
mutations: {
SET_ROUTES: (state, routes) => {
@@ -27,6 +28,9 @@
SET_SIDEBAR_ROUTERS: (state, routes) => {
state.sidebarRouters = routes
},
+ SET_INDEX_PAGE: (state, routes) => {
+ state.indexPage = routes
+ }
},
actions: {
// 生成路由
@@ -36,6 +40,20 @@
getRouters().then(res => {
const sdata = JSON.parse(JSON.stringify(res.data))
const rdata = JSON.parse(JSON.stringify(res.data))
+ let indexdata = res.data[0].path + "/" + res.data[0].children[0].path
+ if (res.data[0].children[0].query !== undefined) { //如果当前路由存在路由参数,则带入
+ let query = JSON.parse(res.data[0].children[0].query);
+ let temp = '';
+ for (var val in query) {
+ if (temp.length == 0) {
+ temp = "?";
+ } else {
+ temp = temp + "&";
+ }
+ temp = temp + val + "=" + query[val];
+ }
+ indexdata = indexdata + temp;
+ }
const sidebarRoutes = filterAsyncRouter(sdata)
const rewriteRoutes = filterAsyncRouter(rdata, false, true)
const asyncRoutes = filterDynamicRoutes(dynamicRoutes);
@@ -45,6 +63,7 @@
commit('SET_SIDEBAR_ROUTERS', constantRoutes.concat(sidebarRoutes))
commit('SET_DEFAULT_ROUTES', sidebarRoutes)
commit('SET_TOPBAR_ROUTES', sidebarRoutes)
+ commit('SET_INDEX_PAGE', indexdata)
resolve(rewriteRoutes)
})
})
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index ab0a6fe..52c5e58 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -7,10 +7,14 @@
name: '',
avatar: '',
roles: [],
- permissions: []
+ permissions: [],
+ userInfo: {}
},
mutations: {
+ SET_USER: (state, user) => {
+ state.userInfo = user
+ },
SET_TOKEN: (state, token) => {
state.token = token
},
@@ -51,6 +55,7 @@
return new Promise((resolve, reject) => {
getInfo().then(res => {
const user = res.user
+ commit('SET_USER', user)
const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.roles)
diff --git a/src/utils/request.js b/src/utils/request.js
index 93a2c77..54e71e4 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -81,7 +81,9 @@
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
isRelogin.show = false;
store.dispatch('LogOut').then(() => {
- location.href = '/index';
+ // location.href = '/index';
+ let indexUrl = this.$store.state.permission.indexPage
+ location.href = indexUrl;
})
}).catch(() => {
isRelogin.show = false;
diff --git a/src/views/coalMine/cTeacherManage/cReviewer/index.vue b/src/views/coalMine/cTeacherManage/cReviewer/index.vue
index e9e85bc..64a675f 100644
--- a/src/views/coalMine/cTeacherManage/cReviewer/index.vue
+++ b/src/views/coalMine/cTeacherManage/cReviewer/index.vue
@@ -165,6 +165,9 @@
}
this.loading = false;
},
+ openUpload(){
+ this.$message.error('请联系开发人员规范导入')
+ },
openDialog(data,type){
this.$refs.reviewerDialog.openDialog(data,type)
},
diff --git a/src/views/commonMod/examApply/components/examApplyDialog.vue b/src/views/commonMod/examApply/components/examApplyDialog.vue
new file mode 100644
index 0000000..290a5be
--- /dev/null
+++ b/src/views/commonMod/examApply/components/examApplyDialog.vue
@@ -0,0 +1,353 @@
+<template>
+ <el-dialog
+ :title="title"
+ :visible.sync="open"
+ append-to-body
+ width="50%"
+ :before-close="handleClose"
+ >
+ <el-form ref="ruleForm" :model="form" :rules="rules" label-position="right" label-width="150px" style="padding-right: 50px" element-loading-text="保存中...">
+ <el-form-item label="考试批次全称:" prop="examName">
+ <el-input v-model.trim="form.examName" type="textarea" :readonly="disable"/>
+ </el-form-item>
+ <el-form-item label="类别:" prop="isCm">
+ <el-radio-group v-model="form.isCm" style="width: 100%;" :disabled="disable || !isAdmin" @change="clearOptions">
+ <el-radio :label="0">非煤</el-radio>
+ <el-radio :label="1">煤矿</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="机构:" prop="institutionId">
+ <el-select v-model="form.institutionId" placeholder="请选择所属机构" style="width: 100%" :disabled="disable" @focus="getSections">
+ <el-option
+ v-for="item in sectionOptions"
+ :key="item.institutionId"
+ :label="item.institutionName"
+ :value="item.institutionId"
+ :disabled="disable"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="考试点:" prop="siteId">
+ <el-select v-model="form.siteId" placeholder="请选择考试点" style="width: 100%" :disabled="disable" @focus="getSites">
+ <el-option
+ v-for="item in siteOptions"
+ :key="item.siteId"
+ :label="item.siteName"
+ :value="item.siteId"
+ :disabled="disable"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="考试人数:" prop="examNum">
+ <el-input v-model.trim="form.examNum" type="number" :readonly="disable"/>
+ </el-form-item>
+ <el-form-item label="正考日期" prop="zkTimeRange">
+ <el-date-picker
+ v-model="form.zkTimeRange"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ type="datetimerange"
+ range-separator="-"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ :disabled="disable"
+ ></el-date-picker>
+ </el-form-item>
+ <el-form-item label="补考日期" prop="bkTimeRange">
+ <el-date-picker
+ v-model="form.bkTimeRange"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ type="datetimerange"
+ range-separator="-"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ :disabled="disable"
+ ></el-date-picker>
+ </el-form-item>
+ <el-form-item label="实操日期" prop="scTimeRange">
+ <el-date-picker
+ v-model="form.scTimeRange"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ type="datetimerange"
+ range-separator="-"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ :disabled="disable"
+ ></el-date-picker>
+ </el-form-item>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="机构联系人:" prop="institutionContacts">
+ <el-input v-model.trim="form.institutionContacts" :readonly="disable"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="联系电话:" prop="institutionContactsPhone">
+ <el-input v-model.trim="form.institutionContactsPhone" :readonly="disable"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="考试点联系人:" prop="siteContacts">
+ <el-input v-model.trim="form.siteContacts" :readonly="disable"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="联系电话:" prop="siteContactsPhone">
+ <el-input v-model.trim="form.siteContactsPhone" :readonly="disable"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="handleClose">取消</el-button>
+ <el-button v-if="disable == false" type="primary" @click="submit">提交</el-button>
+ <el-button v-else type="primary" @click="handleClose">确定</el-button>
+ </span>
+ </el-dialog>
+</template>
+
+<script >
+import {addExamApply, editExamApply, getExamSite} from "@/api/commonMod/examApply";
+import {getTrainPage} from "@/api/coalMine/placeManage/train";
+import store from "@/store";
+
+export default {
+ name: 'examApplyDialog',
+ components: {
+ },
+ props: ['typeList'],
+ data() {
+ return {
+ disable: false,
+ title: '新增申报',
+ open: false,
+ form:{},
+ sectionOptions: [],
+ siteOptions: [],
+ rules:{
+ examName:[{ required: true, message: '请填写考试批次全称', trigger: 'blur' }],
+ isCm: [{ required: true, message: '请选择类别', trigger: 'blur' }],
+ institutionId: [{ required: true, message: '请选择机构', trigger: 'blur' }],
+ siteId: [{ required: true, message: '请选择考试点', trigger: 'blur' }],
+ examNum: [{ required: true, message: '请填写考试人数', trigger: 'blur' }],
+ zkTimeRange: [{ required: true, message: '请选择正考时间', trigger: 'blur' }],
+ bkTimeRange: [{ required: true, message: '请选择补考时间', trigger: 'blur' }],
+ scTimeRange: [{ required: true, message: '请选择实操时间', trigger: 'blur' }],
+ siteContacts: [{ required: true, message: '请填写考试点联系人', trigger: 'blur' }],
+ siteContactsPhone: [{ required: true, message: '请填写考试点联系人电话', trigger: 'blur' }],
+ institutionContacts: [{ required: true, message: '请填写机构联系人', trigger: 'blur' }],
+ institutionContactsPhone: [{ required: true, message: '请填写机构联系人电话', trigger: 'blur' }]
+ },
+ isAdmin: false
+ }
+ },
+ created() {
+
+ },
+ methods: {
+ openDialog (val,type) {
+ const t = this
+ const roles = store.getters && store.getters.roles
+ if(roles.includes('admin')){
+ t.isAdmin = true
+ }else{
+ t.isAdmin = false
+ }
+ if(roles.includes('company')){
+ t.form.isCm = 0
+ }
+ if(roles.includes('mk')){
+ t.form.isCm = 1
+ }
+ const userInfo = store.getters && store.getters.userInfo
+ if(userInfo.institutions && userInfo.institutions.length>0){
+ t.sectionOptions = userInfo.institutions
+ t.form.institutionId = userInfo.institutions[0].institutionId
+ }
+ t.open = true
+ t.reset()
+ if(type == 'add'){
+ t.title = '新增申报'
+ t.disable = false
+ }else{
+ if(type == 'edit'){
+ t.title = '编辑'
+ t.disable = false
+ }else{
+ t.title = '查看'
+ t.disable = true
+ }
+ if(val){
+ for(let i in val){
+ if(t.isValidKey(i,this.form)){
+ t.form[i] = val[i]
+ }
+ }
+ }
+
+ t.form.zkTimeRange=[val.examStartTime,val.examEndTime]
+ t.form.bkTimeRange=[val.resitStartTime,val.resitEndTime]
+ t.form.scTimeRange=[val.operationStartTime,val.operationEndTime]
+ t.getSectionList()
+ t.getSiteList()
+ t.form.institutionId = val.institutionId.toString()
+ t.form.siteId = val.siteId
+ console.log(t.form,t.sectionOptions,t.siteOptions,666)
+ }
+ },
+ isValidKey(key,obj){
+ return key in obj
+ },
+
+ handleClose() {
+ this.open = false;
+ this.resetForm();
+ },
+
+ getSections(){
+ if(this.form.isCm == 0 || this.form.isCm == 1){
+ this.getSectionList()
+ }else{
+ this.$message({
+ message: '请先选择类别',
+ type: 'warning'
+ })
+ }
+ },
+
+ async getSectionList() {
+ this.loading = true;
+ const param = {
+ isCm: this.form.isCm,
+ pageNum: 1,
+ pageSize: 999
+ }
+ const res = await getTrainPage(param);
+ if(res.code == 200) {
+ this.sectionOptions = res.rows;
+ }else {
+ this.$message({
+ message: res.msg,
+ type: 'warning'
+ })
+ }
+ this.loading = false;
+ },
+
+
+ getSites(){
+ if(this.form.institutionId){
+ this.getSiteList()
+ }else{
+ this.$message({
+ message: '请先选择所属机构',
+ type: 'warning'
+ })
+ }
+ },
+
+ async getSiteList() {
+ this.loading = true;
+ const res = await getExamSite(this.form.institutionId);
+ if(res.code == 200) {
+ this.siteOptions = res.data;
+ }else {
+ this.$message({
+ message: res.msg,
+ type: 'warning'
+ })
+ }
+ this.loading = false;
+ },
+
+ clearOptions() {
+ this.form.institutionId = null
+ this.form.siteId = null
+ this.getSectionList()
+ },
+
+ // 表单重置
+ reset() {
+ this.form = {
+ applyId: null,
+ examName: '',
+ isCm: null,
+ institutionId: null,
+ siteId: null,
+ examNum: null,
+ zkTimeRange: [],
+ examStartTime: '',
+ examEndTime: '',
+ bkTimeRange: [],
+ resitStartTime: '',
+ resitEndTime: '',
+ scTimeRange: [],
+ operationStartTime: '',
+ operationEndTime: '',
+ siteContacts: '',
+ siteContactsPhone: '',
+ institutionContacts: '',
+ institutionContactsPhone: ''
+ }
+ this.sectionOptions = []
+ this.siteOptions = []
+ },
+
+ async submit(){
+ this.$refs["ruleForm"].validate(async(valid) =>{
+ if(valid) {
+ this.form.examStartTime = this.form.zkTimeRange[0]
+ this.form.examEndTime = this.form.zkTimeRange[1]
+ this.form.resitStartTime = this.form.bkTimeRange[0]
+ this.form.resitEndTime = this.form.bkTimeRange[1]
+ this.form.operationStartTime = this.form.scTimeRange[0]
+ this.form.operationEndTime = this.form.scTimeRange[1]
+ if(this.title == '新增申报'){
+ const {applyId,zkTimeRange,bkTimeRange,scTimeRange,...data} = this.form
+ const res= await addExamApply(data)
+ if(res.code == 200){
+ this.$message({
+ type:'success',
+ message: res.msg
+ })
+ this.open = false
+ this.$emit('getList')
+ }else{
+ this.$message({
+ type:'warning',
+ message: res.msg
+ })
+ }
+ }else{
+ const {zkTimeRange,bkTimeRange,scTimeRange,...data} = this.form
+ const res= await editExamApply(data)
+ if(res.code == 200){
+ this.$message({
+ type:'success',
+ message: res.msg
+ })
+ this.open = false
+ this.$emit('getList')
+ }else{
+ this.$message({
+ type:'warning',
+ message: res.msg
+ })
+ }
+ }
+ }else{
+ this.$message({
+ type:'warning',
+ message:'请完善必填信息'
+ })
+ }
+ })
+ },
+ }
+}
+
+</script>
+<style scoped>
+
+</style>
diff --git a/src/views/commonMod/examApply/index.vue b/src/views/commonMod/examApply/index.vue
new file mode 100644
index 0000000..be2cf37
--- /dev/null
+++ b/src/views/commonMod/examApply/index.vue
@@ -0,0 +1,237 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
+ <el-form-item prop="isCm">
+ <el-radio-group v-model="queryParams.isCm" @change="changeType">
+ <el-radio-button :label="2">全部</el-radio-button>
+ <el-radio-button :label="1">煤矿</el-radio-button>
+ <el-radio-button :label="0">非煤</el-radio-button>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="时间范围" prop="timeRange">
+ <el-date-picker
+ v-model="queryParams.timeRange"
+ value-format="yyyy-MM-dd HH:mm"
+ type="datetimerange"
+ range-separator="-"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ ></el-date-picker>
+ </el-form-item>
+ <el-form-item label="所属区域" prop="districtId">
+ <el-select v-model="queryParams.districtId" placeholder="请选择" style="width: 100%;">
+ <el-option
+ v-for="item in areaList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ size="mini"
+ @click="openExamApply({},'add')"
+ v-hasPermi="['system:experts:add']"
+ >新增考试计划</el-button>
+ </el-col>
+ <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row>
+ <el-table v-loading="loading" :data="dataList">
+ <el-table-column label="序号" align="center" type="index"/>
+ <el-table-column label="机构名称" align="center" prop="institutionName" />
+ <el-table-column label="考试点名称" align="center" prop="siteName" />
+ <el-table-column label="考试批次全称" align="center" prop="examName" />
+ <el-table-column label="考试人数" align="center" prop="examNum" />
+ <el-table-column label="计划正考时间" align="center">
+ <template #default="scope">
+ {{scope.row.examStartTime.substring(0,16) + '--' + scope.row.examEndTime.substring(0,16)}}
+ </template>
+ </el-table-column>
+ <el-table-column label="计划补考时间" align="center">
+ <template #default="scope">
+ {{scope.row.resitStartTime.substring(0,16) + '--' + scope.row.resitEndTime.substring(0,16)}}
+ </template>
+ </el-table-column>
+ <el-table-column label="实操时间" align="center">
+ <template #default="scope">
+ {{scope.row.operationStartTime.substring(0,16) + '--' + scope.row.operationEndTime.substring(0,16)}}
+ </template>
+ </el-table-column>
+ <el-table-column label="培训机构联系人" align="center">
+ <template #default="scope">
+ {{scope.row.institutionContacts + '(' + scope.row.institutionContactsPhone + ')'}}
+ </template>
+ </el-table-column>
+ <el-table-column label="考试点联系人" align="center">
+ <template #default="scope">
+ {{scope.row.siteContacts + '(' + scope.row.siteContactsPhone + ')'}}
+ </template>
+ </el-table-column>
+ <el-table-column label="提交时间" align="center" prop="updateTime" />
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+ <template #default="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="openExamApply(scope.row,'view')"
+ >查看详情</el-button>
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-edit"
+ @click="openExamApply(scope.row,'edit')"
+ v-hasPermi="['system:experts:remove']"
+ >编辑</el-button>
+ <el-button
+ size="mini"
+ type="text"
+ style="color: red"
+ icon="el-icon-delete"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['system:experts:remove']"
+ >删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+ <examApply-dialog ref="examApplyDialog" @getList="getList" :typeList="typeList"></examApply-dialog>
+ </div>
+</template>
+
+<script>
+
+import examApplyDialog from "@/views/commonMod/examApply/components/examApplyDialog";
+import {getOperatePage} from "@/api/coalMine/operateType";
+import {delExamApply, getExamPage} from "@/api/commonMod/examApply";
+import {getAreaList} from "@/api/coalMine/placeManage/train";
+export default {
+ name: "examApply",
+ dicts: [],
+ components: {
+ examApplyDialog
+ },
+ data() {
+ return {
+ violationDialog: '',
+ loading: false,
+ showSearch: true,
+ dataList: [],
+ total: 0,
+ typeList: [],
+ areaList: [],
+ queryParams: {
+ districtId: null,
+ isCm: 2,
+ examStartTime: '',
+ examEndTime: '',
+ pageNum: 1,
+ pageSize: 10
+ }
+ };
+ },
+ created() {
+ this.getList()
+ this.getTypeList()
+ this.getArea()
+ },
+ methods: {
+ async getList(){
+ const t = this
+ t.loading = true
+ const res = await getExamPage(t.queryParams)
+ if(res.code == 200){
+ t.dataList = res.rows
+ t.total = res.total
+ }else{
+ t.$message({
+ message: res.msg,
+ type: 'warning'
+ })
+ }
+ t.loading = false
+ },
+ async getTypeList() {
+ this.loading = true;
+ const res = await getOperatePage({name: ''})
+ if(res.code == 200){
+ this.typeList = this.handleTree(res.data, "id");
+ }else{
+ this.$message({
+ type: 'warning',
+ message: res.msg
+ });
+ }
+ this.loading = false;
+ },
+ async getArea() {
+ const res = await getAreaList();
+ if(res.code == 200) {
+ this.areaList = res.data;
+ }
+ },
+ handleDelete(row){
+ this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(async () => {
+ const res = await delExamApply([row.applyId])
+ if(res.code == 200){
+ this.$message({
+ type: 'success',
+ message: '删除成功!'
+ });
+ await this.getList()
+ }else{
+ this.$message({
+ type: 'warning',
+ message: res.msg
+ });
+ }
+ }).catch(() => {
+
+ });
+ },
+ handleQuery(){
+ this.queryParams.pageNum = 1
+ this.getList()
+ },
+ resetQuery(){
+ this.queryParams = {
+ name: '',
+ idCard:'',
+ dept: '',
+ operateTypeId: null,
+ isCm: 2,
+ pageNum: 1,
+ pageSize: 10
+ }
+ this.getList()
+ },
+ changeType(){
+ this.queryParams.pageNum = 1
+ this.getList()
+ },
+ openExamApply(data,type){
+ this.$refs.examApplyDialog.openDialog(data,type);
+ }
+ }
+};
+</script>
diff --git a/src/views/error/401.vue b/src/views/error/401.vue
index 448b6ec..e1151fb 100644
--- a/src/views/error/401.vue
+++ b/src/views/error/401.vue
@@ -12,7 +12,7 @@
<h6>对不起,您没有访问权限,请不要进行非法操作!您可以返回主页面</h6>
<ul class="list-unstyled">
<li class="link-type">
- <router-link to="/">
+ <router-link :to="indexPage">
回首页
</router-link>
</li>
@@ -27,6 +27,7 @@
<script>
import errGif from '@/assets/401_images/401.gif'
+import {mapState} from "vuex";
export default {
name: 'Page401',
@@ -34,6 +35,10 @@
return {
errGif: errGif + '?' + +new Date()
}
+ },computed: {
+ ...mapState({
+ indexPage: state => state.permission.indexPage
+ })
},
methods: {
back() {
diff --git a/src/views/login.vue b/src/views/login.vue
index 4ced06e..8ceb629 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -18,6 +18,7 @@
type="password"
auto-complete="off"
placeholder="密码"
+ show-password
@keyup.enter.native="handleLogin"
>
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
@@ -98,8 +99,9 @@
watch: {
$route: {
handler: function(route) {
- // this.redirect = route.query && route.query.redirect;
- this.redirect = '/notCoalMine/nPeopleManage'
+ console.log(route,'route')
+ this.redirect = route.query && route.query.redirect;
+ // this.redirect = '/notCoalMine/nPeopleManage'
},
immediate: true
}
diff --git a/src/views/monitor/logininfor/index.vue b/src/views/monitor/logininfor/index.vue
index d6af834..1c55564 100644
--- a/src/views/monitor/logininfor/index.vue
+++ b/src/views/monitor/logininfor/index.vue
@@ -10,10 +10,10 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
- <el-form-item label="用户名称" prop="userName">
+ <el-form-item label="用户名" prop="userName">
<el-input
v-model="queryParams.userName"
- placeholder="请输入用户名称"
+ placeholder="请输入用户名"
clearable
style="width: 240px;"
@keyup.enter.native="handleQuery"
@@ -101,7 +101,7 @@
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="访问编号" align="center" prop="infoId" />
- <el-table-column label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
+ <el-table-column label="用户名" align="center" prop="userName" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
<el-table-column label="登录地址" align="center" prop="ipaddr" width="130" :show-overflow-tooltip="true" />
<el-table-column label="登录地点" align="center" prop="loginLocation" :show-overflow-tooltip="true" />
<el-table-column label="浏览器" align="center" prop="browser" :show-overflow-tooltip="true" />
diff --git a/src/views/monitor/online/index.vue b/src/views/monitor/online/index.vue
index ad613c9..b0159ab 100644
--- a/src/views/monitor/online/index.vue
+++ b/src/views/monitor/online/index.vue
@@ -9,10 +9,10 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
- <el-form-item label="用户名称" prop="userName">
+ <el-form-item label="用户名" prop="userName">
<el-input
v-model="queryParams.userName"
- placeholder="请输入用户名称"
+ placeholder="请输入用户名"
clearable
@keyup.enter.native="handleQuery"
/>
diff --git a/src/views/notCoalMine/nCertificateList/components/certificateDialog.vue b/src/views/notCoalMine/nCertificateList/components/certificateDialog.vue
index c0316e1..6334ecc 100644
--- a/src/views/notCoalMine/nCertificateList/components/certificateDialog.vue
+++ b/src/views/notCoalMine/nCertificateList/components/certificateDialog.vue
@@ -118,6 +118,7 @@
<script>
// import {getExpertTypes,addExpertInfo,uploadFile} from '@/api/system/form'
// import { verifySimplePhone, verifyIdCard } from "@/utils/validate";
+import { getToken } from "@/utils/auth";
import axios from "axios";
export default {
name: "nCertificateDialog",
@@ -215,17 +216,17 @@
return key in obj
},
- async getExpertsType(){
- const res = await getExpertTypes()
- if(res.code == 200){
- this.expertsType = res.data
- }else{
- this.$message({
- type: 'warning',
- message: res.msg
- });
- }
- },
+ // async getExpertsType(){
+ // const res = await getExpertTypes()
+ // if(res.code == 200){
+ // this.expertsType = res.data
+ // }else{
+ // this.$message({
+ // type: 'warning',
+ // message: res.msg
+ // });
+ // }
+ // },
avatorChange(file, fileList) {
this.fileList = fileList;
},
diff --git a/src/views/redirect.vue b/src/views/redirect.vue
index db4c1d6..ac91b3d 100644
--- a/src/views/redirect.vue
+++ b/src/views/redirect.vue
@@ -1,6 +1,7 @@
<script>
export default {
created() {
+ console.log(this.$store,'rout')
const { params, query } = this.$route
const { path } = params
this.$router.replace({ path: '/' + path, query })
diff --git a/src/views/system/role/authUser.vue b/src/views/system/role/authUser.vue
index 147aa33..9a19d6a 100644
--- a/src/views/system/role/authUser.vue
+++ b/src/views/system/role/authUser.vue
@@ -1,10 +1,10 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
- <el-form-item label="用户名称" prop="userName">
+ <el-form-item label="用户名" prop="userName">
<el-input
v-model="queryParams.userName"
- placeholder="请输入用户名称"
+ placeholder="请输入用户名"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
@@ -61,8 +61,8 @@
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
- <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
- <el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
+ <el-table-column label="用户名" prop="userName" :show-overflow-tooltip="true" />
+ <el-table-column label="真实姓名" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" prop="status">
@@ -196,4 +196,4 @@
}
}
};
-</script>
\ No newline at end of file
+</script>
diff --git a/src/views/system/role/selectUser.vue b/src/views/system/role/selectUser.vue
index b2b072f..f028f9c 100644
--- a/src/views/system/role/selectUser.vue
+++ b/src/views/system/role/selectUser.vue
@@ -2,10 +2,10 @@
<!-- 授权用户 -->
<el-dialog title="选择用户" :visible.sync="visible" width="800px" top="5vh" append-to-body>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
- <el-form-item label="用户名称" prop="userName">
+ <el-form-item label="用户名" prop="userName">
<el-input
v-model="queryParams.userName"
- placeholder="请输入用户名称"
+ placeholder="请输入用户名"
clearable
@keyup.enter.native="handleQuery"
/>
@@ -26,8 +26,8 @@
<el-row>
<el-table @row-click="clickRow" ref="table" :data="userList" @selection-change="handleSelectionChange" height="260px">
<el-table-column type="selection" width="55"></el-table-column>
- <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
- <el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
+ <el-table-column label="用户名" prop="userName" :show-overflow-tooltip="true" />
+ <el-table-column label="真实姓名" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" prop="status">
diff --git a/src/views/system/user/authRole.vue b/src/views/system/user/authRole.vue
index ab5e72f..c3e7625 100644
--- a/src/views/system/user/authRole.vue
+++ b/src/views/system/user/authRole.vue
@@ -4,7 +4,7 @@
<el-form ref="form" :model="form" label-width="80px">
<el-row>
<el-col :span="8" :offset="2">
- <el-form-item label="用户昵称" prop="nickName">
+ <el-form-item label="真实姓名" prop="nickName">
<el-input v-model="form.nickName" disabled />
</el-form-item>
</el-col>
@@ -33,7 +33,7 @@
</template>
</el-table-column>
</el-table>
-
+
<pagination v-show="total>0" :total="total" :page.sync="pageNum" :limit.sync="pageSize" />
<el-form label-width="100px">
@@ -114,4 +114,4 @@
},
},
};
-</script>
\ No newline at end of file
+</script>
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index d5b2f48..9f61dcd 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -30,10 +30,10 @@
<!--用户数据-->
<el-col :span="20" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
- <el-form-item label="用户名称" prop="userName">
+ <el-form-item label="用户名" prop="userName">
<el-input
v-model="queryParams.userName"
- placeholder="请输入用户名称"
+ placeholder="请输入用户名"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
@@ -139,10 +139,10 @@
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
- <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
- <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
- <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
+ <el-table-column label="真实姓名" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
+ <el-table-column label="用户名" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
+ <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
<template slot-scope="scope">
<el-switch
@@ -204,21 +204,33 @@
</el-row>
<!-- 添加或修改用户配置对话框 -->
- <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+ <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
- <el-row>
+ <el-row :gutter="20">
<el-col :span="12">
- <el-form-item label="用户昵称" prop="nickName">
- <el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" />
+ <el-form-item label="真实姓名" prop="nickName">
+ <el-input v-model="form.nickName" placeholder="请输入真实姓名" maxlength="30" />
+ </el-form-item>
+ </el-col>
+<!-- <el-col :span="12">-->
+<!-- <el-form-item label="归属部门" prop="deptId">-->
+<!-- <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />-->
+<!-- </el-form-item>-->
+<!-- </el-col>-->
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item v-if="form.userId == undefined" label="用户名" prop="userName">
+ <el-input v-model="form.userName" placeholder="请输入用户名" maxlength="30" />
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="归属部门" prop="deptId">
- <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+ <el-form-item v-if="form.userId == undefined" label="用户密码" prop="password">
+ <el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password/>
</el-form-item>
</el-col>
</el-row>
- <el-row>
+ <el-row :gutter="20">
<el-col :span="12">
<el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" />
@@ -230,22 +242,15 @@
</el-form-item>
</el-col>
</el-row>
- <el-row>
+ <el-row :gutter="20">
<el-col :span="12">
- <el-form-item v-if="form.userId == undefined" label="用户名称" prop="userName">
- <el-input v-model="form.userName" placeholder="请输入用户名称" maxlength="30" />
+ <el-form-item label="身份证号">
+ <el-input v-model="form.idCard" placeholder="请输入身份证号" maxlength="18"/>
</el-form-item>
</el-col>
- <el-col :span="12">
- <el-form-item v-if="form.userId == undefined" label="用户密码" prop="password">
- <el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password/>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
<el-col :span="12">
<el-form-item label="用户性别">
- <el-select v-model="form.sex" placeholder="请选择性别">
+ <el-select v-model="form.sex" placeholder="请选择性别" style="width: 100%">
<el-option
v-for="dict in dict.type.sys_user_sex"
:key="dict.value"
@@ -255,35 +260,24 @@
</el-select>
</el-form-item>
</el-col>
- <el-col :span="12">
- <el-form-item label="状态">
- <el-radio-group v-model="form.status">
- <el-radio
- v-for="dict in dict.type.sys_normal_disable"
- :key="dict.value"
- :label="dict.value"
- >{{dict.label}}</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
</el-row>
- <el-row>
+ <el-row :gutter="20">
+<!-- <el-col :span="12">-->
+<!-- <el-form-item label="岗位">-->
+<!-- <el-select v-model="form.postIds" multiple placeholder="请选择岗位">-->
+<!-- <el-option-->
+<!-- v-for="item in postOptions"-->
+<!-- :key="item.postId"-->
+<!-- :label="item.postName"-->
+<!-- :value="item.postId"-->
+<!-- :disabled="item.status == 1"-->
+<!-- ></el-option>-->
+<!-- </el-select>-->
+<!-- </el-form-item>-->
+<!-- </el-col>-->
<el-col :span="12">
- <el-form-item label="岗位">
- <el-select v-model="form.postIds" multiple placeholder="请选择岗位">
- <el-option
- v-for="item in postOptions"
- :key="item.postId"
- :label="item.postName"
- :value="item.postId"
- :disabled="item.status == 1"
- ></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="角色">
- <el-select v-model="form.roleIds" multiple placeholder="请选择角色">
+ <el-form-item label="角色" prop="roleIds">
+ <el-select v-model="form.roleIds" multiple placeholder="请选择角色" style="width: 100%" @change="getSections">
<el-option
v-for="item in roleOptions"
:key="item.roleId"
@@ -294,8 +288,46 @@
</el-select>
</el-form-item>
</el-col>
+ <el-col :span="12" v-if="showInstitutuion">
+ <el-form-item label="所属机构" prop="institutionIds">
+ <el-select v-model="form.institutionIds" multiple placeholder="请选择所属机构" style="width: 100%">
+ <el-option
+ v-for="item in sectionOptions"
+ :key="item.institutionId"
+ :label="item.institutionName"
+ :value="item.institutionId"
+ :disabled="item.status == 1"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
</el-row>
- <el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="所属地区">
+ <el-select v-model="form.districtId" placeholder="请选择" style="width: 100%;">
+ <el-option
+ v-for="item in areaList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="状态">
+ <el-radio-group v-model="form.status" style="width: 100%;">
+ <el-radio
+ v-for="dict in dict.type.sys_normal_disable"
+ :key="dict.value"
+ :label="dict.value"
+ >{{dict.label}}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
@@ -346,6 +378,7 @@
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import {getAreaList, getTrainPage} from "@/api/coalMine/placeManage/train";
export default {
name: "User",
@@ -381,6 +414,8 @@
dateRange: [],
// 岗位选项
postOptions: [],
+ sectionOptions: [],
+ areaList: [],
// 角色选项
roleOptions: [],
// 表单参数
@@ -413,11 +448,12 @@
status: undefined,
deptId: undefined
},
+ showInstitutuion: false,
// 列信息
columns: [
{ key: 0, label: `用户编号`, visible: true },
- { key: 1, label: `用户名称`, visible: true },
- { key: 2, label: `用户昵称`, visible: true },
+ { key: 1, label: `用户名`, visible: true },
+ { key: 2, label: `真实姓名`, visible: true },
{ key: 3, label: `部门`, visible: true },
{ key: 4, label: `手机号码`, visible: true },
{ key: 5, label: `状态`, visible: true },
@@ -426,11 +462,17 @@
// 表单校验
rules: {
userName: [
- { required: true, message: "用户名称不能为空", trigger: "blur" },
- { min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' }
+ { required: true, message: "用户名不能为空", trigger: "blur" },
+ { min: 2, max: 20, message: '用户名长度必须介于 2 和 20 之间', trigger: 'blur' }
],
nickName: [
- { required: true, message: "用户昵称不能为空", trigger: "blur" }
+ { required: true, message: "真实姓名不能为空", trigger: "blur" }
+ ],
+ roleIds: [
+ { required: true, message: "角色不能为空", trigger: "blur" }
+ ],
+ institutionIds: [
+ { required: true, message: "所属机构不能为空", trigger: "blur" }
],
password: [
{ required: true, message: "用户密码不能为空", trigger: "blur" },
@@ -462,17 +504,19 @@
created() {
this.getList();
this.getDeptTree();
- this.getConfigKey("sys.user.initPassword").then(response => {
- this.initPassword = response.msg;
- });
+ this.getArea()
+ // this.getConfigKey("sys.user.initPassword").then(response => {
+ // console.log(response,55)
+ // this.initPassword = response.msg;
+ // })
},
methods: {
/** 查询用户列表 */
getList() {
this.loading = true;
listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
- this.userList = response.rows;
- this.total = response.total;
+ this.userList = response.rows
+ this.total = response.total
this.loading = false;
}
);
@@ -518,12 +562,14 @@
nickName: undefined,
password: undefined,
phonenumber: undefined,
+ idCard: undefined,
email: undefined,
sex: undefined,
status: "0",
remark: undefined,
postIds: [],
- roleIds: []
+ roleIds: [],
+ institutionIds: []
};
this.resetForm("form");
},
@@ -540,6 +586,49 @@
this.$refs.tree.setCurrentKey(null);
this.handleQuery();
},
+ getSections(val){
+ this.sectionOptions = []
+ if(val.indexOf(100)>-1 && val.indexOf(102)>-1){
+ this.getSectionList()
+ this.showInstitutuion = true
+ }else if(val.indexOf(100)>-1 && val.indexOf(102) == -1){
+ this.getSectionList(0)
+ this.showInstitutuion = true
+ }else if(val.indexOf(100) == -1 && val.indexOf(102) > -1){
+ this.getSectionList(1)
+ this.showInstitutuion = true
+ }else{
+ this.sectionOptions = []
+ this.showInstitutuion = false
+ }
+ },
+
+ async getSectionList(type) {
+ this.loading = true;
+ const param = {
+ isCm: type,
+ pageNum: 1,
+ pageSize: 999
+ }
+ const res = await getTrainPage(param);
+ if(res.code == 200) {
+ this.sectionOptions = res.rows;
+ }else {
+ this.$message({
+ message: res.msg,
+ type: 'warning'
+ })
+ }
+ this.loading = false;
+ },
+
+ async getArea() {
+ const res = await getAreaList();
+ if(res.code == 200) {
+ this.areaList = res.data;
+ }
+ },
+
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.userId);
@@ -567,7 +656,7 @@
this.roleOptions = response.roles;
this.open = true;
this.title = "添加用户";
- this.form.password = this.initPassword;
+ // this.form.password = this.initPassword;
});
},
/** 修改按钮操作 */
@@ -583,6 +672,11 @@
this.open = true;
this.title = "修改用户";
this.form.password = "";
+ if(response.roleIds.indexOf(100)>-1 || response.roleIds.indexOf(102)>-1){
+ this.getSectionList()
+ this.showInstitutuion = true
+ this.form.institutionIds = response.data.institutions.map(i=>i.institutionId.toString())
+ }
});
},
/** 重置密码按钮操作 */
@@ -608,6 +702,7 @@
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
+ console.log(this.form,'form')
if (this.form.userId != undefined) {
updateUser(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
@@ -616,9 +711,9 @@
});
} else {
addUser(this.form).then(response => {
- this.$modal.msgSuccess("新增成功");
- this.open = false;
- this.getList();
+ this.$modal.msgSuccess("新增成功")
+ this.open = false
+ this.getList()
});
}
}
diff --git a/src/views/system/user/profile/index.vue b/src/views/system/user/profile/index.vue
index 4b6c0e1..d49c290 100644
--- a/src/views/system/user/profile/index.vue
+++ b/src/views/system/user/profile/index.vue
@@ -12,7 +12,7 @@
</div>
<ul class="list-group list-group-striped">
<li class="list-group-item">
- <svg-icon icon-class="user" />用户名称
+ <svg-icon icon-class="user" />用户名
<div class="pull-right">{{ user.userName }}</div>
</li>
<li class="list-group-item">
diff --git a/src/views/system/user/profile/userInfo.vue b/src/views/system/user/profile/userInfo.vue
index c09a20b..c027c2d 100644
--- a/src/views/system/user/profile/userInfo.vue
+++ b/src/views/system/user/profile/userInfo.vue
@@ -1,8 +1,8 @@
<template>
<el-form ref="form" :model="user" :rules="rules" label-width="80px">
- <el-form-item label="用户昵称" prop="nickName">
+ <el-form-item label="真实姓名" prop="nickName">
<el-input v-model="user.nickName" maxlength="30" />
- </el-form-item>
+ </el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="user.phonenumber" maxlength="11" />
</el-form-item>
@@ -36,7 +36,7 @@
// 表单校验
rules: {
nickName: [
- { required: true, message: "用户昵称不能为空", trigger: "blur" }
+ { required: true, message: "真实姓名不能为空", trigger: "blur" }
],
email: [
{ required: true, message: "邮箱地址不能为空", trigger: "blur" },
--
Gitblit v1.9.2