From 3112a2cacb090aaa7a25edcf48be047249ff9d1d Mon Sep 17 00:00:00 2001
From: payne <bzrlw2012@163.com>
Date: 周二, 23 4月 2024 18:14:46 +0800
Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/iWare_RawMaterialWarehouse
---
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/addForm.vue | 103 +
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/excelForm.vue | 181 +
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Map/WmsSubstituteGoodMapper.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodOutput.cs | 72
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs | 397 ++++
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/IWmsWarehouseService.cs | 22
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsWarehouseImport.xlsx | 0
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsContainerPackagingManage.js | 114 +
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/index.vue | 537 +++++
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/index.vue | 638 ++++++
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Map/WmsContainerPackagingMapper.cs | 18
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/excelForm.vue | 181 +
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/index.vue | 498 +++++
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/editForm.vue | 139 +
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/IWmsContainerPackagingService.cs | 22
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/editForm.vue | 119 +
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsWarehouseManage.js | 114 +
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/WmsWarehouseService.cs | 517 +++++
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodInput.cs | 215 ++
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Dto/WmsWarehouseInput.cs | 271 ++
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/addForm.vue | 100 +
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Dto/WmsContainerPackagingInput.cs | 193 +
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsSubstituteGoodImport.xlsx | 0
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormWmsSubstituteGood.vue | 94
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/excelForm.vue | 181 +
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Map/WmsWarehouseMapper.cs | 18
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/editForm.vue | 123 +
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormContainerPackaging.vue | 91
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Dto/WmsWarehouseOutput.cs | 92
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/IWmsSubstituteGoodService.cs | 22
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabForm.vue | 21
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsSubstituteGoodManage.js | 114 +
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/addForm.vue | 115 +
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsContainerPackagingImport.xlsx | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Dto/WmsContainerPackagingOutput.cs | 67
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/WmsSubstituteGoodService.cs | 481 ++++
36 files changed, 5,879 insertions(+), 9 deletions(-)
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsContainerPackagingManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsContainerPackagingManage.js
new file mode 100644
index 0000000..c8c89f0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsContainerPackagingManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍖呰鍏崇郴鍩虹琛�
+ *
+ * @author ly
+ */
+export function WmsContainerPackagingPage (parameter) {
+ return axios({
+ url: '/WmsContainerPackaging/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍖呰鍏崇郴鍩虹琛ㄥ垪琛�
+ *
+ * @author ly
+ */
+export function WmsContainerPackagingList (parameter) {
+ return axios({
+ url: '/WmsContainerPackaging/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍖呰鍏崇郴鍩虹琛�
+ *
+ * @author ly
+ */
+export function WmsContainerPackagingAdd (parameter) {
+ return axios({
+ url: '/WmsContainerPackaging/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鍖呰鍏崇郴鍩虹琛�
+ *
+ * @author ly
+ */
+export function WmsContainerPackagingEdit (parameter) {
+ return axios({
+ url: '/WmsContainerPackaging/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鍖呰鍏崇郴鍩虹琛�
+ *
+ * @author ly
+ */
+export function WmsContainerPackagingDelete (parameter) {
+ return axios({
+ url: '/WmsContainerPackaging/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鍖呰鍏崇郴鍩虹琛ㄧ殑Excel鏂囦欢
+ *
+ * @author ly
+ */
+export function WmsContainerPackagingToExcel (parameter) {
+ return axios({
+ url: '/WmsContainerPackaging/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鍖呰鍏崇郴鍩虹琛ㄧ殑Excel鏂囦欢
+ *
+ * @author ly
+ */
+export function WmsContainerPackagingImportExcel (data, parameter) {
+ return axios({
+ url: '/WmsContainerPackaging/importExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鍖呰鍏崇郴鍩虹琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author ly
+ */
+export function WmsContainerPackagingDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsContainerPackaging/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsSubstituteGoodManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsSubstituteGoodManage.js
new file mode 100644
index 0000000..ece8311
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsSubstituteGoodManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鏇夸唬鍝佺鐞�
+ *
+ * @author ly
+ */
+export function WmsSubstituteGoodPage (parameter) {
+ return axios({
+ url: '/WmsSubstituteGood/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏇夸唬鍝佺鐞嗗垪琛�
+ *
+ * @author ly
+ */
+export function WmsSubstituteGoodList (parameter) {
+ return axios({
+ url: '/WmsSubstituteGood/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鏇夸唬鍝佺鐞�
+ *
+ * @author ly
+ */
+export function WmsSubstituteGoodAdd (parameter) {
+ return axios({
+ url: '/WmsSubstituteGood/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鏇夸唬鍝佺鐞�
+ *
+ * @author ly
+ */
+export function WmsSubstituteGoodEdit (parameter) {
+ return axios({
+ url: '/WmsSubstituteGood/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鏇夸唬鍝佺鐞�
+ *
+ * @author ly
+ */
+export function WmsSubstituteGoodDelete (parameter) {
+ return axios({
+ url: '/WmsSubstituteGood/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鏇夸唬鍝佺鐞嗙殑Excel鏂囦欢
+ *
+ * @author ly
+ */
+export function WmsSubstituteGoodToExcel (parameter) {
+ return axios({
+ url: '/WmsSubstituteGood/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鏇夸唬鍝佺鐞嗙殑Excel鏂囦欢
+ *
+ * @author ly
+ */
+export function WmsSubstituteGoodImportExcel (data, parameter) {
+ return axios({
+ url: '/WmsSubstituteGood/importExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鏇夸唬鍝佺鐞嗙殑Excel瀵煎叆妯℃澘
+ *
+ * @author ly
+ */
+export function WmsSubstituteGoodDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsSubstituteGood/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsWarehouseManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsWarehouseManage.js
new file mode 100644
index 0000000..c862dec
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsWarehouseManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ浠撳簱琛�
+ *
+ * @author ly
+ */
+export function WmsWarehousePage (parameter) {
+ return axios({
+ url: '/WmsWarehouse/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 浠撳簱琛ㄥ垪琛�
+ *
+ * @author ly
+ */
+export function WmsWarehouseList (parameter) {
+ return axios({
+ url: '/WmsWarehouse/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞浠撳簱琛�
+ *
+ * @author ly
+ */
+export function WmsWarehouseAdd (parameter) {
+ return axios({
+ url: '/WmsWarehouse/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫浠撳簱琛�
+ *
+ * @author ly
+ */
+export function WmsWarehouseEdit (parameter) {
+ return axios({
+ url: '/WmsWarehouse/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎浠撳簱琛�
+ *
+ * @author ly
+ */
+export function WmsWarehouseDelete (parameter) {
+ return axios({
+ url: '/WmsWarehouse/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭浠撳簱琛ㄧ殑Excel鏂囦欢
+ *
+ * @author ly
+ */
+export function WmsWarehouseToExcel (parameter) {
+ return axios({
+ url: '/WmsWarehouse/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆浠撳簱琛ㄧ殑Excel鏂囦欢
+ *
+ * @author ly
+ */
+export function WmsWarehouseImportExcel (data, parameter) {
+ return axios({
+ url: '/WmsWarehouse/importExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇浠撳簱琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author ly
+ */
+export function WmsWarehouseDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsWarehouse/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/addForm.vue
new file mode 100644
index 0000000..d9fa354
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/addForm.vue
@@ -0,0 +1,100 @@
+锘�<template>
+ <a-modal
+ title="鏂板鍖呰鍏崇郴鍩虹琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀹瑰櫒绫诲瀷ID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨婭D" v-decorator="['containerTypeId']" />
+ </a-form-item>
+ <a-form-item label="瀹瑰櫒绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉�" v-decorator="['containerTypeName']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡绫诲瀷ID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨婭D" v-decorator="['materialTypeId']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡绫诲瀷缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙�" v-decorator="['materialTypeCode']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉�" v-decorator="['materialTypeName']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡瀹瑰櫒瀹归噺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏鍣ㄥ閲�" v-decorator="['boxQty']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ WmsContainerPackagingAdd
+ } from '@/api/modular/main/WmsBase/WmsContainerPackagingManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsContainerPackagingAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/editForm.vue
new file mode 100644
index 0000000..eb6a7d4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/editForm.vue
@@ -0,0 +1,119 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫鍖呰鍏崇郴鍩虹琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀹瑰櫒绫诲瀷ID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨婭D" v-decorator="['containerTypeId']" />
+ </a-form-item>
+ <a-form-item label="瀹瑰櫒绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉�" v-decorator="['containerTypeName']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡绫诲瀷ID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨婭D" v-decorator="['materialTypeId']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡绫诲瀷缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙�" v-decorator="['materialTypeCode']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉�" v-decorator="['materialTypeName']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡瀹瑰櫒瀹归噺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏鍣ㄥ閲�" v-decorator="['boxQty']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+ import {
+ WmsContainerPackagingEdit
+ } from '@/api/modular/main/WmsBase/WmsContainerPackagingManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ containerTypeId: record.containerTypeId,
+ containerTypeName: record.containerTypeName,
+ materialTypeId: record.materialTypeId,
+ materialTypeCode: record.materialTypeCode,
+ materialTypeName: record.materialTypeName,
+ boxQty: record.boxQty
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsContainerPackagingEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/excelForm.vue
new file mode 100644
index 0000000..23a0847
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <!--<a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>-->
+ </a-row>
+ <a-row :span="24">
+ <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>-->
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsContainerPackagingDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+ import { WmsContainerPackagingImportExcel, WmsContainerPackagingDownloadExcelTemplate} from '@/api/modular/main/WmsBase/WmsContainerPackagingManage'
+ import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsContainerPackagingDownloadExcelTemplate")
+ window.downloadFile = this.wmsContainerPackagingDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsContainerPackaging"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ WmsContainerPackagingImportExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsContainerPackagingDownloadExcelTemplate() {
+ WmsContainerPackagingDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/index.vue
new file mode 100644
index 0000000..4a7714f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/index.vue
@@ -0,0 +1,498 @@
+锘�<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsContainerPackaging:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹瑰櫒绫诲瀷ID">
+ <a-input v-model="queryParam.containerTypeId" allow-clear placeholder="璇疯緭鍏ュ鍣ㄧ被鍨婭D"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹瑰櫒绫诲瀷鍚嶇О">
+ <a-input v-model="queryParam.containerTypeName" allow-clear placeholder="璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡绫诲瀷ID">
+ <a-input v-model="queryParam.materialTypeId" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑被鍨婭D"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡绫诲瀷缂栧彿">
+ <a-input v-model="queryParam.materialTypeCode" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡绫诲瀷鍚嶇О">
+ <a-input v-model="queryParam.materialTypeName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡瀹瑰櫒瀹归噺">
+ <a-input v-model="queryParam.boxQty" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏鍣ㄥ閲�"/>
+ </a-form-item>
+ </a-col> <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangecreatedTime"/>
+
+ </a-form-item>
+ </a-col>
+ <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏇存柊鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangeupdatedTime"/>
+
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鑰呭悕绉�">
+ <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="淇敼鑰呭悕绉�">
+ <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ @changeTablePage="pageInfo = $event"
+ :scroll="{x: true,y:tableHeight}"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsContainerPackaging:add')" >
+ <div ref="actionBar" class="actionBar">
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('WmsContainerPackaging:exportExcel')" icon="download" @click="WmsContainerPackagingToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsContainerPackaging:add')" icon="plus" @click="$refs.addForm.add()">鏂板鍖呰鍏崇郴鍩虹琛�</a-button>
+ </div>
+ </template>
+ <span slot="action" slot-scope="text, record">
+
+ <a v-if="hasPerm('WmsContainerPackaging:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsContainerPackaging:edit') & hasPerm('WmsContainerPackaging:delete')"/>
+ <a-popconfirm v-if="hasPerm('WmsContainerPackaging:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsContainerPackagingDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <excel-form ref="excelForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import { WmsContainerPackagingPage, WmsContainerPackagingDelete, WmsContainerPackagingToExcel } from '@/api/modular/main/WmsBase/WmsContainerPackagingManage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import addForm from './addForm.vue'
+ import { exportExcel } from '@/utils/exportToExcel'
+ import { downloadFile } from '@/utils/util'
+ import editForm from './editForm.vue'
+ import excelForm from './excelForm.vue'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ STable,
+ addForm,
+ editForm,
+ excelForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ pageInfo: {
+ current: 1,
+ pageSize: 10
+ },
+ columns: [
+ {
+ title:'搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}`
+ },
+ {
+ title: '瀹瑰櫒绫诲瀷ID',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'containerTypeId'
+ },
+ {
+ title: '瀹瑰櫒绫诲瀷鍚嶇О',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'containerTypeName'
+ },
+ {
+ title: '鐗╂枡绫诲瀷ID',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'materialTypeId'
+ },
+ {
+ title: '鐗╂枡绫诲瀷缂栧彿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'materialTypeCode'
+ },
+ {
+ title: '鐗╂枡绫诲瀷鍚嶇О',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'materialTypeName'
+ },
+ {
+ title: '鐗╂枡瀹瑰櫒瀹归噺',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'boxQty'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedTime'
+ },
+ {
+ title: '鍒涘缓鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '淇敼鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedUserName'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsContainerPackagingPage(Object.assign(parameter, this.switchingDate())).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsContainerPackaging:edit') || this.hasPerm('WmsContainerPackaging:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ var _columns = JSON.parse(columnStr)
+ this.columns.forEach(element => {
+ var fObj = _columns.find((item, index) => {
+ return item.dataIndex === element.dataIndex;
+ })
+ if(fObj!=undefined && fObj!=null){
+ element.checked=fObj.checked;
+ }
+ });
+ }
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ methods: {
+ moment,
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsContainerPackagingDelete (record) {
+ WmsContainerPackagingDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+
+
+ WmsContainerPackagingToExcel() {
+ this.loading = true
+ let entozh = {};
+ const path = this.$route.path;
+ if (window.localStorage.getItem(path)) {
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ } else { //鐩存帴鐐瑰鍑�
+ this.columns.forEach(item => {
+ if (item.dataIndex != 'action') {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ }
+ WmsContainerPackagingPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+ this.loading = false;
+ //闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+ var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+ res.data.rows.forEach(item => {
+ var arrKeys = Object.keys(item);
+ arrKeys.forEach(key => {
+ var strFieldDic = key + 'Data';
+ //鏋氫妇杞��
+ if (this[strFieldDic] && this[strFieldDic].length > 0) {
+ let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+ if (arrFieldDic.length > 0) {
+ item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+ }
+ }
+ // 鏃ユ湡鎴彇
+ if (arrDataCutout.length > 0) {
+ arrDataCutout.forEach(itemIn => {
+ if (key == itemIn.dataIndex && item[key]) {
+ item[key] = item[key].split(" ")[0]
+ }
+ })
+ }
+ });
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+ }).catch((err) => {
+ this.loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+
+
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ onChangecreatedTime(date, dateString) {
+ this.queryParam.createdTime = dateString
+ },
+ onChangeupdatedTime(date, dateString) {
+ this.queryParam.updatedTime = dateString
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabForm.vue
index 574cf4b..dc89591 100644
--- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabForm.vue
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabForm.vue
@@ -8,8 +8,8 @@
@cancel="handleCancel"
>
<a-spin :spinning="confirmLoading">
- <!-- tab -->
- <a-tabs default-active-key="1" @change="callback">
+ <!-- tab @change="callback"-->
+ <a-tabs default-active-key="1" >
<a-tab-pane key="1" tab="鍩烘湰淇℃伅">
<add-form ref="addForm" @ok="handleOk" />
</a-tab-pane>
@@ -20,14 +20,14 @@
Content of Tab Pane 3
</a-tab-pane>
<a-tab-pane key="4" tab="鏇夸唬鍝佺鐞�">
- Content of Tab Pane 4
+ <add-form-sub ref="addFormWmsSubstituteGood" @ok="handleOk" />
</a-tab-pane>
<a-tab-pane key="5" tab="瀹㈡埛">
<add-form-base-customer ref="addFormBaseCustomer" @ok="handleOk" />
</a-tab-pane>
-
+
<a-tab-pane key="7" tab="鍖呰鍏崇郴">
- Content of Tab Pane 6
+ <add-form-container-packaging ref="addFormContainerPackaging" @ok="handleOk" />
</a-tab-pane>
</a-tabs>
@@ -39,15 +39,15 @@
import { WmsMaterialAdd, GetAreas, GetStations } from '@/api/modular/main/WmsMaterialManage'
import addForm from './tabItem/addForm.vue'
import addFormBaseCustomer from './tabItem/addFormBaseCustomer.vue'
+import addFormContainerPackaging from './tabItem/addFormContainerPackaging.vue'
+import addFormSub from './tabItem/addFormWmsSubstituteGood.vue'
export default {
components: {
- // STable,
addForm,
addFormBaseCustomer,
-
- // editForm,
- // excelForm
+ addFormContainerPackaging,
+ addFormSub
},
data() {
return {
@@ -71,6 +71,9 @@
}
},
methods: {
+ handleOk(){
+
+ },
// 鍒濆鍖栨柟娉�
add(record) {
this.visible = true
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormContainerPackaging.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormContainerPackaging.vue
new file mode 100644
index 0000000..0fca95c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormContainerPackaging.vue
@@ -0,0 +1,91 @@
+锘�<template>
+ <!-- 鍖呰鍏崇郴鍩虹琛� -->
+ <a-form :form="form">
+ <a-form-item label="瀹瑰櫒绫诲瀷ID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨婭D" v-decorator="['containerTypeId']" />
+ </a-form-item>
+ <a-form-item label="瀹瑰櫒绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉�" v-decorator="['containerTypeName']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡绫诲瀷ID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨婭D" v-decorator="['materialTypeId']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡绫诲瀷缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙�" v-decorator="['materialTypeCode']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉�" v-decorator="['materialTypeName']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡瀹瑰櫒瀹归噺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏鍣ㄥ閲�" v-decorator="['boxQty']" />
+ </a-form-item>
+ </a-form>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ WmsContainerPackagingAdd
+ } from '@/api/modular/main/WmsBase/WmsContainerPackagingManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsContainerPackagingAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormWmsSubstituteGood.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormWmsSubstituteGood.vue
new file mode 100644
index 0000000..71d0a2d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormWmsSubstituteGood.vue
@@ -0,0 +1,94 @@
+锘�<template>
+ <!-- 鏇夸唬鍝佺鐞� -->
+ <a-form :form="form">
+ <a-form-item label="鏇夸唬缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ浛浠g紪鍙�" v-decorator="['substituteCode', {rules: [{required: true, message: '璇疯緭鍏ユ浛浠g紪鍙凤紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" v-decorator="['materialCode', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑紪鍙凤紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-decorator="['materialName', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉帮紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏇夸唬鍝佺墿鏂欑紪鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ浛浠e搧鐗╂枡缂栧彿" v-decorator="['substituteMaterialCode', {rules: [{required: true, message: '璇疯緭鍏ユ浛浠e搧鐗╂枡缂栧彿锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏇夸唬鍝佺墿鏂欏悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ浛浠e搧鐗╂枡鍚嶇О" v-decorator="['substituteMaterialName', {rules: [{required: true, message: '璇疯緭鍏ユ浛浠e搧鐗╂枡鍚嶇О锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏇夸唬娆″簭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ浛浠f搴�" style="width: 100%" v-decorator="['substituteIndex', {rules: [{required: true, message: '璇疯緭鍏ユ浛浠f搴忥紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏄惁绂佺敤" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁绂佺敤锛�' }], valuePropName: 'checked'}]" />
+ </a-form-item>
+ </a-form>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ WmsSubstituteGoodAdd
+ } from '@/api/modular/main/WmsBase/WmsSubstituteGoodManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsSubstituteGoodAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/addForm.vue
new file mode 100644
index 0000000..23359a0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/addForm.vue
@@ -0,0 +1,103 @@
+锘�<template>
+ <a-modal
+ title="鏂板鏇夸唬鍝佺鐞�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鏇夸唬缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ浛浠g紪鍙�" v-decorator="['substituteCode', {rules: [{required: true, message: '璇疯緭鍏ユ浛浠g紪鍙凤紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" v-decorator="['materialCode', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑紪鍙凤紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-decorator="['materialName', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉帮紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏇夸唬鍝佺墿鏂欑紪鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ浛浠e搧鐗╂枡缂栧彿" v-decorator="['substituteMaterialCode', {rules: [{required: true, message: '璇疯緭鍏ユ浛浠e搧鐗╂枡缂栧彿锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏇夸唬鍝佺墿鏂欏悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ浛浠e搧鐗╂枡鍚嶇О" v-decorator="['substituteMaterialName', {rules: [{required: true, message: '璇疯緭鍏ユ浛浠e搧鐗╂枡鍚嶇О锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏇夸唬娆″簭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ浛浠f搴�" style="width: 100%" v-decorator="['substituteIndex', {rules: [{required: true, message: '璇疯緭鍏ユ浛浠f搴忥紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏄惁绂佺敤" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁绂佺敤锛�' }], valuePropName: 'checked'}]" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ WmsSubstituteGoodAdd
+ } from '@/api/modular/main/WmsBase/WmsSubstituteGoodManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsSubstituteGoodAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/editForm.vue
new file mode 100644
index 0000000..c755d17
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/editForm.vue
@@ -0,0 +1,123 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫鏇夸唬鍝佺鐞�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鏇夸唬缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ浛浠g紪鍙�" v-decorator="['substituteCode', {rules: [{required: true, message: '璇疯緭鍏ユ浛浠g紪鍙凤紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" v-decorator="['materialCode', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑紪鍙凤紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-decorator="['materialName', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉帮紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏇夸唬鍝佺墿鏂欑紪鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ浛浠e搧鐗╂枡缂栧彿" v-decorator="['substituteMaterialCode', {rules: [{required: true, message: '璇疯緭鍏ユ浛浠e搧鐗╂枡缂栧彿锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏇夸唬鍝佺墿鏂欏悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ浛浠e搧鐗╂枡鍚嶇О" v-decorator="['substituteMaterialName', {rules: [{required: true, message: '璇疯緭鍏ユ浛浠e搧鐗╂枡鍚嶇О锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏇夸唬娆″簭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ浛浠f搴�" style="width: 100%" v-decorator="['substituteIndex', {rules: [{required: true, message: '璇疯緭鍏ユ浛浠f搴忥紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏄惁绂佺敤" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁绂佺敤锛�' }], valuePropName: 'checked'}]" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+ import {
+ WmsSubstituteGoodEdit
+ } from '@/api/modular/main/WmsBase/WmsSubstituteGoodManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ substituteCode: record.substituteCode,
+ materialCode: record.materialCode,
+ materialName: record.materialName,
+ substituteMaterialCode: record.substituteMaterialCode,
+ substituteMaterialName: record.substituteMaterialName,
+ substituteIndex: record.substituteIndex,
+ isDisabled: record.isDisabled
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsSubstituteGoodEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/excelForm.vue
new file mode 100644
index 0000000..4c8af3c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <!--<a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>-->
+ </a-row>
+ <a-row :span="24">
+ <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>-->
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsSubstituteGoodDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+ import { WmsSubstituteGoodImportExcel, WmsSubstituteGoodDownloadExcelTemplate} from '@/api/modular/main/WmsBase/WmsSubstituteGoodManage'
+ import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsSubstituteGoodDownloadExcelTemplate")
+ window.downloadFile = this.wmsSubstituteGoodDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsSubstituteGood"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ WmsSubstituteGoodImportExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsSubstituteGoodDownloadExcelTemplate() {
+ WmsSubstituteGoodDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/index.vue
new file mode 100644
index 0000000..8e04a41
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsSubstituteGood/index.vue
@@ -0,0 +1,537 @@
+锘�<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsSubstituteGood:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏇夸唬缂栧彿">
+ <a-input v-model="queryParam.substituteCode" allow-clear placeholder="璇疯緭鍏ユ浛浠g紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡缂栧彿">
+ <a-input v-model="queryParam.materialCode" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鍚嶇О">
+ <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏇夸唬鍝佺墿鏂欑紪鍙�">
+ <a-input v-model="queryParam.substituteMaterialCode" allow-clear placeholder="璇疯緭鍏ユ浛浠e搧鐗╂枡缂栧彿"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏇夸唬鍝佺墿鏂欏悕绉�">
+ <a-input v-model="queryParam.substituteMaterialName" allow-clear placeholder="璇疯緭鍏ユ浛浠e搧鐗╂枡鍚嶇О"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鏇夸唬娆″簭">
+ <a-input-number v-model="queryParam.substituteIndex" style="width: 100%" allow-clear placeholder="璇疯緭鍏ユ浛浠f搴�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏄惁绂佺敤">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.isDisabled" placeholder="璇烽�夋嫨鏄惁绂佺敤">
+ <a-select-option v-for="(item,index) in isDisabledData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangecreatedTime"/>
+
+ </a-form-item>
+ </a-col>
+ <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏇存柊鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangeupdatedTime"/>
+
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鑰呭悕绉�">
+ <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="淇敼鑰呭悕绉�">
+ <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ @changeTablePage="pageInfo = $event"
+ :scroll="{x: true,y:tableHeight}"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsSubstituteGood:add')" >
+ <div ref="actionBar" class="actionBar">
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('WmsSubstituteGood:exportExcel')" icon="download" @click="WmsSubstituteGoodToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsSubstituteGood:add')" icon="plus" @click="$refs.addForm.add()">鏂板鏇夸唬鍝佺鐞�</a-button>
+ </div>
+ </template>
+ <span slot="isDisabledscopedSlots" slot-scope="text">
+ <div v-if="text===true ">
+ <a-tag color="green">鏄�</a-tag>
+ </div>
+ <div v-else-if="text==false">
+ <a-tag color="volcano">鍚�</a-tag>
+ </div>
+ <div v-else=""></div>
+ </span>
+ <span slot="action" slot-scope="text, record">
+
+ <a v-if="hasPerm('WmsSubstituteGood:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsSubstituteGood:edit') & hasPerm('WmsSubstituteGood:delete')"/>
+ <a-popconfirm v-if="hasPerm('WmsSubstituteGood:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsSubstituteGoodDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <excel-form ref="excelForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import { WmsSubstituteGoodPage, WmsSubstituteGoodDelete, WmsSubstituteGoodToExcel } from '@/api/modular/main/WmsBase/WmsSubstituteGoodManage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import addForm from './addForm.vue'
+ import { exportExcel } from '@/utils/exportToExcel'
+ import { downloadFile } from '@/utils/util'
+ import editForm from './editForm.vue'
+ import excelForm from './excelForm.vue'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ STable,
+ addForm,
+ editForm,
+ excelForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ pageInfo: {
+ current: 1,
+ pageSize: 10
+ },
+ columns: [
+ {
+ title:'搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}`
+ },
+ {
+ title: '鏇夸唬缂栧彿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'substituteCode'
+ },
+ {
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'materialCode'
+ },
+ {
+ title: '鐗╂枡鍚嶇О',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'materialName'
+ },
+ {
+ title: '鏇夸唬鍝佺墿鏂欑紪鍙�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '140px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '140px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'substituteMaterialCode'
+ },
+ {
+ title: '鏇夸唬鍝佺墿鏂欏悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '140px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '140px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'substituteMaterialName'
+ },
+ {
+ title: '鏇夸唬娆″簭',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'substituteIndex'
+ },
+ {
+ title: '鏄惁绂佺敤',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'isDisabled',
+ scopedSlots: { customRender: 'isDisabledscopedSlots' }
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedTime'
+ },
+ {
+ title: '鍒涘缓鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '淇敼鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedUserName'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsSubstituteGoodPage(Object.assign(parameter, this.switchingDate())).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsSubstituteGood:edit') || this.hasPerm('WmsSubstituteGood:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ var _columns = JSON.parse(columnStr)
+ this.columns.forEach(element => {
+ var fObj = _columns.find((item, index) => {
+ return item.dataIndex === element.dataIndex;
+ })
+ if(fObj!=undefined && fObj!=null){
+ element.checked=fObj.checked;
+ }
+ });
+ }
+ const isDisabledOption = this.$options
+ this.isDisabledData = isDisabledOption.filters['dictData']('yes_true_false')
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ methods: {
+ moment,
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsSubstituteGoodDelete (record) {
+ WmsSubstituteGoodDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+
+
+ WmsSubstituteGoodToExcel() {
+ this.loading = true
+ let entozh = {};
+ const path = this.$route.path;
+ if (window.localStorage.getItem(path)) {
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ } else { //鐩存帴鐐瑰鍑�
+ this.columns.forEach(item => {
+ if (item.dataIndex != 'action') {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ }
+ WmsSubstituteGoodPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+ this.loading = false;
+ //闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+ var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+ res.data.rows.forEach(item => {
+ var arrKeys = Object.keys(item);
+ arrKeys.forEach(key => {
+ var strFieldDic = key + 'Data';
+ //鏋氫妇杞��
+ if (this[strFieldDic] && this[strFieldDic].length > 0) {
+ let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+ if (arrFieldDic.length > 0) {
+ item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+ }
+ }
+ // 鏃ユ湡鎴彇
+ if (arrDataCutout.length > 0) {
+ arrDataCutout.forEach(itemIn => {
+ if (key == itemIn.dataIndex && item[key]) {
+ item[key] = item[key].split(" ")[0]
+ }
+ })
+ }
+ });
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+ }).catch((err) => {
+ this.loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+
+
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ onChangecreatedTime(date, dateString) {
+ this.queryParam.createdTime = dateString
+ },
+ onChangeupdatedTime(date, dateString) {
+ this.queryParam.updatedTime = dateString
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/addForm.vue
new file mode 100644
index 0000000..5c9eb3c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/addForm.vue
@@ -0,0 +1,115 @@
+锘�<template>
+ <a-modal
+ title="鏂板浠撳簱琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="浠撳簱缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨搴撶紪鍙�" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ヤ粨搴撶紪鍙凤紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨搴撳悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ヤ粨搴撳悕绉帮紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="浠撳簱鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨搴撳湴鍧�" v-decorator="['address']" />
+ </a-form-item>
+ <a-form-item label="宸ュ巶缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐鍘傜紪鍙�" v-decorator="['factoryCode']" />
+ </a-form-item>
+ <a-form-item label="闀�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ暱" v-decorator="['length']" />
+ </a-form-item>
+ <a-form-item label="瀹�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ" v-decorator="['width']" />
+ </a-form-item>
+ <a-form-item label="楂�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ珮" v-decorator="['height']" />
+ </a-form-item>
+ <a-form-item label="鍩烘湰鍗曞厓" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ熀鏈崟鍏�" v-decorator="['baseUnit']" />
+ </a-form-item>
+ <a-form-item label="瀹氫綅" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ畾浣�" v-decorator="['position']" />
+ </a-form-item>
+ <a-form-item label="鏄惁绂佺敤" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁绂佺敤锛�' }], valuePropName: 'checked'}]" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ WmsWarehouseAdd
+ } from '@/api/modular/main/WmsBase/WmsWarehouseManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsWarehouseAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/editForm.vue
new file mode 100644
index 0000000..3e8cf66
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/editForm.vue
@@ -0,0 +1,139 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫浠撳簱琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="浠撳簱缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨搴撶紪鍙�" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ヤ粨搴撶紪鍙凤紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨搴撳悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ヤ粨搴撳悕绉帮紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="浠撳簱鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨搴撳湴鍧�" v-decorator="['address']" />
+ </a-form-item>
+ <a-form-item label="宸ュ巶缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐鍘傜紪鍙�" v-decorator="['factoryCode']" />
+ </a-form-item>
+ <a-form-item label="闀�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ暱" v-decorator="['length']" />
+ </a-form-item>
+ <a-form-item label="瀹�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ" v-decorator="['width']" />
+ </a-form-item>
+ <a-form-item label="楂�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ珮" v-decorator="['height']" />
+ </a-form-item>
+ <a-form-item label="鍩烘湰鍗曞厓" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ熀鏈崟鍏�" v-decorator="['baseUnit']" />
+ </a-form-item>
+ <a-form-item label="瀹氫綅" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ畾浣�" v-decorator="['position']" />
+ </a-form-item>
+ <a-form-item label="鏄惁绂佺敤" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁绂佺敤锛�' }], valuePropName: 'checked'}]" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+ import {
+ WmsWarehouseEdit
+ } from '@/api/modular/main/WmsBase/WmsWarehouseManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ code: record.code,
+ name: record.name,
+ address: record.address,
+ factoryCode: record.factoryCode,
+ length: record.length,
+ width: record.width,
+ height: record.height,
+ baseUnit: record.baseUnit,
+ position: record.position,
+ isDisabled: record.isDisabled,
+ remarks: record.remarks
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsWarehouseEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/excelForm.vue
new file mode 100644
index 0000000..29114db
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <!--<a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>-->
+ </a-row>
+ <a-row :span="24">
+ <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>-->
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsWarehouseDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+ import { WmsWarehouseImportExcel, WmsWarehouseDownloadExcelTemplate} from '@/api/modular/main/WmsBase/WmsWarehouseManage'
+ import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsWarehouseDownloadExcelTemplate")
+ window.downloadFile = this.wmsWarehouseDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsWarehouse"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ WmsWarehouseImportExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsWarehouseDownloadExcelTemplate() {
+ WmsWarehouseDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/index.vue
new file mode 100644
index 0000000..c4b00fd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/index.vue
@@ -0,0 +1,638 @@
+锘�<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsWarehouse:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撳簱缂栧彿">
+ <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ヤ粨搴撶紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撳簱鍚嶇О">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ヤ粨搴撳悕绉�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撳簱鍦板潃">
+ <a-input v-model="queryParam.address" allow-clear placeholder="璇疯緭鍏ヤ粨搴撳湴鍧�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="宸ュ巶缂栧彿">
+ <a-input v-model="queryParam.factoryCode" allow-clear placeholder="璇疯緭鍏ュ伐鍘傜紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="闀�">
+ <a-input v-model="queryParam.length" allow-clear placeholder="璇疯緭鍏ラ暱"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹�">
+ <a-input v-model="queryParam.width" allow-clear placeholder="璇疯緭鍏ュ"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="楂�">
+ <a-input v-model="queryParam.height" allow-clear placeholder="璇疯緭鍏ラ珮"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍩烘湰鍗曞厓">
+ <a-input v-model="queryParam.baseUnit" allow-clear placeholder="璇疯緭鍏ュ熀鏈崟鍏�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹氫綅">
+ <a-input v-model="queryParam.position" allow-clear placeholder="璇疯緭鍏ュ畾浣�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏄惁绂佺敤">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.isDisabled" placeholder="璇烽�夋嫨鏄惁绂佺敤">
+ <a-select-option v-for="(item,index) in isDisabledData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="澶囨敞">
+ <a-input v-model="queryParam.remarks" allow-clear placeholder="璇疯緭鍏ュ娉�"/>
+ </a-form-item>
+ </a-col> <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangecreatedTime"/>
+
+ </a-form-item>
+ </a-col>
+ <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏇存柊鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangeupdatedTime"/>
+
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鑰呭悕绉�">
+ <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="淇敼鑰呭悕绉�">
+ <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ @changeTablePage="pageInfo = $event"
+ :scroll="{x: true,y:tableHeight}"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsWarehouse:add')" >
+ <div ref="actionBar" class="actionBar">
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('WmsWarehouse:exportExcel')" icon="download" @click="WmsWarehouseToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsWarehouse:add')" icon="plus" @click="$refs.addForm.add()">鏂板浠撳簱琛�</a-button>
+ </div>
+ </template>
+ <span slot="isDisabledscopedSlots" slot-scope="text">
+ <div v-if="text===true ">
+ <a-tag color="green">鏄�</a-tag>
+ </div>
+ <div v-else-if="text==false">
+ <a-tag color="volcano">鍚�</a-tag>
+ </div>
+ <div v-else=""></div>
+ </span>
+ <span slot="action" slot-scope="text, record">
+
+ <a v-if="hasPerm('WmsWarehouse:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsWarehouse:edit') & hasPerm('WmsWarehouse:delete')"/>
+ <a-popconfirm v-if="hasPerm('WmsWarehouse:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsWarehouseDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <excel-form ref="excelForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import { WmsWarehousePage, WmsWarehouseDelete, WmsWarehouseToExcel } from '@/api/modular/main/WmsBase/WmsWarehouseManage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import addForm from './addForm.vue'
+ import { exportExcel } from '@/utils/exportToExcel'
+ import { downloadFile } from '@/utils/util'
+ import editForm from './editForm.vue'
+ import excelForm from './excelForm.vue'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ STable,
+ addForm,
+ editForm,
+ excelForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ pageInfo: {
+ current: 1,
+ pageSize: 10
+ },
+ columns: [
+ {
+ title:'搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}`
+ },
+ {
+ title: '浠撳簱缂栧彿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'code'
+ },
+ {
+ title: '浠撳簱鍚嶇О',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'name'
+ },
+ {
+ title: '浠撳簱鍦板潃',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'address'
+ },
+ {
+ title: '宸ュ巶缂栧彿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'factoryCode'
+ },
+ {
+ title: '闀�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'length'
+ },
+ {
+ title: '瀹�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'width'
+ },
+ {
+ title: '楂�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'height'
+ },
+ {
+ title: '鍩烘湰鍗曞厓',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'baseUnit'
+ },
+ {
+ title: '瀹氫綅',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'position'
+ },
+ {
+ title: '鏄惁绂佺敤',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'isDisabled',
+ scopedSlots: { customRender: 'isDisabledscopedSlots' }
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'remarks'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedTime'
+ },
+ {
+ title: '鍒涘缓鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '淇敼鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedUserName'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsWarehousePage(Object.assign(parameter, this.switchingDate())).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsWarehouse:edit') || this.hasPerm('WmsWarehouse:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ var _columns = JSON.parse(columnStr)
+ this.columns.forEach(element => {
+ var fObj = _columns.find((item, index) => {
+ return item.dataIndex === element.dataIndex;
+ })
+ if(fObj!=undefined && fObj!=null){
+ element.checked=fObj.checked;
+ }
+ });
+ }
+ const isDisabledOption = this.$options
+ this.isDisabledData = isDisabledOption.filters['dictData']('yes_true_false')
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ methods: {
+ moment,
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsWarehouseDelete (record) {
+ WmsWarehouseDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+
+
+ WmsWarehouseToExcel() {
+ this.loading = true
+ let entozh = {};
+ const path = this.$route.path;
+ if (window.localStorage.getItem(path)) {
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ } else { //鐩存帴鐐瑰鍑�
+ this.columns.forEach(item => {
+ if (item.dataIndex != 'action') {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ }
+ WmsWarehousePage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+ this.loading = false;
+ //闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+ var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+ res.data.rows.forEach(item => {
+ var arrKeys = Object.keys(item);
+ arrKeys.forEach(key => {
+ var strFieldDic = key + 'Data';
+ //鏋氫妇杞��
+ if (this[strFieldDic] && this[strFieldDic].length > 0) {
+ let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+ if (arrFieldDic.length > 0) {
+ item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+ }
+ }
+ // 鏃ユ湡鎴彇
+ if (arrDataCutout.length > 0) {
+ arrDataCutout.forEach(itemIn => {
+ if (key == itemIn.dataIndex && item[key]) {
+ item[key] = item[key].split(" ")[0]
+ }
+ })
+ }
+ });
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+ }).catch((err) => {
+ this.loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+
+
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ onChangecreatedTime(date, dateString) {
+ this.queryParam.createdTime = dateString
+ },
+ onChangeupdatedTime(date, dateString) {
+ this.queryParam.updatedTime = dateString
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Dto/WmsContainerPackagingInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Dto/WmsContainerPackagingInput.cs
new file mode 100644
index 0000000..dab796a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Dto/WmsContainerPackagingInput.cs
@@ -0,0 +1,193 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 鍖呰鍏崇郴鍩虹琛ㄦ煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsContainerPackagingSearch : PageInputBase
+ {
+ /// <summary>
+ /// 瀹瑰櫒绫诲瀷ID
+ /// </summary>
+ public virtual long? ContainerTypeId { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒绫诲瀷鍚嶇О
+ /// </summary>
+ public virtual string ContainerTypeName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷ID
+ /// </summary>
+ public virtual long? MaterialTypeId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷缂栧彿
+ /// </summary>
+ public virtual string MaterialTypeCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷鍚嶇О
+ /// </summary>
+ public virtual string MaterialTypeName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀹瑰櫒瀹归噺
+ /// </summary>
+ public virtual decimal? BoxQty { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual List<string> CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual List<string> UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鍖呰鍏崇郴鍩虹琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsContainerPackagingSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 瀹瑰櫒绫诲瀷ID
+ /// </summary>
+ public virtual long? ContainerTypeId { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒绫诲瀷鍚嶇О
+ /// </summary>
+ public virtual string ContainerTypeName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷ID
+ /// </summary>
+ public virtual long? MaterialTypeId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷缂栧彿
+ /// </summary>
+ public virtual string MaterialTypeCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷鍚嶇О
+ /// </summary>
+ public virtual string MaterialTypeName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀹瑰櫒瀹归噺
+ /// </summary>
+ public virtual decimal? BoxQty { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual List<DateTimeOffset>? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual List<DateTimeOffset>? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鍖呰鍏崇郴鍩虹琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class WmsContainerPackagingInput
+ {
+ /// <summary>
+ /// 瀹瑰櫒绫诲瀷ID
+ /// </summary>
+ public virtual long? ContainerTypeId { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒绫诲瀷鍚嶇О
+ /// </summary>
+ public virtual string ContainerTypeName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷ID
+ /// </summary>
+ public virtual long? MaterialTypeId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷缂栧彿
+ /// </summary>
+ public virtual string MaterialTypeCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷鍚嶇О
+ /// </summary>
+ public virtual string MaterialTypeName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀹瑰櫒瀹归噺
+ /// </summary>
+ public virtual decimal? BoxQty { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鍖呰鍏崇郴鍩虹琛ㄦ柊澧炲弬鏁�
+ /// </summary>
+ public class AddWmsContainerPackagingInput : WmsContainerPackagingInput
+ {
+ }
+
+ /// <summary>
+ /// 鍖呰鍏崇郴鍩虹琛ㄥ垹闄ゅ弬鏁�
+ /// </summary>
+ public class DeleteWmsContainerPackagingInput : BaseId
+ {
+ }
+
+ /// <summary>
+ /// 鍖呰鍏崇郴鍩虹琛ㄦ洿鏂板弬鏁�
+ /// </summary>
+ public class UpdateWmsContainerPackagingInput : WmsContainerPackagingInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long? Id { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鍖呰鍏崇郴鍩虹琛ㄨ幏鍙栧崟涓弬鏁�
+ /// </summary>
+ public class QueryeWmsContainerPackagingInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Dto/WmsContainerPackagingOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Dto/WmsContainerPackagingOutput.cs
new file mode 100644
index 0000000..bcea1eb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Dto/WmsContainerPackagingOutput.cs
@@ -0,0 +1,67 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍖呰鍏崇郴鍩虹琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsContainerPackagingOutput
+ {
+ /// <summary>
+ /// 瀹瑰櫒绫诲瀷ID
+ /// </summary>
+ public long? ContainerTypeId { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒绫诲瀷鍚嶇О
+ /// </summary>
+ public string ContainerTypeName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷ID
+ /// </summary>
+ public long? MaterialTypeId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷缂栧彿
+ /// </summary>
+ public string MaterialTypeCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷鍚嶇О
+ /// </summary>
+ public string MaterialTypeName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀹瑰櫒瀹归噺
+ /// </summary>
+ public decimal? BoxQty { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long? Id { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public DateTimeOffset? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public string UpdatedUserName { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/IWmsContainerPackagingService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/IWmsContainerPackagingService.cs
new file mode 100644
index 0000000..a89a297
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/IWmsContainerPackagingService.cs
@@ -0,0 +1,22 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsContainerPackagingService
+ {
+ Task<WmsContainerPackagingOutput> Get([FromQuery] QueryeWmsContainerPackagingInput input);
+ Task<List<WmsContainerPackagingOutput>> List([FromQuery] WmsContainerPackagingInput input);
+ Task<PageResult<WmsContainerPackagingOutput>> Page([FromQuery] WmsContainerPackagingSearch input);
+ Task<List<WmsContainerPackagingOutput>> ListNonPageAsync([FromQuery] WmsContainerPackagingSearchNonPage input);
+
+ Task Add(AddWmsContainerPackagingInput input);
+ Task Update(UpdateWmsContainerPackagingInput input);
+ Task Delete(DeleteWmsContainerPackagingInput input);
+ Task<int> ImportExcelAsync(IFormFile file);
+ IActionResult DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Map/WmsContainerPackagingMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Map/WmsContainerPackagingMapper.cs
new file mode 100644
index 0000000..4a251b4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Map/WmsContainerPackagingMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class WmsContainerPackagingMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsContainerPackagingInput, WmsContainerPackaging>()
+ ;
+ config.ForType<UpdateWmsContainerPackagingInput, WmsContainerPackaging>()
+ ;
+ config.ForType<WmsContainerPackaging, WmsContainerPackagingOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs
new file mode 100644
index 0000000..c2759c1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs
@@ -0,0 +1,397 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍖呰鍏崇郴鍩虹琛ㄦ湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("WmsBase", Name = "WmsContainerPackaging", Order = 100)]
+ [Route("api")]
+ public class WmsContainerPackagingService : IWmsContainerPackagingService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsContainerPackaging,MasterDbContextLocator> _wmsContainerPackagingRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ public WmsContainerPackagingService(
+ IRepository<WmsContainerPackaging,MasterDbContextLocator> wmsContainerPackagingRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _wmsContainerPackagingRep = wmsContainerPackagingRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鍖呰鍏崇郴鍩虹琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("WmsContainerPackaging/page")]
+ public async Task<PageResult<WmsContainerPackagingOutput>> Page([FromQuery] WmsContainerPackagingSearch input)
+ {
+ var wmsContainerPackagings = await _wmsContainerPackagingRep.DetachedEntities
+ .Where(input.ContainerTypeId != null, u => u.ContainerTypeId == input.ContainerTypeId)
+ .Where(!string.IsNullOrEmpty(input.ContainerTypeName), u => u.ContainerTypeName == input.ContainerTypeName)
+ .Where(input.MaterialTypeId != null, u => u.MaterialTypeId == input.MaterialTypeId)
+ .Where(!string.IsNullOrEmpty(input.MaterialTypeCode), u => u.MaterialTypeCode == input.MaterialTypeCode)
+ .Where(!string.IsNullOrEmpty(input.MaterialTypeName), u => u.MaterialTypeName == input.MaterialTypeName)
+ .Where(input.BoxQty != null, u => u.BoxQty == input.BoxQty)
+ .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+ .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+ .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName)
+ .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsContainerPackagingSearch>(input))
+ .ProjectToType<WmsContainerPackagingOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsContainerPackagings;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠寘瑁呭叧绯诲熀纭�琛ㄥ垪琛�
+ /// </summary>
+ /// <param name="input">鍖呰鍏崇郴鍩虹琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>(鍖呰鍏崇郴鍩虹琛�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("WmsContainerPackaging/listNonPage")]
+ public async Task<List<WmsContainerPackagingOutput>> ListNonPageAsync([FromQuery] WmsContainerPackagingSearchNonPage input)
+ {
+ var pContainerTypeId = input.ContainerTypeId;
+ var pContainerTypeName = input.ContainerTypeName?.Trim() ?? "";
+ var pMaterialTypeId = input.MaterialTypeId;
+ var pMaterialTypeCode = input.MaterialTypeCode?.Trim() ?? "";
+ var pMaterialTypeName = input.MaterialTypeName?.Trim() ?? "";
+ var pBoxQty = input.BoxQty;
+ var pCreatedTime = input.CreatedTime;
+ var pUpdatedTime = input.UpdatedTime;
+ var pCreatedUserName = input.CreatedUserName?.Trim() ?? "";
+ var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? "";
+ var wmsContainerPackagings = await _wmsContainerPackagingRep.DetachedEntities
+ .Where(pContainerTypeId != null, u => u.ContainerTypeId == pContainerTypeId)
+ .Where(!string.IsNullOrEmpty(pContainerTypeName), u => u.ContainerTypeName == pContainerTypeName)
+ .Where(pMaterialTypeId != null, u => u.MaterialTypeId == pMaterialTypeId)
+ .Where(!string.IsNullOrEmpty(pMaterialTypeCode), u => u.MaterialTypeCode == pMaterialTypeCode)
+ .Where(!string.IsNullOrEmpty(pMaterialTypeName), u => u.MaterialTypeName == pMaterialTypeName)
+ .Where(pBoxQty != null, u => u.BoxQty == pBoxQty)
+ .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+ .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+ .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName)
+ .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsContainerPackagingOutput>()
+ .ToListAsync();
+ return wmsContainerPackagings;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍖呰鍏崇郴鍩虹琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("WmsContainerPackaging/detail")]
+ public async Task<WmsContainerPackagingOutput> Get([FromQuery] QueryeWmsContainerPackagingInput input)
+ {
+ return (await _wmsContainerPackagingRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsContainerPackagingOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍖呰鍏崇郴鍩虹琛ㄥ垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("WmsContainerPackaging/list")]
+ public async Task<List<WmsContainerPackagingOutput>> List([FromQuery] WmsContainerPackagingInput input)
+ {
+ return await _wmsContainerPackagingRep.DetachedEntities.ProjectToType<WmsContainerPackagingOutput>().ToListAsync();
+ }
+
+ #region 澧炪�佸垹銆佹敼
+
+ /// <summary>
+ /// 澧炲姞鍖呰鍏崇郴鍩虹琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("WmsContainerPackaging/add")]
+ public async Task Add(AddWmsContainerPackagingInput input)
+ {
+ var wmsContainerPackaging = input.Adapt<WmsContainerPackaging>();
+ //楠岃瘉
+ await CheckExisit(wmsContainerPackaging);
+
+ wmsContainerPackaging.CreatedUserId = wmsContainerPackaging.UpdatedUserId = SysHelper.GetUserId();
+ wmsContainerPackaging.CreatedUserName = wmsContainerPackaging.UpdatedUserName = SysHelper.GetUserName();
+ wmsContainerPackaging.CreatedTime = wmsContainerPackaging.UpdatedTime = SysHelper.GetNowTime();
+ await _wmsContainerPackagingRep.InsertAsync(wmsContainerPackaging);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍖呰鍏崇郴鍩虹琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("WmsContainerPackaging/delete")]
+ public async Task Delete(DeleteWmsContainerPackagingInput input)
+ {
+ var wmsContainerPackaging = await _wmsContainerPackagingRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsContainerPackagingRep.DeleteAsync(wmsContainerPackaging);
+
+ }
+
+ /// <summary>
+ /// 鏇存柊鍖呰鍏崇郴鍩虹琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("WmsContainerPackaging/edit")]
+ public async Task Update(UpdateWmsContainerPackagingInput input)
+ {
+ var isExist = await _wmsContainerPackagingRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+ var wmsContainerPackaging = input.Adapt<WmsContainerPackaging>();
+ //楠岃瘉
+ await CheckExisit(wmsContainerPackaging,true);
+
+ wmsContainerPackaging.UpdatedUserId = SysHelper.GetUserId();
+ wmsContainerPackaging.UpdatedUserName = SysHelper.GetUserName();
+ wmsContainerPackaging.UpdatedTime = SysHelper.GetNowTime();
+ await _wmsContainerPackagingRep.UpdateAsync(wmsContainerPackaging,ignoreNullValues:true);
+ }
+
+ #endregion
+
+ #region 瀵煎叆
+
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆鍖呰鍏崇郴鍩虹琛ㄥ姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("WmsContainerPackaging/importExcel")]
+ public async Task<int> ImportExcelAsync(IFormFile file)
+ {
+ int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+ int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+ DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+ var addList =await CommonImport(importDataTable, _DataStartLine);
+
+ lock (_lock)
+ {
+ _wmsContainerPackagingRep.InsertAsync(addList);
+
+ }
+ await Task.CompletedTask;
+ return addList.Count;
+ }
+
+ /// <summary>
+ /// DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ /// </summary>
+ /// <param name="dataTable"></param>
+ /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ /// <returns></returns>
+ private async Task<List<WmsContainerPackaging>> CommonImport(DataTable dataTable, int dataStartLine)
+ {
+
+ var details = new List<WmsContainerPackaging>();
+ int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+ foreach (System.Data.DataRow row in dataTable.Rows)
+ {
+ index++;
+
+ //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+
+ var addItem = new WmsContainerPackaging()
+ {
+ CreatedTime = SysHelper.GetNowTime(),
+ CreatedUserId = SysHelper.GetUserId(),
+ CreatedUserName = SysHelper.GetUserName(),
+ UpdatedTime = SysHelper.GetNowTime(),
+ UpdatedUserId = SysHelper.GetUserId(),
+ UpdatedUserName = SysHelper.GetUserName()
+ };
+ #region 瀹氫箟鍙橀噺
+ var _ContainerTypeId = "";//瀹瑰櫒绫诲瀷ID
+ var _ContainerTypeName = "";//瀹瑰櫒绫诲瀷鍚嶇О
+ var _MaterialTypeId = "";//鐗╂枡绫诲瀷ID
+ var _MaterialTypeCode = "";//鐗╂枡绫诲瀷缂栧彿
+ var _MaterialTypeName = "";//鐗╂枡绫诲瀷鍚嶇О
+ var _BoxQty = "";//鐗╂枡瀹瑰櫒瀹归噺
+ var _Id = "";//Id涓婚敭
+ #endregion
+
+
+ #region 鍙栧��
+ _ContainerTypeId = row["瀹瑰櫒绫诲瀷ID"]?.ToString() ;
+ _ContainerTypeName = row["瀹瑰櫒绫诲瀷鍚嶇О"]?.ToString() ;
+ _MaterialTypeId = row["鐗╂枡绫诲瀷ID"]?.ToString() ;
+ _MaterialTypeCode = row["鐗╂枡绫诲瀷缂栧彿"]?.ToString() ;
+ _MaterialTypeName = row["鐗╂枡绫诲瀷鍚嶇О"]?.ToString() ;
+ _BoxQty = row["鐗╂枡瀹瑰櫒瀹归噺"]?.ToString() ;
+ _Id = row["Id涓婚敭"]?.ToString() ;
+ #endregion
+
+
+ #region 楠岃瘉
+ if(!string.IsNullOrEmpty(_ContainerTypeId))
+ {
+ if (!long.TryParse(_ContainerTypeId, out long outContainerTypeId)&&!string.IsNullOrEmpty(_ContainerTypeId))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾瀹瑰櫒绫诲瀷ID]{_ContainerTypeId}鍊间笉姝g‘锛�");
+ }
+ if (outContainerTypeId <= 0&&!string.IsNullOrEmpty(_ContainerTypeId))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾瀹瑰櫒绫诲瀷ID]{_ContainerTypeId}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.ContainerTypeId = outContainerTypeId;
+ }
+
+ }
+ if(!string.IsNullOrEmpty(_ContainerTypeName))
+ {
+ addItem.ContainerTypeName = (string)_ContainerTypeName;
+ }
+ if(!string.IsNullOrEmpty(_MaterialTypeId))
+ {
+ if (!long.TryParse(_MaterialTypeId, out long outMaterialTypeId)&&!string.IsNullOrEmpty(_MaterialTypeId))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鐗╂枡绫诲瀷ID]{_MaterialTypeId}鍊间笉姝g‘锛�");
+ }
+ if (outMaterialTypeId <= 0&&!string.IsNullOrEmpty(_MaterialTypeId))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鐗╂枡绫诲瀷ID]{_MaterialTypeId}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.MaterialTypeId = outMaterialTypeId;
+ }
+
+ }
+ if(!string.IsNullOrEmpty(_MaterialTypeCode))
+ {
+ addItem.MaterialTypeCode = (string)_MaterialTypeCode;
+ }
+ if(!string.IsNullOrEmpty(_MaterialTypeName))
+ {
+ addItem.MaterialTypeName = (string)_MaterialTypeName;
+ }
+ if(!string.IsNullOrEmpty(_BoxQty))
+ {
+ if (!decimal.TryParse(_BoxQty, out decimal outBoxQty)&&!string.IsNullOrEmpty(_BoxQty))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鐗╂枡瀹瑰櫒瀹归噺]{_BoxQty}鍊间笉姝g‘锛�");
+ }
+ if (outBoxQty <= 0&&!string.IsNullOrEmpty(_BoxQty))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鐗╂枡瀹瑰櫒瀹归噺]{_BoxQty}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.BoxQty = outBoxQty;
+ }
+
+ }
+ if(!string.IsNullOrEmpty(_Id))
+ {
+ if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉姝g‘锛�");
+ }
+ if (outId <= 0&&!string.IsNullOrEmpty(_Id))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.Id = outId;
+ }
+
+ }
+ #endregion
+
+
+
+ details.Add(addItem);
+ }
+ //楠岄噸
+ await CheckExisitForImport(details);
+
+ return details;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇鍖呰鍏崇郴鍩虹琛ㄧ殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("WmsContainerPackaging/downloadExcelTemplate")]
+ public IActionResult DownloadExcelTemplate([FromQuery] string version)
+ {
+ string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\WmsContainerPackaging{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+ var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(鍖呰鍏崇郴鍩虹琛�).xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ #endregion
+
+ #region 绉佹湁鏂规硶
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="isEdit"></param>
+ /// <returns></returns>
+ private async Task CheckExisit( WmsContainerPackaging input,bool isEdit=false)
+ {
+
+
+
+
+
+
+
+
+
+ //娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲�
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <returns></returns>
+ private async Task CheckExisitForImport(List<WmsContainerPackaging> inputs)
+ {
+ //鏍规嵁鑱斿悎涓婚敭楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+
+
+
+
+ }
+
+ #endregion
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodInput.cs
new file mode 100644
index 0000000..32c1005
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodInput.cs
@@ -0,0 +1,215 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 鏇夸唬鍝佺鐞嗘煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsSubstituteGoodSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鏇夸唬缂栧彿
+ /// </summary>
+ public virtual string SubstituteCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public virtual string MaterialCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public virtual string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺墿鏂欑紪鍙�
+ /// </summary>
+ public virtual string SubstituteMaterialCode { get; set; }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺墿鏂欏悕绉�
+ /// </summary>
+ public virtual string SubstituteMaterialName { get; set; }
+
+ /// <summary>
+ /// 鏇夸唬娆″簭
+ /// </summary>
+ public virtual int? SubstituteIndex { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public virtual bool? IsDisabled { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual List<string> CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual List<string> UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺鐞嗕笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsSubstituteGoodSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鏇夸唬缂栧彿
+ /// </summary>
+ public virtual string SubstituteCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public virtual string MaterialCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public virtual string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺墿鏂欑紪鍙�
+ /// </summary>
+ public virtual string SubstituteMaterialCode { get; set; }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺墿鏂欏悕绉�
+ /// </summary>
+ public virtual string SubstituteMaterialName { get; set; }
+
+ /// <summary>
+ /// 鏇夸唬娆″簭
+ /// </summary>
+ public virtual int? SubstituteIndex { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public virtual bool? IsDisabled { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual List<DateTimeOffset>? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual List<DateTimeOffset>? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺鐞嗚緭鍏ュ弬鏁�
+ /// </summary>
+ public class WmsSubstituteGoodInput
+ {
+ /// <summary>
+ /// 鏇夸唬缂栧彿
+ /// </summary>
+ [Required(ErrorMessage = "鏇夸唬缂栧彿涓嶈兘涓虹┖")]
+ public virtual string SubstituteCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Required(ErrorMessage = "鐗╂枡缂栧彿涓嶈兘涓虹┖")]
+ public virtual string MaterialCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "鐗╂枡鍚嶇О涓嶈兘涓虹┖")]
+ public virtual string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺墿鏂欑紪鍙�
+ /// </summary>
+ [Required(ErrorMessage = "鏇夸唬鍝佺墿鏂欑紪鍙蜂笉鑳戒负绌�")]
+ public virtual string SubstituteMaterialCode { get; set; }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺墿鏂欏悕绉�
+ /// </summary>
+ [Required(ErrorMessage = "鏇夸唬鍝佺墿鏂欏悕绉颁笉鑳戒负绌�")]
+ public virtual string SubstituteMaterialName { get; set; }
+
+ /// <summary>
+ /// 鏇夸唬娆″簭
+ /// </summary>
+ [Required(ErrorMessage = "鏇夸唬娆″簭涓嶈兘涓虹┖")]
+ public virtual int SubstituteIndex { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ [Required(ErrorMessage = "鏄惁绂佺敤涓嶈兘涓虹┖")]
+ public virtual bool IsDisabled { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺鐞嗘柊澧炲弬鏁�
+ /// </summary>
+ public class AddWmsSubstituteGoodInput : WmsSubstituteGoodInput
+ {
+ }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺鐞嗗垹闄ゅ弬鏁�
+ /// </summary>
+ public class DeleteWmsSubstituteGoodInput : BaseId
+ {
+ }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺鐞嗘洿鏂板弬鏁�
+ /// </summary>
+ public class UpdateWmsSubstituteGoodInput : WmsSubstituteGoodInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long? Id { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺鐞嗚幏鍙栧崟涓弬鏁�
+ /// </summary>
+ public class QueryeWmsSubstituteGoodInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodOutput.cs
new file mode 100644
index 0000000..ff829a6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodOutput.cs
@@ -0,0 +1,72 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏇夸唬鍝佺鐞嗚緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsSubstituteGoodOutput
+ {
+ /// <summary>
+ /// 鏇夸唬缂栧彿
+ /// </summary>
+ public string SubstituteCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺墿鏂欑紪鍙�
+ /// </summary>
+ public string SubstituteMaterialCode { get; set; }
+
+ /// <summary>
+ /// 鏇夸唬鍝佺墿鏂欏悕绉�
+ /// </summary>
+ public string SubstituteMaterialName { get; set; }
+
+ /// <summary>
+ /// 鏇夸唬娆″簭
+ /// </summary>
+ public int SubstituteIndex { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool IsDisabled { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long? Id { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public DateTimeOffset? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public string UpdatedUserName { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/IWmsSubstituteGoodService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/IWmsSubstituteGoodService.cs
new file mode 100644
index 0000000..dbf2713
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/IWmsSubstituteGoodService.cs
@@ -0,0 +1,22 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsSubstituteGoodService
+ {
+ Task<WmsSubstituteGoodOutput> Get([FromQuery] QueryeWmsSubstituteGoodInput input);
+ Task<List<WmsSubstituteGoodOutput>> List([FromQuery] WmsSubstituteGoodInput input);
+ Task<PageResult<WmsSubstituteGoodOutput>> Page([FromQuery] WmsSubstituteGoodSearch input);
+ Task<List<WmsSubstituteGoodOutput>> ListNonPageAsync([FromQuery] WmsSubstituteGoodSearchNonPage input);
+
+ Task Add(AddWmsSubstituteGoodInput input);
+ Task Update(UpdateWmsSubstituteGoodInput input);
+ Task Delete(DeleteWmsSubstituteGoodInput input);
+ Task<int> ImportExcelAsync(IFormFile file);
+ IActionResult DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Map/WmsSubstituteGoodMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Map/WmsSubstituteGoodMapper.cs
new file mode 100644
index 0000000..b813eff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Map/WmsSubstituteGoodMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class WmsSubstituteGoodMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsSubstituteGoodInput, WmsSubstituteGood>()
+ ;
+ config.ForType<UpdateWmsSubstituteGoodInput, WmsSubstituteGood>()
+ ;
+ config.ForType<WmsSubstituteGood, WmsSubstituteGoodOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/WmsSubstituteGoodService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/WmsSubstituteGoodService.cs
new file mode 100644
index 0000000..2f80369
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/WmsSubstituteGoodService.cs
@@ -0,0 +1,481 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏇夸唬鍝佺鐞嗘湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("WmsBase", Name = "WmsSubstituteGood", Order = 100)]
+ [Route("api")]
+ public class WmsSubstituteGoodService : IWmsSubstituteGoodService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsSubstituteGood,MasterDbContextLocator> _wmsSubstituteGoodRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ public WmsSubstituteGoodService(
+ IRepository<WmsSubstituteGood,MasterDbContextLocator> wmsSubstituteGoodRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _wmsSubstituteGoodRep = wmsSubstituteGoodRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鏇夸唬鍝佺鐞�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("WmsSubstituteGood/page")]
+ public async Task<PageResult<WmsSubstituteGoodOutput>> Page([FromQuery] WmsSubstituteGoodSearch input)
+ {
+ var wmsSubstituteGoods = await _wmsSubstituteGoodRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.SubstituteCode), u => u.SubstituteCode == input.SubstituteCode)
+ .Where(!string.IsNullOrEmpty(input.MaterialCode), u => u.MaterialCode == input.MaterialCode)
+ .Where(!string.IsNullOrEmpty(input.MaterialName), u => u.MaterialName == input.MaterialName)
+ .Where(!string.IsNullOrEmpty(input.SubstituteMaterialCode), u => u.SubstituteMaterialCode == input.SubstituteMaterialCode)
+ .Where(!string.IsNullOrEmpty(input.SubstituteMaterialName), u => u.SubstituteMaterialName == input.SubstituteMaterialName)
+ .Where(input.SubstituteIndex != null, u => u.SubstituteIndex == input.SubstituteIndex)
+ .Where(input.IsDisabled != null, u => u.IsDisabled == input.IsDisabled)
+ .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+ .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+ .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName)
+ .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsSubstituteGoodSearch>(input))
+ .ProjectToType<WmsSubstituteGoodOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsSubstituteGoods;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈡浛浠e搧绠$悊鍒楄〃
+ /// </summary>
+ /// <param name="input">鏇夸唬鍝佺鐞嗘煡璇㈠弬鏁�</param>
+ /// <returns>(鏇夸唬鍝佺鐞�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("WmsSubstituteGood/listNonPage")]
+ public async Task<List<WmsSubstituteGoodOutput>> ListNonPageAsync([FromQuery] WmsSubstituteGoodSearchNonPage input)
+ {
+ var pSubstituteCode = input.SubstituteCode?.Trim() ?? "";
+ var pMaterialCode = input.MaterialCode?.Trim() ?? "";
+ var pMaterialName = input.MaterialName?.Trim() ?? "";
+ var pSubstituteMaterialCode = input.SubstituteMaterialCode?.Trim() ?? "";
+ var pSubstituteMaterialName = input.SubstituteMaterialName?.Trim() ?? "";
+ var pSubstituteIndex = input.SubstituteIndex;
+ var pIsDisabled = input.IsDisabled;
+ var pCreatedTime = input.CreatedTime;
+ var pUpdatedTime = input.UpdatedTime;
+ var pCreatedUserName = input.CreatedUserName?.Trim() ?? "";
+ var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? "";
+ var wmsSubstituteGoods = await _wmsSubstituteGoodRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pSubstituteCode), u => u.SubstituteCode == pSubstituteCode)
+ .Where(!string.IsNullOrEmpty(pMaterialCode), u => u.MaterialCode == pMaterialCode)
+ .Where(!string.IsNullOrEmpty(pMaterialName), u => u.MaterialName == pMaterialName)
+ .Where(!string.IsNullOrEmpty(pSubstituteMaterialCode), u => u.SubstituteMaterialCode == pSubstituteMaterialCode)
+ .Where(!string.IsNullOrEmpty(pSubstituteMaterialName), u => u.SubstituteMaterialName == pSubstituteMaterialName)
+ .Where(pSubstituteIndex != null, u => u.SubstituteIndex == pSubstituteIndex)
+ .Where(pIsDisabled != null, u => u.IsDisabled == pIsDisabled)
+ .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+ .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+ .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName)
+ .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsSubstituteGoodOutput>()
+ .ToListAsync();
+ return wmsSubstituteGoods;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏇夸唬鍝佺鐞�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("WmsSubstituteGood/detail")]
+ public async Task<WmsSubstituteGoodOutput> Get([FromQuery] QueryeWmsSubstituteGoodInput input)
+ {
+ return (await _wmsSubstituteGoodRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsSubstituteGoodOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏇夸唬鍝佺鐞嗗垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("WmsSubstituteGood/list")]
+ public async Task<List<WmsSubstituteGoodOutput>> List([FromQuery] WmsSubstituteGoodInput input)
+ {
+ return await _wmsSubstituteGoodRep.DetachedEntities.ProjectToType<WmsSubstituteGoodOutput>().ToListAsync();
+ }
+
+ #region 澧炪�佸垹銆佹敼
+
+ /// <summary>
+ /// 澧炲姞鏇夸唬鍝佺鐞�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("WmsSubstituteGood/add")]
+ public async Task Add(AddWmsSubstituteGoodInput input)
+ {
+ var wmsSubstituteGood = input.Adapt<WmsSubstituteGood>();
+ //楠岃瘉
+ await CheckExisit(wmsSubstituteGood);
+
+ wmsSubstituteGood.CreatedUserId = wmsSubstituteGood.UpdatedUserId = SysHelper.GetUserId();
+ wmsSubstituteGood.CreatedUserName = wmsSubstituteGood.UpdatedUserName = SysHelper.GetUserName();
+ wmsSubstituteGood.CreatedTime = wmsSubstituteGood.UpdatedTime = SysHelper.GetNowTime();
+ await _wmsSubstituteGoodRep.InsertAsync(wmsSubstituteGood);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鏇夸唬鍝佺鐞�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("WmsSubstituteGood/delete")]
+ public async Task Delete(DeleteWmsSubstituteGoodInput input)
+ {
+ var wmsSubstituteGood = await _wmsSubstituteGoodRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsSubstituteGoodRep.DeleteAsync(wmsSubstituteGood);
+
+ }
+
+ /// <summary>
+ /// 鏇存柊鏇夸唬鍝佺鐞�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("WmsSubstituteGood/edit")]
+ public async Task Update(UpdateWmsSubstituteGoodInput input)
+ {
+ var isExist = await _wmsSubstituteGoodRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+ var wmsSubstituteGood = input.Adapt<WmsSubstituteGood>();
+ //楠岃瘉
+ await CheckExisit(wmsSubstituteGood,true);
+
+ wmsSubstituteGood.UpdatedUserId = SysHelper.GetUserId();
+ wmsSubstituteGood.UpdatedUserName = SysHelper.GetUserName();
+ wmsSubstituteGood.UpdatedTime = SysHelper.GetNowTime();
+ await _wmsSubstituteGoodRep.UpdateAsync(wmsSubstituteGood,ignoreNullValues:true);
+ }
+
+ #endregion
+
+ #region 瀵煎叆
+
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆鏇夸唬鍝佺鐞嗗姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("WmsSubstituteGood/importExcel")]
+ public async Task<int> ImportExcelAsync(IFormFile file)
+ {
+ int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+ int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+ DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+ var addList =await CommonImport(importDataTable, _DataStartLine);
+
+ lock (_lock)
+ {
+ _wmsSubstituteGoodRep.InsertAsync(addList);
+
+ }
+ await Task.CompletedTask;
+ return addList.Count;
+ }
+
+ /// <summary>
+ /// DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ /// </summary>
+ /// <param name="dataTable"></param>
+ /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ /// <returns></returns>
+ private async Task<List<WmsSubstituteGood>> CommonImport(DataTable dataTable, int dataStartLine)
+ {
+
+ var details = new List<WmsSubstituteGood>();
+ int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+ foreach (System.Data.DataRow row in dataTable.Rows)
+ {
+ index++;
+
+ //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+
+ var addItem = new WmsSubstituteGood()
+ {
+ CreatedTime = SysHelper.GetNowTime(),
+ CreatedUserId = SysHelper.GetUserId(),
+ CreatedUserName = SysHelper.GetUserName(),
+ UpdatedTime = SysHelper.GetNowTime(),
+ UpdatedUserId = SysHelper.GetUserId(),
+ UpdatedUserName = SysHelper.GetUserName()
+ };
+ #region 瀹氫箟鍙橀噺
+ var _SubstituteCode = "";//鏇夸唬缂栧彿
+ var _MaterialCode = "";//鐗╂枡缂栧彿
+ var _MaterialName = "";//鐗╂枡鍚嶇О
+ var _SubstituteMaterialCode = "";//鏇夸唬鍝佺墿鏂欑紪鍙�
+ var _SubstituteMaterialName = "";//鏇夸唬鍝佺墿鏂欏悕绉�
+ var _SubstituteIndex = "";//鏇夸唬娆″簭
+ var _IsDisabled = "";//鏄惁绂佺敤
+ var _Id = "";//Id涓婚敭
+ #endregion
+
+
+ #region 鍙栧��
+ _SubstituteCode = row["鏇夸唬缂栧彿"]?.ToString() ;
+ _MaterialCode = row["鐗╂枡缂栧彿"]?.ToString() ;
+ _MaterialName = row["鐗╂枡鍚嶇О"]?.ToString() ;
+ _SubstituteMaterialCode = row["鏇夸唬鍝佺墿鏂欑紪鍙�"]?.ToString() ;
+ _SubstituteMaterialName = row["鏇夸唬鍝佺墿鏂欏悕绉�"]?.ToString() ;
+ _SubstituteIndex = row["鏇夸唬娆″簭"]?.ToString() ;
+ _IsDisabled = row["鏄惁绂佺敤"]?.ToString() ;
+ _Id = row["Id涓婚敭"]?.ToString() ;
+ #endregion
+
+
+ #region 楠岃瘉
+
+ if (string.IsNullOrEmpty(_SubstituteCode))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏇夸唬缂栧彿]{_SubstituteCode}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_SubstituteCode))
+ {
+ addItem.SubstituteCode = (string)_SubstituteCode;
+ }
+
+ if (string.IsNullOrEmpty(_MaterialCode))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鐗╂枡缂栧彿]{_MaterialCode}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_MaterialCode))
+ {
+ addItem.MaterialCode = (string)_MaterialCode;
+ }
+
+ if (string.IsNullOrEmpty(_MaterialName))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鐗╂枡鍚嶇О]{_MaterialName}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_MaterialName))
+ {
+ addItem.MaterialName = (string)_MaterialName;
+ }
+
+ if (string.IsNullOrEmpty(_SubstituteMaterialCode))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏇夸唬鍝佺墿鏂欑紪鍙穄{_SubstituteMaterialCode}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_SubstituteMaterialCode))
+ {
+ addItem.SubstituteMaterialCode = (string)_SubstituteMaterialCode;
+ }
+
+ if (string.IsNullOrEmpty(_SubstituteMaterialName))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏇夸唬鍝佺墿鏂欏悕绉癩{_SubstituteMaterialName}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_SubstituteMaterialName))
+ {
+ addItem.SubstituteMaterialName = (string)_SubstituteMaterialName;
+ }
+
+ if (string.IsNullOrEmpty(_SubstituteIndex))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏇夸唬娆″簭]{_SubstituteIndex}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_SubstituteIndex))
+ {
+ if (!int.TryParse(_SubstituteIndex, out int outSubstituteIndex)&&!string.IsNullOrEmpty(_SubstituteIndex))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏇夸唬娆″簭]{_SubstituteIndex}鍊间笉姝g‘锛�");
+ }
+ if (outSubstituteIndex <= 0&&!string.IsNullOrEmpty(_SubstituteIndex))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏇夸唬娆″簭]{_SubstituteIndex}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.SubstituteIndex = outSubstituteIndex;
+ }
+
+ }
+
+ if (string.IsNullOrEmpty(_IsDisabled))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏄惁绂佺敤]{_IsDisabled}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_IsDisabled))
+ {
+ if(!_IsDisabled.Equals("鏄�") && !_IsDisabled.Equals("鍚�"))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏄惁绂佺敤]{_IsDisabled}鍊间笉姝g‘锛�");
+ }
+ else
+ {
+ bool outIsDisabled = _IsDisabled.Equals("鏄�") ? true : false;
+ addItem.IsDisabled = outIsDisabled;
+ }
+ }
+
+ if(!string.IsNullOrEmpty(_Id))
+ {
+ if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉姝g‘锛�");
+ }
+ if (outId <= 0&&!string.IsNullOrEmpty(_Id))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.Id = outId;
+ }
+
+ }
+ #endregion
+
+
+
+ details.Add(addItem);
+ }
+ //楠岄噸
+ await CheckExisitForImport(details);
+
+ return details;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇鏇夸唬鍝佺鐞嗙殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("WmsSubstituteGood/downloadExcelTemplate")]
+ public IActionResult DownloadExcelTemplate([FromQuery] string version)
+ {
+ string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\WmsSubstituteGood{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+ var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(鏇夸唬鍝佺鐞�).xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ #endregion
+
+ #region 绉佹湁鏂规硶
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="isEdit"></param>
+ /// <returns></returns>
+ private async Task CheckExisit( WmsSubstituteGood input,bool isEdit=false)
+ {
+
+
+
+ bool isExist = false;
+ if (!isEdit)//鏂板
+ {
+ //鏁版嵁鏄惁瀛樺湪閲嶅
+ isExist = await _wmsSubstituteGoodRep.AnyAsync(u =>
+ u.SubstituteCode.Equals(input.SubstituteCode)
+ ,false);
+ }
+ else//缂栬緫
+ {
+
+
+
+ //褰撳墠缂栬緫鏁版嵁浠ュ鏄惁瀛樺湪閲嶅
+ isExist = await _wmsSubstituteGoodRep.AnyAsync(u =>
+ u.Id != input.Id
+ &&u.SubstituteCode.Equals(input.SubstituteCode)
+ ,false);
+ }
+
+
+
+ if (isExist) throw Oops.Oh(ErrorCode.E0001);
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <returns></returns>
+ private async Task CheckExisitForImport(List<WmsSubstituteGood> inputs)
+ {
+ //鏍规嵁鑱斿悎涓婚敭楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+ if (inputs?.Count <= 0)
+ {
+ throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+ }
+ //鏁版嵁鏄惁閲嶅
+ var existExcelItem = inputs.GroupBy(g => new {
+ g.SubstituteCode
+ })
+ .Where(g => g.Count() > 1)
+ .Select(s => new {
+ s.Key.SubstituteCode
+ }).FirstOrDefault();
+ if (existExcelItem != null)
+ {
+ var wmsSubstituteGood = existExcelItem.Adapt<WmsSubstituteGood>();
+ var item= existExcelItem.Adapt<WmsSubstituteGood>();
+ throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑,鏇夸唬缂栧彿[{item.SubstituteCode}]宸插瓨鍦�");
+ }
+
+
+
+
+ //鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+ var existDBItem = await _wmsSubstituteGoodRep.DetachedEntities.FirstOrDefaultAsync(w=>
+ inputs.Select(s=>""
+ +s.SubstituteCode
+ )
+ .Contains(""
+ +w.SubstituteCode
+ ));
+ if (existDBItem != null)
+ {
+ var wmsSubstituteGood = existExcelItem.Adapt<WmsSubstituteGood>();
+ var item= existExcelItem.Adapt<WmsSubstituteGood>();
+ throw Oops.Oh($"绯荤粺涓�,鏇夸唬缂栧彿[{item.SubstituteCode}]宸插瓨鍦�");
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Dto/WmsWarehouseInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Dto/WmsWarehouseInput.cs
new file mode 100644
index 0000000..c0dd5fb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Dto/WmsWarehouseInput.cs
@@ -0,0 +1,271 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 浠撳簱琛ㄦ煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsWarehouseSearch : PageInputBase
+ {
+ /// <summary>
+ /// 浠撳簱缂栧彿
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍦板潃
+ /// </summary>
+ public virtual string Address { get; set; }
+
+ /// <summary>
+ /// 宸ュ巶缂栧彿
+ /// </summary>
+ public virtual string FactoryCode { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ public virtual decimal? Length { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ public virtual decimal? Width { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ public virtual decimal? Height { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曞厓
+ /// </summary>
+ public virtual string BaseUnit { get; set; }
+
+ /// <summary>
+ /// 瀹氫綅
+ /// </summary>
+ public virtual string Position { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public virtual bool? IsDisabled { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string Remarks { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual List<string> CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual List<string> UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 浠撳簱琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsWarehouseSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 浠撳簱缂栧彿
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍦板潃
+ /// </summary>
+ public virtual string Address { get; set; }
+
+ /// <summary>
+ /// 宸ュ巶缂栧彿
+ /// </summary>
+ public virtual string FactoryCode { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ public virtual decimal? Length { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ public virtual decimal? Width { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ public virtual decimal? Height { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曞厓
+ /// </summary>
+ public virtual string BaseUnit { get; set; }
+
+ /// <summary>
+ /// 瀹氫綅
+ /// </summary>
+ public virtual string Position { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public virtual bool? IsDisabled { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string Remarks { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual List<DateTimeOffset>? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual List<DateTimeOffset>? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 浠撳簱琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class WmsWarehouseInput
+ {
+ /// <summary>
+ /// 浠撳簱缂栧彿
+ /// </summary>
+ [Required(ErrorMessage = "浠撳簱缂栧彿涓嶈兘涓虹┖")]
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "浠撳簱鍚嶇О涓嶈兘涓虹┖")]
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍦板潃
+ /// </summary>
+ public virtual string Address { get; set; }
+
+ /// <summary>
+ /// 宸ュ巶缂栧彿
+ /// </summary>
+ public virtual string FactoryCode { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ public virtual decimal? Length { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ public virtual decimal? Width { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ public virtual decimal? Height { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曞厓
+ /// </summary>
+ public virtual string BaseUnit { get; set; }
+
+ /// <summary>
+ /// 瀹氫綅
+ /// </summary>
+ public virtual string Position { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ [Required(ErrorMessage = "鏄惁绂佺敤涓嶈兘涓虹┖")]
+ public virtual bool IsDisabled { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string Remarks { get; set; }
+
+ }
+
+ /// <summary>
+ /// 浠撳簱琛ㄦ柊澧炲弬鏁�
+ /// </summary>
+ public class AddWmsWarehouseInput : WmsWarehouseInput
+ {
+ }
+
+ /// <summary>
+ /// 浠撳簱琛ㄥ垹闄ゅ弬鏁�
+ /// </summary>
+ public class DeleteWmsWarehouseInput : BaseId
+ {
+ }
+
+ /// <summary>
+ /// 浠撳簱琛ㄦ洿鏂板弬鏁�
+ /// </summary>
+ public class UpdateWmsWarehouseInput : WmsWarehouseInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long? Id { get; set; }
+
+ }
+
+ /// <summary>
+ /// 浠撳簱琛ㄨ幏鍙栧崟涓弬鏁�
+ /// </summary>
+ public class QueryeWmsWarehouseInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Dto/WmsWarehouseOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Dto/WmsWarehouseOutput.cs
new file mode 100644
index 0000000..632cf29
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Dto/WmsWarehouseOutput.cs
@@ -0,0 +1,92 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 浠撳簱琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsWarehouseOutput
+ {
+ /// <summary>
+ /// 浠撳簱缂栧彿
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍦板潃
+ /// </summary>
+ public string Address { get; set; }
+
+ /// <summary>
+ /// 宸ュ巶缂栧彿
+ /// </summary>
+ public string FactoryCode { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ public decimal? Length { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ public decimal? Width { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ public decimal? Height { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曞厓
+ /// </summary>
+ public string BaseUnit { get; set; }
+
+ /// <summary>
+ /// 瀹氫綅
+ /// </summary>
+ public string Position { get; set; }
+
+ /// <summary>
+ /// 鏄惁绂佺敤
+ /// </summary>
+ public bool IsDisabled { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remarks { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long? Id { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public DateTimeOffset? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public string UpdatedUserName { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/IWmsWarehouseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/IWmsWarehouseService.cs
new file mode 100644
index 0000000..f284616
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/IWmsWarehouseService.cs
@@ -0,0 +1,22 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsWarehouseService
+ {
+ Task<WmsWarehouseOutput> Get([FromQuery] QueryeWmsWarehouseInput input);
+ Task<List<WmsWarehouseOutput>> List([FromQuery] WmsWarehouseInput input);
+ Task<PageResult<WmsWarehouseOutput>> Page([FromQuery] WmsWarehouseSearch input);
+ Task<List<WmsWarehouseOutput>> ListNonPageAsync([FromQuery] WmsWarehouseSearchNonPage input);
+
+ Task Add(AddWmsWarehouseInput input);
+ Task Update(UpdateWmsWarehouseInput input);
+ Task Delete(DeleteWmsWarehouseInput input);
+ Task<int> ImportExcelAsync(IFormFile file);
+ IActionResult DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Map/WmsWarehouseMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Map/WmsWarehouseMapper.cs
new file mode 100644
index 0000000..b3fc07a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Map/WmsWarehouseMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class WmsWarehouseMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsWarehouseInput, WmsWarehouse>()
+ ;
+ config.ForType<UpdateWmsWarehouseInput, WmsWarehouse>()
+ ;
+ config.ForType<WmsWarehouse, WmsWarehouseOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/WmsWarehouseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/WmsWarehouseService.cs
new file mode 100644
index 0000000..be2bb77
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/WmsWarehouseService.cs
@@ -0,0 +1,517 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 浠撳簱琛ㄦ湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("WmsBase", Name = "WmsWarehouse", Order = 100)]
+ [Route("api")]
+ public class WmsWarehouseService : IWmsWarehouseService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsWarehouse,MasterDbContextLocator> _wmsWarehouseRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ public WmsWarehouseService(
+ IRepository<WmsWarehouse,MasterDbContextLocator> wmsWarehouseRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _wmsWarehouseRep = wmsWarehouseRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ浠撳簱琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("WmsWarehouse/page")]
+ public async Task<PageResult<WmsWarehouseOutput>> Page([FromQuery] WmsWarehouseSearch input)
+ {
+ var wmsWarehouses = await _wmsWarehouseRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.Code), u => u.Code == input.Code)
+ .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name)
+ .Where(!string.IsNullOrEmpty(input.Address), u => u.Address == input.Address)
+ .Where(!string.IsNullOrEmpty(input.FactoryCode), u => u.FactoryCode == input.FactoryCode)
+ .Where(input.Length != null, u => u.Length == input.Length)
+ .Where(input.Width != null, u => u.Width == input.Width)
+ .Where(input.Height != null, u => u.Height == input.Height)
+ .Where(!string.IsNullOrEmpty(input.BaseUnit), u => u.BaseUnit == input.BaseUnit)
+ .Where(!string.IsNullOrEmpty(input.Position), u => u.Position == input.Position)
+ .Where(input.IsDisabled != null, u => u.IsDisabled == input.IsDisabled)
+ .Where(!string.IsNullOrEmpty(input.Remarks), u => u.Remarks == input.Remarks)
+ .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+ .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+ .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName)
+ .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsWarehouseSearch>(input))
+ .ProjectToType<WmsWarehouseOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsWarehouses;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇粨搴撹〃鍒楄〃
+ /// </summary>
+ /// <param name="input">浠撳簱琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>(浠撳簱琛�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("WmsWarehouse/listNonPage")]
+ public async Task<List<WmsWarehouseOutput>> ListNonPageAsync([FromQuery] WmsWarehouseSearchNonPage input)
+ {
+ var pCode = input.Code?.Trim() ?? "";
+ var pName = input.Name?.Trim() ?? "";
+ var pAddress = input.Address?.Trim() ?? "";
+ var pFactoryCode = input.FactoryCode?.Trim() ?? "";
+ var pLength = input.Length;
+ var pWidth = input.Width;
+ var pHeight = input.Height;
+ var pBaseUnit = input.BaseUnit?.Trim() ?? "";
+ var pPosition = input.Position?.Trim() ?? "";
+ var pIsDisabled = input.IsDisabled;
+ var pRemarks = input.Remarks?.Trim() ?? "";
+ var pCreatedTime = input.CreatedTime;
+ var pUpdatedTime = input.UpdatedTime;
+ var pCreatedUserName = input.CreatedUserName?.Trim() ?? "";
+ var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? "";
+ var wmsWarehouses = await _wmsWarehouseRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pCode), u => u.Code == pCode)
+ .Where(!string.IsNullOrEmpty(pName), u => u.Name == pName)
+ .Where(!string.IsNullOrEmpty(pAddress), u => u.Address == pAddress)
+ .Where(!string.IsNullOrEmpty(pFactoryCode), u => u.FactoryCode == pFactoryCode)
+ .Where(pLength != null, u => u.Length == pLength)
+ .Where(pWidth != null, u => u.Width == pWidth)
+ .Where(pHeight != null, u => u.Height == pHeight)
+ .Where(!string.IsNullOrEmpty(pBaseUnit), u => u.BaseUnit == pBaseUnit)
+ .Where(!string.IsNullOrEmpty(pPosition), u => u.Position == pPosition)
+ .Where(pIsDisabled != null, u => u.IsDisabled == pIsDisabled)
+ .Where(!string.IsNullOrEmpty(pRemarks), u => u.Remarks == pRemarks)
+ .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+ .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+ .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName)
+ .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsWarehouseOutput>()
+ .ToListAsync();
+ return wmsWarehouses;
+ }
+
+ /// <summary>
+ /// 鑾峰彇浠撳簱琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("WmsWarehouse/detail")]
+ public async Task<WmsWarehouseOutput> Get([FromQuery] QueryeWmsWarehouseInput input)
+ {
+ return (await _wmsWarehouseRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsWarehouseOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇浠撳簱琛ㄥ垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("WmsWarehouse/list")]
+ public async Task<List<WmsWarehouseOutput>> List([FromQuery] WmsWarehouseInput input)
+ {
+ return await _wmsWarehouseRep.DetachedEntities.ProjectToType<WmsWarehouseOutput>().ToListAsync();
+ }
+
+ #region 澧炪�佸垹銆佹敼
+
+ /// <summary>
+ /// 澧炲姞浠撳簱琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("WmsWarehouse/add")]
+ public async Task Add(AddWmsWarehouseInput input)
+ {
+ var wmsWarehouse = input.Adapt<WmsWarehouse>();
+ //楠岃瘉
+ await CheckExisit(wmsWarehouse);
+
+ wmsWarehouse.CreatedUserId = wmsWarehouse.UpdatedUserId = SysHelper.GetUserId();
+ wmsWarehouse.CreatedUserName = wmsWarehouse.UpdatedUserName = SysHelper.GetUserName();
+ wmsWarehouse.CreatedTime = wmsWarehouse.UpdatedTime = SysHelper.GetNowTime();
+ await _wmsWarehouseRep.InsertAsync(wmsWarehouse);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎浠撳簱琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("WmsWarehouse/delete")]
+ public async Task Delete(DeleteWmsWarehouseInput input)
+ {
+ var wmsWarehouse = await _wmsWarehouseRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsWarehouseRep.DeleteAsync(wmsWarehouse);
+
+ }
+
+ /// <summary>
+ /// 鏇存柊浠撳簱琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("WmsWarehouse/edit")]
+ public async Task Update(UpdateWmsWarehouseInput input)
+ {
+ var isExist = await _wmsWarehouseRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+ var wmsWarehouse = input.Adapt<WmsWarehouse>();
+ //楠岃瘉
+ await CheckExisit(wmsWarehouse,true);
+
+ wmsWarehouse.UpdatedUserId = SysHelper.GetUserId();
+ wmsWarehouse.UpdatedUserName = SysHelper.GetUserName();
+ wmsWarehouse.UpdatedTime = SysHelper.GetNowTime();
+ await _wmsWarehouseRep.UpdateAsync(wmsWarehouse,ignoreNullValues:true);
+ }
+
+ #endregion
+
+ #region 瀵煎叆
+
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆浠撳簱琛ㄥ姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("WmsWarehouse/importExcel")]
+ public async Task<int> ImportExcelAsync(IFormFile file)
+ {
+ int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+ int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+ DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+ var addList =await CommonImport(importDataTable, _DataStartLine);
+
+ lock (_lock)
+ {
+ _wmsWarehouseRep.InsertAsync(addList);
+
+ }
+ await Task.CompletedTask;
+ return addList.Count;
+ }
+
+ /// <summary>
+ /// DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ /// </summary>
+ /// <param name="dataTable"></param>
+ /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ /// <returns></returns>
+ private async Task<List<WmsWarehouse>> CommonImport(DataTable dataTable, int dataStartLine)
+ {
+
+ var details = new List<WmsWarehouse>();
+ int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+ foreach (System.Data.DataRow row in dataTable.Rows)
+ {
+ index++;
+
+ //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+
+ var addItem = new WmsWarehouse()
+ {
+ CreatedTime = SysHelper.GetNowTime(),
+ CreatedUserId = SysHelper.GetUserId(),
+ CreatedUserName = SysHelper.GetUserName(),
+ UpdatedTime = SysHelper.GetNowTime(),
+ UpdatedUserId = SysHelper.GetUserId(),
+ UpdatedUserName = SysHelper.GetUserName()
+ };
+ #region 瀹氫箟鍙橀噺
+ var _Code = "";//浠撳簱缂栧彿
+ var _Name = "";//浠撳簱鍚嶇О
+ var _Address = "";//浠撳簱鍦板潃
+ var _FactoryCode = "";//宸ュ巶缂栧彿
+ var _Length = "";//闀�
+ var _Width = "";//瀹�
+ var _Height = "";//楂�
+ var _BaseUnit = "";//鍩烘湰鍗曞厓
+ var _Position = "";//瀹氫綅
+ var _IsDisabled = "";//鏄惁绂佺敤
+ var _Remarks = "";//澶囨敞
+ var _Id = "";//Id涓婚敭
+ #endregion
+
+
+ #region 鍙栧��
+ _Code = row["浠撳簱缂栧彿"]?.ToString() ;
+ _Name = row["浠撳簱鍚嶇О"]?.ToString() ;
+ _Address = row["浠撳簱鍦板潃"]?.ToString() ;
+ _FactoryCode = row["宸ュ巶缂栧彿"]?.ToString() ;
+ _Length = row["闀�"]?.ToString() ;
+ _Width = row["瀹�"]?.ToString() ;
+ _Height = row["楂�"]?.ToString() ;
+ _BaseUnit = row["鍩烘湰鍗曞厓"]?.ToString() ;
+ _Position = row["瀹氫綅"]?.ToString() ;
+ _IsDisabled = row["鏄惁绂佺敤"]?.ToString() ;
+ _Remarks = row["澶囨敞"]?.ToString() ;
+ _Id = row["Id涓婚敭"]?.ToString() ;
+ #endregion
+
+
+ #region 楠岃瘉
+
+ if (string.IsNullOrEmpty(_Code))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾浠撳簱缂栧彿]{_Code}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_Code))
+ {
+ addItem.Code = (string)_Code;
+ }
+
+ if (string.IsNullOrEmpty(_Name))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾浠撳簱鍚嶇О]{_Name}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_Name))
+ {
+ addItem.Name = (string)_Name;
+ }
+ if(!string.IsNullOrEmpty(_Address))
+ {
+ addItem.Address = (string)_Address;
+ }
+ if(!string.IsNullOrEmpty(_FactoryCode))
+ {
+ addItem.FactoryCode = (string)_FactoryCode;
+ }
+ if(!string.IsNullOrEmpty(_Length))
+ {
+ if (!decimal.TryParse(_Length, out decimal outLength)&&!string.IsNullOrEmpty(_Length))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾闀縘{_Length}鍊间笉姝g‘锛�");
+ }
+ if (outLength <= 0&&!string.IsNullOrEmpty(_Length))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾闀縘{_Length}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.Length = outLength;
+ }
+
+ }
+ if(!string.IsNullOrEmpty(_Width))
+ {
+ if (!decimal.TryParse(_Width, out decimal outWidth)&&!string.IsNullOrEmpty(_Width))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾瀹絔{_Width}鍊间笉姝g‘锛�");
+ }
+ if (outWidth <= 0&&!string.IsNullOrEmpty(_Width))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾瀹絔{_Width}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.Width = outWidth;
+ }
+
+ }
+ if(!string.IsNullOrEmpty(_Height))
+ {
+ if (!decimal.TryParse(_Height, out decimal outHeight)&&!string.IsNullOrEmpty(_Height))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾楂榏{_Height}鍊间笉姝g‘锛�");
+ }
+ if (outHeight <= 0&&!string.IsNullOrEmpty(_Height))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾楂榏{_Height}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.Height = outHeight;
+ }
+
+ }
+ if(!string.IsNullOrEmpty(_BaseUnit))
+ {
+ addItem.BaseUnit = (string)_BaseUnit;
+ }
+ if(!string.IsNullOrEmpty(_Position))
+ {
+ addItem.Position = (string)_Position;
+ }
+
+ if (string.IsNullOrEmpty(_IsDisabled))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏄惁绂佺敤]{_IsDisabled}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_IsDisabled))
+ {
+ if(!_IsDisabled.Equals("鏄�") && !_IsDisabled.Equals("鍚�"))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏄惁绂佺敤]{_IsDisabled}鍊间笉姝g‘锛�");
+ }
+ else
+ {
+ bool outIsDisabled = _IsDisabled.Equals("鏄�") ? true : false;
+ addItem.IsDisabled = outIsDisabled;
+ }
+ }
+
+ if(!string.IsNullOrEmpty(_Remarks))
+ {
+ addItem.Remarks = (string)_Remarks;
+ }
+ if(!string.IsNullOrEmpty(_Id))
+ {
+ if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉姝g‘锛�");
+ }
+ if (outId <= 0&&!string.IsNullOrEmpty(_Id))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.Id = outId;
+ }
+
+ }
+ #endregion
+
+
+
+ details.Add(addItem);
+ }
+ //楠岄噸
+ await CheckExisitForImport(details);
+
+ return details;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇浠撳簱琛ㄧ殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("WmsWarehouse/downloadExcelTemplate")]
+ public IActionResult DownloadExcelTemplate([FromQuery] string version)
+ {
+ string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\WmsWarehouse{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+ var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(浠撳簱琛�).xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ #endregion
+
+ #region 绉佹湁鏂规硶
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="isEdit"></param>
+ /// <returns></returns>
+ private async Task CheckExisit( WmsWarehouse input,bool isEdit=false)
+ {
+
+
+
+ bool isExist = false;
+ if (!isEdit)//鏂板
+ {
+ //鏁版嵁鏄惁瀛樺湪閲嶅
+ isExist = await _wmsWarehouseRep.AnyAsync(u =>
+ u.Code.Equals(input.Code)
+ ,false);
+ }
+ else//缂栬緫
+ {
+
+
+
+ //褰撳墠缂栬緫鏁版嵁浠ュ鏄惁瀛樺湪閲嶅
+ isExist = await _wmsWarehouseRep.AnyAsync(u =>
+ u.Id != input.Id
+ &&u.Code.Equals(input.Code)
+ ,false);
+ }
+
+
+
+ if (isExist) throw Oops.Oh(ErrorCode.E0001);
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <returns></returns>
+ private async Task CheckExisitForImport(List<WmsWarehouse> inputs)
+ {
+ //鏍规嵁鑱斿悎涓婚敭楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+ if (inputs?.Count <= 0)
+ {
+ throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+ }
+ //鏁版嵁鏄惁閲嶅
+ var existExcelItem = inputs.GroupBy(g => new {
+ g.Code
+ })
+ .Where(g => g.Count() > 1)
+ .Select(s => new {
+ s.Key.Code
+ }).FirstOrDefault();
+ if (existExcelItem != null)
+ {
+ var wmsWarehouse = existExcelItem.Adapt<WmsWarehouse>();
+ var item= existExcelItem.Adapt<WmsWarehouse>();
+ throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑,浠撳簱缂栧彿[{item.Code}]宸插瓨鍦�");
+ }
+
+
+
+
+ //鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+ var existDBItem = await _wmsWarehouseRep.DetachedEntities.FirstOrDefaultAsync(w=>
+ inputs.Select(s=>""
+ +s.Code
+ )
+ .Contains(""
+ +w.Code
+ ));
+ if (existDBItem != null)
+ {
+ var wmsWarehouse = existExcelItem.Adapt<WmsWarehouse>();
+ var item= existExcelItem.Adapt<WmsWarehouse>();
+ throw Oops.Oh($"绯荤粺涓�,浠撳簱缂栧彿[{item.Code}]宸插瓨鍦�");
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsContainerPackagingImport.xlsx b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsContainerPackagingImport.xlsx
new file mode 100644
index 0000000..37c540e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsContainerPackagingImport.xlsx
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsSubstituteGoodImport.xlsx b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsSubstituteGoodImport.xlsx
new file mode 100644
index 0000000..6c73b53
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsSubstituteGoodImport.xlsx
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsWarehouseImport.xlsx b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsWarehouseImport.xlsx
new file mode 100644
index 0000000..3b27946
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsWarehouseImport.xlsx
Binary files differ
--
Gitblit v1.9.3