ee5ea04cef1fe929f095832870aa2732e51e7c33.svn-base 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. <template>
  2. <div class="user-manage" style="width: 100%; height: 100%;">
  3. <div class="search-wrapper">
  4. <el-form ref="form" :inline="true" label-width="80px">
  5. <el-form-item label="角色名称">
  6. <el-input v-model="searchObj.roleName" clearable></el-input>
  7. </el-form-item>
  8. <el-button type="primary" @click="getRoleList()">查询</el-button>
  9. <el-button type="primary" @click="toaddRole()">添加</el-button>
  10. </el-form>
  11. </div>
  12. <el-table
  13. :data="rolesList"
  14. border
  15. stripe
  16. :height="tableHeight"
  17. style="width: 100%;">
  18. <el-table-column
  19. prop="roleName"
  20. label="角色名称">
  21. </el-table-column>
  22. <el-table-column
  23. prop="ownerSystem"
  24. label="所属系统">
  25. <template slot-scope="scope">
  26. {{scope.row.ownerSystem ? systemFilter(scope.row.ownerSystem) : ''}}
  27. </template>
  28. </el-table-column>
  29. <el-table-column label="操作">
  30. <template slot-scope="scope">
  31. <el-button
  32. size="mini"
  33. @click="handleEdit(scope.row)">编辑</el-button>
  34. <el-button
  35. size="mini"
  36. type="danger"
  37. @click="handleDelete(scope.row)">删除</el-button>
  38. </template>
  39. </el-table-column>
  40. </el-table>
  41. <el-pagination
  42. background
  43. @size-change="handleSizeChange"
  44. @current-change="handleCurrentChange"
  45. :current-page.sync="searchObj.pageNum"
  46. :page-sizes="[10, 20, 300, 40]"
  47. :page-size="searchObj.pageSize"
  48. layout="total, prev, pager, next"
  49. :total="total"
  50. style="margin: 10px auto">
  51. </el-pagination>
  52. <el-dialog :title="dialogTitle" :visible.sync="dialogFormVisible" v-if="dialogFormVisible" @close="dialogClose">
  53. <el-form :model="editRole" label-width="120px">
  54. <el-form-item label="角色名称">
  55. <el-input v-model="editRole.roleName" auto-complete="off"></el-input>
  56. </el-form-item>
  57. <!-- <el-form-item label="归属系统">-->
  58. <!-- <el-select v-model="editRole.ownerSystem" placeholder="请选择">-->
  59. <!-- <el-option :label="system.name" :value="system.value" v-for="(system,index) in privDict.systemFlag" :key="index"></el-option>-->
  60. <!-- </el-select>-->
  61. <!-- </el-form-item>-->
  62. <el-form-item label="人员类别">
  63. <el-select v-model="editRole.persType" placeholder="请选择">
  64. <el-option :label="system.name" :value="system.value" v-for="(system,index) in privDict.persTypeList" :key="index"></el-option>
  65. </el-select>
  66. </el-form-item>
  67. <el-form-item label="有效标识">
  68. <el-select v-model="editRole.flagValid" placeholder="请选择">
  69. <el-option label="有效" value="1"></el-option>
  70. <el-option label="无效" value="0"></el-option>
  71. </el-select>
  72. </el-form-item>
  73. <el-form-item label="关联权限" v-if="dialogTitle=='修改'">
  74. <tree-x
  75. v-if="isShow"
  76. :isChecked="'treeCheck'"
  77. :treeInfos='provList'
  78. :curIds='editRole.privIds'
  79. :defaultProps="defaultProps"
  80. @sendCheckedInfo="sendCheckedInfo"></tree-x>
  81. <el-select v-model="editRole.privIds" v-show='false' multiple placeholder="请选择活动区域">
  82. <el-option :label="prov.privName" :value="prov.id" v-for="(prov,index) in provList" :key="index"></el-option>
  83. </el-select>
  84. </el-form-item>
  85. </el-form>
  86. <div slot="footer" class="dialog-footer">
  87. <el-button @click="dialogFormVisible = false">取 消</el-button>
  88. <el-button type="primary" @click="updateRoleInfo">确 定</el-button>
  89. </div>
  90. </el-dialog>
  91. </div>
  92. </template>
  93. <script>
  94. import request from '../../utils/gw_ajax_request.js'
  95. import treeX from '../../widgets/treeX.vue'
  96. import {getTrees} from '../../utils/gw_treeDataTransfer.js'
  97. export default {
  98. data(){
  99. return {
  100. isShow:false,
  101. tableHeight: window.innerHeight - 210,
  102. menuData : 'user',
  103. rolesList: [],
  104. total: 0,
  105. searchObj: {
  106. roleName: '',
  107. pageSize: 20,
  108. pageNum: 1
  109. },
  110. editRole:{
  111. persType: '0',
  112. roleName: '',
  113. roleId: '',
  114. ownerSystem: '',
  115. flagValid: 1,
  116. privIds: []
  117. },
  118. provList: [],
  119. saveUrl: '',
  120. privDict: {
  121. systemFlag: [],
  122. persTypeList: [
  123. {name:'全部',value:'0'},
  124. {name:'管理员',value:'1'},
  125. {name:'机构领导',value:'2'},
  126. {name:'督查人员',value:'3'},
  127. {name:'稽察人员',value:'4'},
  128. ]
  129. },
  130. defaultProps:{
  131. children: 'children',
  132. label: 'privName'
  133. },
  134. dialogFormVisible: false,
  135. dialogTitle: '修改'
  136. }
  137. },
  138. components:{
  139. 'tree-x': treeX
  140. },
  141. computed:{
  142. persId(){
  143. return localStorage.getItem('userid') ? localStorage.getItem('userid') : ''
  144. }
  145. },
  146. mounted(){
  147. this.getDict()
  148. this.getRoleList()
  149. },
  150. methods:{
  151. dialogClose(){
  152. this.dialogFormVisible = false;
  153. this.isShow = false;
  154. },
  155. getRoleList(){
  156. // request.post('/sys/roles/pageInfo',this.searchObj).then((res)=>{
  157. // if(res.success){
  158. // this.rolesList = res.data.list
  159. // this.total = res.data.total
  160. // }else{
  161. // this.$message.warning(res.message)
  162. // }
  163. // }).catch(error=>{
  164. // this.$message.error(error)
  165. // })
  166. this.searchObj['id']= this.persId
  167. request.post(`/sys/roles/list-by-user`,this.searchObj).then(res=>{
  168. if(res.success){
  169. this.rolesList = res.data.list
  170. this.total = res.data.total
  171. }else{
  172. this.$message.warning(res.message)
  173. }
  174. }).catch(error=>{
  175. // this.$message.error(error)
  176. })
  177. },
  178. getCurPriv(roleId){
  179. request.post(`/sys/privs/tree-by-role`,{roleId:roleId,userId:this.persId,pageSize: 1000}).then(res=>{
  180. if(res.success){
  181. this.provList = res.data.list
  182. this.provList.forEach(ele=>{
  183. if(!ele.parentId){
  184. ele.parentId = '0'
  185. }
  186. })
  187. console.log(getTrees(res.data,'0'))
  188. this.provList = getTrees(this.provList,'0')
  189. let curPrivList = res.data.list
  190. curPrivList.forEach(ele=>{
  191. if(ele.checked){
  192. this.editRole.privIds.push(ele.id)
  193. }
  194. })
  195. this.isShow = true;
  196. console.log(this.editRole.privIds)
  197. }
  198. }).catch(error=>{
  199. })
  200. },
  201. getPrivList(){
  202. request.post(`/sys/privs/tree-by-role`,{userId:this.persId,pageSize: 500}).then(res=>{
  203. if(res.success){
  204. this.provList = res.data.list
  205. this.provList.forEach(ele=>{
  206. if(!ele.parentId){
  207. ele.parentId = '0'
  208. }
  209. })
  210. console.log(getTrees(res.data,'0'))
  211. this.provList = getTrees(this.provList,'0')
  212. }
  213. }).catch(error=>{
  214. })
  215. },
  216. handleEdit(rowData){
  217. this.dialogTitle = '修改'
  218. let row = {}
  219. Object.assign(row,rowData)
  220. this.editRole = row
  221. this.saveUrl = `/sys/roles/updateRole`
  222. this.editRole.privIds = []
  223. this.provList = [];
  224. this.getCurPriv(rowData.id)
  225. this.dialogFormVisible = true
  226. },
  227. toaddRole(){
  228. this.dialogTitle = '添加'
  229. this.editRole = {
  230. roleName: '',
  231. flagValid: '1',
  232. },
  233. this.saveUrl = `/sys/roles/insertRole`
  234. this.editRole.privIds = []
  235. this.getPrivList()
  236. delete this.editRole.roleId
  237. this.dialogFormVisible = true
  238. },
  239. updateRoleInfo(){
  240. let paramsObj = {
  241. id: this.editRole.roleId,
  242. privIds: this.editRole.privIds
  243. }
  244. this.editRole.ownerSystem = "DC_ALL";
  245. request.post(this.saveUrl,this.editRole).then(res=>{
  246. if(res.success){
  247. this.$message.success('保存成功')
  248. this.getRoleList()
  249. this.editRole.privIds = []
  250. this.dialogFormVisible = false
  251. }else{
  252. this.$message.warning(res.message)
  253. }
  254. }).catch(error=>{
  255. this.$message.error(error)
  256. })
  257. },
  258. handleDelete(rowData){
  259. this.$confirm('确认删除当前角色?', '提示', {
  260. confirmButtonText: '确定',
  261. cancelButtonText: '取消',
  262. type: 'warning'
  263. }).then(() => {
  264. request.post(`/sys/roles/${rowData.id}`).then(res=>{
  265. if(res.success){
  266. this.getRoleList()
  267. this.$message({
  268. type: 'success',
  269. message: '删除成功!'
  270. });
  271. }
  272. }).catch(error=>{
  273. })
  274. }).catch(() => {
  275. });
  276. },
  277. sendCheckedInfo(checkIds){
  278. this.editRole.privIds = checkIds
  279. },
  280. handleSizeChange(val) {
  281. this.searchObj.pageSize = val
  282. this.getRoleList()
  283. },
  284. handleCurrentChange(val) {
  285. this.searchObj.pageNum = val
  286. this.getRoleList()
  287. },
  288. getDict(){
  289. request.get(`/sys/privs/getSysFlagByUserId?userId=${this.persId}`).then(res=>{
  290. if(res.success){
  291. this.privDict.systemFlag = res.data
  292. }else{
  293. this.$message.warning(res.message)
  294. }
  295. }).catch(error=>{
  296. this.$message.warning(res.message)
  297. })
  298. },
  299. systemFilter(item){
  300. if(!item){
  301. return ''
  302. }
  303. let system
  304. this.privDict.systemFlag.forEach(ele=>{
  305. if(item == ele.value){
  306. system = ele.name
  307. }
  308. })
  309. return system
  310. }
  311. },
  312. filters:{
  313. }
  314. }
  315. </script>
  316. <style scoped lang='scss'>
  317. .user-manage{
  318. padding: 20px;
  319. box-sizing: border-box;
  320. .search-wrapper{
  321. }
  322. }
  323. </style>