Jelajahi Sumber

景聚庭-商品管理新版细节完善

huangguoce 1 bulan lalu
induk
melakukan
c9a686e1f7

+ 53 - 17
pages/psiManagement/collect/CollectForm.vue

@@ -41,33 +41,39 @@
                     </u-form-item> -->
 					<collect-goods-selector ref="goodsSelect" :rowIndex="index" :inputForm="inputForm"
 						:disabled="nodeFlag" @selected="handleGoodsSelected"></collect-goods-selector>
-					<u-form-item label="领用数量" :prop="'detailInfos[' + index + '].collectNumber'" :required="true">
+					<u-form-item label="领用数量" :prop="'detailInfos[' + index + '].collectNumber'" :required="true" labelWidth="68px">
 						<u--input v-model="inputForm.detailInfos[index].collectNumber" placeholder="请输入领用数量"
 							:disabled="nodeFlag" @blur="handleCollectNumberBlur(index)"></u--input>
 					</u-form-item>
-					<u-form-item label="库存数量" :prop="'detailInfos[' + index + '].kc'">
-						<u--input v-model="inputForm.detailInfos[index].kc" disabled></u--input>
-					</u-form-item>
-					<u-form-item label="品牌" :prop="'detailInfos[' + index + '].brand'">
-						<u--input v-model="inputForm.detailInfos[index].brand" disabled></u--input>
-					</u-form-item>
-					<u-form-item label="规格" :prop="'detailInfos[' + index + '].specification'">
-						<u--input v-model="inputForm.detailInfos[index].specification" disabled></u--input>
-					</u-form-item>
-					<u-form-item label="单位" :prop="'detailInfos[' + index + '].company'">
-						<u--input v-model="inputForm.detailInfos[index].company" placeholder="请输入单位"
-							:disabled="true"></u--input>
-					</u-form-item>
+					<view class="detail-info-grid">
+						<u-form-item class="detail-info-cell" label="库存" labelWidth="44px"
+							:prop="'detailInfos[' + index + '].kc'">
+							<u--input v-model="inputForm.detailInfos[index].kc" disabled></u--input>
+						</u-form-item>
+						<u-form-item class="detail-info-cell" label="品牌" labelWidth="44px"
+							:prop="'detailInfos[' + index + '].brand'">
+							<u--input v-model="inputForm.detailInfos[index].brand" disabled></u--input>
+						</u-form-item>
+						<u-form-item class="detail-info-cell" label="规格" labelWidth="44px"
+							:prop="'detailInfos[' + index + '].specification'">
+							<u--input v-model="inputForm.detailInfos[index].specification" disabled></u--input>
+						</u-form-item>
+						<u-form-item class="detail-info-cell" label="单位" labelWidth="44px"
+							:prop="'detailInfos[' + index + '].company'">
+							<u--input v-model="inputForm.detailInfos[index].company" placeholder=""
+								:disabled="true"></u--input>
+						</u-form-item>
+					</view>
 					<!-- <u-form-item label="包装规格" :prop="'detailInfos[' + index + '].spec'">
                         <u--input v-model="inputForm.detailInfos[index].spec" disabled></u--input>
                     </u-form-item> -->
 
 
-					<u-form-item label="备注" :prop="'detailInfos[' + index + '].remarks'">
+					<u-form-item label="备注" :prop="'detailInfos[' + index + '].remarks'" labelWidth="44px">
 						<u--input v-model="inputForm.detailInfos[index].remarks" placeholder="请输入备注"
 							:disabled="nodeFlag"></u--input>
 					</u-form-item>
-					<u-form-item label="附件上传">
+					<u-form-item label="附件上传" v-if="false">
 						<UploadComponent :uploadUrl="`${uploadUrl}/public-modules-server/oss/file/webUpload/upload`"
 							@onRemove="(file, fileList, fileIndex) => handleRemove(file, fileList, index, fileIndex, 'detail')"
 							@onSuccess="(file, fileList) => handleUploadSuccess(file, fileList, index, 'detail')"
@@ -506,10 +512,21 @@
 				item
 			}) {
 				const goodsName = item.tradeName || item.name || ''
+				const goodsId = item.id || ''
+				const exists = (this.inputForm.detailInfos || []).some((detail, detailIndex) => {
+					return String(detailIndex) !== String(index) && String(detail.collectTypeId) === String(goodsId)
+				})
+				if (exists) {
+					uni.showToast({
+						title: '同种商品只能选择一次',
+						icon: 'none'
+					})
+					return
+				}
 				const stock = item.currentInventory || item.surplusNumber || ''
 				this.patchDetail(index, {
 					collectType: goodsName,
-					collectTypeId: item.id || '',
+					collectTypeId: goodsId,
 					goodsName,
 					brand: item.brand || '',
 					specification: item.specification || '',
@@ -852,4 +869,23 @@
 		font-weight: 600;
 		color: #0f172a;
 	}
+
+	.detail-info-grid {
+		display: grid;
+		grid-template-columns: repeat(2, minmax(0, 1fr));
+		column-gap: 16rpx;
+		row-gap: 4rpx;
+	}
+
+	.detail-info-cell {
+		min-width: 0;
+	}
+
+	.detail-info-cell ::v-deep .u-form-item__body {
+		padding: 8rpx 0;
+	}
+
+	.detail-info-cell ::v-deep .u-form-item__body__right {
+		min-width: 0;
+	}
 </style>

+ 1 - 1
pages/psiManagement/collect/CollectGoodsSelector.vue

@@ -1,6 +1,6 @@
 <template>
     <view>
-        <u-form-item label="物品名称" :prop="'detailInfos[' + rowIndex + '].goodsName'" :required="true">
+        <u-form-item label="物品名称" :prop="'detailInfos[' + rowIndex + '].goodsName'" :required="true" labelWidth="68px">
             <u--input :value="currentValue" placeholder="请选择物品名称" :disabled="disabled" @focus="openPicker"></u--input>
         </u-form-item>
 

+ 19 - 4
pages/psiManagement/purchase/PurchaseForm.vue

@@ -101,7 +101,7 @@
                         <u--input v-model="inputForm.detailInfos[index_experience].remarks" placeholder="请输入备注"
                             clearable></u--input>
                     </u-form-item>
-                    <u-form-item label="文件上传">
+                    <u-form-item label="文件上传" v-if="false">
                         <!-- <el-upload class="upload-demo"
                             :action="`http://cpaoa.xgccpm.com/api/public-modules-server/oss/file/webUpload/upload`"
                             :on-remove="(file, fileList) => handleRemove(file, fileList, index_experience, 'detail')"
@@ -138,7 +138,7 @@
                 <el-button style="width: 100%" type="primary" @click="addRow()" plain>新增采购详情</el-button>
             </u-form-item>
 
-            <u-form-item label="附件">
+            <u-form-item label="附件" v-if="false">
                 <!-- <el-upload class="upload-demo"
                     :action="`http://cpaoa.xgccpm.com/api/public-modules-server/oss/file/webUpload/upload`"
                     :on-remove="(file, fileList) => handleRemove(file, fileList, '', '')" :file-list="inputForm.files"
@@ -258,7 +258,7 @@
                         <el-input v-model="inputForm.detailInfos[index_experience].remarks" :disabled="true"
                             placeholder="请输入备注" clearable></el-input>
                     </u-form-item>
-                    <u-form-item label="文件上传">
+                    <u-form-item label="文件上传" v-if="false">
                         <!-- <el-upload :disabled="true" class="upload-demo"
                             :action="`http://cpaoa.xgccpm.com/api/public-modules-server/oss/file/webUpload/upload`"
                             :on-remove="(file, fileList) => handleRemove(file, fileList, index_experience, 'detail')"
@@ -295,7 +295,7 @@
                     plain>新增采购详情</el-button>
             </u-form-item>
 
-            <u-form-item label="附件">
+            <u-form-item label="附件" v-if="false">
                 <!-- <el-upload :disabled="true" class="upload-demo"
                     :action="`http://cpaoa.xgccpm.com/api/public-modules-server/oss/file/webUpload/upload`"
                     :on-remove="(file, fileList) => handleRemove(file, fileList, '', '')" :file-list="inputForm.files"
@@ -504,6 +504,21 @@ export default {
         },
         handleGoodsSelected({ index, item }) {
             const tradeName = item.tradeName || item.name || ''
+            const categoryId = this.inputForm.detailInfos[index] && this.inputForm.detailInfos[index].procurementTypeId
+            const exists = this.inputForm.detailInfos.some((detail, detailIndex) => {
+                if (String(detailIndex) === String(index)) {
+                    return false
+                }
+                return String(detail.procurementTypeId || '') === String(categoryId || '') &&
+                    String(detail.tradeName || '') === String(tradeName || '')
+            })
+            if (exists) {
+                uni.showToast({
+                    title: '同种商品只能选择一次',
+                    icon: 'none'
+                })
+                return
+            }
             this.$set(this.inputForm.detailInfos, index, {
                 ...this.inputForm.detailInfos[index],
                 tradeName,

+ 29 - 11
pages/psiManagement/wareHouse/WareHouseAddForm.vue

@@ -103,21 +103,22 @@
                     </u-form-item> -->
                     <ware-house-goods-selector :rowIndex="index" :inputForm="inputForm" :disabled="nodeFlag"
                         @selected="handleGoodsSelected"></ware-house-goods-selector>
+						<u-form-item label="入库数量" :prop="'wareHouse[' + index + '].tradeNumber'" :required="true"  labelWidth="68px">
+						    <u--input v-model="inputForm.wareHouse[index].tradeNumber" placeholder="请输入商品数量"
+						        :disabled="nodeFlag" @blur="onRowInputBlur(index, 'tradeNumber')"></u--input>
+						</u-form-item>
 
-                    <u-form-item label="品牌" :prop="'wareHouse[' + index + '].brand'">
+                    <u-form-item label="品牌" :prop="'wareHouse[' + index + '].brand'" labelWidth="44px">
                         <u--input v-model="inputForm.wareHouse[index].brand" disabled></u--input>
                     </u-form-item>
-                    <u-form-item label="规格" :prop="'wareHouse[' + index + '].specification'">
+                    <u-form-item label="规格" :prop="'wareHouse[' + index + '].specification'"  labelWidth="44px">
                         <u--input v-model="inputForm.wareHouse[index].specification" disabled></u--input>
                     </u-form-item>
-					<u-form-item label="单位" :prop="'wareHouse[' + index + '].company'">
-					    <u--input v-model="inputForm.wareHouse[index].company" placeholder="请输入单位" disabled
+					<u-form-item label="单位" :prop="'wareHouse[' + index + '].company'"  labelWidth="44px">
+					    <u--input v-model="inputForm.wareHouse[index].company" placeholder="" disabled
 					        @blur="calculateWareHouseTotals"></u--input>
 					</u-form-item>
-                    <u-form-item label="入库数量" :prop="'wareHouse[' + index + '].tradeNumber'" :required="true">
-                        <u--input v-model="inputForm.wareHouse[index].tradeNumber" placeholder="请输入商品数量"
-                            :disabled="nodeFlag" @blur="onRowInputBlur(index, 'tradeNumber')"></u--input>
-                    </u-form-item>
+         
 
                     <!-- <u-form-item label="包装规格" :prop="'wareHouse[' + index + '].spec'" :required="true">
                         <u--input v-model="inputForm.wareHouse[index].spec" placeholder="请输入包装规格" :disabled="nodeFlag"
@@ -151,11 +152,11 @@
                         <u--input v-model="inputForm.wareHouse[index].actualPrice" placeholder="请输入实际价格"
                             :disabled="nodeFlag" @blur="onRowInputBlur(index, 'actualPrice')"></u--input>
                     </u-form-item> -->
-                    <u-form-item label="备注" :prop="'wareHouse[' + index + '].remarks'">
+                    <u-form-item label="备注" :prop="'wareHouse[' + index + '].remarks'" labelWidth="44px">
                         <u--input v-model="inputForm.wareHouse[index].remarks" placeholder="请输入备注" :disabled="nodeFlag">
                         </u--input>
                     </u-form-item>
-                    <u-form-item label="附件上传">
+                    <u-form-item label="附件上传" v-if="false">
                         <UploadComponent :uploadUrl="`${uploadUrl}/public-modules-server/oss/file/webUpload/upload`"
                             @onRemove="(file, fileList, fileIndex) => handleRemove(file, fileList, index, fileIndex, 'detail')"
                             @onSuccess="(file, fileList) => handleUploadSuccess(file, fileList, index, 'detail')"
@@ -176,7 +177,7 @@
                 </u-form-item>
             </view>
 
-            <u-form-item label="附件">
+            <u-form-item label="附件" v-if="false">
                 <UploadComponent :uploadUrl="`${uploadUrl}/public-modules-server/oss/file/webUpload/upload`"
                     @onRemove="(file, fileList, fileIndex) => handleRemove(file, fileList, '', fileIndex, '')"
                     @onSuccess="(file, fileList) => handleUploadSuccess(file, fileList, '', '')"
@@ -513,6 +514,23 @@ export default {
         },
         handleGoodsSelected({ index, item }) {
             const tradeName = item.tradeName || item.name || ''
+            const goodsId = item.id || ''
+            const exists = this.inputForm.wareHouse.some((detail, detailIndex) => {
+                if (String(detailIndex) === String(index)) {
+                    return false
+                }
+                if (goodsId) {
+                    return String(detail.wareHouseTypeId || '') === String(goodsId)
+                }
+                return String(detail.tradeName || '') === String(tradeName || '')
+            })
+            if (exists) {
+                uni.showToast({
+                    title: '同种商品只能选择一次',
+                    icon: 'none'
+                })
+                return
+            }
             this.patchWareHouseRow(index, {
                 wareHouseType: tradeName,
                 wareHouseTypeId: item.id || '',

+ 1 - 1
pages/psiManagement/wareHouse/WareHouseGoodsSelector.vue

@@ -1,6 +1,6 @@
 <template>
     <view>
-        <u-form-item label="物品名称" :prop="'wareHouse[' + rowIndex + '].tradeName'" :required="true">
+        <u-form-item label="物品名称" :prop="'wareHouse[' + rowIndex + '].tradeName'" :required="true" labelWidth="68px">
             <u--input :value="currentValue" placeholder="请选择物品名称" :disabled="disabled" @focus="openPicker"></u--input>
         </u-form-item>
 

File diff ditekan karena terlalu besar
+ 1026 - 994
pages/psiManagement/wareHouse/WareHouseUpdateForm.vue


+ 2 - 2
pages/psiManagement/wareHouseSummary/WareHouseSummaryList.vue

@@ -52,7 +52,7 @@
                 <el-table-column prop="lossNumber" label="累计报损量" width="110" align="center">
                     <template slot-scope="scope">{{ calcLossNumber(scope.row) }}</template>
                 </el-table-column>
-                <el-table-column prop="warnNum" label="库存提醒数量" width="130" align="center">
+              <!--  <el-table-column prop="warnNum" label="库存提醒数量" width="130" align="center">
                     <template slot-scope="scope">
                         <el-input v-model="scope.row.warnNum" size="mini" @blur="changeWarnNum(scope.row)"></el-input>
                     </template>
@@ -63,7 +63,7 @@
                             @change="updateWarnFlag(scope.row)">
                         </el-switch>
                     </template>
-                </el-table-column>
+                </el-table-column> -->
 				  <!--  <el-table-column label="操作" width="90" align="center" fixed="right">
 						<template slot-scope="scope">
 							<el-button type="text" size="mini" @click="edit(scope.row)">修改</el-button>