List.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <page-list
  3. :list="list"
  4. :columns="columns"
  5. :group-actions="groupActions"
  6. :single-actions="singleActions"
  7. :export-data-options="exportDataOptions" />
  8. </template>
  9. <script>
  10. import ColumnsMixin from '../mixins/columns'
  11. import SingleActionsMixin from '../mixins/singleActions'
  12. import WindowsMixin from '@/mixins/windows'
  13. import { ENABLED_OPTS } from '@/constants'
  14. import ListMixin from '@/mixins/list'
  15. export default {
  16. name: 'AnsibleTemplateList',
  17. mixins: [WindowsMixin, ListMixin, ColumnsMixin, SingleActionsMixin],
  18. props: {
  19. id: String,
  20. getParams: {
  21. type: [Function, Object],
  22. },
  23. },
  24. data () {
  25. return {
  26. list: this.$list.createList(this, {
  27. id: this.id,
  28. resource: 'devtool_templates',
  29. getParams: this.getParams,
  30. filterOptions: {
  31. name: {
  32. label: this.$t('compute.text_228'),
  33. filter: true,
  34. formatter: val => {
  35. return `name.contains("${val}")`
  36. },
  37. },
  38. enabled: {
  39. label: this.$t('compute.text_241'),
  40. dropdown: true,
  41. multiple: true,
  42. items: ENABLED_OPTS,
  43. },
  44. },
  45. }),
  46. exportDataOptions: {
  47. items: [
  48. { label: 'ID', key: 'id' },
  49. { label: this.$t('compute.text_228'), key: 'name' },
  50. { label: this.$t('compute.text_241'), key: 'enabled' },
  51. { label: this.$t('compute.text_242'), key: 'interval' },
  52. { label: this.$t('dictionary.project'), key: 'tenant' },
  53. { label: this.$t('compute.text_243'), key: 'create_at' },
  54. ],
  55. },
  56. groupActions: [
  57. // {
  58. // label: '新建',
  59. // action: () => {
  60. // this.$router.push('/ansibletemplate/create')
  61. // },
  62. // meta: (obj) => {
  63. // return {
  64. // buttonType: 'primary',
  65. // }
  66. // },
  67. // },
  68. // {
  69. // label: '删除',
  70. // permission: 'disks_delete',
  71. // action: () => {
  72. // this.createDialog('DeleteResDialog', {
  73. // vm: this,
  74. // data: this.list.selectedItems,
  75. // columns: this.columns,
  76. // title: '删除',
  77. // onManager: this.onManager,
  78. // })
  79. // },
  80. // meta: () => this.$getDeleteResult(this.list.selectedItems),
  81. // },
  82. ],
  83. }
  84. },
  85. created () {
  86. this.initSidePageTab('detail')
  87. this.list.fetchData()
  88. },
  89. methods: {
  90. handleOpenSidepage (row) {
  91. this.sidePageTriggerHandle(this, 'AnsibleTemplateSidepage', {
  92. id: row.id,
  93. resource: 'devtool_templates',
  94. getParams: this.getParams,
  95. }, {
  96. list: this.list,
  97. })
  98. },
  99. },
  100. }
  101. </script>