b53552369262f080e22bb4ca3e235886.json 18 KB

1
  1. {"remainingRequest":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/node_modules/vue-loader/lib/index.js??vue-loader-options!/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/src/views/system/role/index.vue?vue&type=script&lang=js&","dependencies":[{"path":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/src/views/system/role/index.vue","mtime":1618041516000},{"path":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/node_modules/babel-loader/lib/index.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgeyBtYXBHZXR0ZXJzIH0gZnJvbSAidnVleCI7DQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICJTeXNSb2xlIiwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgdGFibGU6IHt1cmw6ICcvcm9sZS9pbmRleCcsIHdoZXJlOiB7fX0sICAvLyDooajmoLzphY3nva4NCiAgICAgIGNob29zZTogW10sICAvLyDooajmoLzpgInkuK3mlbDmja4NCiAgICAgIHNob3dFZGl0OiBmYWxzZSwgIC8vIOaYr+WQpuaYvuekuuihqOWNleW8ueeqlw0KICAgICAgZWRpdEZvcm06IHt9LCAgLy8g6KGo5Y2V5pWw5o2uDQogICAgICBlZGl0UnVsZXM6IHsgIC8vIOihqOWNlemqjOivgeinhOWImQ0KICAgICAgICBuYW1lOiBbDQogICAgICAgICAge3JlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAn6K+36L6T5YWl6KeS6Imy5ZCN56ewJywgdHJpZ2dlcjogJ2JsdXInfQ0KICAgICAgICBdLA0KICAgICAgICBjb2RlOiBbDQogICAgICAgICAge3JlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAn6K+36L6T5YWl6KeS6Imy57yW56CBJywgdHJpZ2dlcjogJ2JsdXInfQ0KICAgICAgICBdDQogICAgICB9LA0KICAgICAgc2hvd0F1dGg6IGZhbHNlLCAgLy8g5pi+56S65p2D6ZmQ5YiG6YWN5by556qXDQogICAgICBhdXRoRGF0YTogW10gIC8vIOadg+mZkOWIhumFjeaVsOaNrg0KICAgIH0NCiAgfSwNCiAgY29tcHV0ZWQ6IHsNCiAgICAuLi5tYXBHZXR0ZXJzKFsicGVybWlzc2lvbiJdKSwNCiAgICANCiAgICAvKiDmnYPpmZDmoJHpgInkuK3mlbDmja4gKi8NCiAgICBhdXRoQ2hlY2tlZCgpIHsNCiAgICAgIGxldCBjaGVja2VkID0gW107DQogICAgICB0aGlzLiR1dGlsLmVhY2hUcmVlRGF0YSh0aGlzLmF1dGhEYXRhLCBkID0+IHsNCiAgICAgICAgaWYgKGQuY2hlY2tlZCAmJiAoIWQuY2hpbGRyZW4gfHwgIWQuY2hpbGRyZW4ubGVuZ3RoKSkgY2hlY2tlZC5wdXNoKGQuaWQpOw0KICAgICAgfSk7DQogICAgICByZXR1cm4gY2hlY2tlZDsNCiAgICB9DQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICAvKiDmmL7npLrnvJbovpEgKi8NCiAgICBlZGl0KHJvdykgew0KICAgICAgdGhpcy5lZGl0Rm9ybSA9IE9iamVjdC5hc3NpZ24oe30sIHJvdyk7DQogICAgICB0aGlzLnNob3dFZGl0ID0gdHJ1ZTsNCiAgICB9LA0KICAgIC8qIOS/neWtmOe8lui+kSAqLw0KICAgIHNhdmUoKSB7DQogICAgICB0aGlzLiRyZWZzWydlZGl0Rm9ybSddLnZhbGlkYXRlKCh2YWxpZCkgPT4gew0KICAgICAgICBpZiAodmFsaWQpIHsNCiAgICAgICAgICBjb25zdCBsb2FkaW5nID0gdGhpcy4kbG9hZGluZyh7bG9jazogdHJ1ZX0pOw0KICAgICAgICAgIHRoaXMuJGh0dHAucG9zdCgnL3JvbGUvZWRpdCcsIHRoaXMuZWRpdEZvcm0pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICAgIGxvYWRpbmcuY2xvc2UoKTsNCiAgICAgICAgICAgIGlmIChyZXMuZGF0YS5jb2RlID09PSAwKSB7DQogICAgICAgICAgICAgIHRoaXMuc2hvd0VkaXQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7dHlwZTogJ3N1Y2Nlc3MnLCBtZXNzYWdlOiByZXMuZGF0YS5tc2d9KTsNCiAgICAgICAgICAgICAgdGhpcy4kcmVmcy50YWJsZS5yZWxvYWQoKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLmRhdGEubXNnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KS5jYXRjaChlID0+IHsNCiAgICAgICAgICAgIGxvYWRpbmcuY2xvc2UoKTsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZS5tZXNzYWdlKTsNCiAgICAgICAgICB9KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICAgIH0pOw0KICAgIH0sDQogICAgLyog5Yig6ZmkICovDQogICAgcmVtb3ZlKHJvdykgew0KICAgICAgaWYgKCFyb3cpIHsgIC8vIOaJuemHj+WIoOmZpA0KICAgICAgICBpZiAodGhpcy5jaG9vc2UubGVuZ3RoID09PSAwKSByZXR1cm4gdGhpcy4kbWVzc2FnZS5lcnJvcign6K+36Iez5bCR6YCJ5oup5LiA5p2h5pWw5o2uJyk7DQogICAgICAgIGxldCBpZHMgPSB0aGlzLmNob29zZS5tYXAoZCA9PiBkLmlkKTsNCiAgICAgICAgdGhpcy4kY29uZmlybSgn56Gu5a6a6KaB5Yig6Zmk6YCJ5Lit55qE6KeS6Imy5ZCXPycsICfmj5DnpLonLCB7dHlwZTogJ3dhcm5pbmcnfSkudGhlbigoKSA9PiB7DQogICAgICAgICAgY29uc3QgbG9hZGluZyA9IHRoaXMuJGxvYWRpbmcoe2xvY2s6IHRydWV9KTsNCiAgICAgICAgICB0aGlzLiRodHRwLnBvc3QoJy9yb2xlL2RlbGV0ZScsIHtpZDogaWRzfSkudGhlbihyZXMgPT4gew0KICAgICAgICAgICAgbG9hZGluZy5jbG9zZSgpOw0KICAgICAgICAgICAgaWYgKHJlcy5kYXRhLmNvZGUgPT09IDApIHsNCiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7dHlwZTogJ3N1Y2Nlc3MnLCBtZXNzYWdlOiByZXMuZGF0YS5tc2d9KTsNCiAgICAgICAgICAgICAgdGhpcy4kcmVmcy50YWJsZS5yZWxvYWQoKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLmRhdGEubXNnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KS5jYXRjaChlID0+IHsNCiAgICAgICAgICAgIGxvYWRpbmcuY2xvc2UoKTsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZS5tZXNzYWdlKTsNCiAgICAgICAgICB9KTsNCiAgICAgICAgfSkuY2F0Y2goKCkgPT4gMCk7DQogICAgICB9IGVsc2UgeyAgLy8g5Y2V5Liq5Yig6ZmkDQogICAgICAgIGNvbnN0IGxvYWRpbmcgPSB0aGlzLiRsb2FkaW5nKHtsb2NrOiB0cnVlfSk7DQogICAgICAgIHRoaXMuJGh0dHAucG9zdCgnL3JvbGUvZGVsZXRlJywge2lkOnJvdy5pZH0pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICBsb2FkaW5nLmNsb3NlKCk7DQogICAgICAgICAgaWYgKHJlcy5kYXRhLmNvZGUgPT09IDApIHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoe3R5cGU6ICdzdWNjZXNzJywgbWVzc2FnZTogcmVzLmRhdGEubXNnfSk7DQogICAgICAgICAgICB0aGlzLiRyZWZzLnRhYmxlLnJlbG9hZCgpOw0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5kYXRhLm1zZyk7DQogICAgICAgICAgfQ0KICAgICAgICB9KS5jYXRjaChlID0+IHsNCiAgICAgICAgICBsb2FkaW5nLmNsb3NlKCk7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlLm1lc3NhZ2UpOw0KICAgICAgICB9KTsNCiAgICAgIH0NCiAgICB9LA0KICAgIC8qIOaYvuekuuWIhumFjeadg+mZkOW8ueeqlyAqLw0KICAgIGF1dGgocm93KSB7DQogICAgICB0aGlzLmVkaXRGb3JtID0gT2JqZWN0LmFzc2lnbih7fSwgcm93KTsNCiAgICAgIHRoaXMuYXV0aERhdGEgPSBbXTsNCiAgICAgIGNvbnN0IGxvYWRpbmcgPSB0aGlzLiRsb2FkaW5nKHtiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnfSk7DQogICAgICB0aGlzLiRodHRwLmdldCgnL3JvbGUvZ2V0UGVybWlzc2lvbkxpc3Q/cm9sZV9pZD0nICsgcm93LmlkKS50aGVuKHJlcyA9PiB7DQogICAgICAgIGxvYWRpbmcuY2xvc2UoKTsNCiAgICAgICAgdGhpcy5zaG93QXV0aCA9IHRydWU7DQogICAgICAgIGlmIChyZXMuZGF0YS5jb2RlID09PSAwKSB7DQogICAgICAgICAgdGhpcy5hdXRoRGF0YSA9IHRoaXMuJHV0aWwudG9UcmVlRGF0YShyZXMuZGF0YS5kYXRhLCAnaWQnLCAncGlkJyk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihyZXMuZGF0YS5tc2cpOw0KICAgICAgICB9DQogICAgICB9KS5jYXRjaChlID0+IHsNCiAgICAgICAgbG9hZGluZy5jbG9zZSgpOw0KICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGUubWVzc2FnZSk7DQogICAgICB9KTsNCiAgICB9LA0KICAgIC8qIOS/neWtmOadg+mZkOWIhumFjSAqLw0KICAgIHNhdmVBdXRoKCkgew0KICAgICAgY29uc3QgbG9hZGluZyA9IHRoaXMuJGxvYWRpbmcoe2xvY2s6IHRydWV9KTsNCiAgICAgIGxldCBpZHMgPSB0aGlzLiRyZWZzLmF1dGhUcmVlLmdldENoZWNrZWRLZXlzKCkuY29uY2F0KHRoaXMuJHJlZnMuYXV0aFRyZWUuZ2V0SGFsZkNoZWNrZWRLZXlzKCkpOw0KICAgICAgdGhpcy4kaHR0cC5wb3N0KCcvcm9sZS9zYXZlUGVybWlzc2lvbj9yb2xlX2lkPScgKyB0aGlzLmVkaXRGb3JtLmlkLCBpZHMpLnRoZW4ocmVzID0+IHsNCiAgICAgICAgbG9hZGluZy5jbG9zZSgpOw0KICAgICAgICBpZiAocmVzLmRhdGEuY29kZSA9PT0gMCkgew0KICAgICAgICAgIHRoaXMuc2hvd0F1dGggPSBmYWxzZTsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlKHt0eXBlOiAnc3VjY2VzcycsIG1lc3NhZ2U6IHJlcy5kYXRhLm1zZ30pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLmRhdGEubXNnKTsNCiAgICAgICAgfQ0KICAgICAgfSkuY2F0Y2goZSA9PiB7DQogICAgICAgIGxvYWRpbmcuY2xvc2UoKTsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlLm1lc3NhZ2UpOw0KICAgICAgfSk7DQogICAgfQ0KICB9DQp9DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/system/role","sourcesContent":["<template>\r\n <div class=\"ele-body\">\r\n <el-card shadow=\"never\">\r\n <!-- 搜索表单 -->\r\n <el-form :model=\"table.where\" label-width=\"77px\" class=\"ele-form-search\"\r\n @keyup.enter.native=\"$refs.table.reload()\" @submit.native.prevent>\r\n <el-row :gutter=\"15\">\r\n <el-col :md=\"6\" :sm=\"12\">\r\n <el-form-item label=\"角色名称:\">\r\n <el-input v-model=\"table.where.name\" placeholder=\"请输入角色名称\" clearable/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :md=\"9\" :sm=\"12\">\r\n <div class=\"ele-form-actions\">\r\n <el-button type=\"primary\" @click=\"$refs.table.reload()\" icon=\"el-icon-search\" class=\"ele-btn-icon\">查询\r\n </el-button>\r\n <el-button @click=\"showEdit=true\" type=\"primary\" icon=\"el-icon-plus\" class=\"ele-btn-icon\" v-if=\"permission.includes('sys:role:add')\">添加</el-button>\r\n <el-button @click=\"remove()\" type=\"danger\" icon=\"el-icon-delete\" class=\"ele-btn-icon\" v-if=\"permission.includes('sys:role:dall')\">批量删除</el-button>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <!-- 数据表格 -->\r\n <ele-data-table ref=\"table\" :config=\"table\" :choose.sync=\"choose\" height=\"calc(100vh - 260px)\" highlight-current-row>\r\n <template slot-scope=\"{index}\">\r\n <el-table-column type=\"selection\" width=\"45\" align=\"center\" fixed=\"left\"/>\r\n <el-table-column type=\"index\" :index=\"index\" label=\"编号\" width=\"60\" align=\"center\" fixed=\"left\" show-overflow-tooltip/>\r\n <el-table-column prop=\"name\" label=\"角色名称\" sortable=\"custom\" show-overflow-tooltip min-width=\"120\" align=\"center\"/>\r\n <el-table-column prop=\"code\" label=\"角色编码\" show-overflow-tooltip min-width=\"100\" align=\"center\"/>\r\n <el-table-column prop=\"note\" label=\"备注\" show-overflow-tooltip min-width=\"150\" align=\"center\"/>\r\n <el-table-column prop=\"create_time\" label=\"创建时间\" show-overflow-tooltip min-width=\"110\" align=\"center\">\r\n <template slot-scope=\"{row}\">{{ row.create_time | toDateString }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" width=\"230px\" align=\"center\" :resizable=\"false\" fixed=\"right\">\r\n <template slot-scope=\"{row}\">\r\n <el-link @click=\"edit(row)\" icon=\"el-icon-edit\" type=\"primary\" :underline=\"false\" v-if=\"permission.includes('sys:role:edit')\">修改</el-link>\r\n <el-link @click=\"auth(row)\" icon=\"el-icon-finished\" type=\"primary\" :underline=\"false\" v-if=\"permission.includes('sys:role:permission')\">分配权限</el-link>\r\n <el-popconfirm title=\"确定要删除此角色吗?\" @confirm=\"remove(row)\" class=\"ele-action\">\r\n <el-link slot=\"reference\" icon=\"el-icon-delete\" type=\"danger\" :underline=\"false\" v-if=\"permission.includes('sys:role:delete')\">删除</el-link>\r\n </el-popconfirm>\r\n </template>\r\n </el-table-column>\r\n </template>\r\n </ele-data-table>\r\n </el-card>\r\n <!-- 编辑弹窗 -->\r\n <el-dialog :title=\"editForm.id?'修改角色':'添加角色'\" :visible.sync=\"showEdit\" width=\"400px\"\r\n @closed=\"editForm={}\" :destroy-on-close=\"true\" :lock-scroll=\"false\">\r\n <el-form :model=\"editForm\" ref=\"editForm\" :rules=\"editRules\" label-width=\"82px\">\r\n <el-form-item label=\"角色名称:\" prop=\"name\">\r\n <el-input v-model=\"editForm.name\" placeholder=\"请输入角色名称\" clearable/>\r\n </el-form-item>\r\n <el-form-item label=\"角色标识:\" prop=\"code\">\r\n <el-input v-model=\"editForm.code\" placeholder=\"请输入角色标识\" clearable/>\r\n </el-form-item>\r\n <el-form-item label=\"备注:\">\r\n <el-input v-model=\"editForm.note\" placeholder=\"请输入备注\" :rows=\"4\" type=\"textarea\"/>\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\">\r\n <el-button @click=\"showEdit=false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"save\">保存</el-button>\r\n </div>\r\n </el-dialog>\r\n <!-- 权限分配弹窗 -->\r\n <el-dialog title=\"分配权限\" :visible.sync=\"showAuth\" width=\"400px\" @closed=\"editForm={}\" :destroy-on-close=\"true\"\r\n :lock-scroll=\"false\">\r\n <el-scrollbar style=\"height:50vh;\" wrapStyle=\"overflow-x: hidden;\">\r\n <el-tree ref=\"authTree\" :data=\"authData\" :props=\"{label:'title'}\" node-key=\"id\"\r\n :default-expand-all=\"true\" :default-checked-keys=\"authChecked\" show-checkbox/>\r\n </el-scrollbar>\r\n <div slot=\"footer\">\r\n <el-button @click=\"showAuth=false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"saveAuth\">保存</el-button>\r\n </div>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters } from \"vuex\";\r\nexport default {\r\n name: \"SysRole\",\r\n data() {\r\n return {\r\n table: {url: '/role/index', where: {}}, // 表格配置\r\n choose: [], // 表格选中数据\r\n showEdit: false, // 是否显示表单弹窗\r\n editForm: {}, // 表单数据\r\n editRules: { // 表单验证规则\r\n name: [\r\n {required: true, message: '请输入角色名称', trigger: 'blur'}\r\n ],\r\n code: [\r\n {required: true, message: '请输入角色编码', trigger: 'blur'}\r\n ]\r\n },\r\n showAuth: false, // 显示权限分配弹窗\r\n authData: [] // 权限分配数据\r\n }\r\n },\r\n computed: {\r\n ...mapGetters([\"permission\"]),\r\n \r\n /* 权限树选中数据 */\r\n authChecked() {\r\n let checked = [];\r\n this.$util.eachTreeData(this.authData, d => {\r\n if (d.checked && (!d.children || !d.children.length)) checked.push(d.id);\r\n });\r\n return checked;\r\n }\r\n },\r\n methods: {\r\n /* 显示编辑 */\r\n edit(row) {\r\n this.editForm = Object.assign({}, row);\r\n this.showEdit = true;\r\n },\r\n /* 保存编辑 */\r\n save() {\r\n this.$refs['editForm'].validate((valid) => {\r\n if (valid) {\r\n const loading = this.$loading({lock: true});\r\n this.$http.post('/role/edit', this.editForm).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.showEdit = false;\r\n this.$message({type: 'success', message: res.data.msg});\r\n this.$refs.table.reload();\r\n } else {\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n } else {\r\n return false;\r\n }\r\n });\r\n },\r\n /* 删除 */\r\n remove(row) {\r\n if (!row) { // 批量删除\r\n if (this.choose.length === 0) return this.$message.error('请至少选择一条数据');\r\n let ids = this.choose.map(d => d.id);\r\n this.$confirm('确定要删除选中的角色吗?', '提示', {type: 'warning'}).then(() => {\r\n const loading = this.$loading({lock: true});\r\n this.$http.post('/role/delete', {id: ids}).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.$message({type: 'success', message: res.data.msg});\r\n this.$refs.table.reload();\r\n } else {\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n }).catch(() => 0);\r\n } else { // 单个删除\r\n const loading = this.$loading({lock: true});\r\n this.$http.post('/role/delete', {id:row.id}).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.$message({type: 'success', message: res.data.msg});\r\n this.$refs.table.reload();\r\n } else {\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n }\r\n },\r\n /* 显示分配权限弹窗 */\r\n auth(row) {\r\n this.editForm = Object.assign({}, row);\r\n this.authData = [];\r\n const loading = this.$loading({background: 'transparent'});\r\n this.$http.get('/role/getPermissionList?role_id=' + row.id).then(res => {\r\n loading.close();\r\n this.showAuth = true;\r\n if (res.data.code === 0) {\r\n this.authData = this.$util.toTreeData(res.data.data, 'id', 'pid');\r\n } else {\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n },\r\n /* 保存权限分配 */\r\n saveAuth() {\r\n const loading = this.$loading({lock: true});\r\n let ids = this.$refs.authTree.getCheckedKeys().concat(this.$refs.authTree.getHalfCheckedKeys());\r\n this.$http.post('/role/savePermission?role_id=' + this.editForm.id, ids).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.showAuth = false;\r\n this.$message({type: 'success', message: res.data.msg});\r\n } else {\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n</style>"]}]}