jiayubo 3 miesięcy temu
rodzic
commit
98986bb6ed

+ 9 - 0
api/mine.js

@@ -95,3 +95,12 @@ export function vonTtAlipayAccountHistory() {
     method: 'get',
   })
 }
+
+// 撤销提现
+export function volEetCancelTake(params) {
+  return request({
+    url: `/core/volunteer/account/cancelTake`,
+    method: 'get',
+    params
+  })
+}

+ 149 - 104
pages_mine/pages/income/details.vue

@@ -1,127 +1,172 @@
 <template>
-    <scroll-view refresher-enabled :refresher-triggered="isRefreshing" @refresherrefresh="onCustomRefresh"
-        class="details-main" @scrolltolower="scrolltolower" scroll-y>
-        <view class="header-box flex_c_c_f hr-solid">
-            <view class="price-img"></view>
-            <view class="header-title">余额提现-到支付宝</view>
-            <view class="header-price">¥{{ data.takeAmount }}</view>
-        </view>
-        <view class="stauts-box  hr-solid" >
-            <view class="font-30-333 stauts-text ">当前状态</view>
-            <view>
-                <up-steps :current="current" direction="column" dot>
-                    <up-steps-item title="发起提现" :desc="data.createTime">
-                    </up-steps-item>
-                    <up-steps-item title="已驳回" :desc="data.rejectReason" v-if="data.appStatus === '3'"
-                        error></up-steps-item>
-                    <up-steps-item title="后台处理中" :desc="data.updateTime" v-else></up-steps-item>
-                    <up-steps-item title="打款失败" v-if="data.isPay === '2'" error></up-steps-item>
-                    <up-steps-item title="到账" :desc="data.lastTime"
-                        v-if="['1', '0'].includes(data.isPay)"></up-steps-item>
-                </up-steps>
-            </view>
-        </view>
-        <view class="list-box">
-            <view v-for="item in list" :key="item.key" class="list-item">
-                <view class="font-30-333 list-name">{{ item.name }}</view>
-                <view class="font-30-333" v-if="item.type === 'value'">
-                    支付宝
-                </view>
-                <view class="font-30-333" v-else>{{ data[item.key] || '-' }}</view>
-            </view>
-        </view>
-    </scroll-view>
-
+  <scroll-view
+    refresher-enabled
+    :refresher-triggered="isRefreshing"
+    @refresherrefresh="onCustomRefresh"
+    class="details-main"
+    @scrolltolower="scrolltolower"
+    scroll-y
+  >
+    <view class="header-box flex_c_c_f hr-solid">
+      <view class="price-img"></view>
+      <view class="header-title">余额提现-到支付宝</view>
+      <view class="header-price">¥{{ data.takeAmount }}</view>
+    </view>
+    <view class="stauts-box hr-solid">
+      <view class="font-30-333 stauts-text">当前状态</view>
+      <view>
+        <up-steps :current="current" direction="column" dot>
+          <up-steps-item title="发起提现" :desc="data.createTime">
+          </up-steps-item>
+          <up-steps-item
+            title="已驳回"
+            :desc="data.rejectReason"
+            v-if="data.appStatus === '3'"
+            error
+          ></up-steps-item>
+          <up-steps-item
+            title="后台处理中"
+            :desc="data.updateTime"
+            v-else
+          ></up-steps-item>
+          <up-steps-item
+            title="打款失败"
+            v-if="data.isPay === '2'"
+            error
+          ></up-steps-item>
+          <up-steps-item
+            title="到账"
+            :desc="data.lastTime"
+            v-if="['1', '0'].includes(data.isPay)"
+          ></up-steps-item>
+        </up-steps>
+      </view>
+    </view>
+    <view class="list-box">
+      <view v-for="item in list" :key="item.key" class="list-item">
+        <view class="font-30-333 list-name">{{ item.name }}</view>
+        <view class="font-30-333" v-if="item.type === 'value'"> 支付宝 </view>
+        <view class="font-30-333" v-else>{{ data[item.key] || '-' }}</view>
+      </view>
+    </view>
+    <button @click="handlClick" class="btn-cancel">撤销提现</button>
+  </scroll-view>
 </template>
 
 <script setup>
-import { computed, ref } from 'vue';
-import { onLoad } from '@dcloudio/uni-app';
-import { getIncomeDetails } from "@/api/mine.js";
+import { computed, ref } from 'vue'
+import { onLoad } from '@dcloudio/uni-app'
+import { getIncomeDetails, volEetCancelTake } from '@/api/mine.js'
 import DictTag from '@/components/DictTag/index.vue'
-import {
-    useDict
-} from '@/utils/dict.js';
+import { useDict } from '@/utils/dict.js'
 const isRefreshing = ref(false)
 const list = [
-    {
-        name: '提现金额',
-        key: 'shoudAmount'
-    },
-    {
-        name: '提现账户',
-        key: 'alipayName'
-    },
-    {
-        name: '提现账号',
-        key: 'alipayAccountNo'
-    },
-    {
-        name: '申请时间',
-        key: 'createTime'
-    },
-    {
-        name: '到账时间',
-        key: 'lastTime'
-    },
-    {
-        name: '打款方式',
-        key: 'payType',
-        type: 'value',
-    },
-    // {
-    //     name: '提现单号',
-    //     key: 'volunteerTakeRecordId'
-    // },
+  {
+    name: '提现金额',
+    key: 'shoudAmount',
+  },
+  {
+    name: '提现账户',
+    key: 'alipayName',
+  },
+  {
+    name: '提现账号',
+    key: 'alipayAccountNo',
+  },
+  {
+    name: '申请时间',
+    key: 'createTime',
+  },
+  {
+    name: '到账时间',
+    key: 'lastTime',
+  },
+  {
+    name: '打款方式',
+    key: 'payType',
+    type: 'value',
+  },
+  // {
+  //     name: '提现单号',
+  //     key: 'volunteerTakeRecordId'
+  // },
 ]
-const id = ref(null);
+const id = ref(null)
 const data = ref({
-    alipayName: '**',
-    createTime: '',
-    takeAmount: 0.0,
-});
+  alipayName: '**',
+  createTime: '',
+  takeAmount: 0.0,
+})
 
 const current = computed(() => {
-    if (['3', '1'].includes(data.value.appStatus) || ['0'].includes(data.value.isPay)) {
-        return 1
-    }
-    return 2
+  if (
+    ['3', '1'].includes(data.value.appStatus) ||
+    ['0'].includes(data.value.isPay)
+  ) {
+    return 1
+  }
+  return 2
 })
 const onCustomRefresh = () => {
-
-    getDetails();
-};
+  getDetails()
+}
 const scrolltolower = () => {
-    console.log('scrolltolower');
-
-};
+  console.log('scrolltolower')
+}
 
 const getDetails = async () => {
-    try {
-        isRefreshing.value = true;
-        const res = await getIncomeDetails(id.value);
-        if (res.code !== 200) {
-            throw res.msg || '账单详情获取失败!'
-        }
-        data.value = res.data;
-    } catch (error) {
-        console.log("TCL: getDetails -> error", error)
-        uni.showToast({
-            title: error.message || error,
-            icon: 'none'
-        });
-    } finally {
-        isRefreshing.value = false;
+  try {
+    isRefreshing.value = true
+    const res = await getIncomeDetails(id.value)
+    if (res.code !== 200) {
+      throw res.msg || '账单详情获取失败!'
     }
-};
+    data.value = res.data
+  } catch (error) {
+    console.log('TCL: getDetails -> error', error)
+    uni.showToast({
+      title: error.message || error,
+      icon: 'none',
+    })
+  } finally {
+    isRefreshing.value = false
+  }
+}
 
+// 撤销提现
+const handlClick = async () => {
+  uni.showModal({
+    title: '提示',
+    content: '确认要撤销此次提现吗?',
+    success: async function (res) {
+      if (res.confirm) {
+        const params = {
+          volunteerTakeRecordId: id.value
+        }
+        const res = await volEetCancelTake(params)
+        if (res.code === 200) {
+          uni.showToast({
+            title: '撤销提现成功',
+          })
+          uni.navigateBack({
+            delta: 1,
+          })
+        } else {
+          uni.showToast({
+            title: '撤销提现失败',
+          })
+        }
+      }
+    }
+  })
+}
 
 onLoad((options) => {
-    console.log("TCL: options", options)
-    id.value = options.sourceId;
-    getDetails();
+  console.log('TCL: options', options)
+  id.value = options.sourceId
+  getDetails()
 })
 </script>
 <style lang="scss" scoped>
-@import "./index.scss";
-</style>
+@import './index.scss';
+</style>

Plik diff jest za duży
+ 74 - 0
pages_mine/pages/income/index.css


Plik diff jest za duży
+ 1 - 0
pages_mine/pages/income/index.min.css


+ 9 - 0
pages_mine/pages/income/index.scss

@@ -70,3 +70,12 @@
 
 
 }
+
+.btn-cancel{
+  
+  background: red;
+  color: #fff;
+  border-radius: 50rpx;
+  padding: 10rpx 20rpx;
+  margin-top: 20rpx;
+}