This commit is contained in:
aihe 2024-07-18 00:02:14 +08:00
parent e6c278b04b
commit a0d5b86f2c
8 changed files with 264 additions and 302 deletions

View File

@ -191,6 +191,37 @@ const getQueryObject = (url)=> {
return obj; return obj;
} }
export function isPlainObject(obj){
return typeof obj === 'object' && Object.prototype.toString.call(obj) === '[object Object]'
}
export function isPlainArray(obj){
return typeof obj === 'object' && Object.prototype.toString.call(obj) === '[object Array]'
}
export function deepAssign() {
let len = arguments.length, target = arguments[0]
if (!isPlainObject(target)) {
target = {}
}
for (let i = 1; i < len; i++) {
let source = arguments[i]
if (isPlainObject(source)) {
for (let s in source) {
if (s === '__proto__' || target === source[s]) {
continue
}
if (isPlainObject(source[s])) {
target[s] = deepAssign(target[s], source[s])
} else {
target[s] = source[s]
}
}
}
}
return target
}
export { export {
getAddressDetail, getAddressDetail,
setAddresModalParam, setAddresModalParam,

View File

@ -15,6 +15,7 @@
<tpx-dialog :show="show" :title="placeholder" @onClose="handleSelectSwitch"> <tpx-dialog :show="show" :title="placeholder" @onClose="handleSelectSwitch">
<view style="height: calc(60vh);"> <view style="height: calc(60vh);">
<tpx-scroll-view :resObject="filResObject" :searchParam="filDataSearchParam" :getListFun="getListFun" size="sm" :showLoadedAll="false" @onListChange="onListChange"> <tpx-scroll-view :resObject="filResObject" :searchParam="filDataSearchParam" :getListFun="getListFun" size="sm" :showLoadedAll="false" @onListChange="onListChange">
<slot name="listTop"></slot>
<view v-if="showKeyWord" class="mb-10"> <view v-if="showKeyWord" class="mb-10">
<tpx-input v-model:value="keyword" placeholder="请输入关键字" @change="handleKeyWordChange"></tpx-input> <tpx-input v-model:value="keyword" placeholder="请输入关键字" @change="handleKeyWordChange"></tpx-input>
</view> </view>
@ -30,6 +31,7 @@
<view v-if="mode == modeEnum.drop && show" class="md-drop-cont"> <view v-if="mode == modeEnum.drop && show" class="md-drop-cont">
<tpx-scroll-view :maxHeight="dropMaxHeight" :resObject="filResObject" :searchParam="filDataSearchParam" :getListFun="getListFun" size="sm" :showLoadedAll="false" @onListChange="onListChange"> <tpx-scroll-view :maxHeight="dropMaxHeight" :resObject="filResObject" :searchParam="filDataSearchParam" :getListFun="getListFun" size="sm" :showLoadedAll="false" @onListChange="onListChange">
<slot name="listTop"></slot>
<view v-if="showKeyWord" class="mb-10"> <view v-if="showKeyWord" class="mb-10">
<tpx-input v-model:value="keyword" placeholder="请输入关键字" @change="handleKeyWordChange"></tpx-input> <tpx-input v-model:value="keyword" placeholder="请输入关键字" @change="handleKeyWordChange"></tpx-input>
</view> </view>

View File

@ -112,9 +112,7 @@
tab: tabList[0].val, // 当前tab tab: tabList[0].val, // 当前tab
type: '', // 'choose' 选择操作 type: '', // 'choose' 选择操作
}, },
resData: { resData: { list: [] }
list: []
}
} }
}, },
onShareAppMessage() { onShareAppMessage() {
@ -197,7 +195,7 @@
position: relative; position: relative;
} }
.pgb-cont{ .pgb-cont{
padding: 30rpx; padding: 30rpx 30rpx 0 30rpx;
} }
.data-list-item{ .data-list-item{

View File

@ -81,6 +81,14 @@
@onChange="handleYueJieSelect" placeholder="请选择月结账户" @onChange="handleYueJieSelect" placeholder="请选择月结账户"
> >
<tpx-text-item label="月结账户" :value="submitParam.customerName"></tpx-text-item> <tpx-text-item label="月结账户" :value="submitParam.customerName"></tpx-text-item>
<template #listTop>
<view class="mb-20" @click="goto(`user/monthCardList`)">
<u-row>
<u-icon name="order" color="#B12D29" size="36"></u-icon>
<view class="pl-10 clr-prm font-28">管理月结卡</view>
</u-row>
</view>
</template>
</tpx-select> </tpx-select>
</view> </view>
<template v-if="submitParam.custNo"> <template v-if="submitParam.custNo">

View File

@ -1,50 +1,46 @@
<template> <template>
<tpx-page>
<tpx-layout> <tpx-layout>
<template v-slot:header> <template v-slot:header>
<view class="pgb-header"> <view class="pgb-header">
<view class="com-jianju"> <view class="com-jianju">
<!-- 关键字搜索框 --> <!-- 关键字搜索框 -->
<tpx-search placeholder="选择省市区" v-model:value="searchParam.keyword" @change="handleSearchParamChange()" ></tpx-search> <tpx-search placeholder="选择地址" v-model:value="addressText" @click="showAddress"></tpx-search>
</view> </view>
</view> </view>
</template> </template>
<template v-slot:body> <template v-slot:body>
<scroll-view :scroll-y="true" @scrolltolower="onScrollBottom()" class="pos-abt-all" <view class="pos-abt-all">
<tpx-scroll-view v-model:resObject="resData" :searchParam="searchParam" :getListFun="getListFun"
ref="listRef"
> >
<view class="pgb-cont"> <view class="pgb-cont">
<!-- 列表数据 -->
<!-- -->
<view> <view>
<view v-for="(item) in dataList" class="blcok-white radius-20 mb-20" style="margin-top: 0;" <view v-for="(item) in resData.list" class="blcok-white radius-20 mb-20" style="margin-top: 0;"
@click="handleTODetail(item)" @click="handleTODetail(item)"
> >
<u-text :text="'各国邮政新规'" size="30" :bold="true" lines="1"></u-text> <u-text :text="item.siteName" size="30" :bold="true" lines="1"></u-text>
<u-text margin="10rpx 0 0 0" :text="'根据萨尔瓦多邮政通知,为了使萨尔瓦多邮政能在邮件抵达时,致电或'" size="28" color="#999" lines="2"></u-text> <u-text margin="10rpx 0 0 0" :text="`地址:${item.address}`" size="28" color="#999" lines="2"></u-text>
<u-row custom-style="margin-top: 20rpx;" justify="between">
<view>联系人:{{item.principal || '-'}}</view>
<view>电话:{{item.phone || '-'}}</view>
</u-row>
</view> </view>
</view> </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>
</tpx-scroll-view>
</view> </view>
</scroll-view>
</template> </template>
</tpx-layout> </tpx-layout>
<buns-address-sheet v-model:show="addressModal.show" v-model:value="addressModal.values" @onSure="handleAddressChoose"></buns-address-sheet>
</tpx-page>
</template> </template>
<script> <script>
import getCdnUrl from "@/common/getCdnUrl" import * as apiService from "@/common/api"
import { goto, goBack, setClipboardData, confirmModal, showLoading } from "@/common/untool" import { addressNameCodeMap } from "@/common/enum"
import { getAddressDetail, setAddresModalParam } from "@/common/util"
export default { export default {
props: { props: {
@ -58,59 +54,43 @@
data() { data() {
return { return {
searchParam: { searchParam: {
keyword: '',
}, },
resData: { list: [] },
queryOption: {}, queryOption: {},
dataList: [ addressModal: {
{},{},{},{},{},{},{},{} show: false,
], values: {
showLoadMore: false, regIds: [],
loadedAll: false regNames: []
} }
}, },
onShareAppMessage() {
return {
// title: '',
// path: 'TODO'
} }
}, },
onLoad(queryOption) { onLoad(queryOption) {
this.queryOption = queryOption this.queryOption = queryOption
this.searchParam.tabType = queryOption.tab || tabList[0].val
this.initData(); this.initData();
}, },
onUnload() { onUnload() {
}, },
methods: { methods: {
getCdnUrl, getListFun: apiService.getSendSiteList,
initData(){ initData(){
// showLoading()
setTimeout(() => {
uni.stopPullDownRefresh();
}, 300);
},
setListData() {
}, },
handleEditItem(item={}) {
onScrollBottom() {
console.log("onScrollBottom");
if (this.loadedAll) {
return;
}
this.showLoadMore = true;
setTimeout(() => {
this.setListData();
}, 300);
}, },
handleSearchMoreBtn(){ showAddress(){
if(!this.showLoadMore) { this.addressModal.values = setAddresModalParam(this.searchParam);
// 回显更多条件 this.addressModal.show = true
Object.keys(this.tmpSearchParam).map(t=> { },
this.tmpSearchParam[t] = this.searchParam[t] || '' handleAddressChoose(data) {
data.regIds.map((regId, index)=> {
let nameCodeMap = addressNameCodeMap[index]
this.searchParam[nameCodeMap.codeKey] = regId
this.searchParam[nameCodeMap.nameKey] = data.regNames[index]
this.addressText = getAddressDetail(this.searchParam)
}) })
}
this.showSearchMore = !this.showSearchMore
}, },
} }
} }
@ -133,6 +113,6 @@
position: relative; position: relative;
} }
.pgb-cont{ .pgb-cont{
padding: 30rpx; padding: 30rpx 30rpx 0 30rpx;
} }
</style> </style>

View File

@ -116,7 +116,7 @@
<script> <script>
import * as apiService from "@/common/api" import * as apiService from "@/common/api"
import BpdSendRecieverTmp from "@/components/buns-post-detail-templates/bpd-send-reciever-tmp" import BpdSendRecieverTmp from "@/components/buns-post-detail-templates/bpd-send-reciever-tmp"
import { deepAssign } from "@/common/util"
export default { export default {
props: { props: {
@ -127,6 +127,13 @@
}, },
hasExtSchParam() { hasExtSchParam() {
let hasExt = false let hasExt = false
if(
this.searchParam._date.length > 0
|| this.searchParam.params.paymentType
|| this.searchParam.params.orderStatType
) {
hasExt = true
}
return hasExt return hasExt
}, },
}, },
@ -227,10 +234,13 @@
this.moreSearchModel.show = !this.moreSearchModel.show this.moreSearchModel.show = !this.moreSearchModel.show
}, },
handleResetTempSearch(){ handleResetTempSearch(){
this.moreSearchModel.data = JSON.parse(JSON.stringify(this.searchParam)) let data = this.moreSearchModel.data
data._date = []
data.params.orderStatType = ''
data.params.paymentType = ''
}, },
handleConfirmTempSearch(){ handleConfirmTempSearch(){
Object.assign(this.searchParam, this.moreSearchModel.data) deepAssign(this.searchParam, this.moreSearchModel.data)
this.moreSearchModel.show = false this.moreSearchModel.show = false
} }
} }

View File

@ -1,4 +1,5 @@
<template> <template>
<tpx-page>
<tpx-layout> <tpx-layout>
<template v-slot:body> <template v-slot:body>
<view class="com-jianju pos-rlt pb-30" style="padding-top: 2rpx;"> <view class="com-jianju pos-rlt pb-30" style="padding-top: 2rpx;">
@ -85,13 +86,11 @@
</view> </view>
</template> </template>
</tpx-layout> </tpx-layout>
</tpx-page>
</template> </template>
<script> <script>
import getCdnUrl from "@/common/getCdnUrl"
import {
goto
} from "@/common/untool"
export default { export default {
props: { props: {
// hasLeftWin: { // hasLeftWin: {
@ -104,17 +103,9 @@
data() { data() {
return { return {
submitParam: { submitParam: {
type: 1,
otherDes: ''
} }
} }
}, },
onShareAppMessage() {
return {
// title: '',
// path: 'TODO'
}
},
onLoad() { onLoad() {
this.initData(); this.initData();
}, },
@ -122,12 +113,7 @@
}, },
methods: { methods: {
getCdnUrl,
initData() { initData() {
// uni.showLoading({
// title: '加载中'
// });
}, },
handleAnsText(){ handleAnsText(){

View File

@ -1,16 +1,19 @@
<template> <template>
<tpx-page>
<tpx-layout> <tpx-layout>
<template v-slot:header> <template v-slot:header>
</template> </template>
<template v-slot:body> <template v-slot:body>
<scroll-view :scroll-y="true" @scrolltolower="onScrollBottom()" class="pos-abt-all" <view class="pos-abt-all">
<tpx-scroll-view v-model:resObject="resData" :searchParam="searchParam" :getListFun="getListFun"
ref="listRef"
> >
<view class="pgb-header"> <view class="pgb-header">
<view class="com-jianju"> <view class="com-jianju">
<!-- 关键字搜索框 --> <!-- 关键字搜索框 -->
<tpx-search placeholder="请输入" v-model:value="searchParam.keyword" @change="handleSearchParamChange()" ></tpx-search> <tpx-search placeholder="请输入" v-model:value="searchParam.searchValue" @change="handleSearchParamChange()" ></tpx-search>
</view> </view>
</view> </view>
@ -39,18 +42,9 @@
</view> </view>
</view> </view>
</view> </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>
</tpx-scroll-view>
</view> </view>
</scroll-view>
</template> </template>
<template v-slot:footer> <template v-slot:footer>
@ -68,12 +62,12 @@
</template> </template>
</tpx-layout> </tpx-layout>
</tpx-page>
</template> </template>
<script> <script>
import getCdnUrl from "@/common/getCdnUrl" import getCdnUrl from "@/common/getCdnUrl"
import { goto, goBack, setClipboardData, confirmModal, showLoading } from "@/common/untool" import * as apiService from "@/common/api"
export default { export default {
props: { props: {
@ -87,71 +81,24 @@
data() { data() {
return { return {
searchParam: { searchParam: {
keyword: '', searchValue: '',
}, },
resData: { list: [] },
queryOption: {}, queryOption: {},
dataList: [
{},{},{},{},{},{},{},{}
],
showLoadMore: false,
loadedAll: false
}
},
onShareAppMessage() {
return {
// title: '',
// path: 'TODO'
} }
}, },
onLoad(queryOption) { onLoad(queryOption) {
this.queryOption = queryOption this.queryOption = queryOption
this.searchParam.tabType = queryOption.tab || tabList[0].val
this.initData(); this.initData();
}, },
onUnload() { onUnload() {
}, },
methods: { methods: {
goto, getListFun: apiService.getMonthpayAccountList,
setClipboardData,
getCdnUrl,
initData(){ initData(){
// showLoading()
setTimeout(() => {
uni.stopPullDownRefresh();
}, 300);
},
setListData() {
},
onScrollBottom() {
console.log("onScrollBottom");
if (this.loadedAll) {
return;
}
this.showLoadMore = true;
setTimeout(() => {
this.setListData();
}, 300);
},
handleSearchMoreBtn(){
if(!this.showLoadMore) {
// 回显更多条件
Object.keys(this.tmpSearchParam).map(t=> {
this.tmpSearchParam[t] = this.searchParam[t] || ''
})
}
this.showSearchMore = !this.showSearchMore
},
handleItemClick(item){
if(this.queryOption.type == "choose") {
goBack()
} else {
this.handleEditItem(item)
}
}, },
handleEditItem(item={}) { handleEditItem(item={}) {
goto(`user/monthCardEdit?id=${item.id}`) this.goto(`user/monthCardEdit?id=${item.id}`)
}, },
} }
} }
@ -174,6 +121,6 @@
position: relative; position: relative;
} }
.pgb-cont{ .pgb-cont{
padding: 30rpx; padding: 30rpx 30rpx 0 30rpx;
} }
</style> </style>