lz 3 tahun lalu
induk
melakukan
715674f33a

+ 62 - 0
src/api/system/dataPermissions.js

@@ -0,0 +1,62 @@
+import request from '@/utils/request'
+// 新增角色
+export function roleAdd(data) {
+	return request({
+		url: '/system/dataRole',
+		method: 'post',
+		data
+	})
+}
+//查询角色
+export function roleList(params) {
+	return request({
+		url: '/system/dataRole/list',
+		method: 'get',
+		params
+	})
+}
+//修改角色
+export function roleUpd(data) {
+	return request({
+		url: '/system/dataRole',
+		method: 'put',
+		data
+	})
+}
+//删除角色
+export function roleDel(data) {
+	return request({
+		url: '/system/dataRole/' + data,
+		method: 'delete'
+	})
+}
+//禁用角色
+export function roleStatus(data) {
+	return request({
+		url: '/system/dataRole/changeStatus',
+		method: 'put',
+		data
+	})
+}
+//获取角色的权限信息
+export function authList(params) {
+	return request({
+		url: '/system/dataRole/' + params,
+		method: 'get'
+	})
+}
+//修改角色的权限信息
+export function authUpd(data) {
+	return request({
+		url: '/system/dataRole/changeDept',
+		method: 'put',
+		data
+	})
+}
+//获取部门树
+export function deptList() {
+	return request({
+		url: '/system/dept/treeselect',
+		method: 'get'
+	})
+}

+ 3 - 0
src/assets/styles/element-ui.scss

@@ -57,6 +57,9 @@
 .el-dialog__header {
 	border-bottom: 1px solid #d9d9d9;
 }
+.el-dialog__title {
+	font-weight: bolder;
+}
 .el-dialog__footer {
 	border-top: 1px solid #d9d9d9;
 	padding-bottom: 10px;

+ 1 - 1
src/views/monitor/operlog/index.vue

@@ -117,7 +117,7 @@
 				</el-row>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
-				<el-button @click="open = false">关 闭</el-button>
+				<el-button @click="open = false" size="medium">关 闭</el-button>
 			</div>
 		</el-dialog>
 	</div>

+ 267 - 0
src/views/system/dataPermissions/index.vue

@@ -0,0 +1,267 @@
+<template>
+	<div class="page-container">
+		<div class="content-container">
+			<div class="main">
+				<div class="table-nav">
+					<div class="tags">
+						<div class="tag" :style="isActive(1)" @click="toTab1">数据角色</div>
+						<div class="tag" :style="isActive(2)" @click="toTab2">数据权限</div>
+					</div>
+					<div class="actions">
+						<el-button type="primary" icon="el-icon-plus" size="mini " v-show="tabIndex == 1" @click="addRole" v-hasPermi="['system:levelPosition:addLevel']">添加</el-button>
+					</div>
+				</div>
+				<!-- 数据角色表格 -->
+				<el-table v-loading="loading" :data="roleList" border :header-cell-style="{ 'text-align': 'center' }" highlight-current-row @current-change="rowHandler" v-show="tabIndex == 1">
+					<el-table-column label="名称" prop="dataRoleName" width="200">
+						<template slot-scope="scope">
+							<a href="javascript:void(0);" class="linked" @click="toTab2">{{ scope.row.dataRoleName }}</a>
+						</template>
+					</el-table-column>
+					<el-table-column label="描述" prop="remark" />
+					<el-table-column label="创建时间" prop="createTime" width="200" align="center" />
+					<el-table-column label="操作" class-name="small-padding fixed-width" width="300" align="center">
+						<template slot-scope="scope">
+							<el-button size="mini" type="text" icon="el-icon-edit" @click.stop="updRole(scope.row)" v-hasPermi="['system:levelPosition:updLevel']">修改</el-button>
+							<el-button size="mini" type="text" icon="el-icon-delete" @click.stop="delRole(scope.row)" v-hasPermi="['system:levelPosition:delLevel']">删除</el-button>
+							<el-button size="mini" type="text" icon="el-icon-remove" @click.stop="setRole(scope.row)" v-hasPermi="['system:levelPosition:upLevel']" v-if="scope.row.status == 0"
+								>禁用</el-button
+							>
+							<el-button size="mini" type="text" icon="el-icon-circle-plus" @click.stop="setRole(scope.row)" v-hasPermi="['system:levelPosition:upLevel']" v-if="scope.row.status == 1"
+								>启用</el-button
+							>
+						</template>
+					</el-table-column>
+				</el-table>
+				<pagination v-show="roleTotal > 0 && tabIndex == 1" :total="roleTotal" :page.sync="roleParams.pageNum" :limit.sync="roleParams.pageSize" @pagination="getRoleList" />
+				<!-- 数据权限表格 -->
+				<el-table
+					v-loading="loading"
+					:data="deptTreeList"
+					border
+					:header-cell-style="{ 'text-align': 'center' }"
+					highlight-current-row
+					row-key="id"
+					:default-expand-all="true"
+					:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+					v-show="tabIndex == 2"
+				>
+					<el-table-column label="机构名称" prop="label" />
+					<el-table-column label="数据权限" class-name="small-padding fixed-width" width="300" align="center">
+						<template slot-scope="scope">
+							<input type="checkbox" :checked="authIds.includes(scope.row.id)" @change="checkboxClick(scope.row, $event)" />
+						</template>
+					</el-table-column>
+				</el-table>
+				<!-- 编辑数据角色 -->
+				<el-dialog title="编辑角色" :visible.sync="roleShow" width="30%" :close-on-press-escape="false" :close-on-click-modal="false">
+					<el-form ref="roleForm" :model="roleForm" :rules="roleRules" label-width="100px">
+						<el-form-item label="名称" prop="dataRoleName">
+							<div style="width: 200px"><el-input v-model="roleForm.dataRoleName" placeholder="请输入名称" /></div>
+						</el-form-item>
+						<el-form-item label="描述" prop="remark">
+							<div style="width: 300px"><el-input maxlength="80" v-model="roleForm.remark" placeholder="请输入描述" /></div>
+						</el-form-item>
+					</el-form>
+					<div slot="footer" class="dialog-footer">
+						<el-button size="small" @click="roleCancel">取 消</el-button>
+						<el-button type="primary" size="small" @click="roleSub">保 存</el-button>
+					</div>
+				</el-dialog>
+			</div>
+		</div>
+	</div>
+</template>
+
+<script>
+	import { roleAdd, roleList, roleUpd, roleDel, roleStatus, authUpd, deptList } from '@/api/system/dataPermissions.js'
+	export default {
+		name: 'dataPermissions',
+		data() {
+			return {
+				loading: false,
+				//tab索引
+				tabIndex: 1,
+				//角色数据
+				roleList: [],
+				//角色弹窗
+				roleShow: false,
+				//角色表单
+				roleForm: {
+					//角色名称
+					dataRoleName: '',
+					//角色描述
+					remark: ''
+				},
+				//角色表单验证
+				roleRules: {
+					dataRoleName: [{ required: true, message: '名称不能为空', trigger: 'submit' }]
+				},
+				//角色总条数
+				roleTotal: 0,
+				// 角色查询参数
+				roleParams: {
+					pageNum: 1,
+					pageSize: 10
+				},
+				//权限数据ids
+				authIds: [],
+				//部门数据
+				deptList: [],
+				//选中的角色id
+				dataRoleId: 0
+			}
+		},
+		created() {
+			this.getRoleList()
+			deptList().then((res) => {
+				if (res.code === 200) {
+					this.deptList = res.data
+				}
+			})
+		},
+		computed: {
+			theme() {
+				return this.$store.state.settings.theme
+			},
+			deptTreeList() {
+				return this.dataRoleId ? this.deptList : []
+			}
+		},
+		methods: {
+			//动态选中样式
+			isActive(index) {
+				if (this.tabIndex != index) return {}
+				return {
+					color: this.theme
+				}
+			},
+			//跳转到tab1
+			toTab1() {
+				this.tabIndex = 1
+			},
+			//跳转到tab2
+			toTab2() {
+				this.tabIndex = 2
+			},
+			//获取角色数据
+			getRoleList() {
+				roleList(this.roleParams).then((res) => {
+					if (res.code === 200) {
+						this.roleList = res.rows
+						this.roleTotal = res.total
+					}
+				})
+			},
+			//添加角色
+			addRole() {
+				this.roleShow = true
+			},
+			//数据角色行选中
+			rowHandler(e) {
+				this.dataRoleId = e.dataRoleId
+				if (e.deptIds && e.deptIds != '') {
+					this.authIds = e.deptIds.split(',').map((item) => Number(item))
+				} else {
+					this.authIds = []
+				}
+			},
+			//角色弹窗取消
+			roleCancel() {
+				this.resetRoleForm()
+				this.roleShow = false
+			},
+			//角色弹窗提交
+			roleSub() {
+				this.$refs.roleForm.validate((valid) => {
+					if (valid) {
+						if (this.roleForm.dataRoleId) {
+							roleUpd(this.roleForm).then((res) => {
+								if (res.code == 200) {
+									this.$msg({ message: '修改成功' })
+									this.roleCancel()
+									this.getRoleList()
+								}
+							})
+						} else {
+							roleAdd(this.roleForm).then((res) => {
+								if (res.code == 200) {
+									this.$msg({ message: '添加成功' })
+									this.roleCancel()
+									this.getRoleList()
+								}
+							})
+						}
+					} else {
+						return false
+					}
+				})
+			},
+			//角色表单重置,
+			resetRoleForm() {
+				this.roleForm = {
+					//角色名称
+					dataRoleName: '',
+					//角色描述
+					remark: ''
+				}
+			},
+			//修改角色
+			updRole(row) {
+				this.roleForm.dataRoleName = row.dataRoleName
+				this.roleForm.remark = row.remark
+				this.roleForm.dataRoleId = row.dataRoleId
+				this.roleShow = true
+			},
+			//删除角色
+			delRole(row) {
+				this.$modal
+					.confirm('确定要删除吗')
+					.then(() => {
+						roleDel(row.dataRoleId).then((res) => {
+							if (res.code == 200) {
+								this.$msg({ message: '删除成功' })
+								this.getRoleList()
+							}
+						})
+					})
+					.catch(() => {})
+			},
+			//角色禁用
+			setRole(row) {
+				roleStatus({
+					dataRoleId: row.dataRoleId,
+					status: Math.abs(row.status - 1)
+				}).then((res) => {
+					if (res.code === 200) {
+						this.$msg({ message: '操作成功' })
+						row.status = Math.abs(row.status - 1)
+					}
+				})
+			},
+			//编辑权限
+			checkboxClick(d, e) {
+				let status = e.target.checked
+				let ids = [...this.authIds]
+				if (status) {
+					ids.push(d.id)
+				} else {
+					ids = ids.filter((item) => item != d.id)
+				}
+				authUpd({ dataRoleId: this.dataRoleId, deptIds: ids.join(',') }).then((res) => {
+					if (res.code === 200) {
+						if (status) {
+							this.authIds.push(d.id)
+						} else {
+							this.authIds = this.authIds.filter((item) => item != d.id)
+						}
+						let row = this.roleList.find((item) => item.dataRoleId == this.dataRoleId)
+						row.deptIds = this.authIds.join(',')
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style></style>

+ 3 - 0
src/views/system/levelPosition/index.vue

@@ -148,6 +148,7 @@
 	import { listDept } from '@/api/system/dept.js'
 	import { checkPermi } from '@/utils/permission'
 	export default {
+		name: 'levelPosition',
 		data() {
 			return {
 				loading: false,
@@ -246,9 +247,11 @@
 				if (!checkPermi(['system:levelPosition:listLevel'])) {
 					return
 				}
+				this.loading = true
 				levelList().then((res) => {
 					if (res.code == 200) {
 						this.levelList = res.data
+						this.loading = false
 					} else {
 						this.$msg({ type: 'error', message: res.msg })
 					}