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