0aa5fe072f6dc3b965474cfbaec96f828aae263c.svn-base 9.5 KB

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