From 9ce29c536ba2a636416c618761985e2b9a711ee6 Mon Sep 17 00:00:00 2001 From: lxl <lixuliang_hd@126.com> Date: 星期四, 27 十月 2022 14:17:45 +0800 Subject: [PATCH] user --- src/views/userManage/roleManage.vue | 647 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 599 insertions(+), 48 deletions(-) diff --git a/src/views/userManage/roleManage.vue b/src/views/userManage/roleManage.vue index bb43f89..a7e8ec6 100644 --- a/src/views/userManage/roleManage.vue +++ b/src/views/userManage/roleManage.vue @@ -16,136 +16,613 @@ :label="$t('userManage.RM.ownedSystem')" prop="ownedSystem" > - <el-select v-model="roleForm.ownedSystem"> - <el-option :label="$t('userManage.RM.one')" value="one" /> - </el-select> + <el-input + v-model="roleForm.value" + :disabled="true" + :placeholder="$t('common.pleaseInput')" + /> + <el-button style="margin-left: 20px" @click="showDepTree(1)">{{ + $t('common.choose') + }}</el-button> </el-form-item> <br /> <el-form-item> - <el-button + <el-button @click="InsertFormdialog = true" v-if="menuStatus.insert" ><i class="el-icon-circle-plus-outline"></i> {{ - $t("userManage.RM.add") + $t('userManage.RM.add') }}</el-button > </el-form-item> <el-form-item> - <el-button + <el-button @click="onSubmit('ruleForm')" ><i class="el-icon-search"></i> {{ - $t("userManage.RM.query") + $t('userManage.RM.query') }}</el-button > </el-form-item> <el-form-item> <el-button @click="resetForm('ruleForm')" ><i class="el-icon-delete"></i> {{ - $t("userManage.RM.reset") + $t('userManage.RM.reset') + }}</el-button + > + </el-form-item> + <el-form-item> + <el-button @click="handleDelete()" v-if="menuStatus.delete" + ><i class="el-icon-delete"></i> {{ + $t('common.delete') }}</el-button > </el-form-item> </el-form> </div> <div class="table_box"> - <el-table :data="tableData" stripe style="width: 100%" height="99%"> + <el-table + :data="tableData" + stripe + style="width: 100%" + @selection-change="handleSelectionChange" + height="99%" + > + <el-table-column type="selection" width="55" /> <el-table-column align="center" type="index" :label="$t('userManage.RM.index')" width="70px" /> + <el-table-column align="center" prop="id" v-if="false" /> <el-table-column align="center" - prop="roleName" + prop="name" :label="$t('userManage.RM.roleName')" /> <el-table-column align="center" - prop="ownedSystem" + prop="depName" :label="$t('userManage.RM.ownedSystem')" /> + <el-table-column align="center" - prop="Permission" - :label="$t('userManage.RM.Permission')" + prop="isAdmin" + :label="$t('userManage.RM.isAdmin')" + > + <template slot-scope="scope"> + <span v-if="scope.row.isAdmin == 1">鏄� </span> + <span v-else-if="scope.row.isAdmin == 0">鍚�</span> + </template> + </el-table-column> + <el-table-column + align="center" + prop="descr" + :label="$t('userManage.RM.describe')" + /> + + <!-- <el-table-column + align="center" + prop="createUser" + :label="$t('userManage.RM.creationuser')" /> <el-table-column align="center" - prop="resourcePermission" - :label="$t('userManage.RM.resourcePermission')" + prop="createTime" + :label="$t('userManage.RM.creationtime')" + :formatter="formatTime" /> <el-table-column align="center" - prop="roleSetting" - :label="$t('userManage.RM.groupSetting')" + prop="UpdateUser" + :label="$t('userManage.RM.updateonuser')" /> + <el-table-column + align="center" + prop="updateTime" + :label="$t('userManage.RM.updateontime')" + :formatter="formatTime" + /> + <el-table-column + align="center" + prop="bak" + :label="$t('userManage.RM.remarks')" + /> --> <el-table-column fixed="right" - :label="$t('userManage.RM.operate')" - width="300" + :label="$t('common.operate')" + width="200" > - <template #default> - <el-button type="warning" size="small">{{ - $t("common.update") - }}</el-button> - <el-button type="danger" size="small">{{ - $t("common.delete") - }}</el-button> + <template slot-scope="scope"> + <el-button + v-if="menuStatus.update" + type="warning" + @click="handleEdit(scope.$index, scope.row)" + size="small" + >{{ $t('common.update') }}</el-button + > + <el-button + @click="showDetail(scope.$index, scope.row)" + type="primary" + size="small" + >{{ $t('common.see') }}</el-button + > </template> </el-table-column> </el-table> - <div style="margin-top: 40px" class="pagination_box"> + <div style="margin-top: 25px" class="pagination_box"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="currentPage" + :current-page="listData.pageIndex" :page-sizes="[10, 20, 30, 40]" - :page-size="10" + :page-size="listData.pageSize" layout="total, sizes, prev, pager, next, jumper" - :total="0" + :total="count" > </el-pagination> </div> </div> + + <el-dialog + :title="$t('userManage.RM.insertRole')" + top="15vh" + width="80vh" + style="overflow: hidden" + :visible.sync="InsertFormdialog" + > + <el-form :model="insertform"> + <el-form-item + :label="$t('userManage.RM.roleName')" + :label-width="formLabelWidth" + > + <el-input v-model="insertform.name" autocomplete="off"></el-input> + </el-form-item> + <el-form-item + :label="$t('userManage.RM.ownedSystem')" + :label-width="formLabelWidth" + :prop="insertform.depValue" + :rules="[{ required: true, message: '涓嶈兘涓虹┖' }]" + > + <el-input + v-model="insertform.depValue" + :disabled="true" + :placeholder="$t('common.pleaseInput')" + /> + <el-button style="margin-left: 20px" @click="showDepTree(2)">{{ + $t('common.choose') + }}</el-button> + </el-form-item> + <el-form-item + :label="$t('userManage.RM.describe')" + :label-width="formLabelWidth" + > + <el-input v-model="insertform.descr" autocomplete="off"></el-input> + </el-form-item> + <el-form-item + :label="$t('userManage.RM.isAdmin')" + :label-width="formLabelWidth" + > + <el-radio v-model="insertform.isAdmin" label="1">鏄�</el-radio> + <el-radio v-model="insertform.isAdmin" label="0">鍚�</el-radio> + </el-form-item> + <el-form-item + :label="$t('userManage.RM.remarks')" + :label-width="formLabelWidth" + > + <el-input v-model="insertform.bak" autocomplete="off"></el-input> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="insertFromClose">{{ $t('common.close') }}</el-button> + <el-button type="primary" @click="insertFromData">{{ + $t('common.confirm') + }}</el-button> + </div> + </el-dialog> + <el-dialog + :title="$t('userManage.RM.updateRole')" + top="15vh" + width="80vh" + style="overflow: hidden" + :visible.sync="UpdateFormdialog" + > + <el-form :model="updateform"> + <el-form-item + :label="$t('userManage.RM.roleName')" + :label-width="formLabelWidth" + > + <el-input v-model="updateform.name" autocomplete="off"></el-input> + </el-form-item> + + <el-form-item + :label="$t('userManage.RM.ownedSystem')" + :label-width="formLabelWidth" + :prop="updateform.depValue" + > + <el-input + v-model="updateform.depValue" + :disabled="true" + :placeholder="$t('common.pleaseInput')" + /> + <el-button style="margin-left: 20px" @click="showDepTree(3)">{{ + $t('common.choose') + }}</el-button> + </el-form-item> + <el-form-item + :label="$t('userManage.RM.isAdmin')" + :label-width="formLabelWidth" + > + <el-radio v-model="updateform.isAdmin" label="1">鏄�</el-radio> + <el-radio v-model="updateform.isAdmin" label="0">鍚�</el-radio> + </el-form-item> + <el-form-item + :label="$t('userManage.RM.describe')" + :label-width="formLabelWidth" + > + <el-input v-model="updateform.descr" autocomplete="off"></el-input> + </el-form-item> + <el-form-item + :label="$t('userManage.RM.remarks')" + :label-width="formLabelWidth" + > + <el-input v-model="updateform.bak" autocomplete="off"></el-input> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="updateFromClose">{{ $t('common.close') }}</el-button> + <el-button type="primary" @click="updateFromData">{{ + $t('common.confirm') + }}</el-button> + </div> + </el-dialog> + <div class="leftTree" v-if="showCata"> + <div class="treeBox"> + <role-dep-tree></role-dep-tree> + </div> + <div class="btnBox"> + <el-button type="primary" size="small" @click="selectCataName" + >纭畾</el-button + > + <el-button type="primary" size="small" @click="showCata = false" + >鍙栨秷</el-button + > + </div> + </div> + + <div class="infoBox" v-show="showinfoBox"> + <el-card> + <div slot="header" class="clearfix"> + <span>{{ $t('dataManage.styleObj.deInformation') }}</span> + <div style="float: right; cursor: pointer" @click="closeDetial"> + <i class="el-icon-close"></i> + </div> + </div> + <div class="contentBox"> + <p> + <label> {{ $t('userManage.RM.roleName') }}:</label> + <label class="boxlabel">{{ itemdetail.name }}</label> + </p> + <el-divider></el-divider> + + <p> + <label> {{ $t('userManage.RM.ownedSystem') }}:</label> + <label class="boxlabel">{{ itemdetail.depName }}</label> + </p> + <el-divider></el-divider> + + <p> + <label> {{ $t('userManage.RM.isAdmin') }}:</label> + <label class="boxlabel">{{ itemdetail.admin }}</label> + </p> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.RM.describe') }}:</label> + <label class="boxlabel">{{ itemdetail.descr }}</label> + </p> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.RM.creationuser') }}:</label> + <label class="boxlabel">{{ itemdetail.createUser }}</label> + </p> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.RM.creationtime') }}:</label> + <label class="boxlabel">{{ itemdetail.createTime }}</label> + </p> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.RM.updateonuser') }}:</label> + <label class="boxlabel">{{ itemdetail.UpdateUser }}</label> + </p> + <el-divider></el-divider> + + <p> + <label> {{ $t('userManage.RM.updateontime') }}:</label> + <label class="boxlabel">{{ itemdetail.updateTime }}</label> + </p> + <el-divider></el-divider> + <p> + <label> {{ $t('userManage.RM.remarks') }}:</label> + <label class="boxlabel">{{ itemdetail.bak }}</label> + </p> + <el-divider></el-divider> + </div> + </el-card> + </div> </div> </template> - - <script> -import MyBread from "../../components/MyBread.vue"; +<script> +import moment from 'moment'; +import MyBread from '../../components/MyBread.vue'; +import roleDepTree from './roleDepTree.vue'; +import { + select_Role_ByPageAndCount, + selectdepTab, + insertRole, + deleteRoles, + selectDep, + updateRole, +} from '../../api/api'; export default { //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� components: { MyBread, + roleDepTree, }, - data() { return { - currentPage: 1, - roleForm: { - groupName: "", - ownedSystem: "", - }, + showinfoBox: false, + showCata: false, + formLabelWidth: '120px', + InsertFormdialog: false, + UpdateFormdialog: false, + roleForm: {}, + cataName: '', + depValue: '', + elTreeFlag: 0, + path_id: '', tableData: [], + insertform: {}, + updateform: {}, + count: 0, + selData: [], + itemdetail: {}, + multipleSelection: [], + + listData: { + name: null, + depName: null, + pageIndex: 1, + pageSize: 10, + }, + menuStatus: { + delete: false, + insert: false, + update: false, + }, }; }, methods: { + closeDetial() { + this.showinfoBox = false; + this.itemdetail = {}; + }, + showDetail(index, row) { + this.showinfoBox = true; + this.itemdetail = row; + this.itemdetail.createTime = this.formomentTime( + this.itemdetail.createTime + ); + this.itemdetail.updateTime = this.formomentTime( + this.itemdetail.updateTime + ); + this.itemdetail.admin = + parseInt(this.itemdetail.isAdmin) === 0 ? '鍚�' : '鏄�'; + }, + handleSelectionChange(val) { + this.multipleSelection = val; + }, + formatTime(row, column) { + let date = row[column.property]; + return this.formomentTime(date); + }, + formomentTime(date) { + if (date === undefined || date === null) { + return; + } + return moment(parseInt(date)).format('YYYY-MM-DD HH:mm:ss'); + }, + showDepTree(res) { + this.showCata = true; + this.elTreeFlag = res; + }, + selectCataName() { + this.cataName = this.$store.state.catalogueName; + this.path_id = this.$store.state.cataNode.id; + var value; + if (this.cataName.indexOf('>') != -1) { + var data = this.$store.state.catalogueName.split('>'); + value = data[data.length - 1]; + } else { + value = this.$store.state.catalogueName; + } + this.$store.commit('changeCata', ''); //娓呯┖state鐨勯潰鍖呭睉 + this.$store.commit('changeNode', ''); //娓呯┖state鐨勮妭鐐瑰璞� + this.showCata = false; + switch (this.elTreeFlag) { + case 1: + this.roleForm.value = value; + this.roleForm.depid = this.path_id; + break; + case 2: + this.insertform.depid = this.path_id; + this.insertform.depValue = value; + break; + case 3: + this.updateform.depid = this.path_id; + this.updateform.depValue = value; + break; + } + }, + async getRoleTabelData() { + if (this.listData.tab == '') { + delete this.listData.tab; + } + this.listData.name = this.roleForm.username; + this.listData.depName = this.roleForm.value; + const data = await select_Role_ByPageAndCount(this.listData); + if (data.code != 200) { + this.$message.error('鍒楄〃璋冪敤澶辫触'); + } + console.log(data); + this.tableData = data.result; + this.count = data.count; + }, + async getSelectDepTab() { + this.selectData = []; + const data = await selectdepTab(); + if (data.code != 200) { + this.$message.error('涓嬫媺璋冪敤澶辫触'); + } + data.result.forEach((e) => { + if (e) { + this.selData.push({ + label: e.name, + value: e.id, + }); + } + }); + }, + insertFromClose() { + this.InsertFormdialog = false; + this.insertform = {}; + }, + async insertFromData() { + if (this.insertform.depValue == null) { + this.$message({ + message: '璇烽�夋嫨瑙掕壊鎵�灞炲崟浣�', + type: 'warning', + }); + return; + } + const data = await insertRole(this.insertform); + if (data.code == 200) { + this.InsertFormdialog = false; + this.insertform = {}; + this.$message({ + message: '娣诲姞鎴愬姛锛�', + type: 'success', + }); + this.getRoleTabelData(); + } else { + this.$message({ + message: '娣诲姞澶辫触锛�', + type: 'warning', + }); + } + }, + updateFromClose() { + this.UpdateFormdialog = false; + this.updateform = {}; + }, + async updateFromData() { + if (this.updateform.depValue == null) { + this.$message({ + message: '璇烽�夋嫨瑙掕壊鎵�灞炲崟浣�', + type: 'warning', + }); + return; + } + console.log(this.updateform); + const data = await updateRole(this.updateform); + if (data.code == 200) { + this.UpdateFormdialog = false; + this.updateform = {}; + this.$message({ + message: '淇敼鎴愬姛锛�', + type: 'success', + }); + this.getRoleTabelData(); + } else { + this.$message({ + message: '淇敼澶辫触锛�', + type: 'warning', + }); + } + }, + async handleDelete() { + var std = []; + for (var i in this.multipleSelection) { + std.push(this.multipleSelection[i].id); + } + const data = await deleteRoles({ ids: std.toString() }); + + if (data.code == 200) { + this.InsertFormdialog = false; + this.$message({ + message: '鍒犻櫎鎴愬姛锛�', + type: 'success', + }); + this.getRoleTabelData(); + } else { + this.$message({ + message: '鍒犻櫎澶辫触锛�', + type: 'warning', + }); + } + }, handleSizeChange(val) { - console.log(`姣忛〉 ${val} 鏉); + this.listData.pageSize = val; + this.getRoleTabelData(); }, handleCurrentChange(val) { - console.log(`褰撳墠椤�: ${val}`); + this.listData.pageIndex = val; + this.getRoleTabelData(); + }, + async handleEdit(index, row) { + this.updateform = row; + this.updateform.isAdmin = row.isAdmin.toString(); + const data = await selectDep({ id: row.depid }); + this.updateform.depValue = data.result.name; + this.UpdateFormdialog = true; }, onSubmit() { - console.log("submit!"); + this.getRoleTabelData(); }, resetForm(formName) { this.$refs[formName].resetFields(); + this.roleForm = {}; + this.getRoleTabelData(); + }, + showPermsMenu(res) { + switch (res.tag) { + case '/delete': + this.menuStatus.delete = true; + break; + case '/insert': + this.menuStatus.insert = true; + break; + case '/update': + this.menuStatus.update = true; + break; + } }, }, - created() {}, + created() { + var val = this.$store.state.currentPerms; + var permsEntity = this.$store.state.permsEntity; + for (var i = 0; i < permsEntity.length; i++) { + if (permsEntity[i].perms == val) { + this.showPermsMenu(permsEntity[i]); + } + } + this.getRoleTabelData(); + this.getSelectDepTab(); + }, }; </script> - <style lang="less" scoped> +<style lang="less" scoped> //@import url(); 寮曞叆鍏叡css绫� .logLog_box { background: rgb(240, 242, 245); @@ -156,21 +633,43 @@ .el-input { width: 300px; } + .leftTree { + position: absolute; + z-index: 9999; + top: 9%; + left: 37%; + width: 400px; + height: 600px; + background: #f0f2f5; + border: 1px solid #000; + .treeBox { + height: 550px; + overflow: auto; + /deep/ .el-tree-node__content:hover { + background-color: rgb(153, 153, 153); + } + } + .btnBox { + width: 123px; + margin: 10px auto 0; + // background-color: red; + } + } .inquire { - height: 110px; + height: 115px; overflow: auto; padding: 10px; margin-top: 20px; background: #fff; border-radius: 5px; border: 1px solid rgb(202, 201, 204); - margin-bottom: 20px; + margin-bottom: 10px; .el-form-item { margin: 7px; } } .table_box { - height: 65%; + height: 70%; padding: 10px; background: #fff; border-radius: 5px; @@ -179,6 +678,58 @@ .text-center { text-align: center; } + .infoBox { + width: 500px; + border: 1px solid #eee; + position: absolute; + z-index: 100; + top: 25%; + right: 12%; + background-color: #fff; + .el-card { + background-color: transparent; + span { + font-size: 16px; + font-weight: 600; + } + } + .contentBox { + margin: 0 aotu 10px; + height: 485px; + overflow: auto; + p { + // background-color: #bfa; + // margin-bottom: 10px; + font-size: 14px; + } + .boxlabel { + margin-left: 10px; + } + } + /* 鏁翠綋鏍峰紡 */ + .contentBox::-webkit-scrollbar { + width: 6px; + height: 6px; + } + + /* 婊氬姩鏉� */ + .contentBox::-webkit-scrollbar-thumb { + background-color: #b3d8ff; + border-radius: 6px; + } + + /* 婊氬姩鏉¢紶鏍囩粡杩囨牱寮� */ + .contentBox::-webkit-scrollbar-thumb:hover { + background-color: #b3d8ff; + border-radius: 6px; + } + + /* 婊氬姩鏉¤建閬� */ + .contentBox::-webkit-scrollbar-track-piece { + -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); + border-radius: 10px; + background: #ededed; + } + } } </style> - \ No newline at end of file -- Gitblit v1.9.3