| | |
| | | <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">æ¥è¯¢</el-button> |
| | | <el-button type="primary" plain>éç½®</el-button> |
| | |
| | | <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 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" size="small">ç¼è¾</el-button> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-dialog title="æ°å¢è§è²" :visible.sync="dialogTableVisible" width="60%"> |
| | | <el-dialog title="æ°å¢è§è²" :visible.sync="dialogTableVisible" width="50%"> |
| | | <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-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 size="medium " v-model="roleAdd.menuData" :options="menuInfo"> |
| | | <template slot-scope="{ node, data }"> |
| | | <!-- <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> |
| | | <span v-if="!node.isLeaf"> ({{ }}) </span> |
| | | </template> |
| | | </el-cascader> |
| | | </el-form-item> |
| | | </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 && scope.row.children != undefined" 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="dialogTableVisible = false">å æ¶</el-button> |
| | | <el-button @click="clearAll">å æ¶</el-button> |
| | | <el-button type="primary" @click="addRole">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getMenusTree } from '@/api/laboratory/role' |
| | | import { getMenusTree, addRoleInfo, assertRepeat, getAllRoleAndMenuInfo } from '@/api/laboratory/role' |
| | | import { default as menuPower } from './menuPower.vue' |
| | | export default { |
| | | components: { |
| | | menuPower: () => import('./menuPower.vue') |
| | | }, |
| | | data() { |
| | | return { |
| | | props: { multiple: true }, |
| | |
| | | roleName: null, |
| | | menuData: null |
| | | }, |
| | | nameaRules: [{ required: true, message: '请è¾å
¥è§è²å' }], |
| | | menuTableTree: null, |
| | | searchData: { |
| | | roleName: '', |
| | | permission: '' |
| | | }, |
| | | assertRepeatName: true, |
| | | 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' |
| | | }], |
| | | roleTable: [], |
| | | updateData: { |
| | | oldPassWord: '', |
| | | newPassWord: '', |
| | |
| | | created() { |
| | | |
| | | }, |
| | | mounted() { |
| | | this.start() |
| | | }, |
| | | methods: { |
| | | chekSelect(scope) { |
| | | |
| | | }, |
| | | async start() { |
| | | let res = await getAllRoleAndMenuInfo() |
| | | this.roleTable = res.data |
| | | console.log(res); |
| | | }, |
| | | 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) { |
| | | scope.row.selected = true |
| | | }, |
| | | chekUpdate(scope) { |
| | | scope.row.selected = true |
| | | }, |
| | | chekDelet(scope) { |
| | | scope.row.selected = true |
| | | }, |
| | | 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 |
| | | 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 => { |
| | | c.select = false |
| | | c.add = false |
| | | c.update = false |
| | | c.delete = false |
| | | 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) |
| | | }, |
| | | addRole() { |
| | | console.log(this.roleAdd); |
| | | 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); |
| | | 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(){}, |
| | |
| | | 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 |
| | | } |
| | | } |
| | | } |