You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							237 lines
						
					
					
						
							6.4 KiB
						
					
					
				
			
		
		
	
	
							237 lines
						
					
					
						
							6.4 KiB
						
					
					
				| <template>
 | |
| 	<lay-container fluid="true" style="padding: 10px">
 | |
| 		<lay-row space="10">
 | |
| 			<lay-col span="24">
 | |
| 				<lay-card>
 | |
| 					<lay-form :model="searchObj" class="search-box">
 | |
| 						<lay-row class="search-items">
 | |
| 							<lay-form-item label="角色名称" prop="FName">
 | |
| 								<lay-input v-model="searchObj.FName"></lay-input>
 | |
| 							</lay-form-item>
 | |
| 							<lay-form-item label="角色描述" prop="FRemark">
 | |
| 								<lay-input v-model="searchObj.FRemark"></lay-input>
 | |
| 							</lay-form-item>
 | |
| 						</lay-row>
 | |
| 						<lay-form-item class="search-btn">
 | |
| 							<lay-button size="sm" type="primary" @click="_clickSearch">搜索</lay-button>
 | |
| 							<lay-button size="sm" @click="_clickReset">重置</lay-button>
 | |
| 						</lay-form-item>
 | |
| 					</lay-form>
 | |
| 					<lay-table :columns="dataColumn" id="id" :dataSource="dataList" v-model:selectedKeys="selectedKeys"
 | |
| 						:checkbox="checkbox" :default-toolbar="defaultToolbar" :page="dataList.length>0?pageInfo:null"
 | |
| 						@change="changePage">
 | |
| 						<template v-slot:toolbar>
 | |
| 							<lay-button size="sm" @click="_getRolePageList(false,true)">刷新</lay-button>
 | |
| 							<lay-button size="sm" type="normal" @click="_changeRole()">新增</lay-button>
 | |
| 						</template>
 | |
| 						<template v-slot:FName="{ data }">
 | |
| 							{{ data.FName }}
 | |
| 						</template>
 | |
| 						<template v-slot:FRemark="{ data }">
 | |
| 							{{ data.FRemark }}
 | |
| 						</template>
 | |
| 						<template v-slot:FAddDate="{ data }">
 | |
| 							{{ data.FAddDate }}
 | |
| 						</template>
 | |
| 						<template v-slot:FEditDate="{ data }">
 | |
| 							{{ data.FEditDate }}
 | |
| 						</template>
 | |
| 						<template v-slot:operator="{ data }">
 | |
| 							<lay-button size="xs" type="primary" @click="_changeRole(data)"> 编辑 </lay-button>
 | |
| 							<lay-button size="xs" type="normal" @click="_setRolePower(data)"> 权限 </lay-button>
 | |
| 							<lay-button size="xs" type="danger" @click="_deleteRole(data.FID)">删除</lay-button>
 | |
| 						</template>
 | |
| 					</lay-table>
 | |
| 				</lay-card>
 | |
| 			</lay-col>
 | |
| 		</lay-row>
 | |
| 		<lay-layer area="500px" v-model="showEditBox" :title="editBoxTitle">
 | |
| 			<EditRole :roleInfoObj="roleInfoObj" @cancelClick="cancelClick"></EditRole>
 | |
| 		</lay-layer>
 | |
| 		<lay-layer area="50%" v-model="showPowerBox" title="设置权限">
 | |
| 			<PowerRole :roleInfoObj="roleInfoObj" @cancelClick="cancelClick"></PowerRole>
 | |
| 		</lay-layer>
 | |
| 	</lay-container>
 | |
| </template>
 | |
| <script>
 | |
| 	import {
 | |
| 		ref
 | |
| 	} from "vue";
 | |
| 	import {
 | |
| 		getRolePageList,
 | |
| 		deleteRoleModel
 | |
| 	} from "/src/api/api/user";
 | |
| 	import EditRole from './components/EditRole.vue';
 | |
| 	import PowerRole from './components/PowerRole.vue';
 | |
| 	import '@layui/layui-vue/es/checkbox/index.css';
 | |
| 	export default {
 | |
| 		components: {
 | |
| 			EditRole,
 | |
| 			PowerRole
 | |
| 		},
 | |
| 		setup() {
 | |
| 			let dataColumn = [{
 | |
| 					title: "角色名称",
 | |
| 					key: "FName",
 | |
| 					width: "20%",
 | |
| 					minWidth: "200px"
 | |
| 				},
 | |
| 				{
 | |
| 					title: "角色描述",
 | |
| 					key: "FRemark",
 | |
| 					ellipsisTooltip: true
 | |
| 				},
 | |
| 				{
 | |
| 					title: "创建时间",
 | |
| 					key: "FAddDate",
 | |
| 					width: "126px"
 | |
| 				},
 | |
| 				{
 | |
| 					title: "最后修改时间",
 | |
| 					key: "FEditDate",
 | |
| 					width: "186px"
 | |
| 				},
 | |
| 				{
 | |
| 					title: "操作",
 | |
| 					key: "operator",
 | |
| 					width: "148px"
 | |
| 				}
 | |
| 			];
 | |
| 			dataColumn.forEach((item) => {
 | |
| 				item.customSlot = item.key;
 | |
| 				item.align = "center";
 | |
| 			});
 | |
| 			const selectedKeys = ref(["1"]);
 | |
| 			const checkbox = ref(false);
 | |
| 			const defaultToolbar = ref(true);
 | |
| 			const showEditBox = ref(false);
 | |
| 			const showPowerBox = ref(false);
 | |
| 			const roleInfoObj = ref({});
 | |
| 			const pageInfo = ref({
 | |
| 				total: 0,
 | |
| 				limit: 10,
 | |
| 				current: 1
 | |
| 			});
 | |
| 			const dataList = ref([]);
 | |
| 			const editBoxTitle = ref("");
 | |
| 			const searchObj = ref({});
 | |
| 			const postData = ref({});
 | |
| 			return {
 | |
| 				roleInfoObj,
 | |
| 				editBoxTitle,
 | |
| 				showEditBox,
 | |
| 				showPowerBox,
 | |
| 				selectedKeys,
 | |
| 				checkbox,
 | |
| 				defaultToolbar,
 | |
| 				dataColumn,
 | |
| 				dataList,
 | |
| 				pageInfo,
 | |
| 				searchObj,
 | |
| 				postData
 | |
| 			};
 | |
| 		},
 | |
| 		mounted() {
 | |
| 			this._getRolePageList(true);
 | |
| 		},
 | |
| 		methods: {
 | |
| 			changePage(obj) {
 | |
| 				this.pageInfo.current = obj.current;
 | |
| 				this.pageInfo.limit = obj.limit;
 | |
| 				this._getRolePageList();
 | |
| 			},
 | |
| 			//获取角色集合
 | |
| 			async _getRolePageList(isFirst, showOk) {
 | |
| 				//this.dataList = [];
 | |
| 				this.pageInfo.total = 0;
 | |
| 				if (isFirst) {
 | |
| 					this.pageInfo.current = 1;
 | |
| 					this.pageInfo.total = 0;
 | |
| 				}
 | |
| 				this.postData.FPageIndex = this.pageInfo.current;
 | |
| 				this.postData.FPageSize = this.pageInfo.limit;
 | |
| 				let result = await getRolePageList(this.postData);
 | |
| 				result.Data.List = result.Data.List || [];
 | |
| 				result.Data.List.forEach((item) => {
 | |
| 					item.FAddDate = item.FAddDate == null ? "" : this.dateFormat(item.FAddDate).split(' ')[0];
 | |
| 					item.FEditDate = item.FEditDate == null ? "" : this.dateFormat(item.FEditDate);
 | |
| 				});
 | |
| 				this.pageInfo.total = result.Data.Total || 0;
 | |
| 				this.dataList = result.Data.List;
 | |
| 			},
 | |
| 			//日期处理
 | |
| 			dateFormat(dataStr) {
 | |
| 				return dataStr.replace('T', ' ').split('.')[0];
 | |
| 			},
 | |
| 			//删除角色弹窗
 | |
| 			_deleteRole(roleId) {
 | |
| 				let $this = this;
 | |
| 				layer.confirm("你确定要删除此角色吗?", {
 | |
| 					btn: [{
 | |
| 							text: '确定',
 | |
| 							callback: function(id) {
 | |
| 								$this.__deleteRole(id, roleId);
 | |
| 							}
 | |
| 						},
 | |
| 						{
 | |
| 							text: '取消',
 | |
| 							callback: function(id) {
 | |
| 								layer.close(id);
 | |
| 							}
 | |
| 						}
 | |
| 					]
 | |
| 				});
 | |
| 			},
 | |
| 			//实际删除角色
 | |
| 			async __deleteRole(layId, roleId) {
 | |
| 				let result = await deleteRoleModel(roleId);
 | |
| 				layer.close(layId);
 | |
| 				if (result && result > 0) {
 | |
| 					layer.msg("操作成功", {
 | |
| 						time: 1000,
 | |
| 						icon: 1
 | |
| 					})
 | |
| 				} else {
 | |
| 					layer.msg("操作失败", {
 | |
| 						time: 1000,
 | |
| 						icon: 2
 | |
| 					})
 | |
| 				}
 | |
| 				this._getRolePageList(true);
 | |
| 			},
 | |
| 			//操作角色信息
 | |
| 			_changeRole(roleObj) {
 | |
| 				this.roleInfoObj = roleObj || {};
 | |
| 				if (roleObj) this.editBoxTitle = "修改角色";
 | |
| 				else this.editBoxTitle = "添加角色";
 | |
| 				this.showEditBox = true;
 | |
| 			},
 | |
| 			cancelClick(isRefresh) {
 | |
| 				if (isRefresh && this.showEditBox) {
 | |
| 					this._getRolePageList(true);
 | |
| 				}
 | |
| 				this.showEditBox = this.showPowerBox = false;
 | |
| 			},
 | |
| 			//显示权限设置
 | |
| 			_setRolePower(roleObj) {
 | |
| 				this.roleInfoObj = roleObj || {};
 | |
| 				this.showPowerBox = true;
 | |
| 			},
 | |
| 			//检索-检索
 | |
| 			_clickSearch() {
 | |
| 				this.postData = {};
 | |
| 				for (let key in this.searchObj) {
 | |
| 					let val = this.searchObj[key];
 | |
| 					if (val != null && val != "") this.postData[key] = val;
 | |
| 				}
 | |
| 				this._getRolePageList(true);
 | |
| 			},
 | |
| 			//检索-重置
 | |
| 			_clickReset() {
 | |
| 				this.searchObj = {};
 | |
| 				this._clickSearch();
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| </script>
 |