223 lines
4.9 KiB
Vue
223 lines
4.9 KiB
Vue
<template>
|
||
<uni-popup ref="popup" type="center" :safe-area="true">
|
||
<view class="popup-container">
|
||
<view class="popup-header">
|
||
<text class="popup-title">重贴标签</text>
|
||
<text class="popup-close" @click="close">✕</text>
|
||
</view>
|
||
|
||
<view class="popup-content">
|
||
<!-- 钢卷信息展示 -->
|
||
<view class="coil-info">
|
||
<view class="info-row">
|
||
<text class="label">入场钢卷号:</text>
|
||
<text class="value">{{ coilInfo.enterCoilNo || '-' }}</text>
|
||
</view>
|
||
<view class="info-row">
|
||
<text class="label">当前钢卷号:</text>
|
||
<text class="value highlight">{{ coilInfo.currentCoilNo || '-' }}</text>
|
||
</view>
|
||
<view class="info-row">
|
||
<text class="label">产品名称:</text>
|
||
<text class="value">{{ coilInfo.itemName || '-' }}</text>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 操作人信息 -->
|
||
<view class="operator-info">
|
||
<text class="label">操作人:</text>
|
||
<text class="value">{{ operatorName }}</text>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="popup-footer">
|
||
<button class="btn btn-cancel" @click="close">取消</button>
|
||
<button class="btn btn-confirm" @click="handleConfirm" :disabled="loading">
|
||
{{ loading ? '提交中...' : '确认重贴' }}
|
||
</button>
|
||
</view>
|
||
</view>
|
||
</uni-popup>
|
||
</template>
|
||
|
||
<script>
|
||
import { relabelCoil, completeTodoAction } from '@/api/wms/todo'
|
||
|
||
export default {
|
||
name: 'RelabelPopup',
|
||
data() {
|
||
return {
|
||
loading: false,
|
||
coilInfo: {}
|
||
}
|
||
},
|
||
computed: {
|
||
operatorName() {
|
||
return this.$store.state.user.nickName || this.$store.state.user.name || '未知'
|
||
}
|
||
},
|
||
methods: {
|
||
open(coilInfo) {
|
||
this.coilInfo = coilInfo
|
||
this.$refs.popup.open()
|
||
},
|
||
close() {
|
||
this.$refs.popup.close()
|
||
},
|
||
async handleConfirm() {
|
||
this.loading = true
|
||
try {
|
||
// 1. 提交重贴标签操作
|
||
await relabelCoil({
|
||
coilId: this.coilInfo.coilId,
|
||
currentCoilNo: this.coilInfo.currentCoilNo,
|
||
operator: this.operatorName,
|
||
operateTime: new Date().toISOString()
|
||
})
|
||
|
||
// 2. 完成待办操作
|
||
if (this.coilInfo.actionId) {
|
||
await completeTodoAction(this.coilInfo.actionId)
|
||
}
|
||
|
||
uni.showToast({
|
||
title: '重贴标签成功',
|
||
icon: 'success'
|
||
})
|
||
|
||
this.close()
|
||
this.$emit('success')
|
||
} catch (error) {
|
||
console.error('重贴标签失败:', error)
|
||
uni.showToast({
|
||
title: '操作失败,请重试',
|
||
icon: 'none'
|
||
})
|
||
} finally {
|
||
this.loading = false
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
.popup-container {
|
||
background: #ffffff;
|
||
border-radius: 16rpx;
|
||
width: 80vw;
|
||
max-width: 600rpx;
|
||
overflow: hidden;
|
||
|
||
.popup-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
padding: 30rpx;
|
||
border-bottom: 1rpx solid #f0f0f0;
|
||
|
||
.popup-title {
|
||
font-size: 32rpx;
|
||
font-weight: 600;
|
||
color: #333333;
|
||
}
|
||
|
||
.popup-close {
|
||
font-size: 36rpx;
|
||
color: #999999;
|
||
padding: 10rpx;
|
||
}
|
||
}
|
||
|
||
.popup-content {
|
||
padding: 30rpx;
|
||
|
||
.coil-info {
|
||
background: #f8f8f8;
|
||
border-radius: 12rpx;
|
||
padding: 24rpx;
|
||
margin-bottom: 30rpx;
|
||
|
||
.info-row {
|
||
display: flex;
|
||
margin-bottom: 16rpx;
|
||
|
||
&:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.label {
|
||
font-size: 26rpx;
|
||
color: #666666;
|
||
width: 160rpx;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.value {
|
||
font-size: 26rpx;
|
||
color: #333333;
|
||
flex: 1;
|
||
|
||
&.highlight {
|
||
color: #1a73e8;
|
||
font-weight: 500;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.operator-info {
|
||
display: flex;
|
||
align-items: center;
|
||
padding-top: 20rpx;
|
||
border-top: 1rpx solid #f0f0f0;
|
||
|
||
.label {
|
||
font-size: 26rpx;
|
||
color: #666666;
|
||
}
|
||
|
||
.value {
|
||
font-size: 26rpx;
|
||
color: #333333;
|
||
font-weight: 500;
|
||
}
|
||
}
|
||
}
|
||
|
||
.popup-footer {
|
||
display: flex;
|
||
padding: 20rpx 30rpx 40rpx;
|
||
gap: 20rpx;
|
||
|
||
.btn {
|
||
flex: 1;
|
||
height: 88rpx;
|
||
line-height: 88rpx;
|
||
text-align: center;
|
||
border-radius: 8rpx;
|
||
font-size: 30rpx;
|
||
border: none;
|
||
|
||
&::after {
|
||
border: none;
|
||
}
|
||
|
||
&.btn-cancel {
|
||
background: #f5f5f5;
|
||
color: #666666;
|
||
}
|
||
|
||
&.btn-confirm {
|
||
background: #1a73e8;
|
||
color: #ffffff;
|
||
|
||
&:disabled {
|
||
opacity: 0.6;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</style>
|