Browse Source

Merge branch 'hotfix-1.2.1' into jyb_20250506_dev

jiayubo 3 months ago
parent
commit
2fadaa5f1a

+ 7 - 0
api/mine.js

@@ -79,3 +79,10 @@ export function getWithdrawStatus() {
     })
 }
 
+//账单详情
+export function getIncomeDetails(volunteerTakeRecordId) {
+    return request({
+        url: `/core/volunteer/take/${volunteerTakeRecordId}`,
+        method: 'get',
+    })
+}

+ 3 - 3
config.js

@@ -1,8 +1,8 @@
 const base_url = {
-  develop:'http://192.168.100.128:9527',//开发版
+  // develop:'http://192.168.100.128:9527',//开发版
   // develop: 'https://yongc.top/prod-api',//开发版
   // develop: 'http://192.168.100.139:9527', //嵘哥
-  // develop: 'https://yongc.top/prod-api',//体验版
+  develop: 'https://yongc.top/prod-api',//体验版
   // develop: 'https://goldshulin.com/prod-api',//体验版
 
   trial: 'https://yongc.top/prod-api',//体验版
@@ -25,7 +25,7 @@ const config = {
     // 应用名称
     name: '金邻助家',
     // 应用版本
-    version: '1.2.0',
+    version: '1.2.1',
     // 应用logo
     logo: '/static/logo.png',
     // 官方网站

+ 12 - 0
pages.json

@@ -11,6 +11,12 @@
 		}
 	},
 	"pages": [
+		// {
+		// 	"path": "pages/test/index",
+		// 	"style": {
+		// 		"navigationBarTitleText": "测试"
+		// 	}
+		// },
 		{
 			"path": "pages/index",
 			"style": {
@@ -200,6 +206,12 @@
 						"navigationBarTitleText": "收入明细"
 					}
 				},
+				{
+					"path": "pages/income/details",
+					"style": {
+						"navigationBarTitleText": "账单详情"
+					}
+				},
 				{
 					"path": "pages/addBankCard/index",
 					"style": {

+ 16 - 19
pages/index.vue

@@ -224,7 +224,7 @@ const getBanners = async () => {
     if (value_res.code === 200 && value_res.data.picture) {
       ValueZone.value = value_res.data.picture.split(',')
     }
-    
+
     const hot_node = await slideshow(30)
     if (hot_node.code === 200 && hot_node.data.picture) {
       ValueZoneSwiper.value = hot_node.data.picture.split(',')
@@ -254,7 +254,7 @@ const settingAddress = async () => {
       latitude,
       longitude,
     }
-    const res = await settingHomeAddress(parmas)
+    await settingHomeAddress(parmas)
     leftList.value = [];
     rightList.value = [];
     userType === 1 && getList()
@@ -294,26 +294,22 @@ onPageScroll(e => {
 onMounted(async () => {
 
   console.log("TCL:  uni.$u",)
-  getNotice()
-  const token = getToken();
-
+  try {
+    getNotice()
+    const token = getToken();
     const res_dara = await regionAddresstree()
     addresstree.value = res_dara.data
-
     if (token) {
-      locateTheCurrentAddress(res_dara.data)
-        .then((res) => {
-          data.address = res
-          console.log("TCL: settingAddress0 -> data", data)
-          settingAddress()
-        })
-        .catch((error) => {
-          console.log('获取地址失败!', error)
-          getList()
-        })
-    } else {
-      getList();
+      const res = await locateTheCurrentAddress(res_dara.data);
+      data.address = res
+      console.log("TCL: settingAddress0 -> data", data)
+      await settingAddress()
+      return;
     }
+    getList();
+  } catch (error) {
+    console.log("TCL:  error", error)
+  }
 })
 
 </script>
@@ -396,7 +392,8 @@ onMounted(async () => {
       transform: rotate(90deg);
       border: 2rpx solid #D8D8D8;
     }
-    .search-group{
+
+    .search-group {
       display: flex;
       align-items: center;
       margin-left: 10rpx;

+ 69 - 0
pages/test/index.scss

@@ -0,0 +1,69 @@
+.details-main {
+    padding: 20rpx;
+
+    position: fixed;
+    left: 0px;
+    top: 0px;
+    right: 0px;
+    bottom: 0;
+    background: #fff;
+
+    overflow: hidden;
+    overflow-y: auto;
+
+}
+
+.header-box {
+    margin-top: 48rpx;
+    padding: 24rpx 0;
+
+    .price-img {
+        width: 140rpx;
+        height: 140rpx;
+        background-color: #000000;
+        margin-bottom: 12rpx;
+    }
+
+    .header-title {
+        font-family: PingFang SC;
+        font-size: 32rpx;
+        font-weight: normal;
+        line-height: 32rpx;
+        letter-spacing: normal;
+        color: #000000;
+        padding: 20rpx 0 30rpx;
+    }
+
+    .header-price {
+        font-family: PingFang SC;
+        font-size: 34rpx;
+        font-weight: bold;
+        line-height: 48rpx;
+        letter-spacing: normal;
+        color: #3D3D3D;
+       
+    }
+}
+
+.stauts-box {
+    padding: 23rpx 0;
+    display: flex;
+
+    .stauts-text {
+        margin-right: 44rpx;
+    }
+}
+
+.list-box {
+    padding: 23rpx 0;
+
+    .list-item {
+        display: flex;
+
+        .list-name {
+            width: 150rpx;
+        }
+    }
+
+
+}

+ 76 - 0
pages/test/index.vue

@@ -0,0 +1,76 @@
+<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">余额提现-到支付宝(1942)</view>
+            <view class="header-price">1.10</view>
+        </view>
+        <view class="stauts-box  hr-solid">
+            <view class="font-30-333 stauts-text ">当前状态</view>
+            <view>
+                <up-steps current="2" direction="column" dot>
+                    <up-steps-item title="发起提现" desc="2025年6月9日 12:23">
+                    </up-steps-item>
+                    <up-steps-item title="银行处理中" desc=" ">
+                    </up-steps-item>
+                    <up-steps-item title="到账" desc="2025年6月9日 13:23"></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">{{ item.key }}</view>
+            </view>
+        </view>
+    </scroll-view>
+
+</template>
+
+<script setup>
+import { ref } from 'vue';
+
+const isRefreshing = ref(false)
+
+const list = [
+    {
+        name: '提现金额',
+        key: '1'
+    },
+    {
+        name: '服务费',
+        key: '1'
+    },
+    {
+        name: '申请时间',
+        key: '1'
+    },
+    {
+        name: '到账时间',
+        key: '1'
+    },
+    {
+        name: '提现银行',
+        key: '1'
+    },
+    {
+        name: '提现单号',
+        key: '1'
+    },
+]
+
+const onCustomRefresh = () => {
+    isRefreshing.value = true;
+
+    setTimeout(() => {
+        isRefreshing.value = false;
+    }, 1000);
+};
+const scrolltolower = () => {
+
+};
+</script>
+<style lang="scss" scoped>
+@import "./index.scss";
+</style>

+ 127 - 0
pages_mine/pages/income/details.vue

@@ -0,0 +1,127 @@
+<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>
+
+</template>
+
+<script setup>
+import { computed, ref } from 'vue';
+import { onLoad } from '@dcloudio/uni-app';
+import { getIncomeDetails } from "@/api/mine.js";
+import DictTag from '@/components/DictTag/index.vue'
+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'
+    // },
+]
+const id = ref(null);
+const data = ref({
+    alipayName: '**',
+    createTime: '',
+    takeAmount: 0.0,
+});
+
+const current = computed(() => {
+    if (['3', '1'].includes(data.value.appStatus) || ['0'].includes(data.value.isPay)) {
+        return 1
+    }
+    return 2
+})
+const onCustomRefresh = () => {
+
+    getDetails();
+};
+const 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;
+    }
+};
+
+
+onLoad((options) => {
+    console.log("TCL: options", options)
+    id.value = options.sourceId;
+    getDetails();
+})
+</script>
+<style lang="scss" scoped>
+@import "./index.scss";
+</style>

File diff suppressed because it is too large
+ 72 - 0
pages_mine/pages/income/index.scss


+ 84 - 38
pages_mine/pages/income/index.vue

@@ -1,5 +1,5 @@
 <template>
-   <scroll-view refresher-enabled :refresher-triggered="isRefreshing" @refresherrefresh="onCustomRefresh"
+    <scroll-view refresher-enabled :refresher-triggered="isRefreshing" @refresherrefresh="onCustomRefresh"
         class="scroll-view-class" @scrolltolower="scrolltolower" scroll-y>
         <view class="income-main">
             <view class="income-header card-box">
@@ -15,31 +15,50 @@
             </view>
 
             <view v-if="data.clientAccountChangeVOlist && data.clientAccountChangeVOlist.length > 0">
-                <view class="card-box icome-item" v-for="item in data.clientAccountChangeVOlist" :key="item.code"
-                    @click="onClick(item)">
-                    <view class="card-left">
-                        <!-- <img :src="baseUrl" alt="" class="income-img"> -->
-                        <view class="card-left-text">
-                            <view class="card-left-name">
-                                <dict-tag :options="userType === 1?jlzj_client_source_type:jlzj_volunteer_source_type" :value="item.sourceType" />
-                                
-                               
-                                <!-- ({{ item.businessTierName }}) -->
-                            </view>
-                            <view class="card-left-date">
-                                {{ item.createTime }}
-                                
+                <view class="card-box " v-for="item in data.clientAccountChangeVOlist" :key="item.code"
+                   style="padding-bottom: 0;" >
+                    <view class="icome-item hr-solid ">
+                        <view class="card-left">
+                            <!-- <img :src="baseUrl" alt="" class="income-img"> -->
+                            <view class="card-left-text">
+                                <view class="card-left-name">
+                                    <dict-tag
+                                        :options="userType === 1 ? jlzj_client_source_type : jlzj_volunteer_source_type"
+                                        :value="item.sourceType" />
+
+                                    <!-- ({{ item.businessTierName }}) -->
+                                </view>
+                                <view class="card-left-date">
+                                    {{ item.createTime }}
+
+                                </view>
                             </view>
                         </view>
-                    </view>
 
-                    <view class="card-rigth"
-                        >
-                        <view :style="{ color: item.changeType === '1' ? 'rgba(76, 175, 80, 1)' : 'rgba(244, 67, 54, 1)' }">{{ item.changeType === '1' ? '+' : '-' }}{{ item.changeMoney }}</view>
+                        <view class="card-rigth">
+                            <view
+                                :style="{ color: item.changeType === '1' ? 'rgba(76, 175, 80, 1)' : 'rgba(244, 67, 54, 1)' }">
+                                {{ item.changeType === '1' ? '+' : '-' }}{{ item.changeMoney }}</view>
 
-                        <view class="is_pay_class" v-if="item.isPay !== '99'">
-                                    <dict-tag :options="is_pay" :value="item.isPay" />
-                                </view>
+                            <view class="is_pay_class" >
+                                {{ item.afterBalance }}
+                                <!-- <dict-tag :options="is_pay" :value="item.isPay" /> -->
+                            </view>
+                        </view>
+                    </view>
+                    <view class="flex_c_s card-item" @click="onBillClick(item)" v-if="['10', '11'].includes(item.sourceType)">
+                        <view class="font-28-14">账单详情</view>
+                       <view class="flex_c_r">
+                            <view class="font-28-grey">点击查看账单详情</view>
+                            <up-icon name="arrow-right" color="#7B7B7B" size="16"></up-icon>
+                       </view>
+                    </view>
+                    <view class="flex_c_s card-item hr-solid-top" @click="onClick(item)" v-else>
+                        <view class="font-28-14">订单详情</view>
+                        <view class="flex_c_r">
+                            <view class="font-28-grey">点击查看订单详情</view>
+                            <up-icon name="arrow-right" color="#7B7B7B" size="16"></up-icon>
+                       </view>
                     </view>
                 </view>
                 <up-loadmore style="margin-top: 40rpx;" :status="loadmoreInfo.status"
@@ -60,7 +79,7 @@
 
 <script setup>
 import { ref, computed } from 'vue'
-import { getAccountChangeList, getTotalMoney,getVolunteerTotalMoney,getVolunteerChangeList } from "@/api/mine";
+import { getAccountChangeList, getTotalMoney, getVolunteerTotalMoney, getVolunteerChangeList } from "@/api/mine";
 import {
     onShow
 } from '@dcloudio/uni-app';
@@ -76,7 +95,7 @@ const {
     jlzj_client_source_type,
     jlzj_volunteer_source_type,
     is_pay
-} = useDict('jlzj_money_change_type', 'jlzj_client_source_type','jlzj_volunteer_source_type','is_pay');
+} = useDict('jlzj_money_change_type', 'jlzj_client_source_type', 'jlzj_volunteer_source_type', 'is_pay');
 const userType = uni.getStorageSync('userType') //读取本地存储
 const data = ref({
     totalEarning: 0,
@@ -119,10 +138,30 @@ const confirm = () => {
 const cancel = () => {
     show.value = false;
 };
+const onBillClick = (record) => { 
+    uni.navigateTo({
+            url: `/pages_mine/pages/income/details?sourceId=${record.sourceId}&sourceType=${record.sourceType}`
+        })
+};
 const onClick = (record) => {
-    record.mainOrderId && uni.navigateTo({
-        url: `/pages_classify/pages/orderItem/orderdetails?mainOrderId=${record.mainOrderId}`
-    });
+    console.log("TCL: onClick -> record", record);
+
+    if (userType === 1) {
+        record.mainOrderId ? uni.navigateTo({
+            url: `/pages_classify/pages/orderItem/orderdetails?mainOrderId=${record.mainOrderId}`
+        }): uni.showToast({
+            title: '订单不存在',
+            icon: 'none',
+        });
+    } else {
+        record.secondOrderId ?uni.navigateTo({
+            url: `/pages_classify/pages/order/index?secondOrderId=${record.secondOrderId}&type=details`,
+        }): uni.showToast({
+            title: '订单不存在',
+            icon: 'none',
+        });
+    }
+
 }
 const scrolltolower = () => {
     init('bottom')
@@ -157,9 +196,9 @@ const init = async (type) => {
         const res = await listApi({
             // createTime: dayjs(datetime.value).format('YYYY-MM-DD'),
             pageNum: pages.value.current,
-			pageSize: pages.value.pageSize,
+            pageSize: pages.value.pageSize,
         });
-        data.value.clientAccountChangeVOlist =type === 'top'? res.rows : [...data.value.clientAccountChangeVOlist, ...res.rows];
+        data.value.clientAccountChangeVOlist = type === 'top' ? res.rows : [...data.value.clientAccountChangeVOlist, ...res.rows];
         pages.value.total = res.total;
     } catch (error) {
         console.log('error', error);
@@ -172,8 +211,8 @@ const init = async (type) => {
             isRefreshing.value = false;
             uni.hideLoading();
         }
-        
-        if(data.value.clientAccountChangeVOlist.length === pages.value.total){
+
+        if (data.value.clientAccountChangeVOlist.length === pages.value.total) {
             loadmoreInfo.value.status = 'nomore';
         }
         // 
@@ -216,7 +255,7 @@ onShow(() => {
     // left: 0px;
     // right: 0px;
     // bottom: 0px;
-    
+
     padding: 12px;
     // overflow: auto;
 
@@ -256,6 +295,7 @@ onShow(() => {
     display: flex;
     align-items: center;
     justify-content: space-between;
+    padding-bottom: 24rpx;
 
     .card-left {
         display: flex;
@@ -267,7 +307,7 @@ onShow(() => {
         }
 
         .card-left-text {
-            margin-left: 12px;
+            // margin-left: 12px;
 
             .card-left-name {
                 font-size: 16px;
@@ -297,13 +337,14 @@ onShow(() => {
             line-height: 23.44px;
             color: rgba(51, 51, 51, 1);
 
-            
-         
+
+
         }
     }
 
-} 
-.card-rigth{
+}
+
+.card-rigth {
     display: flex;
     flex-direction: column;
     text-align: end;
@@ -323,6 +364,11 @@ onShow(() => {
 .is_pay_class {
     margin-top: 8rpx;
     font-size: 14px;
-    
+
+
+}
+
+.card-item {
+    padding: 24rpx 0;
 }
 </style>

+ 3 - 3
pages_mine/pages/setupUser/index.vue

@@ -15,11 +15,11 @@
 			<up-icon name="arrow-right" class="icon"></up-icon>
 			<up-divider></up-divider>
 		</view> -->
-		<view class="wrapper" @click="handelAuthentication">
+		<!-- <view class="wrapper" @click="handelAuthentication">
 			<text class="text">实名认证</text>
 			<up-icon name="arrow-right" class="icon"></up-icon>
 			<up-divider></up-divider>
-		</view>
+		</view> -->
 		<view class="wrapper" @click="logoOut">
 			<text class="text">退出登陆</text>
 			<up-icon name="arrow-right" class="icon"></up-icon>
@@ -75,7 +75,7 @@ const handelAuthentication = () => {
           console.log('收到核身完成的res', res);
 		  getEidResult({eidToken: res.token,verifyDone:res.verifyDone}).then(result=>{
             console.log("TCL: verifyDoneCallback -> result", result)
-			if(result.code){
+			if(result.code === 200){
 				uni.showToast({
 					title: '您已完成实名认证!',
 					icon: 'success',

+ 3 - 1
static/scss/main.scss

@@ -141,7 +141,9 @@
 .hr-solid {
     border-bottom: 2rpx solid #E9E9E9;
 }
-
+.hr-solid-top {
+    border-top: 2rpx solid #E9E9E9;
+}
 
 
 .dict-tags {