account_edit.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. <template>
  2. <div class="box">
  3. <div class="null-page" v-show="yes"></div>
  4. <el-card class="box-card">
  5. <div slot="header" class="clearfix">
  6. <span>编辑账户</span>
  7. </div>
  8. <div v-loading="loading">
  9. <el-form :model="formData" :rules="rules" ref="ruleForm" label-width="80px">
  10. <el-form-item label="姓名" prop="realname">
  11. <el-input v-model="formData.realname" placeholder="请输入真实姓名" class="ns-len-input"></el-input>
  12. </el-form-item>
  13. <el-form-item label="手机" prop="mobile">
  14. <el-input v-model="formData.mobile" autocomplete="off" placeholder="请输入手机号" maxlength="11" class="ns-len-input"></el-input>
  15. </el-form-item>
  16. <el-form-item label="账号类型" prop="withdraw_type">
  17. <el-select v-model="formData.withdraw_type" placeholder="请选择账号类型">
  18. <el-option v-for="(value, key) in transferType" :key="key" :label="value" :value="key" :disabled="key == 'wechatpay'"></el-option>
  19. </el-select>
  20. </el-form-item>
  21. <el-form-item label="银行名称" prop="branch_bank_name" v-if="formData.withdraw_type == 'bank'">
  22. <el-input v-model="formData.branch_bank_name" autocomplete="off" placeholder="请输入银行名称" maxlength="50" class="ns-len-input"></el-input>
  23. </el-form-item>
  24. <el-form-item label="提现账号" prop="bank_account" v-if="formData.withdraw_type != 'wechatpay' && formData.withdraw_type">
  25. <el-input v-model="formData.bank_account" autocomplete="off" placeholder="请输入提现账号" maxlength="30" class="ns-len-input"></el-input>
  26. </el-form-item>
  27. <el-form-item>
  28. <el-button size="medium" type="primary" @click="saveAccount('ruleForm')">保存</el-button>
  29. </el-form-item>
  30. </el-form>
  31. </div>
  32. </el-card>
  33. </div>
  34. </template>
  35. <script>
  36. import { transferType, accountDetail, saveAccount } from "@/api/member/member"
  37. export default {
  38. name: "account_edit",
  39. layout: "member",
  40. components: {},
  41. data () {
  42. let self = this
  43. var isMobile = (rule, value, callback) => {
  44. if (!value) {
  45. return callback(new Error("手机号不能为空"))
  46. } else {
  47. if (/^\d{11}$/.test(value)) {
  48. callback()
  49. } else {
  50. callback(new Error("请输入正确的手机号"))
  51. }
  52. }
  53. }
  54. return {
  55. formData: {
  56. id: '',
  57. realname: '',
  58. mobile: '',
  59. withdraw_type: '',
  60. bank_account: '',
  61. branch_bank_name: ''
  62. },
  63. flag: false, //防重复标识
  64. payList: [],
  65. loading: true,
  66. index: 0,
  67. transferType: [],
  68. rules: {
  69. realname: [{ required: true, message: "请输入真实姓名", trigger: "blur" }],
  70. mobile: [{ required: true, validator: isMobile, trigger: "blur" }],
  71. withdraw_type: [{ required: true, message: '请选择账号类型', trigger: 'change' }],
  72. branch_bank_name: [{ required: true, message: "请输入银行名称", trigger: "blur" }],
  73. bank_account: [{ required: true, message: "请输入提现账号", trigger: "blur" }],
  74. },
  75. yes: true
  76. }
  77. },
  78. created() {
  79. this.formData.id = this.$route.query.id
  80. this.getTransferType();
  81. if (this.formData.id) {
  82. this.getAccountDetail(this.formData.id)
  83. }
  84. },
  85. mounted() {
  86. let self = this;
  87. setTimeout(function() {
  88. self.yes = false
  89. }, 300)
  90. },
  91. methods: {
  92. /**
  93. * 获取转账方式
  94. */
  95. getTransferType() {
  96. transferType().then(res => {
  97. this.transferType = res.data;
  98. if (!this.formData.id) { // id为空,即添加时在此结束加载
  99. this.loading = false
  100. }
  101. }).catch(err => {
  102. if (!this.formData.id) {
  103. this.loading = false
  104. }
  105. })
  106. },
  107. /**
  108. * 获取账户详情(编辑)
  109. */
  110. getAccountDetail(id) {
  111. accountDetail({id: this.formData.id}).then(res => {
  112. if (res.code == 0 && res.data) {
  113. this.formData.realname = res.data.realname;
  114. this.formData.mobile = res.data.mobile;
  115. this.formData.bank_account = res.data.bank_account;
  116. this.formData.branch_bank_name = res.data.branch_bank_name;
  117. this.formData.withdraw_type = res.data.withdraw_type;
  118. }
  119. this.loading = false
  120. }).catch(err => {
  121. this.loading = false
  122. })
  123. },
  124. /**
  125. * 保存
  126. */
  127. saveAccount(formName) {
  128. this.$refs[formName].validate(valid => {
  129. if (valid) {
  130. var data = {
  131. id: this.formData.id,
  132. realname: this.formData.realname,
  133. mobile: this.formData.mobile,
  134. withdraw_type: this.formData.withdraw_type,
  135. bank_account: this.formData.bank_account,
  136. branch_bank_name: this.formData.branch_bank_name
  137. }
  138. data.url = "add"
  139. if (this.formData.id) {
  140. data.url = "edit"
  141. }
  142. if (this.flag) return
  143. this.flag = true
  144. saveAccount(data)
  145. .then(res => {
  146. if (res.code == 0) {
  147. this.$router.push({ path: "/member/account_list" })
  148. } else {
  149. this.flag = false
  150. this.$message({ message: res.message, type: "warning" })
  151. }
  152. })
  153. .catch(err => {
  154. this.flag = false
  155. this.$message.error(err.message)
  156. })
  157. } else {
  158. return false
  159. }
  160. })
  161. }
  162. }
  163. }
  164. </script>
  165. <style lang="scss" scoped>
  166. .box {
  167. width: 100%;
  168. position: relative;
  169. }
  170. .null-page {
  171. width: 100%;
  172. height: 730px;
  173. background-color: #FFFFFF;
  174. position: absolute;
  175. top: 0;
  176. left: 0;
  177. z-index: 9;
  178. }
  179. .el-card.is-always-shadow,
  180. .el-card.is-hover-shadow:focus,
  181. .el-card.is-hover-shadow:hover {
  182. box-shadow: unset;
  183. }
  184. .el-card {
  185. border: 0;
  186. }
  187. .ns-len-input {
  188. width: 350px;
  189. }
  190. .el-select {
  191. margin-right: 10px;
  192. }
  193. </style>