ResetPassword.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <template>
  2. <base-dialog @cancel="cancelDialog">
  3. <div slot="header">{{this.params.title}}</div>
  4. <div slot="body">
  5. <dialog-selected-tips :name="$t('dictionary.elasticcaches')" :count="params.data.length" :action="params.title" />
  6. <dialog-table :data="params.data" :columns="params.columns.slice(0, 3)" />
  7. <a-form :form="form.fc" class="mt-3">
  8. <a-form-item v-if="this.params.data[0].provider === 'Huawei'" :label="$t('db.text_291')" v-bind="formItemLayout">
  9. <a-input-password v-decorator="decorators.old_password" />
  10. </a-form-item>
  11. <a-form-item :label="$t('db.text_286')" v-bind="formItemLayout">
  12. <server-password :loginTypes="['random', 'password']" :decorator="decorators.loginConfig" />
  13. </a-form-item>
  14. </a-form>
  15. </div>
  16. <div slot="footer">
  17. <a-button type="primary" @click="handleConfirm" :loading="loading">{{ $t("dialog.ok") }}</a-button>
  18. <a-button @click="cancelDialog">{{ $t('dialog.cancel') }}</a-button>
  19. </div>
  20. </base-dialog>
  21. </template>
  22. <script>
  23. import ServerPassword from '@Compute/sections/ServerPassword'
  24. import DialogMixin from '@/mixins/dialog'
  25. import WindowsMixin from '@/mixins/windows'
  26. import { passwordValidator } from '@/utils/validate'
  27. export default {
  28. name: 'RedisResetPassworddialog',
  29. components: {
  30. ServerPassword,
  31. },
  32. mixins: [DialogMixin, WindowsMixin],
  33. provide () {
  34. return {
  35. form: this.form,
  36. }
  37. },
  38. data () {
  39. return {
  40. form: {
  41. fc: this.$form.createForm(this),
  42. },
  43. formItemLayout: {
  44. wrapperCol: { span: 20 },
  45. labelCol: { span: 4 },
  46. },
  47. loading: false,
  48. }
  49. },
  50. computed: {
  51. decorators () {
  52. const decorators = {
  53. old_password: [
  54. 'old_password',
  55. {
  56. validateFirst: true,
  57. rules: [
  58. { required: true, message: this.$t('db.text_207') },
  59. { validator: passwordValidator },
  60. ],
  61. },
  62. ],
  63. loginConfig: {
  64. loginType: [
  65. 'loginType',
  66. {
  67. initialValue: 'random',
  68. },
  69. ],
  70. },
  71. }
  72. return decorators
  73. },
  74. },
  75. methods: {
  76. validateForm () {
  77. return new Promise((resolve, reject) => {
  78. this.form.fc.validateFields((err, values) => {
  79. if (!err) {
  80. resolve(values)
  81. } else {
  82. reject(err)
  83. }
  84. })
  85. })
  86. },
  87. async handleConfirm () {
  88. this.loading = true
  89. try {
  90. this.loading = false
  91. const values = await this.validateForm()
  92. if (values.loginType === 'random') {
  93. values.reset_password = true
  94. }
  95. await this.params.onManager('performAction', {
  96. id: this.params.data[0].id,
  97. steadyStatus: 'running',
  98. managerArgs: {
  99. action: 'reset-password',
  100. data: {
  101. ...values,
  102. },
  103. },
  104. })
  105. this.cancelDialog()
  106. this.params.refresh()
  107. this.$message.success(this.$t('db.text_149'))
  108. } catch (error) {
  109. this.loading = false
  110. throw error
  111. }
  112. },
  113. },
  114. }
  115. </script>