button.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <div class="button">
  3. <el-form ref="form" :model="form" label-width="100px">
  4. <div class="flex-wrap fr-list">
  5. <el-form-item class="flex1" label="权限编码">
  6. <el-input size="small" clearable placeholder="请输入权限编码" v-model="form.auth_ident"></el-input>
  7. </el-form-item>
  8. <el-form-item class="flex1" label="图标">
  9. <el-select size="small" clearable v-model="form.show_icon" placeholder="请选择图标">
  10. <el-option v-for="(item,index) in icons" :key="index" :label="item.name" :value="item.value">
  11. <i :class="item.name"></i>
  12. </el-option>
  13. </el-select>
  14. </el-form-item>
  15. <el-form-item class="flex1" label="显示方式">
  16. <el-select size="small" clearable v-model="form.show_type" placeholder="请选择显示方式">
  17. <el-option label="名称" value="1"></el-option>
  18. <el-option label="图标" value="2"></el-option>
  19. <el-option label="名称和图标" value="3"></el-option>
  20. </el-select>
  21. </el-form-item>
  22. </div>
  23. <div class="flex-wrap fr-list">
  24. <el-form-item class="flex1" label="服务类型">
  25. <el-select size="small" clearable v-model="form.service_type" placeholder="请选择服务类型">
  26. <el-option label="查询" value="1"></el-option>
  27. <el-option label="新增" value="2"></el-option>
  28. <el-option label="修改" value="3"></el-option>
  29. <el-option label="删除" value="4"></el-option>
  30. <el-option label="其他" value="5"></el-option>
  31. <el-option label="数据项" value="6"></el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item class="flex1" label="关联数据项">
  35. <el-select size="small" clearable v-model="form.relation_data" placeholder="请选择关联数据项">
  36. <el-option v-for="(item,index) in relationData" :key="index" :label="item.columnLabel" :value="item.columnName"></el-option>
  37. </el-select>
  38. </el-form-item>
  39. <el-form-item class="flex1" label="打开方式">
  40. <el-select size="small" clearable v-model="form.open_method" placeholder="请选择打开方式">
  41. <el-option label="平铺" value="1"></el-option>
  42. <el-option label="跳转" value="2"></el-option>
  43. <el-option label="弹框" value="3"></el-option>
  44. </el-select>
  45. </el-form-item>
  46. </div>
  47. <div class="flex-wrap fr-list">
  48. <el-form-item class="flex1" label="传递参数">
  49. <el-select size="small" multiple collapse-tags clearable v-model="form.pass_parameters" placeholder="请选择传递参数">
  50. <el-option v-for="(item,index) in passData" :key="index" :label="item.columnLabel" :value="item.columnName">
  51. </el-option>
  52. </el-select>
  53. </el-form-item>
  54. <el-form-item class="flex1" label="跳转地址">
  55. <el-input size="small" clearable placeholder="请输入跳转地址" v-model="form.route_info"></el-input>
  56. </el-form-item>
  57. <el-form-item class="flex1" label="窗口标识码">
  58. <el-input size="small" clearable placeholder="请输入窗口标识码" v-model="form.window_ident"></el-input>
  59. </el-form-item>
  60. </div>
  61. <el-form-item class="flex1" label="权限描述">
  62. <el-input size="small" type="textarea" :rows="5" placeholder="请输入权限描述" v-model="form.auth_comment"></el-input>
  63. </el-form-item>
  64. </el-form>
  65. </div>
  66. </template>
  67. <script>
  68. import pb from '@/layout/mixin/getPublicData'
  69. import { initColumnSet } from '@/api/newLogin'
  70. export default {
  71. name: 'Button',
  72. mixins: [pb],
  73. props: {
  74. icons: {
  75. type: Array,
  76. default: () => []
  77. },
  78. authObj: {
  79. type: Object,
  80. default: () => { }
  81. },
  82. authType: {
  83. type: String,
  84. default: ''
  85. },
  86. authNum: {
  87. type: Number,
  88. default: 0
  89. }
  90. },
  91. data () {
  92. return {
  93. form: {
  94. show_type: '',
  95. auth_ident: '',
  96. show_icon: '',
  97. service_type: '',
  98. relation_data: '',
  99. open_method: '',
  100. pass_parameters: '',
  101. route_info: '',
  102. window_ident: '',
  103. auth_comment: ''
  104. },
  105. relationData: [],
  106. passData: []
  107. }
  108. },
  109. watch: {
  110. authType: {
  111. handler (val) {
  112. if (val == 'add') {
  113. this.clearForm()
  114. }
  115. },
  116. immediate: true
  117. },
  118. authObj: {
  119. handler (obj) {
  120. this.relationData = []
  121. this.passData = []
  122. if (!Array.isArray(obj.pass_parameters) && obj.pass_parameters) {
  123. obj.pass_parameters = obj.pass_parameters.split(',')
  124. }
  125. if (obj.up_auth_id) {
  126. this.getRelationData(obj.up_auth_id)
  127. }
  128. this.form = obj
  129. },
  130. immediate: true
  131. },
  132. authNum: {
  133. handler (val) {
  134. if (val) {
  135. this.getRelationData(val)
  136. }
  137. },
  138. immediate: true
  139. }
  140. },
  141. mounted () {
  142. this.getRelationData()
  143. },
  144. methods: {
  145. //清空表单
  146. clearForm () {
  147. const data = this.form
  148. for (const key in data) {
  149. if (Object.hasOwnProperty.call(data, key)) {
  150. data[key] = null
  151. }
  152. }
  153. },
  154. async getRelationData (id = this.form.up_auth_id) {
  155. const result = await this.getQuery(SERVICE_ID.getTableColumnId, false, { serviceOutPutId: id })
  156. if (result && result.length) {
  157. this.relationData = result
  158. this.passData = result
  159. }
  160. }
  161. }
  162. }
  163. </script>
  164. <style lang="scss" scoped>
  165. .button {
  166. .fr-list {
  167. .el-form-item {
  168. margin-right: 105px;
  169. &:last-child {
  170. margin-right: 0;
  171. }
  172. }
  173. }
  174. .el-select {
  175. width: 100%;
  176. }
  177. }
  178. </style>