account.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  1. <template>
  2. <view class="content">
  3. <view class="navbar">
  4. <view v-for="(item, index) in navList" :key="index" class="nav-item"
  5. :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
  6. </view>
  7. <swiper :current="tabCurrentIndex" class="swiper-box" duration="300" @change="changeTab">
  8. <swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
  9. <view class="row b-b">
  10. <text class="tit">开户银行</text>
  11. <!-- range是你要显示的数组,range-key是数组中你要显示的那一项,range-key="{{'label'}}" ,range-key中的数据要加引号!!!!!才生效! -->
  12. <picker class="input" :range="bankList" mode="selector" :value="addressIndex" @change="changeBank">
  13. <view v-if="bankList[bankIndex]">{{bankList[bankIndex] }}</view>
  14. <view v-else class="font-color-gray">开户银行</view>
  15. </picker>
  16. </view>
  17. <view class="row b-b">
  18. <text class="tit">所属支行</text>
  19. <input class="input" v-model="tabItem.orderList.zhiBank" type="text" placeholder="所属支行"
  20. placeholder-class="placeholder" />
  21. </view>
  22. <view class="row b-b">
  23. <text class="tit">姓名</text>
  24. <input class="input" v-model="tabItem.orderList.name" type="text" placeholder="提款人姓名"
  25. placeholder-class="placeholder" />
  26. </view>
  27. <view class="row b-b">
  28. <text class="tit">{{ tabIndex == 0 ? '账号' : '银行卡号' }}</text>
  29. <input class="input" v-model="tabItem.orderList.code" type="text" placeholder="请输入账号"
  30. placeholder-class="placeholder" />
  31. </view>
  32. </swiper-item>
  33. </swiper>
  34. <button class="add-btn up" @click="confirm">提交申请</button>
  35. </view>
  36. </template>
  37. <script>
  38. import {
  39. aliInfo,
  40. bankInfo,
  41. setAliInfo,
  42. setBankInfo,
  43. extractBank
  44. } from '@/api/wallet.js';
  45. import {
  46. mapState,
  47. mapMutations
  48. } from 'vuex';
  49. export default {
  50. data() {
  51. return {
  52. bankList: [],
  53. bankIndex: 0,
  54. addressDetail: '',
  55. addressIndex: [0],
  56. tabCurrentIndex: 0,
  57. addressData: {
  58. name: '',
  59. mobile: '',
  60. area: '',
  61. default: false,
  62. id: ''
  63. },
  64. navList: [
  65. // {
  66. // state: 0,
  67. // text: '支付宝',
  68. // loadingType: 'more',
  69. // orderList: {
  70. // name: '',
  71. // code: '',
  72. // id: ''
  73. // }
  74. // },
  75. {
  76. state: 1,
  77. text: '银行卡',
  78. loadingType: 'more',
  79. orderList: {
  80. name: '',
  81. code: '',
  82. id: '',
  83. bank: '',
  84. zhiBank: ''
  85. }
  86. }
  87. ]
  88. };
  89. },
  90. onLoad(options) {
  91. this.tabCurrentIndex = +options.state || 0;
  92. // this.loadAli();
  93. // this.loadBank();
  94. this.onCityClick();
  95. },
  96. computed: {
  97. ...mapState('user', ['bankInfo'])
  98. },
  99. methods: {
  100. ...mapMutations('user', ['addBank']),
  101. changeBank(e) {
  102. console.log(e, '22221');
  103. this.bankIndex = e.target.value
  104. },
  105. //选择下拉框
  106. onCityClick() {
  107. extractBank({}).then(({
  108. data
  109. }) => {
  110. console.log(data, '22222');
  111. // this.navList.orderList.name = data.extractBank
  112. this.bankList = data.extractBank
  113. })
  114. },
  115. //加载数据
  116. loadAli(source) {
  117. aliInfo({}).then(({
  118. data
  119. }) => {
  120. let order = this.navList[0].orderList;
  121. this.$set(order, 'name', data.fullname);
  122. this.$set(order, 'code', data.alino);
  123. this.$set(order, 'id', data.id);
  124. });
  125. },
  126. loadBank() {
  127. bankInfo({}).then(({
  128. data
  129. }) => {
  130. console.log(data, '22222');
  131. let order = this.navList[1].orderList;
  132. this.$set(order, 'name', data.fullname);
  133. this.$set(order, 'code', data.bankno);
  134. this.$set(order, 'bankName', data.bank);
  135. this.$set(order, 'id', data.id);
  136. });
  137. },
  138. //swiper 切换
  139. changeTab(e) {
  140. this.tabCurrentIndex = e.target.current;
  141. },
  142. //顶部tab点击
  143. tabClick(index) {
  144. this.tabCurrentIndex = index;
  145. },
  146. // 提交保存
  147. confirm() {
  148. let obj = this;
  149. let arr = obj.navList[0].orderList;
  150. arr.bank = obj.bankList[obj.bankIndex]
  151. this.addBank(arr);
  152. // prevPage.$vm.sh = 100; //修改上一页data里面的sh参数值为100
  153. if (obj.tabCurrentIndex == 0) {
  154. if (!arr.name) {
  155. return this.$api.msg('请输入提款人姓名');
  156. }
  157. if (!obj.bankList[obj.bankIndex]) {
  158. // console.log(obj.bankList[obj.bankIndex]);
  159. return this.$api.msg('请输入所属银行');
  160. }
  161. if (!arr.code) {
  162. return this.$api.msg('请输入银行卡号');
  163. }
  164. if (!arr.zhiBank) {
  165. return this.$api.msg('请输入所属支行');
  166. }
  167. let data = {
  168. fullname: arr.name,
  169. bank: obj.bankList[obj.bankIndex] + '(' + arr.zhiBank + ')',
  170. bankno: arr.code
  171. };
  172. console.log(data, '4444');
  173. // #ifdef H5
  174. // prevPage.$vm.bankData = data;
  175. // console.log(data, '54454');
  176. // #endif
  177. // #ifdef MP
  178. // prevPage.setData({
  179. // bankData: data
  180. // });
  181. // #endif
  182. // obj.setBankInfo({
  183. // fullname: arr.name,
  184. // bank: arr.bankName,
  185. // bankno: arr.code,
  186. // id:arr.id
  187. // });
  188. uni.navigateBack({
  189. delta: 1
  190. });
  191. }
  192. // if (obj.tabCurrentIndex == 0) {
  193. // if (!arr.name) {
  194. // return this.$api.msg('请输入提款人姓名');
  195. // }
  196. // if (!arr.code) {
  197. // return this.$api.msg('请输入支付宝账号');
  198. // }
  199. // let data = {
  200. // fullname: arr.name,
  201. // alino: arr.code
  202. // };
  203. // // #ifdef H5
  204. // prevPage.$vm.aliData = data;
  205. // // #endif
  206. // // #ifdef MP
  207. // prevPage.setData({
  208. // bankData: data
  209. // });
  210. // // #endif
  211. // // obj.setAliInfo({
  212. // // fullname: arr.name,
  213. // // alino: arr.code,
  214. // // id:arr.id
  215. // // });
  216. // uni.navigateBack({
  217. // delta: 1
  218. // });
  219. // }
  220. },
  221. /* 保存银行卡详细 */
  222. setBankInfo(obj) {
  223. setBankInfo(obj)
  224. .then(e => {
  225. uni.showToast({
  226. title: '修改成功',
  227. duration: 2000,
  228. position: 'top'
  229. });
  230. this.$api.prePage().dataUp();
  231. setTimeout(() => {
  232. uni.navigateBack();
  233. }, 1500);
  234. })
  235. .catch(e => {
  236. console.log(e);
  237. });
  238. },
  239. // 修改支付宝信息
  240. setAliInfo(obj) {
  241. setAliInfo(obj)
  242. .then(e => {
  243. uni.showToast({
  244. title: '修改成功',
  245. duration: 2000,
  246. position: 'top'
  247. });
  248. this.$api.prePage().dataUp();
  249. setTimeout(() => {
  250. uni.navigateBack();
  251. }, 1500);
  252. })
  253. .catch(e => {
  254. console.log(e);
  255. });
  256. }
  257. }
  258. };
  259. </script>
  260. <style lang="scss">
  261. .row {
  262. display: flex;
  263. align-items: center;
  264. position: relative;
  265. padding: 0 30rpx;
  266. height: 110rpx;
  267. background: #fff;
  268. .tit {
  269. margin-right: 50rpx;
  270. flex-shrink: 0;
  271. width: 120rpx;
  272. font-size: 30rpx;
  273. color: $font-color-dark;
  274. }
  275. .input {
  276. display: flex;
  277. align-items: center;
  278. flex: 1;
  279. font-size: 30rpx;
  280. color: $font-color-dark;
  281. }
  282. .iconlocation {
  283. font-size: 36rpx;
  284. color: $font-color-light;
  285. }
  286. }
  287. page,
  288. .content {
  289. background: $page-color-base;
  290. height: 100%;
  291. }
  292. .swiper-box {
  293. height: 750rpx;
  294. }
  295. .navbar {
  296. display: flex;
  297. height: 40px;
  298. padding: 0 5px;
  299. background: #fff;
  300. box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
  301. position: relative;
  302. z-index: 10;
  303. .nav-item {
  304. flex: 1;
  305. display: flex;
  306. justify-content: center;
  307. align-items: center;
  308. height: 100%;
  309. font-size: 15px;
  310. color: $font-color-dark;
  311. position: relative;
  312. &.current {
  313. color: $base-color;
  314. &:after {
  315. content: '';
  316. position: absolute;
  317. left: 50%;
  318. bottom: 0;
  319. transform: translateX(-50%);
  320. width: 44px;
  321. height: 0;
  322. border-bottom: 2px solid $base-color;
  323. }
  324. }
  325. }
  326. }
  327. .add-btn {
  328. &.up {
  329. background-color: $base-color;
  330. color: #fff;
  331. }
  332. display: flex;
  333. align-items: center;
  334. justify-content: center;
  335. width: 690rpx;
  336. height: 80rpx;
  337. margin: 0 auto;
  338. margin-top: 30rpx;
  339. font-size: $font-lg;
  340. border-radius: 10rpx;
  341. // box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4);
  342. }
  343. </style>