fix(approval): 修复审批列表和详情页的显示问题及错误提示

- 在审批列表中添加申领人信息显示
- 统一使用showDialog替换showToast和showFailToast进行错误提示
- 修复审批数量初始化逻辑,根据状态设置默认值
- 优化审批详情页的样式和布局
- 修正操作成功后的跳转路径
This commit is contained in:
dzq 2025-06-16 11:12:42 +08:00
parent 50715f07b8
commit 1914dacfe5
2 changed files with 33 additions and 22 deletions

View File

@ -1,6 +1,6 @@
<script setup lang="ts">
import { ref, onMounted, computed } from 'vue'
import { showConfirmDialog, showSuccessToast, showFailToast, showToast, UploaderFileListItem, Popup, Picker, Field, Stepper } from 'vant'
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'
@ -122,7 +122,7 @@ onMounted(async () => {
// approvalQuantity
orderGoods.value = (approvalStore.currentApproval.goodsList || []).map(item => ({
...item,
approvalQuantity: item.approvalQuantity || item.applyQuantity
approvalQuantity: approvalStore.currentApproval?.status === 1 ? item.applyQuantity : item.approvalQuantity
}));
if (approvalStore.currentApproval.status !== 1) {
@ -142,18 +142,18 @@ onMounted(async () => {
if (result.code === 0) {
approvalGoodsCells.value = result.data;
} else {
showFailToast(result.msg || '获取审批商品格口信息失败');
showDialog({ title: '错误', message: result.msg || '获取审批商品格口信息失败' });
}
} catch (error) {
console.error('获取审批商品格口信息失败:', error);
showFailToast('获取审批商品格口信息失败');
showDialog({ title: '错误', message: '获取审批商品格口信息失败' });
}
}
})
const handleOpenCell = async (approvalGoodsCellId: number) => {
if (!approvalGoodsCellId) {
showFailToast('缺少格口信息');
showDialog({ title: '错误', message: '缺少格口信息' });
return;
}
@ -170,12 +170,12 @@ const handleOpenCell = async (approvalGoodsCellId: number) => {
const result = await openCabinetApi(approvalGoodsCellId, data);
if (result.code !== 0) {
showFailToast(result.msg || '开启格口失败');
showDialog({ title: '错误', message: result.msg || '开启格口失败' });
return;
}
showSuccessToast('格口已开启');
showDialog({ message: '格口已开启' });
} catch (error) {
showFailToast('请求失败');
showDialog({ title: '错误', message: '请求失败' });
} finally {
setTimeout(() => {
isButtonDisabled.value = false;
@ -210,12 +210,12 @@ const handleSubmit = async () => {
const { code, msg } = await handleApprovalAssetApi(formData.value)
if (code === 0) {
showSuccessToast('操作成功')
showDialog({ message: '操作成功' })
await showConfirmDialog({
title: "操作成功",
message: `审批处理已完成`
})
router.push('/approval/list')
router.push('/approvalAsset/list')
} else {
console.error('操作失败code:', code, 'msg:', msg)
showConfirmDialog({
@ -288,7 +288,7 @@ const handleReject = () => {
/>
</div>
<!-- 查看审批数量 -->
<div v-else class="approval-quantity-view">
<div v-if="approvalStore.currentApproval?.status === 2" class="approval-quantity-view">
<span class="label">审批数量:</span>
<span class="value">{{ item.approvalQuantity }}</span>
</div>
@ -305,13 +305,13 @@ const handleReject = () => {
<div class="product-name van-ellipsis">
{{ item.goodsName }}
</div>
<div class="product-name van-ellipsis">
<div class="van-ellipsis">
{{ item.shopName }}
</div>
<div class="product-name van-ellipsis">
<div class="van-ellipsis">
{{ item.cabinetName }} - 格口{{ item.cellNo }}
</div>
<div class="product-name van-ellipsis">
<div class="van-ellipsis">
分配数量{{ item.allocateQuantity }}
</div>
<div class="open-cell-btn">
@ -384,6 +384,12 @@ const handleReject = () => {
justify-content: space-between;
height: auto;
padding: 5px 0;
.product-name {
font-size: 14px;
color: #333;
font-weight: 500;
}
}
.approval-quantity,
@ -399,7 +405,11 @@ const handleReject = () => {
}
.approval-quantity-view .value {
font-weight: bold;
/* font-weight: bold; */
}
.approval-quantity-view {
justify-content: flex-end;
}
.price-row {
display: flex;
@ -415,8 +425,8 @@ const handleReject = () => {
.quantity {
color: #666;
margin-right: 20px;
font-size: 13px;
/* margin-right: 20px;
font-size: 13px; */
}
.upload-section {
@ -460,7 +470,7 @@ const handleReject = () => {
}
.audit-remark-field::v-deep .van-field__control {
background-color: #fffbe6;
background-color: #ecf3fc;
padding: 8px;
border-radius: 4px;
}

View File

@ -44,6 +44,7 @@
<div v-for="goods in item.goodsList" :key="goods.approvalGoodsId">
商品名称{{ goods.goodsName }}
</div>
<div>申领人{{ item.applyUserName }}</div>
<div>核销码{{ item.code }}</div>
<div>申请时间{{ item.createTime }}</div>
<van-tag :type="statusTagType(item.status)">
@ -57,7 +58,7 @@
<script lang="ts" setup>
import { ref, reactive } from 'vue'
import { showToast } from 'vant'
import { showDialog, showToast } from 'vant'
import { checkApprovalCodeApi, getApprovalAssetListApi } from '@/common/apis/approval'
import type { SearchReturnApprovalAssetQuery, ReturnApprovalAssetDTO } from '@/common/apis/approval/type'
import type { PickerConfirmEventParams } from 'vant/es';
@ -119,7 +120,7 @@ const handleCellClick = (approvalId: number) => {
//
const handleVerification = async () => {
if (!verificationCode.value) {
showToast('请输入核销码')
showDialog({ message: '请输入核销码' })
return
}
try {
@ -129,14 +130,14 @@ const handleVerification = async () => {
code: verificationCode.value
}
await checkApprovalCodeApi(params)
showToast('核销成功')
showDialog({ message: '核销成功' })
showVerificationDialog.value = false
verificationCode.value = ''
//
handleSearch()
} catch (error) {
console.error('核销失败', error)
showToast('核销失败,请重试')
showDialog({ message: '核销失败' })
}
}