Update.vue 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <base-dialog @cancel="cancelDialog">
  3. <div slot="header">{{$t('compute.text_771')}}</div>
  4. <div slot="body">
  5. <dialog-table v-if="params.data && params.columns" :data="params.data" :columns="params.columns.slice(0)" />
  6. <node-alert-form
  7. ref="nodeAlertFormRef"
  8. :metric-opts="params.metricOpts"
  9. :hypervisor="params.hypervisor"
  10. :alertType="params.alertType"
  11. :fd-initail-value="fdInitailValue" />
  12. </div>
  13. <div slot="footer">
  14. <a-button type="primary" @click="handleConfirm" :loading="loading">{{ $t('dialog.ok') }}</a-button>
  15. <a-button @click="cancelDialog">{{ $t('dialog.cancel') }}</a-button>
  16. </div>
  17. </base-dialog>
  18. </template>
  19. <script>
  20. import NodeAlertForm from '../components/Form'
  21. import DialogMixin from '@/mixins/dialog'
  22. import WindowsMixin from '@/mixins/windows'
  23. export default {
  24. name: 'UpdateNodeAlert',
  25. components: {
  26. NodeAlertForm,
  27. },
  28. mixins: [DialogMixin, WindowsMixin],
  29. data () {
  30. return {
  31. loading: false,
  32. fdInitailValue: {
  33. ...this.params.data[0],
  34. recipients: this.params.data[0].recipients.split(','),
  35. window: +this.params.data[0].window.replace('m', ''),
  36. },
  37. }
  38. },
  39. methods: {
  40. async handleConfirm () {
  41. this.loading = true
  42. try {
  43. const values = await this.$refs.nodeAlertFormRef.validateForm()
  44. const recipients = values.recipients.join(',')
  45. const data = {
  46. metric: values.metric,
  47. window: `${values.window}m`,
  48. comparator: values.comparator,
  49. threshold: values.threshold + '',
  50. level: values.level,
  51. channel: values.channel,
  52. node_id: this.params.nodeId,
  53. type: this.params.alertType,
  54. recipients,
  55. scope: this.$store.getters.scope,
  56. }
  57. const id = this.params.data[0].id
  58. if (this.params.list) {
  59. await this.params.list.onManager('patch', { id, managerArgs: { data } })
  60. } else {
  61. await this.params.alertManager.patch({
  62. id,
  63. data,
  64. })
  65. }
  66. this.loading = false
  67. this.cancelDialog()
  68. this.$message.success(this.$t('compute.text_423'))
  69. this.params.list && this.params.list.refresh()
  70. } catch (error) {
  71. this.loading = false
  72. throw error
  73. }
  74. },
  75. },
  76. }
  77. </script>