فهرست منبع

景聚庭-代码恢复

huangguoce 1 روز پیش
والد
کامیت
43e2fa1673
26فایلهای تغییر یافته به همراه1204 افزوده شده و 1489 حذف شده
  1. 3 43
      src/views/flowable/task/TaskForm.vue
  2. 0 44
      src/views/flowable/task/TaskFormDetail.vue
  3. 551 547
      src/views/materialManagement/collect/UpdateCollectInfoForm.vue
  4. 1 1
      src/views/materialManagement/wareHouse/WareHouseAddForm.vue
  5. 79 118
      src/views/psiManagement/collect/CollectForm.vue
  6. 55 39
      src/views/psiManagement/collect/CollectReturnForm.vue
  7. 29 38
      src/views/psiManagement/collect/CollectReturnHiForm.vue
  8. 24 38
      src/views/psiManagement/collect/UpdateCollectInfoForm.vue
  9. 1 2
      src/views/psiManagement/contract/ContractForm.vue
  10. 1 2
      src/views/psiManagement/contract/UpdateContractInfoForm.vue
  11. 4 24
      src/views/psiManagement/info/MaterialTypePullForm.vue
  12. 0 1
      src/views/psiManagement/info/MaterialTypePullFormByOption.vue
  13. 3 3
      src/views/psiManagement/info/UpdateInfoForm.vue
  14. 73 106
      src/views/psiManagement/loss/LossForm.vue
  15. 2 6
      src/views/psiManagement/loss/PurchasePageForm.vue
  16. 55 84
      src/views/psiManagement/materialType/TypeForm.vue
  17. 5 18
      src/views/psiManagement/materialType/TypeList.vue
  18. 54 75
      src/views/psiManagement/purchase/PurchaseForm.vue
  19. 2 1
      src/views/psiManagement/purchase/PurchaseList.vue
  20. 1 1
      src/views/psiManagement/supplier/SupplierForm.vue
  21. 123 112
      src/views/psiManagement/wareHouse/WareHouseAddForm.vue
  22. 16 22
      src/views/psiManagement/wareHouse/WareHouseHi.vue
  23. 1 1
      src/views/psiManagement/wareHouse/WareHouseList.vue
  24. 93 126
      src/views/psiManagement/wareHouse/WareHouseUpdateForm.vue
  25. 13 15
      src/views/psiManagement/wareHouseSummary/WareHouseHistory.vue
  26. 15 22
      src/views/psiManagement/wareHouseSummary/WareHouseSummaryList.vue

+ 3 - 43
src/views/flowable/task/TaskForm.vue

@@ -60,37 +60,6 @@
 					</vxe-column>
 				</vxe-table>
 			</el-tab-pane>
-			<el-tab-pane label="入库修改历史" v-if="psiWareHouseId" name="form-psi-edit">
-				<vxe-table border="inner" size="mini" max-height="1000px" :data="dataListHi">
-					<vxe-column type="seq" width="60" title="序号"></vxe-column>
-					<!-- <vxe-column min-width="120" align="center" title="修改类型" field="updateTradeType">
-						<template #default="scope">
-							<span v-if="commonJS.isNotEmpty(scope.row.updateTradeType)"> {{ scope.row.updateTradeType }}
-							</span>
-							<span v-else> -- </span>
-						</template>
-					</vxe-column> -->
-					<vxe-column min-width="160" align="center" title="修改商品" field="updateTradeName">
-						<template #default="scope">
-							<span v-if="commonJS.isNotEmpty(scope.row.updateTradeName)"> {{ scope.row.updateTradeName }}
-							</span>
-							<span v-else> -- </span>
-						</template>
-					</vxe-column>
-					<vxe-column min-width="160" align="center" title="修改人" field="updateUser">
-						<template #default="scope">
-							<span v-if="scope.row.endflag === '2'">(创建人) {{ scope.row.updateUser }} </span>
-							<span v-else>{{ scope.row.updateUser }} </span>
-						</template>
-					</vxe-column>
-					<vxe-column min-width="160" align="center" title="修改时间" field="createTime"></vxe-column>
-					<vxe-column title="操作" width="150px" fixed="right" align="center">
-						<template #default="scope">
-							<el-button text type="primary" size="small" @click="hiDetail(scope.row)">修改详情</el-button>
-						</template>
-					</vxe-column>
-				</vxe-table>
-			</el-tab-pane>
 			<el-tab-pane label="领用退回历史" v-if="returnId" name="form-seventh">
 				<vxe-table ref="returnTable" border="inner" :key="111" size="small" class="vxe-table-element"
 					max-height="1000px" :data="dataListHiCollect">
@@ -262,18 +231,18 @@ import print2 from "@/utils/print.js";
 import { shallowRef } from 'vue'
 import CollectService from '@/api/materialManagement/CollectService'
 import PsiCollectService from '@/api/psi/CollectService'
-import PsiWareHouseService from '@/api/psi/WareHouseService'
+import WareHouseService from '@/api/materialManagement/WareHouseService'
 import ProjectReportArchiveService from '@/api/cw/projectRecords/ProjectReportArchiveService'
 import pick from "lodash.pick";
 export default {
 	collectService: null,
 	psiCollectService: null,
-	psiWareHouseService: null,
+	wareHouseService: null,
 	projectReportArchiveService: null,
 	beforeCreate() {
 		this.collectService = new CollectService()
 		this.psiCollectService = new PsiCollectService()
-		this.psiWareHouseService = new PsiWareHouseService()
+		this.wareHouseService = new WareHouseService()
 		this.projectReportArchiveService = new ProjectReportArchiveService()
 	},
 	activated() {
@@ -427,7 +396,6 @@ export default {
 			this.cwArchiveHiFlag = ""
 			this.returnId = this.$route.query.returnId
 			this.psiReturnId = this.$route.query.psiReturnId
-			this.psiWareHouseId = this.$route.query.psiWareHouseId
 			if (this.commonJS.isEmpty(this.$route.query.isShow)) {
 				this.isShow = 'true'
 			} else {
@@ -1705,13 +1673,6 @@ export default {
 					})
 				}
 			}
-			if (event.props.name === 'form-psi-edit') {
-				if (this.commonJS.isNotEmpty(this.psiWareHouseId)) {
-					this.psiWareHouseService.findHiById(this.psiWareHouseId).then((data) => {
-						this.dataListHi = data
-					})
-				}
-			}
 			if (event.props.name === 'form-seventh') {
 				if (this.commonJS.isNotEmpty(this.returnId)) {
 					this.collectService.findByReturnId(this.returnId).then((data) => {
@@ -1808,7 +1769,6 @@ export default {
 			cwArchiveHiFlag: '',
 			returnId: '',
 			psiReturnId: '',
-			psiWareHouseId: '',
 			dataListHi: [],
 			dataListHiCollect: [],
 			cwArchiveDataListHiCollect: [],

+ 0 - 44
src/views/flowable/task/TaskFormDetail.vue

@@ -62,37 +62,6 @@
 					</vxe-column>
 				</vxe-table>
 			</el-tab-pane>
-			<el-tab-pane label="入库修改历史" v-if="psiWareHouseId" name="form-psi-edit">
-				<vxe-table border="inner" size="mini" max-height="1000px" :data="dataListHi">
-					<vxe-column type="seq" width="60" title="序号"></vxe-column>
-					<!-- <vxe-column min-width="120" align="center" title="修改类型" field="updateTradeType">
-						<template #default="scope">
-							<span v-if="commonJS.isNotEmpty(scope.row.updateTradeType)"> {{ scope.row.updateTradeType }}
-							</span>
-							<span v-else> -- </span>
-						</template>
-					</vxe-column> -->
-					<vxe-column min-width="160" align="center" title="修改商品" field="updateTradeName">
-						<template #default="scope">
-							<span v-if="commonJS.isNotEmpty(scope.row.updateTradeName)"> {{ scope.row.updateTradeName }}
-							</span>
-							<span v-else> -- </span>
-						</template>
-					</vxe-column>
-					<vxe-column min-width="160" align="center" title="修改人" field="updateUser">
-						<template #default="scope">
-							<span v-if="scope.row.endflag === '2'">(创建人) {{ scope.row.updateUser }} </span>
-							<span v-else>{{ scope.row.updateUser }} </span>
-						</template>
-					</vxe-column>
-					<vxe-column min-width="160" align="center" title="修改时间" field="createTime"></vxe-column>
-					<vxe-column title="操作" width="150px" fixed="right" align="center">
-						<template #default="scope">
-							<el-button text type="primary" size="small" @click="hiDetail(scope.row)">修改详情</el-button>
-						</template>
-					</vxe-column>
-				</vxe-table>
-			</el-tab-pane>
 			<el-tab-pane label="领用退回历史" v-if="returnId" name="form-seventh">
 				<vxe-table border="inner" size="mini" max-height="1000px" :data="dataListHiCollect">
 					<vxe-column type="seq" width="60" title="序号"></vxe-column>
@@ -174,18 +143,14 @@ import CollectService from '@/api/materialManagement/CollectService'
 import PsiCollectService from '@/api/psi/CollectService'
 import WareHouseService from '@/api/materialManagement/WareHouseService'
 import projectReportService from '@/api/cw/reportManagement/ProjectReportService'
-import PsiWareHouseService from '@/api/psi/WareHouseService'
-
 export default {
 	collectService: null,
 	psiCollectService: null,
 	wareHouseService: null,
-	psiWareHouseService: null,
 	beforeCreate() {
 		this.collectService = new CollectService()
 		this.psiCollectService = new PsiCollectService()
 		this.wareHouseService = new WareHouseService()
-		this.psiWareHouseService = new PsiWareHouseService()
 	},
 	activated() {
 		this.init();
@@ -268,7 +233,6 @@ export default {
 			this.procInsId = this.$route.query.procInsId;
 			this.returnId = this.$route.query.returnId
 			this.psiReturnId = this.$route.query.psiReturnId
-			this.psiWareHouseId = this.$route.query.psiWareHouseId
 			this.wareHouseId = this.$route.query.wareHouseId
 			this.sigId = this.$route.query.sigId
 			this.formReadOnly = true;
@@ -289,13 +253,6 @@ export default {
 					})
 				}
 			}
-			if (event.props.name === 'form-psi-edit') {
-				if (this.commonJS.isNotEmpty(this.psiWareHouseId)) {
-					this.psiWareHouseService.findHiById(this.psiWareHouseId).then((data) => {
-						this.dataListHi = data
-					})
-				}
-			}
 			if (event.props.name === 'form-seventh') {
 				console.log('建立了')
 				if (this.commonJS.isNotEmpty(this.returnId)) {
@@ -363,7 +320,6 @@ export default {
 			businessId: "",
 			returnId: "",
 			psiReturnId: '',
-			psiWareHouseId: '',
 			wareHouseId: '',
 			dataListHi: [],
 			dataListHiCollect: [],

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 551 - 547
src/views/materialManagement/collect/UpdateCollectInfoForm.vue


+ 1 - 1
src/views/materialManagement/wareHouse/WareHouseAddForm.vue

@@ -399,7 +399,7 @@
           files: [] // 附件信息
         }
         if (method === 'add') {
-          this.title = `新建入库信息1`
+          this.title = `新建入库信息`
         } else if (method === 'edit') {
           this.inputForm.id = id
           this.title = '修改入库信息'

+ 79 - 118
src/views/psiManagement/collect/CollectForm.vue

@@ -65,73 +65,60 @@
 						highlight-current-row
 						:edit-config="{ trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: '-' }"
 						:edit-rules="validRules">
-						<!-- <vxe-table-column field="recipientAgent" title="领用人" :edit-render="{}"
+						<vxe-table-column field="recipientAgent" title="领用人" :edit-render="{}"
 							:rules="[{ required: true, message: '请选择领用人', trigger: 'blur' }]">
 							<template v-slot:edit="scope">
 								<el-input v-model="scope.row.recipientAgent"
 									@focus="userPullListForm(scope.$rowIndex)"></el-input>
 							</template>
-</vxe-table-column>
-<vxe-table-column field="recipientOffice" title="领用人部门" :edit-render="{}">
-	<template v-slot:edit="scope">
+						</vxe-table-column>
+						<vxe-table-column field="recipientOffice" title="领用人部门" :edit-render="{}">
+							<template v-slot:edit="scope">
 								<el-input :disabled='true' v-model="scope.row.recipientOffice"></el-input>
 							</template>
-</vxe-table-column> -->
-						<vxe-table-column field="collectType" title="商品名称" :edit-render="{}"
-							:rules="[{ required: true, message: '请选择商品名称', trigger: 'blur' }]">
+						</vxe-table-column>
+						<vxe-table-column field="collectType" title="领用类型" :edit-render="{}"
+							:rules="[{ required: true, message: '请选择领用类型', trigger: 'blur' }]">
 							<template v-slot:edit="scope">
 								<el-input v-model="scope.row.collectType"
 									@focus="typePullForm(scope.$rowIndex)"></el-input>
 							</template>
 						</vxe-table-column>
-						<!-- <vxe-table-column field="goodsName" title="物品名称" :edit-render="{}"
+						<vxe-table-column field="goodsName" title="物品名称" :edit-render="{}"
 							:rules="[{ required: true, message: '请填写物品名称', trigger: 'blur' }]">
 							<template v-slot:edit="scope">
 								<el-input v-model="scope.row.goodsName"
 									@focus="openPurchasePageForm(scope.$rowIndex, scope.row)"></el-input>
 							</template>
-						</vxe-table-column> -->
-						<vxe-table-column field="brand" title="品牌"
-							:rules="[{ required: true, message: '请填写品牌', trigger: 'blur' }]">
-							<template v-slot:edit="scope">
-								<el-input disabled v-model="scope.row.brand"></el-input>
-							</template>
 						</vxe-table-column>
-						<vxe-table-column field="specification" title="规格"
-							:rules="[{ required: true, message: '请填写规格', trigger: 'blur' }]">
-							<template v-slot:edit="scope">
-								<el-input disabled v-model="scope.row.specification"></el-input>
-							</template>
-						</vxe-table-column>
-						<vxe-table-column field="company" title="单位"
-							:rules="[{ required: true, message: '请填写单位', trigger: 'blur' }]">
+						<vxe-table-column :title-suffix="nameTitleSuffix" field="collectNumber" title="领用数量"
+							:edit-render="{}">
 							<template v-slot:edit="scope">
-								<el-input disabled v-model="scope.row.company"></el-input>
+								<!--              <el-input @change="changeValue" v-model="scope.row.tradeNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>-->
+								<!--              <el-input @change="changeValue" v-model="scope.row.tradeNumber" @blur="scope.row.tradeNumber = twoDecimalPlaces2(scope.row.tradeNumber)" maxlength="10"></el-input>-->
+								<el-input v-model="scope.row.collectNumber"
+									@blur="scope.row.collectNumber = twoDecimalPlaces2(scope.row.collectNumber)"
+									maxlength="10"></el-input>
 							</template>
 						</vxe-table-column>
-						<vxe-table-column field="surplusNumber" title="库存">
+						<vxe-table-column field="surplusNumber" title="库存数量">
 							<!-- <template v-slot:edit="scope">
 								<el-input :disabled="true" v-model="scope.row.surplusNumber" maxlength="10"></el-input>
 							</template> -->
 							<template #default="scope">
 								<span
 									v-if="scope.row.surplusNumber !== undefined && scope.row.surplusNumber !== null && scope.row.spec !== undefined && scope.row.spec !== null">
-									{{ scope.row.surplusNumber }}
+									{{ parseInt(scope.row.spec) * parseFloat(scope.row.surplusNumber) }}
 								</span>
 								<span v-else>
 									{{ scope.row.surplusNumber }}
 								</span>
 							</template>
 						</vxe-table-column>
-						<vxe-table-column :title-suffix="nameTitleSuffix" field="collectNumber" title="领用数量"
-							:edit-render="{}">
+						<vxe-table-column field="company" title="单位" :edit-render="{}"
+							:rules="[{ required: true, message: '请填写单位', trigger: 'blur' }]">
 							<template v-slot:edit="scope">
-								<!--              <el-input @change="changeValue" v-model="scope.row.tradeNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>-->
-								<!--              <el-input @change="changeValue" v-model="scope.row.tradeNumber" @blur="scope.row.tradeNumber = twoDecimalPlaces2(scope.row.tradeNumber)" maxlength="10"></el-input>-->
-								<el-input v-model="scope.row.collectNumber"
-									@input="scope.row.collectNumber = twoDecimalPlaces2($event)"
-									@blur="scope.row.collectNumber = twoDecimalPlaces2(scope.row.collectNumber)"
-									maxlength="10"></el-input>
+								<el-input disabled v-model="scope.row.company"></el-input>
 							</template>
 						</vxe-table-column>
 						<vxe-table-column field="remarks" title="备注" :edit-render="{}">
@@ -144,10 +131,10 @@
 								<vxe-button size="small" status="danger"
 									:disabled="method === 'view' || status == 'audit' || this.formReadOnly"
 									@click="removeEvent(scope.row, scope.$rowIndex, 'detail')">删除</vxe-button>
-								<vxe-button size="small" status="primary" v-show="false"
+								<vxe-button size="small" status="primary"
 									:disabled="method === 'view' || status == 'audit' || this.formReadOnly"
 									@click="sss(scope.$rowIndex)">上传附件</vxe-button>
-								<vxe-button v-show="false" size="small" status="primary"
+								<vxe-button size="small" status="primary"
 									v-if="method === 'view' || status == 'audit' || this.formReadOnly" :disabled="false"
 									@click="seeFileInfo(scope.$rowIndex)">查看文件详情</vxe-button>
 							</template>
@@ -156,7 +143,7 @@
 				</el-col>
 			</el-row>
 			<el-form :model="inputForm" :disabled="status !== 'audit'" @submit.native.prevent>
-				<el-divider content-position="left" v-if="false"><i class="el-icon-document"></i>
+				<el-divider content-position="left" v-if="status == 'audit'"><i class="el-icon-document"></i>
 					领用分配详情
 
 					<!-- <el-button style="margin-left: 20px" type="primary" :disabled="status != 'audit'"
@@ -164,7 +151,7 @@
 						新增
 					</el-button> -->
 				</el-divider>
-				<el-row :gutter="15" v-if="false">
+				<el-row :gutter="15" v-if="status == 'audit'">
 					<el-col :span="24">
 						<vxe-table border show-footer show-overflow ref="auditDetailTable" class="vxe-table-element"
 							:data="inputForm.recordList" style="margin-left: 5em" :key="clientTableKey"
@@ -229,7 +216,7 @@
 								<template #default="scope">
 									<span
 										v-if="scope.row.surplusNumber !== undefined && scope.row.surplusNumber !== null && scope.row.spec !== undefined && scope.row.spec !== null">
-										{{ scope.row.surplusNumber }}
+										{{ parseInt(scope.row.spec) * parseFloat(scope.row.surplusNumber) }}
 									</span>
 									<span v-else>
 										{{ scope.row.surplusNumber }}
@@ -264,11 +251,7 @@
 		<PurchasePageFormByOption ref="purchasePageFormByOption" @getProject="getContract1"></PurchasePageFormByOption>
 		<!-- 附件 -->
 		<MaterialManagementDialog ref="materialManagementDialog" @getUpload="getUpload"></MaterialManagementDialog>
-		<div v-show="method === 'view' || status == 'audit' || formReadOnly">
-			<div v-show="false">
-				<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
-			</div>
-		</div>
+		<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 		<CwProgramPageForm ref="cwProgramPageForm" @getProgram="getProgram"></CwProgramPageForm>
 		<MaterialTypePullForm ref="materialTypePullForm" @getProgramForType="getProgramForType"></MaterialTypePullForm>
 		<MaterialTypePullFormByOption ref="materialTypePullFormByOption" @getProgramForType="getProgramForType1">
@@ -301,14 +284,17 @@ export default {
 		return {
 			nameTitleSuffix,
 			validRules: {
-				// recipientAgent: [
-				// 	{ required: true, message: '领用人不能为空' }
-				// ],
-				// recipientOffice: [
-				// 	{ required: true, message: '领用人部门不能为空' }
-				// ],
+				recipientAgent: [
+					{ required: true, message: '领用人不能为空' }
+				],
+				recipientOffice: [
+					{ required: true, message: '领用人部门不能为空' }
+				],
 				collectType: [
-					{ required: true, message: '商品名称不能为空' }
+					{ required: true, message: '领用类型不能为空' }
+				],
+				goodsName: [
+					{ required: true, message: '物品名称不能为空' }
 				],
 				collectNumber: [
 					{ required: true, message: '领用数量不能为空' }
@@ -429,7 +415,6 @@ export default {
 		},
 		init(method, id) {
 			this.method = method
-			const collectDate = this.moment(new Date()).format('YYYY-MM-DD')
 			this.inputForm = {
 				fileInfoLost: [],
 				handledByOffice: '',
@@ -437,7 +422,7 @@ export default {
 				handledById: this.$store.state.user.id,
 				collectNo: '', // 领用编号
 				userId: this.$store.state.user.id,
-				collectDate: collectDate,
+				collectDate: new Date(),
 				remarks: '',
 				detailInfos: [],
 				recordList: [],
@@ -447,9 +432,9 @@ export default {
 				processDefinitionId: ''
 			}
 			if (method === 'add') {
-				this.title = `新建领用`
+				this.title = `新建领用类型`
 			} else if (method === 'edit') {
-				this.title = '修改领用'
+				this.title = '修改领用类型'
 			}
 			this.inputForm.id = id
 			this.visible = true
@@ -503,7 +488,7 @@ export default {
 							this.inputForm.handledById = this.$store.state.user.id
 						}
 						if (this.commonJS.isEmpty(this.inputForm.collectDate)) {
-							this.inputForm.collectDate = collectDate
+							this.inputForm.collectDate = new Date()
 						}
 						this.inputForm.detailInfos = []
 						this.loading = false
@@ -680,23 +665,28 @@ export default {
 						let i = this.inputForm.detailInfos.length
 						for (let j = 0; j < i; j++) {
 							let k = j + 1
+							if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].recipientAgent)) {
+								this.$message.error('领用详情第' + k + '行请选择领用人')
+								this.loading = false
+								return
+							}
 							if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].collectType)) {
-								this.$message.error('领用详情第' + k + '行请选择商品')
+								this.$message.error('领用详情第' + k + '行请选择领用类型')
 								this.loading = false
 								return
 							}
-							if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].collectNumber)) {
-								this.$message.error('领用详情第' + k + '行请输入领用数量')
+							if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].goodsName)) {
+								this.$message.error('领用详情第' + k + '行请选择物品名称')
 								this.loading = false
 								return
 							}
-							if (!/^[1-9]\d*(?:\.0+)?$/.test(String(this.inputForm.detailInfos[j].collectNumber))) {
-								this.$message.error('领用详情第' + k + '行领用数量请输入正整数')
+							if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].collectNumber)) {
+								this.$message.error('领用详情第' + k + '行请输入领用数量')
 								this.loading = false
 								return
 							}
 
-							if (parseFloat(this.inputForm.detailInfos[j].collectNumber) > parseFloat(this.inputForm.detailInfos[j].surplusNumber)) {
+							if (parseFloat(this.inputForm.detailInfos[j].collectNumber) > parseFloat(this.inputForm.detailInfos[j].surplusNumber) * parseFloat(this.inputForm.detailInfos[j].spec)) {
 								this.$message.error('领用详情第' + k + '行领用数量不能大于库存数量')
 								this.loading = false
 								return
@@ -734,33 +724,6 @@ export default {
 					if (this.commonJS.isEmpty(this.inputForm.files)) {
 						this.inputForm.files = []
 					}
-
-					let i = this.inputForm.detailInfos.length
-					for (let j = 0; j < i; j++) {
-						let k = j + 1
-						if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].collectType)) {
-							this.$message.error('领用详情第' + k + '行请选择商品')
-							this.loading = false
-							return
-						}
-						if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].collectNumber)) {
-							this.$message.error('领用详情第' + k + '行请输入领用数量')
-							this.loading = false
-							return
-						}
-						if (!/^[1-9]\d*(?:\.0+)?$/.test(String(this.inputForm.detailInfos[j].collectNumber))) {
-							this.$message.error('领用详情第' + k + '行领用数量请输入正整数')
-							this.loading = false
-							return
-						}
-
-						if (parseFloat(this.inputForm.detailInfos[j].collectNumber) > parseFloat(this.inputForm.detailInfos[j].surplusNumber)) {
-							this.$message.error('领用详情第' + k + '行领用数量不能大于库存数量')
-							this.loading = false
-							return
-						}
-
-					}
 					this.inputForm.files = this.$refs.uploadComponent.getDataList()
 					this.commonApi.getTaskNameByProcInsId(this.inputForm.procInsId).then((data) => {
 						if (this.commonJS.isNotEmpty(data)) {
@@ -879,23 +842,31 @@ export default {
 		//   this.inputForm.detailInfos[index].priceSum = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
 		// },
 		twoDecimalPlaces2(num) {
-			if (this.commonJS.isEmpty(num)) {
-				return ''
+			let str = num.toString()
+			var len1 = str.substr(0, 1)
+			var len2 = str.substr(1, 1)
+			// eslint-disable-next-line eqeqeq
+			if (str.length > 1 && len1 == 0 && len2 != '.') {
+				str = str.substr(1, 1)
 			}
-			let str = String(num).replace(/[^\d.]/g, '')
-			if (str.endsWith('.')) {
-				return ''
+			// eslint-disable-next-line eqeqeq
+			if (len1 == '.') {
+				str = ''
 			}
-			const dotIndex = str.indexOf('.')
-			if (dotIndex !== -1) {
-				const integerPart = str.substring(0, dotIndex)
-				const decimalPart = str.substring(dotIndex + 1).replace(/\./g, '').replace(/[1-9]/g, '')
-				str = integerPart + '.' + decimalPart
-			}
-			str = str.replace(/^0+(\d)/, '$1')
-			if (str === '.') {
-				return ''
+			// eslint-disable-next-line eqeqeq
+			if (str.indexOf('.') != -1) {
+				var str_ = str.substr(str.indexOf('.') + 1)
+				// eslint-disable-next-line eqeqeq
+				if (str_.indexOf('.') != -1) {
+					str = str.substr(0, str.indexOf('.') + str_.indexOf('.') + 1)
+				}
+				if (str_.length > 2) {
+					this.$message.warning(`领用数量小数点后只能输入两位,请正确输入!`)
+					return (str = '')
+				}
 			}
+			// eslint-disable-next-line no-useless-escape
+			str = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
 			return str
 		},
 		countAmount(row) {
@@ -940,22 +911,9 @@ export default {
 			this.$refs.materialTypePullFormByOption.init(uniqueTypes)
 		},
 		getProgramForType(rows) {
-			const exists = this.inputForm.detailInfos.some((item, index) => {
-				return String(index) !== String(this.indexRow) && String(item.collectTypeId) === String(rows.id)
-			})
-			if (exists) {
-				this.$message.warning('同种商品只能选择一次')
-				return
-			}
 			this.inputForm.detailInfos[this.indexRow].collectTypeId = rows.id
 			this.inputForm.detailInfos[this.indexRow].collectType = rows.name
 			this.inputForm.detailInfos[this.indexRow].goodsName = ''
-			this.inputForm.detailInfos[this.indexRow].spec = "1"
-			this.inputForm.detailInfos[this.indexRow].brand = rows.brand
-			this.inputForm.detailInfos[this.indexRow].specification = rows.specification
-			this.inputForm.detailInfos[this.indexRow].company = rows.company
-			this.inputForm.detailInfos[this.indexRow].goodsName = rows.name
-			this.inputForm.detailInfos[this.indexRow].surplusNumber = rows.currentInventory
 			this.indexRow = ''
 			this.$forceUpdate()
 		},
@@ -1025,9 +983,12 @@ export default {
 				console.log('进来了')
 				for (let k = j + 1; k < i; k++) {
 					if (this.inputForm.detailInfos[j].collectTypeId === this.inputForm.detailInfos[k].collectTypeId) {
-						// parseFloat(item.account).toFixed(2)
-						this.inputForm.detailInfos.splice(k, 1)
-						this.$message.warning(`同种商品只能输入一条信息!`)
+						if (this.commonJS.isNotEmpty(this.inputForm.detailInfos[j].goodsName) &&
+							this.commonJS.isNotEmpty(this.inputForm.detailInfos[k].goodsName) && this.inputForm.detailInfos[j].goodsName === this.inputForm.detailInfos[k].goodsName) {
+							// parseFloat(item.account).toFixed(2)
+							this.inputForm.detailInfos.splice(k, 1)
+							this.$message.warning(`同种领用类型的商品名称只能输入一条信息!`)
+						}
 					}
 				}
 			}

+ 55 - 39
src/views/psiManagement/collect/CollectReturnForm.vue

@@ -52,23 +52,17 @@
 						:edit-config="{ trigger: 'click', mode: 'row', showStatus: false, autoClear: !produceDateSelectVisible, icon: '-' }"
 						:edit-rules="validRules" :data="inputForm.recordList" style="margin-left: 5em"
 						:row-class-name="rowClassName">
-						<!-- <vxe-table-column field="recipientAgent" title="领用人" align="center" min-width="160">
+						<vxe-table-column field="recipientAgent" title="领用人" align="center" min-width="160">
 							<template #default="scope">
 								<span>{{ scope.row.recipientAgent }}</span>
 								<span v-if="scope.row.isReturn === '1'">(已退回)</span>
 								<span v-else-if="scope.row.isReturn === '2'">(部分退回)</span>
 							</template>
-</vxe-table-column> -->
-						<!-- <vxe-table-column field="recipientOffice" title="领用人部门" align="center"></vxe-table-column> -->
-						<!-- <vxe-table-column field="collectType" title="领用类型" align="center"></vxe-table-column> -->
-						<vxe-table-column field="collectType" title="商品名称" align="center">
-							<template #default="scope">
-								<span>{{ scope.row.goodsName }}</span>
-								<span v-if="scope.row.isReturn === '1'">(已退回)</span>
-								<span v-else-if="scope.row.isReturn === '2'">(部分退回)</span>
-							</template>
 						</vxe-table-column>
-						<!-- <vxe-table-column field="produceDate" title="生产日期" align="center"></vxe-table-column> -->
+						<vxe-table-column field="recipientOffice" title="领用人部门" align="center"></vxe-table-column>
+						<vxe-table-column field="collectType" title="领用类型" align="center"></vxe-table-column>
+						<vxe-table-column field="goodsName" title="物品名称" align="center"></vxe-table-column>
+						<vxe-table-column field="produceDate" title="生产日期" align="center"></vxe-table-column>
 						<vxe-table-column field="collectNumber" title="领用数量" align="center">
 							<template #default="scope">
 								<span>{{ scope.row.collectNumber }}</span>
@@ -89,8 +83,7 @@
 								<span v-if="status == 'taskFormDetail' && inputForm.statusReturn == '5'">{{
 									scope.row.returnedNum }}</span>
 								<el-input v-else :disabled="scope.row.returnedNum == scope.row.collectNumber"
-									v-model="scope.row.surplusStock"
-									@input="scope.row.surplusStock = twoDecimalPlaces2($event); handleSurplusStockChange(scope.row)"
+									v-model="scope.row.surplusStock" @input="handleSurplusStockChange(scope.row)"
 									@blur="scope.row.surplusStock = twoDecimalPlaces2(scope.row.surplusStock)"
 									maxlength="10"></el-input>
 							</template>
@@ -114,7 +107,7 @@
 						<vxe-table-column field="remarks" title="备注" align="center"></vxe-table-column>
 						<vxe-table-column title="操作" width="170" align="center">
 							<template v-slot="scope">
-								<el-button v-show="false" size="small" type="primary" :disabled="false"
+								<el-button size="small" type="primary" :disabled="false"
 									@click="seeFileInfo(scope.$rowIndex)">附件</el-button>
 								<!-- <el-button size="small" type="primary"
 									v-if="scope.row.isReturn === '0' && status !== 'audit' && status !== 'taskFormDetail'"
@@ -142,9 +135,7 @@
 		<PurchasePageForm ref="purchasePageForm" @getProject="getContract"></PurchasePageForm>
 		<!-- 附件 -->
 		<MaterialManagementDialog ref="materialManagementDialog" @getUpload="getUpload"></MaterialManagementDialog>
-		<div v-show="false">
-				<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
-			</div>
+		<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 		<CwProgramPageForm ref="cwProgramPageForm" @getProgram="getProgram"></CwProgramPageForm>
 		<MaterialTypePullForm ref="materialTypePullForm" @getProgramForType="getProgramForType"></MaterialTypePullForm>
 		<UserPullForm ref="userPullForm" @getProgramForUser="getProgramForUser"></UserPullForm>
@@ -165,8 +156,17 @@ export default {
 	data() {
 		return {
 			validRules: {
+				recipientAgent: [
+					{ required: true, message: '领用人不能为空' }
+				],
+				recipientOffice: [
+					{ required: true, message: '领用人部门不能为空' }
+				],
 				collectType: [
-					{ required: true, message: '商品名称不能为空' }
+					{ required: true, message: '领用类型不能为空' }
+				],
+				goodsName: [
+					{ required: true, message: '物品名称不能为空' }
 				],
 				collectNumber: [
 					{ required: true, message: '领用数量不能为空' }
@@ -532,8 +532,18 @@ export default {
 						let i = this.inputForm.detailInfos.length
 						for (let j = 0; j < i; j++) {
 							let k = j + 1
+							if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].recipientAgent)) {
+								this.$message.error('领用详情第' + k + '行请选择领用人')
+								this.loading = false
+								return
+							}
 							if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].collectType)) {
-								this.$message.error('领用详情第' + k + '行请选择商品')
+								this.$message.error('领用详情第' + k + '行请选择领用类型')
+								this.loading = false
+								return
+							}
+							if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].goodsName)) {
+								this.$message.error('领用详情第' + k + '行请选择物品名称')
 								this.loading = false
 								return
 							}
@@ -704,45 +714,51 @@ export default {
 		//   this.inputForm.detailInfos[index].priceSum = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
 		// },
 		twoDecimalPlaces2(num) {
-			if (this.commonJS.isEmpty(num)) {
-				return ''
+			let str = num.toString()
+			var len1 = str.substr(0, 1)
+			var len2 = str.substr(1, 1)
+			// eslint-disable-next-line eqeqeq
+			if (str.length > 1 && len1 == 0 && len2 != '.') {
+				str = str.substr(1, 1)
 			}
-			let str = String(num).replace(/[^\d.]/g, '')
-			if (str.endsWith('.')) {
-				return ''
+			// eslint-disable-next-line eqeqeq
+			if (len1 == '.') {
+				str = ''
 			}
-			const dotIndex = str.indexOf('.')
-			if (dotIndex !== -1) {
-				const integerPart = str.substring(0, dotIndex)
-				const decimalPart = str.substring(dotIndex + 1).replace(/\./g, '').replace(/[1-9]/g, '')
-				str = integerPart + '.' + decimalPart
+			// eslint-disable-next-line eqeqeq
+			if (str.indexOf('.') != -1) {
+				var str_ = str.substr(str.indexOf('.') + 1)
+				// eslint-disable-next-line eqeqeq
+				if (str_.indexOf('.') != -1) {
+					str = str.substr(0, str.indexOf('.') + str_.indexOf('.') + 1)
+				}
+				if (str_.length > 2) {
+					this.$message.warning(`领用数量小数点后只能输入两位,请正确输入!`)
+					return (str = '')
+				}
 			}
-			str = str.replace(/^0+(\d)/, '$1')
-			return str === '.' ? '' : str
+			// eslint-disable-next-line no-useless-escape
+			str = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
+			return str
 		},
 		// 自动计算:surplusStock = collectNumber - 输入的数字
 		handleSurplusStockChange(row) {
-			if (!/^[1-9]\d*(?:\.0+)?$/.test(String(row.surplusStock || ''))) {
-				this.$message.error('退回数量请输入大于0的整数')
-				row.surplusStock = row.surplusStockBak && Number(row.surplusStockBak) > 0 ? row.surplusStockBak : ''
-				return
-			}
 			//完善判断。如果退回数量超过领用数量,弹出提示并清空输入框
 			if (parseInt(row.surplusStock) < 0) {
 				this.$message.error('退回数量不能小于0')
-				row.surplusStock = row.surplusStockBak && Number(row.surplusStockBak) > 0 ? row.surplusStockBak : ''
+				row.surplusStock = row.surplusStockBak || '0'
 				return
 			}
 			//完善判断。如果退回数量超过领用数量,弹出提示并清空输入框
 			if (parseInt(row.surplusStock) > parseInt(row.notSurplusStockBak)) {
 				this.$message.error('退回数量不能大于未退回数量')
-				row.surplusStock = row.surplusStockBak && Number(row.surplusStockBak) > 0 ? row.surplusStockBak : ''
+				row.surplusStock = row.surplusStockBak || '0'
 				return
 			}
 			//如果输入的退回数量不是数字,弹出提示并清空输入框
 			if (isNaN(parseInt(row.surplusStock))) {
 				this.$message.error('请输入有效的退回数量')
-				row.surplusStock = row.surplusStockBak && Number(row.surplusStockBak) > 0 ? row.surplusStockBak : ''
+				row.surplusStock = row.surplusStockBak || '0'
 				return
 			}
 

+ 29 - 38
src/views/psiManagement/collect/CollectReturnHiForm.vue

@@ -61,9 +61,9 @@
 									<span v-else-if="scope.row.isReturn === '2'">(部分退回)</span>
 								</template>
 							</vxe-table-column>
-							<!-- <vxe-table-column field="recipientOffice" title="领用人部门" align="center"></vxe-table-column> -->
-							<vxe-table-column field="collectType" title="领用商品" align="center"></vxe-table-column>
-							<!-- <vxe-table-column field="goodsName" title="物品名称" align="center"></vxe-table-column> -->
+							<vxe-table-column field="recipientOffice" title="领用人部门" align="center"></vxe-table-column>
+							<vxe-table-column field="collectType" title="领用类型" align="center"></vxe-table-column>
+							<vxe-table-column field="goodsName" title="物品名称" align="center"></vxe-table-column>
 							<vxe-table-column field="collectNumber" title="领用数量" align="center"></vxe-table-column>
 							<vxe-table-column field="surplusStock" title="本次退回数量" align="center" :edit-render="{}">
 								<template #default="scope">
@@ -75,8 +75,7 @@
 									<span v-if="status == 'taskFormDetail' && inputForm.statusReturn == '5'">{{
 										scope.row.returnedNum }}</span>
 									<el-input v-else :disabled="scope.row.returnedNum == scope.row.collectNumber"
-										v-model="scope.row.surplusStock"
-										@input="scope.row.surplusStock = twoDecimalPlaces2($event); handleSurplusStockChange(scope.row)"
+										v-model="scope.row.surplusStock" @input="handleSurplusStockChange(scope.row)"
 										@blur="scope.row.surplusStock = twoDecimalPlaces2(scope.row.surplusStock)"
 										maxlength="10"></el-input>
 								</template>
@@ -101,7 +100,7 @@
 							<vxe-table-column field="remarks" title="备注" align="center"></vxe-table-column>
 							<vxe-table-column title="操作" width="170" align="center">
 								<template #default="scope">
-									<el-button v-show="false" type="primary" :disabled="false"
+									<el-button type="primary" :disabled="false"
 										@click="seeFileInfo(scope.$rowIndex)">附件</el-button>
 								</template>
 							</vxe-table-column>
@@ -122,9 +121,7 @@
 			<PurchasePageForm ref="purchasePageForm" @getProject="getContract"></PurchasePageForm>
 			<!-- 附件 -->
 			<MaterialManagementDialog ref="materialManagementDialog" @getUpload="getUpload"></MaterialManagementDialog>
-			<div v-show="false">
-				<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
-			</div>
+			<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 			<CwProgramPageForm ref="cwProgramPageForm" @getProgram="getProgram"></CwProgramPageForm>
 			<MaterialTypePullForm ref="materialTypePullForm" @getProgramForType="getProgramForType">
 			</MaterialTypePullForm>
@@ -693,38 +690,32 @@ export default {
 		//   this.inputForm.detailInfos[index].priceSum = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
 		// },
 		twoDecimalPlaces2(num) {
-			if (this.commonJS.isEmpty(num)) {
-				return ''
-			}
-			let str = String(num).replace(/[^\d.]/g, '')
-			if (str.endsWith('.')) {
-				return ''
+			let str = num.toString()
+			var len1 = str.substr(0, 1)
+			var len2 = str.substr(1, 1)
+			// eslint-disable-next-line eqeqeq
+			if (str.length > 1 && len1 == 0 && len2 != '.') {
+				str = str.substr(1, 1)
 			}
-			const dotIndex = str.indexOf('.')
-			if (dotIndex !== -1) {
-				const integerPart = str.substring(0, dotIndex)
-				const decimalPart = str.substring(dotIndex + 1).replace(/\./g, '').replace(/[1-9]/g, '')
-				str = integerPart + '.' + decimalPart
-			}
-			str = str.replace(/^0+(\d)/, '$1')
-			return str === '.' ? '' : str
-		},
-		handleSurplusStockChange(row) {
-			if (!/^[1-9]\d*(?:\.0+)?$/.test(String(row.surplusStock || ''))) {
-				this.$message.error('退回数量请输入大于0的整数')
-				row.surplusStock = row.surplusStockBak && Number(row.surplusStockBak) > 0 ? row.surplusStockBak : ''
-				return
+			// eslint-disable-next-line eqeqeq
+			if (len1 == '.') {
+				str = ''
 			}
-			if (parseInt(row.surplusStock) > parseInt(row.notSurplusStockBak)) {
-				this.$message.error('退回数量不能大于未退回数量')
-				row.surplusStock = row.surplusStockBak && Number(row.surplusStockBak) > 0 ? row.surplusStockBak : ''
-				return
-			}
-			if ((parseInt(row.surplusStock) + parseInt(row.returnedNum || 0)) == parseInt(row.collectNumber)) {
-				row.isReturn = '1'
-			} else {
-				row.isReturn = '2'
+			// eslint-disable-next-line eqeqeq
+			if (str.indexOf('.') != -1) {
+				var str_ = str.substr(str.indexOf('.') + 1)
+				// eslint-disable-next-line eqeqeq
+				if (str_.indexOf('.') != -1) {
+					str = str.substr(0, str.indexOf('.') + str_.indexOf('.') + 1)
+				}
+				if (str_.length > 2) {
+					this.$message.warning(`领用数量小数点后只能输入两位,请正确输入!`)
+					return (str = '')
+				}
 			}
+			// eslint-disable-next-line no-useless-escape
+			str = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
+			return str
 		},
 		countAmount(row) {
 			let amount

+ 24 - 38
src/views/psiManagement/collect/UpdateCollectInfoForm.vue

@@ -58,32 +58,32 @@
 							:data="inputForm.detailInfos" style="margin-left: 5em" highlight-current-row
 							:edit-config="{ trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: '-' }"
 							:edit-rules="validRules">
-							<!-- <vxe-table-column field="recipientAgent" title="领用人" :edit-render="{}"
+							<vxe-table-column field="recipientAgent" title="领用人" :edit-render="{}"
 								:rules="[{ required: true, message: '请选择领用人', trigger: 'blur' }]">
 								<template v-slot:edit="scope">
 									<el-input :disabled='true' v-model="scope.row.recipientAgent"
 										@focus="userPullListForm(scope.$rowIndex)"></el-input>
 								</template>
-</vxe-table-column> -->
-							<!-- <vxe-table-column field="recipientOffice" title="领用人部门" :edit-render="{}">
+							</vxe-table-column>
+							<vxe-table-column field="recipientOffice" title="领用人部门" :edit-render="{}">
 								<template v-slot:edit="scope">
 									<el-input :disabled='true' v-model="scope.row.recipientOffice"></el-input>
 								</template>
-							</vxe-table-column> -->
-							<vxe-table-column field="collectType" title="商品名称" :edit-render="{}"
-								:rules="[{ required: true, message: '请选择商品名称', trigger: 'blur' }]">
+							</vxe-table-column>
+							<vxe-table-column field="collectType" title="领用类型" :edit-render="{}"
+								:rules="[{ required: true, message: '请选择领用类型', trigger: 'blur' }]">
 								<template v-slot:edit="scope">
 									<el-input :disabled='true' v-model="scope.row.collectType"
 										@focus="typePullForm(scope.$rowIndex)"></el-input>
 								</template>
 							</vxe-table-column>
-							<!-- <vxe-table-column field="goodsName" title="物品名称" :edit-render="{}"
+							<vxe-table-column field="goodsName" title="物品名称" :edit-render="{}"
 								:rules="[{ required: true, message: '请填写物品名称', trigger: 'blur' }]">
 								<template v-slot:edit="scope">
 									<el-input :disabled='true' v-model="scope.row.goodsName"
 										@focus="openPurchasePageForm(scope.$rowIndex, scope.row)"></el-input>
 								</template>
-							</vxe-table-column> -->
+							</vxe-table-column>
 							<!--            <vxe-table-column field="surplusNumber" title="剩余数量" :edit-render="{}">-->
 							<!--              <template v-slot:edit="scope">-->
 							<!--                <el-input :disabled="true" v-model="scope.row.surplusNumber" maxlength="10"></el-input>-->
@@ -96,18 +96,6 @@
 										maxlength="10"></el-input>
 								</template>
 							</vxe-table-column>
-							<vxe-table-column field="brand" title="品牌" :edit-render="{}"
-								:rules="[{ required: true, message: '请填写品牌', trigger: 'blur' }]">
-								<template v-slot:edit="scope">
-									<el-input :disabled='true' v-model="scope.row.brand"></el-input>
-								</template>
-							</vxe-table-column>
-							<vxe-table-column field="specification" title="规格" :edit-render="{}"
-								:rules="[{ required: true, message: '请填写规格', trigger: 'blur' }]">
-								<template v-slot:edit="scope">
-									<el-input :disabled='true' v-model="scope.row.specification"></el-input>
-								</template>
-							</vxe-table-column>
 							<vxe-table-column field="company" title="单位" :edit-render="{}"
 								:rules="[{ required: true, message: '请填写单位', trigger: 'blur' }]">
 								<template v-slot:edit="scope">
@@ -122,8 +110,8 @@
 							<vxe-table-column title="操作" width="180">
 								<template v-slot="scope">
 									<!--                <el-button :disabled='true' type="danger" v-if="method!=='view'" @click="removeEvent(scope.row,scope.$rowIndex,'detail')">删除</el-button>-->
-									<!--                <el-button v-show="false" :disabled='true' type="primary" v-if="method!=='view'" @click="sss(scope.$rowIndex)">上传附件</el-button>-->
-									<vxe-button v-show="false" status="primary" :disabled="false"
+									<!--                <el-button :disabled='true' type="primary" v-if="method!=='view'" @click="sss(scope.$rowIndex)">上传附件</el-button>-->
+									<vxe-button status="primary" :disabled="false"
 										@click="seeFileInfo(scope.$rowIndex)">查看文件详情</vxe-button>
 								</template>
 							</vxe-table-column>
@@ -131,7 +119,7 @@
 					</el-col>
 				</el-row>
 				<el-form :model="inputForm" :disabled="true" @submit.native.prevent>
-					<el-divider content-position="left" v-if="false"><i class="el-icon-document"></i>
+					<el-divider content-position="left" v-if="inputForm.status == '5'"><i class="el-icon-document"></i>
 						领用分配详情
 
 						<!-- <el-button style="margin-left: 20px" type="primary" :disabled="status != 'audit'"
@@ -139,40 +127,40 @@
 						新增
 					</el-button> -->
 					</el-divider>
-					<el-row :gutter="15" v-if="false">
+					<el-row :gutter="15" v-if="inputForm.status == '5'">
 						<el-col :span="24">
 							<vxe-table border show-footer show-overflow ref="auditDetailTable" class="vxe-table-element"
 								:data="inputForm.recordList" style="margin-left: 5em" :key="clientTableKey"
 								highlight-current-row
 								:edit-config="{ trigger: 'click', mode: 'row', showStatus: false, autoClear: !produceDateSelectVisible, icon: '-' }"
 								:edit-rules="validRules">
-								<!-- <vxe-table-column field="recipientAgent" title="领用人" :edit-render="{}"
+								<vxe-table-column field="recipientAgent" title="领用人" :edit-render="{}"
 									:rules="[{ required: true, message: '请选择领用人', trigger: 'blur' }]">
 									<template v-slot:edit="scope">
 										<el-input v-model="scope.row.recipientAgent" :disabled='true'
 											@focus="userPullListForm(scope.$rowIndex)"></el-input>
 									</template>
-								</vxe-table-column> -->
-								<!-- <vxe-table-column field="recipientOffice" title="领用人部门" :edit-render="{}">
+								</vxe-table-column>
+								<vxe-table-column field="recipientOffice" title="领用人部门" :edit-render="{}">
 									<template v-slot:edit="scope">
 										<el-input :disabled='true' v-model="scope.row.recipientOffice"></el-input>
 									</template>
-								</vxe-table-column> -->
-								<vxe-table-column field="collectType" title="商品名称" :edit-render="{}"
-									:rules="[{ required: true, message: '请选择商品', trigger: 'blur' }]">
+								</vxe-table-column>
+								<vxe-table-column field="collectType" title="领用类型" :edit-render="{}"
+									:rules="[{ required: true, message: '请选择领用类型', trigger: 'blur' }]">
 									<template v-slot:edit="scope">
 										<el-input v-model="scope.row.collectType" :disabled='true'
 											@focus="typePullForm1(scope.$rowIndex)"></el-input>
 									</template>
 								</vxe-table-column>
-								<!-- <vxe-table-column field="goodsName" title="物品名称"
+								<vxe-table-column field="goodsName" title="物品名称"
 									:rules="[{ required: true, message: '请填写物品名称', trigger: 'blur' }]"
 									:edit-render="{}">
 									<template v-slot:edit="scope">
 										<el-input v-model="scope.row.goodsName" :disabled='true'
 											@focus="openPurchasePageForm1(scope.$rowIndex, scope.row)"></el-input>
 									</template>
-								</vxe-table-column> -->
+								</vxe-table-column>
 								<vxe-table-column field="inventoryId" title="分配生产日期" min-width="160"
 									:rules="[{ required: true, message: '请选择', trigger: 'change' }]">
 									<template #default="scope">
@@ -214,9 +202,7 @@
 			<PurchasePageForm ref="purchasePageForm" @getProject="getContract"></PurchasePageForm>
 			<!-- 附件 -->
 			<MaterialManagementDialog ref="materialManagementDialog" @getUpload="getUpload"></MaterialManagementDialog>
-			<div v-show="false">
-				<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
-			</div>
+			<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 			<CwProgramPageForm ref="cwProgramPageForm" @getProgram="getProgram"></CwProgramPageForm>
 			<MaterialTypePullForm ref="materialTypePullForm" @getProgramForType="getProgramForType">
 			</MaterialTypePullForm>
@@ -354,13 +340,13 @@ export default {
 				files: [] // 附件信息
 			}
 			if (method === 'add') {
-				this.title = `新建领用详情`
+				this.title = `新建领用类型`
 			} else if (method === 'edit') {
 				this.inputForm.id = id
-				this.title = '修改领用详情'
+				this.title = '修改领用类型'
 			} else if (method === 'view') {
 				this.inputForm.id = id
-				this.title = '查看领用详情'
+				this.title = '查看领用类型'
 			}
 			this.visible = true
 			this.loading = false

+ 1 - 2
src/views/psiManagement/contract/ContractForm.vue

@@ -176,14 +176,13 @@
 						</el-form>
 					</el-row>
 				</el-tab-pane>
-				<el-tab-pane v-if="false" label="附件" name="files">
+				<el-tab-pane label="附件" name="files">
 					<!--        附件-->
 					<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 				</el-tab-pane>
 
 
 			</el-tabs>
-			<UpLoadComponent v-show="false" ref="uploadComponent"></UpLoadComponent>
 		</el-form>
 	</div>
 </template>

+ 1 - 2
src/views/psiManagement/contract/UpdateContractInfoForm.vue

@@ -184,14 +184,13 @@
 							</el-form>
 						</el-row>
 					</el-tab-pane>
-					<el-tab-pane v-if="false" label="附件" name="files">
+					<el-tab-pane label="附件" name="files">
 						<!--        附件-->
 						<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 					</el-tab-pane>
 
 
 				</el-tabs>
-				<UpLoadComponent v-show="false" ref="uploadComponent"></UpLoadComponent>
 			</el-form>
 			<template #footer>
 				<span class="dialog-footer">

+ 4 - 24
src/views/psiManagement/info/MaterialTypePullForm.vue

@@ -13,22 +13,18 @@
 					<el-form-item>
 						<el-button type="primary" @click="list()" icon="el-icon-search">查询</el-button>
 						<el-button @click="resetSearch()" icon="el-icon-refresh-right">重置</el-button>
-						<el-button type="primary" @click="addGoods()" icon="el-icon-goods">新增商品</el-button>
 					</el-form-item>
 				</el-form>
 				<vxe-table border="inner" auto-resize resizable height="500px" :loading="loading" ref="typeTable"
 					show-header-overflow show-overflow highlight-hover-row :menu-config="{}"
 					:sort-config="{ remote: true }" :data="dataList"
 					:tree-config="{ transform: true, rowField: 'id', parentField: 'parentId', expandAll: true }"
-					:radio-config="radioConfig">
+					:checkbox-config="{}">
 					<vxe-column type="seq" width="60" title="序号"></vxe-column>
 					<!--          <vxe-column type="checkbox" width="40" ></vxe-column>-->
 					<vxe-column type="radio" width="60"></vxe-column>
 					<vxe-column title="内容名称" field="name" align="left" tree-node></vxe-column>
-					<vxe-column title="品牌" width="180" field="brand"></vxe-column>
-					<vxe-column title="规格" width="180" field="specification"></vxe-column>
-					<vxe-column title="单位" width="180" field="company"></vxe-column>
-					<!-- <vxe-column width="100" title="序号" field="sort"></vxe-column> -->
+					<vxe-column width="100" title="序号" field="sort"></vxe-column>
 				</vxe-table>
 			</div>
 			<template #footer>
@@ -39,23 +35,14 @@
 				</span>
 			</template>
 		</el-dialog>
-		<TypeForm ref="typeForm" @refreshDataList="list"></TypeForm>
 	</div>
 </template>
 
 <script>
 import MaterialTypeService from '@/api/psi/MaterialTypeService'
-import TypeForm from '../materialType/TypeForm'
 export default {
 	data() {
-		const radioConfig = {
-			trigger: 'row',
-			checkMethod: ({ row }) => {
-				return row.infoType === '1' || row.infoType === 1
-			}
-		}
 		return {
-			radioConfig,
 			searchForm: {
 				name: ''
 			},
@@ -77,7 +64,6 @@ export default {
 		this.materialTypeService = new MaterialTypeService()
 	},
 	components: {
-		TypeForm
 	},
 	methods: {
 		init() {
@@ -92,8 +78,8 @@ export default {
 				return
 			}
 			rows = this.$refs.typeTable.getRadioRecord()
-			if (!this.isGoods(rows)) {
-				this.$message.error('请选择商品数据')
+			if (rows.children.length > 0) {
+				this.$message.error('请选择子集数据')
 				return
 			}
 			this.$emit('getProgramForType', rows)
@@ -109,9 +95,6 @@ export default {
 				})
 			})
 		},
-		isGoods(row) {
-			return row && (row.infoType === '1' || row.infoType === 1)
-		},
 		// 当前页
 		currentChangeHandle({ currentPage, pageSize }) {
 			this.tablePage.currentPage = currentPage
@@ -122,9 +105,6 @@ export default {
 			this.$refs.searchForm.resetFields()
 			this.list()
 		},
-		addGoods() {
-			this.$refs.typeForm.init('addGoods')
-		},
 		close() {
 			this.detail = ''
 			this.visible = false

+ 0 - 1
src/views/psiManagement/info/MaterialTypePullFormByOption.vue

@@ -7,7 +7,6 @@
 					show-header-overflow show-overflow highlight-hover-row :menu-config="{}"
 					:sort-config="{ remote: true }" :data="dataList"
 					:tree-config="{ transform: true, rowField: 'collectTypeId', parentField: 'parentId', expandAll: true }"
-					:radio-config="{ trigger: 'row' }"
 					:checkbox-config="{}">
 					<vxe-column type="seq" width="60" title="序号"></vxe-column>
 					<!--          <vxe-column type="checkbox" width="40" ></vxe-column>-->

+ 3 - 3
src/views/psiManagement/info/UpdateInfoForm.vue

@@ -170,9 +170,9 @@
 								<template #default="scope">
 									<vxe-button status="danger" size="small" v-if="method !== 'view'"
 										@click="removeEvent(scope.row, scope.$rowIndex, 'detail')">删除</vxe-button>
-									<vxe-button status="primary" size="small" v-show="false" v-if="method !== 'view'"
+									<vxe-button status="primary" size="small" v-if="method !== 'view'"
 										@click="sss(scope.$rowIndex)">上传附件</vxe-button>
-									<vxe-button status="primary" size="small" v-show="false" v-if="method === 'view'" :disabled="false"
+									<vxe-button status="primary" size="small" v-if="method === 'view'" :disabled="false"
 										@click="seeFileInfo(scope.$rowIndex)">查看文件详情</vxe-button>
 									<!--              <el-button  v-if="formReadOnly" :disabled="false" type="primary" @click="seeFileInfo(scope.$rowIndex)">查看文件详情</el-button>-->
 								</template>
@@ -235,7 +235,7 @@
 
 			</el-form>
 			<!-- 附件 -->
-			<UpLoadComponent v-show="false" ref="uploadComponent"></UpLoadComponent>
+			<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 			<MaterialManagementDialog ref="materialManagementDialog" @getUpload="getUpload"></MaterialManagementDialog>
 			<CwProgramPageForm ref="cwProgramPageForm" @getProgram="getProgram"></CwProgramPageForm>
 			<MaterialTypePullForm ref="materialTypePullForm" @getProgramForType="getProgramForType">

+ 73 - 106
src/views/psiManagement/loss/LossForm.vue

@@ -42,7 +42,7 @@
 			<el-divider content-position="left">
 				<i class="el-icon-document"></i> 报损明细
 				<el-button style="margin-left: 20px" type="primary" plain
-					:disabled="method === 'view' || formReadOnly"
+					:disabled="method === 'view' || formReadOnly || inputForm.detailInfos.length > 0"
 					@click="insertEvent()">
 					新增
 				</el-button>
@@ -55,67 +55,52 @@
 						highlight-current-row
 						:edit-config="{ trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: '-' }"
 						:edit-rules="validRules">
-						<!-- <vxe-table-column field="recipientAgent" title="报损人" :edit-render="{}"
+						<vxe-table-column field="recipientAgent" title="报损人" :edit-render="{}"
 							:rules="[{ required: true, message: '请选择报损人', trigger: 'blur' }]">
 							<template #edit="scope">
 								<el-input v-model="scope.row.recipientAgent"
 									:disabled="formReadOnly || method === 'view'"
 									@focus="userPullListForm(scope.$rowIndex)" />
 							</template>
-</vxe-table-column>
-<vxe-table-column field="recipientOffice" title="报损人部门" :edit-render="{}">
-	<template #edit="scope">
+						</vxe-table-column>
+						<vxe-table-column field="recipientOffice" title="报损人部门" :edit-render="{}">
+							<template #edit="scope">
 								<el-input v-model="scope.row.recipientOffice" disabled />
 							</template>
-</vxe-table-column> -->
-						<vxe-table-column field="collectType" title="商品名称" :edit-render="{}"
-							:rules="[{ required: true, message: '请选择商品名称', trigger: 'blur' }]">
+						</vxe-table-column>
+						<vxe-table-column field="collectType" title="物品类型" :edit-render="{}"
+							:rules="[{ required: true, message: '请选择物品类型', trigger: 'blur' }]">
 							<template #edit="scope">
 								<el-input v-model="scope.row.collectType" :disabled="formReadOnly || method === 'view'"
 									@focus="typePullForm(scope.$rowIndex)" />
 							</template>
 						</vxe-table-column>
-						<!-- <vxe-table-column field="goodsName" title="物品名称" :edit-render="{}"
+						<vxe-table-column field="goodsName" title="物品名称" :edit-render="{}"
 							:rules="[{ required: true, message: '请选择物品名称', trigger: 'blur' }]">
 							<template #edit="scope">
 								<el-input v-model="scope.row.goodsName" :disabled="formReadOnly || method === 'view'"
 									@focus="openPurchasePageForm(scope.$rowIndex, scope.row)" />
 							</template>
-						</vxe-table-column> -->
-						<vxe-table-column field="brand" title="品牌">
-						</vxe-table-column>
-						<vxe-table-column field="specification" title="规格">
 						</vxe-table-column>
-						<vxe-table-column field="company" title="单位">
-						</vxe-table-column>
-						<!-- <vxe-table-column field="wareHouseNumber" title="入库批次">
-						</vxe-table-column>
-						<vxe-table-column field="wareHouseDate" title="入库日期">
+						<vxe-table-column field="spec" title="包装规格" :edit-render="{}">
+							<template #edit="scope">
+								<el-input v-model="scope.row.spec" disabled />
+							</template>
 						</vxe-table-column>
-						<vxe-table-column field="surplusNumber" title="批次库存">
-						</vxe-table-column> -->
-						<!-- <vxe-table-column field="produceDate" title="生产日期" :edit-render="{}">
+						<vxe-table-column field="produceDate" title="生产日期" :edit-render="{}">
 							<template #edit="scope">
 								<el-date-picker v-model="scope.row.produceDate" type="date" value-format="YYYY-MM-DD"
 									style="width: 100%" disabled />
 							</template>
-						</vxe-table-column> -->
+						</vxe-table-column>
 						<vxe-table-column field="lossNumber" title="报损数量" :title-suffix="numberTitleSuffix"
 							:edit-render="{}" :rules="[{ required: true, message: '请输入报损数量', trigger: 'blur' }]">
 							<template #edit="scope">
 								<el-input v-model="scope.row.lossNumber" maxlength="10"
 									:disabled="formReadOnly || method === 'view'"
-									@input="scope.row.lossNumber = normalizeNumber($event)"
 									@blur="handleLossNumberBlur(scope.row)" />
 							</template>
 						</vxe-table-column>
-						<vxe-table-column field="lossReason" title="报损原因" min-width="220" :edit-render="{}"
-							:rules="[{ required: true, message: '请输入报损原因', trigger: 'blur' }]">
-							<template #edit="scope">
-								<el-input v-model="scope.row.lossReason"
-									:disabled="formReadOnly || method === 'view'" />
-							</template>
-						</vxe-table-column>
 						<!-- <vxe-table-column field="currentInventory" title="当前库存" :edit-render="{}">
 							<template #edit="scope">
 								<el-input v-model="scope.row.currentInventory" disabled />
@@ -196,10 +181,9 @@ export default {
 			},
 			validRules: {
 				recipientAgent: [{ required: true, message: "报损人不能为空" }],
-				collectType: [{ required: true, message: "商品不能为空" }],
-				// goodsName: [{ required: true, message: "物品名称不能为空" }],
+				collectType: [{ required: true, message: "物品类型不能为空" }],
+				goodsName: [{ required: true, message: "物品名称不能为空" }],
 				lossNumber: [{ required: true, message: "报损数量不能为空" }],
-				lossReason: [{ required: true, message: "报损原因不能为空" }],
 			},
 			method: "",
 			loading: false,
@@ -297,13 +281,15 @@ export default {
 							this.loading = false;
 						});
 				} else {
-					const lossDate = this.moment(new Date()).format('YYYY-MM-DD')
-					this.inputForm.lossDate = lossDate
 					this.$refs.uploadComponent.newUpload(this.method ? this.method : "view", [], "psi");
 				}
 			});
 		},
 		insertEvent() {
+			if (this.inputForm.detailInfos.length > 0) {
+				this.$message.warning("报损明细只能保留一条");
+				return;
+			}
 			this.$refs.detailTable.insert().then(row => {
 				row.recipientAgent = this.$store.state.user.name;
 				row.recipientAgentId = this.$store.state.user.id;
@@ -501,19 +487,16 @@ export default {
 		},
 		typePullForm(rowIndex) {
 			this.indexRow = rowIndex;
-			this.$refs.purchasePageForm.init();
+			this.$refs.materialTypePullForm.init();
 		},
 		getProgramForType(row) {
 			const detail = this.inputForm.detailInfos[this.indexRow];
 			detail.collectTypeId = row.id;
 			detail.collectType = row.name;
-			detail.goodsName = row.name;
-			detail.brand = row.brand;
-			detail.specification = row.specification;
-			detail.company = row.company;
-			detail.spec = "1";
+			detail.goodsName = "";
+			detail.spec = "";
 			detail.produceDate = "";
-			detail.surplusNumber = row.currentInventory;
+			detail.surplusNumber = "";
 			this.indexRow = "";
 			this.$forceUpdate();
 		},
@@ -531,7 +514,7 @@ export default {
 		},
 		openPurchasePageForm(rowIndex, row) {
 			if (this.commonJS.isEmpty(row.collectTypeId)) {
-				this.$message.error("请先选择商品");
+				this.$message.error("请先选择物品类型");
 				return;
 			}
 			this.indexRow = rowIndex;
@@ -539,22 +522,14 @@ export default {
 		},
 		getContract(row) {
 			const detail = this.inputForm.detailInfos[this.indexRow];
-			detail.inventoryId = row.id;
-			detail.collectTypeId = row.wareHouseType;
-			detail.collectType = row.tradeName;
 			detail.goodsName = row.tradeName;
 			detail.company = row.company || detail.company;
-			detail.brand = row.brand || detail.brand;
-			detail.specification = row.specification || detail.specification;
-			detail.wareHouseNumber = row.wareHouseNumber || "";
-			detail.wareHouseDate = row.wareHouseDate || "";
 			detail.produceDate = row.produceDate || "";
 			detail.shelfLife = row.shelfLife || "";
 			detail.shelfLifeUnit = row.shelfLifeUnit || "";
 			detail.currentInventory = row.currentInventory || "";
 			detail.spec = row.spec || "";
 			detail.company = row.company || "";
-			detail.surplusNumber = this.formatBatchStock(row.currentInventory, row.spec);
 
 			// this.loadInventorySummary(detail);
 			this.indexRow = "";
@@ -598,18 +573,26 @@ export default {
 			if (this.commonJS.isEmpty(num)) {
 				return "";
 			}
-			let str = String(num).replace(/[^\d.]/g, "");
-			if (str.endsWith(".")) {
-				return "";
+			let str = num.toString();
+			const len1 = str.substr(0, 1);
+			const len2 = str.substr(1, 1);
+			if (str.length > 1 && len1 === "0" && len2 !== ".") {
+				str = str.substr(1, 1);
+			}
+			if (len1 === ".") {
+				str = "";
 			}
-			const dotIndex = str.indexOf(".");
-			if (dotIndex !== -1) {
-				const integerPart = str.substring(0, dotIndex);
-				const decimalPart = str.substring(dotIndex + 1).replace(/\./g, "").replace(/[1-9]/g, "");
-				str = integerPart + "." + decimalPart;
+			if (str.indexOf(".") !== -1) {
+				const str2 = str.substr(str.indexOf(".") + 1);
+				if (str2.indexOf(".") !== -1) {
+					str = str.substr(0, str.indexOf(".") + str2.indexOf(".") + 1);
+				}
+				if (str2.length > 2) {
+					this.$message.warning("数量小数点后只能输入两位");
+					return "";
+				}
 			}
-			str = str.replace(/^0+(\d)/, "$1");
-			return str === "." ? "" : str;
+			return str.replace(/[^\d^.]+/g, "");
 		},
 		formatNumber(value) {
 			const num = Number(value || 0);
@@ -618,14 +601,6 @@ export default {
 			}
 			return num % 1 === 0 ? String(num) : num.toFixed(2).replace(/\.?0+$/, "");
 		},
-		formatBatchStock(currentInventory, spec) {
-			const current = Number(currentInventory || 0);
-			const specNumber = Number(spec || 1);
-			if (Number.isNaN(current) || Number.isNaN(specNumber)) {
-				return "0";
-			}
-			return this.formatNumber(current * (specNumber <= 0 ? 1 : specNumber));
-		},
 		validateForm(checkStock = true) {
 			return new Promise(resolve => {
 				this.$refs.inputForm.validate(valid => {
@@ -642,43 +617,35 @@ export default {
 						resolve(false);
 						return;
 					}
-					for (let index = 0; index < this.inputForm.detailInfos.length; index++) {
-						const detail = this.inputForm.detailInfos[index];
-						const lineNo = index + 1;
-						if (this.commonJS.isEmpty(detail.collectType)) {
-							this.$message.error(`报损明细第${lineNo}行请选择商品`);
-							resolve(false);
-							return;
-						}
-						if (this.commonJS.isEmpty(detail.inventoryId)) {
-							this.$message.error(`报损明细第${lineNo}行请选择报损库存批次`);
-							resolve(false);
-							return;
-						}
-						if (this.commonJS.isEmpty(detail.lossNumber)) {
-							this.$message.error(`报损明细第${lineNo}行请输入报损数量`);
-							resolve(false);
-							return;
-						}
-						if (!/^[1-9]\d*(?:\.0+)?$/.test(String(detail.lossNumber))) {
-							this.$message.error(`报损明细第${lineNo}行报损数量请输入正整数`);
-							resolve(false);
-							return;
-						}
-						if (this.commonJS.isEmpty(detail.lossReason)) {
-							this.$message.error(`报损明细第${lineNo}行请输入报损原因`);
-							resolve(false);
-							return;
-						}
-						if (
-							checkStock &&
-							this.commonJS.isNotEmpty(detail.surplusNumber) &&
-							Number(detail.lossNumber) > Number(detail.surplusNumber)
-						) {
-							this.$message.error(`报损明细第${lineNo}行报损数量不能大于当前库存`);
-							resolve(false);
-							return;
-						}
+					const detail = this.inputForm.detailInfos[0];
+					if (this.commonJS.isEmpty(detail.recipientAgent)) {
+						this.$message.error("请选择报损人");
+						resolve(false);
+						return;
+					}
+					if (this.commonJS.isEmpty(detail.collectType)) {
+						this.$message.error("请选择物品类型");
+						resolve(false);
+						return;
+					}
+					if (this.commonJS.isEmpty(detail.goodsName)) {
+						this.$message.error("请选择物品名称");
+						resolve(false);
+						return;
+					}
+					if (this.commonJS.isEmpty(detail.lossNumber)) {
+						this.$message.error("请输入报损数量");
+						resolve(false);
+						return;
+					}
+					if (
+						checkStock &&
+						this.commonJS.isNotEmpty(detail.surplusNumber) &&
+						Number(detail.lossNumber) > Number(detail.surplusNumber)
+					) {
+						this.$message.error("报损数量不能大于当前库存");
+						resolve(false);
+						return;
 					}
 					resolve(true);
 				});

+ 2 - 6
src/views/psiManagement/loss/PurchasePageForm.vue

@@ -21,12 +21,8 @@
 					:radio-config="{ trigger: 'row' }">
 					<vxe-column type="seq" width="60" title="序号"></vxe-column>
 					<vxe-column type="radio" width="60px"></vxe-column>
-					<vxe-column min-width="160" align="center" title="入库批次" field="wareHouseNumber"></vxe-column>
-					<vxe-column min-width="140" align="center" title="入库日期" field="wareHouseDate"></vxe-column>
 					<vxe-column min-width="230" align="center" title="商品名称" field="tradeName"></vxe-column>
-					<vxe-column min-width="120" align="center" title="品牌" field="brand"></vxe-column>
-					<vxe-column min-width="120" align="center" title="规格" field="specification"></vxe-column>
-					<!-- <vxe-column min-width="230" align="center" title="生产日期" field="produceDate"></vxe-column> -->
+					<vxe-column min-width="230" align="center" title="生产日期" field="produceDate"></vxe-column>
 					<vxe-column min-width="230" align="center" title="库存量" field="currentInventory"></vxe-column>
 					<!--          <vxe-column min-width="230" align="center" title="商品数量" field="tradeNumber"></vxe-column>-->
 
@@ -95,7 +91,7 @@ export default {
 				this.$message.error('请选择一条数据')
 				return
 			}
-			if (Number(row.currentInventory || 0) <= 0) {
+			if (row.tradeNumber == "0") {
 				this.$message.error('暂无库存,请选择其他商品')
 				return
 			}

+ 55 - 84
src/views/psiManagement/materialType/TypeForm.vue

@@ -1,50 +1,33 @@
 <template>
 	<div>
-		<el-dialog :title="title" :close-on-click-modal="false" draggable width="500px" append-to-body @close="close"
+		<el-dialog :title="title" :close-on-click-modal="false" draggable width="500px" @close="close"
 			@keyup.enter.native="doSubmit" v-model="visible">
 			<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method === 'view' ? 'readonly' : ''"
 				:disabled="method === 'view'" label-width="100px" @submit.native.prevent>
 				<el-row :gutter="15">
 					<el-col :span="21">
-						<el-form-item label="所属分类" prop="parentId" :rules="isGoods ? [
-							{ required: true, message: '所属分类不能为空', trigger: 'change' }
-						] : []">
+						<el-form-item label="上级节点" prop="parentId">
 							<SelectTree ref="areaTree" v-if="visible" :props="{
 								value: 'id',             // ID字段名
 								label: 'name',         // 显示名称
 								children: 'children'    // 子级字段名
-							}" url="/psi-management-server/psi/materialType/treeData?type=5&hideGoods=true" :value="inputForm.parentId"
-								:disabled="isParentLocked" :clearable="!isParentLocked" :accordion="true" size="default"
+							}" url="/psi-management-server/psi/materialType/treeData?type=5" :value="inputForm.parentId" :clearable="true"
+								:accordion="true" size="default"
 								@getValue="(value) => { inputForm.parentId = value }" />
 						</el-form-item>
 					</el-col>
 					<el-col :span="21">
-						<el-form-item label="名称" prop="name" :rules="[
-							{ required: true, message: '名称不能为空', trigger: 'blur' }
+						<el-form-item label="物资名称" prop="name" :rules="[
+							{ required: true, message: '物资名称不能为空', trigger: 'blur' }
 						]">
-							<el-input v-model="inputForm.name" placeholder="请填写名称"></el-input>
+							<el-input v-model="inputForm.name" placeholder="请填写物资名称"></el-input>
 						</el-form-item>
 					</el-col>
-					<el-col v-if="isGoods" :span="21">
-						<el-form-item label="品牌" prop="brand">
-							<el-input v-model="inputForm.brand" placeholder="请填写品牌"></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col v-if="isGoods" :span="21">
-						<el-form-item label="规格" prop="specification">
-							<el-input v-model="inputForm.specification" placeholder="请填写规格"></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col v-if="isGoods" :span="21">
-						<el-form-item label="单位" prop="company">
-							<el-input v-model="inputForm.company" placeholder="请填写单位"></el-input>
-						</el-form-item>
-					</el-col>
-					<!-- <el-col :span="21">
+					<el-col :span="21">
 						<el-form-item label="序号" prop="sort">
 							<el-input v-model="inputForm.sort" :disabled="true" show-word-limit></el-input>
 						</el-form-item>
-					</el-col> -->
+					</el-col>
 				</el-row>
 			</el-form>
 			<template #footer>
@@ -59,20 +42,11 @@
 </template>
 
 <script>
+// import ReimbursementTypeService from '@/api/sys/ReimbursementTypeService'
+import ReimbursementApprovalTypeService from '@/api/cw/reimbursementApproval/ReimbursementApprovalTypeService'
 import MaterialTypeService from '@/api/psi/MaterialTypeService'
 import SelectTree from '@/components/treeSelect/treeSelect.vue'
-
-const defaultInputForm = () => ({
-	businessType: '',
-	infoType: '0',
-	name: '',
-	brand: '',
-	specification: '',
-	company: '',
-	sort: '',
-	parentId: ''
-})
-
+// import OfficeService from '@/api/sys/OfficeService'
 export default {
 	data() {
 		return {
@@ -81,54 +55,48 @@ export default {
 			method: '',
 			visible: false,
 			loading: false,
-			parentLocked: false,
-			inputForm: defaultInputForm()
+			inputForm: {
+				businessType: '',
+				name: '',
+				sort: '',
+				parentId: ''
+			}
 		}
 	},
+	// reimbursementTypeService: null,
+	reimbursementApprovalTypeService: null,
 	materialTypeService: null,
+	// OfficeService: null,
 	created() {
+		// this.reimbursementTypeService = new ReimbursementTypeService()
+		this.reimbursementApprovalTypeService = new ReimbursementApprovalTypeService()
 		this.materialTypeService = new MaterialTypeService()
+		// this.officeService = new OfficeService()
 	},
 	components: {
 		SelectTree
 	},
-	computed: {
-		isGoods() {
-			return this.inputForm.infoType === '1' || this.inputForm.infoType === 1
-		},
-		isParentLocked() {
-			return this.parentLocked
-		}
-	},
 	methods: {
 		init(method, id, businessType) {
 			this.method = method
-			this.parentLocked = false
-			this.inputForm = defaultInputForm()
+			this.inputForm = {
+				businessType: '',
+				name: '',
+				sort: '',
+				parentId: ''
+			}
 			if (method === 'add') {
-				this.title = `新建物资分类`
+				this.title = `新建报销类型`
 			} else if (method === 'edit') {
 				this.inputForm.id = id
-				this.title = '修改物资信息'
+				this.title = '修改报销类型'
 			} else if (method === 'view') {
 				this.inputForm.id = id
-				this.title = '查看物资信息'
+				this.title = '查看报销类型'
 			} else if (method === 'addChild') {
 				this.title = '添加下级结构'
-				this.parentLocked = true
-				this.inputForm.infoType = '0'
 				this.inputForm.parentId = id
 				this.inputForm.businessType = businessType
-			} else if (method === 'addGoods') {
-				this.title = '添加商品'
-				this.inputForm.infoType = '1'
-				if (id) {
-					this.parentLocked = true
-					this.inputForm.parentId = id
-				}
-				if (businessType) {
-					this.inputForm.businessType = businessType
-				}
 			}
 			this.visible = true
 			this.loading = false
@@ -136,14 +104,16 @@ export default {
 				if (method === 'edit' || method === 'view') { // 修改或者查看
 					this.loading = true
 					this.$refs.inputForm.resetFields()
-					this.materialTypeService.findById(this.inputForm.id).then((data) => {
-						this.inputForm = this.recover(this.inputForm, this.getResponseData(data))
-						this.inputForm.infoType = this.inputForm.infoType || '0'
+					this.materialTypeService.findById(this.inputForm.id).then(({ data }) => {
+						this.inputForm = this.recover(this.inputForm, data)
 						this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
 						this.loading = false
-					}).catch(() => {
-						this.loading = false
 					})
+					// this.reimbursementTypeService.findById(this.inputForm.id).then(({data}) => {
+					//   this.inputForm = this.recover(this.inputForm, data)
+					//   this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
+					//   this.loading = false
+					// })
 				}
 			})
 		},
@@ -152,33 +122,34 @@ export default {
 			this.$refs['inputForm'].validate((valid) => {
 				if (valid) {
 					this.loading = true
-					this.materialTypeService.save(this.inputForm).then((data) => {
-						const result = this.getResponseData(data)
-						if (result === '商品节点下不能新增下级') {
-							this.$message.error(result)
+					this.materialTypeService.save(this.inputForm).then(({ data }) => {
+						if (data === false) {
+							this.close()
+							this.$message.error('物资名称重复,请重新填写')
+							this.$emit('refreshDataList')
 							this.loading = false
 						} else {
 							this.close()
-							this.$message.success(result)
+							this.$message.success(data)
 							this.$emit('refreshDataList')
 							this.loading = false
 						}
 					}).catch(() => {
 						this.loading = false
 					})
+					// this.reimbursementTypeService.save(this.inputForm).then(({data}) => {
+					//   this.close()
+					//   this.$message.success(data)
+					//   this.$emit('refreshDataList')
+					//   this.loading = false
+					// }).catch(() => {
+					//   this.loading = false
+					// })
 				}
 			})
 		},
-		getResponseData(data) {
-			if (data && Object.prototype.hasOwnProperty.call(data, 'data')) {
-				return data.data
-			}
-			return data
-		},
 		close() {
-			if (this.$refs.inputForm) {
-				this.$refs.inputForm.resetFields()
-			}
+			this.$refs.inputForm.resetFields()
 			this.visible = false
 		}
 	}

+ 5 - 18
src/views/psiManagement/materialType/TypeList.vue

@@ -21,8 +21,6 @@
 				<template #buttons>
 					<el-button v-if="hasPermission('psi:type:add')" type="primary" icon="el-icon-plus"
 						@click="add()">新建</el-button>
-					<el-button v-if="hasPermission('psi:type:add')" type="primary" icon="el-icon-goods"
-						@click="addGoods()">添加商品</el-button>
 					<!--          <el-button v-if="hasPermission('program:configuration:type:del')" type="danger"  icon="el-icon-delete" @click="del()" :disabled="$refs.typeTable && $refs.typeTable.getCheckboxRecords().length === 0" plain>删除</el-button>-->
 				</template>
 			</vxe-toolbar>
@@ -34,20 +32,15 @@
 					:checkbox-config="{}">
 					<vxe-column type="seq" width="60" title="序号"></vxe-column>
 					<vxe-column type="checkbox" width="60"></vxe-column>
-					<vxe-column title="物资名称" field="name" tree-node></vxe-column>
-					<vxe-column title="品牌" width="180" field="brand"></vxe-column>
-					<vxe-column title="规格" width="180" field="specification"></vxe-column>
-					<vxe-column title="单位" width="180" field="company"></vxe-column>
-					<!-- <vxe-column width="100" title="序号" field="sort"></vxe-column> -->
+					<vxe-column title="物资名称" field="name" align="left" tree-node></vxe-column>
+					<vxe-column width="100" title="序号" field="sort"></vxe-column>
 
-					<vxe-column title="操作" width="320px" fixed="right" align="center">
+					<vxe-column title="操作" width="230px" fixed="right" align="center">
 						<template #default="scope">
 							<el-button
-								v-if="hasPermission('psi:type:edit') && isCategory(scope.row) && (scope.row.level === '1' || scope.row.level === '2' || scope.row.level === '3' || scope.row.level === '4')"
+								v-if="hasPermission('psi:type:edit') && (scope.row.level === '1' || scope.row.level === '2' || scope.row.level === '3' || scope.row.level === '4')"
 								text type="primary"
-								@click="addChild(scope.row.id, scope.row.businessType)">添加下级分类</el-button>
-							<el-button v-if="hasPermission('psi:type:edit') && isCategory(scope.row)" text
-								type="primary" @click="addGoods(scope.row.id, scope.row.businessType)">添加商品</el-button>
+								@click="addChild(scope.row.id, scope.row.businessType)">添加下级结构</el-button>
 							<el-button v-if="hasPermission('psi:type:edit')" text type="primary"
 								@click="edit(scope.row.id)">修改</el-button>
 							<el-button v-if="hasPermission('psi:type:remove')" text type="primary"
@@ -103,12 +96,6 @@ export default {
 		addChild(id, businessType) {
 			this.$refs.typeForm.init('addChild', id, businessType)
 		},
-		addGoods(id, businessType) {
-			this.$refs.typeForm.init('addGoods', id, businessType)
-		},
-		isCategory(row) {
-			return !row.infoType || row.infoType === '0' || row.infoType === 0
-		},
 		// 修改
 		edit(id) {
 			id = id || this.$refs.typeTable.getCheckboxRecords().map(item => {

+ 54 - 75
src/views/psiManagement/purchase/PurchaseForm.vue

@@ -76,32 +76,33 @@
 			</el-divider>
 			<el-row :gutter="15">
 				<el-col :span="24">
-					<vxe-table border show-footer show-overflow ref="detailTable" class="vxe-table-element"
-						:data="inputForm.detailInfos" :key="clientTableKey" style="margin-left: 5em"
-						highlight-current-row
+					<vxe-table border show-footer show-overflow :footer-method="footerMethod" ref="detailTable"
+						class="vxe-table-element" :data="inputForm.detailInfos" :key="clientTableKey"
+						style="margin-left: 5em" highlight-current-row
 						:edit-config="{ trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: '-' }"
 						:edit-rules="validRules">
-						<!-- <vxe-table-column align="center" field="purchaserAgent" title="采购人" :edit-render="{}"
+						<vxe-table-column align="center" field="purchaserAgent" title="采购人" :edit-render="{}"
 							:rules="[{ required: true, message: '请选择采购人', trigger: 'blur' }]">
 							<template #edit="scope">
 								<el-input v-model="scope.row.purchaserAgent"
 									@focus="userPullListForm(scope.$rowIndex)"></el-input>
 							</template>
-</vxe-table-column> -->
-						<!-- <vxe-table-column align="center" field="procurementOffice" title="采购部门" :edit-render="{}">
+						</vxe-table-column>
+						<vxe-table-column align="center" field="procurementOffice" title="采购部门" :edit-render="{}">
 							<template #edit="scope">
 								<el-input :disabled='true' v-model="scope.row.procurementOffice"></el-input>
 							</template>
-						</vxe-table-column> -->
-						<vxe-table-column align="center" field="procurementType" title="商品名称" :edit-render="{}"
-							:rules="[{ required: true, message: '请选择商品', trigger: 'blur' }]">
+						</vxe-table-column>
+						<vxe-table-column align="center" field="procurementType" title="采购类型" :edit-render="{}"
+							:rules="[{ required: true, message: '请选择采购类型', trigger: 'blur' }]">
 							<template v-slot:edit="scope">
 								<el-input v-model="scope.row.procurementType"
 									@focus="typePullForm(scope.$rowIndex)"></el-input>
 							</template>
 						</vxe-table-column>
-						<!-- <vxe-table-column align="center" field="tradeName" title="商品名称" :edit-render="{}" :rules="[]">
+						<vxe-table-column align="center" field="tradeName" title="商品名称" :edit-render="{}" :rules="[]">
 							<template v-slot:edit="scope">
+								<!--              <el-input @change="ifSameValue" v-model="scope.row.tradeName"></el-input>-->
 								<vxe-pulldown ref="xDown1" transfer>
 									<template #default>
 										<vxe-input v-model="scope.row.tradeName"
@@ -119,8 +120,8 @@
 									</template>
 								</vxe-pulldown>
 							</template>
-						</vxe-table-column> -->
-						<!-- <vxe-table-column align="center" field="supplierName" title="供应商" :edit-render="{}"
+						</vxe-table-column>
+						<vxe-table-column align="center" field="supplierName" title="供应商" :edit-render="{}"
 							:rules="[{ required: true, message: '请选择供应商', trigger: 'blur' }]">
 							<template v-slot:edit="scope">
 								<vxe-pulldown ref="xDown4" transfer>
@@ -146,16 +147,16 @@
 									</template>
 								</vxe-pulldown>
 							</template>
-						</vxe-table-column> -->
-						<!-- <vxe-table-column align="center" field="tradePrice" title="商品单价(元)" :edit-render="{}"
+						</vxe-table-column>
+						<vxe-table-column align="center" field="tradePrice" title="商品单价(元)" :edit-render="{}"
 							:rules="[]">
 							<template v-slot:edit="scope">
+								<!--              <el-input @change="changeValue" maxlength="15" v-model="scope.row.tradePrice" @keyup.native="scope.row.tradePrice = twoDecimalPlaces(scope.row.tradePrice)"></el-input>-->
 								<el-input @change="changeValue" maxlength="15" v-model="scope.row.tradePrice"
 									@blur="scope.row.tradePrice = twoDecimalPlaces2(scope.row.tradePrice)"></el-input>
 							</template>
-						</vxe-table-column> -->
-						<vxe-table-column align="center" field="tradeNumber" title="采购数量" :edit-render="{}"
-							:rules="[{ required: true, message: '请填写采购数量', trigger: 'blur' }]">
+						</vxe-table-column>
+						<vxe-table-column align="center" field="tradeNumber" title="商品数量" :edit-render="{}">
 							<template v-slot:edit="scope">
 								<!--              <el-input @change="changeValue" v-model="scope.row.tradeNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>-->
 								<el-input @change="changeValue" v-model="scope.row.tradeNumber"
@@ -163,24 +164,13 @@
 									maxlength="10"></el-input>
 							</template>
 						</vxe-table-column>
-						<!-- <vxe-table-column align="center" field="priceSum" title="商品总价" :edit-render="{}">
+						<vxe-table-column align="center" field="priceSum" title="商品总价" :edit-render="{}">
 							<template v-slot:edit="scope">
 								<el-input v-model="scope.row.priceSum" :readonly="true" maxlength="15"></el-input>
-							</template>
-						</vxe-table-column> -->
-						<vxe-table-column align="center" field="brand" title="品牌"
-							:rules="[{ required: true, message: '请填写品牌', trigger: 'blur' }]">
-							<template v-slot:edit="scope">
-								<el-input v-model="scope.row.brand"></el-input>
-							</template>
-						</vxe-table-column>
-						<vxe-table-column align="center" field="specification" title="规格"
-							:rules="[{ required: true, message: '请填写规格', trigger: 'blur' }]">
-							<template v-slot:edit="scope">
-								<el-input v-model="scope.row.specification"></el-input>
+								<!--              <el-input v-model="scope.row.priceSum" @blur="scope.row.priceSum = twoDecimalPlaces(scope.row.priceSum, scope.$rowIndex)" maxlength="15"></el-input>-->
 							</template>
 						</vxe-table-column>
-						<vxe-table-column align="center" field="company" title="单位"
+						<vxe-table-column align="center" field="company" title="单位" :edit-render="{}"
 							:rules="[{ required: true, message: '请填写单位', trigger: 'blur' }]">
 							<template v-slot:edit="scope">
 								<el-input v-model="scope.row.company"></el-input>
@@ -196,10 +186,10 @@
 								<vxe-button size="small" :disabled="status === 'audit' || status === 'taskFormDetail'"
 									status="danger"
 									@click="removeEvent(scope.row, scope.$rowIndex, 'detail')">删除</vxe-button>
-								<vxe-button size="small" status="primary" v-show="false"
+								<vxe-button size="small" status="primary"
 									:disabled="status === 'audit' || status === 'taskFormDetail'"
 									@click="sss(scope.$rowIndex)">上传附件</vxe-button>
-								<vxe-button size="small" status="primary" v-show="false"
+								<vxe-button size="small" status="primary"
 									v-if="status === 'audit' || status === 'taskFormDetail'" :disabled="false"
 									@click="seeFileInfo(scope.$rowIndex)">查看文件详情</vxe-button>
 							</template>
@@ -212,7 +202,7 @@
 		</el-form>
 		<!-- 附件 -->
 		<MaterialManagementDialog ref="materialManagementDialog" @getUpload="getUpload"></MaterialManagementDialog>
-		<UpLoadComponent v-show="false" ref="uploadComponent"></UpLoadComponent>
+		<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 		<CwProgramPageForm ref="cwProgramPageForm" @getProgram="getProgram"></CwProgramPageForm>
 		<MaterialTypePullForm ref="materialTypePullForm" @getProgramForType="getProgramForType"></MaterialTypePullForm>
 		<!--      <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm" @getProgramForType="getProgramForType"></CwReimbursementTypePullForm>-->
@@ -236,18 +226,18 @@ export default {
 	data() {
 		return {
 			validRules: {
-				// purchaserAgent: [
-				// 	{ required: true, message: '采购人不能为空' }
-				// ],
-				// procurementOffice: [
-				// 	{ required: true, message: '采购部门不能为空' }
-				// ],
-				procurementType: [
-					{ required: true, message: '商品不能为空' }
+				purchaserAgent: [
+					{ required: true, message: '采购人不能为空' }
 				],
-				tradeNumber: [
-					{ required: true, message: '采购数量不能为空' }
+				procurementOffice: [
+					{ required: true, message: '采购部门不能为空' }
 				],
+				procurementType: [
+					{ required: true, message: '采购类型不能为空' }
+				],
+				tradeName: [
+					{ required: true, message: '商品名称不能为空' }
+				]
 			},
 			title: '',
 			method: '',
@@ -369,7 +359,6 @@ export default {
 		},
 		init(method, id) {
 			this.method = method
-			const purchaseDate = this.moment(new Date()).format('YYYY-MM-DD')
 			this.inputForm = {
 				tradeTotalPrice: '',  // 商品总价
 				fileInfoLost: [],
@@ -377,10 +366,10 @@ export default {
 				handledByOffice: '',
 				handledBy: this.$store.state.user.name,
 				handledById: this.$store.state.user.id,
-				purchaseSketch: method === 'add' ? this.buildPurchaseSketch(purchaseDate) : '',
+				purchaseSketch: '',
 				purchaseNo: '', // 采购编号
 				userId: this.$store.state.user.id,
-				purchaseDate: purchaseDate,
+				purchaseDate: this.moment(new Date()).format('YYYY-MM-DD'),
 				remarks: '',
 				detailInfos: [],
 				procInsId: '',
@@ -444,10 +433,7 @@ export default {
 							this.inputForm.handledById = this.$store.state.user.id
 						}
 						if (this.commonJS.isEmpty(this.inputForm.purchaseDate)) {
-							this.inputForm.purchaseDate = purchaseDate
-						}
-						if (this.commonJS.isEmpty(this.inputForm.purchaseSketch)) {
-							this.inputForm.purchaseSketch = this.buildPurchaseSketch(this.inputForm.purchaseDate)
+							this.inputForm.purchaseDate = this.moment(new Date()).format('YYYY-MM-DD')
 						}
 						this.inputForm.detailInfos = []
 						this.loading = false
@@ -458,9 +444,6 @@ export default {
 				}
 			})
 		},
-		buildPurchaseSketch(purchaseDate) {
-			return `${this.$store.state.user.name} ${purchaseDate} 申请`
-		},
 		getUpload(p, index) {
 			p.then((list) => {
 				// list为返回数据
@@ -530,7 +513,6 @@ export default {
 					data.purchaserAgentId = this.purchaserAgentId
 					data.purchaserAgent = this.name
 					data.procurementOffice = this.officeName
-					data.spec = '1'
 					this.inputForm.detailInfos.push(data)
 					console.log('this.inputForm.detailInfos', this.inputForm.detailInfos)
 					this.clientTableKey = Math.random()
@@ -613,23 +595,32 @@ export default {
 						let i = this.inputForm.detailInfos.length
 						for (let j = 0; j < i; j++) {
 							let k = j + 1
+							if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].purchaserAgent)) {
+								this.$message.error('采购详情第' + k + '行请选择采购人')
+								this.loading = false
+								return
+							}
 							if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].procurementType)) {
-								this.$message.error('采购详情第' + k + '行请选择商品')
+								this.$message.error('采购详情第' + k + '行请选择采购类型')
 								this.loading = false
 								return
 							}
-							if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].tradeNumber)) {
-								this.$message.error('采购详情第' + k + '行请填写采购数量')
+							if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].tradeName)) {
+								this.$message.error('采购详情第' + k + '行请填写商品名称')
 								this.loading = false
 								return
 							}
 						}
 						for (let j = 0; j < i; j++) {
 							for (let k = j + 1; k < i; k++) {
-								if (String(this.inputForm.detailInfos[j].procurementTypeId) === String(this.inputForm.detailInfos[k].procurementTypeId)) { // 如果采购类型相同
-									this.$message.warning(`采购详情中,同种商品只能输入一条`)
-									this.loading = false
-									throw new Error('采购详情中,同种商品只能输入一条')
+								if (this.inputForm.detailInfos[j].procurementType === this.inputForm.detailInfos[k].procurementType) { // 如果采购类型相同
+									if (this.inputForm.detailInfos[j].tradeName === this.inputForm.detailInfos[k].tradeName) { // 如果商品名称相同
+										if (this.inputForm.detailInfos[j].supplierName === this.inputForm.detailInfos[k].supplierName) {
+											this.$message.warning(`采购详情中,同种采购类型、同一供应商的商品名称只能输入一条`)
+											this.loading = false
+											throw new Error('采购详情中,同种采购类型、同一供应商的商品名称只能输入一条')
+										}
+									}
 								}
 							}
 						}
@@ -840,20 +831,8 @@ export default {
 			this.$refs.materialTypePullForm.init()
 		},
 		getProgramForType(rows) {
-			const exists = this.inputForm.detailInfos.some((item, index) => {
-				return String(index) !== String(this.indexRow) && String(item.procurementTypeId) === String(rows.id)
-			})
-			if (exists) {
-				this.$message.warning('同种商品只能选择一次')
-				return
-			}
 			this.inputForm.detailInfos[this.indexRow].procurementTypeId = rows.id
 			this.inputForm.detailInfos[this.indexRow].procurementType = rows.name
-			this.inputForm.detailInfos[this.indexRow].tradeName = rows.name
-			this.inputForm.detailInfos[this.indexRow].brand = rows.brand
-			this.inputForm.detailInfos[this.indexRow].specification = rows.specification
-			this.inputForm.detailInfos[this.indexRow].spec = rows.spec || '1'
-			this.inputForm.detailInfos[this.indexRow].company = rows.company
 			this.indexRow = ''
 			this.$forceUpdate()
 		},
@@ -895,7 +874,7 @@ export default {
 							this.commonJS.isNotEmpty(this.inputForm.detailInfos[k].tradeName) && this.inputForm.detailInfos[j].tradeName === this.inputForm.detailInfos[k].tradeName) {
 							// parseFloat(item.account).toFixed(2)
 							this.inputForm.detailInfos.splice(k, 1)
-							this.$message.warning(`同种商品只能输入一条信息!`)
+							this.$message.warning(`同种采购类型的商品名称只能输入一条信息!`)
 						}
 					}
 				}

+ 2 - 1
src/views/psiManagement/purchase/PurchaseList.vue

@@ -77,7 +77,8 @@
 							<span v-else>{{ scope.row.purchaseSketch }}</span>
 						</template>
 					</vxe-column>
-					<!-- <vxe-column min-width="160" align="center" title="采购方式" field="purchaseMode"></vxe-column> -->
+					<vxe-column min-width="160" align="center" title="采购方式" field="purchaseMode"></vxe-column>
+					<vxe-column min-width="160" align="center" title="采购金额(元)" field="tradeTotalPrice"></vxe-column>
 					<vxe-column min-width="160" align="center" title="经办人" field="handledByName"></vxe-column>
 					<vxe-column min-width="160" align="center" title="经办人部门" field="handledByOfficeName"></vxe-column>
 					<vxe-column min-width="160" align="center" title="申请时间" field="createDate"></vxe-column>

+ 1 - 1
src/views/psiManagement/supplier/SupplierForm.vue

@@ -198,7 +198,7 @@
 				</el-col>
 			</el-row>
 			<!--    附件-->
-			<UpLoadComponent v-show="false" ref="uploadComponent"></UpLoadComponent>
+			<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 			<template #footer>
 				<span class="dialog-footer">
 					<el-button :loading="loading" @click="close()" icon="el-icon-circle-close">关闭</el-button>

+ 123 - 112
src/views/psiManagement/wareHouse/WareHouseAddForm.vue

@@ -66,21 +66,28 @@
 					</el-divider>
 					<el-row :gutter="15">
 						<el-col :span="24">
-							<vxe-table border show-footer show-overflow ref="detailTable" class="vxe-table-element"
-								:data="inputForm.detailInfos" style="margin-left: 3em">
+							<vxe-table border show-footer show-overflow :footer-method="footerMethod" ref="detailTable"
+								class="vxe-table-element" :data="inputForm.detailInfos" style="margin-left: 3em">
+								<vxe-column min-width="100" align="center" field="purchaserAgent"
+									title="采购人"></vxe-column>
+								<vxe-column min-width="100" align="center" field="procurementOffice"
+									title="采购部门"></vxe-column>
 								<vxe-column min-width="100" align="center" field="procurementType"
-									title="商品名称"></vxe-column>
-								<vxe-column min-width="80" align="center" field="tradeNumber" title="采购数量"></vxe-column>
-								<vxe-column min-width="100" align="center" field="brand" title="品牌"></vxe-column>
-								<vxe-column min-width="100" align="center" field="specification"
-									title="规格"></vxe-column>
+									title="采购类型"></vxe-column>
+								<vxe-column min-width="100" align="center" field="supplierName"
+									title="供应商"></vxe-column>
+								<vxe-column min-width="220" align="center" field="tradeName" title="商品名称"></vxe-column>
+								<vxe-column min-width="100" align="center" field="tradePrice"
+									title="商品单价(元)"></vxe-column>
+								<vxe-column min-width="80" align="center" field="tradeNumber" title="商品数量"></vxe-column>
+								<vxe-column min-width="100" align="center" field="priceSum" title="商品总价"></vxe-column>
 								<vxe-column min-width="100" align="center" field="company" title="单位"></vxe-column>
 								<vxe-column min-width="100" align="center" field="remarks" title="备注"></vxe-column>
 								<vxe-column align="center" title="操作" fixed="right" width="150">
 									<template v-slot="scope">
+										<vxe-button size="small" v-if="method === 'purchaseAdd'" status="primary"
+											:disabled="false" @click="wareHouseAdd(scope.$rowIndex)">入库</vxe-button>
 										<vxe-button size="small" status="primary" :disabled="false"
-											@click="wareHouseAdd(scope.$rowIndex)">入库</vxe-button>
-										<vxe-button v-show="false" size="small" status="primary" :disabled="false"
 											@click="seeFileInfo(scope.$rowIndex)">附件</vxe-button>
 									</template>
 								</vxe-column>
@@ -97,11 +104,12 @@
 				</el-divider>
 				<el-row :gutter="15">
 					<el-col :span="24">
-						<vxe-table border show-footer show-overflow ref="detailTableWare" class="vxe-table-element"
-							:data="inputForm.wareHouse" style="margin-left: 3em" highlight-current-row
+						<vxe-table border show-footer show-overflow :footer-method="footerMethod2" ref="detailTableWare"
+							class="vxe-table-element" :data="inputForm.wareHouse" style="margin-left: 3em"
+							highlight-current-row
 							:edit-config="{ trigger: 'click', mode: 'row', showStatus: false, autoClear: !shelfLifeUnitSelectVisible, icon: '-' }"
 							:edit-rules="validRules" :key="tableKey">
-							<!-- <vxe-table-column min-width="100px" align="center" field="wareHouseMan" title="入库人"
+							<vxe-table-column min-width="100px" align="center" field="wareHouseMan" title="入库人"
 								:edit-render="{}">
 								<template v-slot:edit="scope">
 									<el-input v-model="scope.row.wareHouseMan"
@@ -113,15 +121,15 @@
 								<template v-slot:edit="scope">
 									<el-input :disabled='true' v-model="scope.row.wareHouseManOffice"></el-input>
 								</template>
-							</vxe-table-column> -->
-							<vxe-table-column min-width="100px" align="center" field="wareHouseType" title="商品名称"
+							</vxe-table-column>
+							<vxe-table-column min-width="100px" align="center" field="wareHouseType" title="入库类型"
 								:edit-render="{}">
 								<template v-slot:edit="scope">
 									<el-input v-model="scope.row.wareHouseType"
 										@focus="typePullForm(scope.$rowIndex)"></el-input>
 								</template>
 							</vxe-table-column>
-							<!-- <vxe-table-column min-width="180px" align="center" field="tradeName" title="商品名称"
+							<vxe-table-column min-width="180px" align="center" field="tradeName" title="商品名称"
 								:edit-render="{}">
 								<template v-slot:edit="scope">
 									<vxe-pulldown ref="xDown1" transfer>
@@ -140,8 +148,8 @@
 										</template>
 									</vxe-pulldown>
 								</template>
-							</vxe-table-column> -->
-							<!-- <vxe-table-column min-width="100px" align="center" field="supplierName" title="供应商"
+							</vxe-table-column>
+							<vxe-table-column min-width="100px" align="center" field="supplierName" title="供应商"
 								:edit-render="{}">
 								<template v-slot:edit="scope">
 									<vxe-pulldown ref="xDown4" transfer>
@@ -167,55 +175,54 @@
 										</template>
 									</vxe-pulldown>
 								</template>
-							</vxe-table-column> -->
-							<vxe-table-column min-width="80px" align="center" field="tradeNumber" title="入库数量"
+							</vxe-table-column>
+							<vxe-table-column min-width="80px" align="center" field="tradeNumber" title="商品数量"
 								:edit-render="{}">
 								<template v-slot:edit="scope">
 									<el-input @change="changeValue2" v-model="scope.row.tradeNumber"
-										@input="scope.row.tradeNumber = formatPositiveInteger($event)"
-										@blur="scope.row.tradeNumber = formatPositiveInteger(scope.row.tradeNumber)"
+										@blur="scope.row.tradeNumber = twoDecimalPlaces2(scope.row.tradeNumber)"
 										maxlength="10"></el-input>
 								</template>
 							</vxe-table-column>
-							<vxe-table-column min-width="80px" align="center" field="brand" title="品牌">
-								<template v-slot:edit="scope">
-									<el-input maxlength="64" v-model="scope.row.brand"></el-input>
-								</template>
-							</vxe-table-column>
-							<vxe-table-column min-width="80px" align="center" field="specification" title="规格">
+							<vxe-table-column min-width="80px" align="center" field="company" title="单位"
+								:edit-render="{}">
 								<template v-slot:edit="scope">
-									<el-input maxlength="64" v-model="scope.row.specification"></el-input>
+									<el-input maxlength="64" v-model="scope.row.company"></el-input>
 								</template>
 							</vxe-table-column>
-							<vxe-table-column min-width="80px" align="center" field="company" title="单位">
+							<vxe-table-column min-width="80px" align="center" field="spec" title="包装规格"
+								:edit-render="{}">
 								<template v-slot:edit="scope">
-									<el-input maxlength="64" v-model="scope.row.company"></el-input>
+									<!-- 只能输入数字 -->
+									<el-input maxlength="64" v-model="scope.row.spec"
+										@blur="scope.row.spec = handleCheckNumber(scope.row.spec)"></el-input>
+
 								</template>
 							</vxe-table-column>
-							<!-- <vxe-table-column min-width="80px" align="center" field="tradePrice" title="商品单价(元)"
+							<vxe-table-column min-width="80px" align="center" field="tradePrice" title="商品单价(元)"
 								:edit-render="{}">
 								<template v-slot:edit="scope">
 									<el-input @change="changeValue2" maxlength="15" v-model="scope.row.tradePrice"
 										@blur="scope.row.tradePrice = twoDecimalPlaces2(scope.row.tradePrice)"></el-input>
 								</template>
-							</vxe-table-column> -->
-							<!-- <vxe-table-column min-width="80px" align="center" field="priceSum" title="商品总价"
+							</vxe-table-column>
+							<vxe-table-column min-width="80px" align="center" field="priceSum" title="商品总价"
 								:edit-render="{}">
 								<template v-slot:edit="scope">
 									<el-input :disabled='true' v-model="scope.row.priceSum"
 										@blur="scope.row.priceSum = twoDecimalPlaces(scope.row.priceSum)"
 										maxlength="15"></el-input>
 								</template>
-							</vxe-table-column> -->
-							<!-- <vxe-table-column min-width="180px" align="center" field="produceDate" title="生产日期"
+							</vxe-table-column>
+							<vxe-table-column min-width="180px" align="center" field="produceDate" title="生产日期"
 								:edit-render="{}">
 								<template v-slot:edit="scope">
 									<el-date-picker v-model="scope.row.produceDate" type="date" placement="bottom-start"
 										value-format="YYYY-MM-DD" style="width: 100%" placeholder="选择生产日期">
 									</el-date-picker>
 								</template>
-							</vxe-table-column> -->
-							<!-- <vxe-table-column min-width="160px" align="center" field="shelfLife" title="保质期"
+							</vxe-table-column>
+							<vxe-table-column min-width="160px" align="center" field="shelfLife" title="保质期"
 								:edit-render="{}">
 								<template v-slot="scope">
 									<span v-if="scope.row.shelfLife && scope.row.shelfLifeUnit">
@@ -234,15 +241,15 @@
 										</template>
 									</el-input>
 								</template>
-							</vxe-table-column> -->
-							<!-- <vxe-table-column min-width="80px" align="center" field="actualPrice" title="实际价格"
+							</vxe-table-column>
+							<vxe-table-column min-width="80px" align="center" field="actualPrice" title="实际价格"
 								:edit-render="{}">
 								<template v-slot:edit="scope">
 									<el-input v-model="scope.row.actualPrice"
 										@blur="scope.row.actualPrice = twoDecimalPlaces(scope.row.actualPrice)"
 										maxlength="15"></el-input>
 								</template>
-							</vxe-table-column> -->
+							</vxe-table-column>
 
 							<vxe-table-column min-width="80px" align="center" field="remarks" title="备注"
 								:edit-render="{}">
@@ -252,9 +259,9 @@
 							</vxe-table-column>
 							<vxe-table-column align="center" fixed="right" title="操作" width="220px">
 								<template v-slot="scope">
-									<vxe-button status="primary" v-show="false" :disabled="false"
+									<vxe-button status="primary" v-show="method === 'view'" :disabled="false"
 										@click="seeFileInfo2(scope.$rowIndex)">查看附件</vxe-button>
-									<vxe-button status="primary" v-if="method !== 'view'" v-show="false"
+									<vxe-button status="primary" v-if="method !== 'view'"
 										@click="sss2(scope.$rowIndex)">上传附件</vxe-button>
 									<vxe-button status="danger" v-if="method !== 'view'"
 										@click="removeEvent(scope.row, scope.$rowIndex, 'detail')">删除</vxe-button>
@@ -267,11 +274,7 @@
 			</el-form>
 			<!-- 附件 -->
 			<UpdateInfoForm ref="updateInfoForm"></UpdateInfoForm>
-			<div v-show="method === 'view'">
-				<div v-show="false">
-				<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
-			</div>
-			</div>
+			<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 			<MaterialManagementDialog ref="materialManagementDialog" @getUpload="getUpload"></MaterialManagementDialog>
 			<CwProgramPageForm ref="cwProgramPageForm" @getProgram="getProgram"></CwProgramPageForm>
 			<MaterialTypePullForm ref="materialTypePullForm" @getProgramForType="getProgramForType">
@@ -305,17 +308,29 @@ import ContractChooseForm from '../contract/ContractChooseForm'
 import XEUtils from 'xe-utils'
 import UpdateInfoForm from '../info/UpdateInfoForm'
 import SupplierService from '@/api/psi/SupplierService'
+import { ElMessage, ElMessageBox } from 'element-plus'
 export default {
 	data() {
 		return {
 			validRules: {
+				wareHouseMan: [
+					{ required: true, message: '请选择入库人' }
+				],
 				wareHouseType: [
+					{ required: true, message: '请选择入库类型' }
+				],
+				supplierName: [
+					{ required: true, message: '请选择供应商' }
+				],
+				tradeName: [
 					{ required: true, message: '请填写商品名称' }
 				],
-
 				tradeNumber: [
 					{ required: true, message: '商品数量不能为空' }
 				],
+				spec: [
+					{ required: true, message: '请填写包装规格' }
+				],
 			},
 			purchaseId: '',
 			title: '',
@@ -396,7 +411,6 @@ export default {
 	methods: {
 		init(method, id) {
 			this.method = method
-			const wareHouseDate = this.moment(new Date()).format('YYYY-MM-DD')
 			this.inputForm = {
 				wareHouseTotalPrice: '', // 入库商品总价
 				wareHouseActualPrice: '', // 入库商品实际价格
@@ -407,10 +421,10 @@ export default {
 				handledBy: this.$store.state.user.name,
 				handledById: this.$store.state.user.id,
 				handledByOffice: this.$store.state.user.office.id,
-				wareHouseName: method === 'add' || method === 'purchaseAdd' ? this.buildPurchaseSketch(wareHouseDate) : '', // 入库名称
+				wareHouseName: '',
 				wareHouseNumber: '', // 入库编号
 				userId: this.$store.state.user.id,
-				wareHouseDate: wareHouseDate,
+				wareHouseDate: '',
 				remarks: '',
 				detailInfos: [],
 				wareHouse: [],
@@ -470,13 +484,13 @@ export default {
 						this.loading = false
 					})
 				} else {
+					if (method === 'add') {
+						this.inputForm.wareHouseDate = new Date()
+					}
 					this.$refs.uploadComponent.newUpload(method, this.inputForm.files, 'psi')
 				}
 			})
 		},
-		buildPurchaseSketch(purchaseDate) {
-			return `${this.$store.state.user.name} ${purchaseDate} 入库`
-		},
 		getContract(row) {
 			this.materialManagementService.findById(row.id).then((data) => {
 				this.inputForm.detailInfos = data.detailInfos
@@ -567,19 +581,8 @@ export default {
 			this.$forceUpdate()
 		},
 		getProgramForType(rows) {
-			const exists = this.inputForm.wareHouse.some((item, index) => {
-				return String(index) !== String(this.indexRow) && String(item.wareHouseTypeId) === String(rows.id)
-			})
-			if (exists) {
-				this.$message.warning('同种商品只能选择一次')
-				return
-			}
 			this.inputForm.wareHouse[this.indexRow].wareHouseTypeId = rows.id
 			this.inputForm.wareHouse[this.indexRow].wareHouseType = rows.name
-			this.inputForm.wareHouse[this.indexRow].tradeName = rows.name
-			this.inputForm.wareHouse[this.indexRow].brand = rows.brand
-			this.inputForm.wareHouse[this.indexRow].specification = rows.specification || rows.spec
-			this.inputForm.wareHouse[this.indexRow].company = rows.company
 			// this.inputForm.detailInfos[this.indexRow].procurementType = rows.name
 			this.indexRow = ''
 			this.$forceUpdate()
@@ -655,20 +658,6 @@ export default {
 			str = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
 			return str
 		},
-		formatPositiveInteger(value) {
-			if (value === null || value === undefined || value === '') {
-				return ''
-			}
-			let text = String(value).replace(/[^\d.]/g, '')
-			const dotIndex = text.indexOf('.')
-			if (dotIndex !== -1) {
-				const integerPart = text.substring(0, dotIndex)
-				const decimalPart = text.substring(dotIndex + 1).replace(/\./g, '').replace(/[1-9]/g, '')
-				text = integerPart + '.' + decimalPart
-			}
-			text = text.replace(/^0+(\d)/, '$1')
-			return text === '.' ? '' : text
-		},
 		// 采购人下拉弹窗
 		userPullListForm(rowIndex) {
 			this.indexRow = rowIndex
@@ -758,55 +747,80 @@ export default {
 			let i = this.inputForm.wareHouse.length
 			for (let j = 0; j < i; j++) {
 				let k = j + 1
-				// if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].wareHouseMan)) {
-				// 	this.$message.error('入库详情第' + k + '行请选择入库人')
-				// 	this.loading = false
-				// 	return
-				// }
-				// if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].wareHouseType)) {
-				// 	this.$message.error('入库详情第' + k + '行请选择入库类型')
-				// 	this.loading = false
-				// 	return
-				// }
-				// if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].supplierName) || this.commonJS.isEmpty(this.inputForm.wareHouse[j].supplierId)) {
-				// 	this.$message.error('入库详情第' + k + '行请选择供应商')
-				// 	this.loading = false
-				// 	return
-				// }
+				if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].wareHouseMan)) {
+					this.$message.error('入库详情第' + k + '行请选择入库人')
+					this.loading = false
+					return
+				}
 				if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].wareHouseType)) {
+					this.$message.error('入库详情第' + k + '行请选择入库类型')
+					this.loading = false
+					return
+				}
+				if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].supplierName) || this.commonJS.isEmpty(this.inputForm.wareHouse[j].supplierId)) {
+					this.$message.error('入库详情第' + k + '行请选择供应商')
+					this.loading = false
+					return
+				}
+				if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].tradeName)) {
 					this.$message.error('入库详情第' + k + '行请填写商品名称')
 					this.loading = false
 					return
 				}
 				if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].tradeNumber)) {
-					this.$message.error('入库详情第' + k + '行请填写入库数量')
+					this.$message.error('入库详情第' + k + '行请填写商品数量')
 					this.loading = false
 					this.inputForm.functionFlag = ''
 					return
 				}
-				if (!/^[1-9]\d*(?:\.0+)?$/.test(String(this.inputForm.wareHouse[j].tradeNumber))) {
-					this.$message.error('入库详情第' + k + '行入库数量请输入正整数')
+				if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].spec)) {
+					this.$message.error('入库详情第' + k + '行请填写包装规格')
 					this.loading = false
-					this.inputForm.functionFlag = ''
 					return
 				}
-				// if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].specification)) {
-				// 	this.$message.error('入库详情第' + k + '行请填写规格')
-				// 	this.loading = false
-				// 	return
-				// }
 			}
 			for (let j = 0; j < i; j++) {
 				for (let k = j + 1; k < i; k++) {
 					if (this.inputForm.wareHouse[j].wareHouseTypeId === this.inputForm.wareHouse[k].wareHouseTypeId) { // 如果入库类型相同
-						// 这里直接通过判断供应商的id是否相等,因为入库只允许选择供应商,不允许手填
-						this.$message.warning(`入库详情中,同种入库类型的商品名称只能输入一条`)
-						this.loading = false
-						throw new Error('入库详情中,同种入库类型的商品名称只能输入一条')
+						if (this.inputForm.wareHouse[j].tradeName === this.inputForm.wareHouse[k].tradeName) { // 如果商品名称相同
+							// 这里直接通过判断供应商的id是否相等,因为入库只允许选择供应商,不允许手填
+							if (this.inputForm.wareHouse[j].supplierId === this.inputForm.wareHouse[k].supplierId) {
+								this.$message.warning(`入库详情中,同种入库类型、同一供应商的商品名称只能输入一条`)
+								this.loading = false
+								throw new Error('入库详情中,同种入库类型、同一供应商的商品名称只能输入一条')
+							}
+						}
 					}
 				}
 			}
-			this.handleSubmitData()
+			let submitFlag = false
+			let goodIndex = 0
+			let m = this.inputForm.wareHouse.length
+			for (let j = 0; j < m; j++) {
+				//如果保质期和生产日期有一个为空,就提示
+				if ((this.commonJS.isEmpty(this.inputForm.wareHouse[j].produceDate) && this.commonJS.isNotEmpty(this.inputForm.wareHouse[j].shelfLife)) || (this.commonJS.isNotEmpty(this.inputForm.wareHouse[j].produceDate) && this.commonJS.isEmpty(this.inputForm.wareHouse[j].shelfLife))) {
+					submitFlag = true
+					goodIndex = j
+					break
+				}
+			}
+			if (submitFlag) {
+				ElMessageBox.confirm(
+					'入库详情第' + (goodIndex + 1) + '行的' + this.inputForm.wareHouse[goodIndex].tradeName + '的生产日期或保质期未填写,是否继续提交?',
+					'提示',
+					{
+						confirmButtonText: '确定',
+						cancelButtonText: '取消',
+						type: 'warning',
+					}
+				)
+					.then(() => {
+						this.handleSubmitData()
+					})
+			} else {
+				this.handleSubmitData()
+			}
+
 		},
 		handleSubmitData() {
 			this.$refs['inputForm'].validate((valid) => {
@@ -855,7 +869,6 @@ export default {
 					data.wareHouseManId = this.wareHouseManId
 					data.wareHouseMan = this.name
 					data.wareHouseManOffice = this.officeName
-					data.spec = '1'
 					// this.inputForm.detailInfos.push(data)
 					this.inputForm.wareHouse.push(data)
 					this.tableKey = Math.random()
@@ -904,12 +917,10 @@ export default {
 				tradePrice: this.inputForm.detailInfos[index].tradePrice,
 				company: this.inputForm.detailInfos[index].company,
 				priceSum: this.inputForm.detailInfos[index].priceSum,
-				specification: this.inputForm.detailInfos[index].specification,
-				spec: this.inputForm.detailInfos[index].spec || '1',
-				brand: this.inputForm.detailInfos[index].brand,
 				supplierId: '',
 				supplierName: '',
 				isSupplier: '',
+				spec: "",
 				produceDate: "",
 				shelfLife: "",
 				shelfLifeUnit: "月"

+ 16 - 22
src/views/psiManagement/wareHouse/WareHouseHi.vue

@@ -67,22 +67,21 @@
 					<el-row :gutter="15">
 						<vxe-table border show-footer show-overflow :footer-method="footerMethod" ref="detailTable"
 							class="vxe-table-element" :data="inputForm.detailInfos" style="margin-left: 3em">
-							<!-- <vxe-column min-width="100" align="center" field="purchaserAgent" title="采购人"></vxe-column>
+							<vxe-column min-width="100" align="center" field="purchaserAgent" title="采购人"></vxe-column>
 							<vxe-column min-width="100" align="center" field="procurementOffice"
-								title="采购部门"></vxe-column> -->
+								title="采购部门"></vxe-column>
 							<vxe-column min-width="100" align="center" field="procurementType"
-								title="商品名称"></vxe-column>
-							<!-- <vxe-column min-width="220" align="center" field="tradeName" title="商品名称"></vxe-column> -->
-							<vxe-column min-width="100" align="center" field="brand" title="品牌"></vxe-column>
-							<vxe-column min-width="100" align="center" field="specification" title="规格"></vxe-column>
+								title="采购类型"></vxe-column>
+							<vxe-column min-width="220" align="center" field="tradeName" title="商品名称"></vxe-column>
+							<vxe-column min-width="130px" align="center" field="supplierName" title="供应商"></vxe-column>
+							<vxe-column min-width="100" align="center" field="tradePrice" title="商品单价(元)"></vxe-column>
+							<vxe-column min-width="80" align="center" field="tradeNumber" title="商品数量"></vxe-column>
+							<vxe-column min-width="100" align="center" field="priceSum" title="商品总价"></vxe-column>
 							<vxe-column min-width="100" align="center" field="company" title="单位"></vxe-column>
-							<!-- <vxe-column min-width="100" align="center" field="tradePrice" title="商品单价(元)"></vxe-column> -->
-							<!-- <vxe-column min-width="80" align="center" field="tradeNumber" title="商品数量"></vxe-column> -->
-							<!-- <vxe-column min-width="100" align="center" field="priceSum" title="商品总价"></vxe-column> -->
 							<vxe-column min-width="100" align="center" field="remarks" title="备注"></vxe-column>
 							<vxe-column align="center" title="操作" fixed="right" width="80">
 								<template v-slot="scope">
-									<el-button v-show="false" size="small" type="primary" :disabled="false"
+									<el-button size="small" type="primary" :disabled="false"
 										@click="seeFileInfo(scope.$rowIndex)" plain>附件</el-button>
 								</template>
 							</vxe-column>
@@ -109,20 +108,18 @@
 						</vxe-column>
 						<vxe-column min-width="100px" align="center" field="wareHouseManOffice"
 							title="入库部门"></vxe-column>
-						<vxe-column min-width="100px" align="center" field="wareHouseType" title="商品名称"></vxe-column>
-						<!-- <vxe-column min-width="180px" align="center" field="tradeName" title="商品名称"></vxe-column> -->
-						<!-- <vxe-column min-width="130px" align="center" field="supplierName" title="供应商"></vxe-column> -->
+						<vxe-column min-width="100px" align="center" field="wareHouseType" title="入库类型"></vxe-column>
+						<vxe-column min-width="180px" align="center" field="tradeName" title="商品名称"></vxe-column>
+						<vxe-column min-width="130px" align="center" field="supplierName" title="供应商"></vxe-column>
 						<vxe-column min-width="80px" align="center" field="tradeNumber" title="商品数量"></vxe-column>
-						<vxe-column min-width="80px" align="center" field="brand" title="品牌"></vxe-column>
-						<vxe-column min-width="80px" align="center" field="specification" title="规格"></vxe-column>
 						<vxe-column min-width="80px" align="center" field="company" title="单位"></vxe-column>
-						<!-- <vxe-column min-width="80px" align="center" field="tradePrice" title="商品单价(元)"></vxe-column>
+						<vxe-column min-width="80px" align="center" field="tradePrice" title="商品单价(元)"></vxe-column>
 						<vxe-column min-width="80px" align="center" field="priceSum" title="商品总价"></vxe-column>
-						<vxe-column min-width="80px" align="center" field="actualPrice" title="实际价格"></vxe-column> -->
+						<vxe-column min-width="80px" align="center" field="actualPrice" title="实际价格"></vxe-column>
 						<vxe-column min-width="100px" align="center" field="remarks" title="备注"></vxe-column>
 						<vxe-column align="center" fixed="right" title="操作" width="80px">
 							<template v-slot="scope">
-								<el-button v-show="false" size="small" type="primary" v-if="scope.row.upFlag !== '1'" :disabled="false"
+								<el-button size="small" type="primary" v-if="scope.row.upFlag !== '1'" :disabled="false"
 									@click="seeFileInfo2(scope.$rowIndex)" plain>附件</el-button>
 							</template>
 						</vxe-column>
@@ -142,9 +139,7 @@
 			<MaterialManagementDialog ref="materialManagementDialog" @getUpload="getUpload"></MaterialManagementDialog>
 			<UpdateInfoForm ref="updateInfoForm"></UpdateInfoForm>
 			<PurchaseChooseForm ref="purchaseChooseForm" @getProject="getContract"></PurchaseChooseForm>
-			<div v-show="false">
-				<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
-			</div>
+			<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 			<CwProgramPageForm ref="cwProgramPageForm" @getProgram="getProgram"></CwProgramPageForm>
 			<MaterialTypePullForm ref="materialTypePullForm" @getProgramForType="getProgramForType">
 			</MaterialTypePullForm>
@@ -346,7 +341,6 @@ export default {
 		getProgramForType(rows) {
 			this.inputForm.wareHouse[this.indexRow].wareHouseTypeId = rows.id
 			this.inputForm.wareHouse[this.indexRow].wareHouseType = rows.name
-			this.inputForm.wareHouse[this.indexRow].tradeName = rows.name
 			// this.inputForm.detailInfos[this.indexRow].procurementType = rows.name
 			this.indexRow = ''
 			this.$forceUpdate()

+ 1 - 1
src/views/psiManagement/wareHouse/WareHouseList.vue

@@ -369,7 +369,7 @@ export default {
 							formTitle: '入库修改' + '流程详情',
 							businessId: row.id,
 							status: 'reback',
-							psiWareHouseId: row.id
+							wareHouseId: row.id
 						}
 					})
 				})

+ 93 - 126
src/views/psiManagement/wareHouse/WareHouseUpdateForm.vue

@@ -65,23 +65,21 @@
 					<el-col :span="24">
 						<vxe-table border show-footer show-overflow :footer-method="footerMethod" ref="detailTable"
 							class="vxe-table-element" :data="inputForm.detailInfos" style="margin-left: 3em">
-							<!-- <vxe-column min-width="100" align="center" field="purchaserAgent" title="采购人"></vxe-column> -->
-							<!-- <vxe-column min-width="100" align="center" field="procurementOffice"
-								title="采购部门"></vxe-column> -->
+							<vxe-column min-width="100" align="center" field="purchaserAgent" title="采购人"></vxe-column>
+							<vxe-column min-width="100" align="center" field="procurementOffice"
+								title="采购部门"></vxe-column>
 							<vxe-column min-width="100" align="center" field="procurementType"
-								title="商品名称"></vxe-column>
+								title="采购类型"></vxe-column>
 							<vxe-column min-width="220" align="center" field="tradeName" title="商品名称"></vxe-column>
-							<vxe-column min-width="80px" align="center" field="brand" title="品牌"></vxe-column>
-							<vxe-column min-width="80px" align="center" field="specification" title="规格"></vxe-column>
-							<vxe-column min-width="80px" align="center" field="company" title="单位"></vxe-column>
-							<!-- <vxe-column min-width="100" align="center" field="supplierName" title="供应商"></vxe-column> -->
-							<!-- <vxe-column min-width="100" align="center" field="tradePrice" title="商品单价(元)"></vxe-column> -->
-							<vxe-column min-width="80" align="center" field="tradeNumber" title="采购数量"></vxe-column>
-							<!-- <vxe-column min-width="100" align="center" field="priceSum" title="商品总价"></vxe-column> -->
+							<vxe-column min-width="100" align="center" field="supplierName" title="供应商"></vxe-column>
+							<vxe-column min-width="100" align="center" field="tradePrice" title="商品单价(元)"></vxe-column>
+							<vxe-column min-width="80" align="center" field="tradeNumber" title="商品数量"></vxe-column>
+							<vxe-column min-width="100" align="center" field="priceSum" title="商品总价"></vxe-column>
+							<vxe-column min-width="100" align="center" field="company" title="单位"></vxe-column>
 							<vxe-column min-width="100" align="center" field="remarks" title="备注"></vxe-column>
 							<vxe-column align="center" title="操作" fixed="right" width="80">
 								<template v-slot="scope">
-									<vxe-button v-show="false" status="primary" size="small" :disabled="false"
+									<vxe-button status="primary" size="small" :disabled="false"
 										@click="seeFileInfo(scope.$rowIndex)" plain>附件</vxe-button>
 								</template>
 							</vxe-column>
@@ -98,7 +96,7 @@
 					<vxe-table border show-footer show-overflow :footer-method="footerMethod2" ref="detailTableWare"
 						class="vxe-table-element" :data="inputForm.wareHouse" style="margin-left: 3em"
 						:row-class-name="rowClassName" :key="tableKey">
-						<!-- <vxe-column min-width="100px" align="center" field="wareHouseMan" title="入库人">
+						<vxe-column min-width="100px" align="center" field="wareHouseMan" title="入库人">
 							<template v-slot="scope">
 								<span v-if="scope.row.upFlag === '1'"> {{ scope.row.wareHouseMan }}(修改前) </span>
 								<span v-else-if="scope.row.upFlag === '2'"> {{ scope.row.wareHouseMan }}(已删除) </span>
@@ -107,35 +105,24 @@
 								<span v-else-if="scope.row.upFlag === '0' && commonJS.isEmpty(scope.row.sourceId)">
 									{{ scope.row.wareHouseMan }} </span>
 							</template>
-						</vxe-column> -->
-						<!-- <vxe-column min-width="100px" align="center" field="wareHouseManOffice"
-							title="入库部门"></vxe-column> -->
-						<vxe-column min-width="100px" align="center" field="wareHouseType" title="商品名称">
-							<template v-slot="scope">
-								<span v-if="scope.row.upFlag === '1'"> {{ scope.row.tradeName }}(修改前) </span>
-								<span v-else-if="scope.row.upFlag === '2'"> {{ scope.row.tradeName }}(已删除) </span>
-								<span v-else-if="scope.row.upFlag === '0' && commonJS.isNotEmpty(scope.row.sourceId)">
-									{{ scope.row.tradeName }}(修改后) </span>
-								<span v-else-if="scope.row.upFlag === '0' && commonJS.isEmpty(scope.row.sourceId)">
-									{{ scope.row.tradeName }} </span>
-							</template>
 						</vxe-column>
-						<!-- <vxe-column min-width="180px" align="center" field="tradeName" title="商品名称"></vxe-column> -->
-						<!-- <vxe-column min-width="150px" align="center" field="supplierName" title="供应商"></vxe-column> -->
+						<vxe-column min-width="100px" align="center" field="wareHouseManOffice"
+							title="入库部门"></vxe-column>
+						<vxe-column min-width="100px" align="center" field="wareHouseType" title="入库类型"></vxe-column>
+						<vxe-column min-width="180px" align="center" field="tradeName" title="商品名称"></vxe-column>
+						<vxe-column min-width="150px" align="center" field="supplierName" title="供应商"></vxe-column>
 						<vxe-column min-width="80px" align="center" field="tradeNumber" title="商品数量"></vxe-column>
-						<vxe-column min-width="80px" align="center" field="brand" title="品牌"></vxe-column>
-						<vxe-column min-width="80px" align="center" field="specification" title="规格"></vxe-column>
 						<vxe-column min-width="80px" align="center" field="company" title="单位"></vxe-column>
-						<!-- <vxe-column min-width="80px" align="center" field="spec" title="包装规格"></vxe-column> -->
-						<!-- <vxe-column min-width="80px" align="center" field="tradePrice" title="商品单价(元)"></vxe-column> -->
-						<!-- <vxe-column min-width="80px" align="center" field="priceSum" title="商品总价"></vxe-column> -->
-						<!-- <vxe-column min-width="180px" align="center" field="produceDate" title="生产日期"></vxe-column> -->
-						<!-- <vxe-column min-width="80px" align="center" field="shelfLife" title="保质期"></vxe-column> -->
-						<!-- <vxe-column min-width="80px" align="center" field="actualPrice" title="实际价格"></vxe-column> -->
+						<vxe-column min-width="80px" align="center" field="spec" title="包装规格"></vxe-column>
+						<vxe-column min-width="80px" align="center" field="tradePrice" title="商品单价(元)"></vxe-column>
+						<vxe-column min-width="80px" align="center" field="priceSum" title="商品总价"></vxe-column>
+						<vxe-column min-width="180px" align="center" field="produceDate" title="生产日期"></vxe-column>
+						<vxe-column min-width="80px" align="center" field="shelfLife" title="保质期"></vxe-column>
+						<vxe-column min-width="80px" align="center" field="actualPrice" title="实际价格"></vxe-column>
 						<vxe-column min-width="110px" align="center" field="remarks" title="备注"></vxe-column>
 						<vxe-column align="center" fixed="right" title="操作" width="80px">
 							<template v-slot="scope">
-								<vxe-button v-show="false" status="primary" size="small" v-if="scope.row.upFlag !== '1'"
+								<vxe-button status="primary" size="small" v-if="scope.row.upFlag !== '1'"
 									:disabled="false" @click="seeFileInfo2(scope.$rowIndex)" plain>附件</vxe-button>
 							</template>
 						</vxe-column>
@@ -149,7 +136,7 @@
 						highlight-current-row
 						:edit-config="{ trigger: 'click', mode: 'row', showStatus: false, autoClear: !shelfLifeUnitSelectVisible, icon: '-' }"
 						:edit-rules="validRules">
-						<!-- <vxe-table-column min-width="100px" align="center" field="wareHouseMan" title="入库人"
+						<vxe-table-column min-width="100px" align="center" field="wareHouseMan" title="入库人"
 							:edit-render="{}">
 							<template v-slot:edit="scope">
 								<el-input v-model="scope.row.wareHouseMan"
@@ -161,8 +148,8 @@
 							<template v-slot:edit="scope">
 								<el-input :disabled='true' v-model="scope.row.wareHouseManOffice"></el-input>
 							</template>
-						</vxe-table-column> -->
-						<vxe-table-column min-width="100px" align="center" field="wareHouseType" title="商品名称"
+						</vxe-table-column>
+						<vxe-table-column min-width="100px" align="center" field="wareHouseType" title="入库类型"
 							:edit-render="{}">
 							<template v-slot:edit="scope">
 								<el-input v-model="scope.row.wareHouseType"
@@ -170,27 +157,27 @@
 							</template>
 						</vxe-table-column>
 
-						<!-- <vxe-table-column min-width="180px" align="center" field="tradeName" title="商品名称"
+						<vxe-table-column min-width="180px" align="center" field="tradeName" title="商品名称"
 							:edit-render="{}">
 							<template v-slot:edit="scope">
-								             <el-input @change="ifSameValue" maxlength="64" v-model="scope.row.tradeName"></el-input>
-						<vxe-pulldown ref="xDown1" transfer>
-							<template #default>
-								<vxe-input v-model="scope.row.tradeName" placeholder="请输入商品名称" maxlength="64"
-									@focus="focusEvent1(scope.row)" @input="keyupEvent1(scope.row)"></vxe-input>
-							</template>
-							<template #dropdown>
-								<div class="my-dropdown1">
-									<div class="list-item1" v-for="item in scope.row.tradeNameData" :key="item.id"
-										@click="selectEvent1(scope.row, item)">
-										<span>{{ item.tradeName }}</span>
-									</div>
-								</div>
+								<!--              <el-input @change="ifSameValue" maxlength="64" v-model="scope.row.tradeName"></el-input>-->
+								<vxe-pulldown ref="xDown1" transfer>
+									<template #default>
+										<vxe-input v-model="scope.row.tradeName" placeholder="请输入商品名称" maxlength="64"
+											@focus="focusEvent1(scope.row)" @input="keyupEvent1(scope.row)"></vxe-input>
+									</template>
+									<template #dropdown>
+										<div class="my-dropdown1">
+											<div class="list-item1" v-for="item in scope.row.tradeNameData"
+												:key="item.id" @click="selectEvent1(scope.row, item)">
+												<span>{{ item.tradeName }}</span>
+											</div>
+										</div>
+									</template>
+								</vxe-pulldown>
 							</template>
-						</vxe-pulldown>
-</template>
-						</vxe-table-column> -->
-						<!-- <vxe-table-column min-width="100px" align="center" field="supplierName" title="供应商"
+						</vxe-table-column>
+						<vxe-table-column min-width="100px" align="center" field="supplierName" title="供应商"
 							:edit-render="{}">
 							<template v-slot:edit="scope">
 								<vxe-pulldown ref="xDown4" transfer>
@@ -215,47 +202,44 @@
 									</template>
 								</vxe-pulldown>
 							</template>
-						</vxe-table-column> -->
+						</vxe-table-column>
 						<vxe-table-column min-width="80px" align="center" field="tradeNumber" title="商品数量"
 							:edit-render="{}">
 							<template v-slot:edit="scope">
-								<el-input @input="scope.row.tradeNumber = formatNonNegativeInteger($event)"
-									@change="changeValue2" v-model="scope.row.tradeNumber"
-									@blur="scope.row.tradeNumber = formatNonNegativeInteger(scope.row.tradeNumber)"
+								<el-input @change="changeValue2" v-model="scope.row.tradeNumber"
+									@blur="scope.row.tradeNumber = twoDecimalPlaces2(scope.row.tradeNumber)"
 									maxlength="10"></el-input>
 							</template>
 						</vxe-table-column>
-						<vxe-column min-width="80px" align="center" field="brand" title="品牌"></vxe-column>
-						<vxe-column min-width="80px" align="center" field="specification" title="规格"></vxe-column>
-
-						<!-- <vxe-table-column min-width="80px" align="center" field="company" title="单位" :edit-render="{}">
+						<vxe-table-column min-width="80px" align="center" field="company" title="单位" :edit-render="{}">
 							<template #edit="scope">
 								<el-input maxlength="64" v-model="scope.row.company"></el-input>
 							</template>
 						</vxe-table-column>
 						<vxe-table-column min-width="80px" align="center" field="spec" title="包装规格" :edit-render="{}">
 							<template v-slot:edit="scope">
+								<!-- 只能输入数字 -->
 								<el-input maxlength="64" v-model="scope.row.spec"
 									@blur="scope.row.spec = handleCheckNumber(scope.row.spec)"></el-input>
 
 							</template>
-						</vxe-table-column> -->
-						<!-- <vxe-table-column min-width="80px" align="center" field="tradePrice" title="商品单价(元)"
+						</vxe-table-column>
+						<vxe-table-column min-width="80px" align="center" field="tradePrice" title="商品单价(元)"
 							:edit-render="{}">
 							<template v-slot:edit="scope">
 								<el-input @change="changeValue2" maxlength="15" v-model="scope.row.tradePrice"
 									@blur="scope.row.tradePrice = twoDecimalPlaces2(scope.row.tradePrice)"></el-input>
 							</template>
-						</vxe-table-column> -->
-						<!-- <vxe-table-column min-width="80px" align="center" field="priceSum" title="商品总价"
+						</vxe-table-column>
+						<vxe-table-column min-width="80px" align="center" field="priceSum" title="商品总价"
 							:edit-render="{}">
 							<template v-slot:edit="scope">
 								<el-input :disabled='true' v-model="scope.row.priceSum"
 									@blur="scope.row.priceSum = twoDecimalPlaces(scope.row.priceSum)"
 									maxlength="15"></el-input>
 							</template>
-						</vxe-table-column> -->
-						<!-- <vxe-table-column min-width="180px" align="center" field="produceDate" title="生产日期"
+						</vxe-table-column>
+						<vxe-table-column min-width="180px" align="center" field="produceDate" title="生产日期"
 							:edit-render="{}">
 							<template v-slot:edit="scope">
 								<el-date-picker v-model="scope.row.produceDate" type="date" placement="bottom-start"
@@ -282,15 +266,15 @@
 									</template>
 								</el-input>
 							</template>
-						</vxe-table-column> -->
-						<!-- <vxe-table-column min-width="80px" align="center" field="actualPrice" title="实际价格"
+						</vxe-table-column>
+						<vxe-table-column min-width="80px" align="center" field="actualPrice" title="实际价格"
 							:edit-render="{}">
 							<template #edit="scope">
 								<el-input v-model="scope.row.actualPrice"
 									@blur="scope.row.actualPrice = twoDecimalPlaces(scope.row.actualPrice)"
 									maxlength="15"></el-input>
 							</template>
-						</vxe-table-column> -->
+						</vxe-table-column>
 
 						<vxe-table-column min-width="80px" align="center" field="remarks" title="备注" :edit-render="{}">
 							<template #edit="scope">
@@ -301,7 +285,7 @@
 							<template v-slot="scope">
 								<el-button size="small" type="primary"
 									@click="updateWareHouse(scope.$rowIndex)">修改</el-button>
-								<el-button size="small" type="primary" v-show="false" @click="sss2(scope.$rowIndex)">上传附件</el-button>
+								<el-button size="small" type="primary" @click="sss2(scope.$rowIndex)">上传附件</el-button>
 								<el-button size="small" type="danger"
 									@click="removeEvent(scope.row, scope.$rowIndex, 'detail')">删除</el-button>
 							</template>
@@ -323,11 +307,7 @@
 		<MaterialManagementDialog ref="materialManagementDialog" @getUpload="getUpload"></MaterialManagementDialog>
 		<UpdateInfoForm ref="updateInfoForm"></UpdateInfoForm>
 		<PurchaseChooseForm ref="purchaseChooseForm" @getProject="getContract"></PurchaseChooseForm>
-		<div v-show="method === 'view'">
-			<div v-show="false">
-				<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
-			</div>
-		</div>
+		<UpLoadComponent ref="uploadComponent"></UpLoadComponent>
 		<CwProgramPageForm ref="cwProgramPageForm" @getProgram="getProgram"></CwProgramPageForm>
 		<MaterialTypePullForm ref="materialTypePullForm" @getProgramForType="getProgramForType"></MaterialTypePullForm>
 		<UserPullForm ref="userPullForm" @getProgramForUser="getProgramForUser"></UserPullForm>
@@ -353,15 +333,15 @@ export default {
 	data() {
 		return {
 			validRules: {
-				// wareHouseMan: [
-				// 	{ required: true, message: '请选择入库人' }
-				// ],
+				wareHouseMan: [
+					{ required: true, message: '请选择入库人' }
+				],
 				wareHouseType: [
-					{ required: true, message: '请选择商品' }
+					{ required: true, message: '请选择入库类型' }
+				],
+				supplierName: [
+					{ required: true, message: '请选择供应商' }
 				],
-				// supplierName: [
-				// 	{ required: true, message: '请选择供应商' }
-				// ],
 				tradeName: [
 					{ required: true, message: '请填写商品名称' }
 				],
@@ -733,41 +713,53 @@ export default {
 					let i = this.inputForm.wareHouse.length
 					for (let j = 0; j < i; j++) {
 						let k = j + 1
-						// if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].wareHouseMan)) {
-						// 	this.$message.error('入库详情第' + k + '行请选择入库人')
-						// 	this.loading = false
-						// 	this.inputForm.functionFlag = ''
-						// 	return
-						// }
+						if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].wareHouseMan)) {
+							this.$message.error('入库详情第' + k + '行请选择入库人')
+							this.loading = false
+							this.inputForm.functionFlag = ''
+							return
+						}
 						if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].wareHouseType)) {
-							this.$message.error('入库详情第' + k + '行请选择商品')
+							this.$message.error('入库详情第' + k + '行请选择入库类型')
+							this.loading = false
+							this.inputForm.functionFlag = ''
+							return
+						}
+						if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].supplierName) || this.commonJS.isEmpty(this.inputForm.wareHouse[j].supplierId)) {
+							this.$message.error('入库详情第' + k + '行请选择供应商')
+							this.loading = false
+							this.inputForm.functionFlag = ''
+							return
+						}
+						if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].tradeName)) {
+							this.$message.error('入库详情第' + k + '行请填写商品名称')
 							this.loading = false
 							this.inputForm.functionFlag = ''
 							return
 						}
-
 						if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].tradeNumber)) {
 							this.$message.error('入库详情第' + k + '行请填写商品数量')
 							this.loading = false
 							this.inputForm.functionFlag = ''
 							return
 						}
-						if (!/^[1-9]\d*(?:\.0+)?$/.test(String(this.inputForm.wareHouse[j].tradeNumber))) {
-							this.$message.error('入库详情第' + k + '行商品数量请输入正整数')
+						if (this.commonJS.isEmpty(this.inputForm.wareHouse[j].spec)) {
+							this.$message.error('入库详情第' + k + '行请填写包装规格')
 							this.loading = false
 							this.inputForm.functionFlag = ''
 							return
 						}
-
 					}
 					for (let j = 0; j < i; j++) {
 						for (let k = j + 1; k < i; k++) {
 							if (this.inputForm.wareHouse[j].wareHouseTypeId === this.inputForm.wareHouse[k].wareHouseTypeId) { // 如果入库类型相同
 								if (this.inputForm.wareHouse[j].tradeName === this.inputForm.wareHouse[k].tradeName) { // 如果商品名称相同
 									// 这里直接通过判断供应商的id是否相等,因为入库只允许选择供应商,不允许手填
-									this.$message.warning(`入库详情中,同种入库类型、同一供应商的商品名称只能输入一条`)
-									this.loading = false
-									throw new Error('入库详情中,同种入库类型、同一供应商的商品名称只能输入一条')
+									if (this.inputForm.wareHouse[j].supplierId === this.inputForm.wareHouse[k].supplierId) {
+										this.$message.warning(`入库详情中,同种入库类型、同一供应商的商品名称只能输入一条`)
+										this.loading = false
+										throw new Error('入库详情中,同种入库类型、同一供应商的商品名称只能输入一条')
+									}
 								}
 							}
 						}
@@ -893,23 +885,6 @@ export default {
 			// eslint-disable-next-line no-useless-escape
 			this.inputForm.detailInfos[index].priceSum = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
 		},
-		formatNonNegativeInteger(value) {
-			if (value === null || value === undefined || value === '') {
-				return ''
-			}
-			let newText = String(value).replace(/[^\d.]/g, '')
-			const dotIndex = newText.indexOf('.')
-			if (dotIndex !== -1) {
-				const integerPart = newText.substring(0, dotIndex)
-				const decimalPart = newText.substring(dotIndex + 1).replace(/\./g, '').replace(/[1-9]/g, '')
-				newText = integerPart + '.' + decimalPart
-			}
-			newText = newText.replace(/^0+(\d)/, '$1')
-			if (newText === '.' || newText === '') {
-				return ''
-			}
-			return newText
-		},
 		countAmount(row) {
 			let amount
 			let taxAmount
@@ -932,16 +907,8 @@ export default {
 			this.$forceUpdate()
 		},
 		getProgramForType(rows) {
-			const exists = this.inputForm.wareHouse.some((item, index) => {
-				return String(index) !== String(this.indexRow) && String(item.wareHouseTypeId) === String(rows.id)
-			})
-			if (exists) {
-				this.$message.warning('同种商品只能选择一次')
-				return
-			}
 			this.inputForm.wareHouse[this.indexRow].wareHouseTypeId = rows.id
 			this.inputForm.wareHouse[this.indexRow].wareHouseType = rows.name
-			this.inputForm.wareHouse[this.indexRow].tradeName = rows.name
 			// this.inputForm.detailInfos[this.indexRow].procurementType = rows.name
 			this.indexRow = ''
 			this.$forceUpdate()

+ 13 - 15
src/views/psiManagement/wareHouseSummary/WareHouseHistory.vue

@@ -42,15 +42,15 @@
 							<vxe-column min-width="160" align="center" title="入库数量" field="tradeNumber"></vxe-column>
 							<vxe-column min-width="160" align="center" title="当前库存"
 								field="currentInventory"></vxe-column>
-							<!-- <vxe-column min-width="160" align="center" title="生产日期" field="produceDate"></vxe-column> -->
-							<!-- <vxe-column min-width="160" align="center" title="保质期" field="shelfLife">
+							<vxe-column min-width="160" align="center" title="生产日期" field="produceDate"></vxe-column>
+							<vxe-column min-width="160" align="center" title="保质期" field="shelfLife">
 								<template #default="scope">
 									<span v-if="scope.row.shelfLife && scope.row.shelfLifeUnit">
 										{{ scope.row.shelfLife }} {{ scope.row.shelfLifeUnit }}
 									</span>
 								</template>
-							</vxe-column> -->
-							<!-- <vxe-column min-width="160" align="center" title="到期时间" field="expireDate">
+							</vxe-column>
+							<vxe-column min-width="160" align="center" title="到期时间" field="expireDate">
 								<template #default="scope">
 									<span
 										v-if="scope.row.produceDate && scope.row.shelfLife && scope.row.shelfLifeUnit">
@@ -63,11 +63,11 @@
 										}}
 									</span>
 								</template>
-							</vxe-column> -->
-							<!-- <vxe-column min-width="160" align="center" title="经办人"
+							</vxe-column>
+							<vxe-column min-width="160" align="center" title="经办人"
 								field="wareHouseHandledBy"></vxe-column>
 							<vxe-column min-width="160" align="center" title="经办人部门"
-								field="wareHouseHandledByOff"></vxe-column> -->
+								field="wareHouseHandledByOff"></vxe-column>
 							<vxe-column min-width="160" align="center" title="入库时间" field="wareHouseDate"></vxe-column>
 						</vxe-table>
 						<vxe-pager background :current-page="tablePage.currentPage" :page-size="tablePage.pageSize"
@@ -234,19 +234,16 @@ export default {
 			lossList: [],
 			searchForm: {
 				tradeName: '',
-				wareHouseType: '',
 				wareHouseNumber: '',
 				wareHouseDates: []
 			},
 			searchForm2: {
 				tradeName: '',
-				wareHouseType: '',
 				collectNo: '',
 				collectDates: []
 			},
 			searchForm3: {
 				goodsName: '',
-				collectType: '',
 				lossNo: '',
 				lossDates: []
 			},
@@ -282,8 +279,9 @@ export default {
 			this.wareHouseType = wareHouseType
 			this.tradeName = tradeName
 			this.searchForm.wareHouseType = wareHouseType
-			this.searchForm2.wareHouseType = wareHouseType
-			this.searchForm3.collectType = wareHouseType
+			this.searchForm.tradeName = tradeName
+			this.searchForm2.tradeName = tradeName
+			this.searchForm3.goodsName = tradeName
 			if (this.commonJS.isNotEmpty(detailId)) {
 				this.detailId = detailId
 			} else {
@@ -354,19 +352,19 @@ export default {
 		resetSearch() {
 			this.$refs.searchForm.resetFields()
 			this.tablePage.currentPage = 1
-			this.searchForm.wareHouseType = this.wareHouseType
+			this.searchForm.tradeName = this.tradeName
 			this.list()
 		},
 		resetSearch2() {
 			this.$refs.searchForm2.resetFields()
 			this.tablePage2.currentPage = 1
-			this.searchForm2.wareHouseType = this.wareHouseType
+			this.searchForm2.tradeName = this.tradeName
 			this.list2()
 		},
 		resetSearch3() {
 			this.$refs.searchForm3.resetFields()
 			this.tablePage3.currentPage = 1
-			this.searchForm3.collectType = this.wareHouseType
+			this.searchForm3.goodsName = this.tradeName
 			this.list3()
 		},
 		close() {

+ 15 - 22
src/views/psiManagement/wareHouseSummary/WareHouseSummaryList.vue

@@ -9,11 +9,7 @@
 			<el-form-item label="商品名称" prop="tradeName">
 				<el-input v-model="searchForm.tradeName" placeholder="请输入商品名称" clearable></el-input>
 			</el-form-item>
-
-			<el-form-item label="品牌" prop="brand">
-				<el-input v-model="searchForm.brand" placeholder="请输入品牌" clearable></el-input>
-			</el-form-item>
-			<!-- <el-form-item label="商品类型" prop="wareHouseType">
+			<el-form-item label="入库类型" prop="wareHouseType">
 				<SelectTree ref="areaTree" :props="{
 					value: 'id',             // ID字段名
 					label: 'name',         // 显示名称
@@ -21,11 +17,11 @@
 				}" url="/psi-management-server/psi/materialType/summaryTreeData?type=last" :value="searchForm.wareHouseType"
 					:clearable="true" :accordion="true" size="default"
 					@getValue="(value, label) => { searchForm.wareHouseType = value }" />
-			</el-form-item>-->
-			<!--	<el-form-item label="供应商" prop="supplierName">
+			</el-form-item>
+			<el-form-item label="供应商" prop="supplierName">
 				<el-input v-model="searchForm.supplierName" placeholder="请选择供应商" :readonly="true"
 					@focus="openSupplierChoose"></el-input>
-			</el-form-item>-->
+			</el-form-item>
 			<el-form-item>
 				<el-button type="primary" @click="refreshList()" icon="el-icon-search">查询</el-button>
 				<el-button @click="resetSearch()" icon="el-icon-refresh-right">重置</el-button>
@@ -44,8 +40,8 @@
 			</vxe-toolbar>
 			<div style="height: calc(100% - 90px)">
 				<vxe-table :key="tableKey" border="inner" auto-resize resizable height="auto" :loading="loading"
-					align="center" ref="clientTable" show-header-overflow show-overflow highlight-hover-row
-					:menu-config="{}" @sort-change="sortChangeHandle" :sort-config="{ remote: true }" :data="dataList"
+					ref="clientTable" show-header-overflow show-overflow highlight-hover-row :menu-config="{}"
+					@sort-change="sortChangeHandle" :sort-config="{ remote: true }" :data="dataList"
 					:checkbox-config="{}"
 					:edit-config="{ trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: 'false' }">
 					<vxe-column type="seq" width="60" title="序号"></vxe-column>
@@ -61,13 +57,9 @@
 							<span v-else>{{ scope.row.tradeName }}</span>
 						</template>
 					</vxe-column>
-					<!-- <vxe-column min-width="160" align="center" title="入库类型" field="wareHouseTypeName"></vxe-column> -->
-					<vxe-column min-width="160" align="center" title="品牌" field="brand"></vxe-column>
-					<vxe-column min-width="160" align="center" title="规格" field="specification"></vxe-column>
-					<vxe-column min-width="160" align="center" title="单位" field="company"></vxe-column>
-					<vxe-column min-width="160" align="center" title="实时库存量" field="tradeNumber"></vxe-column>
-					<vxe-column min-width="160" align="center" title="累计入库量" field="allNumber"></vxe-column>
-					<vxe-column min-width="160" align="center" title="累计领用量" field="borrowNumber">
+					<vxe-column min-width="160" align="center" title="入库类型" field="wareHouseTypeName"></vxe-column>
+					<vxe-column min-width="160" align="center" title="总量" field="allNumber"></vxe-column>
+					<vxe-column min-width="160" align="center" title="领用量" field="borrowNumber">
 						<template #default="scope">
 							<span v-if="scope.row.borrowNumber">
 								{{ calcDivide(scope.row.borrowNumber, scope.row.spec) }}
@@ -78,7 +70,7 @@
 
 						</template>
 					</vxe-column>
-					<vxe-column min-width="160" align="center" title="累计报损量" field="lossNumber">
+					<vxe-column min-width="160" align="center" title="报损量" field="lossNumber">
 						<template #default="scope">
 							<span v-if="scope.row.lossNumber">
 								{{ calcDivide(scope.row.lossNumber, scope.row.spec) }}
@@ -89,14 +81,16 @@
 
 						</template>
 					</vxe-column>
-					<vxe-column min-width="160" align="center" fixed="right" title="库存提醒数量" field="warnNum"
+					<vxe-column min-width="160" align="center" title="剩余量" field="tradeNumber"></vxe-column>
+					<vxe-column min-width="160" align="center" title="单位" field="company"></vxe-column>
+					<vxe-column min-width="160" align="center" fixed="right" title="提醒数量" field="warnNum"
 						:edit-render="{}">
 						<template #edit="scope">
 							<vxe-input v-model="scope.row.warnNum" type="float" min="0" @blur="changeWarnNum(scope.row)"
 								:controls="false"></vxe-input>
 						</template>
 					</vxe-column>
-					<vxe-column min-width="100" align="center" fixed="right" title="是否开启库存提醒" field="warnFlag">
+					<vxe-column min-width="100" align="center" fixed="right" title="是否提醒" field="warnFlag">
 						<template #default="scope">
 							<el-switch :model-value="scope.row.warnFlag === '1'" active-color="#13ce66"
 								inactive-color="#ff4949"
@@ -176,7 +170,6 @@ export default {
 			searchForm: {
 				wareHouseType: '',
 				tradeName: '',
-				brand: '',
 				wareHouseNumber: '',
 				wareHouseMan: '',
 				wareHouseManOffice: '',
@@ -245,7 +238,7 @@ export default {
 			// this.$refs.wareHouseHistoryPopup.init()
 			let detailId = this.commonJS.isNotEmpty(this.searchForm.supplierId) ? row.id : ''
 			console.log(row)
-			this.$refs.wareHouseHistory.init(row.wareHouseType, row.tradeName, detailId)
+			this.$refs.wareHouseHistory.init(row.wareHouseType,row.tradeName, detailId)
 		},
 		// 修改商品名称
 		edit(tradeName, type, typeName) {