| <template> | 
|   <div class="role viewWrap"> | 
|     <h2>角色管理</h2> | 
|     <!-- 搜索功能区 --> | 
|     <div class="wrap"> | 
|       <div class="searchWrap"> | 
|         <div class="searchItem"> | 
|           <span class="searchTitle">角色名称</span> | 
|           <el-input v-model="name" placeholder="请输入内容" clearable style="width:220px;"></el-input> | 
|         </div> | 
|         <div class="searchItem"> | 
|           <span class="searchTitle">状态</span> | 
|           <el-select v-model="disabled" placeholder="请选择" style="width:220px;" clearable> | 
|             <el-option label="全部" :value="null"> </el-option> | 
|             <el-option label="禁用" :value="true"> </el-option> | 
|             <el-option label="启用" :value="false"> </el-option> | 
|           </el-select> | 
|         </div> | 
|         <div class="searchItem"> | 
|           <span class="searchTitle">创建时间</span> | 
|           <el-date-picker v-model="dt" type="date" value-format="yyyy-MM-dd" placeholder="选择日期" clearable | 
|             style="width:220px;"> | 
|           </el-date-picker> | 
|         </div> | 
|         <div class="searchButton"> | 
|           <el-button type="primary" @click="onGetSearchData">查询</el-button> | 
|           <el-button @click="onClearSearchData">清空</el-button> | 
|         </div> | 
|       </div> | 
|     </div> | 
|   | 
|     <!-- 数据功能按钮区 --> | 
|     <el-button type="primary" style="margin-top: 20px; width: 100px;" icon="el-icon-plus" | 
|       @click="handleFormDataAdd">添加</el-button> | 
|   | 
|     <!-- 数据表格区 --> | 
|     <el-Table stripe :data="tableData" height="0" style="margin-top: 20px;"> | 
|       <el-table-column type="index" label="序号" width="50"> </el-table-column> | 
|       <el-table-column prop="name" label="角色名称"></el-table-column> | 
|       <el-table-column prop="disabled" label="状态" width="180"> | 
|         <template slot-scope="scope"> | 
|           <el-switch v-model="scope.row.disabled" active-color="#ff0000" active-text="禁用" inactive-color="#409EFF" | 
|             inactive-text="启用" @change="handleDisabled(scope.row)"> | 
|           </el-switch> | 
|         </template> | 
|       </el-table-column> | 
|       <el-table-column prop="dt" label="创建时间" width="180"> | 
|       </el-table-column> | 
|       <el-table-column label="操作" width="100"> | 
|         <template slot-scope="scope"> | 
|           <el-button @click.native.prevent="handleFormDataEdit(scope.row)" type="text" size="small"> | 
|             编辑 | 
|           </el-button> | 
|           <el-button @click.native.prevent="handleDelete(scope.row)" type="text" size="small"> | 
|             删除 | 
|           </el-button> | 
|         </template> | 
|       </el-table-column> | 
|     </el-Table> | 
|   | 
|     <!-- 分页组件 --> | 
|     <el-pagination style="margin-top: 20px;" @size-change="onGetTableData" @current-change="onGetTableData" | 
|       :current-page.sync="pageCurr" :page-size.sync="pageSize" :page-sizes="[10, 20, 50, 100]" | 
|       layout="total, sizes, prev, pager, next, jumper" :total="total"> | 
|     </el-pagination> | 
|   | 
|     <!-- 表单 --> | 
|     <el-dialog title="角色信息" :visible.sync="showFromData" width="1200px" :before-close="handleFormDataClose"> | 
|       <el-form :model="formData" :rules="formRules" ref="formData" label-width="80px"> | 
|         <el-form-item label="ID" prop="id" style="display: none;"> | 
|           <el-input style="width:220px" v-model="formData.id" disabled></el-input> | 
|         </el-form-item> | 
|         <el-form-item label="角色名称" prop="name"> | 
|           <el-input style="width:220px" v-model="formData.name" clearable></el-input> | 
|         </el-form-item> | 
|         <el-form-item label="状态" prop="disabled"> | 
|           <el-switch v-model="formData.disabled" active-color="#ff0000" active-text="禁用" inactive-color="#409EFF" | 
|             inactive-text="启用" /> | 
|         </el-form-item> | 
|         <el-form-item label="角色权限"> | 
|           <div v-for="(item, index) in authorityData" :key="index"> | 
|             <div class="typeName">{{ item.name }}</div> | 
|             <el-row style="margin:10px 0;"> | 
|               <el-col v-for="(childItem, index) in item.list" :key="index" :span="6"> | 
|                 <el-checkbox :value="returnCheck(childItem.id)" :label="childItem.name" | 
|                   @change="handleCheck(childItem.id)"></el-checkbox> | 
|               </el-col> | 
|             </el-row> | 
|           </div> | 
|         </el-form-item> | 
|       </el-form> | 
|       <span slot="footer" class="dialog-footer"> | 
|         <el-button @click="handleFormDataClose">取 消</el-button> | 
|         <el-button type="primary" @click="handleFormDataSubmit">确 定</el-button> | 
|       </span> | 
|     </el-dialog> | 
|   </div> | 
| </template> | 
|   | 
| <style lang="less" scoped></style> | 
|   | 
| <script> | 
| export default { | 
|   name: "role", | 
|   components: {}, | 
|   data() { | 
|     return { | 
|       name: null, | 
|       disabled: null, | 
|       dt: null, | 
|       pageSize: 10, | 
|       pageCurr: 1, | 
|       total: 0, | 
|       tableData: [], | 
|       authorityData: [], | 
|       showFromData: false, | 
|       formData: { | 
|         id: null, | 
|         name: null, | 
|         disabled: false, | 
|         priIds: [], | 
|       }, | 
|       formRules: { | 
|         name: [{ required: true, message: "必填项", trigger: "blur" }], | 
|         disabled: [{ required: true, message: "必填项", trigger: "blur" }], | 
|       }, | 
|     }; | 
|   }, | 
|   computed: { | 
|     authorityList: function () { | 
|       var arr = []; | 
|       this.authorityData.forEach((item) => { | 
|         item.list.forEach((childItem) => { | 
|           arr.push(childItem.id); | 
|         }); | 
|       }); | 
|       return arr; | 
|     }, | 
|   }, | 
|   mounted() { | 
|     this.onGetTableData(); | 
|   }, | 
|   methods: { | 
|     // 路由跳转 | 
|     goto: function (path) { | 
|       if (path != this.$route.name) { | 
|         this.$router.push({ | 
|           name: path, | 
|         }); | 
|       } | 
|     }, | 
|     // 执行条件查询 | 
|     onGetSearchData: function () { | 
|       this.pageCurr = 1; | 
|       this.onGetTableData(); | 
|     }, | 
|     // 清空查询条件 | 
|     onClearSearchData: function () { | 
|       this.name = null; | 
|       this.disabled = null; | 
|       this.dt = null; | 
|       this.pageCurr = 1; | 
|       this.onGetTableData(); | 
|     }, | 
|     // 获取表格数据 | 
|     onGetTableData: function () { | 
|       var that = this; | 
|       var data = { | 
|         name: this.name, | 
|         disabled: this.disabled, | 
|         dt: this.dt, | 
|         pageSize: this.pageSize, | 
|         pageCurr: this.pageCurr, | 
|       }; | 
|       that | 
|         .$axiosAdmin({ | 
|           method: "post", | 
|           url: "base/role/some", | 
|           data: JSON.stringify(data), | 
|         }) | 
|         .then((res) => { | 
|           if (res.success == true) { | 
|             that.tableData = res.content.obj; | 
|             that.total = res.content.itemTotal; | 
|           } else { | 
|             that.$alert(res.content, "提示", { | 
|               confirmButtonText: "确定", | 
|             }); | 
|           } | 
|         }) | 
|         .catch((err) => { | 
|           console.log(err); | 
|         }); | 
|     }, | 
|     // 状态变更确认 | 
|     handleDisabled(row) { | 
|       this.$confirm(`此操作将变更 ${row.name} 的状态, 是否继续?`, "提示", { | 
|         confirmButtonText: "确定", | 
|         cancelButtonText: "取消", | 
|         type: "warning", | 
|       }) | 
|         .then(() => { | 
|           this.onDisabled(row); | 
|         }) | 
|         .catch(() => { | 
|           this.onGetTableData(); | 
|           this.$message({ | 
|             type: "info", | 
|             message: "已取消", | 
|           }); | 
|         }); | 
|     }, | 
|     // 执行状态变更 | 
|     onDisabled: function (row) { | 
|       var that = this; | 
|       var data = { | 
|         id: row.id, | 
|         disabled: row.disabled, | 
|       }; | 
|       that | 
|         .$axiosAdmin({ | 
|           method: "post", | 
|           url: "base/role/disabled", | 
|           data: JSON.stringify(data), | 
|         }) | 
|         .then((res) => { | 
|           if (res.success == true) { | 
|             that.$message({ | 
|               type: "success", | 
|               message: "已成功", | 
|             }); | 
|           } else { | 
|             that.$alert(res.content, "提示", { | 
|               confirmButtonText: "确定", | 
|             }); | 
|           } | 
|           that.onGetTableData(); | 
|         }) | 
|         .catch((err) => { | 
|           console.log(err); | 
|           that.onGetTableData(); | 
|         }); | 
|     }, | 
|     // 删除确认 | 
|     handleDelete(row) { | 
|       this.$confirm(`此操作将删除 ${row.name} , 是否继续?`, "提示", { | 
|         confirmButtonText: "确定", | 
|         cancelButtonText: "取消", | 
|         type: "warning", | 
|       }) | 
|         .then(() => { | 
|           this.onDelete(row); | 
|         }) | 
|         .catch(() => { | 
|           this.$message({ | 
|             type: "info", | 
|             message: "已取消", | 
|           }); | 
|         }); | 
|     }, | 
|     // 执行删除 | 
|     onDelete: function (row) { | 
|       var that = this; | 
|       var params = { | 
|         id: row.id, | 
|       }; | 
|       that | 
|         .$axiosAdmin({ | 
|           method: "get", | 
|           url: "base/role/delete", | 
|           params: params, | 
|         }) | 
|         .then((res) => { | 
|           if (res.success == true) { | 
|             that.$message({ | 
|               type: "success", | 
|               message: "已成功", | 
|             }); | 
|           } else { | 
|             that.$alert(res.content, "提示", { | 
|               confirmButtonText: "确定", | 
|             }); | 
|           } | 
|           that.onGetTableData(); | 
|         }) | 
|         .catch((err) => { | 
|           console.log(err); | 
|         }); | 
|     }, | 
|     // 分类查询权限 | 
|     onGetAuthorityData: function () { | 
|       var that = this; | 
|       var params = {}; | 
|       that | 
|         .$axiosAdmin({ | 
|           method: "get", | 
|           url: "base/pri/getByType", | 
|           params: params, | 
|         }) | 
|         .then((res) => { | 
|           console.log("onGetAuthorityData", res); | 
|           if (res.success == true) { | 
|             that.authorityData = res.content; | 
|           } else { | 
|             that.$alert(res.content, "提示", { | 
|               confirmButtonText: "确定", | 
|             }); | 
|           } | 
|         }) | 
|         .catch((err) => { | 
|           console.log(err); | 
|         }); | 
|     }, | 
|     // 检查选中状态 | 
|     returnCheck: function (id) { | 
|       if (this.formData.priIds.indexOf(id) == -1) { | 
|         return false; | 
|       } else { | 
|         return true; | 
|       } | 
|     }, | 
|     // 管理选中状态 | 
|     handleCheck: function (id) { | 
|       if (this.formData.priIds.indexOf(id) == -1) { | 
|         this.formData.priIds.push(id); | 
|       } else { | 
|         this.formData.priIds.splice(this.formData.priIds.indexOf(id), 1); | 
|       } | 
|     }, | 
|     // 添加 | 
|     handleFormDataAdd: function () { | 
|       this.formData.id = null; | 
|       this.formData.name = null; | 
|       this.formData.disabled = false; | 
|       this.formData.priIds = []; | 
|       this.showFromData = true; | 
|       this.onGetAuthorityData(); | 
|     }, | 
|     // 关闭 | 
|     handleFormDataClose: function () { | 
|       this.formData.id = null; | 
|       this.formData.name = null; | 
|       this.formData.disabled = false; | 
|       this.formData.priIds = []; | 
|       this.showFromData = false; | 
|       this.$refs['formData'].resetFields(); | 
|     }, | 
|     // 编辑 | 
|     handleFormDataEdit: function (row) { | 
|       this.formData.id = row.id; | 
|       this.formData.name = row.name; | 
|       this.formData.disabled = row.disabled; | 
|       this.formData.priIds = JSON.parse(JSON.stringify(row.priIds)); | 
|       this.showFromData = true; | 
|       this.onGetAuthorityData(); | 
|     }, | 
|     // 提交数据确认 | 
|     handleFormDataSubmit: function () { | 
|       this.$confirm(`此操作将保存并更新数据, 是否继续?`, "提示", { | 
|         confirmButtonText: "确定", | 
|         cancelButtonText: "取消", | 
|         type: "warning", | 
|       }) | 
|         .then(() => { | 
|           this.onFormDataSubmit(); | 
|         }) | 
|         .catch(() => { | 
|           this.$message({ | 
|             type: "info", | 
|             message: "已取消", | 
|           }); | 
|         }); | 
|     }, | 
|     // 提交数据 | 
|     onFormDataSubmit: function () { | 
|       var that = this; | 
|       var url, data; | 
|       if (this.formData.id) { | 
|         url = "base/role/update"; | 
|       } else { | 
|         url = "base/role/save"; | 
|       } | 
|       data = this.formData; | 
|       that | 
|         .$axiosAdmin({ | 
|           method: "post", | 
|           url: url, | 
|           data: JSON.stringify(data), | 
|         }) | 
|         .then((res) => { | 
|           if (res.success == true) { | 
|             that.$message({ | 
|               type: "success", | 
|               message: "已成功", | 
|             }); | 
|             that.handleFormDataClose(); | 
|             that.onGetTableData(); | 
|           } else { | 
|             that.$alert(res.content, "提示", { | 
|               confirmButtonText: "确定", | 
|             }); | 
|           } | 
|         }) | 
|         .catch((err) => { | 
|           console.log(err); | 
|         }); | 
|     }, | 
|   }, | 
| }; | 
| </script> |