stepform.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <template>
  2. <el-main>
  3. <el-card shadow="never" header="分步表单">
  4. <el-steps :active="active" align-center style="margin-bottom: 20px;">
  5. <el-step title="填写转账信息"></el-step>
  6. <el-step title="确认转账信息"></el-step>
  7. <el-step title="完成"></el-step>
  8. </el-steps>
  9. <el-row>
  10. <el-col :lg="{span: 8, offset: 8}">
  11. <el-form v-if="active==0" ref="stepForm_0" :model="form" :rules="rules" label-position="top">
  12. <el-form-item label="付款账户" prop="paymentAccount">
  13. <el-select v-model="form.paymentAccount" clearable>
  14. <el-option label="sakuya@scui.com" value="sakuya@scui.com"></el-option>
  15. <el-option label="lolicode@scui.com" value="lolicode@scui.com"></el-option>
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item label="收款账户" prop="collectionAccount">
  19. <el-input v-model="form.collectionAccount" clearable></el-input>
  20. </el-form-item>
  21. <el-form-item label="收款人姓名" prop="collectionName">
  22. <el-input v-model="form.collectionName" clearable></el-input>
  23. </el-form-item>
  24. <el-form-item label="转账金额" prop="amount">
  25. <el-input v-model="form.amount"></el-input>
  26. </el-form-item>
  27. </el-form>
  28. <el-form v-if="active==1" ref="stepForm_1" :model="form" :rules="rules" label-position="top">
  29. <el-alert title="确认转账后,资金将直接打入对方账户,无法退回。" type="warning" show-icon style="margin-bottom: 15px;"/>
  30. <el-descriptions :column="1" border>
  31. <el-descriptions-item label="付款账户">{{form.paymentAccount}}</el-descriptions-item>
  32. <el-descriptions-item label="收款账户">{{form.collectionAccount}}</el-descriptions-item>
  33. <el-descriptions-item label="收款人姓名">{{form.collectionName}}</el-descriptions-item>
  34. <el-descriptions-item label="转账金额">{{form.amount}} 元</el-descriptions-item>
  35. </el-descriptions>
  36. <el-divider></el-divider>
  37. <el-form-item label="支付密码" prop="payPassword">
  38. <el-input v-model="form.payPassword" show-password placeholder="请输入"></el-input>
  39. </el-form-item>
  40. </el-form>
  41. <div v-if="active==2">
  42. <el-result icon="success" title="操作成功" sub-title="预计两小时内到账">
  43. <template #extra>
  44. <el-button type="primary" @click="again">再转一笔</el-button>
  45. <el-button>查看账单</el-button>
  46. </template>
  47. </el-result>
  48. </div>
  49. <el-button v-if="active>0 && active<2" @click="pre" :disabled="submitLoading">上一步</el-button>
  50. <el-button v-if="active<1" type="primary" @click="next">下一步</el-button>
  51. <el-button v-if="active==1" type="primary" @click="submit" :loading="submitLoading">提交</el-button>
  52. </el-col>
  53. </el-row>
  54. </el-card>
  55. </el-main>
  56. </template>
  57. <script>
  58. export default {
  59. name: 'stepform',
  60. data() {
  61. return {
  62. active: 0,
  63. submitLoading: false,
  64. form: {
  65. paymentAccount: 'lolicode@scui.com',
  66. collectionAccount: 'test@example.com',
  67. collectionName: 'Lolowan',
  68. amount: '100',
  69. payPassword: ''
  70. },
  71. rules: {
  72. paymentAccount: [
  73. {
  74. required: true,
  75. message: '请选择付款账户',
  76. }
  77. ],
  78. collectionAccount: [
  79. {
  80. required: true,
  81. message: '请输入收款账户',
  82. }
  83. ],
  84. collectionName: [
  85. {
  86. required: true,
  87. message: '请输入收款人姓名',
  88. }
  89. ],
  90. amount: [
  91. {
  92. required: true,
  93. message: '请输入转账金额',
  94. }
  95. ],
  96. payPassword: [
  97. {
  98. required: true,
  99. message: '需要支付密码才能进行支付',
  100. }
  101. ]
  102. }
  103. }
  104. },
  105. mounted() {
  106. },
  107. methods: {
  108. //下一步
  109. next(){
  110. const formName = `stepForm_${this.active}`
  111. this.$refs[formName].validate((valid) => {
  112. if (valid) {
  113. this.active += 1
  114. }else{
  115. return false
  116. }
  117. })
  118. },
  119. //上一步
  120. pre(){
  121. this.active -= 1
  122. },
  123. //提交
  124. submit(){
  125. const formName = `stepForm_${this.active}`
  126. this.$refs[formName].validate((valid) => {
  127. if (valid) {
  128. this.submitLoading = true
  129. setTimeout(()=>{
  130. this.submitLoading = false
  131. this.active += 1
  132. },1000)
  133. }else{
  134. return false
  135. }
  136. })
  137. },
  138. //再来一次
  139. again(){
  140. this.active = 0
  141. }
  142. }
  143. }
  144. </script>
  145. <style scoped>
  146. .el-steps:deep(.is-finish) .el-step__line {background: var(--el-color-primary);}
  147. </style>