From 305b8976e9ad666e52c157ebc79f05c2fe03d1ff Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 05 九月 2023 16:46:42 +0800
Subject: [PATCH] modified: src/components/experiment/checkTheReport/index.vue modified: src/views/laboratory/ledger/index.vue modified: src/views/standardLibrary/index.vue
---
src/views/laboratory/role/index.vue | 904 ++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 743 insertions(+), 161 deletions(-)
diff --git a/src/views/laboratory/role/index.vue b/src/views/laboratory/role/index.vue
index 1c01efc..c91733a 100644
--- a/src/views/laboratory/role/index.vue
+++ b/src/views/laboratory/role/index.vue
@@ -1,157 +1,630 @@
<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" @click="clear()" 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: 'left' }"
+ :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'left' }"
+ :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()
+ },
+ clear(){
+ this.searchData.roleName=''
+ 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 +637,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