li.shaoyi 3 éve
szülő
commit
472382a566

+ 12 - 1
fxgl.txt

@@ -6,4 +6,15 @@ cn.muchinfo.thj_debug_v1.0.0.apk
 cn.muchinfo.thj_release_v1.0.0.apk
 
 Go服务:http://101.133.236.116:8280/cfg?key=mtp_20
-升级检测:http://47.116.5.81:8012/PhoneService/GetUpdateInfo
+升级检测:http://47.116.5.81:8012/PhoneService/GetUpdateInfo
+
+
+
+
+模拟盘地址:
+http://139.224.56.67:8080/manageweb/
+admin/Mn_2022#thj
+go地址:http://139.224.56.67:8280/cfg?key=mtp_20
+android获取更新地址
+http://47.116.5.81:8022/PhoneService/GetUpdateInfo
+下载地址:http://47.116.5.81:8023/thj_demo.apk

+ 3 - 2
src/business/bank/index.ts

@@ -12,9 +12,9 @@ export function useAmountStatementList() {
     const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.AmountLogRsp>()
     const loading = shallowRef(false)
 
-    const getAmountStatementList = () => {
+    const getAmountStatementList = async () => {
         loading.value = true
-        return queryAmountLog({
+        await queryAmountLog({
             data: {
                 page: pageIndex.value,
                 pagesize: pageSize.value,
@@ -28,6 +28,7 @@ export function useAmountStatementList() {
                 loading.value = false
             }
         })
+        return dataList.value
     }
 
     return {

+ 3 - 2
src/business/credit/index.ts

@@ -13,9 +13,9 @@ export function useCreditStatementList(stype?: ScoreConfigType) {
     const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.UserScoreLogRsp>()
     const loading = shallowRef(false)
 
-    const getCreditStatementList = () => {
+    const getCreditStatementList = async () => {
         loading.value = true
-        return queryUserScoreLog({
+        await queryUserScoreLog({
             data: {
                 stype,
                 userid: getUserId(),
@@ -30,6 +30,7 @@ export function useCreditStatementList(stype?: ScoreConfigType) {
                 loading.value = false
             }
         })
+        return dataList.value
     }
 
     return {

+ 7 - 6
src/business/goods/index.ts

@@ -8,9 +8,9 @@ export function useWrstandardList() {
     const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.THJWrstandardRsp>()
     const loading = shallowRef(false)
 
-    const getWrstandardList = () => {
+    const getWrstandardList = async () => {
         loading.value = true
-        return queryTHJWrstandard({
+        await queryTHJWrstandard({
             data: {
                 page: pageIndex.value,
                 pagesize: pageSize.value,
@@ -23,6 +23,7 @@ export function useWrstandardList() {
                 loading.value = false
             }
         })
+        return dataList.value
     }
 
     return {
@@ -72,7 +73,7 @@ export function useAddUserFavoriteGoods(goodsid: number) {
         })
     }
 
-    return { getAddUserFavoriteGoods  }
+    return { getAddUserFavoriteGoods }
 }
 
 
@@ -148,7 +149,7 @@ export function useQueryTHJProductLists() {
             success: (res) => {
                 total.value = res.total
                 dataList.value = res.data
-            }, 
+            },
             complete: () => {
                 loading.value = false
             }
@@ -181,7 +182,7 @@ export function useQuerySpotGoodsPriceLists() {
             success: (res) => {
                 total.value = res.total
                 dataList.value = res.data
-            }, 
+            },
             complete: () => {
                 loading.value = false
             }
@@ -213,7 +214,7 @@ export function useQueryMarketRunLists() {
             success: (res) => {
                 total.value = res.total
                 dataList.value = res.data
-            }, 
+            },
             complete: () => {
                 loading.value = false
             }

+ 23 - 7
src/business/news/index.ts

@@ -4,15 +4,28 @@ import { querySiteColumnDetail, querySiteColumnConfig } from '@/services/api/new
 
 // 新闻资讯列表
 export function useSiteColumnDetail() {
-  
     const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.SiteColumnDetailRsp>()
     const loading = shallowRef(false)
-    
-    const getSiteColumnDetail = (columnid?: number) => {
+    const siteColumns = shallowRef<Model.SiteColumnConfigRsp[]>([])
+    const currentColumnId = shallowRef(0)
+
+    /// 查询栏目配置
+    const getSiteColumnConfig = querySiteColumnConfig({
+        success: (res) => {
+            siteColumns.value = res.data
+            /// 默认第一个
+            if (res.data.length) {
+                currentColumnId.value = res.data[0].id
+            }
+        }
+    })
+
+    const getSiteColumnDetail = async () => {
         loading.value = true
-        return querySiteColumnDetail({
+        await getSiteColumnConfig
+        await querySiteColumnDetail({
             data: {
-                columnid: columnid,
+                columnid: currentColumnId.value,
                 page: pageIndex.value,
                 pagesize: pageSize.value,
             },
@@ -24,11 +37,14 @@ export function useSiteColumnDetail() {
                 loading.value = false
             }
         })
+        return dataList.value
     }
 
     return {
         loading,
         dataList,
+        siteColumns,
+        currentColumnId,
         total,
         pageIndex,
         pageSize,
@@ -39,10 +55,10 @@ export function useSiteColumnDetail() {
 
 // 查询资讯栏目配置
 export function useSiteColumnConfig() {
-  
+
     const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.SiteColumnConfigRsp>()
     const loading = shallowRef(false)
-    
+
     const getSiteColumnConfig = (columntype?: number) => {
         loading.value = true
         return querySiteColumnConfig({

+ 107 - 0
src/packages/mobile/components/base/pull-refresh/index copy.vue

@@ -0,0 +1,107 @@
+<template>
+    <PullRefresh class="app-pull-refresh" v-model="refreshing" @refresh="onRefresh">
+        <slot name="header"></slot>
+        <List v-model:loading="loading" v-model:error="showError" :finished="finished" @load="onLoad">
+            <template v-for="(item, index) in dataList" :key="index">
+                <slot :item="item" :index="index"></slot>
+            </template>
+            <template #finished>
+                <span>{{ finishedText }}</span>
+            </template>
+            <template #error>
+                <span>{{ errorText }}</span>
+            </template>
+        </List>
+        <slot name="footer"></slot>
+        {{ loading }}
+    </PullRefresh>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef, computed, nextTick } from 'vue'
+import { List, PullRefresh } from 'vant'
+
+const props = defineProps({
+    updateList: {
+        type: Array,
+        required: true
+    },
+    pageIndex: {
+        type: Number,
+        default: 1,
+    },
+    pageCount: {
+        type: Number,
+        default: 1,
+    },
+    error: {
+        type: Boolean,
+        default: false,
+    },
+    finishedText: {
+        type: String,
+        default: '没有更多了',
+    },
+    errorText: {
+        type: String,
+        default: '请求失败,点击重新加载',
+    }
+})
+
+const emit = defineEmits(['update:pageIndex', 'update:error', 'refresh', 'updated'])
+const refreshing = shallowRef(false) // 是否处于下拉加载状态
+const finished = shallowRef(false) // 是否已加载完成所有数据
+const loading = shallowRef(false)
+// eslint-disable-next-line
+const dataList = shallowRef<any[]>([])
+
+const showError = computed({
+    get: () => props.error,
+    set: (val) => emit('update:error', val)
+})
+
+const currentPage = computed({
+    get: () => props.pageIndex,
+    set: (val) => emit('update:pageIndex', val)
+})
+
+// 上拉加载
+const onLoad = () => {
+    const callback = () => {
+        if (refreshing.value || currentPage.value === 1) {
+            dataList.value = []
+            refreshing.value = false
+        }
+        if (!showError.value) {
+            currentPage.value++
+            dataList.value.push(...props.updateList)
+            emit('updated', dataList.value)
+        }
+        loading.value = false
+    }
+
+    if (refreshing.value) {
+        currentPage.value = 1
+    }
+
+    nextTick(() => {
+        if (currentPage.value <= props.pageCount) {
+            emit('refresh', callback)
+        } else {
+            refreshing.value = false
+            finished.value = true
+        }
+    })
+}
+
+// 下拉刷新
+const onRefresh = () => {
+    finished.value = false
+    loading.value = true
+    onLoad()
+}
+</script>
+
+<style lang="less">
+@import './index.less';
+</style>

+ 25 - 23
src/packages/mobile/components/base/pull-refresh/index.vue

@@ -1,7 +1,7 @@
 <template>
     <PullRefresh class="app-pull-refresh" v-model="refreshing" @refresh="onRefresh">
         <slot name="header"></slot>
-        <List v-model:loading="loading" v-model:error="showError" :finished="finished" @load="onLoad">
+        <List ref="listRef" v-model:loading="loading" v-model:error="showError" :finished="finished" @load="onLoad">
             <template v-for="(item, index) in dataList" :key="index">
                 <slot :item="item" :index="index"></slot>
             </template>
@@ -17,12 +17,13 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, computed, nextTick } from 'vue'
-import { List, PullRefresh } from 'vant'
+import { shallowRef, computed, nextTick, PropType } from 'vue'
+import { List, PullRefresh, ListInstance } from 'vant'
 
 const props = defineProps({
-    updateList: {
-        type: Array,
+    dataList: {
+        // eslint-disable-next-line
+        type: Array as PropType<any>,
         required: true
     },
     pageIndex: {
@@ -47,12 +48,11 @@ const props = defineProps({
     }
 })
 
-const emit = defineEmits(['update:pageIndex', 'update:error', 'refresh', 'updated'])
+const emit = defineEmits(['update:pageIndex', 'update:error', 'refresh'])
+const listRef = shallowRef<ListInstance>()
 const refreshing = shallowRef(false) // 是否处于下拉加载状态
 const finished = shallowRef(false) // 是否已加载完成所有数据
 const loading = shallowRef(false)
-// eslint-disable-next-line
-const dataList = shallowRef<any[]>([])
 
 const showError = computed({
     get: () => props.error,
@@ -66,26 +66,20 @@ const currentPage = computed({
 
 // 上拉加载
 const onLoad = () => {
-    const callback = () => {
-        if (refreshing.value || currentPage.value === 1) {
-            dataList.value = []
-            refreshing.value = false
-        }
-        if (!showError.value) {
-            currentPage.value++
-            dataList.value.push(...props.updateList)
-            emit('updated', dataList.value)
-        }
-        loading.value = false
-    }
-
     if (refreshing.value) {
         currentPage.value = 1
     }
-
     nextTick(() => {
         if (currentPage.value <= props.pageCount) {
-            emit('refresh', callback)
+            emit('refresh', () => {
+                if (refreshing.value) {
+                    refreshing.value = false
+                }
+                if (!showError.value) {
+                    currentPage.value++
+                }
+                loading.value = false
+            })
         } else {
             refreshing.value = false
             finished.value = true
@@ -99,6 +93,14 @@ const onRefresh = () => {
     loading.value = true
     onLoad()
 }
+
+// 暴露组件属性给父组件调用
+defineExpose({
+    refresh: () => {
+        currentPage.value = 1
+        onRefresh()
+    },
+})
 </script>
 
 <style lang="less">

+ 17 - 11
src/packages/mobile/views/bank/statement/index.vue

@@ -7,10 +7,10 @@
                 </template>
             </app-navbar>
         </template>
-        <app-pull-refresh class="credit-statement__container" v-model:pageIndex="pageIndex" :page-count="pageCount"
-            :updateList="dataList" @refresh="onRefresh" @updated="onRefreshUpdated">
+        <app-pull-refresh class="credit-statement__container" :dataList="dataList" v-model:error="error"
+            v-model:pageIndex="pageIndex" :page-count="pageCount" @refresh="onRefresh">
             <template #header>
-                <ul class="list list-row" v-if="showHeader">
+                <ul class="list list-row" v-if="dataList.length">
                     <li class="list-column">
                         <span>时间</span>
                     </li>
@@ -46,15 +46,21 @@ import { useNavigation } from '@/hooks/navigation'
 import { Button } from 'vant'
 
 const { routerTo } = useNavigation()
-const { dataList, pageIndex, pageCount, getAmountStatementList } = useAmountStatementList()
-const showHeader = shallowRef(false)
+const { pageIndex, pageCount, getAmountStatementList } = useAmountStatementList()
+const dataList = shallowRef<Model.AmountLogRsp[]>([])
+const error = shallowRef(false)
 
-const onRefresh = (callback: () => void) => {
-    getAmountStatementList().finally(() => callback())
-}
-
-const onRefreshUpdated = (data: Model.UserScoreLogRsp[]) => {
-    showHeader.value = data.length > 0
+const onRefresh = (finish: () => void) => {
+    getAmountStatementList().then((res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res)
+    }).catch(() => {
+        error.value = true
+    }).finally(() => {
+        finish()
+    })
 }
 </script>
 

+ 17 - 11
src/packages/mobile/views/credit/statement/index.vue

@@ -4,10 +4,10 @@
             <app-navbar title="积分流水">
             </app-navbar>
         </template>
-        <app-pull-refresh class="credit-statement__container" v-model:pageIndex="pageIndex" :page-count="pageCount"
-            :updateList="dataList" @refresh="onRefresh" @updated="onRefreshUpdated">
+        <app-pull-refresh class="credit-statement__container" :dataList="dataList" v-model:error="error"
+            v-model:pageIndex="pageIndex" :page-count="pageCount" @refresh="onRefresh">
             <template #header>
-                <ul class="list list-row" v-if="showHeader">
+                <ul class="list list-row" v-if="dataList.length">
                     <li class="list-column">
                         <span>时间</span>
                     </li>
@@ -40,15 +40,21 @@ import { getScoreConfigTypeName } from '@/constants/credit'
 import { useCreditStatementList } from '@/business/credit'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 
-const { dataList, pageIndex, pageCount, getCreditStatementList } = useCreditStatementList()
-const showHeader = shallowRef(false)
+const { pageIndex, pageCount, getCreditStatementList } = useCreditStatementList()
+const dataList = shallowRef<Model.UserScoreLogRsp[]>([])
+const error = shallowRef(false)
 
-const onRefresh = (callback: () => void) => {
-    getCreditStatementList().finally(() => callback())
-}
-
-const onRefreshUpdated = (data: Model.UserScoreLogRsp[]) => {
-    showHeader.value = data.length > 0
+const onRefresh = (finish: () => void) => {
+    getCreditStatementList().then((res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res)
+    }).catch(() => {
+        error.value = true
+    }).finally(() => {
+        finish()
+    })
 }
 </script>
 

+ 14 - 6
src/packages/mobile/views/home/components/purchase/index.vue

@@ -7,8 +7,8 @@
         </template>
       </app-navbar>
     </template>
-    <app-pull-refresh class="home-purchase__container" v-model:error="error" v-model:pageIndex="pageIndex"
-      :page-count="pageCount" :updateList="dataList" @refresh="onRefresh">
+    <app-pull-refresh class="home-purchase__container" :dataList="dataList" v-model:error="error"
+      v-model:pageIndex="pageIndex" :page-count="pageCount" @refresh="onRefresh">
       <template #default="{ item }">
         <Cell @click="$router.push({ name: 'goods-details', query: { wrstandardid: item.wrstandardid } })">
           <template #title>
@@ -28,13 +28,21 @@ import { getImageUrl } from '@/filters'
 import { useWrstandardList } from '@/business/goods'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 
-const { dataList, pageIndex, pageCount, getWrstandardList } = useWrstandardList()
+const { pageIndex, pageCount, getWrstandardList } = useWrstandardList()
+const dataList = shallowRef<Model.THJWrstandardRsp[]>([])
 const error = shallowRef(false)
 
-const onRefresh = (callback: () => void) => {
-  getWrstandardList().catch(() => {
+const onRefresh = (finish: () => void) => {
+  getWrstandardList().then((res) => {
+    if (pageIndex.value === 1) {
+      dataList.value = []
+    }
+    dataList.value.push(...res)
+  }).catch(() => {
     error.value = true
-  }).finally(() => callback())
+  }).finally(() => {
+    finish()
+  })
 }
 </script>
 

+ 1 - 1
src/packages/mobile/views/home/index.vue

@@ -59,7 +59,7 @@ const tabList: Tabbar[] = [
 ]
 
 const onChange = (index: number) => {
-  if (![1, 2].includes(index)) {
+  if (![2].includes(index)) {
     componentId.value = tabList[index].name
   }
 }

+ 5 - 1
src/packages/mobile/views/news/details/index.vue

@@ -21,7 +21,11 @@ import { formatHtmlString } from '@/filters'
 
 const { route } = useNavigation()
 const params = route.params.details
-const details = shallowRef<Model.SiteColumnDetailRsp>(JSON.parse(params?.toString()))
+const details = shallowRef<Model.SiteColumnDetailRsp>()
+
+if (params) {
+    details.value = JSON.parse(params.toString())
+}
 </script>
 
 <style lang="less">

+ 27 - 40
src/packages/mobile/views/news/list/index.vue

@@ -3,13 +3,16 @@
     <template #header>
       <app-navbar title="市场资讯" />
     </template>
-    <Tabs v-model:active="active" @click-tab="onClickTab">
-      <Tab v-for="(item, index) in configs" :key="index" :title="item.columnname">
-        <Empty v-if="empty" />
-      </Tab>
+    <Tabs v-model:active="currentColumnId" @change="onClickTab">
+      <template v-for="(item, index) in siteColumns" :key="index">
+        <Tab :name="item.id" :title="item.columnname" />
+      </template>
     </Tabs>
-    <app-pull-refresh class="news-list__container" v-model:pageIndex="pageIndex" :page-count="pageCount"
-      :updateList="dataList" @refresh="onRefresh" @updated="onUpdated">
+    <app-pull-refresh ref="pullRefreshRef" class="news-list__container" :dataList="dataList" v-model:error="error"
+      v-model:pageIndex="pageIndex" :page-count="pageCount" @refresh="onRefresh">
+      <template #header>
+        <Empty v-if="dataList.length === 0" />
+      </template>
       <template #default="{ item }">
         <Cell class="article-item" title-class="article-item__title" value-class="article-item__time"
           :title="item.title" :value="formatDate(item.creaedate, 'MM/DD')"
@@ -20,50 +23,34 @@
 </template>
   
 <script lang="ts" setup>
-
-import { ref, shallowRef } from 'vue'
+import { shallowRef } from 'vue'
 import { Cell, Tab, Tabs, Empty } from 'vant'
 import { formatDate } from '@/filters'
 import { useSiteColumnDetail } from '@/business/news'
-import { querySiteColumnConfig } from '@/services/api/news'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 
-/// tab激活项
-const active = ref(0);
-const empty = shallowRef(false)
-const configs = shallowRef<Model.SiteColumnConfigRsp[]>([])
-const config = shallowRef<Model.SiteColumnConfigRsp>({})
+const { siteColumns, currentColumnId, pageIndex, pageCount, getSiteColumnDetail } = useSiteColumnDetail()
+const pullRefreshRef = shallowRef()
+const dataList = shallowRef<Model.SiteColumnDetailRsp[]>([])
+const error = shallowRef(false)
 
-const { dataList, pageIndex, pageCount, getSiteColumnDetail } = useSiteColumnDetail()
-/// Tab触发
-const onClickTab = (e) => {
-  active.value = e.name
-  /// 设置选中的数据
-  if (configs.value.length>0) {
-    config.value = configs.value[e.name]
-  }
-  getSiteColumnDetail(config.value.id)
+// Tab触发
+const onClickTab = () => {
+  pullRefreshRef.value?.refresh()
 }
 
-/// 查询栏目配置
-querySiteColumnConfig({
-  success: (res) => {
-    configs.value = res.data
-    /// 默认第一个
-    if (res.data.length > 0) {
-      config.value = res.data[0]
+const onRefresh = (finish: () => void) => {
+  getSiteColumnDetail().then((res) => {
+    if (pageIndex.value === 1) {
+      dataList.value = []
     }
-  }
-})
-
-const onRefresh = (callback: () => void) => {
-  getSiteColumnDetail(config.value.id).finally(() => callback())
+    dataList.value.push(...res)
+  }).catch(() => {
+    error.value = true
+  }).finally(() => {
+    finish()
+  })
 }
-
-const onUpdated = (lists: Model.THJProductRsp[]) => {
-  empty.value = lists.length===0
-}
-
 </script>
   
 <style lang="less">

+ 6 - 6
src/services/api/goods/index.ts

@@ -25,41 +25,41 @@ export function queryTHJWrstandardDetail(params: HttpParams<{ req: Model.THJWrst
 /**
  * 移除用户商品收藏信息
  */
- export function removeUserFavoriteGoods(params: HttpParams<{ req: Model.UserFavoriteGoodsReq, rsp: Model.UserFavoriteGoodsRsp }>) {
+export function removeUserFavoriteGoods(params: HttpParams<{ req: Model.UserFavoriteGoodsReq, rsp: Model.UserFavoriteGoodsRsp }>) {
     return httpRequest('/User/RemoveUserFavoriteGoods', 'post', params);
 }
 
 /**
  * 添加用户商品收藏信息
  */
- export function addUserFavoriteGoods(params: HttpParams<{ req: Model.UserFavoriteGoodsReq, rsp: Model.UserFavoriteGoodsRsp }>) {
+export function addUserFavoriteGoods(params: HttpParams<{ req: Model.UserFavoriteGoodsReq, rsp: Model.UserFavoriteGoodsRsp }>) {
     return httpRequest('/User/AddUserFavoriteGoods', 'post', params);
 }
 
 /**
  * 获取我的推广-交易数据
  */
- export function queryTHJTradeData(params: HttpParams<{ req: Model.THJTradeDataReq, rsp: Model.THJTradeDataRsp[] }>) {
+export function queryTHJTradeData(params: HttpParams<{ req: Model.THJTradeDataReq, rsp: Model.THJTradeDataRsp[] }>) {
     return httpRequest('/Ferroalloy/QueryTHJTradeData', 'get', params);
 }
 
 /**
  * 获取产品介绍列表
  */
- export function queryTHJProduct(params: HttpParams<{ req: Model.THJProductReq, rsp: Model.THJProductRsp[] }>) {
+export function queryTHJProduct(params: HttpParams<{ req: Model.THJProductReq, rsp: Model.THJProductRsp[] }>) {
     return httpRequest('/Ferroalloy/QueryTHJProduct', 'get', params);
 }
 
 /**
  * 获取现货行情
  */
- export function querySpotGoodsPrice(params: HttpParams<{ req: Model.SpotGoodsPriceReq, rsp: Model.SpotGoodsPriceRsp[] }>) {
+export function querySpotGoodsPrice(params: HttpParams<{ req: Model.SpotGoodsPriceReq, rsp: Model.SpotGoodsPriceRsp[] }>) {
     return httpRequest('/Ferroalloy/GetSpotGoodsPrice', 'get', params);
 }
 
 /**
  * 查询市场运行信息
  */
- export function queryMarketRun(params: HttpParams<{ req: Model.MarketRunReq, rsp: Model.MarketRunRsp[] }>) {
+export function queryMarketRun(params: HttpParams<{ req: Model.MarketRunReq, rsp: Model.MarketRunRsp[] }>) {
     return httpRequest('/Market/QueryMarketRun', 'get', params);
 }