From 96294e88135f07c1c3794c9dc2224bd7ca3ab986 Mon Sep 17 00:00:00 2001 From: liuying <1427574514@qq.com> Date: 周二, 23 4月 2024 21:01:38 +0800 Subject: [PATCH] 物料信息 --- iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/editForm.vue | 119 + iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/editForm.vue | 70 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/editForm.vue | 63 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/excelForm.vue | 181 + iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/editForm.vue | 123 + iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/excelForm.vue | 181 + iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs | 86 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/addFormContainerPackaging.vue | 246 ++ iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/index.vue | 523 +++++ iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/detail.vue | 604 ++++++ iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/index.vue | 40 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/excelForm.vue | 181 + iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/addForm.vue | 13 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/index.vue | 512 +++++ iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/addForm.vue | 94 + iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/editForm.vue | 12 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/addForm.vue | 25 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/addForm.vue | 12 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Dto/WmsContainerPackagingInput.cs | 12 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/details.vue | 107 + iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/addForm.vue | 13 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/addFormBaseCustomer.vue | 205 ++ iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue | 2 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/index.vue | 717 +++++++ /dev/null | 349 --- iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabForm.vue | 12 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/index.vue | 547 +++++ iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/addFormWmsSubstituteGood.vue | 285 +++ iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsContainerPackagingImport.xlsx | 0 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Dto/WmsContainerPackagingOutput.cs | 6 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/excelForm.vue | 181 + 31 files changed, 5,081 insertions(+), 440 deletions(-) diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue b/iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue index 7a79a9e..f037f76 100644 --- a/iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue +++ b/iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue @@ -103,7 +103,7 @@ this.editor.create() // 鐢熸垚缂栬緫鍣� this.editor.txt.text(this.value) // 鐢熸垚缂栬緫鍣� - this.$emit('oninit', this.editor) + this.$emit('ok', this.editor) } }, beforeCreate () { diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/addForm.vue index d9fa354..569f83d 100644 --- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/addForm.vue +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/addForm.vue @@ -9,22 +9,22 @@ <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-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨婭D" v-decorator="['containerTypeId', {rules: [{required: true, message: '璇疯緭鍏ュ鍣ㄧ被鍨婭D锛�'}]}]" /> </a-form-item> <a-form-item label="瀹瑰櫒绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉�" v-decorator="['containerTypeName']" /> + <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉�" v-decorator="['containerTypeName', {rules: [{required: true, message: '璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉帮紒'}]}]" /> </a-form-item> <a-form-item label="鐗╂枡绫诲瀷ID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨婭D" v-decorator="['materialTypeId']" /> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨婭D" v-decorator="['materialTypeId', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑被鍨婭D锛�'}]}]" /> </a-form-item> <a-form-item label="鐗╂枡绫诲瀷缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙�" v-decorator="['materialTypeCode']" /> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙�" v-decorator="['materialTypeCode', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙凤紒'}]}]" /> </a-form-item> <a-form-item label="鐗╂枡绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉�" v-decorator="['materialTypeName']" /> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉�" v-decorator="['materialTypeName', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉帮紒'}]}]" /> </a-form-item> <a-form-item label="鐗╂枡瀹瑰櫒瀹归噺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欏鍣ㄥ閲�" v-decorator="['boxQty']" /> + <a-input placeholder="璇疯緭鍏ョ墿鏂欏鍣ㄥ閲�" v-decorator="['boxQty', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欏鍣ㄥ閲忥紒'}]}]" /> </a-form-item> </a-form> </a-spin> diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/editForm.vue index eb6a7d4..175ad58 100644 --- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/editForm.vue +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/editForm.vue @@ -9,22 +9,22 @@ <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-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨婭D" v-decorator="['containerTypeId', {rules: [{required: true, message: '璇疯緭鍏ュ鍣ㄧ被鍨婭D锛�'}]}]" /> </a-form-item> <a-form-item label="瀹瑰櫒绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉�" v-decorator="['containerTypeName']" /> + <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉�" v-decorator="['containerTypeName', {rules: [{required: true, message: '璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉帮紒'}]}]" /> </a-form-item> <a-form-item label="鐗╂枡绫诲瀷ID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨婭D" v-decorator="['materialTypeId']" /> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨婭D" v-decorator="['materialTypeId', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑被鍨婭D锛�'}]}]" /> </a-form-item> <a-form-item label="鐗╂枡绫诲瀷缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙�" v-decorator="['materialTypeCode']" /> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙�" v-decorator="['materialTypeCode', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙凤紒'}]}]" /> </a-form-item> <a-form-item label="鐗╂枡绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉�" v-decorator="['materialTypeName']" /> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉�" v-decorator="['materialTypeName', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉帮紒'}]}]" /> </a-form-item> <a-form-item label="鐗╂枡瀹瑰櫒瀹归噺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欏鍣ㄥ閲�" v-decorator="['boxQty']" /> + <a-input placeholder="璇疯緭鍏ョ墿鏂欏鍣ㄥ閲�" v-decorator="['boxQty', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欏鍣ㄥ閲忥紒'}]}]" /> </a-form-item> <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item> </a-form> diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/index.vue index 4a7714f..3bc1547 100644 --- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/index.vue +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/index.vue @@ -158,14 +158,14 @@ customHeaderCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '130px'//鏈�灏忓垪瀹借缃� } } }, customCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '130px'//鏈�灏忓垪瀹借缃� } } }, @@ -178,14 +178,14 @@ customHeaderCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '130px'//鏈�灏忓垪瀹借缃� } } }, customCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '130px'//鏈�灏忓垪瀹借缃� } } }, @@ -198,14 +198,14 @@ customHeaderCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '130px'//鏈�灏忓垪瀹借缃� } } }, customCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '130px'//鏈�灏忓垪瀹借缃� } } }, @@ -218,14 +218,14 @@ customHeaderCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '130px'//鏈�灏忓垪瀹借缃� } } }, customCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '130px'//鏈�灏忓垪瀹借缃� } } }, @@ -238,14 +238,14 @@ customHeaderCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '130px'//鏈�灏忓垪瀹借缃� } } }, customCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '130px'//鏈�灏忓垪瀹借缃� } } }, @@ -258,14 +258,14 @@ customHeaderCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '130px'//鏈�灏忓垪瀹借缃� } } }, customCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '130px'//鏈�灏忓垪瀹借缃� } } }, @@ -278,14 +278,14 @@ customHeaderCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '120px'//鏈�灏忓垪瀹借缃� } } }, customCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '120px'//鏈�灏忓垪瀹借缃� } } }, @@ -298,14 +298,14 @@ customHeaderCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '120px'//鏈�灏忓垪瀹借缃� } } }, customCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '120px'//鏈�灏忓垪瀹借缃� } } }, @@ -318,14 +318,14 @@ customHeaderCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '120px'//鏈�灏忓垪瀹借缃� } } }, customCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '120px'//鏈�灏忓垪瀹借缃� } } }, @@ -338,14 +338,14 @@ customHeaderCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '120px'//鏈�灏忓垪瀹借缃� } } }, customCell: () => { return { style: { - 'min-width': ''//鏈�灏忓垪瀹借缃� + 'min-width': '120px'//鏈�灏忓垪瀹借缃� } } }, 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 a916adf..0abf95b 100644 --- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabForm.vue +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabForm.vue @@ -14,7 +14,7 @@ <add-form ref="addForm" @ok="handleOk" /> </a-tab-pane> <a-tab-pane key="2" tab="鎺у埗灞炴��" force-render> - Content of Tab Pane 2 + <add-control-rule ref="WmsControlRule" @ok="handleOk" /> </a-tab-pane> <a-tab-pane key="3" tab="鎵规灞炴��"> 闇�姹傚緟瀹� @@ -38,16 +38,18 @@ <script> 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' +import addFormBaseCustomer from './tabItem/addFormBaseCustomer/addFormBaseCustomer.vue' +import addFormContainerPackaging from './tabItem/WmsContainerPackaging/addFormContainerPackaging.vue' +import addFormSub from './tabItem/WmsSubstituteGood/addFormWmsSubstituteGood.vue' +import addControlRule from './tabItem/WmsControlRule/index.vue' export default { components: { addForm, addFormBaseCustomer, addFormContainerPackaging, - addFormSub + addFormSub, + addControlRule }, data() { return { diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormContainerPackaging.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/addForm.vue similarity index 75% rename from iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormContainerPackaging.vue rename to iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/addForm.vue index 0fca95c..569f83d 100644 --- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormContainerPackaging.vue +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/addForm.vue @@ -1,25 +1,34 @@ 锘�<template> - <!-- 鍖呰鍏崇郴鍩虹琛� --> - <a-form :form="form"> + <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-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨婭D" v-decorator="['containerTypeId', {rules: [{required: true, message: '璇疯緭鍏ュ鍣ㄧ被鍨婭D锛�'}]}]" /> </a-form-item> <a-form-item label="瀹瑰櫒绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉�" v-decorator="['containerTypeName']" /> + <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉�" v-decorator="['containerTypeName', {rules: [{required: true, message: '璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉帮紒'}]}]" /> </a-form-item> <a-form-item label="鐗╂枡绫诲瀷ID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨婭D" v-decorator="['materialTypeId']" /> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨婭D" v-decorator="['materialTypeId', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑被鍨婭D锛�'}]}]" /> </a-form-item> <a-form-item label="鐗╂枡绫诲瀷缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙�" v-decorator="['materialTypeCode']" /> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙�" v-decorator="['materialTypeCode', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙凤紒'}]}]" /> </a-form-item> <a-form-item label="鐗╂枡绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉�" v-decorator="['materialTypeName']" /> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉�" v-decorator="['materialTypeName', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉帮紒'}]}]" /> </a-form-item> <a-form-item label="鐗╂枡瀹瑰櫒瀹归噺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欏鍣ㄥ閲�" v-decorator="['boxQty']" /> + <a-input placeholder="璇疯緭鍏ョ墿鏂欏鍣ㄥ閲�" v-decorator="['boxQty', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欏鍣ㄥ閲忥紒'}]}]" /> </a-form-item> </a-form> + </a-spin> + </a-modal> </template> <script> diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/addFormContainerPackaging.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/addFormContainerPackaging.vue new file mode 100644 index 0000000..74d7399 --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/addFormContainerPackaging.vue @@ -0,0 +1,246 @@ +锘�<template> + <!-- 鍖呰鍏崇郴 --> + <div style="background-color: white"> + <!-- <a-spin :spinning="loading"> --> + <div class="wms-task-management-detail-div"> + <div class="drawer-content"> + <!-- <span style="font-weight:bold;cursor:default;"> + <a style="cursor:default;">{{ row.no }}</a>鍗曟嵁璇︽儏 + </span> --> + <div style="margin-top: 10px;"> + <a-table :columns="columns" :data-source="list" row-key="id" :pagination="false" :scroll="{ x: true }"> + <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template> + <span slot="containerStatusscopedSlots" slot-scope="text"> + <a-tag :color="text == '1' ? '#daa520' : text == '2' ? '#cd5c5c' : text == '3' ? '#add8e6' : '#696969'">{{ + 'orderdetails_statusenum' | dictType(text) + }}</a-tag> + </span> + + <span slot="action" slot-scope="text, record"> + <a-popconfirm v-if="hasPerm('BaseCustomer:delete')" placement="topRight" title="纭鍒犻櫎锛�" + @confirm="() => itemDelete(record, index)"> + <a>鍒犻櫎</a> + </a-popconfirm> + </span> + </a-table> + </div> + </div> + + <p @click="visible = true">鏂板琛�</p> + + <a-modal title="鍖呰鍏崇郴" :width="900" :visible="visible" :confirmLoading="confirmLoading" @ok="handleSubmit" + @cancel="handleCancel"> + <show-list ref="showList" @ok="handleOk" /> + <!-- <a-spin :spinning="confirmLoading"></a-spin> --> + </a-modal> + </div> + </div> +</template> + +<script> +import { WmsOrderRukuDetail } from '@/api/modular/main/WmsOrderManage' +import showList from './index.vue' + +export default { + name: 'wmsOrderRukuManagementDetailDrawer', + emits: ['update:visible'], + props: { + visible: { + type: Boolean, + default: false + }, + row: { + type: Object, + default: function () { + return {} + } + } + }, + components: { + showList + }, + data() { + return { + loading: false, + containerStatusData: [], + list: [], + columns: [ + { + dataIndex: 'index', + title: '搴忓彿', + fixed: 'left', + width: '60', + scopedSlots: { customRender: 'index' }, + align: 'center' + }, + { + title: '瀹瑰櫒绫诲瀷鍚嶇О', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'containerTypeName' + }, + { + title: '鐗╂枡绫诲瀷缂栧彿', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'materialTypeCode' + }, + { + title: '鐗╂枡绫诲瀷鍚嶇О', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'materialTypeName' + }, + { + title: '鐗╂枡瀹瑰櫒瀹归噺', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'boxQty' + }, + ], + // 鍒嗛〉 + ipagination: { + current: 1, + pageSize: 10, + pageSizeOptions: ['10', '20', '30', '40'], + showTotal: (total, range) => { + return range[0] + '-' + range[1] + '鍏�' + total + '鏉�' + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0, + size: 'small' + } + } + }, + + created() { + const containerStatusOption = this.$options + this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum') + + this.columns.push({ + title: '鎿嶄綔', + width: '150px', + dataIndex: 'action', + scopedSlots: { customRender: 'action' } + }) + }, + methods: { + onClose() { + this.close() + }, + close() { + this.$emit('update:visible', false) + }, + afterVisibleChange(visible) { + if (visible) { + this.initShow() + } else { + this.afterClsoe() + } + }, + initShow() { + this.loading = true + this.getList(() => { + this.loading = false + }) + }, + getList(row) { + let params = { id: row.id } + WmsOrderRukuDetail(params) + .then(d => { + this.list = d.data.rows || [] + this.$emit('update:visible', true) + // callback && callback(true) + }) + .catch(() => { + this.$emit('update:visible', false) + this.list = [] + // callback && callback(false) + }) + }, + afterClsoe() { + this.list = [] + }, + handleOk(param) { + this.list = param + }, + handleSubmit() { + this.visible = false + }, + handleCancel() { + this.visible = false + }, + itemDelete(record, index) { + this.list.splice(index, 1) + } + } +} +</script> + +<style lang="less" scoped> +.wms-task-management-detail-div { + height: 100%; + overflow: auto; + + .drawer-content { + padding: 16px; + } +} +</style> diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/editForm.vue new file mode 100644 index 0000000..175ad58 --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/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', {rules: [{required: true, message: '璇疯緭鍏ュ鍣ㄧ被鍨婭D锛�'}]}]" /> + </a-form-item> + <a-form-item label="瀹瑰櫒绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> + <a-input placeholder="璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉�" v-decorator="['containerTypeName', {rules: [{required: true, message: '璇疯緭鍏ュ鍣ㄧ被鍨嬪悕绉帮紒'}]}]" /> + </a-form-item> + <a-form-item label="鐗╂枡绫诲瀷ID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨婭D" v-decorator="['materialTypeId', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑被鍨婭D锛�'}]}]" /> + </a-form-item> + <a-form-item label="鐗╂枡绫诲瀷缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙�" v-decorator="['materialTypeCode', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑被鍨嬬紪鍙凤紒'}]}]" /> + </a-form-item> + <a-form-item label="鐗╂枡绫诲瀷鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> + <a-input placeholder="璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉�" v-decorator="['materialTypeName', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欑被鍨嬪悕绉帮紒'}]}]" /> + </a-form-item> + <a-form-item label="鐗╂枡瀹瑰櫒瀹归噺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> + <a-input placeholder="璇疯緭鍏ョ墿鏂欏鍣ㄥ閲�" v-decorator="['boxQty', {rules: [{required: true, message: '璇疯緭鍏ョ墿鏂欏鍣ㄥ閲忥紒'}]}]" /> + </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/WmsMaterial/tabItem/WmsContainerPackaging/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/excelForm.vue new file mode 100644 index 0000000..23a0847 --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/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/WmsMaterial/tabItem/WmsContainerPackaging/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/index.vue new file mode 100644 index 0000000..2ac53b4 --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsContainerPackaging/index.vue @@ -0,0 +1,523 @@ +锘�<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': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'containerTypeId' + }, + { + title: '瀹瑰櫒绫诲瀷鍚嶇О', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'containerTypeName' + }, + { + title: '鐗╂枡绫诲瀷ID', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'materialTypeId' + }, + { + title: '鐗╂枡绫诲瀷缂栧彿', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'materialTypeCode' + }, + { + title: '鐗╂枡绫诲瀷鍚嶇О', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'materialTypeName' + }, + { + title: '鐗╂枡瀹瑰櫒瀹归噺', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '130px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'boxQty' + }, + { + 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 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 + this.$emit('ok', 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/tabItem/WmsControlRule/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/addForm.vue new file mode 100644 index 0000000..3d0e4ed --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/addForm.vue @@ -0,0 +1,94 @@ +锘�<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="['ruleCode', {rules: [{required: true, message: '璇疯緭鍏ヨ鍒欑紪鍙凤紒'}]}]" /> + </a-form-item> + <a-form-item label="瑙勫垯鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> + <a-input placeholder="璇疯緭鍏ヨ鍒欏悕绉�" v-decorator="['ruleName', {rules: [{required: true, message: '璇疯緭鍏ヨ鍒欏悕绉帮紒'}]}]" /> + </a-form-item> + <a-form-item label="瑙勫垯鎻忚堪" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> + <a-input placeholder="璇疯緭鍏ヨ鍒欐弿杩�" v-decorator="['ruleDesc']" /> + </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 { + WmsControlRuleAdd + } from '@/api/modular/main/WmsBase/WmsControlRuleManage' + 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]) + } + } + WmsControlRuleAdd(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/WmsControlRule/detail.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/detail.vue new file mode 100644 index 0000000..98e014f --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/detail.vue @@ -0,0 +1,604 @@ +锘�<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('WmsControlRuleDetail:page')"> + <a-form layout="inline"> + <a-row :gutter="48"> + <a-col :md="8" :sm="24"> + <a-form-item label="鎺у埗灞炴�ц鍒橧D"> + <a-input v-model="queryParam.controlRuleId" allow-clear placeholder="璇疯緭鍏ユ帶鍒跺睘鎬ц鍒橧D"/> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="鏈�楂樺簱瀛�"> + <a-input v-model="queryParam.maxImumqty" 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.minImumqty" allow-clear placeholder="璇疯緭鍏ユ渶浣庡簱瀛�"/> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="瀹夊叏搴撳瓨"> + <a-input v-model="queryParam.safeImumqty" allow-clear placeholder="璇疯緭鍏ュ畨鍏ㄥ簱瀛�"/> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="鏈�灏忓簱榫�"> + <a-input v-model="queryParam.minStorageAge" allow-clear placeholder="璇疯緭鍏ユ渶灏忓簱榫�"/> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="鏈�澶у簱榫�"> + <a-input v-model="queryParam.maxStorageAge" 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.isNotChek" placeholder="璇烽�夋嫨鏄惁鍏嶆"> + <a-select-option v-for="(item,index) in isNotChekData" :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.shelfLifeDays" 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-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"> + <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" --> + <s-table + ref="table" + :columns="columns" + :data="loadData" + :alert="true" + @changeTablePage="pageInfo = $event" + :scroll="{x: true,y:tableHeight}" + :rowKey="(record) => record.id" + > + <template class="table-operator" slot="operator" v-if="hasPerm('WmsControlRuleDetail: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('WmsControlRuleDetail:exportExcel')" icon="download" @click="WmsControlRuleDetailToExcel()"> + 瀵煎嚭 + </a-button> + <a-button type="primary" v-if="hasPerm('WmsControlRuleDetail:add')" icon="plus" @click="$refs.addForm.add()">鏂板鎺у埗灞炴�ц鍒欐槑缁�</a-button> + </div> --> + </template> + <span slot="isNotChekscopedSlots" 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="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('WmsControlRuleDetail:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a> + <a-divider type="vertical" v-if="hasPerm('WmsControlRuleDetail:edit') & hasPerm('WmsControlRuleDetail:delete')"/> + <a-popconfirm v-if="hasPerm('WmsControlRuleDetail:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsControlRuleDetailDelete(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 { WmsControlRuleDetailPage, WmsControlRuleDetailDelete, WmsControlRuleDetailToExcel } from '@/api/modular/main/WmsBase/WmsControlRuleDetailManage' + //鑷畾涔塼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: '鎺у埗灞炴�ц鍒橧D', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '140px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '140px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'controlRuleId' + }, + { + title: '鏈�楂樺簱瀛�', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'maxImumqty' + }, + { + title: '鏈�浣庡簱瀛�', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'minImumqty' + }, + { + title: '瀹夊叏搴撳瓨', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'safeImumqty' + }, + { + title: '鏈�灏忓簱榫�', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'minStorageAge' + }, + { + title: '鏈�澶у簱榫�', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'maxStorageAge' + }, + { + title: '鏄惁鍏嶆', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'isNotChek', + scopedSlots: { customRender: 'isNotChekscopedSlots' } + }, + { + title: '淇濊川鏈熷ぉ鏁�', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'shelfLifeDays' + }, + { + 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 WmsControlRuleDetailPage(Object.assign(parameter, this.switchingDate())).then((res) => { + return res.data + }) + }, + selectedRowKeys: [], + selectedRows: [] + } + }, + created () { + if (this.hasPerm('WmsControlRuleDetail:edit') || this.hasPerm('WmsControlRuleDetail: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 isNotChekOption = this.$options + this.isNotChekData = isNotChekOption.filters['dictData']('yes_true_false') + 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 + }, + WmsControlRuleDetailDelete (record) { + WmsControlRuleDetailDelete(record).then((res) => { + if (res.success) { + this.$message.success('鍒犻櫎鎴愬姛') + this.$refs.table.refresh() + } else { + this.$message.error('鍒犻櫎澶辫触') // + res.message + } + }) + }, + + + WmsControlRuleDetailToExcel() { + 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 + } + }) + } + WmsControlRuleDetailPage(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/tabItem/WmsControlRule/details.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/details.vue new file mode 100644 index 0000000..6d76bef --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/details.vue @@ -0,0 +1,107 @@ +锘�<template> + <!-- @ok="handleSubmit" --> + <a-modal + title="鎺у埗灞炴�ц鍒欐槑缁�" + :width="900" + :visible="visible" + :confirmLoading="confirmLoading" + @cancel="handleCancel" + @ok="visible=false" + > + <a-spin :spinning="confirmLoading"> + <control-rule-detail ref="controlRuleDetail" @ok="handleOk" /> + </a-spin> + </a-modal> + +</template> + +<script> +import moment from 'moment' +import { WmsControlRuleEdit } from '@/api/modular/main/WmsBase/WmsControlRuleManage' +import ControlRuleDetail from './detail.vue' + +export default { + components: { + ControlRuleDetail + }, + 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, + ruleCode: record.ruleCode, + ruleName: record.ruleName, + ruleDesc: record.ruleDesc, + isDisabled: record.isDisabled + }) + }) + }, + handleOk(){ + alert("2") + }, + 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] + } + } + WmsControlRuleEdit(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/WmsMaterial/tabItem/WmsControlRule/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/editForm.vue new file mode 100644 index 0000000..ea11e1c --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/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="璇疯緭鍏ヨ鍒欑紪鍙�" + v-decorator="['ruleCode', { rules: [{ required: true, message: '璇疯緭鍏ヨ鍒欑紪鍙凤紒' }] }]" + /> + </a-form-item> + <a-form-item label="瑙勫垯鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> + <a-input + placeholder="璇疯緭鍏ヨ鍒欏悕绉�" + v-decorator="['ruleName', { rules: [{ required: true, message: '璇疯緭鍏ヨ鍒欏悕绉帮紒' }] }]" + /> + </a-form-item> + <a-form-item label="瑙勫垯鎻忚堪" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> + <a-input placeholder="璇疯緭鍏ヨ鍒欐弿杩�" v-decorator="['ruleDesc']" /> + </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 { WmsControlRuleEdit } from '@/api/modular/main/WmsBase/WmsControlRuleManage' +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, + ruleCode: record.ruleCode, + ruleName: record.ruleName, + ruleDesc: record.ruleDesc, + 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] + } + } + WmsControlRuleEdit(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/WmsMaterial/tabItem/WmsControlRule/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/excelForm.vue new file mode 100644 index 0000000..cc33122 --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/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="wmsControlRuleDownloadExcelTemplate" 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 { WmsControlRuleImportExcel, WmsControlRuleDownloadExcelTemplate} from '@/api/modular/main/WmsBase/WmsControlRuleManage' + 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("wmsControlRuleDownloadExcelTemplate") + window.downloadFile = this.wmsControlRuleDownloadExcelTemplate; + this.getTable(); + }, + showDemand() { + this.detailed = !this.detailed; + }, + customRequest(document) { + this.uploadFile = document + }, + getTable() { + sysExcelTemplateGetColumnList({className: "WmsControlRule"}).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) + WmsControlRuleImportExcel(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 + }, + wmsControlRuleDownloadExcelTemplate() { + WmsControlRuleDownloadExcelTemplate({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/WmsMaterial/tabItem/WmsControlRule/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/index.vue new file mode 100644 index 0000000..bf80dc2 --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsControlRule/index.vue @@ -0,0 +1,512 @@ +锘�<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('WmsControlRule:page')"> + <a-form layout="inline"> + <a-row :gutter="48"> + <a-col :md="8" :sm="24"> + <a-form-item label="瑙勫垯缂栧彿"> + <a-input v-model="queryParam.ruleCode" allow-clear placeholder="璇疯緭鍏ヨ鍒欑紪鍙�" /> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="瑙勫垯鍚嶇О"> + <a-input v-model="queryParam.ruleName" 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.ruleDesc" 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-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('WmsControlRule: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('WmsControlRule:exportExcel')" + icon="download" + @click="WmsControlRuleToExcel()" + > + 瀵煎嚭 + </a-button> + <a-button type="primary" v-if="hasPerm('WmsControlRule: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('WmsControlRule:getdetail')" @click="$refs.detailForm.edit(record)">璇︽儏</a> + + </a-popconfirm> + </span> + </s-table> + <add-form ref="addForm" @ok="handleOk" /> + <edit-form ref="editForm" @ok="handleOk" /> + <excel-form ref="excelForm" @ok="handleOk" /> + + <!-- 鑷畾涔� --> + <detail-form ref="detailForm" @ok="handleOk" /> + + </a-card> + </div> +</template> +<script> +import { STable } from '@/components' +import moment from 'moment' +import { + WmsControlRulePage, + WmsControlRuleDelete, + WmsControlRuleToExcel +} from '@/api/modular/main/WmsBase/WmsControlRuleManage' +//鑷畾涔塼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' +import detailForm from './details.vue' + + +export default { + mixins: [setTableHtMixin], + components: { + STable, + addForm, + editForm, + excelForm, + detailForm + }, + 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: 'ruleCode' + }, + { + title: '瑙勫垯鍚嶇О', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'ruleName' + }, + { + title: '瑙勫垯鎻忚堪', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'ruleDesc' + }, + { + 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 WmsControlRulePage(Object.assign(parameter, this.switchingDate())).then(res => { + return res.data + }) + }, + selectedRowKeys: [], + selectedRows: [] + } + }, + created() { + if (this.hasPerm('WmsControlRule:edit') || this.hasPerm('WmsControlRule: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 + }, + WmsControlRuleDelete(record) { + WmsControlRuleDelete(record).then(res => { + if (res.success) { + this.$message.success('鍒犻櫎鎴愬姛') + this.$refs.table.refresh() + } else { + this.$message.error('鍒犻櫎澶辫触') // + res.message + } + }) + }, + + WmsControlRuleToExcel() { + 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 + } + }) + } + WmsControlRulePage(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/tabItem/addFormWmsSubstituteGood.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/addForm.vue similarity index 92% rename from iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormWmsSubstituteGood.vue rename to iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/addForm.vue index 71d0a2d..23359a0 100644 --- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormWmsSubstituteGood.vue +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/addForm.vue @@ -1,6 +1,13 @@ 锘�<template> - <!-- 鏇夸唬鍝佺鐞� --> - <a-form :form="form"> + <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> @@ -23,6 +30,8 @@ <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁绂佺敤锛�' }], valuePropName: 'checked'}]" /> </a-form-item> </a-form> + </a-spin> + </a-modal> </template> <script> diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/addFormWmsSubstituteGood.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/addFormWmsSubstituteGood.vue new file mode 100644 index 0000000..a7029c1 --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/addFormWmsSubstituteGood.vue @@ -0,0 +1,285 @@ +锘�<template> + <!-- 鏇夸唬鍝佺鐞� --> + <div style="background-color: white"> + <!-- <a-spin :spinning="loading"> --> + <div class="wms-task-management-detail-div"> + <div class="drawer-content"> + <!-- <span style="font-weight:bold;cursor:default;"> + <a style="cursor:default;">{{ row.no }}</a>鍗曟嵁璇︽儏 + </span> --> + <div style="margin-top: 10px;"> + <a-table :columns="columns" :data-source="list" row-key="id" :pagination="false" :scroll="{ x: true }"> + <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template> + <span slot="containerStatusscopedSlots" slot-scope="text"> + <a-tag :color="text == '1' ? '#daa520' : text == '2' ? '#cd5c5c' : text == '3' ? '#add8e6' : '#696969'">{{ + 'orderdetails_statusenum' | dictType(text) + }}</a-tag> + </span> + <span slot="action" slot-scope="text, record"> + <a-popconfirm v-if="hasPerm('BaseCustomer:delete')" placement="topRight" title="纭鍒犻櫎锛�" + @confirm="() => itemDelete(record, index)"> + <a>鍒犻櫎</a> + </a-popconfirm> + </span> + </a-table> + </div> + </div> + + <p @click="visible = true">鏂板琛�</p> + + <a-modal title="鏇夸唬鍝佸垪琛�" :width="900" :visible="visible" :confirmLoading="confirmLoading" @ok="handleSubmit" + @cancel="handleCancel"> + <show-list ref="showList" @ok="handleOk" /> + <!-- <a-spin :spinning="confirmLoading"></a-spin> --> + </a-modal> + </div> + </div> +</template> + +<script> +import { WmsOrderRukuDetail } from '@/api/modular/main/WmsOrderManage' +import showList from './index.vue' + +export default { + name: 'wmsOrderRukuManagementDetailDrawer', + emits: ['update:visible'], + props: { + visible: { + type: Boolean, + default: false + }, + row: { + type: Object, + default: function () { + return {} + } + } + }, + components: { + showList + }, + data() { + return { + loading: false, + containerStatusData: [], + list: [], + columns: [ + { + dataIndex: 'index', + title: '搴忓彿', + fixed: 'left', + width: '60', + scopedSlots: { customRender: 'index' }, + align: 'center' + }, + { + 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' + }, + ], + // 鍒嗛〉 + ipagination: { + current: 1, + pageSize: 10, + pageSizeOptions: ['10', '20', '30', '40'], + showTotal: (total, range) => { + return range[0] + '-' + range[1] + '鍏�' + total + '鏉�' + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0, + size: 'small' + } + } + }, + + created() { + const containerStatusOption = this.$options + this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum') + + this.columns.push({ + title: '鎿嶄綔', + width: '150px', + dataIndex: 'action', + scopedSlots: { customRender: 'action' } + }) + }, + methods: { + onClose() { + this.close() + }, + close() { + this.$emit('update:visible', false) + }, + afterVisibleChange(visible) { + if (visible) { + this.initShow() + } else { + this.afterClsoe() + } + }, + initShow() { + this.loading = true + this.getList(() => { + this.loading = false + }) + }, + getList(row) { + let params = { id: row.id } + WmsOrderRukuDetail(params) + .then(d => { + this.list = d.data.rows || [] + this.$emit('update:visible', true) + // callback && callback(true) + }) + .catch(() => { + this.$emit('update:visible', false) + this.list = [] + // callback && callback(false) + }) + }, + afterClsoe() { + this.list = [] + }, + handleOk(param) { + this.list = param + }, + handleSubmit() { + this.visible = false + }, + handleCancel() { + this.visible = false + }, + itemDelete(record, index) { + this.list.splice(index, 1) + } + } +} +</script> + +<style lang="less" scoped> +.wms-task-management-detail-div { + height: 100%; + overflow: auto; + + .drawer-content { + padding: 16px; + } +} +</style> diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormWmsSubstituteGood.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/editForm.vue similarity index 67% copy from iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormWmsSubstituteGood.vue copy to iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/editForm.vue index 71d0a2d..c755d17 100644 --- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormWmsSubstituteGood.vue +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/editForm.vue @@ -1,6 +1,13 @@ 锘�<template> - <!-- 鏇夸唬鍝佺鐞� --> - <a-form :form="form"> + <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> @@ -22,17 +29,21 @@ <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 moment from 'moment' import { - WmsSubstituteGoodAdd + WmsSubstituteGoodEdit } from '@/api/modular/main/WmsBase/WmsSubstituteGoodManage' export default { data () { return { + Id: 0, labelCol: { xs: { span: 24 }, sm: { span: 5 } @@ -41,6 +52,7 @@ xs: { span: 24 }, sm: { span: 15 } }, + record: {}, visible: false, confirmLoading: false, form: this.$form.createForm(this) @@ -49,41 +61,58 @@ methods: { moment, // 鍒濆鍖栨柟娉� - add (record) { - this.visible = true + 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] } } - WmsSubstituteGoodAdd(values).then((res) => { + WmsSubstituteGoodEdit(this.record).then((res) => { if (res.success) { - this.$message.success('鏂板鎴愬姛') + this.$message.success('缂栬緫鎴愬姛') this.confirmLoading = false - this.$emit('ok', values) + this.$emit('ok', this.record) this.handleCancel() } else { - this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message)) + this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message)) } }).finally((res) => { this.confirmLoading = false }) - } else { + }else{ this.confirmLoading = false - } - }) + } + }); }, handleCancel () { this.form.resetFields() diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/excelForm.vue new file mode 100644 index 0000000..4c8af3c --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/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/WmsMaterial/tabItem/WmsSubstituteGood/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/index.vue new file mode 100644 index 0000000..300772c --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/WmsSubstituteGood/index.vue @@ -0,0 +1,547 @@ +锘�<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 + this.$emit('ok', 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/tabItem/addFormBaseCustomer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/addForm.vue similarity index 94% rename from iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer.vue rename to iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/addForm.vue index a2bfea8..98ee481 100644 --- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer.vue +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/addForm.vue @@ -1,6 +1,13 @@ 锘�<template> - <!-- 鏂板瀹㈡埛妗f --> - <a-form :form="form"> + <a-modal + title="鏂板瀹㈡埛妗f" + :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="['custCode', {rules: [{required: true, message: '璇疯緭鍏ュ鎴风紪鍙凤紒'}]}]" /> </a-form-item> @@ -44,6 +51,8 @@ <a-switch v-decorator="['isDisabled', { valuePropName: 'checked' }]" /> </a-form-item> </a-form> + </a-spin> + </a-modal> </template> <script> diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/addFormBaseCustomer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/addFormBaseCustomer.vue new file mode 100644 index 0000000..e07f210 --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/addFormBaseCustomer.vue @@ -0,0 +1,205 @@ +锘�<template> + <div style="background-color: white"> + <!-- <a-spin :spinning="loading"> --> + <div class="wms-task-management-detail-div"> + <div class="drawer-content"> + <!-- <span style="font-weight:bold;cursor:default;"> + <a style="cursor:default;">{{ row.no }}</a>鍗曟嵁璇︽儏 + </span> --> + <div style="margin-top: 10px;"> + <a-table :columns="columns" :data-source="list" row-key="id" :pagination="false" :scroll="{ x: true }"> + <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template> + <span slot="containerStatusscopedSlots" slot-scope="text"> + <a-tag :color="text == '1' ? '#daa520' : text == '2' ? '#cd5c5c' : text == '3' ? '#add8e6' : '#696969'">{{ + 'orderdetails_statusenum' | dictType(text) + }}</a-tag> + </span> + + <span slot="action" slot-scope="text, record"> + <a-popconfirm v-if="hasPerm('BaseCustomer:delete')" placement="topRight" title="纭鍒犻櫎锛�" + @confirm="() => itemDelete(record, index)"> + <a>鍒犻櫎</a> + </a-popconfirm> + </span> + </a-table> + </div> + </div> + + <p @click="visible = true">鏂板琛�</p> + + <a-modal title="瀹㈡埛鍒楄〃" :width="900" :visible="visible" :confirmLoading="confirmLoading" @ok="handleSubmit" + @cancel="handleCancel"> + <show-list ref="showList" @ok="handleOk" /> + <!-- <a-spin :spinning="confirmLoading"></a-spin> --> + </a-modal> + </div> + </div> +</template> + +<script> +import { WmsOrderRukuDetail } from '@/api/modular/main/WmsOrderManage' +import showList from './index.vue' + +export default { + name: 'wmsOrderRukuManagementDetailDrawer', + emits: ['update:visible'], + props: { + visible: { + type: Boolean, + default: false + }, + row: { + type: Object, + default: function () { + return {} + } + } + }, + components: { + showList + }, + data() { + return { + loading: false, + containerStatusData: [], + list: [], + columns: [ + { + dataIndex: 'index', + title: '搴忓彿', + fixed: 'left', + width: '60', + scopedSlots: { customRender: 'index' }, + align: 'center' + }, + { + title: '瀹㈡埛缂栧彿', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'custCode' + }, + { + title: '瀹㈡埛涓枃鍚嶇О', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px' //鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px' //鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'custChinaName' + } + ], + // 鍒嗛〉 + ipagination: { + current: 1, + pageSize: 10, + pageSizeOptions: ['10', '20', '30', '40'], + showTotal: (total, range) => { + return range[0] + '-' + range[1] + '鍏�' + total + '鏉�' + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0, + size: 'small' + } + } + }, + + created() { + const containerStatusOption = this.$options + this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum') + + this.columns.push({ + title: '鎿嶄綔', + width: '150px', + dataIndex: 'action', + scopedSlots: { customRender: 'action' } + }) + }, + methods: { + onClose() { + this.close() + }, + close() { + this.$emit('update:visible', false) + }, + afterVisibleChange(visible) { + if (visible) { + this.initShow() + } else { + this.afterClsoe() + } + }, + initShow() { + this.loading = true + this.getList(() => { + this.loading = false + }) + }, + getList(row) { + let params = { id: row.id } + WmsOrderRukuDetail(params) + .then(d => { + this.list = d.data.rows || [] + this.$emit('update:visible', true) + // callback && callback(true) + }) + .catch(() => { + this.$emit('update:visible', false) + this.list = [] + // callback && callback(false) + }) + }, + afterClsoe() { + this.list = [] + }, + handleOk(param) { + this.list = param + }, + handleSubmit() { + this.visible = false + }, + handleCancel() { + this.visible = false + }, + itemDelete(record, index) { + this.list.splice(index, 1) + } + } +} +</script> + +<style lang="less" scoped> +.wms-task-management-detail-div { + height: 100%; + overflow: auto; + + .drawer-content { + padding: 16px; + } +} +</style> diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/editForm.vue similarity index 70% copy from iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer.vue copy to iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/editForm.vue index a2bfea8..56a3beb 100644 --- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer.vue +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/editForm.vue @@ -1,6 +1,13 @@ 锘�<template> - <!-- 鏂板瀹㈡埛妗f --> - <a-form :form="form"> + <a-modal + title="缂栬緫瀹㈡埛妗f" + :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="['custCode', {rules: [{required: true, message: '璇疯緭鍏ュ鎴风紪鍙凤紒'}]}]" /> </a-form-item> @@ -43,17 +50,21 @@ <a-form-item label="鏄惁绂佺敤" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-switch v-decorator="['isDisabled', { 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 moment from 'moment' import { - BaseCustomerAdd + BaseCustomerEdit } from '@/api/modular/main/WmsBase/BaseCustomerManage' export default { data () { return { + Id: 0, labelCol: { xs: { span: 24 }, sm: { span: 5 } @@ -62,6 +73,7 @@ xs: { span: 24 }, sm: { span: 15 } }, + record: {}, visible: false, confirmLoading: false, form: this.$form.createForm(this) @@ -70,41 +82,65 @@ methods: { moment, // 鍒濆鍖栨柟娉� - add (record) { - this.visible = true + 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, + custCode: record.custCode, + custChinaName: record.custChinaName, + custEnglishName: record.custEnglishName, + mnemonicCode: record.mnemonicCode, + custType: record.custType, + custTypeName: record.custTypeName, + linkMan: record.linkMan, + phone: record.phone, + email: record.email, + zipCode: record.zipCode, + province: record.province, + city: record.city, + address: record.address, + 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] } } - BaseCustomerAdd(values).then((res) => { + BaseCustomerEdit(this.record).then((res) => { if (res.success) { - this.$message.success('鏂板鎴愬姛') + this.$message.success('缂栬緫鎴愬姛') this.confirmLoading = false - this.$emit('ok', values) + this.$emit('ok', this.record) this.handleCancel() } else { - this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message)) + this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message)) } }).finally((res) => { this.confirmLoading = false }) - } else { + }else{ this.confirmLoading = false - } - }) + } + }); }, handleCancel () { this.form.resetFields() diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/excelForm.vue new file mode 100644 index 0000000..3f7ba25 --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/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="baseCustomerDownloadExcelTemplate" 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 { BaseCustomerImportExcel, BaseCustomerDownloadExcelTemplate} from '@/api/modular/main/WmsBase/BaseCustomerManage' + 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("baseCustomerDownloadExcelTemplate") + window.downloadFile = this.baseCustomerDownloadExcelTemplate; + this.getTable(); + }, + showDemand() { + this.detailed = !this.detailed; + }, + customRequest(document) { + this.uploadFile = document + }, + getTable() { + sysExcelTemplateGetColumnList({className: "BaseCustomer"}).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) + BaseCustomerImportExcel(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 + }, + baseCustomerDownloadExcelTemplate() { + BaseCustomerDownloadExcelTemplate({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/WmsMaterial/tabItem/addFormBaseCustomer/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/index.vue new file mode 100644 index 0000000..060d952 --- /dev/null +++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormBaseCustomer/index.vue @@ -0,0 +1,717 @@ +锘�<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('BaseCustomer:page')"> + <a-form layout="inline"> + <a-row :gutter="48"> + <a-col :md="8" :sm="24"> + <a-form-item label="瀹㈡埛缂栧彿"> + <a-input v-model="queryParam.custCode" allow-clear placeholder="璇疯緭鍏ュ鎴风紪鍙�" /> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="瀹㈡埛涓枃鍚嶇О"> + <a-input v-model="queryParam.custChinaName" 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.custEnglishName" allow-clear placeholder="璇疯緭鍏ュ鎴疯嫳鏂囧悕绉�" /> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="鍔╄鐮�"> + <a-input v-model="queryParam.mnemonicCode" allow-clear placeholder="璇疯緭鍏ュ姪璁扮爜" /> + </a-form-item> + </a-col><a-col :md="8" :sm="24"> + <a-form-item label="绫诲瀷"> + <a-input-number v-model="queryParam.custType" style="width: 100%" allow-clear + placeholder="璇疯緭鍏ョ被鍨�" /> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="绫诲瀷鍚嶇О"> + <a-input v-model="queryParam.custTypeName" allow-clear placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" /> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="鑱旂郴浜�"> + <a-input v-model="queryParam.linkMan" allow-clear placeholder="璇疯緭鍏ヨ仈绯讳汉" /> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="鐢佃瘽"> + <a-input v-model="queryParam.phone" allow-clear placeholder="璇疯緭鍏ョ數璇�" /> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="鐢靛瓙閭欢"> + <a-input v-model="queryParam.email" allow-clear placeholder="璇疯緭鍏ョ數瀛愰偖浠�" /> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="閭紪"> + <a-input v-model="queryParam.zipCode" allow-clear placeholder="璇疯緭鍏ラ偖缂�" /> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="鐪佷唤"> + <a-input v-model="queryParam.province" allow-clear placeholder="璇疯緭鍏ョ渷浠�" /> + </a-form-item> + </a-col> + <a-col :md="8" :sm="24"> + <a-form-item label="鍩庡競"> + <a-input v-model="queryParam.city" allow-clear placeholder="璇疯緭鍏ュ煄甯�" /> + </a-form-item> + </a-col> + <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-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('BaseCustomer: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('BaseCustomer:exportExcel')" icon="download" @click="BaseCustomerToExcel()"> + 瀵煎嚭 + </a-button> + <a-button type="primary" v-if="hasPerm('BaseCustomer:add')" icon="plus" @click="$refs.addForm.add()">鏂板瀹㈡埛妗f</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('BaseCustomer:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a> + <a-divider type="vertical" v-if="hasPerm('BaseCustomer:edit') & hasPerm('BaseCustomer:delete')" /> + <a-popconfirm v-if="hasPerm('BaseCustomer:delete')" placement="topRight" title="纭鍒犻櫎锛�" + @confirm="() => BaseCustomerDelete(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 { BaseCustomerPage, BaseCustomerDelete, BaseCustomerToExcel } from '@/api/modular/main/WmsBase/BaseCustomerManage' +//鑷畾涔塼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: 'custCode' + }, + { + title: '瀹㈡埛涓枃鍚嶇О', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'custChinaName' + }, + { + title: '瀹㈡埛鑻辨枃鍚嶇О', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'custEnglishName' + }, + { + title: '鍔╄鐮�', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'mnemonicCode' + }, + { + title: '绫诲瀷', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '80px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '80px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'custType' + }, + { + title: '绫诲瀷鍚嶇О', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'custTypeName' + }, + { + title: '鑱旂郴浜�', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'linkMan' + }, + { + title: '鐢佃瘽', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'phone' + }, + { + title: '鐢靛瓙閭欢', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'email' + }, + { + title: '閭紪', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'zipCode' + }, + { + title: '鐪佷唤', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'province' + }, + { + title: '鍩庡競', + align: 'center', + customHeaderCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + customCell: () => { + return { + style: { + 'min-width': '120px'//鏈�灏忓垪瀹借缃� + } + } + }, + sorter: true, + dataIndex: 'city' + }, + { + 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: '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 BaseCustomerPage(Object.assign(parameter, this.switchingDate())).then((res) => { + return res.data + }) + }, + selectedRowKeys: [], + selectedRows: [] + } + }, + created() { + if (this.hasPerm('BaseCustomer:edit') || this.hasPerm('BaseCustomer: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 + }, + BaseCustomerDelete(record) { + BaseCustomerDelete(record).then((res) => { + if (res.success) { + this.$message.success('鍒犻櫎鎴愬姛') + this.$refs.table.refresh() + } else { + this.$message.error('鍒犻櫎澶辫触') // + res.message + } + }) + }, + + + BaseCustomerToExcel() { + 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 + } + }) + } + BaseCustomerPage(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 + this.$emit('ok', selectedRows) + } + } +} +</script> +<style lang="less"> +.table-operator { + margin-bottom: 18px; +} + +button { + margin-right: 8px; +}</style> diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/addForm.vue deleted file mode 100644 index eba364c..0000000 --- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/addForm.vue +++ /dev/null @@ -1,260 +0,0 @@ -<template> - <a-modal - title="鏂板鐗╂枡淇℃伅" - :width="900" - :visible="visible" - :confirmLoading="confirmLoading" - @ok="handleSubmit" - @cancel="handleCancel" - > - <a-spin :spinning="confirmLoading"> - <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol"> - <a-row> - <a-col :span="12"> - <a-form-item label="鐗╂枡缂栧彿" has-feedback> - <a-input - placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" - v-decorator="['materialNo', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欑紪鍙凤紒' }] }]" - /> - </a-form-item> - </a-col> - - <a-col :span="12"> - <a-form-item label="鐗╂枡鍚嶇О" has-feedback> - <a-input - placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" - v-decorator="['materialName', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉帮紒' }] }]" - /> - </a-form-item> - </a-col> - - <a-col :span="12"> - <a-form-item label="鐗╂枡绫诲埆"> - <a-select - style="width: 100%" - placeholder="璇烽�夋嫨鐗╂枡绫诲埆" - v-decorator="['materialType', { rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡绫诲埆锛�' }] }]" - > - <a-select-option v-for="(item, index) in materialTypeData" :key="index" :value="item.code">{{ - item.name - }}</a-select-option> - </a-select> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鐗╂枡灏哄" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�" v-decorator="['materialSpec']" /> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鐗╂枡瀵嗗害" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欏瘑搴�" v-decorator="['materialDensity']" /> - </a-form-item> - </a-col> - - <!-- <a-form-item label="搴撳尯鍙傛暟" has-feedback> - <a-select mode="multiple" style="width: 100%" placeholder="璇烽�夋嫨搴撳尯鍙傛暟" v-decorator="['areas']"> - <a-select-option v-for="(item,index) in areaNameParameterData" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option> - </a-select> - </a-form-item> - <a-form-item label="宸ヤ綔鍖哄弬鏁�" has-feedback> - <a-select mode="multiple" style="width: 100%" placeholder="璇烽�夋嫨宸ヤ綔鍖哄弬鏁�" v-decorator="['stations']"> - <a-select-option v-for="(item,index) in stationNameParameterData" :key="index" :value="item.stationId">{{ item.stationName }}</a-select-option> - </a-select> - </a-form-item> --> - - <a-col :span="12"> - <a-form-item label="鐗╂枡鎵规" has-feedback> - <a-input - placeholder="璇疯緭鍏ョ墿鏂欐壒娆�" - v-decorator="['materialBatch', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欐壒娆★紒' }] }]" - /> - </a-form-item> - </a-col> - - <a-col :span="12"> - <a-form-item label="鐗╂枡妫�楠�" has-feedback> - <a-select - style="width: 100%" - placeholder="璇烽�夋嫨鐗╂枡妫�楠�" - v-decorator="['inspectionMethod', { rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡妫�楠岋紒' }] }]" - > - <a-select-option v-for="(item, index) in inspectionMethodData" :key="index" :value="item.code">{{ - item.name - }}</a-select-option> - </a-select> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鐗╂枡鍗曚綅" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欏崟浣�" v-decorator="['materialUnit']" /> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="瀹夊叏瀛橀噺" has-feedback> - <a-input type="number" min="1" placeholder="璇疯緭鍏ュ畨鍏ㄥ瓨閲�" v-decorator="['safeqty']" /> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鏈�澶у瓨閲�" has-feedback> - <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶澶у瓨閲�" v-decorator="['maxImumqty']" /> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鏈�灏忓簱榫�" has-feedback> - <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶灏忓簱榫�" v-decorator="['minstorageAge']" /> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鏈�澶у簱榫�" has-feedback> - <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶澶у簱榫�" v-decorator="['maxstorageAge']" /> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鎻忚堪" has-feedback> - <a-textarea :rows="4" placeholder="璇疯緭鍏ユ弿杩�" v-decorator="['description']"></a-textarea> - </a-form-item> - </a-col> - - <!-- <a-form-item label="搴撳尯Ids" has-feedback> - <a-input placeholder="璇疯緭鍏ュ簱鍖篒ds" v-decorator="['areaIds']" /> - </a-form-item> --> - <!-- <a-form-item label="搴撳尯鍙傛暟" has-feedback> - <a-input placeholder="璇疯緭鍏ュ簱鍖哄弬鏁�" v-decorator="['areaNameParameter']" /> - </a-form-item> --> - <!-- <a-form-item label="宸ヤ綔鍖篒ds" has-feedback> - <a-input placeholder="璇疯緭鍏ュ伐浣滃尯Ids" v-decorator="['stationIds']" /> - </a-form-item> --> - <!-- <a-form-item label="宸ヤ綔鍖哄弬鏁�" has-feedback> - <a-input placeholder="璇疯緭鍏ュ伐浣滃尯鍙傛暟" v-decorator="['stationNameParameter']" /> - </a-form-item> --> - <!-- <a-form-item label="宸ユ" has-feedback> - <a-input placeholder="璇疯緭鍏ュ伐娈�" v-decorator="['lesWorkshopSection']" /> - </a-form-item> --> - - <!-- <a-form-item label="绛炬牳鐘舵��" has-feedback> - <a-input placeholder="璇疯緭鍏ョ鏍哥姸鎬�" v-decorator="['issueState']" /> - </a-form-item> --> - - <!-- <a-form-item label="鐔熷寲鏃堕棿" has-feedback> - <a-input-number placeholder="璇疯緭鍏ョ啛鍖栨椂闂�" style="width: 100%" v-decorator="['maturationTime']" /> - </a-form-item> --> - <!-- <a-form-item label="鏄惁闇�瑕佺啛鍖�" > - <a-switch v-decorator="['isMaturation', { valuePropName: 'checked' }]" /> - </a-form-item> --> - </a-row> - </a-form> - </a-spin> - </a-modal> -</template> - -<script> -import { WmsMaterialAdd, GetAreas, GetStations } from '@/api/modular/main/WmsMaterialManage' -export default { - data() { - return { - labelCol: { - // xs: { span: 24 }, - // sm: { span: 5 } - span: 8 - }, - wrapperCol: { - // xs: { span: 24 }, - // sm: { span: 15 } - span: 13 - }, - inspectionMethodData: [], - materialTypeData: [], - areaNameParameterData: [], - stationNameParameterData: [], - visible: false, - confirmLoading: false, - form: this.$form.createForm(this) - } - }, - methods: { - // 鍒濆鍖栨柟娉� - add(record) { - this.visible = true - this.$nextTick(() => { - this.getSelects() - }) - const materialTypeOption = this.$options - this.materialTypeData = materialTypeOption.filters['dictData']('material_type') - const inspectionMethodOption = this.$options - this.inspectionMethodData = inspectionMethodOption.filters['dictData']('material_inspection') - }, - getSelects() { - if (this.areaNameParameterData.length <= 0 || this.stationNameParameterData.length <= 0) { - this.confirmLoading = true - Promise.all([GetAreas(), GetStations()]) - .then(response => { - this.areaNameParameterData = response[0].data || [] - this.stationNameParameterData = response[1].data || [] - this.confirmLoading = false - }) - .catch(() => { - this.confirmLoading = false - }) - } - }, - /** - * 鎻愪氦琛ㄥ崟 - */ - handleSubmit() { - const { - form: { validateFields } - } = this - this.confirmLoading = true - validateFields((errors, values) => { - if (!errors) { - if (this.$getObjectType(values.areas) === 'array') { - values.areaIds = values.areas.join(',') - values.areaNameParameterArr = values.areas.map(val => { - return this.parseSelectName(val, 'areaId', 'areaName', 'areaNameParameterData') - }) - values.areaNameParameter = values.areaNameParameterArr.join(',') - } - if (this.$getObjectType(values.stations) === 'array') { - values.stationIds = values.stations.join(',') - values.stationNameParameterArr = values.stations.map(val => { - return this.parseSelectName(val, 'stationId', 'stationName', 'stationNameParameterData') - }) - values.stationNameParameter = values.stationNameParameterArr.join(',') - } - WmsMaterialAdd(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 - } - }) - }, - parseSelectName(val, field, nfield, pfield) { - let res = val - for (let i = 0; i < this[pfield].length; i++) { - if (val === this[pfield][i][field]) { - res = this[pfield][i][nfield] - break - } - } - return res - }, - handleCancel() { - this.form.resetFields() - this.visible = false - } - } -} -</script> diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/editForm.vue deleted file mode 100644 index 01953b1..0000000 --- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/editForm.vue +++ /dev/null @@ -1,263 +0,0 @@ -<template> - <a-modal - title="缂栬緫鐗╂枡淇℃伅" - :width="900" - :visible="visible" - :confirmLoading="confirmLoading" - @ok="handleSubmit" - @cancel="handleCancel"> - <a-spin :spinning="confirmLoading"> - <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol"> - - <a-row> - <a-col :span="12"> - <a-form-item label="鐗╂枡缂栧彿" has-feedback> - <a-input - placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" - disabled v-decorator="['materialNo', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欑紪鍙凤紒' }] }]" - /> - </a-form-item> - </a-col> - - <a-col :span="12"> - <a-form-item label="鐗╂枡鍚嶇О" has-feedback> - <a-input - placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" - v-decorator="['materialName', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉帮紒' }] }]" - /> - </a-form-item> - </a-col> - - <a-col :span="12"> - <a-form-item label="鐗╂枡绫诲埆"> - <a-select - style="width: 100%" - placeholder="璇烽�夋嫨鐗╂枡绫诲埆" - v-decorator="['materialType', { rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡绫诲埆锛�' }] }]" - > - <a-select-option v-for="(item, index) in materialTypeData" :key="index" :value="item.code">{{ - item.name - }}</a-select-option> - </a-select> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鐗╂枡灏哄" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�" v-decorator="['materialSpec']" /> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鐗╂枡瀵嗗害" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欏瘑搴�" v-decorator="['materialDensity']" /> - </a-form-item> - </a-col> - - <!-- <a-form-item label="搴撳尯鍙傛暟" has-feedback> - <a-select mode="multiple" style="width: 100%" placeholder="璇烽�夋嫨搴撳尯鍙傛暟" v-decorator="['areas']"> - <a-select-option v-for="(item,index) in areaNameParameterData" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option> - </a-select> - </a-form-item> - <a-form-item label="宸ヤ綔鍖哄弬鏁�" has-feedback> - <a-select mode="multiple" style="width: 100%" placeholder="璇烽�夋嫨宸ヤ綔鍖哄弬鏁�" v-decorator="['stations']"> - <a-select-option v-for="(item,index) in stationNameParameterData" :key="index" :value="item.stationId">{{ item.stationName }}</a-select-option> - </a-select> - </a-form-item> --> - - <a-col :span="12"> - <a-form-item label="鐗╂枡鎵规" has-feedback> - <a-input - disabled placeholder="璇疯緭鍏ョ墿鏂欐壒娆�" - v-decorator="['materialBatch', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欐壒娆★紒' }] }]" - /> - </a-form-item> - </a-col> - - <a-col :span="12"> - <a-form-item label="鐗╂枡妫�楠�" has-feedback> - <a-select - style="width: 100%" - placeholder="璇烽�夋嫨鐗╂枡妫�楠�" - v-decorator="['inspectionMethod', { rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡妫�楠岋紒' }] }]" - > - <a-select-option v-for="(item, index) in inspectionMethodData" :key="index" :value="item.code">{{ - item.name - }}</a-select-option> - </a-select> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鐗╂枡鍗曚綅" has-feedback> - <a-input placeholder="璇疯緭鍏ョ墿鏂欏崟浣�" v-decorator="['materialUnit']" /> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="瀹夊叏瀛橀噺" has-feedback> - <a-input type="number" min="1" placeholder="璇疯緭鍏ュ畨鍏ㄥ瓨閲�" v-decorator="['safeqty']" /> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鏈�澶у瓨閲�" has-feedback> - <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶澶у瓨閲�" v-decorator="['maxImumqty']" /> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鏈�灏忓簱榫�" has-feedback> - <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶灏忓簱榫�" v-decorator="['minstorageAge']" /> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鏈�澶у簱榫�" has-feedback> - <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶澶у簱榫�" v-decorator="['maxstorageAge']" /> - </a-form-item> - </a-col> - <a-col :span="12"> - <a-form-item label="鎻忚堪" has-feedback> - <a-textarea :rows="4" placeholder="璇疯緭鍏ユ弿杩�" v-decorator="['description']"></a-textarea> - </a-form-item> - </a-col> - </a-row> - <!-- <a-form-item label="鐔熷寲鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> - <a-input-number placeholder="璇疯緭鍏ョ啛鍖栨椂闂�" style="width: 100%" v-decorator="['maturationTime']" /> - </a-form-item> - <a-form-item label="鏄惁闇�瑕佺啛鍖�" :labelCol="labelCol" :wrapperCol="wrapperCol"> - <a-switch v-decorator="['isMaturation', { 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 { - WmsMaterialEdit,GetAreas,GetStations - } from '@/api/modular/main/WmsMaterialManage' - export default { - data () { - return { - Id: 0, - labelCol: { - // xs: { span: 24 }, - // sm: { span: 5 } - span: 8 - }, - wrapperCol: { - // xs: { span: 24 }, - // sm: { span: 15 } - span: 13 - }, - record: {}, - inspectionMethodData: [], - materialTypeData: [], - areaNameParameterData: [], - stationNameParameterData: [], - visible: false, - confirmLoading: false, - form: this.$form.createForm(this) - } - }, - methods: { - // 鍒濆鍖栨柟娉� - edit (record) { - this.visible = true; - this.Id = record.id; - this.$nextTick(() => { - this.getSelects() - }); - //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔� - this.record = JSON.parse(JSON.stringify(record)) - const materialTypeOption = this.$options - this.materialTypeData = materialTypeOption.filters['dictData']('material_type') - const inspectionMethodOption = this.$options - this.inspectionMethodData = inspectionMethodOption.filters['dictData']('material_inspection') - - this.$nextTick(() => { - let {areas, stations, ...rest } = record - this.form.setFieldsValue( - { - ...rest, - // id: record.id, - // materialNo: record.materialNo, - // materialName: record.materialName, - // materialType: record.materialType, - // materialSpec: record.materialSpec, - // materialDensity: record.materialDensity, - // maxImumqty: record.maxImumqty, - areas: record.areaIds?record.areaIds.split(','):[], - stations: record.stationIds?record.stationIds.split(','):[], - // maturationTime: record.maturationTime, - // isMaturation: record.isMaturation - } - ) - }) - }, - getSelects(){ - if (this.areaNameParameterData.length<=0 || this.stationNameParameterData.length<=0) { - this.confirmLoading = true - Promise.all([ - GetAreas(), - GetStations() - ]).then(response=>{ - this.areaNameParameterData = response[0].data || [] - this.stationNameParameterData = response[1].data || [] - this.confirmLoading = false - }).catch(()=>{ - this.confirmLoading = false - }) - } - }, - handleSubmit () { - const { form: { validateFields } } = this - this.confirmLoading = true - validateFields((errors, values) => { - if (!errors) { - let params = {...this.record,...values} - if (this.$getObjectType(values.areas)==='array') { - params.areaIds = values.areas.join(',') - params.areaNameParameterArr = values.areas.map((val)=>{ - return this.parseSelectName(val,'areaId','areaName','areaNameParameterData') - }) - params.areaNameParameter = params.areaNameParameterArr.join(',') - } - if (this.$getObjectType(values.stations)==='array'){ - params.stationIds = values.stations.join(',') - params.stationNameParameterArr = values.stations.map((val)=>{ - return this.parseSelectName(val,'stationId','stationName','stationNameParameterData') - }) - params.stationNameParameter = params.stationNameParameterArr.join(',') - } - - WmsMaterialEdit(params).then((res) => { - if (res.success) { - this.$message.success('缂栬緫鎴愬姛') - this.confirmLoading = false - this.$emit('ok', params) - this.handleCancel() - } else { - this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message)) - } - }).finally((res) => { - this.confirmLoading = false - }) - }else{ - this.confirmLoading = false - } - }); - }, - parseSelectName(val,field,nfield,pfield){ - let res = val; - for (let i=0;i<this[pfield].length;i++) { - if (val===this[pfield][i][field]) { - res = this[pfield][i][nfield] - break - } - } - return res - }, - handleCancel () { - this.form.resetFields() - this.visible = false - } - } - } -</script> diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/index.vue deleted file mode 100644 index b67f90d..0000000 --- a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/index.vue +++ /dev/null @@ -1,349 +0,0 @@ -锘�<template> - <div> - <a-card :bordered="false" :bodyStyle="tstyle"> - <div class="table-page-search-wrapper" v-if="hasPerm('WmsMaterial:page')"> - <a-form layout="inline"> - <a-row :gutter="48"> - <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-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲埆"> - <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option> - </a-select> - </a-form-item> - </a-col> - <template v-if="advanced"> - <a-col :md="8" :sm="24"> - <a-form-item label="鐗╂枡灏哄"> - <a-input v-model="queryParam.materialSpec" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�"/> - </a-form-item> - </a-col> - <!-- <a-col :md="8" :sm="24"> - <a-form-item label="鐗╂枡瀵嗗害"> - <a-input v-model="queryParam.materialDensity" 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> - <a-card :bordered="false"> - <a-spin :spinning="loading"> - <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" --> - <s-table - ref="table" - :columns="columns" - :data="loadData" - :alert="true" - :scroll="{x: true}" - :rowKey="(record) => record.id" - > - <template class="table-operator" slot="operator" v-if="hasPerm('WmsMaterial:add')" > - <a-button type="primary" v-if="hasPerm('WmsMaterial:add')" icon="plus" @click="$refs.addForm.add()">鏂板</a-button> - </template> - <template class="table-operator" slot="operator" > - - <!-- <span> - <a-popconfirm v-if="hasPerm('WmsMaterial:tongbu')" placement="topRight" title="纭鍚屾锛�" @confirm="() => handleSubmit()"> - <a class="tongbubut">鍚屾Desk鏁版嵁</a> - </a-popconfirm> - </span> --> - <!-- <a-button class="tongbubut" @click="handleSubmit">鍚屾Desk鏁版嵁</a-button> --> - </template> - - - <span slot="inspectionMethodscopedSlots" slot-scope="text"> - {{ 'material_inspection' | dictType(text) }} - </span> - - - <span slot="materialTypescopedSlots" slot-scope="text"> - {{ 'material_type' | dictType(text) }} - </span> - - - <span slot="action" slot-scope="text, record"> - <a v-if="hasPerm('WmsMaterial:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a> - <a-divider type="vertical" v-if="hasPerm('WmsMaterial:edit') & hasPerm('WmsMaterial:delete')"/> - <a-popconfirm v-if="hasPerm('WmsMaterial:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsMaterialDelete(record)"> - <a>鍒犻櫎</a> - </a-popconfirm> - </span> - </s-table> - </a-spin> - <add-form ref="addForm" @ok="handleOk" /> - <edit-form ref="editForm" @ok="handleOk" /> - </a-card> - </div> -</template> -<script> - import { STable } from '@/components' - import { WmsMaterialPage, WmsMaterialDelete,Getdeskdata } from '@/api/modular/main/WmsMaterialManage' - import addForm from './addForm.vue' - import editForm from './editForm.vue' - export default { - components: { - STable, - addForm, - editForm - }, - data () { - return { - loading:false, - advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴 - queryParam: {}, - columns: [ - { - title: '鐗╂枡缂栧彿', - align: 'center', -sorter: true, - dataIndex: 'materialNo', - width:"100px", - ellipsis:true - }, - { - title: '鐗╂枡鍚嶇О', - align: 'center', - dataIndex: 'materialName', - width:"100px", - ellipsis:true - }, - { - title: '鐗╂枡鎵规', - align: 'center', -sorter: true, - dataIndex: 'materialBatch', - width:"100px", - ellipsis:true - }, - { - title: '鐗╂枡绫诲埆', - align: 'center', - dataIndex: 'materialType', - scopedSlots: { customRender: 'materialTypescopedSlots' }, - width:"100px" - }, - { - title: '鐗╂枡灏哄', - align: 'center', - dataIndex: 'materialSpec', - width:"100px" - }, - { - title: '鐗╂枡瀵嗗害', - align: 'center', - dataIndex: 'materialDensity', - width:"100px" - }, - // { - // title: '搴撳尯鍙傛暟', - // align: 'center', - // dataIndex: 'areaNameParameter', - // width:"100px" - // // scopedSlots: { customRender: 'areaNameParameterscopedSlots' } - // }, - // { - // title: '宸ヤ綔鍖哄弬鏁�', - // align: 'center', - // dataIndex: 'stationNameParameter', - // width:"120px" - // // scopedSlots: { customRender: 'stationNameParameterscopedSlots' } - // }, - { - title: '鐗╂枡妫�楠�', - align: 'center', - dataIndex: 'inspectionMethod', - scopedSlots: { customRender: 'inspectionMethodscopedSlots' }, - width:"100px" - }, - { - title: '鐗╂枡鍗曚綅', - align: 'center', -sorter: true, - dataIndex: 'materialUnit', - width:"100px" - }, -// { -// title: '搴撳尯Ids', -// align: 'center', -// sorter: true, -// dataIndex: 'areaIds' -// }, -// { -// title: '宸ヤ綔鍖篒ds', -// align: 'center', -// sorter: true, -// dataIndex: 'stationIds' -// }, -// { -// title: '宸ユ', -// align: 'center', -// sorter: true, -// dataIndex: 'lesWorkshopSection', -// width:"100px" -// }, - { - title: '鎻忚堪', - align: 'center', -sorter: true, - dataIndex: 'description', - width:"100px" - }, - { - title: '瀹夊叏瀛橀噺', - align: 'center', -sorter: true, - dataIndex: 'safeqty', - width:"100px" - }, - { - title: '鏈�澶у瓨閲�', - align: 'center', -sorter: true, - dataIndex: 'maxImumqty', - width:"100px" - }, - { - title: '鏈�灏忓簱榫�', - align: 'center', -sorter: true, - dataIndex: 'minstorageAge', - width:"100px" - }, - { - title: '鏈�澶у簱榫�', - align: 'center', -sorter: true, - dataIndex: 'maxstorageAge', - width:"100px" - }, -// { -// title: '绛炬牳鐘舵��', -// align: 'center', -// sorter: true, -// dataIndex: 'issueState' -// } - - // { - // title: '鐔熷寲鏃堕棿', - // align: 'center', - // dataIndex: 'maturationTime' - // }, - // { - // title: '鏄惁闇�瑕佺啛鍖�', - // align: 'center', - // customRender: (value) => (value ? <a-tag color="#87d068">鏄�</a-tag> : <a-tag color="gray">鍚�</a-tag>), - // dataIndex: 'isMaturation' - // } - ], - tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' }, - // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄 - loadData: parameter => { - return WmsMaterialPage(Object.assign(parameter, this.queryParam)).then((res) => { - res.data.rows = res.data.rows.map((_obj)=>{ - _obj.materialType= _obj.materialType.toString() - return _obj; - }) - return res.data - }) - }, - inspectionMethodData: [], - materialTypeData: [], - selectedRowKeys: [], - selectedRows: [] - } - }, - created () { - if (this.hasPerm('WmsMaterial:edit') || this.hasPerm('WmsMaterial:delete')) { - this.columns.push({ - title: '鎿嶄綔', - width: '150px', - dataIndex: 'action', - fixed: 'right', - scopedSlots: { customRender: 'action' } - }) - } - const materialTypeOption = this.$options - this.materialTypeData = materialTypeOption.filters['dictData']('material_type') - const inspectionMethodOption = this.$options - this.inspectionMethodData = inspectionMethodOption.filters['dictData']('material_inspection') - }, - methods: { - /** - * 鏌ヨ鍙傛暟缁勮 - */ - switchingDate () { - const obj = JSON.parse(JSON.stringify(this.queryParam)) - return obj - }, - WmsMaterialDelete (record) { - WmsMaterialDelete(record).then((res) => { - if (res.success) { - this.$message.success('鍒犻櫎鎴愬姛') - this.$refs.table.refresh() - } else { - this.$message.error('鍒犻櫎澶辫触') // + res.message - } - }) - }, - handleSubmit() { - this.loading = true; - Getdeskdata().then((res) => { - console.log('res',res) - if (res.success) { - this.$message.success('鍚屾鎴愬姛') - this.$refs.table.refresh() - this.loading = false; - } else { - this.$message.error('鍚屾澶辫触锛�' + res.message) - this.loading = false; - } - }).catch((err) => { - this.$message.error('鍚屾閿欒锛�' + err.message) - this.loading = false; - }) - }, - toggleAdvanced () { - this.advanced = !this.advanced - }, - handleOk () { - this.$refs.table.refresh() - }, - onSelectChange (selectedRowKeys, selectedRows) { - this.selectedRowKeys = selectedRowKeys - this.selectedRows = selectedRows - } - } - } -</script> -<style lang="less"> - .table-operator { - margin-bottom: 18px; - } - .tongbubut{ - border-radius: 2px; - padding: 6px 10px 8px 10px; - background-color: dodgerblue;color: #fff; - } - .tongbubut:hover{ - opacity: 0.8; - background-color: dodgerblue;color: #fff; - } - 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 index dab796a..e969b70 100644 --- 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 @@ -127,32 +127,38 @@ /// <summary> /// 瀹瑰櫒绫诲瀷ID /// </summary> - public virtual long? ContainerTypeId { get; set; } + [Required(ErrorMessage = "瀹瑰櫒绫诲瀷ID涓嶈兘涓虹┖")] + public virtual long ContainerTypeId { get; set; } /// <summary> /// 瀹瑰櫒绫诲瀷鍚嶇О /// </summary> + [Required(ErrorMessage = "瀹瑰櫒绫诲瀷鍚嶇О涓嶈兘涓虹┖")] public virtual string ContainerTypeName { get; set; } /// <summary> /// 鐗╂枡绫诲瀷ID /// </summary> - public virtual long? MaterialTypeId { get; set; } + [Required(ErrorMessage = "鐗╂枡绫诲瀷ID涓嶈兘涓虹┖")] + public virtual long MaterialTypeId { get; set; } /// <summary> /// 鐗╂枡绫诲瀷缂栧彿 /// </summary> + [Required(ErrorMessage = "鐗╂枡绫诲瀷缂栧彿涓嶈兘涓虹┖")] public virtual string MaterialTypeCode { get; set; } /// <summary> /// 鐗╂枡绫诲瀷鍚嶇О /// </summary> + [Required(ErrorMessage = "鐗╂枡绫诲瀷鍚嶇О涓嶈兘涓虹┖")] public virtual string MaterialTypeName { get; set; } /// <summary> /// 鐗╂枡瀹瑰櫒瀹归噺 /// </summary> - public virtual decimal? BoxQty { get; set; } + [Required(ErrorMessage = "鐗╂枡瀹瑰櫒瀹归噺涓嶈兘涓虹┖")] + public virtual decimal BoxQty { get; set; } } 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 index bcea1eb..e46ff7a 100644 --- 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 @@ -11,7 +11,7 @@ /// <summary> /// 瀹瑰櫒绫诲瀷ID /// </summary> - public long? ContainerTypeId { get; set; } + public long ContainerTypeId { get; set; } /// <summary> /// 瀹瑰櫒绫诲瀷鍚嶇О @@ -21,7 +21,7 @@ /// <summary> /// 鐗╂枡绫诲瀷ID /// </summary> - public long? MaterialTypeId { get; set; } + public long MaterialTypeId { get; set; } /// <summary> /// 鐗╂枡绫诲瀷缂栧彿 @@ -36,7 +36,7 @@ /// <summary> /// 鐗╂枡瀹瑰櫒瀹归噺 /// </summary> - public decimal? BoxQty { get; set; } + public decimal BoxQty { get; set; } /// <summary> /// Id涓婚敭 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 index c2759c1..75de536 100644 --- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs +++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs @@ -253,6 +253,12 @@ #region 楠岃瘉 + + if (string.IsNullOrEmpty(_ContainerTypeId)) + { + throw Oops.Oh($"绗瑊index}琛孾瀹瑰櫒绫诲瀷ID]{_ContainerTypeId}涓嶈兘涓虹┖锛�"); + } + if(!string.IsNullOrEmpty(_ContainerTypeId)) { if (!long.TryParse(_ContainerTypeId, out long outContainerTypeId)&&!string.IsNullOrEmpty(_ContainerTypeId)) @@ -269,10 +275,22 @@ } } + + if (string.IsNullOrEmpty(_ContainerTypeName)) + { + throw Oops.Oh($"绗瑊index}琛孾瀹瑰櫒绫诲瀷鍚嶇О]{_ContainerTypeName}涓嶈兘涓虹┖锛�"); + } + if(!string.IsNullOrEmpty(_ContainerTypeName)) { addItem.ContainerTypeName = (string)_ContainerTypeName; } + + if (string.IsNullOrEmpty(_MaterialTypeId)) + { + throw Oops.Oh($"绗瑊index}琛孾鐗╂枡绫诲瀷ID]{_MaterialTypeId}涓嶈兘涓虹┖锛�"); + } + if(!string.IsNullOrEmpty(_MaterialTypeId)) { if (!long.TryParse(_MaterialTypeId, out long outMaterialTypeId)&&!string.IsNullOrEmpty(_MaterialTypeId)) @@ -289,14 +307,32 @@ } } + + if (string.IsNullOrEmpty(_MaterialTypeCode)) + { + throw Oops.Oh($"绗瑊index}琛孾鐗╂枡绫诲瀷缂栧彿]{_MaterialTypeCode}涓嶈兘涓虹┖锛�"); + } + if(!string.IsNullOrEmpty(_MaterialTypeCode)) { addItem.MaterialTypeCode = (string)_MaterialTypeCode; } + + if (string.IsNullOrEmpty(_MaterialTypeName)) + { + throw Oops.Oh($"绗瑊index}琛孾鐗╂枡绫诲瀷鍚嶇О]{_MaterialTypeName}涓嶈兘涓虹┖锛�"); + } + if(!string.IsNullOrEmpty(_MaterialTypeName)) { addItem.MaterialTypeName = (string)_MaterialTypeName; } + + if (string.IsNullOrEmpty(_BoxQty)) + { + throw Oops.Oh($"绗瑊index}琛孾鐗╂枡瀹瑰櫒瀹归噺]{_BoxQty}涓嶈兘涓虹┖锛�"); + } + if(!string.IsNullOrEmpty(_BoxQty)) { if (!decimal.TryParse(_BoxQty, out decimal outBoxQty)&&!string.IsNullOrEmpty(_BoxQty)) @@ -369,13 +405,29 @@ + bool isExist = false; + if (!isEdit)//鏂板 + { + //鏁版嵁鏄惁瀛樺湪閲嶅 + isExist = await _wmsContainerPackagingRep.AnyAsync(u => + u.ContainerTypeId.Equals(input.ContainerTypeId) + ,false); + } + else//缂栬緫 + { + //褰撳墠缂栬緫鏁版嵁浠ュ鏄惁瀛樺湪閲嶅 + isExist = await _wmsContainerPackagingRep.AnyAsync(u => + u.Id != input.Id + &&u.ContainerTypeId.Equals(input.ContainerTypeId) + ,false); + } - //娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲� + if (isExist) throw Oops.Oh(ErrorCode.E0001); } /// <summary> @@ -386,10 +438,42 @@ private async Task CheckExisitForImport(List<WmsContainerPackaging> inputs) { //鏍规嵁鑱斿悎涓婚敭楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹� + if (inputs?.Count <= 0) + { + throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖"); + } + //鏁版嵁鏄惁閲嶅 + var existExcelItem = inputs.GroupBy(g => new { + g.ContainerTypeId + }) + .Where(g => g.Count() > 1) + .Select(s => new { + s.Key.ContainerTypeId + }).FirstOrDefault(); + if (existExcelItem != null) + { + var wmsContainerPackaging = existExcelItem.Adapt<WmsContainerPackaging>(); + var item= existExcelItem.Adapt<WmsContainerPackaging>(); + throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑,瀹瑰櫒绫诲瀷ID[{item.ContainerTypeId}]宸插瓨鍦�"); + } + //鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹� + var existDBItem = await _wmsContainerPackagingRep.DetachedEntities.FirstOrDefaultAsync(w=> + inputs.Select(s=>"" + +s.ContainerTypeId + ) + .Contains("" + +w.ContainerTypeId + )); + if (existDBItem != null) + { + var wmsContainerPackaging = existExcelItem.Adapt<WmsContainerPackaging>(); + var item= existExcelItem.Adapt<WmsContainerPackaging>(); + throw Oops.Oh($"绯荤粺涓�,瀹瑰櫒绫诲瀷ID[{item.ContainerTypeId}]宸插瓨鍦�"); + } } #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 index 37c540e..743ed8a 100644 --- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsContainerPackagingImport.xlsx +++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsContainerPackagingImport.xlsx Binary files differ -- Gitblit v1.9.3