index.vue 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <!-- -->
  2. <template>
  3. <div class="m-container">
  4. <h2>
  5. <div class="squrt"></div>汇付账号管理
  6. </h2>
  7. <div class="topWrap">
  8. <div class="newBand"
  9. v-permission="'adapay/createMember'"
  10. @click="onOperationAccount('create')">创建账号</div>
  11. </div>
  12. <div class="m-core">
  13. <el-form :inline="true"
  14. class="searchForm"
  15. v-model.trim="searchForm">
  16. <el-form-item>
  17. <el-input v-model.trim="searchForm.memberId"
  18. placeholder="请输入商户号"></el-input>
  19. </el-form-item>
  20. <el-form-item>
  21. <el-input v-model.trim="searchForm.name"
  22. placeholder="请输入公司名称"></el-input>
  23. </el-form-item>
  24. <el-form-item>
  25. <el-select v-model.trim="searchForm.status"
  26. filterable
  27. clearable
  28. placeholder="请选择审核状态">
  29. <el-option label="处理中"
  30. value="pending"></el-option>
  31. <el-option label="成功"
  32. value="succeeded"></el-option>
  33. <el-option label="失败"
  34. value="failed"></el-option>
  35. </el-select>
  36. </el-form-item>
  37. <el-form-item>
  38. <el-button @click="getList"
  39. type="danger">搜索</el-button>
  40. </el-form-item>
  41. </el-form>
  42. <div class="tableWrap">
  43. <el-table :data="tableList"
  44. :header-cell-style="{background:'#EDEEF0',color:'#444'}">
  45. <el-table-column label="商户号"
  46. align="center"
  47. prop="memberId"></el-table-column>
  48. <el-table-column label="法人"
  49. align="center"
  50. prop="legalPerson"></el-table-column>
  51. <el-table-column label="法人手机号"
  52. align="center"
  53. prop="legalMp"></el-table-column>
  54. <el-table-column label="法人身份证号"
  55. align="center"
  56. prop="legalCertId"></el-table-column>
  57. <el-table-column label="公司名称"
  58. align="center"
  59. prop="name"></el-table-column>
  60. <el-table-column label="统一社会信用码"
  61. align="center"
  62. prop="socialCreditCode"></el-table-column>
  63. <el-table-column label="银行卡号"
  64. align="center"
  65. prop="cardNo"></el-table-column>
  66. <el-table-column label="审核状态"
  67. align="center"
  68. prop="status">
  69. <template slot-scope="scope">
  70. {{ scope.row.status | formatStatus }}
  71. </template>
  72. </el-table-column>
  73. <el-table-column label="备注"
  74. align="center"
  75. prop="memo"></el-table-column>
  76. <el-table-column label="操作"
  77. width="250px"
  78. align="center"
  79. fixed="right">
  80. <template slot-scope="scope">
  81. <el-button v-if="scope.row.status === 'failed'"
  82. v-permission="'adapay/updateMember'"
  83. @click="onOperationAccount('update', scope.row)"
  84. type="text">修改</el-button>
  85. <el-button v-if="scope.row.status === 'succeeded'"
  86. v-permission="'adapay/createSettleAccount'"
  87. @click="onUpdateAccount(scope.row)"
  88. type="text">修改结算账户</el-button>
  89. </template>
  90. </el-table-column>
  91. </el-table>
  92. <pagination :total="rules.total"
  93. :page.sync="rules.page"
  94. :limit.sync="rules.limit"
  95. :page-sizes="rules.page_size"
  96. @pagination="getList" />
  97. </div>
  98. </div>
  99. <el-dialog title="绑定结算账户"
  100. :visible.sync="zeroVisible"
  101. width="400px"
  102. @close="onFormClose('maskForm')">
  103. <el-form :model='maskForm'
  104. :rules="maskRules"
  105. label-width="100px"
  106. label-position="right"
  107. ref="maskForm">
  108. <el-form-item label="银行卡号"
  109. prop="cardNo">
  110. <el-input v-model="maskForm.cardNo"
  111. placeholder="请输入银行卡号"></el-input>
  112. </el-form-item>
  113. <el-form-item label="所属银行"
  114. prop="bankCode">
  115. <el-select v-model="maskForm.bankCode"
  116. style="width: 100% !important"
  117. placeholder="请选择所属银行">
  118. <el-option v-for="(item, index) in backList"
  119. :key="index"
  120. :label="item.title"
  121. :value="item.value"></el-option>
  122. </el-select>
  123. </el-form-item>
  124. </el-form>
  125. <span slot="footer"
  126. class="dialog-footer">
  127. <el-button @click="zeroVisible = false">取 消</el-button>
  128. <el-button type="primary"
  129. @click="addZero('maskForm')">确 定</el-button>
  130. </span>
  131. </el-dialog>
  132. </div>
  133. </template>
  134. <script>
  135. import pagination from "@/components/Pagination/index";
  136. import AccountForm from './form'
  137. import { queryPageList, createSettleAccount } from './api.js'
  138. import { cityJson } from './cityJson'
  139. import { bankJson } from './bankJson'
  140. import cleanDeep from 'clean-deep'
  141. export default {
  142. components: {
  143. pagination,
  144. AccountForm
  145. },
  146. data () {
  147. return {
  148. zeroVisible: false,
  149. backList: bankJson,
  150. rules: {
  151. // 分页规则
  152. limit: 20, // 限制显示条数
  153. page: 1, // 当前页
  154. total: 0, // 总条数
  155. page_size: [10, 20, 50, 100] // 选择限制显示条数
  156. },
  157. tableList: [],
  158. searchForm: {},
  159. maskRules: {
  160. cardNo: [{ required: true, message: '请输入银行卡号', trigger: 'blur' }],
  161. bankCode: [{ required: true, message: '请选择所属银行', trigger: 'change' }]
  162. },
  163. maskForm: {
  164. memberId: null,
  165. cardNo: null,
  166. bankCode: null
  167. }
  168. };
  169. },
  170. mounted () {
  171. this.getList()
  172. },
  173. activated () {
  174. this.getList()
  175. },
  176. methods: {
  177. getList () {
  178. try {
  179. let obj = this.searchForm
  180. obj.page = this.rules.page
  181. obj.rows = this.rules.limit
  182. queryPageList(cleanDeep(obj)).then(res => {
  183. if (res.code == 200) {
  184. this.tableList = res.data.rows
  185. this.rules.total = res.data.total
  186. }
  187. })
  188. } catch {
  189. //
  190. }
  191. },
  192. onFormClose (formName) {
  193. this.$refs[formName].resetFields()
  194. },
  195. onOperationAccount (type, row) {
  196. this.$router.push({
  197. path: '/insideSetting/adapayOperation',
  198. query: {
  199. type: type,
  200. row: JSON.stringify(row)
  201. }
  202. })
  203. },
  204. onUpdateAccount (row) {
  205. this.zeroVisible = true
  206. this.maskForm = {
  207. memberId: row.memberId,
  208. cardNo: row.cardNo,
  209. bankCode: row.bankCode
  210. }
  211. },
  212. addZero (formName) {
  213. this.$refs[formName].validate(valid => {
  214. if (valid) {
  215. createSettleAccount(cleanDeep(this.maskForm)).then(res => {
  216. if (res.code == 200) {
  217. this.$message.success('修改结算账户成功')
  218. this.zeroVisible = false
  219. } else {
  220. this.$message.error(res.msg)
  221. }
  222. })
  223. } else {
  224. return false;
  225. }
  226. });
  227. }
  228. },
  229. filters: {
  230. formatStatus (val) {
  231. const templateList = {
  232. pending: "处理中",
  233. succeeded: "成功",
  234. failed: "失败"
  235. }
  236. return templateList[val]
  237. }
  238. }
  239. };
  240. </script>
  241. <style lang='scss' scoped>
  242. </style>