fileEchart.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <template>
  2. <div>
  3. <div style="text-align: center">
  4. <!--表头-->
  5. <div class="form-header">
  6. <div class="title ibps-tc">用户查阅文件授权</div>
  7. </div>
  8. <el-transfer style="text-align: left; display: inline-block" v-model="permissionFilesKey" filterable
  9. :render-content="renderFunc" :titles="['受限文件', '可查阅文件']" :button-texts="['受限', '可查阅']" :format="{
  10. noChecked: '${total}',
  11. hasChecked: '${checked}/${total}'
  12. }" @change="handleChange" :data="allFiles">
  13. </el-transfer>
  14. </div>
  15. </div>
  16. </template>
  17. <script>
  18. import { getLmitedFile, getUserByFile, saveUserByFile } from '@/api/permission/file'
  19. export default {
  20. props: {
  21. id: {
  22. type: [String, Number]
  23. },
  24. },
  25. data() {
  26. return {
  27. idT: '',
  28. allFilesDatas: [],// 所有受控文件,与个人无关
  29. allFiles: [],
  30. noPermissionFiles: [],
  31. permissionFiles: [],
  32. permissionFilesKey: [],
  33. renderFunc(h, option) {
  34. return <span>{option.label}</span>;
  35. }
  36. };
  37. },
  38. methods: {
  39. handleChange(value, direction, movedKeys) {
  40. let paramsDatas = []
  41. for (let i of value) {
  42. let paramsData = {}
  43. let filterDatas = this.allFilesDatas.filter(item => item.wenJianId == i)
  44. paramsData["yongHuId"] = this.idT
  45. paramsData["wenJianId"] = filterDatas[0].wenJianId
  46. paramsData["wenJianMingChe"] = filterDatas[0].wenJianMingChe
  47. paramsDatas.push(paramsData)
  48. }
  49. saveUserByFile(paramsDatas).then(res => {
  50. }).catch(res => {
  51. })
  52. },
  53. getFormData(id) {
  54. getLmitedFile(id).then(res => {
  55. for (let i of res.variables.data) {
  56. this.allFilesDatas.push(i)
  57. let fileData = {}
  58. fileData["key"] = i.wenJianId
  59. fileData["label"] = i.wenJianMingChe
  60. fileData["yongHuId"] = id
  61. this.noPermissionFiles.push(fileData)
  62. this.allFiles.push(fileData)
  63. }
  64. }).catch(res => {
  65. })
  66. getUserByFile(id).then(res => {
  67. for (let i of res.variables.data) {
  68. this.allFilesDatas.push(i)
  69. let filterFile = {}
  70. filterFile["key"] = i.wenJianId
  71. filterFile["label"] = i.wenJianMingChe
  72. filterFile["yongHuId"] = id
  73. this.permissionFiles.push(filterFile)
  74. this.permissionFilesKey.push(i.wenJianId)
  75. this.allFiles.push(filterFile)
  76. }
  77. }).catch(res => {
  78. })
  79. },
  80. },
  81. watch: {
  82. id: {
  83. immediate: true,
  84. handler: function (val, oldVal) {
  85. this.allFilesDatas = []
  86. this.permissionFiles = []
  87. this.noPermissionFiles = []
  88. this.allFiles = []
  89. this.permissionFilesKey = []
  90. this.idT = val
  91. this.getFormData(val)
  92. },
  93. }
  94. }
  95. };
  96. </script>
  97. <style scoped lang="less">
  98. .form-header {
  99. border-bottom: 1px solid #2b34410d;
  100. margin-bottom: 5px;
  101. .title {
  102. font-size: 16px;
  103. font-weight: bold;
  104. color: #222;
  105. text-align: left;
  106. padding: 8px 10px 10px;
  107. margin: 0;
  108. }
  109. .desc {
  110. word-wrap: break-word;
  111. word-break: normal;
  112. text-indent: 0;
  113. line-height: 1.6;
  114. margin: 0 0 11px;
  115. padding: 3px 30px 8px;
  116. }
  117. }
  118. .transfer-footer {
  119. margin-left: 20px;
  120. padding: 6px 5px;
  121. }
  122. /deep/.el-transfer {
  123. width: 100%;
  124. }
  125. /deep/ .el-transfer-panel {
  126. width: 40%;
  127. }
  128. /deep/ .el-transfer__buttons {
  129. width: 10%;
  130. padding: 0 10px;
  131. }
  132. /deep/ .el-transfer-panel__body {
  133. height: auto;
  134. }
  135. /deep/.el-transfer-panel__list {
  136. height: 650px;
  137. }
  138. /deep/ .el-button {
  139. width: 100%;
  140. }
  141. </style>