| | |
| | | <div class="updateUser"> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" autoComplete="on" :model="role" :rules="createRoleRules" |
| | | label-position="right"> |
| | | <!-- 角色名称 --> |
| | | <el-form-item class="optionItem" label="角色名称:" prop="name"> |
| | | <el-input v-model="role.name" placeholder="请填写角色名称" :disabled="!updateFlag"></el-input> |
| | | </el-form-item> |
| | | <!-- 角色类型 --> |
| | | <el-form-item class="optionItems" label="角色类型:" prop="sort"> |
| | | <!-- <el-input v-model="role.sort" placeholder="请选择角色类型" :disabled="!updateFlag"></el-input> --> |
| | | <el-select v-model="role.sort" placeholder="请选择角色类型"> |
| | | <!-- v-for="item in roleList" :key="item.id" :label="item.departName" |
| | | :value="item.id" --> |
| | | <el-option :value="treeId" :label="treeLabel"> |
| | | <el-tree :data="roleList" :props="defaultProps" @node-click="handleNodeClick"></el-tree> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 角色描述 --> |
| | | <el-form-item class="optionItem" label="角色描述:" prop="description"> |
| | | <el-input type="textarea" v-model="role.description" placeholder="请输入描述内容200字以内" |
| | | :disabled="!updateFlag"></el-input> |
| | | </el-form-item> |
| | | <el-form-item v-if="updateFlag"> |
| | | <div class="optionBtn"> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">确认 |
| | | </el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <div class="my-tree"> |
| | | <div class="my-tree__wrap"> |
| | | <el-tree :data="roleList" :props="defaultProps" @node-click="handleNodeClick" show-checkbox |
| | | @check-change="handleCheckChange" default-expand-all node-key="id"> |
| | | </el-tree> |
| | | </div> |
| | | <div class="my-tree__bottom"></div> |
| | | <div class="my-tree__right"></div> |
| | | </div> |
| | | <div class="selection"> |
| | | <el-button class="cancel" @click="resetRole">取消</el-button> |
| | | <el-button class="save" @click="saveRole">保存</el-button> |
| | | </div> |
| | | </div> |
| | | </main> |
| | | </div> |
| | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | const validateNickname = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写角色名称")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validatePass = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(); |
| | | } else { |
| | | // const rep = /^\w+$/; |
| | | // if (!rep.test(value)) { |
| | | // callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串")); |
| | | // } |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateTruename = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | // const rep = /^[\u4E00-\u9FA5]{2,4}$/; |
| | | // if (!rep.test(value)) { |
| | | // callback("请输入正确的用户姓名"); |
| | | // } |
| | | callback(); |
| | | } |
| | | }; |
| | | return { |
| | | role: { |
| | | name: '', |
| | | sort: '', |
| | | description: '', |
| | | }, |
| | | createRoleRules: { |
| | | name: [ |
| | | { required: true, trigger: "blur", validator: validateNickname }, |
| | | ], |
| | | sort: [ |
| | | { required: false, trigger: "blur", validator: validatePass }, |
| | | ], |
| | | description: [ |
| | | { required: false, trigger: "blur", validator: validateTruename }, |
| | | ], |
| | | }, |
| | | roleList: [], |
| | | defaultProps: { |
| | | children: 'children', |
| | | label: 'title' |
| | | }, |
| | | treeLabel:'', |
| | | treeId:23 |
| | | treeLabel: '', |
| | | treeId: 23, |
| | | checkedIds: [], |
| | | resCheckedIds: [], |
| | | } |
| | | }, |
| | | created() { |
| | | const that = this; |
| | | this.userInfo.status ? this.userInfo.status = 1 : this.userInfo.status = 0; |
| | | this.role = JSON.parse(JSON.stringify(that.userInfo)); |
| | | this.getMenuList(); |
| | | }, |
| | | methods: { |
| | |
| | | }) |
| | | }, |
| | | // 点击树节点 |
| | | handleNodeClick({title,id}) { |
| | | handleNodeClick({ title, id }) { |
| | | // console.log(obj); |
| | | this.role.sort = title; |
| | | this.treeLabel = title; |
| | | this.treeId = id; |
| | | |
| | | }, |
| | | // 树形控件选中更改 |
| | | handleCheckChange(data, checked, indeterminate) { |
| | | // console.log(data,checked,indeterminate); |
| | | if (checked) { |
| | | this.checkedIds.push(data.id); |
| | | } else { |
| | | let index = 0; |
| | | this.checkedIds.forEach((item, idx) => { |
| | | if (item.id === data.id) { |
| | | index = idx; |
| | | } |
| | | }) |
| | | this.checkedIds.splice(index, 1); |
| | | } |
| | | console.log(this.checkedIds); |
| | | }, |
| | | // 保存role |
| | | saveRole() { |
| | | this.resCheckedIds = []; |
| | | this.resCheckedIds = this.checkedIds; |
| | | this.$emit('changeDialog',{dialogUpdate:false}); |
| | | }, |
| | | // 消除role |
| | | resetRole() { |
| | | this.resCheckedIds = [] |
| | | } |
| | | }, |
| | | props: ['userInfo', 'updateFlag', 'getUserList', 'changeDialog'] |
| | |
| | | .updateUser { |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | main { |
| | | // border: 1px solid #fff; |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | padding: 50px 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | | .el-select { |
| | | .my-tree { |
| | | height: 200px; |
| | | overflow: hidden; |
| | | background-color: #17324c; |
| | | position: relative; |
| | | border-radius: 4px; |
| | | .my-tree__wrap{ |
| | | overflow: scroll; |
| | | height: 200px; |
| | | } |
| | | .my-tree__bottom{ |
| | | position: absolute; |
| | | left: 0px; |
| | | bottom: 0px; |
| | | background-color: #17324c; |
| | | width: 100%; |
| | | height: 20px; |
| | | border-bottom-left-radius: 4px; |
| | | } |
| | | .my-tree__right{ |
| | | position: absolute; |
| | | right: 0px; |
| | | top: 0px; |
| | | background-color: #17324c; |
| | | width: 20px; |
| | | height: 100%; |
| | | } |
| | | } |
| | | |
| | | .optionHandleSp { |
| | | display: flex; |
| | | |
| | | .areaNumber, |
| | | .moreNumber { |
| | | flex: 1; |
| | | } |
| | | |
| | | .telNumber { |
| | | flex: 2; |
| | | } |
| | | } |
| | | |
| | | .optionBtn { |
| | | display: flex; |
| | | margin-top: 20px; |
| | | |
| | | .btn { |
| | | padding: 12px 50px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | ::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | ::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | } |
| | | |
| | | .selection { |
| | | margin-top: 10px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | .el-button { |
| | | padding: 10px 20px; |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | .save { |
| | | background-color: #409eff; |
| | | color: #fff; |
| | | } |
| | | |
| | | .cancel { |
| | | background-color: #09152f; |
| | | color: #4b9bb7; |
| | | } |
| | | } |
| | | </style> |