| | |
| | | // 获取icon |
| | | async getIcon() { |
| | | let result; |
| | | const pic = JSON.parse(localStorage.getItem('pic')); |
| | | const pic = JSON.parse(sessionStorage.getItem('pic')); |
| | | if (pic) { |
| | | result = pic; |
| | | console.log('缓存') |
| | |
| | | method: 'get', |
| | | url: 'sccg/system/portal/logo/search', |
| | | }).then(res => { |
| | | console.log(res); |
| | | result = res.data; |
| | | localStorage.setItem('pic',JSON.stringify(result)); |
| | | sessionStorage.setItem('pic',JSON.stringify(result)); |
| | | }) |
| | | } |
| | | return result; |
| | |
| | | <el-menu-item index="/home/system/role">角色管理列表</el-menu-item> |
| | | </el-submenu> --> |
| | | <!-- 权限管理 --> |
| | | <el-menu-item index="/home/system/authority">权限管理</el-menu-item> |
| | | <!-- <el-menu-item index="/home/system/authority">权限管理</el-menu-item> --> |
| | | <!-- <el-submenu index="/home/system/base/authority" class="thirdMenu"> |
| | | <template slot="title"> |
| | | <span class="thirdSpan">权限管理</span> |
| | |
| | | }, |
| | | ...mapActions(["login"]), |
| | | handleLogin() { |
| | | console.log("in login"); |
| | | const { username, password } = this.loginForm; |
| | | const that = this; |
| | | this.$axios |
New file |
| | |
| | | <template> |
| | | <div class="dataView"> |
| | | 111 |
| | | </div> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | |
| | | } |
| | | }, |
| | | props:{ |
| | | viewData:Object, |
| | | default:{}, |
| | | }, |
| | | created(){ |
| | | console.log(this.viewData); |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <!-- 组件区 --> |
| | | <div class="dialog"> |
| | | <el-dialog v-if="visible" :visible.async="visible" title="问题登记" width="60%" :before-close="handleClose"> |
| | | <checkIn></checkIn> |
| | | <MyView :viewData=showData /> |
| | | </el-dialog> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import MyTable from '@/components/Table' |
| | | import MyView from './components/dataView' |
| | | export default { |
| | | components: { |
| | | MyTable, |
| | | MyTable,MyView |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | }, |
| | | ] |
| | | }, |
| | | visible:false |
| | | visible:false, |
| | | showData:{}, |
| | | } |
| | | }, |
| | | methods:{ |
| | |
| | | // 获取操作结果 |
| | | changeDialog({index,mykey}){ |
| | | console.log(index,mykey); |
| | | this.showData = this.list[index]; |
| | | this.visible = true; |
| | | } |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <div class="createUser"> |
| | | <!-- <header> |
| | | <div class="headerTitle">新增部门信息</div> |
| | | <div class="headerTip"> |
| | | <label>x</label> |
| | | </div> |
| | | </header> --> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" autoComplete="on" :model="depart" :rules="createDepartRules" |
| | |
| | | <!-- 上级部门 --> |
| | | <el-form-item class="optionItems" label="上级部门:" prop="parentId"> |
| | | <el-select v-model="depart.parentId" placeholder="请输入上级部门"> |
| | | <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value" |
| | | <el-option v-for="item in departList" :key="item.departName" :label="item.departName" :value="item.id" |
| | | :disabled="item.disabled"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 部门类型 --> |
| | | <el-form-item class="optionItem" label="部门类型:" prop="departType"> |
| | | <el-select v-model="depart.departType" placeholder="请选择部门类型"> |
| | | <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value" |
| | | :disabled="item.disabled"> |
| | | </el-option> |
| | | </el-select> |
| | | <el-input v-model="depart.departType" placeholder="请选择部门类型"></el-input> |
| | | </el-form-item> |
| | | <!--添加人员 --> |
| | | <el-form-item class="optionItem" label="添加人员:"> |
| | |
| | | </el-form-item> |
| | | <!-- 部门描述 --> |
| | | <el-form-item class="optionItem" label="部门描述:" prop="departDes"> |
| | | <el-input v-model="depart.departDes" placeholder="请输入部门描述"></el-input> |
| | | <el-input type="textarea" v-model="depart.departDes" placeholder="请输入部门描述"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </main> |
| | | <footer> |
| | | <div class="optionBtn"> |
| | | <el-button>取消</el-button> |
| | | <el-button type="primary" class="btn submit" @click="handleUser">确定</el-button> |
| | | </div> |
| | | <el-button>取消</el-button> |
| | | <el-button type="primary" class="btn submit" @click="handleUser">确定</el-button> |
| | | </div> |
| | | </footer> |
| | | </div> |
| | | </template> |
| | |
| | | data() { |
| | | const validateNickname = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写用户名称")); |
| | | callback(new Error("请填写部门名称")); |
| | | }else{ |
| | | callback(); |
| | | } |
| | | }; |
| | | const validatePass = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | callback(); |
| | | } else { |
| | | const rep = /^\w+$/; |
| | | if (!rep.test(value)) { |
| | | callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串")); |
| | | } |
| | | } |
| | | }; |
| | | const validateTruename = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写用户姓名")); |
| | | } else { |
| | | const rep = /^[\u4E00-\u9FA5]{2,4}$/; |
| | | if (!rep.test(value)) { |
| | | callback("请输入正确的用户姓名"); |
| | | } |
| | | callback(); |
| | | } |
| | | }; |
| | | const validatePhone = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写手机号码")); |
| | | callback(); |
| | | } else { |
| | | const rep = /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/ |
| | | if (!rep.test(value)) { |
| | | callback("请输入正确的手机号码"); |
| | | } |
| | | // const rep = /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/ |
| | | // if (!rep.test(value)) { |
| | | // callback("请输入正确的手机号码"); |
| | | // } |
| | | callback(); |
| | | } |
| | | }; |
| | | return { |
| | |
| | | { required: false, trigger: "blur" }, |
| | | ], |
| | | }, |
| | | roleList: [ |
| | | { name: '角色1', value: 1 }, { name: '角色2', value: 2 } |
| | | ], |
| | | typeList: [] |
| | | typeList: [], |
| | | departList: [], |
| | | } |
| | | }, |
| | | created() { |
| | | const that = this; |
| | | // 获取角色列表 |
| | | // this.$axios.get('') |
| | | // 获取用户类型列表 |
| | | // this.$axios.get('sccg/admin/list',{userType:0}).then(res=>{ |
| | | // console.log(res); |
| | | // }) |
| | | // 获取全部部门列表 |
| | | // 获取部门树形结构图 |
| | | this.getDepartTree(); |
| | | // 获取全部部门列表 |
| | | // this.$axios.get('sccg/depart/page').then(res => { |
| | | // that.typeList = res.data.records; |
| | | // that.departList = res.data.records; |
| | | // }) |
| | | }, |
| | | methods: { |
| | | handleUser() { |
| | | const { depart } = this; |
| | | console.log(depart); |
| | | this.$axios.post('/sccg/depart/create', { |
| | | departName: depart.departName, |
| | | parentId: depart.parentId, departType: depart.departType, departDes: depart.departDes |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.refresh(); |
| | | this.$refs.user.validate((valid) => { |
| | | if (valid) { |
| | | const { depart } = this; |
| | | console.log(depart); |
| | | this.$axios.post('/sccg/depart/create', { |
| | | departName: depart.departName, |
| | | parentId: depart.parentId, departType: depart.departType, departDes: depart.departDes |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | message:res.message, |
| | | type:'success' |
| | | }) |
| | | this.refresh(); |
| | | }else if(res.code ===2001){ |
| | | this.$message({ |
| | | message:res.message, |
| | | type:'error' |
| | | }) |
| | | this.refresh(); |
| | | } |
| | | }) |
| | | }else{ |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | // 获取部门树形结构图 |
| | | getDepartTree(){ |
| | | this.$axios({ |
| | | method:'get', |
| | | url:'sccg/depart/tree', |
| | | }) |
| | | .then(res=>{ |
| | | res.data.unshift({id:0,departName:'一级菜单栏'}) |
| | | this.departList = res.data; |
| | | console.log(res); |
| | | }) |
| | | } |
| | | }, |
| | |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | // header { |
| | | // display: flex; |
| | | // justify-content: space-between; |
| | | // height: 60px; |
| | | // line-height: 60px; |
| | | // padding: 0 20px; |
| | | // border: 1px solid #fff; |
| | | |
| | | // .headerTitle { |
| | | // color: #4b9bb7; |
| | | // font-weight: 600; |
| | | // } |
| | | |
| | | // .headerTip span { |
| | | // color: #ff3b6c; |
| | | // } |
| | | |
| | | // .headerTip label { |
| | | // color: #4b9bb7; |
| | | // } |
| | | // } |
| | | |
| | | main { |
| | | // border: 1px solid #fff; |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | &::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | .addPerson{ |
| | | |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | .addPerson { |
| | | display: flex; |
| | | list-style: none; |
| | | padding:0; |
| | | li{ |
| | | padding: 0; |
| | | |
| | | li { |
| | | background-color: #cccccc; |
| | | width: 36px; |
| | | height: 36px; |
| | |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | |
| | | |
| | | } |
| | | } |
| | | footer{ |
| | | |
| | | footer { |
| | | border-top: 1px solid #fff; |
| | | height: 80px; |
| | | display: flex; |
| | |
| | | <span>筛选条件:</span> |
| | | <el-input v-model="context" placeholder="请输入内容"></el-input> |
| | | <div class="findBtn"> |
| | | <el-button type="primary" @click="search()" >查询</el-button> |
| | | <el-button type="primary" @click="search()">查询</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="addUser"> |
| | | <el-button class="addBtn" type="primary" @click="dialogCreate = true">新增部门</el-button> |
| | | <el-dialog :visible.sync="dialogCreate" title="新增部门信息" width="45%" v-if="dialogCreate"> |
| | | <createUser :refresh="getUserList" /> |
| | | <createUser :refresh="context==='' ? getUserList : search " /> |
| | | </el-dialog> |
| | | </div> |
| | | </div> |
| | |
| | | :data="tableData" style="width: 100%" :row-class-name="tableRowClassName"> |
| | | <el-table-column type="selection" min-width="5"> |
| | | </el-table-column> |
| | | <el-table-column prop="id" label="部门ID" min-width="5"> |
| | | <el-table-column prop="id" label="部门ID" min-width="5"> |
| | | <!-- <template slot-scope="scope">{{ scope.row.id }}</template> --> |
| | | </el-table-column> |
| | | <el-table-column prop="departName" label="部门名称" min-width="10"> |
| | |
| | | <span class="line">|</span> |
| | | <!-- <span>修改密码</span> --> |
| | | <!-- <span>删除</span> --> |
| | | <span @click="handleUpdate(scope.row)">修改部门</span> |
| | | <span @click="handleUpdate(scope.row)">修改</span> |
| | | <span class="line">|</span> |
| | | <span @click="handleDelete(scope.row)">删除</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- 查看修改页面 --> |
| | | <el-dialog :visible.sync="dialogUpdate" width="45%" :title="updateFlag ? '修改部门信息' :'查看部门信息'" v-if="dialogUpdate"> |
| | | <updateUser :updateFlag="updateFlag" :userInfo="userInfo" :getUserList="getUserList" @changeDialog="changMyDialog" /> |
| | | <el-dialog :visible.sync="dialogUpdate" width="45%" :title="updateFlag ? '修改部门信息' :'查看部门信息'" |
| | | v-if="dialogUpdate"> |
| | | <updateUser :updateFlag="updateFlag" :userInfo="userInfo" :getUserList="context==='' ? getUserList : search" |
| | | @changeDialog="changMyDialog" /> |
| | | </el-dialog> |
| | | <!-- 分页 --> |
| | | <div class="pagination"> |
| | |
| | | totalNum: 200, |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | context:'' |
| | | context: '' |
| | | } |
| | | }, |
| | | created() { |
| | | this.getUserList(); |
| | | }, |
| | | methods: { |
| | | handleDelete({ id }) { |
| | | this.$confirm('确认删除?') |
| | | .then(_ => { |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/depart/delete', |
| | | data: { |
| | | id |
| | | } |
| | | }) |
| | | .then(res => { |
| | | console.log(res); |
| | | this.$message({ |
| | | type: res.code===404 ? 'warning':'success', |
| | | message: res.message |
| | | }) |
| | | |
| | | this.getUserList(); |
| | | }) |
| | | }) |
| | | .catch(_ => {}); |
| | | }, |
| | | // 修改角色 |
| | | handleChangeRole(obj) { |
| | | this.dialogUpdate = true |
| | |
| | | let { id, status } = obj; |
| | | status == true ? status = 1 : status = 0; |
| | | console.log(id, status); |
| | | this.$axios.post(`sccg/depart/status` ,{id:id,status:status}).then(res => { |
| | | this.$axios.post(`sccg/depart/status`, { id: id, status: status }).then(res => { |
| | | console.log(res); |
| | | }) |
| | | }, |
| | |
| | | const that = this; |
| | | this.dialogCreate = false; |
| | | // 获取所有用户信息 |
| | | this.$axios.get('sccg/depart/page',{params:{currentPage:this.currentPage,pageSize:this.pageSize,departName:this.context}}).then(res => { |
| | | this.$axios.get('sccg/depart/page', { params: { currentPage: this.currentPage, pageSize: this.pageSize, departName: this.context } }).then(res => { |
| | | if (res.code === 200) { |
| | | res.data.records.forEach(item => { |
| | | item.createTime = helper(item.createTime); |
| | | item.status == 1 ? item.status = true : item.status = false; |
| | | }) |
| | | that.totalNum = res.data.records.length; |
| | | that.tableData = res.data.records.slice((that.currentPage-1)*10,that.currentPage*10) |
| | | that.tableData = res.data.records.slice((that.currentPage - 1) * this.pageSize, that.currentPage * this.pageSize) |
| | | } |
| | | }) |
| | | }, |
| | |
| | | this.userInfo = rowData |
| | | }, |
| | | // 当前页改变触发事件 |
| | | changeCurrentPage(page){ |
| | | changeCurrentPage(page) { |
| | | this.currentPage = page; |
| | | this.search(); |
| | | }, |
| | | // 上一页点击事件 |
| | | handlePrev(page){ |
| | | handlePrev(page) { |
| | | this.currentPage = page; |
| | | this.search(); |
| | | }, |
| | | // 下一页点击事件 |
| | | handleNext(page){ |
| | | handleNext(page) { |
| | | this.currentPage = page; |
| | | this.search(); |
| | | }, |
| | | // 关闭dialog |
| | | changMyDialog(val){ |
| | | // 关闭dialog |
| | | changMyDialog(val) { |
| | | this.dialogUpdate = val.dialogFlag; |
| | | } |
| | | }, |
| | |
| | | &::v-deep .el-dialog__body { |
| | | background-color: #06122c; |
| | | } |
| | | &::v-deep .el-dialog__header{ |
| | | |
| | | &::v-deep .el-dialog__header { |
| | | display: flex; |
| | | align-items: center; |
| | | background-color: #fff; |
| | | padding: 20px; |
| | | line-height: 60px; |
| | | } |
| | | &::v-deep .el-dialog__title{ |
| | | |
| | | &::v-deep .el-dialog__title { |
| | | color: #4b9bb7; |
| | | } |
| | | &::v-deep .el-dialog__close{ |
| | | |
| | | &::v-deep .el-dialog__close { |
| | | width: 20px; |
| | | height: 20px; |
| | | // color: #fff; |
| | | } |
| | | &::v-deep .el-dialog__body{ |
| | | |
| | | &::v-deep .el-dialog__body { |
| | | padding: 0; |
| | | } |
| | | } |
| | |
| | | <!-- 上级部门 --> |
| | | <el-form-item class="optionItems" label="上级部门:" prop="parentId"> |
| | | <el-select v-model="user.parentId" placeholder="请选择上级部门" :disabled="!updateFlag"> |
| | | <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value"> |
| | | <el-option v-for="item in typeList" :key="item.departName" :label="item.departName" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | const validateNickname = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写部门名称")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateId = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写部门id")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | } |
| | | const validatePass = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | callback(); |
| | | } else { |
| | | const rep = /^\w+$/; |
| | | if (!rep.test(value)) { |
| | | callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串")); |
| | | } |
| | | callback(); |
| | | // const rep = /^\w+$/; |
| | | // if (!rep.test(value)) { |
| | | // callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串")); |
| | | // } |
| | | } |
| | | }; |
| | | const validatePhone = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写手机号码")); |
| | | callback(); |
| | | } else { |
| | | const rep = /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/ |
| | | if (!rep.test(value)) { |
| | | callback("请输入正确的手机号码"); |
| | | } |
| | | callback(); |
| | | // const rep = /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/ |
| | | // if (!rep.test(value)) { |
| | | // callback("请输入正确的手机号码"); |
| | | // } |
| | | } |
| | | }; |
| | | return { |
| | |
| | | }, |
| | | methods: { |
| | | handleUser() { |
| | | const { user } = this; |
| | | const that = this; |
| | | this.$axios.post('sccg/depart/update', { |
| | | id: user.id, |
| | | departName: user.departName, |
| | | parentId: user.parentId, |
| | | departDes: user.departDes |
| | | }).then(res => { |
| | | this.$emit('changeDialog',{dialogUpdate:false}); |
| | | this.getUserList(); |
| | | this.$refs['user'].validate((valid) => { |
| | | if (valid) { |
| | | const { user } = this; |
| | | this.$axios.post('sccg/depart/update', { |
| | | id: user.id, |
| | | departName: user.departName, |
| | | parentId: user.parentId, |
| | | departDes: user.departDes |
| | | }).then(res => { |
| | | console.log(res); |
| | | this.$message({ |
| | | message:res.message, |
| | | type:res.code === 200 ? 'success' : 'warning', |
| | | }) |
| | | this.$emit('changeDialog', { dialogUpdate: false }); |
| | | this.getUserList(); |
| | | }) |
| | | } else { |
| | | return false; |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | |
| | | <template> |
| | | <div class="createUser"> |
| | | <!-- <header> |
| | | <div class="headerTitle">新增角色</div> |
| | | <div class="headerTip"> |
| | | <label>x</label> |
| | | </div> |
| | | </header> --> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" autoComplete="on" :model="role" :rules="createRoleRules" |
| | |
| | | </el-form-item> |
| | | <!-- 角色类型 --> |
| | | <el-form-item class="optionItems" label="角色类型:" prop="status"> |
| | | <el-select v-model="role.type" placeholder="请选择角色类型"> |
| | | <el-input v-model="role.type" placeholder="请选择角色类型"></el-input> |
| | | <!-- <el-select v-model="role.type" placeholder="请选择角色类型"> |
| | | <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value" |
| | | :disabled="item.disabled"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-select> --> |
| | | </el-form-item> |
| | | <!-- 角色描述 --> |
| | | <el-form-item class="optionItem" label="角色描述:" prop="description"> |
| | | <el-input v-model="role.description" placeholder="请输入描述内容200字以内"></el-input> |
| | | <el-input type="textarea" v-model="role.description" placeholder="请输入描述内容200字以内"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <div class="optionBtn"> |
| | | <el-button class="btn cancel" >取消</el-button> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">提交</el-button> |
| | | <el-button class="btn cancel" @click="handleStop">取消</el-button> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">提交 |
| | | </el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | data() { |
| | | const validateNickname = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写用户名称")); |
| | | callback(new Error("请填写角色名称")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validatePass = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | callback(); |
| | | } else { |
| | | const rep = /^\w+$/; |
| | | if (!rep.test(value)) { |
| | | callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串")); |
| | | } |
| | | // const rep = /^\w+$/; |
| | | // if (!rep.test(value)) { |
| | | // callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串")); |
| | | // } |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateTruename = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写用户姓名")); |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | const rep = /^[\u4E00-\u9FA5]{2,4}$/; |
| | | if (!rep.test(value)) { |
| | | callback("请输入正确的用户姓名"); |
| | | } |
| | | // const rep = /^[\u4E00-\u9FA5]{2,4}$/; |
| | | // if (!rep.test(value)) { |
| | | // callback("请输入正确的用户姓名"); |
| | | // } |
| | | callback(); |
| | | } |
| | | }; |
| | | return { |
| | | role: { |
| | | name: '', |
| | | type: '', |
| | | status: '', |
| | | description: '', |
| | | }, |
| | | createRoleRules: { |
| | | name: [ |
| | | { required: true, trigger: "blur", validator: validateNickname }, |
| | | ], |
| | | status: [ |
| | | type: [ |
| | | { required: false, trigger: "blur", validator: validatePass }, |
| | | ], |
| | | description: [ |
| | | { required: false, trigger: "blur", validator: validateTruename }, |
| | | ], |
| | | }, |
| | | roleList: [ |
| | | { name: '角色1', value: 1 }, { name: '角色2', value: 2 } |
| | | ], |
| | | typeList: [] |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | // console.log(res); |
| | | // }) |
| | | // 获取全部部门列表 |
| | | this.$axios.get('sccg/depart/page').then(res => { |
| | | that.typeList = res.data.records; |
| | | }) |
| | | // this.$axios.get('sccg/depart/page').then(res => { |
| | | // that.typeList = res.data.records; |
| | | // }) |
| | | }, |
| | | methods: { |
| | | handleUser() { |
| | | const { role } = this; |
| | | console.log(role); |
| | | this.$axios.post('sccg/role/create', { |
| | | description:role.description,name:role.name,type:role.type |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.refresh(); |
| | | this.$refs['user'].validate((valid) => { |
| | | console.log(valid); |
| | | if (valid) { |
| | | const { role } = this; |
| | | console.log(role); |
| | | this.$axios.post('sccg/role/create', { |
| | | description: role.description, name: role.name, type: role.type |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.refresh(); |
| | | } |
| | | }) |
| | | } else { |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | handleStop(){ |
| | | this.refresh(); |
| | | } |
| | | }, |
| | | props: ['refresh'] |
| | |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | // header { |
| | | // display: flex; |
| | | // justify-content: space-between; |
| | | // height: 60px; |
| | | // line-height: 60px; |
| | | // padding: 0 20px; |
| | | // border: 1px solid #fff; |
| | | |
| | | // .headerTitle { |
| | | // color: #4b9bb7; |
| | | // font-weight: 600; |
| | | // } |
| | | |
| | | // .headerTip span { |
| | | // color: #ff3b6c; |
| | | // } |
| | | |
| | | // .headerTip label { |
| | | // color: #4b9bb7; |
| | | // } |
| | | // } |
| | | |
| | | main { |
| | | // border: 1px solid #fff; |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | &::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | |
| | | </el-table-column> --> |
| | | <el-table-column prop="name" label="角色名称" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="username" label="角色类型" min-width="10"> |
| | | <el-table-column prop="sort" label="角色类型" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="mobile" label="默认角色" min-width="10"> |
| | | <el-table-column prop="adminCount" label="默认角色" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="description" label="备注" min-width="10"> |
| | | </el-table-column> |
| | |
| | | <span class="line">|</span> |
| | | <!-- <span>修改密码</span> --> |
| | | <!-- <span>删除</span> --> |
| | | <span @click="handleUpdate(scope.row)">修改角色</span> |
| | | <span @click="handleUpdate(scope.row)">权限设置</span> |
| | | <span class="line">|</span> |
| | | <span @click="handleStop(scope.row)">停用</span> |
| | | <span class="line">|</span> |
| | | <span @click="handleDelete(scope.row)">删除</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- 查看修改页面 --> |
| | | <el-dialog :visible.sync="dialogUpdate" width="45%" :title="updateFlag ? '修改角色信息' :'查看角色信息'" v-if="dialogUpdate"> |
| | | <updateUser :updateFlag="updateFlag" :userInfo=userInfo :getUserList=getUserList @changeDialog="changeDialog" /> |
| | | <el-dialog :visible.sync="dialogUpdate" width="45%" :title="updateFlag ? '权限设置' :'查看角色信息'" |
| | | v-if="dialogUpdate"> |
| | | <updateUser :updateFlag="updateFlag" :userInfo=userInfo :getUserList=getUserList |
| | | @changeDialog="changeDialog" /> |
| | | </el-dialog> |
| | | <!-- 分页 --> |
| | | <div class="pagination"> |
| | |
| | | this.getUserList(); |
| | | }, |
| | | methods: { |
| | | handleDelete({ id }) { |
| | | const that = this; |
| | | let arr = []; |
| | | arr.push(id); |
| | | this.$confirm('确认删除?') |
| | | .then(_ => { |
| | | that.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/role/delete?ids=' + arr, |
| | | }) |
| | | .then(res => { |
| | | console.log(res); |
| | | this.$message({ |
| | | type: 'success', |
| | | message: res.message |
| | | }) |
| | | |
| | | this.getUserList(); |
| | | }) |
| | | }) |
| | | .catch(_ => { }); |
| | | }, |
| | | // 修改角色 |
| | | handleChangeRole(obj) { |
| | | this.dialogUpdate = true |
| | |
| | | console.log(res); |
| | | }) |
| | | }, |
| | | handleStop(obj) { |
| | | // let { id, status } = obj; |
| | | // status == true ? status = 1 : status = 0; |
| | | // console.log(id, status); |
| | | // this.$axios.post(`/sccg/role/updateStatus/` + id + '?status=' + status).then(res => { |
| | | // this.getUserList(); |
| | | // }) |
| | | }, |
| | | // 获取用户列表 |
| | | getUserList() { |
| | | const that = this; |
| | | this.dialogCreate = false; |
| | | // 获取所有用户信息 |
| | | this.$axios.get('sccg/role/listAll').then(res => { |
| | | console.log(res) |
| | | if (res.code === 200) { |
| | | res.data.forEach(item => { |
| | | item.createTime = helper(item.createTime); |
| | | item.status == 1 ? item.status = true : item.status = false; |
| | | }) |
| | | that.tableData = res.data |
| | | this.totalNum=res.data.length |
| | | } |
| | | this.totalNum = res.data.length; |
| | | this.search(); |
| | | }) |
| | | }, |
| | | search() { |
| | | const that = this; |
| | | const { currentPage, pageSize, context } = this; |
| | | this.dialogCreate = false; |
| | | // 获取所有用户信息 |
| | | this.$axios.get('sccg/role/list',{params:{pageNum:this.currentPage,pageSize:this.pageSize,keyword:this.context}}).then(res => { |
| | | if (res.code === 200) { |
| | | res.data.list.forEach(item => { |
| | | item.createTime = helper(item.createTime); |
| | | item.status == 1 ? item.status = true : item.status = false; |
| | | }) |
| | | this.totalNum=this. |
| | | this.totalNum=res.data.list.length |
| | | } |
| | | }) |
| | | if (context == '') { |
| | | this.$axios.get('sccg/role/list?keyword=' + '&pageNum=' + currentPage + '&pageSize=' + pageSize).then(res => { |
| | | if (res.code === 200) { |
| | | console.log(res); |
| | | res.data.list.forEach(item => { |
| | | item.createTime = helper(item.createTime); |
| | | item.status == 1 ? item.status = true : item.status = false; |
| | | }) |
| | | that.tableData = res.data.list |
| | | } |
| | | }) |
| | | } else { |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/role/list?keyword='+context + '&pageNum=' + currentPage + '&pageSize=' + pageSize, |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | console.log(2, res); |
| | | res.data.list.forEach(item => { |
| | | item.createTime = helper(item.createTime); |
| | | item.status == 1 ? item.status = true : item.status = false; |
| | | }) |
| | | that.tableData = res.data.list |
| | | this.totalNum = res.data.length; |
| | | } |
| | | }) |
| | | // this.$axios.get('sccg/role/list?'+context).then(res => { |
| | | // if (res.code === 200) { |
| | | // console.log(2,res); |
| | | // res.data.list.forEach(item => { |
| | | // item.createTime = helper(item.createTime); |
| | | // item.status == 1 ? item.status = true : item.status = false; |
| | | // }) |
| | | // that.tableData = res.data.list |
| | | // } |
| | | // }) |
| | | } |
| | | }, |
| | | // 设置表格斑马纹 |
| | | tableRowClassName({ row, rowIndex }) { |
| | |
| | | this.currentPage = page; |
| | | this.search(); |
| | | }, |
| | | // 用户查询(暂时支持电话号码) |
| | | handlePhone() { |
| | | const { search, getUserList } = this; |
| | | const that = this; |
| | | if (search == '') { |
| | | getUserList(); |
| | | return; |
| | | } |
| | | this.dialogCreate = false; |
| | | // 获取所有用户信息 |
| | | this.$axios.get(`sccg/admin/list?mobile=${search}`).then(res => { |
| | | if (res.code === 200) { |
| | | res.data.records.forEach(item => { |
| | | item.createTime = helper(item.createTime); |
| | | item.status == 1 ? item.status = true : item.status = false; |
| | | }) |
| | | that.totalNum = res.data.records.length; |
| | | that.tableData = res.data.records.slice((that.currentPage - 1) * 10, that.currentPage * 10) |
| | | } |
| | | }) |
| | | }, |
| | | changeDialog(val){ |
| | | changeDialog(val) { |
| | | this.dialogUpdate = val.dialogUpdate; |
| | | console.log(val); |
| | | } |
| | |
| | | &::v-deep .el-dialog__body { |
| | | background-color: #06122c; |
| | | } |
| | | &::v-deep .el-dialog__header{ |
| | | |
| | | &::v-deep .el-dialog__header { |
| | | display: flex; |
| | | align-items: center; |
| | | background-color: #fff; |
| | | padding: 20px; |
| | | line-height: 60px; |
| | | } |
| | | &::v-deep .el-dialog__title{ |
| | | |
| | | &::v-deep .el-dialog__title { |
| | | color: #4b9bb7; |
| | | } |
| | | &::v-deep .el-dialog__close{ |
| | | |
| | | &::v-deep .el-dialog__close { |
| | | width: 20px; |
| | | height: 20px; |
| | | // color: #fff; |
| | | } |
| | | &::v-deep .el-dialog__body{ |
| | | |
| | | &::v-deep .el-dialog__body { |
| | | padding: 0; |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <div class="updateUser"> |
| | | <!-- <header> |
| | | <div class="headerTitle">{{updateFlag ? '修改角色信息' :'查看角色信息'}}</div> |
| | | </header> --> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" autoComplete="on" :model="role" :rules="createRoleRules" |
| | |
| | | <el-input v-model="role.name" placeholder="请填写角色名称" :disabled="!updateFlag"></el-input> |
| | | </el-form-item> |
| | | <!-- 角色类型 --> |
| | | <el-form-item class="optionItems" label="角色类型:" prop="status"> |
| | | <el-select v-model="role.status" placeholder="请选择角色类型" :disabled="!updateFlag"> |
| | | <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value" |
| | | :disabled="item.disabled"> |
| | | </el-option> |
| | | </el-select> |
| | | <el-form-item class="optionItems" label="角色类型:" prop="sort"> |
| | | <el-input v-model="role.sort" placeholder="请选择角色类型" :disabled="!updateFlag"></el-input> |
| | | </el-form-item> |
| | | <!-- 角色描述 --> |
| | | <el-form-item class="optionItem" label="角色描述:" prop="description"> |
| | | <el-input v-model="role.description" placeholder="请输入描述内容200字以内" :disabled="!updateFlag"></el-input> |
| | | <el-input type="textarea" v-model="role.description" placeholder="请输入描述内容200字以内" |
| | | :disabled="!updateFlag"></el-input> |
| | | </el-form-item> |
| | | <el-form-item v-if="updateFlag"> |
| | | <div class="optionBtn"> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">确认</el-button> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">确认 |
| | | </el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | data() { |
| | | const validateNickname = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写用户名称")); |
| | | callback(new Error("请填写角色名称")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validatePass = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | callback(); |
| | | } else { |
| | | const rep = /^\w+$/; |
| | | if (!rep.test(value)) { |
| | | callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串")); |
| | | } |
| | | // const rep = /^\w+$/; |
| | | // if (!rep.test(value)) { |
| | | // callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串")); |
| | | // } |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateTruename = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写用户姓名")); |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | const rep = /^[\u4E00-\u9FA5]{2,4}$/; |
| | | if (!rep.test(value)) { |
| | | callback("请输入正确的用户姓名"); |
| | | } |
| | | // const rep = /^[\u4E00-\u9FA5]{2,4}$/; |
| | | // if (!rep.test(value)) { |
| | | // callback("请输入正确的用户姓名"); |
| | | // } |
| | | callback(); |
| | | } |
| | | }; |
| | | return { |
| | | role: { |
| | | id:'', |
| | | name: '', |
| | | status: '', |
| | | sort: '', |
| | | description: '', |
| | | }, |
| | | createRoleRules: { |
| | | name: [ |
| | | { required: true, trigger: "blur", validator: validateNickname }, |
| | | ], |
| | | status: [ |
| | | sort: [ |
| | | { required: false, trigger: "blur", validator: validatePass }, |
| | | ], |
| | | description: [ |
| | | { required: false, trigger: "blur", validator: validateTruename }, |
| | | ], |
| | | }, |
| | | roleList: [ |
| | | { name: '角色1', value: 1 }, { name: '角色2', value: 2 } |
| | | ], |
| | | typeList: [] |
| | | } |
| | | }, |
| | | created() { |
| | | const that = this; |
| | | this.userInfo.status ? this.userInfo.status = 1: this.userInfo.status = 0; |
| | | this.userInfo.status ? this.userInfo.status = 1 : this.userInfo.status = 0; |
| | | this.role = JSON.parse(JSON.stringify(that.userInfo)); |
| | | // 获取角色列表 |
| | | // this.$axios.get('') |
| | | // 获取用户类型列表 |
| | | // this.$axios.get('sccg/admin/list',{userType:0}).then(res=>{ |
| | | // console.log(res); |
| | | // }) |
| | | // 获取全部部门列表 |
| | | this.$axios.get('sccg/depart/page').then(res => { |
| | | that.typeList = res.data.records; |
| | | }) |
| | | console.log(this.role); |
| | | }, |
| | | methods: { |
| | | handleUser() { |
| | | const { role } = this; |
| | | this.$axios.post('/sccg/role/update/'+role.id, { |
| | | id:role.id, |
| | | status: role.status, |
| | | description:role.description, |
| | | name:role.name |
| | | }).then(res => { |
| | | this.$emit('changeDialog',{dialogUpdate:false}); |
| | | this.getUserList(); |
| | | this.$refs.user.validate((valid) => { |
| | | console.log(valid); |
| | | if (valid) { |
| | | const { role } = this; |
| | | this.$axios.post('/sccg/role/update/' + role.id, { |
| | | id: role.id, |
| | | status: role.status, |
| | | description: role.description, |
| | | name: role.name, |
| | | sort:role.sort |
| | | }).then(res => { |
| | | this.$emit('changeDialog', { dialogUpdate: false }); |
| | | this.getUserList(); |
| | | }) |
| | | } else { |
| | | return false; |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | props: ['userInfo', 'updateFlag','getUserList','changeDialog'] |
| | | props: ['userInfo', 'updateFlag', 'getUserList', 'changeDialog'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | // header { |
| | | // display: flex; |
| | | // justify-content: center; |
| | | // height: 60px; |
| | | // line-height: 60px; |
| | | // padding: 0 20px; |
| | | // border: 1px solid #fff; |
| | | // .headerTitle { |
| | | // color: #4b9bb7; |
| | | // font-weight: 600; |
| | | // } |
| | | |
| | | // .headerTip span { |
| | | // color: #ff3b6c; |
| | | // } |
| | | |
| | | // .headerTip label { |
| | | // color: #4b9bb7; |
| | | // } |
| | | // } |
| | | |
| | | main { |
| | | // border: 1px solid #fff; |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .updateUser::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | .updateUser::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | ::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | ::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="createUser"> |
| | | <!-- <header> |
| | | <div class="headerTitle">新增账户</div> |
| | | <div class="headerTip"> |
| | | <span>*</span> |
| | | <label>为必填项</label> |
| | | </div> |
| | | </header> --> |
| | | <main> |
| | | <!-- <div class="mainTitle">基础信息</div> --> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" autoComplete="on" :model="user" :rules="createUserRules" |
| | | label-position="right"> |
| | |
| | | <el-input v-model="user.email" placeholder="请填写邮箱地址"></el-input> |
| | | </el-form-item> |
| | | <!-- 选择角色 --> |
| | | <!-- <el-form-item class="optionItem" label="选择角色:" prop="role"> |
| | | <el-form-item class="optionItem" label="选择角色:" prop="role"> |
| | | <el-select v-model="user.role" placeholder="请选择所属角色"> |
| | | <el-option v-for="item in roleList" :key="item.name" :label="item.name" :value="item.value" |
| | | <el-option v-for="item in roleList" :key="item.id" :label="item.name" :value="item.id" |
| | | :disabled="item.disabled"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> --> |
| | | </el-form-item> |
| | | <!-- 用户类型 --> |
| | | <el-form-item class="optionItem" label="用户类型:" prop="userType"> |
| | | <el-select v-model="user.userType" placeholder="请选择用户类型"> |
| | | <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value" |
| | | <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id" |
| | | :disabled="item.disabled"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | <!-- 所属部门 --> |
| | | <el-form-item class="optionItem" label="所属部门:" prop="departmentId"> |
| | | <el-select v-model="user.departmentId" placeholder="请选择所属部门"> |
| | | <el-option v-for="item in typeList" :key="item.name" :label="item.departName" |
| | | <el-option v-for="item in departList" :key="item.name" :label="item.departName" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 当前职务 --> |
| | | <el-form-item class="optionItem" label="当前职务:" prop="jobTitle"> |
| | | <el-input v-model="user.work" placeholder="请输入当前职务" ></el-input> |
| | | <el-input v-model="user.jobTitle" placeholder="请输入当前职务"></el-input> |
| | | </el-form-item> |
| | | <!-- 填写所属mac地址 --> |
| | | <!-- <el-form-item class="optionItem" label="填写所属mac地址:" prop="mac"> |
| | | <el-form-item class="optionItem" label="填写所属mac地址:" prop="mac"> |
| | | <el-input v-model="user.mac" placeholder="请填写所属mac地址"></el-input> |
| | | </el-form-item> --> |
| | | </el-form-item> |
| | | <!-- 填写所属ip地址 --> |
| | | <!-- <el-form-item class="optionItem" label="填写所属ip地址:" prop="ip"> |
| | | <el-form-item class="optionItem" label="填写所属ip地址:" prop="ip"> |
| | | <el-input v-model="user.ip" placeholder="请填写所属ip地址"></el-input> |
| | | </el-form-item> --> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <div class="optionBtn"> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">提交</el-button> |
| | | <el-button class="btn reset">重置</el-button> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">提交 |
| | | </el-button> |
| | | <el-button class="btn reset">重置</el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | data() { |
| | | const validateNickname = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写用户名称")); |
| | | callback(new Error("用户名称不能为空")); |
| | | }else{ |
| | | callback(); |
| | | } |
| | | }; |
| | | const validatePass = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | callback(new Error("用户密码不能为空")); |
| | | } else { |
| | | const rep = /^\w+$/; |
| | | if (!rep.test(value)) { |
| | | callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串")); |
| | | }else{ |
| | | callback(); |
| | | } |
| | | } |
| | | }; |
| | | const validateTruename = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写用户姓名")); |
| | | callback(new Error("用户姓名不能为空")); |
| | | } else { |
| | | const rep = /^[\u4E00-\u9FA5]{2,4}$/; |
| | | if (!rep.test(value)) { |
| | | callback("请输入正确的用户姓名"); |
| | | }else{ |
| | | callback(); |
| | | } |
| | | } |
| | | }; |
| | | const validatePhone = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写手机号码")); |
| | | callback(new Error("手机号码不能为空")); |
| | | } else { |
| | | const rep = /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/ |
| | | if (!rep.test(value)) { |
| | | callback("请输入正确的手机号码"); |
| | | }else{ |
| | | callback(); |
| | | } |
| | | } |
| | | }; |
| | | const validateMail = (rule, value, callback) => { |
| | | if (value) { |
| | | const rep = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; |
| | | if (!rep.test(value)) { |
| | | callback(new Error("请输入正确的邮箱")) |
| | | } |
| | | } |
| | | }; |
| | | // const validateMail = (rule, value, callback) => { |
| | | // if (value) { |
| | | // const rep = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; |
| | | // if (!rep.test(value)) { |
| | | // callback(new Error("请输入正确的邮箱")) |
| | | // } |
| | | // } |
| | | // }; |
| | | const validateRole = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | callback(new Error("所属角色不能为空")); |
| | | } else { |
| | | callback(); |
| | | callback() |
| | | } |
| | | }; |
| | | const validateType = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | callback(new Error("用户类型不能为空")); |
| | | } else { |
| | | callback(); |
| | | callback() |
| | | } |
| | | }; |
| | | const validateDepartment = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | callback(new Error("请选择用户部门")); |
| | | } else { |
| | | callback(); |
| | | callback() |
| | | } |
| | | }; |
| | | const validateWork = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | callback(new Error("用户当前职务不能为空")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateMac = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateIp = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | // const validateMac = (rule, value, callback) => { |
| | | // if (value) { |
| | | // callback(new Error("")); |
| | | // }else{ |
| | | // callback() |
| | | // } |
| | | // }; |
| | | // const validateIp = (rule, value, callback) => { |
| | | // if (value) { |
| | | // }else{ |
| | | // callback() |
| | | // } |
| | | // }; |
| | | return { |
| | | user: { |
| | | nickName: '', |
| | | password: '', |
| | | username: '', |
| | | // gender: 1, |
| | | gender: 1, |
| | | isDy: 0, |
| | | mobile: '', |
| | | email: '', |
| | | // role: null, |
| | | role: null, |
| | | userType: null, |
| | | zj: { |
| | | areaNumber: '', |
| | |
| | | }, |
| | | departmentId: null, |
| | | jobTitle: null, |
| | | // mac: '', |
| | | // ip: '', |
| | | mac: '', |
| | | ip: '', |
| | | }, |
| | | createUserRules: { |
| | | nickName: [ |
| | |
| | | username: [ |
| | | { required: true, trigger: "blur", validator: validateTruename }, |
| | | ], |
| | | // gender: [ |
| | | // { required: true, trigger: "blur" }, |
| | | // ], |
| | | gender: [ |
| | | { required: true, trigger: "blur" }, |
| | | ], |
| | | isDy: [ |
| | | { required: true, trigger: "blur" }, |
| | | ], |
| | | mobile: [ |
| | | { required: true, trigger: "blur", validator: validatePhone }, |
| | | ], |
| | | email: [ |
| | | { required: false, trigger: "blur", validator: validateMail }, |
| | | ], |
| | | // role: [ |
| | | // { required: true, trigger: "blur", validator: validateRole }, |
| | | // email: [ |
| | | // { required: false, trigger: "blur", validator: validateMail }, |
| | | // ], |
| | | role: [ |
| | | { required: true, trigger: "change", validator: validateRole }, |
| | | ], |
| | | userType: [ |
| | | { required: true, trigger: "blur", validator: validateType }, |
| | | { required: true, trigger: "change", validator: validateType }, |
| | | ], |
| | | zj: [ |
| | | { required: false, trigger: "blur" }, |
| | | ], |
| | | departmentId: [ |
| | | { required: true, trigger: "blur", validator: validateDepartment }, |
| | | { required: true, trigger: "change", validator: validateDepartment }, |
| | | ], |
| | | jobTitle: [ |
| | | { required: true, trigger: "blur", validator: validateWork }, |
| | |
| | | // ], |
| | | }, |
| | | roleList: [ |
| | | { name: '角色1', value: 1 }, { name: '角色2', value: 2 } |
| | | { name: '角色1', id: 1 }, { name: '角色2', id: 2 } |
| | | ], |
| | | typeList: [] |
| | | typeList: [ |
| | | { name: '类型1', id: 1 }, { name: '类型2', id: 2 } |
| | | ], |
| | | departList: [] |
| | | } |
| | | }, |
| | | created() { |
| | | const that = this; |
| | | // 获取角色列表 |
| | | // this.$axios.get('') |
| | | // 获取用户类型列表 |
| | | // this.$axios.get('sccg/admin/list',{userType:0}).then(res=>{ |
| | | // console.log(res); |
| | | // }) |
| | | this.getRoleList(); |
| | | // 获取全部部门列表 |
| | | this.$axios.get('sccg/depart/page').then(res => { |
| | | that.typeList = res.data.records; |
| | | that.departList = res.data.records; |
| | | }) |
| | | }, |
| | | methods: { |
| | | handleUser() { |
| | | const { user } = this; |
| | | this.$axios.post('sccg/admin/register', { |
| | | departmentId: user.departmentId, |
| | | email: user.email, |
| | | jsDy: user.isDy, |
| | | jobTitle: user.jobTitle, |
| | | mobile: user.mobile, |
| | | nickName: user.nickName, |
| | | password: user.password, |
| | | userType: user.userType, |
| | | username: user.username, |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | console.log(1); |
| | | this.$emit('sendDialog',{flag:false}); |
| | | this.$refs['user'].validate((valid) => { |
| | | console.log(valid); |
| | | if (valid) { |
| | | const { user } = this; |
| | | console.log(user); |
| | | this.$axios.post('sccg/admin/register', { |
| | | departmentId: user.departmentId, |
| | | email: user.email, |
| | | jsDy: user.isDy, |
| | | jobTitle: user.jobTitle, |
| | | mobile: user.mobile, |
| | | nickName: user.nickName, |
| | | password: user.password, |
| | | userType: user.userType, |
| | | username: user.username, |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | console.log(1); |
| | | this.$emit('sendDialog', { flag: false }); |
| | | } |
| | | }) |
| | | }else{ |
| | | return false |
| | | } |
| | | }) |
| | | }, |
| | | // 获取角色列表 |
| | | getRoleList() { |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/role/listAll', |
| | | }) |
| | | .then(res => { |
| | | this.roleList = res.data; |
| | | }) |
| | | } |
| | | }, |
| | | props: ['sendDialog'] |
| | | } |
| | |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | // header { |
| | | // display: flex; |
| | | // justify-content: space-between; |
| | | // height: 60px; |
| | | // line-height: 60px; |
| | | // padding: 0 20px; |
| | | // border: 1px solid #fff; |
| | | |
| | | // .headerTitle { |
| | | // color: #4b9bb7; |
| | | // font-weight: 600; |
| | | // } |
| | | |
| | | // .headerTip span { |
| | | // color: #ff3b6c; |
| | | // } |
| | | |
| | | // .headerTip label { |
| | | // color: #4b9bb7; |
| | | // } |
| | | // } |
| | | |
| | | main { |
| | | // border: 1px solid #fff; |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | padding-top: 20px; |
| | | // .mainTitle { |
| | | // color: #4b9bb7; |
| | | // font-weight: 600; |
| | | // line-height: 100px; |
| | | // font-size: 14px; |
| | | // } |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | margin-top: 50px; |
| | | |
| | | &::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | |
| | | :data="tableData" style="width: 100%" :row-class-name="tableRowClassName"> |
| | | <el-table-column type="selection" min-width="5"> |
| | | </el-table-column> |
| | | <el-table-column label="用户ID" min-width="5"> |
| | | <el-table-column label="用户ID" min-width="4"> |
| | | <template slot-scope="scope">{{ scope.row.id }}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="nickName" label="用户名称" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="username" label="所属姓名" min-width="10"> |
| | | <el-table-column prop="username" label="所属姓名" min-width="8"> |
| | | </el-table-column> |
| | | <el-table-column prop="mobile" label="联系方式" min-width="10"> |
| | | <el-table-column prop="mobile" label="联系方式" min-width="7"> |
| | | </el-table-column> |
| | | <el-table-column prop="note" label="所属角色" min-width="10"> |
| | | <el-table-column prop="note" label="所属角色" min-width="8"> |
| | | </el-table-column> |
| | | <el-table-column prop="departName" label="所属部门" min-width="10"> |
| | | <el-table-column prop="departName" label="所属部门" min-width="8"> |
| | | </el-table-column> |
| | | <el-table-column prop="jobTitle" label="所属职务" min-width="10"> |
| | | <el-table-column prop="jobTitle" label="所属职务" min-width="8"> |
| | | </el-table-column> |
| | | <el-table-column prop="createTime" label="创建时间" min-width="10"> |
| | | </el-table-column> |
| | |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="operation" label="操作" min-width="15"> |
| | | <el-table-column prop="operation" label="操作" min-width="22"> |
| | | <template slot-scope="scope"> |
| | | <div class="operation"> |
| | | <!-- <span @click="handleChangeRole(scope.row)">修改角色</span> --> |
| | | <span @click="handleChangeRole(scope.row,'role')">修改角色</span> |
| | | <span class="line">|</span> |
| | | <span @click="handleFind(scope.row)">查看</span> |
| | | <span class="line">|</span> |
| | | <!-- <span>修改密码</span> --> |
| | | <!-- <span>删除</span> --> |
| | | <span @click="handleUpdate(scope.row)">修改部门</span> |
| | | <span @click="handleChangeRole(scope.row,'password')">修改密码</span> |
| | | <span class="line">|</span> |
| | | <span @click="handleDelete(scope.row)">删除</span> |
| | | <span class="line">|</span> |
| | | <span @click="handleChangeRole(scope.row,'depart')">修改部门</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- 查看修改页面 --> |
| | | <el-dialog :visible.sync="dialogUpdate" width="45%" v-if="dialogUpdate" |
| | | :title="updateFlag ? '修改用户部门信息' :'查看用户信息'"> |
| | | <updateUser :updateFlag="updateFlag" :userInfo=userInfo /> |
| | | :title="updateFlag ? flag.role ? '修改用户角色信息' : flag.depart ? '修改用户部门信息': '修改用户密码' :'查看用户信息'" |
| | | :before-close="handleClose"> |
| | | <updateUser :updateFlag="updateFlag" :userInfo=userInfo :flag=flag @closeDialog="closeDialog" |
| | | :getUserList="getUserList" /> |
| | | </el-dialog> |
| | | <!-- 分页 --> |
| | | <!-- tools --> |
| | | <div class="pagination"> |
| | | <el-pagination background :current-page="currentPage" layout="prev, pager, next" :total="totalNum" |
| | | :page-size="pageSize" @current-change="changeCurrentPage" @prev-click="handlePrev" |
| | | @next-click="handleNext"> |
| | | </el-pagination> |
| | | </div> |
| | | <el-pagination background :current-page="currentPage" layout="prev, pager, next" :total="totalNum" |
| | | :page-size="pageSize" @current-change="changeCurrentPage" @prev-click="handlePrev" |
| | | @next-click="handleNext"> |
| | | </el-pagination> |
| | | </div> |
| | | <!-- <div class="tools"> |
| | | <div class="funs"> |
| | | <div class="funsItem" > |
| | | <el-checkbox v-model="all" @change="selectAll()">全选</el-checkbox> |
| | | </div> |
| | | <div class="funsItem" > |
| | | <el-checkbox v-model="unsame" @change="disSame(tableData)">反选</el-checkbox> |
| | | </div> |
| | | </div> --> |
| | | <!-- <div class="pagination"> |
| | | <el-pagination background :current-page="currentPage" layout="prev, pager, next" :total="totalNum" |
| | | :page-size="pageSize" @current-change="changeCurrentPage" @prev-click="handlePrev" |
| | | @next-click="handleNext"> |
| | | </el-pagination> |
| | | </div> --> |
| | | <!-- </div> --> |
| | | </div> |
| | | </main> |
| | | </template> |
| | |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | renderFlag: false, |
| | | flag: { |
| | | role: false, |
| | | password: false, |
| | | depart: false, |
| | | }, |
| | | all:false, |
| | | unsame:false, |
| | | } |
| | | }, |
| | | created() { |
| | | this.getUserList(); |
| | | }, |
| | | methods: { |
| | | selectAll() { |
| | | this.$refs.multipleTable.toggleAllSelection(); |
| | | |
| | | }, |
| | | disSame(list){ |
| | | console.log(this.$refs.multipleTable); |
| | | // const row = this.$refs.table.data |
| | | list.forEach(row => { |
| | | this.$refs.multipleTable.toggleRowSelection(row) |
| | | }) |
| | | }, |
| | | // 删除用户 |
| | | handleDelete({ id }) { |
| | | this.$confirm('确认删除?').then(_ => { |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/admin/delete/' + id, |
| | | }).then(res => { |
| | | console.log(res); |
| | | this.$message({ |
| | | message: res.message, |
| | | type: 'success' |
| | | }) |
| | | this.getUserList(); |
| | | }) |
| | | }).catch(_ => { }) |
| | | }, |
| | | closeDialog({ flag }) { |
| | | this.dialogUpdate = flag; |
| | | this.getUserList(); |
| | | }, |
| | | handleClose(done) { |
| | | this.$confirm('确认关闭?') |
| | | .then(_ => { |
| | | this.dialogUpdate = false |
| | | done(); |
| | | }) |
| | | .catch(_ => { }); |
| | | }, |
| | | // 当前页改变触发事件 |
| | | changeCurrentPage(page) { |
| | | this.currentPage = page; |
| | |
| | | this.getUserList(); |
| | | }, |
| | | // 修改角色 |
| | | handleChangeRole(obj) { |
| | | this.dialogUpdate = true |
| | | this.user = obj; |
| | | // console.log(obj) |
| | | handleChangeRole(obj, mykey) { |
| | | this.dialogUpdate = true; |
| | | this.updateFlag = true; |
| | | for (let key in this.flag) { |
| | | if (key == mykey) { |
| | | this.flag[key] = true; |
| | | } else { |
| | | this.flag[key] = false; |
| | | } |
| | | } |
| | | this.userInfo = obj; |
| | | }, |
| | | // 修改用户状态 |
| | | handleChangeStatus(obj) { |
| | |
| | | // 获取所有用户信息、用户查询(暂时支持电话号码) |
| | | this.$axios.get(`sccg/admin/list?mobile=${search}¤t=${currentPage}&pageSize=${pageSize}`).then(res => { |
| | | if (res.code === 200) { |
| | | res.data.records.forEach(item => { |
| | | item.createTime = helper(item.createTime); |
| | | item.status == 1 ? item.status = true : item.status = false; |
| | | }) |
| | | // res.data.records.forEach(item => { |
| | | // item.createTime = helper(item.createTime); |
| | | // item.status == 1 ? item.status = true : item.status = false; |
| | | // }) |
| | | that.totalNum = res.data.pages * pageSize; |
| | | that.tableData = res.data.records; |
| | | this.renderFlag = true; |
| | |
| | | this.dialogUpdate = true; |
| | | this.updateFlag = false; |
| | | this.userInfo = rowData; |
| | | }, |
| | | // 修改用户部门信息 |
| | | handleUpdate(rowData) { |
| | | this.dialogUpdate = true; |
| | | this.updateFlag = true; |
| | | this.userInfo = rowData |
| | | const { flag } = this; |
| | | for (let key in flag) { |
| | | flag[key] = false; |
| | | } |
| | | }, |
| | | // 设置表格斑马纹 |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if ((rowIndex + 1) % 2 == 0) { |
| | | return 'warning-row'; |
| | | } else { |
| | | return 'success-row'; |
| | | } |
| | | return ''; |
| | | }, |
| | | if ((rowIndex + 1) % 2 == 0) { |
| | | return 'warning-row'; |
| | | } else { |
| | | return 'success-row'; |
| | | } |
| | | return ''; |
| | | }, |
| | | }, |
| | | props: ['refresh', 'keyword', 'resetFresh'], |
| | | watch: { |
| | |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .pagination { |
| | | margin-top: 50px; |
| | | .tools { |
| | | display: flex; |
| | | line-height: 50px; |
| | | justify-content: center; |
| | | justify-content: space-between; |
| | | |
| | | .el-pagination { |
| | | // .funs {} |
| | | |
| | | &::v-deep li, |
| | | &::v-deep .btn-prev, |
| | | &::v-deep .btn-next { |
| | | background-color: #071f39; |
| | | color: #4b9bb7; |
| | | |
| | | } |
| | | .pagination { |
| | | margin-top: 50px; |
| | | display: flex; |
| | | line-height: 50px; |
| | | justify-content: center; |
| | | |
| | | .el-pagination { |
| | | |
| | | &::v-deep li, |
| | | &::v-deep .btn-prev, |
| | | &::v-deep .btn-next { |
| | | background-color: #071f39; |
| | | color: #4b9bb7; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-table { |
| | | color: #4b9bb7; |
| | |
| | | |
| | | &::v-deep .switchStyle.el-switch .el-switch__core, |
| | | &::v-deep .el-switch .el-switch__label { |
| | | width: 50px !important; |
| | | width: 56px !important; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="updateUser"> |
| | | <!-- <header> |
| | | <div class="headerTitle">{{updateFlag ? '修改用户部门信息' :'查看用户信息'}}</div> |
| | | </header> --> |
| | | <main> |
| | | <!-- <div class="mainTitle">基础信息</div> --> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" autoComplete="on" :model="user" :rules="createUserRules" |
| | | label-position="right"> |
| | |
| | | </el-form-item> |
| | | <!-- 用户密码 --> |
| | | <el-form-item class="optionItems" label="用户密码:" prop="password"> |
| | | <el-input v-model="user.password" type="password" placeholder="请输入用户密码" :disabled="true"> |
| | | <el-input v-model="user.password" type="password" placeholder="请输入用户密码" |
| | | :disabled="!flag.password"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <!-- 所属用户姓名 --> |
| | |
| | | <el-input v-model="user.email" placeholder="请填写邮箱地址" :disabled="true"></el-input> |
| | | </el-form-item> |
| | | <!-- 选择角色 --> |
| | | <!-- <el-form-item class="optionItem" label="选择角色:" prop="role"> |
| | | <el-select v-model="user.role" placeholder="请选择所属角色"> |
| | | <el-option v-for="item in roleList" :key="item.name" :label="item.name" :value="item.value" |
| | | <el-form-item class="optionItem" label="选择角色:" prop="role"> |
| | | <el-select v-model="user.role" placeholder="请选择所属角色" :disabled="!flag.role"> |
| | | <el-option v-for="item in roleList" :key="item.id" :label="item.name" :value="item.id" |
| | | :disabled="item.disabled"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> --> |
| | | </el-form-item> |
| | | <!-- 用户类型 --> |
| | | <el-form-item class="optionItem" label="用户类型:" prop="userType"> |
| | | <el-select v-model="user.userType" placeholder="请选择用户类型" disabled> |
| | | <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value"> |
| | | <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | </el-form-item> --> |
| | | <!-- 所属部门 --> |
| | | <el-form-item class="optionItem" label="所属部门:" prop="departmentId"> |
| | | <el-select v-model="user.department" placeholder="请选择所属部门" :disabled="!updateFlag"> |
| | | <el-option v-for="item in typeList" :key="item.name" :label="item.departName" |
| | | <el-select v-model="user.departmentId" placeholder="请选择所属部门" :disabled="!flag.depart"> |
| | | <el-option v-for="item in departList" :key="item.name" :label="item.departName" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 当前职务 --> |
| | | <el-form-item class="optionItem" label="当前职务:" prop="jobTitle"> |
| | | <el-select v-model="user.work" placeholder="请选择当前职务" disabled> |
| | | <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | <el-input v-model="user.jobTitle" placeholder="请输入当前职务" :disabled="true"></el-input> |
| | | </el-form-item> |
| | | <!-- 填写所属mac地址 --> |
| | | <!-- <el-form-item class="optionItem" label="填写所属mac地址:" prop="mac"> |
| | | <el-form-item class="optionItem" label="填写所属mac地址:" prop="mac"> |
| | | <el-input v-model="user.mac" placeholder="请填写所属mac地址"></el-input> |
| | | </el-form-item> --> |
| | | </el-form-item> |
| | | <!-- 填写所属ip地址 --> |
| | | <!-- <el-form-item class="optionItem" label="填写所属ip地址:" prop="ip"> |
| | | <el-form-item class="optionItem" label="填写所属ip地址:" prop="ip"> |
| | | <el-input v-model="user.ip" placeholder="请填写所属ip地址"></el-input> |
| | | </el-form-item> --> |
| | | </el-form-item> |
| | | <el-form-item v-if="updateFlag"> |
| | | <div class="optionBtn"> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">提交 |
| | |
| | | const validateNickname = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写用户名称")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validatePass = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | } else { |
| | | const rep = /^\w+$/; |
| | | if (!rep.test(value)) { |
| | | callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串")); |
| | | } |
| | | callback(); |
| | | // const rep = /^\w+$/; |
| | | // if (!rep.test(value)) { |
| | | // callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串")); |
| | | // } else { |
| | | // callback(); |
| | | // } |
| | | } |
| | | }; |
| | | const validateTruename = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写用户姓名")); |
| | | } else { |
| | | const rep = /^[\u4E00-\u9FA5]{2,4}$/; |
| | | if (!rep.test(value)) { |
| | | callback("请输入正确的用户姓名"); |
| | | } |
| | | callback(); |
| | | // const rep = /^[\u4E00-\u9FA5]{2,4}$/; |
| | | // if (!rep.test(value)) { |
| | | // callback("请输入正确的用户姓名"); |
| | | // } else { |
| | | // callback(); |
| | | // } |
| | | } |
| | | }; |
| | | const validatePhone = (rule, value, callback) => { |
| | |
| | | const rep = /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/ |
| | | if (!rep.test(value)) { |
| | | callback("请输入正确的手机号码"); |
| | | } else { |
| | | callback(); |
| | | } |
| | | } |
| | | }; |
| | |
| | | const rep = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; |
| | | if (!rep.test(value)) { |
| | | callback(new Error("请输入正确的邮箱")) |
| | | } else { |
| | | callback(); |
| | | } |
| | | } |
| | | }; |
| | | const validateRole = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | // const validateRole = (rule, value, callback) => { |
| | | // console.log(value); |
| | | // if (!value) { |
| | | // callback(new Error("请选择用户角色")); |
| | | // } else { |
| | | // callback(); |
| | | // } |
| | | // }; |
| | | const validateType = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | if (!value && value!==0) { |
| | | callback(new Error("请选择用户类型")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateDepartment = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | if (!value && value !== 0) { |
| | | callback(new Error("请选择所属部门")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateWork = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | callback(new Error("请填写当前职务")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateMac = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | callback(); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateIp = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写登录密码")); |
| | | callback(); |
| | | } else { |
| | | callback(); |
| | | } |
| | |
| | | phoneNumber: "", |
| | | moreNumber: "", |
| | | }, |
| | | departmentId: null, |
| | | jobTitle: null, |
| | | // mac: '', |
| | | // ip: '', |
| | | // departmentId: null, |
| | | // jobTitle: null, |
| | | mac: '', |
| | | ip: '', |
| | | }, |
| | | createUserRules: { |
| | | nickName: [ |
| | |
| | | { required: false, trigger: "blur", validator: validateMail }, |
| | | ], |
| | | // role: [ |
| | | // { required: true, trigger: "blur", validator: validateRole }, |
| | | // { required: true, trigger: "change", validator: validateRole }, |
| | | // ], |
| | | userType: [ |
| | | { required: true, trigger: "blur", validator: validateType }, |
| | | { required: true, trigger: "change", validator: validateType }, |
| | | ], |
| | | zj: [ |
| | | { required: false, trigger: "blur" }, |
| | | ], |
| | | departmentId: [ |
| | | { required: true, trigger: "blur", validator: validateDepartment }, |
| | | { required: true, trigger: "change", validator: validateDepartment }, |
| | | ], |
| | | jobTitle: [ |
| | | { required: true, trigger: "blur", validator: validateWork }, |
| | |
| | | roleList: [ |
| | | { name: '角色1', value: 1 }, { name: '角色2', value: 2 } |
| | | ], |
| | | typeList: [] |
| | | typeList: [], |
| | | departList: [] |
| | | } |
| | | }, |
| | | created() { |
| | | const that = this; |
| | | this.user = JSON.parse(JSON.stringify(that.userInfo)); |
| | | // 获取角色列表 |
| | | // this.$axios.get('') |
| | | // 获取用户类型列表 |
| | | // this.$axios.get('sccg/admin/list',{userType:0}).then(res=>{ |
| | | // console.log(res); |
| | | // }) |
| | | this.getRoleList(); |
| | | // 获取全部部门列表 |
| | | // 获取全部部门列表 |
| | | this.$axios.get('sccg/depart/page').then(res => { |
| | | that.typeList = res.data.records; |
| | | that.departList = res.data.records; |
| | | }) |
| | | }, |
| | | methods: { |
| | | handleUser() { |
| | | const { user } = this; |
| | | this.$axios.post('sccg/depart/status', { |
| | | id: user.departmentId, |
| | | status: user.status ? 1 : 0, |
| | | }).then(res => { |
| | | console.log(res); |
| | | this.$refs.user.validate((valid) => { |
| | | if (valid) { |
| | | const { user } = this; |
| | | console.log(user); |
| | | // for(let key in user){ |
| | | // if(user[key]===null){ |
| | | // user[key] = ''; |
| | | // } |
| | | // } |
| | | // user.status = String(user.status); |
| | | // user.isDy = String(user.isDy); |
| | | // user.userType = String(user.userType); |
| | | // this.$axios({ |
| | | // method: 'post', |
| | | // url: 'sccg/admin/update/' + user.id, |
| | | // data: user |
| | | // }) |
| | | // .then(res => { |
| | | // console.log(res); |
| | | // this.getUserList(); |
| | | // this.$emit('closeDialog', { flag: false }); |
| | | // }) |
| | | } else { |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | // 获取角色列表 |
| | | getRoleList() { |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/role/listAll', |
| | | }) |
| | | .then(res => { |
| | | this.roleList = res.data; |
| | | }) |
| | | } |
| | | }, |
| | | props: ['userInfo', 'updateFlag'] |
| | | props: ['userInfo', 'updateFlag', 'flag','closeDialog','getUserList'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | // header { |
| | | // display: flex; |
| | | // justify-content: center; |
| | | // height: 60px; |
| | | // line-height: 60px; |
| | | // padding: 0 20px; |
| | | // border: 1px solid #fff; |
| | | // .headerTitle { |
| | | // color: #4b9bb7; |
| | | // font-weight: 600; |
| | | // } |
| | | |
| | | // .headerTip span { |
| | | // color: #ff3b6c; |
| | | // } |
| | | |
| | | // .headerTip label { |
| | | // color: #4b9bb7; |
| | | // } |
| | | // } |
| | | |
| | | main { |
| | | // border: 1px solid #fff; |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | // .mainTitle { |
| | | // color: #4b9bb7; |
| | | // font-weight: 600; |
| | | // line-height: 100px; |
| | | // font-size: 14px; |
| | | // } |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | |
| | | <template> |
| | | <div class="userList"> |
| | | <!-- <header> |
| | | <div class="headerContent"> |
| | | <div class="search"> |
| | | <span>筛选条件:</span> |
| | | <el-input placeholder="请输入内容" v-model="search"></el-input> |
| | | <div class="findBtn"> |
| | | <el-button type="primary" @click="getUserList">查询</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="addUser"> |
| | | <el-button class="addBtn" type="primary" @click="dialogCreate = true">添加用户</el-button> |
| | | <el-dialog :visible.sync="dialogCreate" title="新增账户" width="45%" v-if="dialogCreate" |
| | | :before-close="handleClose1"> |
| | | <createUser :refresh="getUserList" /> |
| | | </el-dialog> |
| | | </div> |
| | | </div> |
| | | </header> --> |
| | | <myHeader @setDialog="changeDialog" @getSearch="getSearch"></myHeader> |
| | | <myMain :refresh="isFresh" :keyword="keyword" @resetFresh="resetFresh" /> |
| | | </div> |
| | |
| | | <header> |
| | | <div class="headerTitle">系统设置 >> 门户管理 > 自定义菜单设置</div> |
| | | </header> |
| | | <!-- main 内容展示区 --> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <!-- 侧边导航栏 --> |
| | | <div class="aside"> |
| | | <div class="asideItem" v-for="(item,index) in menuList" :key="item.id" @click="getContent(index)"> |
| | | <h4>{{item.title}}</h4> |
| | | <!-- 子菜单 --> |
| | | <ul class="menu"> |
| | | <li class="menuItem" v-for="(son,sonIndex) in item.children" |
| | | @click.stop="getContent(index,sonIndex)"> |
| | | <span>{{son.title}}</span> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | <!-- 菜单设置 --> |
| | | <div class="content"> |
| | | <h4>菜单管理-{{article.title}}</h4> |
| | | <!-- 子菜单项目 --> |
| | | <ul class="edit"> |
| | | <li class="editItem"> |
| | | <label>名称:</label> |
| | | <span>{{article.name}}</span> |
| | | </li> |
| | | <li class="editItem"> |
| | | <label>描述:</label> |
| | | <span>{{article.description}}</span> |
| | | </li> |
| | | <li class="editItem"> |
| | | <label>是否显示菜单:</label> |
| | | <span>{{article.hidden===0 ? '否':'是' }}</span> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | <!-- 数据展示 --> |
| | | <el-table ref="multipleTable" |
| | | :header-cell-style="{background:'#06122c','font-size':'12px',color:'#4b9bb7','font-weight':'650','line-height':'45px'}" |
| | | :data="menuList" style="width: 100%" row-key="id" :row-class-name="tableRowClassName"> |
| | | <el-table-column type="selection" min-width="5"> |
| | | </el-table-column> |
| | | <el-table-column prop="title" label="菜单栏" min-width="75"> |
| | | <el-tree :data="menuList" node-key="id" :default-expanded-keys="[0]" |
| | | :default-checked-keys="[0]" :props="defaultProps"> |
| | | </el-tree> |
| | | </el-table-column> |
| | | <el-table-column label="操作" min-width="20"> |
| | | <template slot-scope="scope"> |
| | | <div class="operation"> |
| | | <!-- <span @click="handleChangeRole(scope.row)">修改角色</span> --> |
| | | <span @click="handleFind(scope.row)">查看</span> |
| | | <span class="line">|</span> |
| | | <!-- <span>修改密码</span> --> |
| | | <!-- <span>删除</span> --> |
| | | <span @click="handleUpdate(scope.row)">修改角色</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- 查看修改页面 --> |
| | | <el-dialog :visible.sync="dialogUpdate" width="45%" :title="updateFlag ? '修改角色信息' :'查看角色信息'" |
| | | v-if="dialogUpdate"> |
| | | |
| | | </el-dialog> |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import helper from "@/utils/mydate.js" |
| | | export default { |
| | | data() { |
| | | return { |
| | | menuList: [], |
| | | article: [], |
| | | defaultProps: { |
| | | children: 'menuVoArrayList', |
| | | label: 'title' |
| | | }, |
| | | count: 1, |
| | | menuList: [], |
| | | context: "", |
| | | dialogCreate: false, |
| | | dialogUpdate: false, |
| | | updateFlag: false, |
| | | userInfo: '', |
| | | } |
| | | }, |
| | | created() { |
| | | const { getMenuList } = this; |
| | | getMenuList(); |
| | | this.getMenuList(); |
| | | }, |
| | | methods: { |
| | | // 获取菜单列表 |
| | | getMenuList() { |
| | | // this.$axios({ |
| | | // method: 'get', |
| | | // url: 'sccg/system/portal/menu/search', |
| | | // data: { |
| | | // current: 1, |
| | | // size: 10, |
| | | // } |
| | | // }).then(res => { |
| | | // console.log(res); |
| | | // const { data } = res; |
| | | // this.menuList = data; |
| | | // this.getContent(0); |
| | | // }) |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/system/portal/menu/search', |
| | | }).then(res => { |
| | | this.menuList = res.data.records; |
| | | this.getContent(0); |
| | | }) |
| | | }, |
| | | // 切换菜单内容展示 |
| | | getContent(index, sonIndex = null) { |
| | | if (sonIndex === null) { |
| | | this.article = this.menuList[index]; |
| | | |
| | | return; |
| | | } |
| | | this.article = this.menuList[index][sonIndex]; |
| | | this.article = this.menuList[index].menuVoArrayList[sonIndex]; |
| | | }, |
| | | // 设置表格斑马纹 |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if ((rowIndex + 1) % 2 == 0) { |
| | | return 'warning-row'; |
| | | } else { |
| | | return 'success-row'; |
| | | } |
| | | return ''; |
| | | }, |
| | | handleCheckChange(data, checked, indeterminate) { |
| | | console.log(data, checked, indeterminate); |
| | | }, |
| | | handleNodeClick(data) { |
| | | console.log(data); |
| | | }, |
| | | loadNode(node, resolve) { |
| | | if (node.level === 0) { |
| | | return resolve([{ name: 'region1' }, { name: 'region2' }]); |
| | | } |
| | | if (node.level > 3) return resolve([]); |
| | | |
| | | var hasChild; |
| | | if (node.data.name === 'region1') { |
| | | hasChild = true; |
| | | } else if (node.data.name === 'region2') { |
| | | hasChild = false; |
| | | } else { |
| | | hasChild = Math.random() > 0.5; |
| | | } |
| | | |
| | | setTimeout(() => { |
| | | var data; |
| | | if (hasChild) { |
| | | data = [{ |
| | | name: 'zone' + this.count++ |
| | | }, { |
| | | name: 'zone' + this.count++ |
| | | }]; |
| | | } else { |
| | | data = []; |
| | | } |
| | | |
| | | resolve(data); |
| | | }, 500); |
| | | } |
| | | } |
| | | |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .mySetting { |
| | | margin: 10px 20px; |
| | | text-align: left; |
| | | color: #4b9bb7; |
| | | |
| | |
| | | } |
| | | |
| | | main { |
| | | .mainContent { |
| | | display: flex; |
| | | background-color: #09152f; |
| | | margin-top: 20px; |
| | | padding-bottom: 50px; |
| | | border: 1pox solid #fff; |
| | | |
| | | li { |
| | | list-style: none; |
| | | .mainTitle { |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .el-table { |
| | | color: #4b9bb7; |
| | | font-size: 10px; |
| | | |
| | | &::v-deep .el-table__cell { |
| | | text-align: center; |
| | | } |
| | | |
| | | .aside { |
| | | width: 200px; |
| | | border: 1px solid #fff; |
| | | padding: 20px; |
| | | height: calc(100vh - 120px); |
| | | |
| | | .asideItem { |
| | | h4 { |
| | | line-height: 40px; |
| | | margin: 0; |
| | | } |
| | | |
| | | ul { |
| | | padding: 0; |
| | | margin: 0; |
| | | } |
| | | |
| | | .menu { |
| | | .menuItem { |
| | | line-height: 30px; |
| | | } |
| | | } |
| | | } |
| | | &::v-deep .el-table__empty-block { |
| | | background-color: #09152f; |
| | | color: #4b9bb7; |
| | | } |
| | | &::v-deep .el-table__row:hover{ |
| | | background-color: #4b9bb7; |
| | | } |
| | | .el-tree { |
| | | background-color: #071f39; |
| | | } |
| | | |
| | | .content { |
| | | flex: 1; |
| | | margin-left: 100px; |
| | | .operation { |
| | | display: flex; |
| | | justify-content: center; |
| | | |
| | | h4 { |
| | | margin: 0; |
| | | line-height: 80px; |
| | | .line { |
| | | padding: 0 5px; |
| | | } |
| | | |
| | | ul { |
| | | padding: 0; |
| | | margin: 0; |
| | | } |
| | | |
| | | .edit { |
| | | .editItem { |
| | | line-height: 40px; |
| | | display: flex; |
| | | |
| | | span { |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | span:hover { |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-table::v-deep .warning-row { |
| | | background: #06122c; |
| | | } |
| | | |
| | | .el-table::v-deep .success-row { |
| | | background: #071f39; |
| | | } |
| | | |
| | | &::v-deep .switchStyle .el-switch__label { |
| | | position: absolute; |
| | | display: none; |
| | | color: #fff; |
| | | } |
| | | |
| | | &::v-deep .el-switch__core { |
| | | background-color: rgba(166, 166, 166, 1); |
| | | } |
| | | |
| | | &::v-deep .switchStyle .el-switch__label--left { |
| | | z-index: 9; |
| | | left: 20px; |
| | | } |
| | | |
| | | &::v-deep .switchStyle .el-switch__label--right { |
| | | z-index: 9; |
| | | left: 4px; |
| | | } |
| | | |
| | | &::v-deep .switchStyle .el-switch__label.is-active { |
| | | display: block; |
| | | } |
| | | |
| | | &::v-deep .switchStyle.el-switch .el-switch__core, |
| | | &::v-deep .el-switch .el-switch__label { |
| | | width: 50px !important; |
| | | } |
| | | } |
| | | |
| | | &::v-deep .el-dialog__header, |
| | | &::v-deep .el-dialog__body { |
| | | background-color: #06122c; |
| | | } |
| | | |
| | | &::v-deep .el-dialog__header { |
| | | display: flex; |
| | | align-items: center; |
| | | background-color: #fff; |
| | | padding: 20px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | &::v-deep .el-dialog__title { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | &::v-deep .el-dialog__close { |
| | | width: 20px; |
| | | height: 20px; |
| | | // color: #fff; |
| | | } |
| | | |
| | | &::v-deep .el-dialog__body { |
| | | padding: 0; |
| | | } |
| | | } |
| | | </style> |