feat(order):小程序第一次进入订单之后没有请求的问题

master
wangy 2026-01-21 18:14:04 +08:00
parent cfaf0dd598
commit 081581b100
2 changed files with 46 additions and 86 deletions

View File

@ -72,7 +72,7 @@ export const useOrderStore = defineStore('order', {
* *
*/ */
async loadOrderList(refresh = false) { async loadOrderList(refresh = false) {
if (this.loading) return // if (this.loading) return
if (refresh) { if (refresh) {
this.currentPage = 1 this.currentPage = 1
@ -84,7 +84,7 @@ export const useOrderStore = defineStore('order', {
try { try {
const params: ListParams = { const params: ListParams = {
approve:'approve', approve: 'approve',
page: this.currentPage, page: this.currentPage,
pageSize: this.pageSize, pageSize: this.pageSize,
keyword: this.keyword || undefined keyword: this.keyword || undefined
@ -183,7 +183,7 @@ export const useOrderStore = defineStore('order', {
const params: CompletedListParams = { const params: CompletedListParams = {
page: this.completedCurrentPage, page: this.completedCurrentPage,
pageSize: this.completedPageSize, pageSize: this.completedPageSize,
processKeyList:['order_approve_online','order_approve_offline'], processKeyList: ['order_approve_online', 'order_approve_offline'],
businessName: this.completedKeyword || undefined businessName: this.completedKeyword || undefined
} }

View File

@ -2,17 +2,12 @@
<div class="order-list-page"> <div class="order-list-page">
<!-- 搜索栏 --> <!-- 搜索栏 -->
<div class="search-container"> <div class="search-container">
<van-search <van-search v-model="searchKeyword" :placeholder="currentTab === 'pending' ? '搜索订单编号、客户名称' : '搜索合同名称'"
v-model="searchKeyword" @search="handleSearch" @clear="handleClear" class="custom-search">
:placeholder="currentTab === 'pending' ? '搜索订单编号、客户名称' : '搜索合同名称'"
@search="handleSearch"
@clear="handleClear"
class="custom-search"
>
<template #left-icon> <template #left-icon>
<svg class="search-icon" viewBox="0 0 24 24" fill="none"> <svg class="search-icon" viewBox="0 0 24 24" fill="none">
<circle cx="11" cy="11" r="8" stroke="currentColor" stroke-width="2"/> <circle cx="11" cy="11" r="8" stroke="currentColor" stroke-width="2" />
<path d="M21 21L16.65 16.65" stroke="currentColor" stroke-width="2"/> <path d="M21 21L16.65 16.65" stroke="currentColor" stroke-width="2" />
</svg> </svg>
</template> </template>
</van-search> </van-search>
@ -23,12 +18,8 @@
<!-- 待审批Tab --> <!-- 待审批Tab -->
<van-tab name="pending" title="待审批"> <van-tab name="pending" title="待审批">
<van-pull-refresh v-model="refreshing" @refresh="onRefresh"> <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
<van-list <!-- <van-list v-model:loading="loading" :finished="finished" finished-text="" @load="onLoad"> -->
v-model:loading="loading" <van-list v-model:loading="loading" :finished="finished" finished-text="">
:finished="finished"
finished-text="没有更多了"
@load="onLoad"
>
<div v-for="order in orderList" :key="order.id" class="order-item" @click="goToDetail(order.id)"> <div v-for="order in orderList" :key="order.id" class="order-item" @click="goToDetail(order.id)">
<div class="order-header"> <div class="order-header">
<div class="order-code">{{ order.orderCode }}</div> <div class="order-code">{{ order.orderCode }}</div>
@ -68,13 +59,10 @@
<!-- 已审批Tab --> <!-- 已审批Tab -->
<van-tab name="completed" title="已审批"> <van-tab name="completed" title="已审批">
<van-pull-refresh v-model="completedRefreshing" @refresh="onCompletedRefresh"> <van-pull-refresh v-model="completedRefreshing" @refresh="onCompletedRefresh">
<van-list <van-list v-model:loading="completedLoading" :finished="completedFinished" finished-text=""
v-model:loading="completedLoading" @load="onCompletedLoad">
:finished="completedFinished" <div v-for="item in completedList" :key="item.todoId" class="order-item"
finished-text="没有更多了" @click="goToCompletedDetail(item.businessId)">
@load="onCompletedLoad"
>
<div v-for="item in completedList" :key="item.todoId" class="order-item" @click="goToCompletedDetail(item.businessId)">
<div class="order-header"> <div class="order-header">
<div class="order-code">{{ item.businessKey }}</div> <div class="order-code">{{ item.businessKey }}</div>
<div class="status-tag" :class="getCompletedStatusClass(item.approveStatus)"> <div class="status-tag" :class="getCompletedStatusClass(item.approveStatus)">
@ -118,77 +106,45 @@
<!-- 一键审批操作悬浮框 --> <!-- 一键审批操作悬浮框 -->
<div v-if="canBatchApprove && currentTab === 'pending' && orderList.length > 0" class="batch-actions-footer"> <div v-if="canBatchApprove && currentTab === 'pending' && orderList.length > 0" class="batch-actions-footer">
<div class="footer-content"> <div class="footer-content">
<van-button <van-button type="primary" size="large" @click="showBatchApprovalDialog" :loading="batchSubmitting"
type="primary" class="batch-approve-btn">
size="large"
@click="showBatchApprovalDialog"
:loading="batchSubmitting"
class="batch-approve-btn"
>
一键审批 一键审批
</van-button> </van-button>
</div> </div>
</div> </div>
<!-- 批量审批意见弹窗 --> <!-- 批量审批意见弹窗 -->
<van-popup <van-popup v-model:show="batchApprovalDialogVisible" position="bottom" round :style="{ height: '50%' }">
v-model:show="batchApprovalDialogVisible"
position="bottom"
round
:style="{ height: '50%' }"
>
<div class="approval-dialog"> <div class="approval-dialog">
<div class="dialog-header"> <div class="dialog-header">
<span>审批意见</span> <span>审批意见</span>
<van-icon name="cross" @click="batchApprovalDialogVisible = false"/> <van-icon name="cross" @click="batchApprovalDialogVisible = false" />
</div> </div>
<div class="dialog-body"> <div class="dialog-body">
<!-- 默认意见标签 --> <!-- 默认意见标签 -->
<div class="opinion-tags"> <div class="opinion-tags">
<div class="tags-title">常用意见</div> <div class="tags-title">常用意见</div>
<div class="tags-container"> <div class="tags-container">
<van-tag <van-tag v-for="tag in getBatchOpinionTags()" :key="tag"
v-for="tag in getBatchOpinionTags()" :type="selectedBatchTag === tag ? 'primary' : 'default'" size="medium" @click="selectBatchTag(tag)"
:key="tag" class="opinion-tag">
:type="selectedBatchTag === tag ? 'primary' : 'default'"
size="medium"
@click="selectBatchTag(tag)"
class="opinion-tag"
>
{{ tag }} {{ tag }}
</van-tag> </van-tag>
</div> </div>
</div> </div>
<div class="opinion-input"> <div class="opinion-input">
<van-field <van-field v-model="batchApprovalOpinion" type="textarea" placeholder="请输入审批意见" rows="4" autosize
v-model="batchApprovalOpinion" maxlength="500" show-word-limit />
type="textarea"
placeholder="请输入审批意见"
rows="4"
autosize
maxlength="500"
show-word-limit
/>
</div> </div>
</div> </div>
<div class="dialog-footer"> <div class="dialog-footer">
<div class="footer-buttons"> <div class="footer-buttons">
<van-button <van-button type="default" block @click="submitBatchApproval(0)" :loading="batchSubmitting"
type="default" class="action-btn reject-btn">
block
@click="submitBatchApproval(0)"
:loading="batchSubmitting"
class="action-btn reject-btn"
>
驳回 驳回
</van-button> </van-button>
<van-button <van-button type="primary" block @click="submitBatchApproval(1)" :loading="batchSubmitting"
type="primary" class="action-btn approve-btn">
block
@click="submitBatchApproval(1)"
:loading="batchSubmitting"
class="action-btn approve-btn"
>
通过 通过
</van-button> </van-button>
</div> </div>
@ -247,12 +203,13 @@ const canBatchApprove = computed(() => {
// //
const onLoad = async () => { const onLoad = async () => {
try { try {
await orderStore.loadOrderList() await orderStore.loadOrderList(false, "onLoad")
} catch (error) { } catch (error) {
console.error('加载订单列表失败:', error) console.error('加载订单列表失败:', error)
} }
} }
// //
const onRefresh = async () => { const onRefresh = async () => {
try { try {
@ -401,6 +358,7 @@ const submitBatchApproval = async (approveStatus: ApproveBtn) => {
} }
onMounted(async () => { onMounted(async () => {
console.log("1231231231")
orderStore.resetListState() orderStore.resetListState()
orderStore.resetCompletedListState() orderStore.resetCompletedListState()
// //
@ -415,7 +373,8 @@ onMounted(async () => {
.order-list-page { .order-list-page {
min-height: 100vh; min-height: 100vh;
background-color: var(--van-background-color); background-color: var(--van-background-color);
padding-bottom: 80px; /* 为底部批量操作栏留出空间 */ padding-bottom: 80px;
/* 为底部批量操作栏留出空间 */
} }
// Tab // Tab
@ -648,6 +607,7 @@ onMounted(async () => {
.dialog-footer { .dialog-footer {
padding: 16px; padding: 16px;
border-top: 1px solid #ebedf0; border-top: 1px solid #ebedf0;
.footer-buttons { .footer-buttons {
display: flex; display: flex;
gap: 10px; gap: 10px;