diff --git a/src/common/apis/approval/index.ts b/src/common/apis/approval/index.ts index a7c63eb..3271ef1 100644 --- a/src/common/apis/approval/index.ts +++ b/src/common/apis/approval/index.ts @@ -1,5 +1,5 @@ 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, ReturnApprovalDetailDTO } from './type' import { OpenCabinetApiData, ShopOrderGoodsEntity } from '../shop/type' export const getApprovalListApi = (params: SearchApiReturnApprovalQuery) => { @@ -50,7 +50,7 @@ export const handleApprovalApi = (data: HandleApprovalRequestData) => { } -export const handleApprovalAssetApi = (data: HandleApprovalAssetRequestData) => { +export const handleApprovalAssetApi = (data: HandleApprovalRequestData) => { return request>({ url: 'approval/handle/asset', method: 'post', @@ -58,6 +58,14 @@ export const handleApprovalAssetApi = (data: HandleApprovalAssetRequestData) => }) } +export const allocateApprovalGoods = (data: HandleApprovalAssetRequestData) => { + return request>({ + url: 'approval/handle/allocateApprovalGoods', + method: 'post', + data + }) +} + export const getApprovalOrderGoodsApi = (approvalId: number) => { return request>({ url: 'approval/getApprovalOrderGoods', @@ -67,11 +75,23 @@ export const getApprovalOrderGoodsApi = (approvalId: number) => { } export const getApprovalGoodsCellApi = (approvalId: number) => { - return request>({ - url: 'approval/getApprovalGoodsCell', - method: 'get', - params: { approvalId } - }) + return request>( + { + url: 'approval/getApprovalGoodsCell', + method: 'get', + params: { approvalId } + } + ) +} + +export const getApprovalDetailAssetApi = (approvalId: number) => { + return request>( + { + url: 'approval/detail/asset', + method: 'get', + params: { approval_id: approvalId } + } + ) } /** 打开储物柜接口 */ diff --git a/src/common/apis/approval/type.ts b/src/common/apis/approval/type.ts index 8ea159e..983976d 100644 --- a/src/common/apis/approval/type.ts +++ b/src/common/apis/approval/type.ts @@ -94,7 +94,7 @@ export interface ReturnApprovalEntity { auditRemark: string /** 审批人姓名 */ auditName: string - /** 审批状态(1待审核 2已通过 3已驳回) */ + /** 审批状态(1待审核 2已通过 3已驳回 4开柜中) */ status: number /** 审批时间 */ approvalTime?: string @@ -134,6 +134,11 @@ export interface ReturnApprovalAssetDTO extends ReturnApprovalEntity { goodsList?: ApprovalGoodsEntity[]; } +export interface ReturnApprovalDetailDTO extends ReturnApprovalAssetDTO { + statusStr: string; + approvalGoodsCellList?: ApprovalGoodsCellEntity[]; +} + export interface SearchReturnApprovalAssetQuery { pageNum: number; pageSize: number; diff --git a/src/pages/approval/handleApply.vue b/src/pages/approval/handleApply.vue index 54a4bb4..1167172 100644 --- a/src/pages/approval/handleApply.vue +++ b/src/pages/approval/handleApply.vue @@ -2,14 +2,15 @@ import { ref, onMounted, computed } from 'vue' import { showConfirmDialog, showDialog, UploaderFileListItem, Popup, Picker, Field, Stepper } from 'vant' import axios from "axios" -import { getApprovalGoodsCellApi, handleApprovalApi, handleApprovalAssetApi, openCabinetApi } from '@/common/apis/approval' -import type { ApprovalGoodsCellEntity, ApprovalGoodsEntity, HandleApprovalAssetRequestData, HandleApprovalRequestData } from '@/common/apis/approval/type' +import { allocateApprovalGoods, getApprovalGoodsCellApi, handleApprovalApi, handleApprovalAssetApi, openCabinetApi } from '@/common/apis/approval' +import type { ApprovalGoodsCellEntity, ApprovalGoodsEntity, HandleApprovalAssetRequestData, HandleApprovalRequestData, ReturnApprovalDetailDTO } from '@/common/apis/approval/type' import { useRoute, useRouter } from 'vue-router' import { useApprovalStore } from '@/pinia/stores/approval' import { useWxStore } from '@/pinia/stores/wx'; +import { getApprovalDetailAssetApi } from '@/common/apis/approval'; import Compressor from 'compressorjs'; -import { useAb98UserStore } from '@/pinia/stores/ab98-user' -import { ShopOrderGoodsEntity } from '@/common/apis/shop/type' +import { useAb98UserStore } from '@/pinia/stores/ab98-user'; +import { ShopOrderGoodsEntity } from '@/common/apis/shop/type'; const { VITE_APP_BASE_API } = import.meta.env; const router = useRouter() @@ -20,6 +21,8 @@ const { openid, balance, corpidLogin, userid: qyUserid, name: qyName } = storeTo const ab98UserStore = useAb98UserStore(); const { tel, userid: ab98Userid, name } = storeToRefs(ab98UserStore); + +const detailData = ref(); const formData = ref({ approvalId: approvalStore.currentApproval?.approvalId || 0, status: 2, @@ -61,9 +64,9 @@ const validateForm = () => { showConfirmDialog({ title: '提示', message: '驳回时必须填写审核说明' }) return false } - + // 验证审批数量 - if (approvalStore.currentApproval?.status === 1) { + if (detailData.value?.status === 1) { for (const item of orderGoods.value) { if (item.approvalQuantity != null && item.approvalQuantity < 0) { showConfirmDialog({ title: '提示', message: `商品${item.goodsName}的审批数量不能为负数` }) @@ -104,51 +107,53 @@ const previewImage = (url: string) => { const approvalGoodsCells = ref([]); const approvalGoodsCellsWithNames = computed(() => { - return approvalGoodsCells.value.map(cell => { - const goods = orderGoods.value.find(g => g.approvalGoodsId === cell.approvalGoodsId); - return { - ...cell, - goodsName: goods ? goods.goodsName : '' - }; - }); + return approvalGoodsCells.value.map(cell => { + const goods = orderGoods.value.find(g => g.approvalGoodsId === cell.approvalGoodsId); + return { + ...cell, + goodsName: goods ? goods.goodsName : '' + }; + }); }); -onMounted(async () => { - if (!approvalStore.currentApproval) { +const fetchApprovalDetail = async () => { + const approvalId = approvalStore.currentApproval?.approvalId + if (!approvalId) { router.push('/approvalAsset/list'); return; } - // 初始化订单商品数据,添加approvalQuantity字段 - orderGoods.value = (approvalStore.currentApproval.goodsList || []).map(item => ({ - ...item, - approvalQuantity: approvalStore.currentApproval?.status === 1 ? item.applyQuantity : item.approvalQuantity - })); + try { + const result = await getApprovalDetailAssetApi(approvalId); + if (result.code === 0) { + detailData.value = result.data; + orderGoods.value = (result.data.goodsList || []).map(item => ({ + ...item, + approvalQuantity: result.data.status === 1 ? item.applyQuantity : item.approvalQuantity + })); - if (approvalStore.currentApproval.status !== 1) { - // 填充历史审批数据 - formData.value = { - ...formData.value, - corpid: wxStore.corpid, - status: approvalStore.currentApproval.status, - returnAmount: approvalStore.currentApproval.returnAmount, - auditRemark: approvalStore.currentApproval.auditRemark, - auditImages: approvalStore.currentApproval.auditImages - }; - - // 获取已审批商品格口信息 - try { - const result = await getApprovalGoodsCellApi(approvalStore.currentApproval.approvalId); - if (result.code === 0) { - approvalGoodsCells.value = result.data; - } else { - showDialog({ title: '错误', message: result.msg || '获取审批商品格口信息失败' }); + if (result.data.status !== 1) { + formData.value = { + ...formData.value, + corpid: wxStore.corpid, + status: result.data.status, + returnAmount: result.data.returnAmount, + auditRemark: result.data.auditRemark, + auditImages: result.data.auditImages + }; + approvalGoodsCells.value = result.data.approvalGoodsCellList || []; } - } catch (error) { - console.error('获取审批商品格口信息失败:', error); - showDialog({ title: '错误', message: '获取审批商品格口信息失败' }); + } else { + showDialog({ title: '错误', message: result.msg || '获取审批详情失败' }); } + } catch (error) { + console.error('获取审批详情失败:', error); + showDialog({ title: '错误', message: '获取审批详情失败' }); } +} + +onMounted(async () => { + await fetchApprovalDetail(); }) const handleOpenCell = async (approvalGoodsCellId: number) => { @@ -186,21 +191,6 @@ const handleOpenCell = async (approvalGoodsCellId: number) => { const handleSubmit = async () => { if (!validateForm()) return - // 构建approvalGoodsList - formData.value.approvalGoodsList = orderGoods.value.map(item => ({ - approvalGoodsId: item.approvalGoodsId || 0, - approvalId: formData.value.approvalId, - goodsId: item.goodsId, - goodsName: item.goodsName, - externalGoodsId: item.externalGoodsId, - corpid: item.corpid, - belongType: item.belongType, - price: item.price, - applyQuantity: item.applyQuantity, - approvalQuantity: item.approvalQuantity, - coverImg: item.coverImg - })) - submitting.value = true try { formData.value.userid = wxStore.userid; @@ -239,6 +229,53 @@ const handleComfirm = () => { handleSubmit(); } +const handleAllocateQuantity = async () => { + if (!validateForm()) return + + // 构建approvalGoodsList + formData.value.approvalGoodsList = orderGoods.value.map(item => ({ + approvalGoodsId: item.approvalGoodsId || 0, + approvalId: formData.value.approvalId, + goodsId: item.goodsId, + goodsName: item.goodsName, + externalGoodsId: item.externalGoodsId, + corpid: item.corpid, + belongType: item.belongType, + price: item.price, + applyQuantity: item.applyQuantity, + approvalQuantity: item.approvalQuantity, + coverImg: item.coverImg + })) + + submitting.value = true + try { + formData.value.userid = wxStore.userid; + formData.value.corpid = wxStore.corpid; + formData.value.auditUserid = wxStore.userid; + + const { code, msg } = await allocateApprovalGoods(formData.value) + + if (code === 0) { + showDialog({ message: '数量确定成功' }) + await fetchApprovalDetail(); + } else { + console.error('操作失败code:', code, 'msg:', msg) + showConfirmDialog({ + title: '操作失败', + message: msg || '数量确定失败' + }) + } + } catch (error) { + console.error('提交失败:', error) + showConfirmDialog({ + title: '提交失败', + message: error instanceof Error ? error.message : '网络请求异常' + }) + } finally { + submitting.value = false + } +} + const handleReject = () => { formData.value.status = 3; handleSubmit(); @@ -252,9 +289,8 @@ const handleReject = () => {
- - - + + @@ -277,26 +313,27 @@ const handleReject = () => {
-
+
审批数量: - +
-
+
审批数量: {{ item.approvalQuantity }}
+
+ + 确定审批数量 + +
-