浏览代码

我的钱包

cr 4 年之前
父节点
当前提交
f7814ee7c9
共有 8 个文件被更改,包括 335 次插入132 次删除
  1. 4 0
      releaselog.md
  2. 1 0
      src/common/store/common.js
  3. 2 1
      src/pages.json
  4. 3 3
      src/pages/manage/index.vue
  5. 82 7
      src/pages/wallet/bill.vue
  6. 18 21
      src/pages/wallet/bind.vue
  7. 62 6
      src/pages/wallet/detail.vue
  8. 163 94
      src/pages/wallet/index.vue

+ 4 - 0
releaselog.md

@@ -1,5 +1,9 @@
1 1
 
2 2
 
3
+# 0.5.1 (21.03.18 18:00) 
4
+### 我的钱包
5
+
6
+
3 7
 # 0.5.0 (21.03.13 12:00) 
4 8
 ### 完成开店
5 9
 

+ 1 - 0
src/common/store/common.js

@@ -19,6 +19,7 @@ const module = {
19 19
         cashierRefundData:false, //manage/cashier/Refund 收银退货临时保存
20 20
         groupData:null, //assistant/setting/xxx 临时保存
21 21
         platformData:null,//assistant/setting2/xxx 临时保存
22
+        withdrawalData:null,//wallet/detail/ 临时保存
22 23
         tabList:[{
23 24
             id: 1,
24 25
             name: "订单",

+ 2 - 1
src/pages.json

@@ -456,7 +456,8 @@
456 456
         {
457 457
             "path": "pages/wallet/bill",
458 458
             "style": {
459
-                "navigationBarTitleText": "账单记录"
459
+                "navigationBarTitleText": "账单记录",
460
+                "enablePullDownRefresh": true
460 461
             }
461 462
         }
462 463
     ]

+ 3 - 3
src/pages/manage/index.vue

@@ -57,13 +57,13 @@
57 57
                         ></my-image>
58 58
                         <span class="text">我的钱包</span>
59 59
                     </li> -->
60
-                    <li class="item" @click="jump('/pages/wallet/index')">
60
+                    <!-- <li class="item" @click="jump('/pages/wallet/index')">
61 61
                         <my-image
62 62
                             class="img"
63 63
                             src="/static/icon/money.png"
64 64
                         ></my-image>
65 65
                         <span class="text">我的钱包</span>
66
-                    </li> 
66
+                    </li>  -->
67 67
                 <li class="item" @click="jump('/pages/manage/user/index')">
68 68
                     <my-image
69 69
                         class="img"
@@ -76,7 +76,7 @@
76 76
 
77 77
         <!-- <button class="btn" @click="layout">退出登录</button> -->
78 78
 
79
-        <div class="ver">0.5.02</div>
79
+        <div class="ver">0.5.1</div>
80 80
         <wyg-bottom-tab
81 81
             ref="tabbar"
82 82
             :tabIndex="2"

+ 82 - 7
src/pages/wallet/bill.vue

@@ -1,16 +1,31 @@
1 1
 <template>
2 2
     <div class="page">
3 3
         <ul class="list">
4
-            <li class="item" @click="jump('/pages/wallet/detail')">
5
-                <div class="name">2021/03/09</div>
4
+            <li class="item" v-for="item of list" :key="item.id" @click="goDetail(item)">
5
+                <div class="name">
6
+                    {{ item.applyTime | dateFormat("yyy/MM/dd") }}
7
+                    <span class="status">{{ item.status | status }}</span>
8
+                </div>
6 9
                 <div class="right">
7
-                    ¥400
10
+                    ¥{{ item.amount / 100 }}
8 11
                     <my-image
9 12
                         class="arrow"
10 13
                         src="/static/common/arrows_left.png"
11 14
                     ></my-image>
12 15
                 </div>
13 16
             </li>
17
+            <!-- <li class="item">
18
+                <div class="name">
19
+                    yyy/MM/dd <span class="status">审核中</span>
20
+                </div>
21
+                <div class="right">
22
+                    ¥100
23
+                    <my-image
24
+                        class="arrow"
25
+                        src="/static/common/arrows_left.png"
26
+                    ></my-image>
27
+                </div>
28
+            </li> -->
14 29
         </ul>
15 30
     </div>
16 31
 </template>
@@ -24,14 +39,71 @@ export default {
24 39
     // 数据
25 40
     data() {
26 41
         return {
27
-            curShop: {},
42
+            pageIndex: 1,
43
+            list: [],
28 44
         };
29 45
     },
46
+    filters: {
47
+        status(v) {
48
+            let obj = {
49
+                0: "审核中",
50
+                1: "待打款",
51
+                2: "已完成",
52
+                3: "未通过",
53
+                4: "打款失败",
54
+            };
55
+            let str = obj[v];
56
+            return str || "";
57
+        },
58
+    },
30 59
 
31
-    onLoad() {},
60
+    onLoad() {
61
+        this.getList();
62
+    },
32 63
     async onShow() {},
64
+    onPullDownRefresh() {
65
+        this.getList();
66
+    },
67
+    onReachBottom() {
68
+        this.getMoreList();
69
+    },
33 70
     // 函数
34
-    methods: {},
71
+    methods: {
72
+        getList() {
73
+            this.pageIndex = 1;
74
+            uni.showLoading({
75
+                title: "加载中...",
76
+            });
77
+            this.api
78
+                .get("/User/GetWithdrawalList", {
79
+                    pageIndex: this.pageIndex++,
80
+                })
81
+                .then((res) => {
82
+                    uni.hideLoading();
83
+                    this.list = res.data.data;
84
+                });
85
+        },
86
+        getMoreList() {
87
+            this.api
88
+                .get("/User/GetWithdrawalList", {
89
+                    pageIndex: this.pageIndex,
90
+                })
91
+                .then((res) => {
92
+                    if (res.data.data.length) {
93
+                        this.pageIndex++;
94
+                    }
95
+                    this.list = [...this.list, ...res.data.data];
96
+                });
97
+        },
98
+
99
+        goDetail(val){
100
+            
101
+            this.$store.commit("common/update", {
102
+                withdrawalData: val,
103
+            });
104
+            this.router.push('/pages/wallet/detail');
105
+        }
106
+    },
35 107
 
36 108
     // 数据计算
37 109
     computed: {
@@ -72,11 +144,14 @@ export default {
72 144
             height: px(40);
73 145
         }
74 146
     }
75
-    .right{
147
+    .right {
76 148
         display: flex;
77 149
         align-items: center;
78 150
         font-size: px(44);
79 151
         color: #666;
80 152
     }
153
+    .status {
154
+        margin-left: px(30);
155
+    }
81 156
 }
82 157
 </style>

+ 18 - 21
src/pages/wallet/bind.vue

@@ -4,7 +4,7 @@
4 4
             <section class="form-item">
5 5
                 <div class="label"><span class="required">*</span>姓名:</div>
6 6
                 <div class="box">
7
-                    <input type="text" v-model="form.name" placeholder=" " />
7
+                    <input type="text" v-model="form.name" placeholder="请输入" />
8 8
                 </div>
9 9
             </section>
10 10
             <section class="form-item">
@@ -35,7 +35,7 @@
35 35
                         <input
36 36
                             type="text"
37 37
                             :disabled="true"
38
-                            :value="pickerView"
38
+                            :value="form.bank"
39 39
                             placeholder="请选择"
40 40
                         />
41 41
                     </picker>
@@ -78,7 +78,7 @@
78 78
                         v-model="form.code"
79 79
                         placeholder="请输入"
80 80
                     />
81
-                    <span class="get-code">{{ codeStr }}</span>
81
+                    <span class="get-code" @click="getCode">{{ codeStr }}</span>
82 82
                 </div>
83 83
             </section>
84 84
             <p class="tel">
@@ -99,6 +99,9 @@ export default {
99 99
     components: { MyImage },
100 100
     filters: {
101 101
         hideTel(v) {
102
+            if(!v){
103
+                return '';
104
+            }
102 105
             return v.replace(/(\d{3})(\d{4})(\d{4})/, "$1****$3") || "";
103 106
         },
104 107
     },
@@ -154,23 +157,17 @@ export default {
154 157
             if (this.timeing) {
155 158
                 return;
156 159
             }
157
-            let phoneReg = /^[1][1-9][0-9]{9}$/;
158
-            if (!this.form.mobile) {
159
-                return this.fn.showToast("请输入手机号");
160
-            }
161
-            if (!phoneReg.test(this.form.mobile)) {
162
-                return this.fn.showToast("手机号格式不正确");
160
+            if(!this.shopInfo.managerTelephone){
161
+                return this.fn.showToast('未获取到店长手机号');
163 162
             }
164 163
             this.sendCode();
165 164
             this.downTime();
166 165
         },
167 166
         sendCode() {
168
-            if(!this.shopInfo.managerTelephone){
169
-                return this.fn.showToast('未获取到店长手机号');
170
-            }
171 167
             this.api
172 168
                 .get("/Login/SendSms", {
173 169
                     mobile: this.shopInfo.managerTelephone,
170
+                    type:1
174 171
                 })
175 172
                 .then((res) => {});
176 173
         },
@@ -191,6 +188,7 @@ export default {
191 188
         },
192 189
         pickerChange(e) {
193 190
             let val = this.opts[e.detail.value];
191
+            console.log(e,val)
194 192
             this.form.bank = val.value;
195 193
         },
196 194
         saveOk() {
@@ -251,15 +249,14 @@ export default {
251 249
 
252 250
     // 数据计算
253 251
     computed: {
254
-        pickerView() {
255
-            let str = "";
256
-            for (let item of this.opts) {
257
-                if (item.value === this.form.yinhang) {
258
-                    return item.key;
259
-                }
260
-            }
261
-            return "";
262
-        },
252
+        // pickerView() {
253
+        //     for (let item of this.opts) {
254
+        //         if (item.value === this.form.bank) {
255
+        //             return item.key;
256
+        //         }
257
+        //     }
258
+        //     return "";
259
+        // },
263 260
         user() {
264 261
             return this.$store.state.user.user;
265 262
         },

+ 62 - 6
src/pages/wallet/detail.vue

@@ -1,7 +1,33 @@
1 1
 <template>
2 2
     <div class="page">
3 3
         <div class="card">
4
-            <uni-steps :options="data" direction="column" :active="2"></uni-steps>
4
+            <!-- <uni-steps :options="data" direction="column" :active="2"></uni-steps> -->
5
+            <ul class="list">
6
+                <li>
7
+                    <span class="key">提现金额:</span>
8
+                    <span class="value">{{withdrawalData.amount}}</span>
9
+                </li>
10
+                <li>
11
+                    <span class="key">状态:</span>
12
+                    <span class="value">{{withdrawalData.status | status}}</span>
13
+                </li>
14
+                <li>
15
+                    <span class="key">申请时间:</span>
16
+                    <span class="value">{{withdrawalData.applyTime || ''}}</span>
17
+                </li>
18
+                <li>
19
+                    <span class="key">备注:</span>
20
+                    <span class="value remark">{{withdrawalData.remark || ''}}</span>
21
+                </li>
22
+                <li>
23
+                    <span class="key">处理时间:</span>
24
+                    <span class="value">{{withdrawalData.auditTime || ''}}</span>
25
+                </li>
26
+                <li>
27
+                    <span class="key">打款时间:</span>
28
+                    <span class="value">{{withdrawalData.payTime || ''}}</span>
29
+                </li>
30
+            </ul>
5 31
         </div>
6 32
     </div>
7 33
 </template>
@@ -13,9 +39,23 @@ import uSteps from "../../components/uni-steps/uni-steps";
13 39
 export default {
14 40
     name: "",
15 41
     components: { MyImage, uSteps },
42
+    filters:{
43
+        status(v) {
44
+            let obj = {
45
+                0: "审核中",
46
+                1: "待打款",
47
+                2: "已完成",
48
+                3: "未通过",
49
+                4: "打款失败",
50
+            };
51
+            let str = obj[v];
52
+            return str || "";
53
+        },
54
+    },
16 55
     // 数据
17 56
     data() {
18 57
         return {
58
+            withdrawalData: {},
19 59
             data: [
20 60
                 { title: "发起提现", desc: "2018-11-11" },
21 61
                 { title: "审核通过", desc: "2018-11-12" },
@@ -24,8 +64,9 @@ export default {
24 64
             ],
25 65
         };
26 66
     },
27
-    filters: {},
28
-    onLoad() {},
67
+    onLoad() {
68
+        this.withdrawalData = this.$store.state.common.withdrawalData || {};
69
+    },
29 70
     async onShow() {},
30 71
 
31 72
     // onPullDownRefresh() {
@@ -49,7 +90,7 @@ export default {
49 90
 
50 91
 
51 92
 <style lang="scss" scoped>
52
-.page{
93
+.page {
53 94
     height: 100vh;
54 95
     background-color: #fff;
55 96
 }
@@ -65,9 +106,24 @@ export default {
65 106
     }
66 107
 }
67 108
 
68
-.card /deep/ uni-steps{
69
-    .uni-steps__column-text{
109
+.card /deep/ uni-steps {
110
+    .uni-steps__column-text {
70 111
         padding: px(40) 0;
71 112
     }
72 113
 }
114
+.list {
115
+    border-bottom: 1px solid #f1f1f1;
116
+    li {
117
+        height: px(120);
118
+        line-height: 1.5;
119
+        display: flex;
120
+        align-items: center;
121
+        border-top: 1px solid #f1f1f1;
122
+        .key {
123
+            width: px(220);
124
+            color: #666;
125
+            flex-shrink: 0;
126
+        }
127
+    }
128
+}
73 129
 </style>

+ 163 - 94
src/pages/wallet/index.vue

@@ -1,72 +1,86 @@
1 1
 <template>
2 2
     <div class="page">
3
-        <div class="info card">
4
-            <h1 class="tit">账号信息</h1>
5
-            <ul class="info-list">
6
-                <li class="item">
7
-                    <div class="key">姓名:</div>
8
-                    <div class="value">cr</div>
9
-                </li>
10
-                <li class="item">
11
-                    <div class="key">微信号:</div>
12
-                    <div class="value">wx1503213</div>
13
-                </li>
14
-                <li class="item">
15
-                    <div class="key">银行:</div>
16
-                    <div class="value">招商银行</div>
17
-                </li>
18
-                <li class="item">
19
-                    <div class="key">开户行:</div>
20
-                    <div class="value">北京市xxx</div>
21
-                </li>
22
-                <li class="item">
23
-                    <div class="key">卡号:</div>
24
-                    <div class="value">6225845254521545215</div>
25
-                </li>
26
-            </ul>
3
+        <div
4
+            v-if="!loading && !account"
5
+            class="go-bind"
6
+            @click="jump('/pages/wallet/bind')"
7
+        >
8
+            您还未绑定账号,请先绑定绑定账号
27 9
         </div>
28
-        <div class="money card">
29
-            <h1 class="tit">可提现金额</h1>
30
-            <div class="money-num">
31
-                <div class="num">¥960.00</div>
32
-                <div class="view" @click="jump('/pages/wallet/bill')">
33
-                    查看账单
10
+        <block v-if="!loading && account">
11
+            <!-- <block> -->
12
+            <div class="info card">
13
+                <h1 class="tit">账号信息</h1>
14
+                <ul class="info-list">
15
+                    <li class="item">
16
+                        <div class="key">姓名:</div>
17
+                        <div class="value">{{ account.name }}</div>
18
+                    </li>
19
+                    <li class="item">
20
+                        <div class="key">微信号:</div>
21
+                        <div class="value">{{ account.wechat }}</div>
22
+                    </li>
23
+                    <li class="item">
24
+                        <div class="key">银行:</div>
25
+                        <div class="value">{{ account.bank }}</div>
26
+                    </li>
27
+                    <li class="item">
28
+                        <div class="key">开户行:</div>
29
+                        <div class="value">{{ account.bankBranch }}</div>
30
+                    </li>
31
+                    <li class="item">
32
+                        <div class="key">卡号:</div>
33
+                        <div class="value">{{ account.bankAccount }}</div>
34
+                    </li>
35
+                </ul>
36
+            </div>
37
+            <div class="money card">
38
+                <h1 class="tit">可提现金额</h1>
39
+                <div class="money-num">
40
+                    <div class="num">¥{{ balance / 100 }}</div>
41
+                    <div class="view" @click="jump('/pages/wallet/bill')">
42
+                        查看账单
43
+                    </div>
34 44
                 </div>
45
+                <p class="tip">最低提现2元,单日上线20000元</p>
46
+                <div class="input">
47
+                    <input type="digit" v-model="formVal" placeholder="¥0" />
48
+                </div>
49
+                <p class="tip tip-color">提现金额超出总金额,请重新填写</p>
50
+                <button type="button" class="btn" @click="withdrawal">
51
+                    申请提现
52
+                </button>
35 53
             </div>
36
-            <p class="tip">最低提现2元,单日上线20000元</p>
37
-            <div class="input">
38
-                <input type="digit" v-model="formVal" placeholder="¥0" />
54
+            <div class="card record">
55
+                <h1 class="tit">提现记录</h1>
56
+                <ul class="table">
57
+                    <li class="row">
58
+                        <div class="item">申请时间</div>
59
+                        <div class="item">备注</div>
60
+                        <div class="item">金额</div>
61
+                        <div class="item">状态</div>
62
+                    </li>
63
+                    <li
64
+                        class="row"
65
+                        v-for="item of withdrawalList"
66
+                        :key="item.id"
67
+                    >
68
+                        <div class="item">
69
+                            {{ item.applyTime | dateFormat("yyyy/MM/dd") }}
70
+                        </div>
71
+                        <div class="item">
72
+                            {{ item.remark }}
73
+                        </div>
74
+                        <div class="item">
75
+                            {{ item.amount / 100 }}
76
+                        </div>
77
+                        <div class="item">
78
+                            {{ item.status | status }}
79
+                        </div>
80
+                    </li>
81
+                </ul>
39 82
             </div>
40
-            <p class="tip tip-color">提现金额超出总金额,请重新填写</p>
41
-            <button type="button" class="btn" @click="withdrawal">
42
-                申请提现
43
-            </button>
44
-        </div>
45
-        <div class="card record">
46
-            <h1 class="tit">提现记录 共{{ withdrawalTotal }}条</h1>
47
-            <ul class="table">
48
-                <li class="row">
49
-                    <div class="item">申请时间</div>
50
-                    <div class="item">提现方式</div>
51
-                    <div class="item">金额</div>
52
-                    <div class="item">状态</div>
53
-                </li>
54
-                <li class="row" v-for="item of withdrawalList" :key="item.id">
55
-                    <div class="item">
56
-                        {{ item.applyTime | dateFormat("yyyy/MM/dd") }}
57
-                    </div>
58
-                    <div class="item">
59
-                        <!-- {{item.status}} -->
60
-                    </div>
61
-                    <div class="item">
62
-                        {{ item.amount / 100 }}
63
-                    </div>
64
-                    <div class="item">
65
-                        {{ item.status }}
66
-                    </div>
67
-                </li>
68
-            </ul>
69
-        </div>
83
+        </block>
70 84
 
71 85
         <uni-popup ref="popup" type="dialog">
72 86
             <uni-popup-dialog
@@ -95,14 +109,29 @@ export default {
95 109
             formVal: "",
96 110
             withdrawalPageIndex: 1,
97 111
             withdrawalList: [],
98
-            withdrawalTotal: 0,
112
+            withdrawalTotal: "",
113
+            account: null,
114
+            balance: 0,
115
+            loading: false,
99 116
         };
100 117
     },
101
-    filters: {},
102
-    onLoad() {
103
-        this.getWithdrawalList();
118
+    filters: {
119
+        status(v) {
120
+            let obj = {
121
+                0: "审核中",
122
+                1: "待打款",
123
+                2: "已完成",
124
+                3: "未通过",
125
+                4: "打款失败",
126
+            };
127
+            let str = obj[v];
128
+            return str || "";
129
+        },
130
+    },
131
+    onLoad() {},
132
+    async onShow() {
133
+        this.getWithdrawalInfo();
104 134
     },
105
-    async onShow() {},
106 135
 
107 136
     // onPullDownRefresh() {
108 137
     //     this.getList();
@@ -110,21 +139,33 @@ export default {
110 139
 
111 140
     // 函数
112 141
     methods: {
113
-        getWithdrawalList() {
114
-            this.api
115
-                .get("/User/GetWithdrawalList", {
116
-                    pageIndex: this.withdrawalPageIndex,
117
-                })
118
-                .then((res) => {
119
-                    this.withdrawalList = res.data.data;
120
-                    this.withdrawalTotal = res.data.pager.totalItems;
121
-                });
142
+        getWithdrawalInfo() {
143
+            uni.showLoading({
144
+                title: "加载中...",
145
+            });
146
+            this.loading = true;
147
+            this.api.get("/User/GetWithdrawalInfo").then((res) => {
148
+                uni.hideLoading();
149
+                this.loading = false;
150
+                if (!res.data.account) {
151
+                    // this.router.push('/pages/wallet/bind');
152
+                    // return;
153
+                }
154
+                this.account = res.data.account;
155
+                this.balance = res.data.balance;
156
+                this.withdrawalList = res.data.withdrawalList.data;
157
+            });
122 158
         },
123 159
 
124 160
         withdrawal() {
125 161
             if (!this.formVal) {
126 162
                 return this.fn.showToast("请输入提现金额");
127 163
             }
164
+            if (this.formVal * 100 > this.balance) {
165
+                return this.fn.showToast(
166
+                    "提现金额不能大于" + this.balance / 100 + "元"
167
+                );
168
+            }
128 169
             this.$refs.popup.open({
129 170
                 type: "dialog",
130 171
             });
@@ -137,23 +178,27 @@ export default {
137 178
             uni.showLoading({
138 179
                 title: "提交中...",
139 180
             });
140
-            let data = { 
141
-                amount:this.formVal/100,
142
-                remark:value
143
-             };
144
-            this.api.post("/User/Withdrawal", data, { pass: true }).then((res) => {
145
-                this.submitLoading = false;
146
-                uni.hideLoading();
147
-                if (res.success) {
148
-                    
149
-                    // 刷新页面数据
150
-                } else {
151
-                    this.fn.showModal({
152
-                        content:'错误信息:'+res.message,
153
-                        showCancel: false,
154
-                    });
155
-                }
156
-            });
181
+            let data = {
182
+                amount: this.formVal * 100,
183
+                remark: value,
184
+            };
185
+            this.api
186
+                .post("/User/Withdrawal", data, { pass: true })
187
+                .then((res) => {
188
+                    this.submitLoading = false;
189
+                    uni.hideLoading();
190
+                    if (res.success) {
191
+                        // 刷新页面数据
192
+                        this.formVal = "";
193
+                        this.getWithdrawalInfo();
194
+                        this.fn.showToast("提现成功");
195
+                    } else {
196
+                        this.fn.showModal({
197
+                            content: "错误信息:" + res.message,
198
+                            showCancel: false,
199
+                        });
200
+                    }
201
+                });
157 202
             done();
158 203
         },
159 204
     },
@@ -256,7 +301,31 @@ export default {
256 301
             font-size: px(42);
257 302
             // text-align: center;
258 303
             padding: px(20);
304
+            @include omits(4);
305
+            &:nth-child(1){
306
+                width: 30%;
307
+            }
308
+            &:nth-child(2){
309
+                width: 30%;
310
+            }
311
+            &:nth-child(3){
312
+                width: 20%;
313
+            }
314
+            &:nth-child(4){
315
+                width: 20%;
316
+            }
259 317
         }
260 318
     }
261 319
 }
320
+.go-bind {
321
+    margin: px(40);
322
+    border: 1px solid #f1f1f1;
323
+    border-radius: px(10);
324
+    display: flex;
325
+    align-items: center;
326
+    justify-content: center;
327
+    background-color: #fff;
328
+    min-height: px(300);
329
+    font-size: px(46);
330
+}
262 331
 </style>