From 809f8b1279bf84f28bccabc4f95a8eba6c22a24d Mon Sep 17 00:00:00 2001 From: Fixiaobai <fixiaobai@163.com> Date: 星期二, 29 八月 2023 10:30:04 +0800 Subject: [PATCH] 放行委托新增 --- src/views/laboratory/role/index.vue | 900 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 739 insertions(+), 161 deletions(-) diff --git a/src/views/laboratory/role/index.vue b/src/views/laboratory/role/index.vue index 1c01efc..26da055 100644 --- a/src/views/laboratory/role/index.vue +++ b/src/views/laboratory/role/index.vue @@ -1,157 +1,626 @@ <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 style="display: flex;align-items: center;" 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-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-col> + <el-button type="primary" @click="searchRole">鏌ヨ</el-button> + <el-button type="primary" plain>閲嶇疆</el-button> + </el-col> </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> + </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="index" min-width="8%" /> + <el-table-column prop="roleName" label="瑙掕壊鍚嶇О" min-width="20%" /> + <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="20%" /> + <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="20%" /> + <el-table-column label="鎿嶄綔" min-width="12%"> + <template slot-scope="scope"> + <el-button type="text" @click="selectRoleInfo(scope)" size="small">鏌ョ湅</el-button> + <el-button type="text" @click="upRole(scope)" size="small">缂栬緫</el-button> + <el-button type="text" @click="removeRole(scope)" 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="50%"> + <el-form :model="roleAdd" ref="roleAdd" label-position="right" label-width="100px"> + <el-col :span="24" style="display: flex;justify-content: space-between;"> + <el-form-item :rules="nameaRules" label="瑙掕壊鍚�:"> + <el-input @blur="assertName" style="width: 300px" v-model="roleAdd.roleName" placeholder="璇疯緭鍏ヨ鑹插悕"> + </el-input> + </el-form-item> + <!-- <el-form-item label="鑿滃崟閫夋嫨:"> + <el-cascader style="width: 300px" collapse-tags size="medium " filterable :props="props" + v-model="roleAdd.menuData" :options="menuInfo"> + <template slot-scope="{ data }"> + <span>{{ data.label }}</span> + </template> + </el-cascader> + </el-form-item> --> + </el-col> + </el-form> + <el-col :span="24"> + <el-table height="300" :data="menuInfo" style="width: 100%;margin-bottom: 20px;" row-key="id" + :default-expand-all="false" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> + <el-table-column highlight-current-row prop="parentId" label="鑿滃崟绫诲瀷" sortable width="180"> + <template slot-scope="scope"> + <span v-if="scope.row.parentId == 0" style="color: #409eff;">涓昏彍鍗�</span> + <!-- <span v-if="scope.row.parentId == 0 && scope.row.children === undefined" style="color: #409eff;"> + 涓昏彍鍗� + </span> --> + </template> + </el-table-column> + <el-table-column prop="name" label="鑿滃崟鍚�" sortable width="180"> + <template slot-scope="scope"> + <el-col v-if="scope.row.parentId == 0"> + <span style="color: #409eff;">{{ scope.row.name }}</span> + </el-col> + <el-col v-else> + <span style="color: #40b815;">{{ scope.row.name }}</span> + </el-col> + </template> + </el-table-column> + <el-table-column prop="id" label="鎿嶄綔鏉冮檺"> + <template slot-scope="scope"> + <el-col v-if="scope.row.parentId == 0 && scope.row.children != undefined"> + <!-- <el-checkbox v-model="scope.row.select">鏌ヨ</el-checkbox> --> + </el-col> + <el-col v-else> + <el-checkbox size="medium" v-model="scope.row.selected" @change="chekSelect(scope)">鏌ヨ</el-checkbox> + <el-checkbox size="medium" v-model="scope.row.added" @change="chekAdd(scope)">娣诲姞</el-checkbox> + <el-checkbox size="medium" v-model="scope.row.updated" @change="chekUpdate(scope)">淇敼</el-checkbox> + <el-checkbox size="medium" v-model="scope.row.deleted" @change="chekDelet(scope)">鍒犻櫎</el-checkbox> + </el-col> + </template> + </el-table-column> + </el-table> + </el-col> + <span slot="footer" class="dialog-footer"> + <el-button @click="clearAll">鍙� 娑�</el-button> + <el-button type="primary" @click="addRole">纭� 瀹�</el-button> + </span> + </el-dialog> + + <el-dialog top="5vh" title="缂栬緫瑙掕壊" :visible.sync="dialogTableVisibleUpdate" width="50%"> + <el-form :model="updateRole" ref="updateRole" label-position="right" label-width="100px"> + <el-col :span="24" style="display: flex;justify-content: space-between;"> + <el-form-item :rules="nameaRules" label="瑙掕壊鍚�:"> + <el-input @blur="assertUpName" style="width: 300px" v-model="updateRole.roleName" placeholder="璇疯緭鍏ヨ鑹插悕"> + </el-input> + </el-form-item> + <!-- <el-form-item label="鑿滃崟閫夋嫨:"> + <el-cascader style="width: 300px" collapse-tags size="medium " filterable :props="props" + v-model="roleAdd.menuData" :options="menuInfo"> + <template slot-scope="{ data }"> + <span>{{ data.label }}</span> + </template> + </el-cascader> + </el-form-item> --> + </el-col> + </el-form> + <el-col :span="24"> + <el-table height="500" :data="menuUpdateInfo" style="width: 100%;margin-bottom: 20px;" row-key="id" + :default-expand-all="true" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> + <el-table-column highlight-current-row prop="parentId" label="鑿滃崟绫诲瀷" sortable width="180"> + <template slot-scope="scope"> + <span v-if="scope.row.parentId == 0" style="color: #409eff;">涓昏彍鍗�</span> + <!-- <span v-if="scope.row.parentId == 0 && scope.row.children === undefined" style="color: #409eff;"> + 涓昏彍鍗� + </span> --> + </template> + </el-table-column> + <el-table-column prop="name" label="鑿滃崟鍚�" sortable width="180"> + <template slot-scope="scope"> + <el-col v-if="scope.row.parentId == 0"> + <span style="color: #409eff;">{{ scope.row.name }}</span> + </el-col> + <el-col v-else> + <span style="color: #40b815;">{{ scope.row.name }}</span> + </el-col> + </template> + </el-table-column> + <el-table-column prop="id" label="鎿嶄綔鏉冮檺"> + <template slot-scope="scope"> + <el-col v-if="scope.row.parentId == 0 && scope.row.children != undefined"> + <!-- <el-checkbox v-model="scope.row.select">鏌ヨ</el-checkbox> --> + </el-col> + <el-col v-else> + <el-checkbox size="medium" v-model="scope.row.selected" @change="chekSelect(scope)">鏌ヨ</el-checkbox> + <el-checkbox size="medium" v-model="scope.row.added" @change="chekAdd(scope)">娣诲姞</el-checkbox> + <el-checkbox size="medium" v-model="scope.row.updated" @change="chekUpdate(scope)">淇敼</el-checkbox> + <el-checkbox size="medium" v-model="scope.row.deleted" @change="chekDelet(scope)">鍒犻櫎</el-checkbox> + </el-col> + </template> + </el-table-column> + </el-table> + </el-col> + <span slot="footer" class="dialog-footer"> + <el-button @click="clearUPAll">鍙� 娑�</el-button> + <el-button type="primary" @click="cilckUP">纭� 瀹�</el-button> + </span> + </el-dialog> + + <el-dialog top="5vh" title="瑙掕壊瀵熺湅" :visible.sync="dialogTableSelectVisible" width="50%"> + <el-form :model="selectMenuInfo" ref="selectMenuInfo" label-position="right" label-width="100px"> + <el-col :span="24" style="display: flex;justify-content: space-between;"> + <el-form-item label="瑙掕壊鍚�:"> + <el-input style="width: 300px" v-model="selectMenuInfo.roleName" readonly> + </el-input> + </el-form-item> + <!-- <el-form-item label="鑿滃崟閫夋嫨:"> + <el-cascader style="width: 300px" collapse-tags size="medium " filterable :props="props" + v-model="roleAdd.menuData" :options="menuInfo"> + <template slot-scope="{ data }"> + <span>{{ data.label }}</span> + </template> + </el-cascader> + </el-form-item> --> + </el-col> + </el-form> + <el-col :span="24"> + <el-table height="500" :data="selectMenuInfo.menuData" style="width: 100%;margin-bottom: 20px;" row-key="menuId" + :default-expand-all="true" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> + <el-table-column highlight-current-row prop="parentId" label="鑿滃崟绫诲瀷" sortable width="180"> + <template slot-scope="scope"> + <span v-if="scope.row.parentId == 0" style="color: #409eff;">涓昏彍鍗�</span> + <!-- <span v-if="scope.row.parentId == 0 && scope.row.children === undefined" style="color: #409eff;"> + 涓昏彍鍗� + </span> --> + </template> + </el-table-column> + <el-table-column prop="menuName" label="鑿滃崟鍚�" sortable width="180"> + <template slot-scope="scope"> + <el-col v-if="scope.row.parentId == 0"> + <span style="color: #409eff;">{{ scope.row.menuName }}</span> + </el-col> + <el-col v-else> + <span style="color: #40b815;">{{ scope.row.menuName }}</span> + </el-col> + </template> + </el-table-column> + <el-table-column prop="menuId" label="鎿嶄綔鏉冮檺"> + <template slot-scope="scope"> + <el-col v-if="scope.row.parentId == 0 && scope.row.children.length > 0"> + <!-- <el-checkbox v-model="scope.row.select">鏌ヨ</el-checkbox> --> + </el-col> + <el-col id="selectRoleCheck" class="selectRoleCheck" v-else> + <el-checkbox size="medium" disabled v-model="scope.row.selected">鏌ヨ</el-checkbox> + <el-checkbox size="medium" disabled v-model="scope.row.added">娣诲姞</el-checkbox> + <el-checkbox size="medium" disabled v-model="scope.row.updated">淇敼</el-checkbox> + <el-checkbox size="medium" disabled v-model="scope.row.deleted">鍒犻櫎</el-checkbox> + </el-col> + </template> + </el-table-column> + </el-table> + </el-col> + </el-dialog> </div> </template> <script> -import { getPlanPageList, getStandingPageList } from '@/api/laboratory/measure' +import { getMenusTree, addRoleInfo, assertRepeat, getAllRoleAndMenuInfo, deleteRole, updateRoleMenu } from '@/api/laboratory/role' +import { default as menuPower } from './menuPower.vue' export default { + components: { + menuPower: () => import('./menuPower.vue') + }, data() { return { - searchData:{ - roleName: '', - permission: '' + props: { multiple: true }, + dialogTableVisibleUpdate: false, + updateRole: { + roleId: null, + roleName: null, + lastName: null, + menuData: null, + lastMenuSelect: null }, - 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:{ + selectRole: [], + roleAdd: { + roleName: null, + menuData: null + }, + nameaRules: [{ required: true, message: '璇疯緭鍏ヨ鑹插悕' }], + menuTableTree: null, + searchData: { + roleName: '', + }, + assertRepeatName: true, + menuInfo: [], + menuUpdateInfo: [], + selectMenuInfo: { + roleName: null, + menuData: null + }, + roleTable: [], + updateData: { oldPassWord: '', newPassWord: '', confirmPassWord: '' }, dialogTableVisible: false, + dialogTableSelectVisible: false, + addOrUp: false, currentPage: 1, pageSize: 5, total: 20 } }, - created(){ - + created() { + + }, + mounted() { + this.start() }, methods: { - addRole(){ + selectRoleInfo(scope) { + this.selectMenuInfo.roleName = scope.row.roleName + this.selectMenuInfo.menuData = scope.row.roleMenuList + console.log(this.selectMenuInfo.menuData); + this.dialogTableSelectVisible = true + }, + searchRole() { + this.start() + }, + clearUPAll() { + this.updateRole = { + roleId: null, + roleName: null, + lastName: null, + menuData: null, + lastMenuSelect: null + } + this.menuUpdateInfo = [] + this.dialogTableVisibleUpdate = false + }, + async cilckUP() { + if (this.updateRole.roleName == null || this.updateRole.roleName == '') { + this.$message({ + message: '璇疯緭鍏ヨ鑹插悕', + type: 'warning' + }); + return + } + if (!this.assertRepeatName) { + this.$message({ + message: '瑙掕壊鍚嶉噸澶嶏紝璇烽噸鏂拌緭鍏�', + type: 'warning' + }); + return + } + this.menuUpdateInfo.forEach(item => { + if (item.children != undefined) { + item.children.forEach(c => { + if (c.added) { + item.selected = true + } + if (c.selected) { + item.selected = true + } + if (c.updated) { + item.selected = true + } + if (c.deleted) { + item.selected = true + } + }) + } + }) + console.log(this.menuUpdateInfo); + this.updateRole.menuData = JSON.parse(JSON.stringify(this.menuUpdateInfo)); + this.updateRole.menuData.forEach(item => { + if (item.children != undefined) { + let child = item.children.filter(c => { + return c.added == true || c.selected == true || c.deleted == true || c.updated === true + }) + item.children = child + } + }) + this.updateRole.menuData = this.updateRole.menuData.filter(item => { + return item.selected == true + }) + this.assertDeleteOrUp() + console.log(this.updateRole); + let up = await updateRoleMenu(this.updateRole) + if (up.data) { + this.$message({ + type: 'success', + message: '缂栬緫鎴愬姛!' + }); + this.start() + this.clearUPAll() + } else { + this.$message.error('缂栬緫澶辫触锛佽閲嶆柊鎿嶄綔'); + } + + }, + async upRole(scope) { + this.updateRole.roleId = scope.row.roleId + this.updateRole.roleName = scope.row.roleName + this.updateRole.lastName = scope.row.roleName + let menuSelect = scope.row.roleMenuList + this.updateRole.lastMenuSelect = scope.row.roleMenuList + let res = await getMenusTree(); + this.menuUpdateInfo = res.data + this.menuUpdateInfo.forEach(item => { + this.$set(item, 'added', false); + this.$set(item, 'updated', false); + this.$set(item, 'deleted', false); + this.$set(item, 'selected', false); + if (item.children.length == 0) { + delete item['children'] + } else { + item.children.forEach(c => { + this.$set(c, 'selected', false); + this.$set(c, 'added', false); + this.$set(c, 'updated', false); + this.$set(c, 'deleted', false); + if (c.children.length == 0) { + delete c['children'] + } + }) + } + }) + menuSelect.forEach(ms => { + this.menuUpdateInfo.forEach(item => { + if (ms.menuName === item.name) { + item.selected = ms.selected + item.added = ms.added + item.deleted = ms.deleted + item.updated = ms.updated + ms.children.forEach(msc => { + if (item.children != undefined) { + item.children.forEach(itemc => { + if (itemc.name === msc.menuName) { + itemc.selected = msc.selected + itemc.added = msc.added + itemc.deleted = msc.deleted + itemc.updated = msc.updated + } + }) + } + }) + } + }) + }) + this.dialogTableVisibleUpdate = true + }, + removeRole(scope) { + this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ヨ鑹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(async () => { + this.roleTable = this.roleTable.filter(item => { + return item.roleId != scope.row.roleId + }); + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + await deleteRole({ id: scope.row.roleId }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + async start() { + let res = await getAllRoleAndMenuInfo({ currentPage: this.currentPage, pageSize: this.pageSize, name: this.searchData.roleName }) + res.data.list.forEach(item => { + item.roleId = String(item.roleId) + }) + this.roleTable = res.data.list + this.total = res.data.total + }, + async assertName() { + if (this.roleAdd.roleName == null || this.roleAdd.roleName == '') { + this.$message({ + message: '璇疯緭鍏ヨ鑹插悕', + type: 'warning' + }); + return + } + let res = await assertRepeat({ roleName: this.roleAdd.roleName }) + if (!res.data) { + this.assertRepeatName = false + this.$message({ + message: '瑙掕壊鍚嶉噸澶嶏紝璇烽噸鏂拌緭鍏ワ紒', + type: 'warning' + }); + } else { + this.assertRepeatName = true + } + }, + chekAdd(scope) { + if (scope.row.added) { + scope.row.selected = true + } + this.updateFatherState(scope) + }, + chekUpdate(scope) { + if (scope.row.updated) { + scope.row.selected = true + } + this.updateFatherState(scope) + }, + chekDelet(scope) { + if (scope.row.deleted) { + scope.row.selected = true + } + this.updateFatherState(scope) + }, + chekSelect(scope) { + this.updateFatherState(scope) + }, + updateFatherState(scope) { + if (this.menuUpdateInfo != []) { + this.menuUpdateInfo.forEach(item => { + if (item.id == scope.row.parentId) { + if (item.children != undefined) { + let childrenFalse = item.children.length * 4; + let countFalse = 0; + item.children.forEach(c => { + if (c.added == false) { + countFalse++; + } + if (c.deleted == false) { + countFalse++; + } + if (c.updated == false) { + countFalse++; + } + if (c.selected == false) { + countFalse++; + } + }) + if (childrenFalse === countFalse) { + item.selected = false + } + } + } + }) + } + if (this.menuInfo != []) { + this.menuInfo.forEach(item => { + if (item.id == scope.row.parentId) { + if (item.children != undefined) { + let childrenFalse = item.children.length * 4; + let countFalse = 0; + item.children.forEach(c => { + if (c.added == false) { + countFalse++; + } + if (c.deleted == false) { + countFalse++; + } + if (c.updated == false) { + countFalse++; + } + if (c.selected == false) { + countFalse++; + } + }) + if (childrenFalse === countFalse) { + item.selected = false + } + } + } + }) + } + }, + async addClickRole() { + let res = await getMenusTree(); + this.menuInfo = res.data + this.menuInfo.forEach(item => { + this.$set(item, 'selected', false); + this.$set(item, 'added', false); + this.$set(item, 'updated', false); + this.$set(item, 'deleted', false); + if (item.children.length == 0) { + delete item['children'] + } else { + item.children.forEach(c => { + this.$set(c, 'selected', false); + this.$set(c, 'added', false); + this.$set(c, 'updated', false); + this.$set(c, 'deleted', false); + if (c.children.length == 0) { + delete c['children'] + } + }) + } + }) this.dialogTableVisible = true - // console.log(this.dialogTableVisible) + }, + async addRole() { + if (this.roleAdd.roleName == null || this.roleAdd.roleName == '') { + this.$message({ + message: '璇疯緭鍏ヨ鑹插悕', + type: 'warning' + }); + return + } + if (!this.assertRepeatName) { + this.$message({ + message: '瑙掕壊鍚嶉噸澶嶏紝璇烽噸鏂拌緭鍏�', + type: 'warning' + }); + return + } + this.menuInfo.forEach(item => { + if (item.children != undefined) { + item.children.forEach(c => { + if (c.added) { + item.selected = true + } + if (c.selected) { + item.selected = true + } + if (c.updated) { + item.selected = true + } + if (c.deleted) { + item.selected = true + } + }) + } + }) + console.log(this.menuInfo); + this.roleAdd.menuData = JSON.parse(JSON.stringify(this.menuInfo)); + this.roleAdd.menuData.forEach(item => { + if (item.children != undefined) { + let child = item.children.filter(c => { + return c.added == true || c.selected == true || c.deleted == true || c.updated === true + }) + item.children = child + } + }) + this.roleAdd.menuData = this.roleAdd.menuData.filter(item => { + return item.selected == true + }) + let res = await addRoleInfo(this.roleAdd); + this.start() + if (res.data) { + this.$message({ + message: '娣诲姞瑙掕壊鎴愬姛', + type: 'success' + }); + this.dialogTableVisible = false + } else { + this.$message.error('娣诲姞澶辫触锛佽閲嶆柊鎿嶄綔'); + } + }, + assertDml(a, b) { + a = b ? true : false + console.log(a); + return a }, // search(){}, // reset(){}, @@ -164,50 +633,159 @@ handleCurrentChange(val) { console.log(`褰撳墠鏄${val}椤礰) this.currentPage = val + }, + clearAll() { + this.roleAdd.roleName = null + this.roleAdd.menuData = null + this.menuInfo = [] + this.assertRepeatName = true + this.dialogTableVisible = false + }, + assertDeleteOrUp() { + console.log("---------"); + console.log(this.updateRole.menuData); + this.updateRole.lastMenuSelect + this.updateRole.menuData + let newTree = [] + let oldTree = [] + this.updateRole.menuData.forEach(item => { + const obj = { + menuId: item.id, + menuName: item.name, + added: item.added, + parentId: item.parentId, + deleted: item.deleted, + updated: item.updated, + selected: item.selected + } + newTree.push(obj) + if (item.children != undefined && obj.selected != false) { + item.children.forEach(c => { + const objc = { + menuId: c.id, + menuName: c.name, + parentId: c.parentId, + added: c.added, + deleted: c.deleted, + updated: c.updated, + selected: c.selected + } + newTree.push(objc) + }) + } + }) + console.log(newTree); + // this.updateRole.lastMenuSelect.forEach(item => { + // const obj = { + // menuId: item.menuId, + // menuName: item.menuName, + // added: item.added, + // deleted: item.deleted, + // updated: item.updated, + // selected: item.selected + // } + // if (obj.selected) { + // oldTree.push(obj) + // } + // if (item.children != [] && obj.selected != false) { + // item.children.forEach(c => { + // const objc = { + // menuId: c.menuId, + // menuName: c.menuName, + // added: c.added, + // deleted: c.deleted, + // updated: c.updated, + // selected: c.selected + // } + // oldTree.push(objc) + // }) + // } + // }) + console.log(oldTree); + // this.updateRole.lastMenuSelect = oldTree + this.updateRole.menuData = newTree + }, + async assertUpName() { + if (this.updateRole.roleName == null || this.updateRole.roleName == '') { + this.$message({ + message: '璇疯緭鍏ヨ鑹插悕绉帮紒', + type: 'warning' + }); + return + } + if (this.updateRole.roleName === this.updateRole.lastName) { + return + } + let res = await assertRepeat({ roleName: this.updateRole.roleName }) + if (!res.data) { + this.assertRepeatName = false + this.$message({ + message: '瑙掕壊鍚嶉噸澶嶏紝璇烽噸鏂拌緭鍏ワ紒', + type: 'warning' + }); + } else { + this.assertRepeatName = true + } } } } </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> + +<style> +#selectRolecheck .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #fff !important; +} + +#selectRoleCheck .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: #409EFF; + border-color: #409EFF; +} +</style> \ No newline at end of file -- Gitblit v1.9.3