feat(approval): 添加打开格口功能并优化审批商品展示

- 将打开储物柜接口从shop模块移动到approval模块
- 重构打开格口逻辑,改为接收approvalGoodsCellId参数
- 在审批商品列表中添加打开格口按钮
- 优化审批商品列表标题显示
This commit is contained in:
dzq 2025-06-16 09:18:13 +08:00
parent c433debb84
commit 50715f07b8
2 changed files with 34 additions and 22 deletions

View File

@ -1,6 +1,6 @@
import { request } from '@/http/axios'
import { SubmitApprovalRequestData, SubmitApprovalResponseData, SearchApiReturnApprovalQuery, ApiResponsePageData, ReturnApprovalEntity, HandleApprovalRequestData, SearchReturnApprovalAssetQuery, ReturnApprovalAssetDTO, HandleApprovalAssetRequestData, ApprovalGoodsCellEntity } from './type'
import { ShopOrderGoodsEntity } from '../shop/type'
import { OpenCabinetApiData, ShopOrderGoodsEntity } from '../shop/type'
export const getApprovalListApi = (params: SearchApiReturnApprovalQuery) => {
return request<ApiResponsePageData<ReturnApprovalEntity>>({
@ -73,3 +73,12 @@ export const getApprovalGoodsCellApi = (approvalId: number) => {
params: { approvalId }
})
}
/** 打开储物柜接口 */
export function openCabinetApi(approvalGoodsCellId: number, data: OpenCabinetApiData) {
return request<ApiResponseData<void>>({
url: `approval/openCabinet/${approvalGoodsCellId}`,
method: "post",
data
})
}

View File

@ -2,8 +2,7 @@
import { ref, onMounted, computed } from 'vue'
import { showConfirmDialog, showSuccessToast, showFailToast, showToast, UploaderFileListItem, Popup, Picker, Field, Stepper } from 'vant'
import axios from "axios"
import { getApprovalGoodsCellApi, handleApprovalApi, handleApprovalAssetApi } from '@/common/apis/approval'
import { openCabinetApi } from '@/common/apis/shop'
import { getApprovalGoodsCellApi, handleApprovalApi, handleApprovalAssetApi, openCabinetApi } from '@/common/apis/approval'
import type { ApprovalGoodsCellEntity, ApprovalGoodsEntity, HandleApprovalAssetRequestData, HandleApprovalRequestData } from '@/common/apis/approval/type'
import { useRoute, useRouter } from 'vue-router'
import { useApprovalStore } from '@/pinia/stores/approval'
@ -152,38 +151,37 @@ onMounted(async () => {
}
})
const handleOpenCabinet = async () => {
if (!approvalStore.currentApproval?.orderId || !approvalStore.currentApproval?.orderGoodsId) {
showFailToast('缺少订单信息')
return
const handleOpenCell = async (approvalGoodsCellId: number) => {
if (!approvalGoodsCellId) {
showFailToast('缺少格口信息');
return;
}
isButtonDisabled.value = true
isButtonDisabled.value = true;
try {
const isInternal = corpidLogin.value ? 2 : ab98Userid.value ? 1 : 0;
const result = await openCabinetApi(
approvalStore.currentApproval.orderId,
approvalStore.currentApproval.orderGoodsId, {
userid: isInternal === 2 ? qyUserid.value : ab98Userid.value,
const data = {
userid: qyUserid.value,
isInternal: isInternal,
name: isInternal === 2 ? qyName.value : name.value,
mobile: tel.value,
operationType: 2
}
)
};
const result = await openCabinetApi(approvalGoodsCellId, data);
if (result.code !== 0) {
showFailToast(result.msg || '开启失败')
return
showFailToast(result.msg || '开启格口失败');
return;
}
showSuccessToast('柜口已开启')
showSuccessToast('格口已开启');
} catch (error) {
showFailToast('请求失败')
showFailToast('请求失败');
} finally {
setTimeout(() => {
isButtonDisabled.value = false
}, 5000)
isButtonDisabled.value = false;
}, 5000);
}
}
};
const handleSubmit = async () => {
if (!validateForm()) return
@ -300,7 +298,7 @@ const handleReject = () => {
</van-cell-group>
<van-cell-group class="approval-goods-list" v-if="approvalGoodsCells.length > 0">
<van-cell title="已审批商品格口信息" class="section-title" />
<van-cell title="审批通过商品:" class="section-title" />
<template v-for="item in approvalGoodsCellsWithNames" :key="item.approvalGoodsCellId">
<van-cell class="product-item">
<div class="product-info">
@ -316,6 +314,11 @@ const handleReject = () => {
<div class="product-name van-ellipsis">
分配数量{{ item.allocateQuantity }}
</div>
<div class="open-cell-btn">
<van-button type="primary" size="small" @click="handleOpenCell(item.approvalGoodsCellId)" :disabled="isButtonDisabled">
打开格口
</van-button>
</div>
</div>
</van-cell>
</template>