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

View File

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