feat(order):小程序第一次进入订单之后没有请求的问题
parent
cfaf0dd598
commit
081581b100
|
|
@ -11,7 +11,7 @@ interface OrderState {
|
|||
pageSize: number
|
||||
total: number
|
||||
keyword: string
|
||||
|
||||
|
||||
// 已审批列表相关
|
||||
completedList: CompletedApprovalItem[]
|
||||
completedLoading: boolean
|
||||
|
|
@ -20,7 +20,7 @@ interface OrderState {
|
|||
completedPageSize: number
|
||||
completedTotal: number
|
||||
completedKeyword: string
|
||||
|
||||
|
||||
// 详情相关
|
||||
currentOrder: any | null // 临时改为any来避免类型问题
|
||||
detailLoading: boolean
|
||||
|
|
@ -36,7 +36,7 @@ export const useOrderStore = defineStore('order', {
|
|||
pageSize: 20,
|
||||
total: 0,
|
||||
keyword: '',
|
||||
|
||||
|
||||
// 已审批列表状态
|
||||
completedList: [],
|
||||
completedLoading: false,
|
||||
|
|
@ -45,7 +45,7 @@ export const useOrderStore = defineStore('order', {
|
|||
completedPageSize: 20,
|
||||
completedTotal: 0,
|
||||
completedKeyword: '',
|
||||
|
||||
|
||||
currentOrder: null,
|
||||
detailLoading: false
|
||||
}),
|
||||
|
|
@ -53,16 +53,16 @@ export const useOrderStore = defineStore('order', {
|
|||
getters: {
|
||||
// 获取当前订单基本信息
|
||||
currentOrderInfo: (state) => state.currentOrder?.projectOrderInfo,
|
||||
|
||||
|
||||
// 获取审批历史
|
||||
approvalHistory: (state) => state.currentOrder?.approveLog || [],
|
||||
|
||||
|
||||
// 获取当前用户信息
|
||||
currentUser: (state) => state.currentOrder?.user,
|
||||
|
||||
|
||||
// 检查待审批是否还有更多数据
|
||||
hasMore: (state) => state.orderList.length < state.total,
|
||||
|
||||
|
||||
// 检查已审批是否还有更多数据
|
||||
completedHasMore: (state) => state.completedList.length < state.completedTotal
|
||||
},
|
||||
|
|
@ -72,7 +72,7 @@ export const useOrderStore = defineStore('order', {
|
|||
* 加载订单列表
|
||||
*/
|
||||
async loadOrderList(refresh = false) {
|
||||
if (this.loading) return
|
||||
// if (this.loading) return
|
||||
|
||||
if (refresh) {
|
||||
this.currentPage = 1
|
||||
|
|
@ -84,7 +84,7 @@ export const useOrderStore = defineStore('order', {
|
|||
|
||||
try {
|
||||
const params: ListParams = {
|
||||
approve:'approve',
|
||||
approve: 'approve',
|
||||
page: this.currentPage,
|
||||
pageSize: this.pageSize,
|
||||
keyword: this.keyword || undefined
|
||||
|
|
@ -100,7 +100,7 @@ export const useOrderStore = defineStore('order', {
|
|||
}
|
||||
|
||||
this.total = total
|
||||
|
||||
|
||||
// 判断是否已加载完所有数据
|
||||
if (this.orderList.length >= total || rows.length === 0) {
|
||||
this.finished = true
|
||||
|
|
@ -135,16 +135,16 @@ export const useOrderStore = defineStore('order', {
|
|||
try {
|
||||
const response = await getOrderDetail(id)
|
||||
|
||||
|
||||
|
||||
// 直接获取数据对象
|
||||
const orderData = response.data.data
|
||||
|
||||
|
||||
|
||||
// 确保数据存在再赋值
|
||||
if (orderData) {
|
||||
this.currentOrder = orderData
|
||||
}
|
||||
|
||||
|
||||
return response
|
||||
} catch (error) {
|
||||
|
||||
|
|
@ -183,7 +183,7 @@ export const useOrderStore = defineStore('order', {
|
|||
const params: CompletedListParams = {
|
||||
page: this.completedCurrentPage,
|
||||
pageSize: this.completedPageSize,
|
||||
processKeyList:['order_approve_online','order_approve_offline'],
|
||||
processKeyList: ['order_approve_online', 'order_approve_offline'],
|
||||
businessName: this.completedKeyword || undefined
|
||||
}
|
||||
|
||||
|
|
@ -200,7 +200,7 @@ export const useOrderStore = defineStore('order', {
|
|||
}
|
||||
|
||||
this.completedTotal = total
|
||||
|
||||
|
||||
// 判断是否已加载完所有数据
|
||||
if (this.completedList.length >= total || rows.length === 0) {
|
||||
this.completedFinished = true
|
||||
|
|
|
|||
|
|
@ -2,17 +2,12 @@
|
|||
<div class="order-list-page">
|
||||
<!-- 搜索栏 -->
|
||||
<div class="search-container">
|
||||
<van-search
|
||||
v-model="searchKeyword"
|
||||
:placeholder="currentTab === 'pending' ? '搜索订单编号、客户名称' : '搜索合同名称'"
|
||||
@search="handleSearch"
|
||||
@clear="handleClear"
|
||||
class="custom-search"
|
||||
>
|
||||
<van-search v-model="searchKeyword" :placeholder="currentTab === 'pending' ? '搜索订单编号、客户名称' : '搜索合同名称'"
|
||||
@search="handleSearch" @clear="handleClear" class="custom-search">
|
||||
<template #left-icon>
|
||||
<svg class="search-icon" viewBox="0 0 24 24" fill="none">
|
||||
<circle cx="11" cy="11" r="8" stroke="currentColor" stroke-width="2"/>
|
||||
<path d="M21 21L16.65 16.65" 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" />
|
||||
</svg>
|
||||
</template>
|
||||
</van-search>
|
||||
|
|
@ -23,12 +18,8 @@
|
|||
<!-- 待审批Tab -->
|
||||
<van-tab name="pending" title="待审批">
|
||||
<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
|
||||
<van-list
|
||||
v-model:loading="loading"
|
||||
:finished="finished"
|
||||
finished-text="没有更多了"
|
||||
@load="onLoad"
|
||||
>
|
||||
<!-- <van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" @load="onLoad"> -->
|
||||
<van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了">
|
||||
<div v-for="order in orderList" :key="order.id" class="order-item" @click="goToDetail(order.id)">
|
||||
<div class="order-header">
|
||||
<div class="order-code">{{ order.orderCode }}</div>
|
||||
|
|
@ -68,13 +59,10 @@
|
|||
<!-- 已审批Tab -->
|
||||
<van-tab name="completed" title="已审批">
|
||||
<van-pull-refresh v-model="completedRefreshing" @refresh="onCompletedRefresh">
|
||||
<van-list
|
||||
v-model:loading="completedLoading"
|
||||
:finished="completedFinished"
|
||||
finished-text="没有更多了"
|
||||
@load="onCompletedLoad"
|
||||
>
|
||||
<div v-for="item in completedList" :key="item.todoId" class="order-item" @click="goToCompletedDetail(item.businessId)">
|
||||
<van-list v-model:loading="completedLoading" :finished="completedFinished" finished-text="没有更多了"
|
||||
@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-code">{{ item.businessKey }}</div>
|
||||
<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 class="footer-content">
|
||||
<van-button
|
||||
type="primary"
|
||||
size="large"
|
||||
@click="showBatchApprovalDialog"
|
||||
:loading="batchSubmitting"
|
||||
class="batch-approve-btn"
|
||||
>
|
||||
<van-button type="primary" size="large" @click="showBatchApprovalDialog" :loading="batchSubmitting"
|
||||
class="batch-approve-btn">
|
||||
一键审批
|
||||
</van-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 批量审批意见弹窗 -->
|
||||
<van-popup
|
||||
v-model:show="batchApprovalDialogVisible"
|
||||
position="bottom"
|
||||
round
|
||||
:style="{ height: '50%' }"
|
||||
>
|
||||
<van-popup v-model:show="batchApprovalDialogVisible" position="bottom" round :style="{ height: '50%' }">
|
||||
<div class="approval-dialog">
|
||||
<div class="dialog-header">
|
||||
<span>审批意见</span>
|
||||
<van-icon name="cross" @click="batchApprovalDialogVisible = false"/>
|
||||
<van-icon name="cross" @click="batchApprovalDialogVisible = false" />
|
||||
</div>
|
||||
<div class="dialog-body">
|
||||
<!-- 默认意见标签 -->
|
||||
<div class="opinion-tags">
|
||||
<div class="tags-title">常用意见</div>
|
||||
<div class="tags-container">
|
||||
<van-tag
|
||||
v-for="tag in getBatchOpinionTags()"
|
||||
:key="tag"
|
||||
:type="selectedBatchTag === tag ? 'primary' : 'default'"
|
||||
size="medium"
|
||||
@click="selectBatchTag(tag)"
|
||||
class="opinion-tag"
|
||||
>
|
||||
<van-tag v-for="tag in getBatchOpinionTags()" :key="tag"
|
||||
:type="selectedBatchTag === tag ? 'primary' : 'default'" size="medium" @click="selectBatchTag(tag)"
|
||||
class="opinion-tag">
|
||||
{{ tag }}
|
||||
</van-tag>
|
||||
</div>
|
||||
</div>
|
||||
<div class="opinion-input">
|
||||
<van-field
|
||||
v-model="batchApprovalOpinion"
|
||||
type="textarea"
|
||||
placeholder="请输入审批意见"
|
||||
rows="4"
|
||||
autosize
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
/>
|
||||
<van-field v-model="batchApprovalOpinion" type="textarea" placeholder="请输入审批意见" rows="4" autosize
|
||||
maxlength="500" show-word-limit />
|
||||
</div>
|
||||
</div>
|
||||
<div class="dialog-footer">
|
||||
<div class="footer-buttons">
|
||||
<van-button
|
||||
type="default"
|
||||
block
|
||||
@click="submitBatchApproval(0)"
|
||||
:loading="batchSubmitting"
|
||||
class="action-btn reject-btn"
|
||||
>
|
||||
<van-button type="default" block @click="submitBatchApproval(0)" :loading="batchSubmitting"
|
||||
class="action-btn reject-btn">
|
||||
驳回
|
||||
</van-button>
|
||||
<van-button
|
||||
type="primary"
|
||||
block
|
||||
@click="submitBatchApproval(1)"
|
||||
:loading="batchSubmitting"
|
||||
class="action-btn approve-btn"
|
||||
>
|
||||
<van-button type="primary" block @click="submitBatchApproval(1)" :loading="batchSubmitting"
|
||||
class="action-btn approve-btn">
|
||||
通过
|
||||
</van-button>
|
||||
</div>
|
||||
|
|
@ -247,12 +203,13 @@ const canBatchApprove = computed(() => {
|
|||
// 加载数据
|
||||
const onLoad = async () => {
|
||||
try {
|
||||
await orderStore.loadOrderList()
|
||||
await orderStore.loadOrderList(false, "onLoad")
|
||||
} catch (error) {
|
||||
console.error('加载订单列表失败:', error)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 下拉刷新
|
||||
const onRefresh = async () => {
|
||||
try {
|
||||
|
|
@ -268,7 +225,7 @@ const onRefresh = async () => {
|
|||
const onTabChange = (name: string) => {
|
||||
currentTab.value = name
|
||||
searchKeyword.value = ''
|
||||
|
||||
|
||||
if (name === 'completed' && completedList.value.length === 0) {
|
||||
onCompletedLoad()
|
||||
}
|
||||
|
|
@ -401,6 +358,7 @@ const submitBatchApproval = async (approveStatus: ApproveBtn) => {
|
|||
}
|
||||
|
||||
onMounted(async () => {
|
||||
console.log("1231231231")
|
||||
orderStore.resetListState()
|
||||
orderStore.resetCompletedListState()
|
||||
// 如果已经登录,则确保获取了用户信息
|
||||
|
|
@ -415,7 +373,8 @@ onMounted(async () => {
|
|||
.order-list-page {
|
||||
min-height: 100vh;
|
||||
background-color: var(--van-background-color);
|
||||
padding-bottom: 80px; /* 为底部批量操作栏留出空间 */
|
||||
padding-bottom: 80px;
|
||||
/* 为底部批量操作栏留出空间 */
|
||||
}
|
||||
|
||||
// Tab相关样式
|
||||
|
|
@ -648,6 +607,7 @@ onMounted(async () => {
|
|||
.dialog-footer {
|
||||
padding: 16px;
|
||||
border-top: 1px solid #ebedf0;
|
||||
|
||||
.footer-buttons {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
|
|
|
|||
Loading…
Reference in New Issue