Merge remote-tracking branch 'origin/master'
# Conflicts:
# Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
# Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
| | |
| | | } |
| | | }) |
| | | } |
| | | //菜单角色按钮权限 |
| | | export const getButtonsByRoleId = (params) => { |
| | | return request({ |
| | | url: '/api/ubcs-system/menu/getButtonsByRoleId', |
| | | method: 'get', |
| | | params: { |
| | | ...params |
| | | } |
| | | }) |
| | | } |
| | |
| | | <style lang="scss" scoped> |
| | | .app { |
| | | overflow: auto; |
| | | height: calc(100vh - 150px); |
| | | height: calc(100vh - 145px); |
| | | } |
| | | |
| | | .app::-webkit-scrollbar { |
| | |
| | | .main { |
| | | display: flex; |
| | | flex-direction: column; |
| | | height: calc(100vh - 150px); |
| | | height: calc(100vh - 145px); |
| | | min-height: 400px; |
| | | } |
| | | |
| | |
| | | title="分类授权" |
| | | top="-45px" @close="closeDialog"> |
| | | <el-table |
| | | :key="itemKey" |
| | | ref="dataTable" |
| | | v-loading="isLoading" |
| | | :data="classifyAuthData" |
| | |
| | | v-if="item.type === 'select'" |
| | | slot="prepend" |
| | | v-model="row[item.prop]" |
| | | @change="roleChange" |
| | | @change="selectChange(row.roleData,row)" |
| | | > |
| | | <el-option |
| | | v-for="optionItem in roleList" |
| | |
| | | </el-input> |
| | | <el-checkbox |
| | | v-if="item.type === 'checkbox'" |
| | | v-model="row[item.prop]"> |
| | | v-model="row[item.prop]" |
| | | :disabled="row.allDisabled ? true :typeof row[item.prop] == 'undefined' || typeof row[item.prop] == null"> |
| | | </el-checkbox> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="info" plain @click="selectAllButton">按钮全选</el-button> |
| | | <el-button class="el-icon-plus" type="success" plain @click="addClassifyAuth"></el-button> |
| | | <el-button class="el-icon-minus" type="warning" plain @click="subClassifyAuth"></el-button> |
| | | <el-button type="primary" plain @click="submit">提 交</el-button> |
| | | <el-button type="danger" plain @click="isShowDialog = false">关 闭</el-button> |
| | | <el-button plain type="info" @click="selectAllButton">按钮全选</el-button> |
| | | <el-button class="el-icon-plus" plain type="success" @click="addClassifyAuth"></el-button> |
| | | <el-button class="el-icon-minus" plain type="warning" @click="subClassifyAuth"></el-button> |
| | | <el-button plain type="primary" @click="submit">提 交</el-button> |
| | | <el-button plain type="danger" @click="isShowDialog = false">关 闭</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | |
| | | <script> |
| | | import {getButtonByParentCode} from "@/api/system/menu" |
| | | import {getPage} from "@/api/system/role" |
| | | import {saveOrUpdate, getClassifyAuthList} from "@/api/system/classifyAuth" |
| | | import {saveOrUpdate, getClassifyAuthList, getButtonsByRoleId} from "@/api/system/classifyAuth" |
| | | import {v4 as uuidv4} from 'uuid'; |
| | | |
| | | export default { |
| | |
| | | roleList: [], |
| | | //当前选中的表格行 |
| | | selectList: [], |
| | | itemKey: '', |
| | | viewStatus: false, |
| | | addIndex: Number, |
| | | }; |
| | | }, |
| | | watch: { |
| | |
| | | let columnItem = { |
| | | label: item.name, |
| | | prop: item.id, |
| | | code: item.code, |
| | | type: "checkbox", |
| | | width: 180, |
| | | }; |
| | | tempData.push(columnItem); |
| | | }) |
| | | this.classifyAuthHeader = tempData |
| | | this.classifyAuthHeader = tempData; |
| | | resolve(); |
| | | }).catch(err => { |
| | | reject(err) |
| | |
| | | this.roleList = res.data.data.records; |
| | | }); |
| | | // 获取该分类下已授权的分类授权信息 |
| | | getClassifyAuthList({classifyId: this.classifyData.oid}).then(res => { |
| | | getClassifyAuthList({classifyId: this.classifyData.oid, authType: "classify_auth"}).then(res => { |
| | | //console.log(res.data.data); |
| | | let authDatas = res.data.data; |
| | | console.log('authDatas', authDatas) |
| | | if (authDatas.length > 0) { |
| | | authDatas.forEach(authData => { |
| | | authDatas.forEach((authData,index) => { |
| | | let item = { |
| | | oid: authData.oid, |
| | | roleData: authData.roleId, |
| | | classifyItem: this.classifyData.label, |
| | | index:index, |
| | | uuid: uuidv4(),//生成唯一的id |
| | | } |
| | | //将按钮设置进去 |
| | | authData.buttonIdList.forEach(data => { |
| | | Vue.set(item, data, true); |
| | | }); |
| | | //console.log(item) |
| | | this.classifyAuthData.push(item); |
| | | this.addIndex = this.classifyAuthData.length -1 ; |
| | | // console.log('classifyAuthData', this.classifyAuthData) |
| | | }) |
| | | } |
| | | this.roleHandlerMethods('', 'create', 0) |
| | | }); |
| | | }); |
| | | } |
| | |
| | | created() { |
| | | }, |
| | | methods: { |
| | | roleHandlerMethods(id, type, index) { |
| | | if (this.classifyAuthData.length > 0) { |
| | | let roleButtonId = type === 'select' ? id : this.classifyAuthData[0].roleData; |
| | | getButtonsByRoleId({roleId: roleButtonId, code: 'classifyTree'}).then(res => { |
| | | // 找到this.classifyAuthButton中没有对应的属性 |
| | | const filteredItems = this.classifyAuthButton.filter(item => { |
| | | return !res.data.data.find(x => x.id === item.id); |
| | | }); |
| | | |
| | | this.classifyAuthHeader.forEach((item) => { |
| | | if (filteredItems.some(x => x.id === item.prop)) { |
| | | this.$nextTick(() => { |
| | | |
| | | if(this.classifyAuthData[index] !== undefined && this.classifyAuthData[index] !== null){ |
| | | Object.keys(this.classifyAuthData[index]).forEach((key) => { |
| | | if (item.prop === key) { |
| | | this.classifyAuthData[index] = Object.assign({}, this.classifyAuthData[index], { [key]: undefined }); |
| | | if (item.code === "classify_view") { |
| | | this.$set(this.classifyAuthData[index],'allDisabled',true) |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | // console.log('classifyAuthData', this.classifyAuthData) |
| | | // console.log('item', item.prop) |
| | | this.itemKey = uuidv4(); |
| | | }) |
| | | } |
| | | }); |
| | | }) |
| | | } |
| | | }, |
| | | selectChange(row,index) { |
| | | this.roleHandlerMethods(row, 'select',index.index); |
| | | }, |
| | | // 关闭对话框 |
| | | closeDialog() { |
| | | this.$emit('update:visible', false); |
| | | this.classifyAuthData = []; |
| | | }, |
| | | // 角色改变时 |
| | | roleChange(roleId){ |
| | | console.log(roleId); |
| | | |
| | | }, |
| | | // 增加行 |
| | | addClassifyAuth() { |
| | |
| | | this.$message.warning("当前租户不存在角色信息!"); |
| | | return; |
| | | } |
| | | this.addIndex++; |
| | | let item = { |
| | | roleData: this.roleList[0].id, |
| | | classifyItem: this.classifyData.label, |
| | | index:this.addIndex, |
| | | uuid: uuidv4(),//生成唯一的id |
| | | } |
| | | //将按钮设置进去 |
| | |
| | | Vue.set(item, data.id, false); |
| | | }) |
| | | //console.log(item) |
| | | this.classifyAuthData.push(item) |
| | | // console.log(this.classifyAuthData); |
| | | this.classifyAuthData.push(item); |
| | | this.roleHandlerMethods('', 'add', this.addIndex) |
| | | }, |
| | | // 删除行 |
| | | subClassifyAuth() { |
| | |
| | | <!-- 全屏编辑--> |
| | | <el-dialog :before-close="escEdit" :visible.sync="attrEditVisible" append-to-body fullscreen="true"> |
| | | <attrCrud :ProData="this.ProData" :attrFlagChiledren="this.attrFlag" :crudArrayFlag="this.crudArrayFlag" |
| | | :editOpenFlag="editOpenFlag" :editStyleFlag="editStyleFlag" |
| | | :editOpenFlag="editOpenFlag" :editStyleFlag="editStyleFlag" :btnAuthList="btnAuthList" |
| | | @editCloseChildren="editClose"></attrCrud> |
| | | </el-dialog> |
| | | <!-- 组合规则--> |
| | |
| | | getAuthButtonList({classifyId: data.oid,code: "classifyTree",authType: "classify_auth"}).then(res => { |
| | | this.btnAuthList = res.data.data; |
| | | }).catch(error => { |
| | | window.console.log(error) |
| | | console.log(error) |
| | | }) |
| | | //操作新增和修改的业务类型隐藏 |
| | | this.TreeFlagCode = !data; |
| | |
| | | export const optionParent = { |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | columnBtn:false, |
| | | tip: false, |
| | | searchShow: true, |
| | |
| | | export default { |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 6, |
| | |
| | | option: { |
| | | height: "auto", |
| | | tip: false, |
| | | calcHeight: 20, |
| | | columnBtn:false, |
| | | // simplePage: true, |
| | | searchShow: true, |
| | |
| | | findvisible: false, |
| | | selectRow: [], |
| | | option: { |
| | | height: 700, |
| | | calcHeight: 80, |
| | | height: 'auto', |
| | | calcHeight: 20, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 6, |
| | |
| | | selectionList: [], |
| | | option: { |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | dialogWidth: 950, |
| | | columnBtn:false, |
| | | tip: false, |
| | |
| | | data:[], |
| | | option: { |
| | | height:'auto', |
| | | calcHeight: 0, |
| | | columnBtn:false, |
| | | tip: false, |
| | | searchShow: false, |
| | |
| | | deleteReason: '', |
| | | option: { |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | columnBtn:false, |
| | | tip: false, |
| | | searchShow: true, |
| | |
| | | }], |
| | | option: { |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | columnBtn:false, |
| | | tip: false, |
| | | searchShow: true, |
| | |
| | | flowBox: false, |
| | | option: { |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | columnBtn:false, |
| | | tip: false, |
| | | searchShow: true, |
| | |
| | | form: {}, |
| | | option: { |
| | | height: 'auto', |
| | | calcHeight: 20, |
| | | headerAlign: 'center', |
| | | align: 'center', |
| | | border: true, |
| | |
| | | }, |
| | | option: { |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | columnBtn:false, |
| | | tip: false, |
| | | searchShow: true, |
| | |
| | | }, |
| | | option: { |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | columnBtn:false, |
| | | tip: false, |
| | | searchShow: true, |
| | |
| | | }, |
| | | option: { |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | columnBtn:false, |
| | | tip: false, |
| | | searchShow: true, |
| | |
| | | }, |
| | | option: { |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | columnBtn:false, |
| | | tip: false, |
| | | searchShow: true, |
| | |
| | | }, |
| | | option: { |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | columnBtn:false, |
| | | tip: false, |
| | | searchShow: true, |
| | |
| | | option: { |
| | | columnBtn:false, |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 6, |
| | |
| | | option: { |
| | | columnBtn:false, |
| | | height: 'auto', |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 6, |
| | |
| | | }, |
| | | option() { |
| | | return { |
| | | height: 'auto', |
| | | calcHeight: 20, |
| | | headerAlign: 'center', |
| | | align: 'center', |
| | | columnBtn: false, |
| | |
| | | rowKey: 'id', |
| | | addBtn: this.permissionList.addBtn, |
| | | editBtn: false, |
| | | height: 700, |
| | | delBtn: false, |
| | | refreshBtn: false, |
| | | column: [ |
| | |
| | | option: { |
| | | height: 'auto', |
| | | columnBtn:false, |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 6, |
| | |
| | | lazy: true, |
| | | tip: false, |
| | | height:'auto', |
| | | calcHeight: 20, |
| | | maxHeight:600, |
| | | columnBtn:false, |
| | | //simplePage: true, |
| | |
| | | return{ |
| | | height: 'auto', |
| | | columnBtn:false, |
| | | calcHeight: 30, |
| | | calcHeight: 20, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 6, |
| | |
| | | option() { |
| | | return{ |
| | | height:'auto', |
| | | calcHeight: 80, |
| | | calcHeight: 70, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 6, |