This commit is contained in:
aihe 2024-08-07 00:12:49 +08:00
parent 95d2456356
commit e01e6e31b3
6 changed files with 300 additions and 303 deletions

View File

@ -101,7 +101,6 @@ export const getOrderDetail = (data = {})=> {
return coreRequest(url.getOrderDetail, data, {}, "GET")
}
// 取消订单
export const cancelOrder = (data = {})=> {
return coreRequest(url.cancelOrder, data, {})
@ -157,4 +156,13 @@ export const registerProblemInfo = (data = {})=> {
export const queryScanWaybillList = (data = {})=> {
return coreRequest(url.queryScanWaybillList, data, {}, "GET")
}
// 下载进仓单PDF
export const exportWarehouseInTpl = (data = {})=> {
return coreRequest(url.exportWarehouseInTpl, data, {})
}
// 进仓单列表
export const getWarehouseInList = (data = {})=> {
return coreRequest(url.getWarehouseInList, data, {}, "GET")
}

View File

@ -31,6 +31,8 @@ export default {
getCaculteDestSite: `/oms2c/emisDestination/getDestSite`, // 自动计算目的地 -- DONE
getCaculteSendSite: `/oms2c/emisDestination/getSendSite`, // 自动计算寄件网点 -- DONE
getLisWarehouse: `/oms2c/emisWaybill/listWmsWarehouse`, // 仓库列表 -- DONE
exportWarehouseInTpl: `/oms2c/emisWaybill/exportWarehouseInTpl`, // 下载进仓单PDF-- DONE
getWarehouseInList: `/oms2c/emisWarehouseIn/listSimple`, // 进仓单列表-- DONE
getListBindSalesmen: `/oms2c/emisWaybill/listBindSalesmen`, // 绑定业务员列表 -- DONE
queryNewSalesmen: `/oms2c/emisWaybill/queryNewSalesmen`, // 查询所有业务员-根据手机号等条件 -- DONE
bindSalesmen: `/oms2c/emisWaybill/bindSalesmen`, // 绑定业务员 -- DONE

View File

@ -14,7 +14,7 @@
<!-- <u-count-down :time="3 * 1000"
format="ss:" :autoStart="true" :millisecond="false" @change="handleTimeFinish"
></u-count-down> -->
<text>已阅读同意本条款,下次不再提示</text>
<text>已阅读同意本条款</text>
</u-button>
</view>
</template>

View File

@ -1,65 +1,61 @@
<template>
<tpx-layout>
<template v-slot:body>
<view class="com-jianju pos-rlt pb-30" style="padding-top: 2rpx;">
<view class="blcok-white radius-20" style="padding-top: 40rpx;">
<uni-forms ref="baseForm" :modelValue="baseFormData" label-width="0">
<uni-forms-item :required="false">
<tpx-input v-model:value="baseFormData.name" placeholder="真实姓名"></tpx-input>
</uni-forms-item>
<uni-forms-item :required="false">
<tpx-select placeholder="证件类型" v-model:value="baseFormData.type" :list="typeList"
mode="drop"
></tpx-select>
</uni-forms-item>
<uni-forms-item :required="false">
<tpx-input v-model:value="baseFormData.number" placeholder="证件号"></tpx-input>
</uni-forms-item>
<view class="mb-10">
<u-row justify="between">
<u-col span="5">
<tpx-upload v-model:value="baseFormData.pic1" :isSlot="true">
<view class="up-item">
<u-image :src="getCdnUrl(`mine/shen-zh.svg`)" height="150" width="200"></u-image>
<u-text :text="'身份证人像面'" size="28" align="center"></u-text>
</view>
</tpx-upload>
</u-col>
<u-col span="5">
<tpx-upload v-model:value="baseFormData.pic2" :isSlot="true">
<view class="up-item">
<u-image :src="getCdnUrl(`mine/shen-fan.svg`)" height="150" width="200"></u-image>
<u-text :text="'身份证国徽面'" size="28" align="center"></u-text>
</view>
</tpx-upload>
</u-col>
</u-row>
</view>
</uni-forms>
<tpx-page>
<tpx-layout>
<template v-slot:body>
<view class="com-jianju pos-rlt pb-30" style="padding-top: 2rpx;">
<view class="blcok-white radius-20" style="padding-top: 40rpx;">
<uni-forms ref="baseForm" :modelValue="baseFormData" label-width="0">
<uni-forms-item :required="false">
<tpx-input v-model:value="baseFormData.name" placeholder="真实姓名"></tpx-input>
</uni-forms-item>
<uni-forms-item :required="false">
<tpx-select placeholder="证件类型" v-model:value="baseFormData.type" :list="typeList"
mode="drop"
></tpx-select>
</uni-forms-item>
<uni-forms-item :required="false">
<tpx-input v-model:value="baseFormData.number" placeholder="证件号"></tpx-input>
</uni-forms-item>
<view class="mb-10">
<u-row justify="between">
<u-col span="5">
<tpx-upload v-model:value="baseFormData.pic1" :isSlot="true">
<view class="up-item">
<u-image :src="getCdnUrl(`mine/shen-zh.svg`)" height="150" width="200"></u-image>
<u-text :text="'身份证人像面'" size="28" align="center"></u-text>
</view>
</tpx-upload>
</u-col>
<u-col span="5">
<tpx-upload v-model:value="baseFormData.pic2" :isSlot="true">
<view class="up-item">
<u-image :src="getCdnUrl(`mine/shen-fan.svg`)" height="150" width="200"></u-image>
<u-text :text="'身份证国徽面'" size="28" align="center"></u-text>
</view>
</tpx-upload>
</u-col>
</u-row>
</view>
</uni-forms>
</view>
</view>
</view>
</template>
<template v-slot:footer>
<view class="blcok-white-noradius">
<u-button @click="handleSubmit()" type="primary" size="large" shape="circle"
custom-style="height:80rpx;font-size: 30rpx;">提交实名</u-button>
</view>
</template>
</tpx-layout>
</template>
<template v-slot:footer>
<view class="blcok-white-noradius">
<u-button @click="handleSubmit()" type="primary" size="large" shape="circle"
custom-style="height:80rpx;font-size: 30rpx;">提交实名</u-button>
</view>
</template>
</tpx-layout>
</tpx-page>
</template>
<script>
import getCdnUrl from "@/common/getCdnUrl"
import {
goto,
goBack
} from "@/common/untool"
export default {
props: {
// hasLeftWin: {
@ -105,8 +101,6 @@
},
methods: {
getCdnUrl,
initData() {
// uni.showLoading({
// title: '加载中'
@ -124,7 +118,7 @@
uni.showToast({
title: `校验通过`
})
goBack()
this.goBack()
}).catch(err => {
console.log('err', err);
})

View File

@ -1,257 +1,256 @@
<template>
<tpx-layout>
<template v-slot:header>
<view class="customer_nav_bar">
<view class="com-jianju" >
<!-- 关键字搜索框 -->
<tpx-search placeholder="请输入订单号/运单号/进仓单号/姓名/手机号" v-model:value="searchParam.keyword" @change="handleSearchParamChange()" bgColor="#FFF" :timelyTrigger="false"></tpx-search>
</view>
<view class="com-jianju" style="padding-top: 30rpx;">
<u-row justify="between" align="top">
<u-col span="9">
<!-- 订单状态 -->
<tpx-tabs :list="wareTypeList" v-model:value="searchParam.wareStatus"
@tabchange="(val)=> { handleSearchParamChange() }" v-slot="curOrdTab"
>
<text slot>
(<text>{{curOrdTab.item.val}}</text>)
</text>
</tpx-tabs>
</u-col>
<u-col span="2">
<!-- 更多查询条件 -->
<u-button @click="handleSearchMoreBtn()" :hairline="false" shape="circle" size="mini" custom-style="border-radius: 23rpx;font-size: 26rpx;height: 50rpx;">
<u-row justify="center">
<view :style="'padding-right: 4rpx;white-space: nowrap;' + (hasExtSchParam?'color: #B12D29;':'color: #666;')">
{{hasExtSchParam?'已':''}}筛选
<tpx-page>
<tpx-layout>
<template v-slot:header>
<view class="search_nav_bar">
<view class="com-jianju pt-30">
<!-- 关键字搜索框 -->
<tpx-search placeholder="请输入订单号/运单号/进仓单号/姓名/手机" v-model:value="searchParam.searchValue" @change="handleSearch" bgColor="#FFF" :timelyTrigger="false"></tpx-search>
</view>
<view class="com-jianju" style="padding-top: 30rpx;">
<u-row justify="between" align="top">
<u-col span="9">
<tpx-tabs :list="dicData.emis_oms_order_tab" v-model:value="searchParam.params.queryStatusType"
v-slot="curOrdTab"
>
<text slot>
</text>
</tpx-tabs>
</u-col>
<u-col span="2">
<!-- 更多查询条件 -->
<u-button @click="handleDialogClick(moreSearchModel)" :hairline="false" shape="circle" size="mini" custom-style="border-radius: 23rpx;font-size: 26rpx;height: 50rpx;">
<u-row justify="center">
<view :style="'padding-right: 4rpx;white-space: nowrap;' + (hasExtSchParam?'color: #B12D29;':'color: #666;')">
{{hasExtSchParam?'已':''}}筛选
</view>
<u-icon :name="moreSearchModel.show?'arrow-up-fill':'arrow-down-fill'"
:color="(hasExtSchParam?'#B12D29':'#666')" size="18" custom-style="margin-top: 2rpx;"
></u-icon>
</u-row>
</u-button>
</u-col>
</u-row>
</view>
<!-- 状态搜索 -->
<view v-if="moreSearchModel.show" class="search-more-panel">
<view class="smp-body slideInDown animated fast">
<view class="smp-content">
<view class="pos-abt-all" style="overflow-y: auto;">
<view style="padding: 0 0 30rpx 0">
<view>
<u-text text="快递状态" size="28" :bold="true" margin="0 0 20rpx 0"></u-text>
<tpx-tags :list="dicData.emis_order_status" v-model:value="moreSearchModel.data.params.orderStatType" ></tpx-tags>
</view>
<view>
<u-text text="付款方式" size="28" :bold="true" margin="20rpx 0 20rpx 0"></u-text>
<tpx-tags :list="dicData.emis_payment_type" v-model:value="moreSearchModel.data.params.paymentType" ></tpx-tags>
</view>
<view>
<u-text text="时间范围" size="28" :bold="true" margin="20rpx 0 20rpx 0"></u-text>
<tpx-date-input v-model:value="moreSearchModel.data._date" placeholder="请选择时间"></tpx-date-input>
</view>
</view>
<u-icon :name="showSearchMore?'arrow-up-fill':'arrow-down-fill'"
:color="(hasExtSchParam?'#B12D29':'#666')" size="18" custom-style="margin-top: 2rpx;"
></u-icon>
</u-row>
</u-button>
</u-col>
</u-row>
</view>
<!-- 状态搜索 -->
<view v-if="showSearchMore" class="search-more-panel">
<view class="smp-body slideInDown animated fast">
<view class="smp-content">
<view class="pos-abt-all" style="overflow-y: auto;">
<view style="padding: 0 0 30rpx 0">
<view>
<u-text text="快递状态" size="28" :bold="true" margin="0 0 20rpx 0"></u-text>
<tpx-tags :list="dlvTypeList" v-model:value="tmpSearchParam.postStatus" ></tpx-tags>
</view>
<view>
<u-text text="付款方式" size="28" :bold="true" margin="20rpx 0 20rpx 0"></u-text>
<tpx-tags :list="payTypeList" v-model:value="tmpSearchParam.payType" ></tpx-tags>
</view>
</view>
</view>
</view>
<view class="smp-foot">
<u-row gutter="20" justify="between">
<u-button @click="handleResetTempSearch()" shape="circle">重置</u-button>
<view style="width: 40rpx;"></view>
<u-button @click="handleConfirmTempSearch()" shape="circle" type="primary">确认</u-button>
</u-row>
<view class="smp-foot">
<u-row gutter="20" justify="between">
<u-button @click="handleResetTempSearch()" shape="circle">重置</u-button>
<view style="width: 40rpx;"></view>
<u-button @click="handleConfirmTempSearch()" shape="circle" type="primary">确认</u-button>
</u-row>
</view>
</view>
</view>
</view>
</view>
</template>
</template>
<template v-slot:body>
<view class="pos-abt-all">
<tpx-scroll-view v-model:resObject="resData" :searchParam="searchParam" :getListFun="getListFun"
ref="listRef"
>
<view class="pgb-cont">
<!-- 列表数据 -->
<view v-for="(item) in resData.list" class="ord-list-item">
<view class="mt-10">
<bpd-send-reciever-tmp :value="item" :showInfoBtn="false"></bpd-send-reciever-tmp>
</view>
<u-line color="#DEDEDE" margin="30rpx 0 0 0"></u-line>
<u-row justify="end" custom-style="margin-top:20rpx;">
<view style="display: inline-block;white-space: nowrap;">
<u-row>
<!-- 仓库收货(待揽收): -->
<u-button v-if="(item.orderStatus == 1 && item.waybillStatus == 0)"
@click="handleDealItem(item, { type: 4 })" shape="circle" type="primary" :plain="true"
custom-style="height: 54rpx;margin-left: 12rpx;">进仓确认</u-button>
<!-- 待接单 -->
<u-button v-if="(item.orderStatus == 0)"
@click="handleDealItem(item, { type: 2 })" shape="circle" type="primary"
custom-style="height: 54rpx;margin-left: 12rpx;">再来一单</u-button>
<!-- 待接单 -->
<u-button v-if="(item.orderStatus == 0)"
@click="handleDealItem(item, { type: 3 })" shape="circle" type="primary"
:plain="true" custom-style="height: 54rpx;margin-left: 12rpx;">取消</u-button>
<!-- 待付款 -->
<u-button v-if="(item.paymentStatus == 0)"
@click="handleDealItem(item, { type: 5 })" shape="circle" type="primary" :plain="true"
custom-style="height: 54rpx;margin-left: 12rpx;">去付款</u-button>
</u-row>
</view>
</u-row>
</view>
</view>
</tpx-scroll-view>
</view>
</template>
</tpx-layout>
<tpx-com-dialog v-model:show="cancelModal.show" ref="cancelRef" title="确认取消">
<template v-slot:body>
<u-textarea v-model="cancelModal.data.orderRemark" border="surround" height="120" placeholder="请输入"
maxlength="300" count></u-textarea>
</template>
</tpx-com-dialog>
<template v-slot:body>
<scroll-view :scroll-y="true" @scrolltolower="onScrollBottom()" class="pos-abt-all"
>
<view class="pgb-cont">
<!-- 列表数据 -->
<view v-for="(orItem) in dataList" class="ord-list-item" >
<u-row justify="between">
<text>进仓单号:TAN-7080304038001</text>
<view class="com-tag-grey font-26">
{{'待入仓/部分入仓'}}
</view>
</u-row>
<u-text margin="10rpx 0 0 0" :text="`拉链 无 12L 1000件 ..- ,针织上衣 LINing XL 1000件 等货一`" size="26" color="#999"></u-text>
<view class="mt-10" @click="handleGoDetail(orItem)">
<u-row justify="between" align="center">
<u-row custom-style="flex:1;" justify="between">
<u-col span="4">
<u-text :text="'中国上海'" size="30" :bold="true" align="center"></u-text>
<u-text :text="'张三'" size="26" color="#999" margin="20rpx 0 0 0"
align="center"></u-text>
</u-col>
<u-col span="4" justify="center" align="center" custom-style="text-align: center;">
<image style="width: 70rpx;height: 14rpx;" :src="getCdnUrl('search/toline.png')">
</image>
</u-col>
<u-col span="4">
<u-text :text="'越南'" size="30" :bold="true" align="center"></u-text>
<u-text :text="'李四'" size="26" color="#999" margin="20rpx 0 0 0"
align="center"></u-text>
</u-col>
</u-row>
<u-row custom-style="margin-left:20rpx;">
<u-image shape="square" width="160" height="160" radius="10"></u-image>
</u-row>
</u-row>
</view>
<u-row custom-style="margin-top:30rpx;" justify="between">
<view>
<u-text :text="`订单号:${'TW7080304038'}`" color="#999" size="26"></u-text>
</view>
<view>
<u-text :text="`${'2023-11-20 13:28:56'}`" color="#999" size="26"></u-text>
</view>
</u-row>
<u-line color="#DEDEDE" margin="30rpx 0 0 0"></u-line>
<u-row justify="end" custom-style="margin-top:20rpx;">
<u-row>
<u-button shape="circle" type="primary" :plain="true"
@click="goto(`warehousing/pdfPreview?id=${112}`)" custom-style="width: 180rpx;box-sizing: content-box;height: 54rpx;margin-left: 12rpx;">下载打印PDF</u-button>
<u-button shape="circle" type="primary"
@click="handleGoDetail(orItem)" custom-style="width: 100rpx;box-sizing: content-box;height: 54rpx;margin-left: 12rpx;">去确认</u-button>
</u-row>
</u-row>
</view>
<!-- 加载更多 -->
<u-loadmore icon-size="28" font-size="28" margin-top="30" v-if="showLoadMore || loadedAll"
:status="loadedAll ? 'nomore' : 'loading'" />
<!-- 空数据页 -->
<view v-if="dataList.length == 0" style="padding-top: 100rpx;">
<u-empty text="无数据" :icon="getCdnUrl('kong.png')" textSize="28" width="86" height="97">
</u-empty>
</view>
</view>
</scroll-view>
</template>
</tpx-layout>
</tpx-page>
</template>
<script>
import getCdnUrl from "@/common/getCdnUrl"
import { goto, setClipboardData, confirmModal, showLoading } from "@/common/untool"
import * as apiService from "@/common/api"
import BpdSendRecieverTmp from "@/components/buns-post-detail-templates/bpd-send-reciever-tmp"
import { deepAssign } from "@/common/util"
export default {
props: {
// hasLeftWin: {
// type: Boolean
// }
},
computed: {
dicData() {
return this.$store.getters.dicData
},
hasExtSchParam() {
let hasExt = false
const searchParam = this.searchParam
if(
(searchParam.postStatus && searchParam.postStatus.length > 0)
|| (searchParam.payType && searchParam.payType.length > 0)
|| (searchParam.date || (searchParam.dateType && searchParam.dateType != dateTypeEnum.custom) )
this.searchParam._date.length > 0
|| this.searchParam.params.paymentType
|| this.searchParam.params.orderStatType
) {
hasExt = true
}
return hasExt
},
},
components: { BpdSendRecieverTmp },
data() {
let { dicData } = this.$store.getters
return {
searchParam: {
keyword: '',
wareStatus: wareTypeList[0].val // 订单状态, 1:寄件; 2:收件; 3:待付款;
},
showSearchMore: false,
showCladar: false,
tmpSearchParam: {
moreSearchModel: {
data: {},
show: false
},
cancelModal: {
show: false,
data: {
orderRemark: ''
}
},
searchParam: {
searchValue: '',
_date: [],
params: {
queryStatusType: dicData.emis_oms_order_tab?.[0]?.val,
orderStatType: '',
paymentType: '',
}
},
queryOption: {
},
dataList: [
{}
,{},{},{},{},{},{},{}
],
showLoadMore: false,
loadedAll: false
resData: { list: [] }
}
},
onShareAppMessage() {
return {
// title: '',
// path: 'TODO'
}
},
onLoad() {
this.initTmpSrchParam()
this.initData();
onShow(){
this.triggerListReload()
this.initData()
},
onLoad(option) {
this.queryOption = option
},
onUnload() {
},
methods: {
getCdnUrl,
goto,
methods: {
transSearchPm(param){
let cpParam = JSON.parse(JSON.stringify(param))
cpParam.params.beginDate = cpParam?._date?.[0]
cpParam.params.endDate = cpParam?._date?.[1]
return cpParam
},
async getListFun(param){
let cpParam = this.transSearchPm(param)
let res = await apiService.getWarehouseInList(cpParam)
return res
},
initData(){
// showLoading()
setTimeout(() => {
uni.stopPullDownRefresh();
}, 300);
},
initTmpSrchParam(){
this.tmpSearchParam = {
postStatus: [], // 快递状态
payType: [], // 支付类型
dateType: '', // 日期类型
date: '' // 日期
async handleDealItem(item, deal = { type: '1' }) {
// 下载 exportWarehouseInTpl
let itemQuery = `?billCode=${item.billCode || ''}&orderSn=${item.orderSn || ''}`
switch (deal.type){
case 1: // 运单详情
this.goto(`post/detail${itemQuery}`)
break;
case 2: // 再来一单
this.goto(`post/post?copyBillCode=${item.billCode}`)
break;
case 3: // 取消
let canBl = await this.$refs.cancelRef.getConfirmResult()
if(canBl) {
await apiService.cancelOrder({ orderSn: item.orderSn, ...this.cancelModal.data })
this.triggerListReload()
}
this.cancelModal.data = { }
this.cancelModal.show = false
break;
case 4: // 进仓确认
this.goto(`warehousing/detail${itemQuery}`)
break;
case 5: // 付款
this.goto(`bill/detail${itemQuery}`)
break;
default:
break;
}
},
loadListData() {
// 请求列表数据 TODO
console.log('====this.searchParam===', this.searchParam)
handleSearch(){
setTimeout(()=> {
this.triggerListReload()
}, 300)
},
onScrollBottom() {
console.log("onScrollBottom");
if (this.loadedAll) {
return;
}
this.showLoadMore = true;
this.handleSearchParamChange();
triggerListReload(){
this?.$refs?.listRef?.getDataList?.(true) // 重置到第一页数据
},
handleSearchMoreBtn(){
if(!this.showLoadMore) {
// 回显更多条件
Object.keys(this.tmpSearchParam).map(t=> {
const val = this.searchParam[t]
typeof val != 'undefined' && (this.tmpSearchParam[t] = val)
})
}
this.showSearchMore = !this.showSearchMore
handleDialogClick(curModal){
this.moreSearchModel.data = JSON.parse(JSON.stringify(this.searchParam))
this.moreSearchModel.show = !this.moreSearchModel.show
},
handleSearchParamChange(key, val) {
if(key) {
this.searchParam[key] = val
}
this.loadListData()
},
handleResetTempSearch(){
this.initTmpSrchParam()
let data = this.moreSearchModel.data
data._date = []
data.params.orderStatType = ''
data.params.paymentType = ''
},
handleConfirmTempSearch(){
Object.assign(this.searchParam, this.tmpSearchParam)
this.showSearchMore = false
this.handleSearchParamChange();
},
handleGoDetail(item = {}) {
goto(`warehousing/detail?id=${item.id}`)
},
handleDownPdf(item = {}) {
debugger
deepAssign(this.searchParam, this.moreSearchModel.data)
this.moreSearchModel.show = false
}
}
}
@ -263,15 +262,14 @@
background-color: #F6F6F6;
height: 100% !important;
}
.customer_nav_bar {
padding-top: 30rpx;
background-color: #FFF;
.search_nav_bar {
background-color: #fff;
position: relative;
}
</style>
<style scoped lang="scss">
.pgb-cont{
padding: 30rpx;
padding: 30rpx 30rpx 0 30rpx;
}
.ord-list-item{

View File

@ -1,30 +1,29 @@
<template>
<tpx-layout>
<template v-slot:header></template>
<template v-slot:body>
<view class="dt-block">
</view>
</template>
<template v-slot:footer>
<view class="blcok-white-noradius">
<u-row justify="space-around">
<u-button @click="downloadFile(``)" :plain="true" size="large" shape="circle" type="primary" custom-style="margin: 0 10rpx;height:80rpx;font-size: 30rpx;"
>下载PDF到本地
</u-button>
<u-button @click="setClipboardData(`dasdasd`)" size="large" shape="circle" custom-style="margin: 0 10rpx;height:80rpx;font-size: 30rpx;"
>复制分享链接
</u-button>
</u-row>
</view>
</template>
</tpx-layout>
<tpx-page>
<tpx-layout>
<template v-slot:header></template>
<template v-slot:body>
<view class="dt-block">
</view>
</template>
<template v-slot:footer>
<view class="blcok-white-noradius">
<u-row justify="space-around">
<u-button @click="downloadFile(``)" :plain="true" size="large" shape="circle" type="primary" custom-style="margin: 0 10rpx;height:80rpx;font-size: 30rpx;"
>下载PDF到本地
</u-button>
<u-button @click="setClipboardData(`dasdasd`)" size="large" shape="circle" custom-style="margin: 0 10rpx;height:80rpx;font-size: 30rpx;"
>复制分享链接
</u-button>
</u-row>
</view>
</template>
</tpx-layout>
</tpx-page>
</template>
<script>
import getCdnUrl from "@/common/getCdnUrl"
import { goto, goBack, setClipboardData, confirmModal, showLoading, downloadFile } from "@/common/untool"
export default {
props: {
// hasLeftWin: {
@ -51,10 +50,6 @@
onUnload() {
},
methods: {
setClipboardData,
goto,
downloadFile,
getCdnUrl,
initData(){
// showLoading()
},