From 0f8d5f4f7d4568855154c95381363abebf23885d Mon Sep 17 00:00:00 2001
From: Zones <765289303@qq.com>
Date: Thu, 11 Jun 2026 17:58:29 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8C=85=E8=A3=85=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
api/hj.js | 24 ++-
assets/css/page.scss | 136 ++++++++++++++++-
pages.json | 6 +
pipe/deliver/list.vue | 0
pipe/packaging/add.vue | 31 +++-
pipe/packaging/detail.vue | 309 +++++++++++++++++++++++++++++++++++++-
pipe/packaging/list.vue | 2 +-
7 files changed, 492 insertions(+), 16 deletions(-)
create mode 100644 pipe/deliver/list.vue
diff --git a/api/hj.js b/api/hj.js
index 3fdfa28..6c003b3 100644
--- a/api/hj.js
+++ b/api/hj.js
@@ -40,7 +40,7 @@ export const reqGetPointBatchDetail = (id) => get(`NDETrust/getPointBatchDetail?
/**
* 包装管理列表
*/
-export const reqPackagingInformationList = (data)=> get(`PackagingManage/GetPackagingInformationList?unitId=${data.unitId}&projectId=${data.projectId}&pageindex=${data.pageIndex}&pagesize=${data.pageSize}&packagingCode=${data.packagingCode}&hasTrainNumber=${data.hasTrainNumber}`)
+export const reqPackagingInformationList = (data={})=> get(`PackagingManage/GetPackagingInformationList?unitId=${data.unitId}&projectId=${data.projectId}&pageindex=${data.pageIndex}&pagesize=${data.pageSize}&packagingCode=${data.packagingCode}&hasTrainNumber=${data.hasTrainNumber}`)
/**
* 获取包装编号
*/
@@ -53,4 +53,24 @@ export const reqPackagingManage = ()=>get(`PackagingManage/GetPackagingCategorie
/**
* 保存包装
*/
-export const reqSavePackaging = (data)=> post(`PackagingManage/SavePackaging`, data)
\ No newline at end of file
+export const reqSavePackaging = (data)=> post(`PackagingManage/SavePackaging`, data)
+/**
+ * 请求包装详情
+ */
+export const reqPackagingInformationById = (params={})=>get(`PackagingManage/GetPackagingInformationById?projectId=${params.projectId||''}&personId=${params.personId||''}&packagingManageId=${params.packagingManageId||''}`)
+/**
+ * 请求预制组件详情
+ */
+export const reqPipelineComponentById = (params={})=>get(`/PipelineComponent/GetPipelineComponentById?projectId=${params.projectId}&personId=${params.personId}&PipelineComponentId=${params.PipelineComponentId}`)
+/**
+ * 添加预制组件到包装中
+ */
+export const reqSavePipelineComponentToPackaging = (params={})=>get(`/PackagingManage/SavePipelineComponentToPackaging?packagingManageId=${params.packagingManageId}&pipelineComponentId=${params.pipelineComponentId}`)
+/**
+ * 从预制组件中删除包装
+ */
+export const reqDeletePipelineComponentFromPackaging = (id)=>get(`/PackagingManage/DeletePipelineComponentFromPackaging?pipelineComponentId=${id}`)
+/**
+ * 包装确认到场
+ */
+export const reqPackingInfoConfirmArrival = (params={})=>get(`/PackagingManage/GetPackingInfoConfirmArrival?packagingManageId=${params.packagingManageId}&PersonId=${params.personId}`)
\ No newline at end of file
diff --git a/assets/css/page.scss b/assets/css/page.scss
index cac3593..36cc379 100644
--- a/assets/css/page.scss
+++ b/assets/css/page.scss
@@ -813,10 +813,145 @@
white-space: nowrap;
}
+ .card-tag {
+ display: inline-block;
+ padding: 6rpx 16rpx;
+ border-radius: 20rpx;
+ font-size: 24rpx;
+ background: rgba(153, 153, 153, 0.1);
+ color: #999;
+
+ &.status-0 {
+ background: rgba(153, 153, 153, 0.1);
+ color: #999;
+ }
+
+ &.status-1 {
+ background: rgba(255, 167, 38, 0.1);
+ color: #ffa726;
+ }
+
+ &.status-2 {
+ background: rgba(76, 175, 80, 0.1);
+ color: #4caf50;
+ }
+ }
+
.u-input {
flex: 1;
background: transparent;
}
+
+ &.info-link {
+ .info-value {
+ color: #999;
+ }
+
+ .scan-icon {
+ margin-left: auto;
+ }
+
+ &:active {
+ background: #f8f9fa;
+ }
+ }
+}
+
+// 预制组件列表
+.package-group {
+ margin: 24rpx;
+ background: #ffffff;
+ border-radius: 16rpx;
+ padding: 24rpx;
+
+ .section-title {
+ font-size: 30rpx;
+ font-weight: 600;
+ color: #333;
+ margin-bottom: 20rpx;
+
+ .section-count {
+ font-size: 26rpx;
+ color: #999;
+ font-weight: 400;
+ margin-left: 8rpx;
+ }
+ }
+
+ .package-card {
+ background: linear-gradient(135deg, #f8f9fa 0%, #f0f1f3 100%);
+ border-radius: 12rpx;
+ padding: 20rpx;
+ margin-bottom: 16rpx;
+ box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.06);
+ border: 1rpx solid #e8e9eb;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+
+ .card-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding-bottom: 16rpx;
+ border-bottom: 1rpx dashed #d0d0d0;
+
+ .card-title {
+ font-size: 28rpx;
+ font-weight: 600;
+ color: #333;
+ flex: 1;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+
+ .del-btn {
+ width: 50rpx;
+ height: 50rpx;
+ background: linear-gradient(135deg, #ff6b6b, #ff4d4f);
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-shadow: 0 4rpx 16rpx rgba(255, 77, 79, 0.4);
+ border: 2rpx solid rgba(255, 255, 255, 0.3);
+ flex-shrink: 0;
+ margin-left: 16rpx;
+
+ &:active {
+ transform: scale(0.9);
+ box-shadow: 0 2rpx 8rpx rgba(255, 77, 79, 0.3);
+ }
+ }
+ }
+
+ .card-body {
+ padding-top: 16rpx;
+
+ .card-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 10rpx 0;
+
+ .row-label {
+ font-size: 24rpx;
+ color: #999;
+ }
+
+ .row-value {
+ font-size: 26rpx;
+ color: #333;
+ max-width: 60%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ }
+ }
+ }
}
// 底部按钮
@@ -837,7 +972,6 @@
flex: 1;
margin: 0;
}
-
}
// 网格页面(试压管理等)
diff --git a/pages.json b/pages.json
index 38d54b6..691f250 100644
--- a/pages.json
+++ b/pages.json
@@ -73,6 +73,12 @@
"style": {
"navigationBarTitleText": "包装管理"
}
+ },
+ {
+ "path": "deliver/list",
+ "style": {
+ "navigationBarTitleText": "发货管理"
+ }
}
]
}
diff --git a/pipe/deliver/list.vue b/pipe/deliver/list.vue
new file mode 100644
index 0000000..e69de29
diff --git a/pipe/packaging/add.vue b/pipe/packaging/add.vue
index 790d3f6..2cb186e 100644
--- a/pipe/packaging/add.vue
+++ b/pipe/packaging/add.vue
@@ -16,18 +16,19 @@
*包装分类
-
+
- 保存
+ 保存
-
+
@@ -68,7 +69,10 @@
// ===== 弹窗 =====
const showCategory = ref(false)
const categoryList = ref([])
- const selectedCategory = ref({ label: '', value: '' })
+ const selectedCategory = ref({
+ label: '',
+ value: ''
+ })
// ===== 选择事件 =====
const handleShowCategory = () => {
@@ -93,7 +97,10 @@
const getCategoryList = async () => {
try {
const res = await reqPackagingManage()
- categoryList.value = Object.entries(res.data || {}).map(([label, value]) => ({ label, value }))
+ categoryList.value = Object.entries(res.data || {}).map(([label, value]) => ({
+ label,
+ value
+ }))
// 设置默认值为第一个
if (categoryList.value.length > 0 && !form.value.CategoryName) {
form.value.CategoryName = categoryList.value[0].label
@@ -106,6 +113,14 @@
// ===== 保存 =====
const handleSave = async () => {
+
+ setTimeout(() => {
+ uni.redirectTo({
+ url: '/pipe/packaging/detail?id' + res.data.id
+ })
+ }, 1500)
+ return
+
if (!form.value.StackingPosition) {
uni.showToast({
title: '请输入预制工作包',
@@ -138,7 +153,7 @@
})
setTimeout(() => {
uni.redirectTo({
- url: '/pipe/packaging/detail?id'+res.data.id
+ url: '/pipe/packaging/detail?id' + res.data.id
})
}, 1500)
}
@@ -166,4 +181,4 @@
getPackagingNo()
getCategoryList()
})
-
+
\ No newline at end of file
diff --git a/pipe/packaging/detail.vue b/pipe/packaging/detail.vue
index 02409e3..cecb599 100644
--- a/pipe/packaging/detail.vue
+++ b/pipe/packaging/detail.vue
@@ -1,8 +1,309 @@
+
+
+
+
+ 包装编号
+ {{ info.PackagingCode || '--' }}
+
+
+ 预制工作包
+ {{ info.StackingPosition || '--' }}
+
+
+ 到场状态
+ {{ getStatus(info.State) }}
+
+
+ 签收人
+ {{ info.ReceiveMan || '--' }}
+
+
+ 签收时间
+ {{ info.ReceiveDate || '--' }}
+
+
+ 车次
+ {{ info.TrainNumber || '--' }}
+
+
+ 扫码添加
+
+
+
+
+
+
+
+
+
+ 预制组件
+ ({{ packages.length }})
+
+
+
+
+
+ 数量/单位
+ {{ item.PreUnit || '--' }}
+
+
+ 所属主项
+ {{ item.UnitWorkName || '--' }}
+
+
+
+
+
+
+
+ 确定到场
+
+
+ 确定
+
+
-
+
\ No newline at end of file
diff --git a/pipe/packaging/list.vue b/pipe/packaging/list.vue
index 8f9794d..324424d 100644
--- a/pipe/packaging/list.vue
+++ b/pipe/packaging/list.vue
@@ -233,7 +233,7 @@ n
// 列表项点击
const handleItemClick = (item) => {
uni.navigateTo({
- url: `/pipe/packaging/detail?id=${item.PackagingManageId}`
+ url: `/pipe/packaging/detail?id=${item.PackagingManageId}&from=1`
})
}