From 71b0ce1621125802d9f66b7cf94bdabbe878c55d Mon Sep 17 00:00:00 2001 From: Fixiaobai <fixiaobai@163.com> Date: 星期三, 23 八月 2023 18:03:16 +0800 Subject: [PATCH] 角色管理 --- src/views/laboratory/role/index.vue | 287 ++++++++++++++++++++++++++++----------------------------- 1 files changed, 140 insertions(+), 147 deletions(-) diff --git a/src/views/laboratory/role/index.vue b/src/views/laboratory/role/index.vue index 1c01efc..494b9da 100644 --- a/src/views/laboratory/role/index.vue +++ b/src/views/laboratory/role/index.vue @@ -1,140 +1,105 @@ <template> <div> - <div class="content-main"> - <div class="top-bar"> - <el-form ref="form" :inline="true" :model="searchData"> - <el-form-item label="瑙掕壊鍚嶇О锛�" class="sermargin"> - <el-input - v-model="searchData.roleName" - class="input-form" - placeholder="璇疯緭鍏ヨ鑹插悕绉�" - style="width:250px" - > - </el-input> - </el-form-item> - <el-form-item label="鏉冮檺锛�" class="sermargin"> - <el-input - v-model="searchData.permission" - class="input-form" - placeholder="璇疯緭鍏ユ潈闄�" - style="width:250px" - > - </el-input> - </el-form-item> - <el-form-item class="rightBtn"> - <el-button type="primary" @click="search">鏌ヨ</el-button> - <el-button type="primary" plain @click="reset">閲嶇疆</el-button> - </el-form-item> - </el-form> - <el-form> - <el-form-item class="rightBtn"> - <el-button type="primary" @click="addRole" icon="el-icon-plus">鏂板鏉冮檺</el-button> - </el-form-item> - </el-form> - </el-form> - </div> - <div class="library-table"> - <div class="table-box"> - <el-table - :max-height="800" - :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" - :data="roleTable" - style="width: 100%" - > - <el-table-column - type="selection" - min-width="8%" - /> - <el-table-column - prop="rolename" - label="瑙掕壊鍚嶇О" - min-width="20%" - /> - <el-table-column - prop="permission" - label="鏉冮檺" - min-width="20%" - /> - <el-table-column - prop="create_time" - label="鍒涘缓鏃堕棿" - min-width="20%" - /> - <el-table-column - prop="update_time" - label="鏇存柊鏃堕棿" - min-width="20%" - /> - <el-table-column - label="鎿嶄綔" - min-width="12%" - > - <template slot-scope="scope"> - <el-button type="text" size="small" >缂栬緫</el-button> - <el-button type="text" size="small" >鍒犻櫎</el-button> - </template> - </el-table-column> - </el-table> - <!-- 鍒嗛〉鍣� --> - <div class="pagination"> - <el-pagination - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - :current-page="currentPage" - :page-sizes="[5, 10, 20]" - :page-size="pageSize" - layout="total, sizes, prev, pager, next, jumper" - :total="total"> - </el-pagination> - </div> - </div> - </div> - </div> - <el-dialog title="淇敼瀵嗙爜" :visible.sync="dialogTableVisible" width="30%"> - <el-form :model="updateData" ref="updateData" label-position="right" label-width="100px"> - <el-form-item label="鍘熷瘑鐮侊細"> - <el-input style="width: 300px" v-model="updateData.oldPassWord" placeholder="璇疯緭鍏ュ師瀵嗙爜" > + <div class="content-main"> + <div class="top-bar"> + <el-form ref="form" :inline="true" :model="searchData"> + <el-form-item label="瑙掕壊鍚嶇О锛�" class="sermargin"> + <el-input v-model="searchData.roleName" class="input-form" placeholder="璇疯緭鍏ヨ鑹插悕绉�" style="width:250px"> </el-input> </el-form-item> - <el-form-item label="鏂板瘑鐮侊細"> - <el-input style="width: 300px" v-model="updateData.newPassWord" placeholder="璇疯緭鍏ユ柊瀵嗙爜"> + <el-form-item label="鏉冮檺锛�" class="sermargin"> + <el-input v-model="searchData.permission" class="input-form" placeholder="璇疯緭鍏ユ潈闄�" style="width:250px"> </el-input> </el-form-item> - <el-form-item label="纭瀵嗙爜锛�"> - <el-input style="width: 300px" v-model="updateData.confirmPassWord" placeholder="鍐嶆杈撳叆瀵嗙爜"> - </el-input> + <el-form-item class="rightBtn"> + <el-button type="primary">鏌ヨ</el-button> + <el-button type="primary" plain>閲嶇疆</el-button> </el-form-item> </el-form> - <span slot="footer" class="dialog-footer"> - <el-button @click="dialogTableVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="changePassword">纭� 瀹�</el-button> - </span> - </el-dialog> + <el-form> + <el-form-item class="rightBtn"> + <el-button type="primary" @click="addClickRole" icon="el-icon-plus">鏂板瑙掕壊</el-button> + </el-form-item> + </el-form> + </el-form> + </div> + <div class="library-table"> + <div class="table-box"> + <el-table :max-height="800" :cell-style="{ textAlign: 'center' }" + :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }" + :data="roleTable" style="width: 100%"> + <el-table-column type="selection" min-width="8%" /> + <el-table-column prop="rolename" label="瑙掕壊鍚嶇О" min-width="20%" /> + <el-table-column prop="permission" label="鏉冮檺" min-width="20%" /> + <el-table-column prop="create_time" label="鍒涘缓鏃堕棿" min-width="20%" /> + <el-table-column prop="update_time" label="鏇存柊鏃堕棿" min-width="20%" /> + <el-table-column label="鎿嶄綔" min-width="12%"> + <template slot-scope="scope"> + <el-button type="text" size="small">缂栬緫</el-button> + <el-button type="text" size="small">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉鍣� --> + <div class="pagination"> + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" + :current-page="currentPage" :page-sizes="[5, 10, 20]" :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" :total="total"> + </el-pagination> + </div> + </div> + </div> + </div> + <el-dialog title="鏂板瑙掕壊" :visible.sync="dialogTableVisible" width="60%"> + <el-form :model="roleAdd" ref="roleAdd" label-position="right" label-width="100px"> + <el-form-item label="瑙掕壊鍚�:"> + <el-input style="width: 300px" v-model="roleAdd.roleName" placeholder="璇疯緭鍏ヨ鑹插悕"> + </el-input> + </el-form-item> + <el-form-item label="鍔熻兘閫夋嫨:"> + <el-cascader size="medium " v-model="roleAdd.menuData" :options="menuInfo"> + <template slot-scope="{ node, data }"> + <span>{{ data.label }}</span> + <span v-if="!node.isLeaf"> ({{ }}) </span> + </template> + </el-cascader> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogTableVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="addRole">纭� 瀹�</el-button> + </span> + </el-dialog> </div> </template> <script> -import { getPlanPageList, getStandingPageList } from '@/api/laboratory/measure' +import { getMenusTree } from '@/api/laboratory/role' export default { data() { return { - searchData:{ + props: { multiple: true }, + roleAdd: { + roleName: null, + menuData: null + }, + searchData: { roleName: '', permission: '' }, - roleTable:[{ + menuInfo: [], + roleTable: [{ rolename: '閮ㄩ暱', permission: 'ROOT', create_time: '2023-07-04 12:12:12', update_time: '2023-07-04 12:12:12' - },{ + }, { rolename: '缁勯暱', permission: '--', create_time: '2023-07-04 12:12:12', update_time: '2023-07-04 12:12:12' }], - updateData:{ + updateData: { oldPassWord: '', newPassWord: '', confirmPassWord: '' @@ -145,13 +110,37 @@ total: 20 } }, - created(){ - + created() { + }, methods: { - addRole(){ + async addClickRole() { + let res = await getMenusTree(); + this.menuInfo = res.data + this.menuInfo.forEach(item => { + item.select = false + item.add = false + item.update = false + item.delete = false + if (item.children.length == 0) { + delete item['children'] + } else { + item.children.forEach(c => { + c.select = false + c.add = false + c.update = false + c.delete = false + if (c.children.length == 0) { + delete c['children'] + } + }) + } + }) this.dialogTableVisible = true // console.log(this.dialogTableVisible) + }, + addRole() { + console.log(this.roleAdd); }, // search(){}, // reset(){}, @@ -170,44 +159,48 @@ </script> <style scoped> +.top-bar { + margin: -25px -15px; + background: #fff; + display: flex; + justify-content: space-between; + padding: 5px 24px 0px 24px; -.top-bar{ - margin: -25px -15px; + .sermargin { + margin-right: 60px; + } +} + +.rightBtn { + margin-right: 50px +} + +.library-table { + background-color: #fff; + flex: 1; + margin: 0px -15px; + margin-top: 40px; + display: flex; + flex-direction: column; + + .table-box { + padding: 10px 20px; + margin-top: 0px; + flex: 1; background: #fff; + /* padding: 20px 20px 10px 20px; */ display: flex; - justify-content: space-between; - padding: 5px 24px 0px 24px; - .sermargin{ - margin-right: 60px; + flex-direction: column; + + .el-table { + flex: 1; } } -.rightBtn{ - margin-right: 50px -} -.library-table{ - background-color: #fff; - flex: 1; - margin: 0px -15px; - margin-top: 40px; - display: flex; - flex-direction: column; - .table-box{ - padding: 10px 20px; - margin-top: 0px; - flex: 1; - background: #fff; - /* padding: 20px 20px 10px 20px; */ - display: flex; - flex-direction: column; - .el-table { - flex: 1; - } - } - .pagination{ - display:flex; - justify-content:end; - margin-top: 20px - } - } + .pagination { + display: flex; + justify-content: end; + margin-top: 20px + } +} </style> -- Gitblit v1.9.3