From cafa8f5583b400ae539e784e7cee3c5da3534127 Mon Sep 17 00:00:00 2001
From: chensiAb <chenchenco03@163.com>
Date: Wed, 26 Mar 2025 19:48:17 +0800
Subject: [PATCH] fix:上传图片组件-外部传入上传地址时优先使用外部地址

---
 plugins/infiniteScroll/CInfiniteScroll.vue |  129 +++++++++++++++++++++++++++++--------------
 1 files changed, 87 insertions(+), 42 deletions(-)

diff --git a/plugins/infiniteScroll/CInfiniteScroll.vue b/plugins/infiniteScroll/CInfiniteScroll.vue
index bea21ce..43faa2f 100644
--- a/plugins/infiniteScroll/CInfiniteScroll.vue
+++ b/plugins/infiniteScroll/CInfiniteScroll.vue
@@ -5,12 +5,15 @@
 
 <template>
     <scroll-view
+        :id="elmId"
         class="c-infinite-scroll"
         :scrollY="true"
+        lowerThreshold="100"
         @scroll="evt=>onScroll(evt)"
         @touchstart="evt=>onTouch(evt)"
         @touchmove="evt=>onTouch(evt)"
         @touchend="evt=>onTouch(evt)"
+        @scrollToLower="evt=>onScrollToLower(evt)"
     >
         <view
             class="c-infinite-top"
@@ -33,12 +36,16 @@
                 </view>
             </view>
         </view>
-        <slot />
+        <view class="c-infinite-content">
+            <slot />
+        </view>
         <view class="c-infinite-bottom">
             <view
                 class="c-infinite-loading"
-                v-if="loading"
-            >加载中,请稍后...</view>
+                v-if="!ending"
+            >
+                <text v-show="loading">加载中,请稍后...</text>
+            </view>
             <view v-if="ending">
                 <text
                     class="c-infinite-ended"
@@ -47,14 +54,16 @@
                 <text
                     class="c-infinite-empty"
                     v-else
-                >暂无数据...</text>
+                >(暂无数据)</text>
             </view>
         </view>
     </scroll-view>
 </template>
 
 <script>
+import Taro from '@tarojs/taro';
 import { AtActivityIndicator } from 'taro-ui-vue';
+import { Tools } from '@components/common/Tools';
 import './cInfiniteScroll.scss';
 
 export default {
@@ -68,11 +77,18 @@
             type: Boolean,
             default: false,
         },
-        // 加载页面回调
+        // 发起加载页面数据回调
+        //   参数 {
+        //     current: 当前页页码,
+        //     next: 需要加载的页面页码,
+        //     success: 当加载成功后页面调用, 回传参数 { pageTotal: 当前翻页总页数 }
+        //     fail: 加载失败后页面调用
+        //   }
         onLoadMore: Function,
     },
     data() {
         return {
+            elmId: 'cis-' + Tools.createGUID(),
             // 初始化状态
             inital: false,
             // 当前页面
@@ -114,47 +130,52 @@
             // 开始加载
             this.inital = true;
             this.loading = true;
-            this.onLoadMore({
-                current: this.current,
-                next: this.current + 1,
-                // 加载成功
-                success: options => {
-                    setTimeout(() => {
-                        this.loading = false;
-                        // 没有数据
-                        if (!options.pageTotal || options.pageTotal <= 0) {
-                            this.ending = true;
-                        }
-                        // 有数据
-                        else {
-                            this.pageTotal = options.pageTotal;
-                            this.current = this.current + 1;
-                            // 已到最后一页
-                            if (this.current >= this.pageTotal) {
+            setTimeout(() => {
+                this.onLoadMore({
+                    current: this.current,
+                    next: this.current + 1,
+                    // 加载成功
+                    success: options => {
+                        this.$nextTick(() => {
+                            this.loading = false;
+                            // 没有数据
+                            if (!options.pageTotal || options.pageTotal <= 0) {
                                 this.ending = true;
+                                this.pageTotal = 0;
                             }
-                        }
-                        // 还原下拉
+                            // 有数据
+                            else {
+                                this.pageTotal = options.pageTotal;
+                                this.current = this.current + 1;
+                                // 已到最后一页
+                                if (this.current >= this.pageTotal) {
+                                    this.ending = true;
+                                }
+                            }
+                            // 如果下拉刷新,还原下拉
+                            if (this.touch.dargState === 2) {
+                                this.touch.driftTop = 0;
+                                setTimeout(() => {
+                                    this.touch.dargState = 0;
+                                }, 300);
+                            }
+                        });
+                    },
+                    // 加载失败
+                    fail: () => {
+                        this.loading = false;
+                        this.ending = true;
+                        this.pageTotal = 0;
+                        // 如果下拉刷新,还原下拉
                         if (this.touch.dargState === 2) {
                             this.touch.driftTop = 0;
                             setTimeout(() => {
                                 this.touch.dargState = 0;
                             }, 300);
                         }
-                    }, 100);
-                },
-                // 加载失败
-                fail: () => {
-                    this.loading = false;
-                    // 还原下拉
-                    if (this.touch.dargState === 2) {
-                        this.touch.driftTop = 0;
-                        setTimeout(() => {
-                            this.touch.dargState = 0;
-                        }, 300);
-                    }
-                },
-            });
+                    },
+                });
+            }, 100);
         },
         onScroll(evt) {
             // 已经滚动(滚动后禁止下拉刷新)
@@ -166,6 +187,9 @@
             }
             // 往下
             else {
+                if (process.env.TARO_ENV !== 'h5') {
+                    return;
+                }
                 const viewHeight = evt.target.offsetHeight;
                 const { scrollTop, scrollHeight } = evt.detail;
                 // 阀值 100 像素,向下滚动到最后 100 像素,识别为启动加载
@@ -177,10 +201,9 @@
                 }
             }
         },
-        // 初始加载
-        initScroll() {
-            // 已初始化,跳过
-            if (this.inital) {
+        // 小程序中滚动到底部
+        onScrollToLower() {
+            if (process.env.TARO_ENV !== 'weapp') {
                 return;
             }
             this.hanldeLoadMore();
@@ -270,6 +293,28 @@
                 }
             }
         },
+        // 初始加载
+        $initScroll() {
+            // 已初始化,跳过
+            if (this.inital) {
+                return;
+            }
+            this.hanldeLoadMore();
+        },
+        // 刷新加载
+        $refresh(autoStart) {
+            Taro.pageScrollTo({
+                selector: '#' + this.elmId,
+                scrollTop: 0,
+            });
+            this.ending = false;
+            this.current = 0;
+            if (autoStart === 'off') {
+                this.inital = false;
+            } else {
+                this.hanldeLoadMore();
+            }
+        },
     },
     mounted() {
         // 开启自动初始化

--
Gitblit v1.9.1