Merge branch 'master' of http://222.71.245.114:9086/r/iWare_RawMaterialWarehouse
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { axios } from '@/utils/request' |
| | | |
| | | /** |
| | | * æ¥è¯¢å
è£
å
³ç³»åºç¡è¡¨ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsContainerPackagingPage (parameter) { |
| | | return axios({ |
| | | url: '/WmsContainerPackaging/page', |
| | | method: 'get', |
| | | params: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * å
è£
å
³ç³»åºç¡è¡¨å表 |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsContainerPackagingList (parameter) { |
| | | return axios({ |
| | | url: '/WmsContainerPackaging/list', |
| | | method: 'get', |
| | | params: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * æ·»å å
è£
å
³ç³»åºç¡è¡¨ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsContainerPackagingAdd (parameter) { |
| | | return axios({ |
| | | url: '/WmsContainerPackaging/add', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * ç¼è¾å
è£
å
³ç³»åºç¡è¡¨ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsContainerPackagingEdit (parameter) { |
| | | return axios({ |
| | | url: '/WmsContainerPackaging/edit', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * å é¤å
è£
å
³ç³»åºç¡è¡¨ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsContainerPackagingDelete (parameter) { |
| | | return axios({ |
| | | url: '/WmsContainerPackaging/delete', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 导åºå
è£
å
³ç³»åºç¡è¡¨çExcelæä»¶ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsContainerPackagingToExcel (parameter) { |
| | | return axios({ |
| | | url: '/WmsContainerPackaging/toExcel', |
| | | method: 'get', |
| | | params: parameter, |
| | | responseType: 'blob' |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * 导å
¥å
è£
å
³ç³»åºç¡è¡¨çExcelæä»¶ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsContainerPackagingImportExcel (data, parameter) { |
| | | return axios({ |
| | | url: '/WmsContainerPackaging/importExcel', |
| | | method: 'post', |
| | | data: data, |
| | | params: parameter |
| | | |
| | | }) |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ä¸è½½å
è£
å
³ç³»åºç¡è¡¨çExcel导å
¥æ¨¡æ¿ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsContainerPackagingDownloadExcelTemplate(parameter) { |
| | | return axios({ |
| | | url: '/WmsContainerPackaging/downloadExcelTemplate', |
| | | method: 'get', |
| | | params: parameter, |
| | | responseType: 'blob' |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { axios } from '@/utils/request' |
| | | |
| | | /** |
| | | * æ¥è¯¢æ¿ä»£å管ç |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsSubstituteGoodPage (parameter) { |
| | | return axios({ |
| | | url: '/WmsSubstituteGood/page', |
| | | method: 'get', |
| | | params: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * æ¿ä»£å管çå表 |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsSubstituteGoodList (parameter) { |
| | | return axios({ |
| | | url: '/WmsSubstituteGood/list', |
| | | method: 'get', |
| | | params: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * æ·»å æ¿ä»£å管ç |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsSubstituteGoodAdd (parameter) { |
| | | return axios({ |
| | | url: '/WmsSubstituteGood/add', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * ç¼è¾æ¿ä»£å管ç |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsSubstituteGoodEdit (parameter) { |
| | | return axios({ |
| | | url: '/WmsSubstituteGood/edit', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * å 餿¿ä»£å管ç |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsSubstituteGoodDelete (parameter) { |
| | | return axios({ |
| | | url: '/WmsSubstituteGood/delete', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å¯¼åºæ¿ä»£å管ççExcelæä»¶ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsSubstituteGoodToExcel (parameter) { |
| | | return axios({ |
| | | url: '/WmsSubstituteGood/toExcel', |
| | | method: 'get', |
| | | params: parameter, |
| | | responseType: 'blob' |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * 导å
¥æ¿ä»£å管ççExcelæä»¶ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsSubstituteGoodImportExcel (data, parameter) { |
| | | return axios({ |
| | | url: '/WmsSubstituteGood/importExcel', |
| | | method: 'post', |
| | | data: data, |
| | | params: parameter |
| | | |
| | | }) |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ä¸è½½æ¿ä»£å管ççExcel导å
¥æ¨¡æ¿ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsSubstituteGoodDownloadExcelTemplate(parameter) { |
| | | return axios({ |
| | | url: '/WmsSubstituteGood/downloadExcelTemplate', |
| | | method: 'get', |
| | | params: parameter, |
| | | responseType: 'blob' |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { axios } from '@/utils/request' |
| | | |
| | | /** |
| | | * æ¥è¯¢ä»åºè¡¨ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsWarehousePage (parameter) { |
| | | return axios({ |
| | | url: '/WmsWarehouse/page', |
| | | method: 'get', |
| | | params: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * ä»åºè¡¨å表 |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsWarehouseList (parameter) { |
| | | return axios({ |
| | | url: '/WmsWarehouse/list', |
| | | method: 'get', |
| | | params: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * æ·»å ä»åºè¡¨ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsWarehouseAdd (parameter) { |
| | | return axios({ |
| | | url: '/WmsWarehouse/add', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * ç¼è¾ä»åºè¡¨ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsWarehouseEdit (parameter) { |
| | | return axios({ |
| | | url: '/WmsWarehouse/edit', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * å é¤ä»åºè¡¨ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsWarehouseDelete (parameter) { |
| | | return axios({ |
| | | url: '/WmsWarehouse/delete', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 导åºä»åºè¡¨çExcelæä»¶ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsWarehouseToExcel (parameter) { |
| | | return axios({ |
| | | url: '/WmsWarehouse/toExcel', |
| | | method: 'get', |
| | | params: parameter, |
| | | responseType: 'blob' |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * 导å
¥ä»åºè¡¨çExcelæä»¶ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsWarehouseImportExcel (data, parameter) { |
| | | return axios({ |
| | | url: '/WmsWarehouse/importExcel', |
| | | method: 'post', |
| | | data: data, |
| | | params: parameter |
| | | |
| | | }) |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ä¸è½½ä»åºè¡¨çExcel导å
¥æ¨¡æ¿ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsWarehouseDownloadExcelTemplate(parameter) { |
| | | return axios({ |
| | | url: '/WmsWarehouse/downloadExcelTemplate', |
| | | method: 'get', |
| | | params: parameter, |
| | | responseType: 'blob' |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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="请è¾å
¥å®¹å¨ç±»åID" v-decorator="['containerTypeId']" /> |
| | | </a-form-item> |
| | | <a-form-item label="容å¨ç±»ååç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å®¹å¨ç±»ååç§°" v-decorator="['containerTypeName']" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æç±»åID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æç±»åID" v-decorator="['materialTypeId']" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æç±»åç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æç±»åç¼å·" v-decorator="['materialTypeCode']" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æç±»ååç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æç±»ååç§°" v-decorator="['materialTypeName']" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æå®¹å¨å®¹é" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æå®¹å¨å®¹é" v-decorator="['boxQty']" /> |
| | | </a-form-item> |
| | | </a-form> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { |
| | | WmsContainerPackagingAdd |
| | | } from '@/api/modular/main/WmsBase/WmsContainerPackagingManage' |
| | | export default { |
| | | data () { |
| | | return { |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | add (record) { |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | |
| | | }); |
| | | }, |
| | | /** |
| | | * æäº¤è¡¨å |
| | | */ |
| | | handleSubmit () { |
| | | const { form: { validateFields } } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (typeof (values[key]) === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | } |
| | | } |
| | | WmsContainerPackagingAdd(values).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('æ°å¢æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', values) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('æ°å¢å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }).finally((res) => { |
| | | this.confirmLoading = false |
| | | }) |
| | | } else { |
| | | this.confirmLoading = false |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel () { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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="请è¾å
¥å®¹å¨ç±»åID" v-decorator="['containerTypeId']" /> |
| | | </a-form-item> |
| | | <a-form-item label="容å¨ç±»ååç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å®¹å¨ç±»ååç§°" v-decorator="['containerTypeName']" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æç±»åID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æç±»åID" v-decorator="['materialTypeId']" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æç±»åç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æç±»åç¼å·" v-decorator="['materialTypeCode']" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æç±»ååç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æç±»ååç§°" v-decorator="['materialTypeName']" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æå®¹å¨å®¹é" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æå®¹å¨å®¹é" v-decorator="['boxQty']" /> |
| | | </a-form-item> |
| | | <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item> |
| | | </a-form> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { |
| | | WmsContainerPackagingEdit |
| | | } from '@/api/modular/main/WmsBase/WmsContainerPackagingManage' |
| | | export default { |
| | | data () { |
| | | return { |
| | | Id: 0, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | record: {}, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | edit (record) { |
| | | this.visible = true; |
| | | this.Id = record.id; |
| | | this.$nextTick(() => { |
| | | }); |
| | | //深度æ·è´ ç§»é¤VUEççå¬ï¼é²æ¢INDEX页é¢å¼åå¨ |
| | | this.record = JSON.parse(JSON.stringify(record)) |
| | | this.$nextTick(() => { |
| | | this.form.setFieldsValue( |
| | | { |
| | | id: record.id, |
| | | containerTypeId: record.containerTypeId, |
| | | containerTypeName: record.containerTypeName, |
| | | materialTypeId: record.materialTypeId, |
| | | materialTypeCode: record.materialTypeCode, |
| | | materialTypeName: record.materialTypeName, |
| | | boxQty: record.boxQty |
| | | } |
| | | ) |
| | | }) |
| | | }, |
| | | handleSubmit () { |
| | | const { form: { validateFields } } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (values[key] == null) continue |
| | | if (typeof (values[key]) === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | this.record[key] = values[key] |
| | | } else { |
| | | this.record[key] = values[key] |
| | | } |
| | | } |
| | | WmsContainerPackagingEdit(this.record).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('ç¼è¾æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', this.record) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('ç¼è¾å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }).finally((res) => { |
| | | this.confirmLoading = false |
| | | }) |
| | | }else{ |
| | | this.confirmLoading = false |
| | | } |
| | | }); |
| | | }, |
| | | handleCancel () { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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>è¯·éæ©è¦å¯¼å
¥çæ°æ®æä»¶ï¼Excelæ ¼å¼ï¼</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> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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="请è¾å
¥å®¹å¨ç±»åID"/> |
| | | </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="请è¾å
¥ç©æç±»åID"/> |
| | | </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' |
| | | //èªå®ä¹tableé«åº¦ |
| | | import setTableHtMixin from '@/mixins/handleTableHt.js' |
| | | import addForm from './addForm.vue' |
| | | import { exportExcel } from '@/utils/exportToExcel' |
| | | import { downloadFile } from '@/utils/util' |
| | | import editForm from './editForm.vue' |
| | | import excelForm from './excelForm.vue' |
| | | export default { |
| | | mixins: [setTableHtMixin], |
| | | components: { |
| | | STable, |
| | | addForm, |
| | | editForm, |
| | | excelForm |
| | | }, |
| | | data () { |
| | | return { |
| | | advanced: false, // é«çº§æç´¢ å±å¼/å
³é |
| | | queryParam: {}, |
| | | pageInfo: { |
| | | current: 1, |
| | | pageSize: 10 |
| | | }, |
| | | columns: [ |
| | | { |
| | | title:'åºå·', |
| | | width: '60px', |
| | | align: 'center', |
| | | customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}` |
| | | }, |
| | | { |
| | | title: '容å¨ç±»åID', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'containerTypeId' |
| | | }, |
| | | { |
| | | title: '容å¨ç±»ååç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'containerTypeName' |
| | | }, |
| | | { |
| | | title: 'ç©æç±»åID', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'materialTypeId' |
| | | }, |
| | | { |
| | | title: 'ç©æç±»åç¼å·', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'materialTypeCode' |
| | | }, |
| | | { |
| | | title: 'ç©æç±»ååç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'materialTypeName' |
| | | }, |
| | | { |
| | | title: 'ç©æå®¹å¨å®¹é', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'boxQty' |
| | | }, |
| | | { |
| | | title: 'å建æ¶é´', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'createdTime' |
| | | }, |
| | | { |
| | | title: 'æ´æ°æ¶é´', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'updatedTime' |
| | | }, |
| | | { |
| | | title: 'å建è
åç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'createdUserName' |
| | | }, |
| | | { |
| | | title: 'ä¿®æ¹è
åç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': ''//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'updatedUserName' |
| | | } |
| | | ], |
| | | tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' }, |
| | | // å è½½æ°æ®æ¹æ³ å¿
须为 Promise 对象 |
| | | loadData: parameter => { |
| | | return WmsContainerPackagingPage(Object.assign(parameter, this.switchingDate())).then((res) => { |
| | | return res.data |
| | | }) |
| | | }, |
| | | selectedRowKeys: [], |
| | | selectedRows: [] |
| | | } |
| | | }, |
| | | created () { |
| | | if (this.hasPerm('WmsContainerPackaging:edit') || this.hasPerm('WmsContainerPackaging:delete')) { |
| | | this.columns.push({ |
| | | title: 'æä½', |
| | | width: '150px', |
| | | dataIndex: 'action', |
| | | scopedSlots: { customRender: 'action' } |
| | | }) |
| | | } |
| | | const path = this.$route.path |
| | | const columnStr = window.localStorage.getItem(path) |
| | | if(columnStr) { |
| | | var _columns = JSON.parse(columnStr) |
| | | this.columns.forEach(element => { |
| | | var fObj = _columns.find((item, index) => { |
| | | return item.dataIndex === element.dataIndex; |
| | | }) |
| | | if(fObj!=undefined && fObj!=null){ |
| | | element.checked=fObj.checked; |
| | | } |
| | | }); |
| | | } |
| | | |
| | | this.handleTableHt() //è®¾ç½®ä¸»è¡¨è¡¨æ ¼é«åº¦ |
| | | window.addEventListener( |
| | | 'resize', |
| | | () => { |
| | | this.handleTableHt() // çå¬å±å¹å¤§å°æ¹åè¡¨æ ¼é«åº¦ |
| | | }, |
| | | false |
| | | ) |
| | | |
| | | }, |
| | | methods: { |
| | | moment, |
| | | /** |
| | | * æ¥è¯¢åæ°ç»è£
|
| | | */ |
| | | switchingDate () { |
| | | const obj = JSON.parse(JSON.stringify(this.queryParam)) |
| | | return obj |
| | | }, |
| | | WmsContainerPackagingDelete (record) { |
| | | WmsContainerPackagingDelete(record).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('å 餿å') |
| | | this.$refs.table.refresh() |
| | | } else { |
| | | this.$message.error('å é¤å¤±è´¥') // + res.message |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | |
| | | WmsContainerPackagingToExcel() { |
| | | this.loading = true |
| | | let entozh = {}; |
| | | const path = this.$route.path; |
| | | if (window.localStorage.getItem(path)) { |
| | | JSON.parse(window.localStorage.getItem(path)).forEach(item => { |
| | | if (item.dataIndex != 'action' && item.checked) { |
| | | entozh[item.dataIndex] = item.title |
| | | } |
| | | }) |
| | | } else { //ç´æ¥ç¹å¯¼åº |
| | | this.columns.forEach(item => { |
| | | if (item.dataIndex != 'action') { |
| | | entozh[item.dataIndex] = item.title |
| | | } |
| | | }) |
| | | } |
| | | WmsContainerPackagingPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => { |
| | | this.loading = false; |
| | | //éè¦æªåæ¥æçåæ®µ |
| | | var arrDataCutout = this.columns.filter(v => v.customCutout == true); |
| | | res.data.rows.forEach(item => { |
| | | var arrKeys = Object.keys(item); |
| | | arrKeys.forEach(key => { |
| | | var strFieldDic = key + 'Data'; |
| | | //æä¸¾è½¬å¼ |
| | | if (this[strFieldDic] && this[strFieldDic].length > 0) { |
| | | let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key])); |
| | | if (arrFieldDic.length > 0) { |
| | | item[key] = arrFieldDic[0]?.name || '没ææä¸¾å¼'; |
| | | } |
| | | } |
| | | // æ¥ææªå |
| | | if (arrDataCutout.length > 0) { |
| | | arrDataCutout.forEach(itemIn => { |
| | | if (key == itemIn.dataIndex && item[key]) { |
| | | item[key] = item[key].split(" ")[0] |
| | | } |
| | | }) |
| | | } |
| | | }); |
| | | }) |
| | | exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`) |
| | | }).catch((err) => { |
| | | this.loading = false |
| | | this.$message.error('ä¸è½½é误ï¼è·åæä»¶æµé误' + err) |
| | | }) |
| | | }, |
| | | |
| | | |
| | | toggleAdvanced () { |
| | | this.advanced = !this.advanced |
| | | this.handleTableHt() //è®¾ç½®ä¸»è¡¨è¡¨æ ¼é«åº¦ |
| | | }, |
| | | onChangecreatedTime(date, dateString) { |
| | | this.queryParam.createdTime = dateString |
| | | }, |
| | | onChangeupdatedTime(date, dateString) { |
| | | this.queryParam.updatedTime = dateString |
| | | }, |
| | | handleOk () { |
| | | this.$refs.table.refresh() |
| | | }, |
| | | onSelectChange (selectedRowKeys, selectedRows) { |
| | | this.selectedRowKeys = selectedRowKeys |
| | | this.selectedRows = selectedRows |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="less"> |
| | | .table-operator { |
| | | margin-bottom: 18px; |
| | | } |
| | | button { |
| | | margin-right: 8px; |
| | | } |
| | | </style> |
| | |
| | | @cancel="handleCancel" |
| | | > |
| | | <a-spin :spinning="confirmLoading"> |
| | | <!-- tab --> |
| | | <a-tabs default-active-key="1" @change="callback"> |
| | | <!-- tab @change="callback"--> |
| | | <a-tabs default-active-key="1" > |
| | | <a-tab-pane key="1" tab="åºæ¬ä¿¡æ¯"> |
| | | <add-form ref="addForm" @ok="handleOk" /> |
| | | </a-tab-pane> |
| | |
| | | Content of Tab Pane 3 |
| | | </a-tab-pane> |
| | | <a-tab-pane key="4" tab="æ¿ä»£å管ç"> |
| | | Content of Tab Pane 4 |
| | | <add-form-sub ref="addFormWmsSubstituteGood" @ok="handleOk" /> |
| | | </a-tab-pane> |
| | | <a-tab-pane key="5" tab="客æ·"> |
| | | <add-form-base-customer ref="addFormBaseCustomer" @ok="handleOk" /> |
| | | </a-tab-pane> |
| | | |
| | | |
| | | <a-tab-pane key="7" tab="å
è£
å
³ç³»"> |
| | | Content of Tab Pane 6 |
| | | <add-form-container-packaging ref="addFormContainerPackaging" @ok="handleOk" /> |
| | | </a-tab-pane> |
| | | </a-tabs> |
| | | |
| | |
| | | import { WmsMaterialAdd, GetAreas, GetStations } from '@/api/modular/main/WmsMaterialManage' |
| | | import addForm from './tabItem/addForm.vue' |
| | | import addFormBaseCustomer from './tabItem/addFormBaseCustomer.vue' |
| | | import addFormContainerPackaging from './tabItem/addFormContainerPackaging.vue' |
| | | import addFormSub from './tabItem/addFormWmsSubstituteGood.vue' |
| | | |
| | | export default { |
| | | components: { |
| | | // STable, |
| | | addForm, |
| | | addFormBaseCustomer, |
| | | |
| | | // editForm, |
| | | // excelForm |
| | | addFormContainerPackaging, |
| | | addFormSub |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | handleOk(){ |
| | | |
| | | }, |
| | | // åå§åæ¹æ³ |
| | | add(record) { |
| | | this.visible = true |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <!-- å
è£
å
³ç³»åºç¡è¡¨ --> |
| | | <a-form :form="form"> |
| | | <a-form-item label="容å¨ç±»åID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å®¹å¨ç±»åID" v-decorator="['containerTypeId']" /> |
| | | </a-form-item> |
| | | <a-form-item label="容å¨ç±»ååç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å®¹å¨ç±»ååç§°" v-decorator="['containerTypeName']" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æç±»åID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æç±»åID" v-decorator="['materialTypeId']" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æç±»åç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æç±»åç¼å·" v-decorator="['materialTypeCode']" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æç±»ååç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æç±»ååç§°" v-decorator="['materialTypeName']" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æå®¹å¨å®¹é" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æå®¹å¨å®¹é" v-decorator="['boxQty']" /> |
| | | </a-form-item> |
| | | </a-form> |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { |
| | | WmsContainerPackagingAdd |
| | | } from '@/api/modular/main/WmsBase/WmsContainerPackagingManage' |
| | | export default { |
| | | data () { |
| | | return { |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | add (record) { |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | |
| | | }); |
| | | }, |
| | | /** |
| | | * æäº¤è¡¨å |
| | | */ |
| | | handleSubmit () { |
| | | const { form: { validateFields } } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (typeof (values[key]) === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | } |
| | | } |
| | | WmsContainerPackagingAdd(values).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('æ°å¢æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', values) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('æ°å¢å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }).finally((res) => { |
| | | this.confirmLoading = false |
| | | }) |
| | | } else { |
| | | this.confirmLoading = false |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel () { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <!-- æ¿ä»£å管ç --> |
| | | <a-form :form="form"> |
| | | <a-form-item label="æ¿ä»£ç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æ¿ä»£ç¼å·" v-decorator="['substituteCode', {rules: [{required: true, message: '请è¾å
¥æ¿ä»£ç¼å·ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æç¼å·" v-decorator="['materialCode', {rules: [{required: true, message: '请è¾å
¥ç©æç¼å·ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æåç§°" v-decorator="['materialName', {rules: [{required: true, message: '请è¾å
¥ç©æåç§°ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¿ä»£åç©æç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æ¿ä»£åç©æç¼å·" v-decorator="['substituteMaterialCode', {rules: [{required: true, message: '请è¾å
¥æ¿ä»£åç©æç¼å·ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¿ä»£åç©æåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æ¿ä»£åç©æåç§°" v-decorator="['substituteMaterialName', {rules: [{required: true, message: '请è¾å
¥æ¿ä»£åç©æåç§°ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¿ä»£æ¬¡åº" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input-number placeholder="请è¾å
¥æ¿ä»£æ¬¡åº" style="width: 100%" v-decorator="['substituteIndex', {rules: [{required: true, message: '请è¾å
¥æ¿ä»£æ¬¡åºï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¯å¦ç¦ç¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: 'è¯·éæ©æ¯å¦ç¦ç¨ï¼' }], valuePropName: 'checked'}]" /> |
| | | </a-form-item> |
| | | </a-form> |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { |
| | | WmsSubstituteGoodAdd |
| | | } from '@/api/modular/main/WmsBase/WmsSubstituteGoodManage' |
| | | export default { |
| | | data () { |
| | | return { |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | add (record) { |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | |
| | | }); |
| | | }, |
| | | /** |
| | | * æäº¤è¡¨å |
| | | */ |
| | | handleSubmit () { |
| | | const { form: { validateFields } } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (typeof (values[key]) === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | } |
| | | } |
| | | WmsSubstituteGoodAdd(values).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('æ°å¢æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', values) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('æ°å¢å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }).finally((res) => { |
| | | this.confirmLoading = false |
| | | }) |
| | | } else { |
| | | this.confirmLoading = false |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel () { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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="['substituteCode', {rules: [{required: true, message: '请è¾å
¥æ¿ä»£ç¼å·ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æç¼å·" v-decorator="['materialCode', {rules: [{required: true, message: '请è¾å
¥ç©æç¼å·ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æåç§°" v-decorator="['materialName', {rules: [{required: true, message: '请è¾å
¥ç©æåç§°ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¿ä»£åç©æç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æ¿ä»£åç©æç¼å·" v-decorator="['substituteMaterialCode', {rules: [{required: true, message: '请è¾å
¥æ¿ä»£åç©æç¼å·ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¿ä»£åç©æåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æ¿ä»£åç©æåç§°" v-decorator="['substituteMaterialName', {rules: [{required: true, message: '请è¾å
¥æ¿ä»£åç©æåç§°ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¿ä»£æ¬¡åº" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input-number placeholder="请è¾å
¥æ¿ä»£æ¬¡åº" style="width: 100%" v-decorator="['substituteIndex', {rules: [{required: true, message: '请è¾å
¥æ¿ä»£æ¬¡åºï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¯å¦ç¦ç¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: 'è¯·éæ©æ¯å¦ç¦ç¨ï¼' }], valuePropName: 'checked'}]" /> |
| | | </a-form-item> |
| | | </a-form> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { |
| | | WmsSubstituteGoodAdd |
| | | } from '@/api/modular/main/WmsBase/WmsSubstituteGoodManage' |
| | | export default { |
| | | data () { |
| | | return { |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | add (record) { |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | |
| | | }); |
| | | }, |
| | | /** |
| | | * æäº¤è¡¨å |
| | | */ |
| | | handleSubmit () { |
| | | const { form: { validateFields } } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (typeof (values[key]) === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | } |
| | | } |
| | | WmsSubstituteGoodAdd(values).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('æ°å¢æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', values) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('æ°å¢å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }).finally((res) => { |
| | | this.confirmLoading = false |
| | | }) |
| | | } else { |
| | | this.confirmLoading = false |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel () { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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="['substituteCode', {rules: [{required: true, message: '请è¾å
¥æ¿ä»£ç¼å·ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æç¼å·" v-decorator="['materialCode', {rules: [{required: true, message: '请è¾å
¥ç©æç¼å·ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="ç©æåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ç©æåç§°" v-decorator="['materialName', {rules: [{required: true, message: '请è¾å
¥ç©æåç§°ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¿ä»£åç©æç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æ¿ä»£åç©æç¼å·" v-decorator="['substituteMaterialCode', {rules: [{required: true, message: '请è¾å
¥æ¿ä»£åç©æç¼å·ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¿ä»£åç©æåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æ¿ä»£åç©æåç§°" v-decorator="['substituteMaterialName', {rules: [{required: true, message: '请è¾å
¥æ¿ä»£åç©æåç§°ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¿ä»£æ¬¡åº" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input-number placeholder="请è¾å
¥æ¿ä»£æ¬¡åº" style="width: 100%" v-decorator="['substituteIndex', {rules: [{required: true, message: '请è¾å
¥æ¿ä»£æ¬¡åºï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¯å¦ç¦ç¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: 'è¯·éæ©æ¯å¦ç¦ç¨ï¼' }], valuePropName: 'checked'}]" /> |
| | | </a-form-item> |
| | | <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item> |
| | | </a-form> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { |
| | | WmsSubstituteGoodEdit |
| | | } from '@/api/modular/main/WmsBase/WmsSubstituteGoodManage' |
| | | export default { |
| | | data () { |
| | | return { |
| | | Id: 0, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | record: {}, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | edit (record) { |
| | | this.visible = true; |
| | | this.Id = record.id; |
| | | this.$nextTick(() => { |
| | | }); |
| | | //深度æ·è´ ç§»é¤VUEççå¬ï¼é²æ¢INDEX页é¢å¼åå¨ |
| | | this.record = JSON.parse(JSON.stringify(record)) |
| | | this.$nextTick(() => { |
| | | this.form.setFieldsValue( |
| | | { |
| | | id: record.id, |
| | | substituteCode: record.substituteCode, |
| | | materialCode: record.materialCode, |
| | | materialName: record.materialName, |
| | | substituteMaterialCode: record.substituteMaterialCode, |
| | | substituteMaterialName: record.substituteMaterialName, |
| | | substituteIndex: record.substituteIndex, |
| | | isDisabled: record.isDisabled |
| | | } |
| | | ) |
| | | }) |
| | | }, |
| | | handleSubmit () { |
| | | const { form: { validateFields } } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (values[key] == null) continue |
| | | if (typeof (values[key]) === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | this.record[key] = values[key] |
| | | } else { |
| | | this.record[key] = values[key] |
| | | } |
| | | } |
| | | WmsSubstituteGoodEdit(this.record).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('ç¼è¾æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', this.record) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('ç¼è¾å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }).finally((res) => { |
| | | this.confirmLoading = false |
| | | }) |
| | | }else{ |
| | | this.confirmLoading = false |
| | | } |
| | | }); |
| | | }, |
| | | handleCancel () { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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>è¯·éæ©è¦å¯¼å
¥çæ°æ®æä»¶ï¼Excelæ ¼å¼ï¼</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> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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="请è¾å
¥æ¿ä»£ç¼å·"/> |
| | | </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="请è¾å
¥æ¿ä»£åç©æç¼å·"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æ¿ä»£åç©æåç§°"> |
| | | <a-input v-model="queryParam.substituteMaterialName" allow-clear placeholder="请è¾å
¥æ¿ä»£åç©æåç§°"/> |
| | | </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="请è¾å
¥æ¿ä»£æ¬¡åº"/> |
| | | </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' |
| | | //èªå®ä¹tableé«åº¦ |
| | | import setTableHtMixin from '@/mixins/handleTableHt.js' |
| | | import addForm from './addForm.vue' |
| | | import { exportExcel } from '@/utils/exportToExcel' |
| | | import { downloadFile } from '@/utils/util' |
| | | import editForm from './editForm.vue' |
| | | import excelForm from './excelForm.vue' |
| | | export default { |
| | | mixins: [setTableHtMixin], |
| | | components: { |
| | | STable, |
| | | addForm, |
| | | editForm, |
| | | excelForm |
| | | }, |
| | | data () { |
| | | return { |
| | | advanced: false, // é«çº§æç´¢ å±å¼/å
³é |
| | | queryParam: {}, |
| | | pageInfo: { |
| | | current: 1, |
| | | pageSize: 10 |
| | | }, |
| | | columns: [ |
| | | { |
| | | title:'åºå·', |
| | | width: '60px', |
| | | align: 'center', |
| | | customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}` |
| | | }, |
| | | { |
| | | title: 'æ¿ä»£ç¼å·', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'substituteCode' |
| | | }, |
| | | { |
| | | title: 'ç©æç¼å·', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'materialCode' |
| | | }, |
| | | { |
| | | title: 'ç©æåç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'materialName' |
| | | }, |
| | | { |
| | | title: 'æ¿ä»£åç©æç¼å·', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '140px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '140px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'substituteMaterialCode' |
| | | }, |
| | | { |
| | | title: 'æ¿ä»£åç©æåç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '140px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '140px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'substituteMaterialName' |
| | | }, |
| | | { |
| | | title: 'æ¿ä»£æ¬¡åº', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'substituteIndex' |
| | | }, |
| | | { |
| | | title: 'æ¯å¦ç¦ç¨', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'isDisabled', |
| | | scopedSlots: { customRender: 'isDisabledscopedSlots' } |
| | | }, |
| | | { |
| | | title: 'å建æ¶é´', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'createdTime' |
| | | }, |
| | | { |
| | | title: 'æ´æ°æ¶é´', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'updatedTime' |
| | | }, |
| | | { |
| | | title: 'å建è
åç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'createdUserName' |
| | | }, |
| | | { |
| | | title: 'ä¿®æ¹è
åç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'updatedUserName' |
| | | } |
| | | ], |
| | | tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' }, |
| | | // å è½½æ°æ®æ¹æ³ å¿
须为 Promise 对象 |
| | | loadData: parameter => { |
| | | return WmsSubstituteGoodPage(Object.assign(parameter, this.switchingDate())).then((res) => { |
| | | return res.data |
| | | }) |
| | | }, |
| | | selectedRowKeys: [], |
| | | selectedRows: [] |
| | | } |
| | | }, |
| | | created () { |
| | | if (this.hasPerm('WmsSubstituteGood:edit') || this.hasPerm('WmsSubstituteGood:delete')) { |
| | | this.columns.push({ |
| | | title: 'æä½', |
| | | width: '150px', |
| | | dataIndex: 'action', |
| | | scopedSlots: { customRender: 'action' } |
| | | }) |
| | | } |
| | | const path = this.$route.path |
| | | const columnStr = window.localStorage.getItem(path) |
| | | if(columnStr) { |
| | | var _columns = JSON.parse(columnStr) |
| | | this.columns.forEach(element => { |
| | | var fObj = _columns.find((item, index) => { |
| | | return item.dataIndex === element.dataIndex; |
| | | }) |
| | | if(fObj!=undefined && fObj!=null){ |
| | | element.checked=fObj.checked; |
| | | } |
| | | }); |
| | | } |
| | | const isDisabledOption = this.$options |
| | | this.isDisabledData = isDisabledOption.filters['dictData']('yes_true_false') |
| | | |
| | | this.handleTableHt() //è®¾ç½®ä¸»è¡¨è¡¨æ ¼é«åº¦ |
| | | window.addEventListener( |
| | | 'resize', |
| | | () => { |
| | | this.handleTableHt() // çå¬å±å¹å¤§å°æ¹åè¡¨æ ¼é«åº¦ |
| | | }, |
| | | false |
| | | ) |
| | | |
| | | }, |
| | | methods: { |
| | | moment, |
| | | /** |
| | | * æ¥è¯¢åæ°ç»è£
|
| | | */ |
| | | switchingDate () { |
| | | const obj = JSON.parse(JSON.stringify(this.queryParam)) |
| | | return obj |
| | | }, |
| | | WmsSubstituteGoodDelete (record) { |
| | | WmsSubstituteGoodDelete(record).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('å 餿å') |
| | | this.$refs.table.refresh() |
| | | } else { |
| | | this.$message.error('å é¤å¤±è´¥') // + res.message |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | |
| | | WmsSubstituteGoodToExcel() { |
| | | this.loading = true |
| | | let entozh = {}; |
| | | const path = this.$route.path; |
| | | if (window.localStorage.getItem(path)) { |
| | | JSON.parse(window.localStorage.getItem(path)).forEach(item => { |
| | | if (item.dataIndex != 'action' && item.checked) { |
| | | entozh[item.dataIndex] = item.title |
| | | } |
| | | }) |
| | | } else { //ç´æ¥ç¹å¯¼åº |
| | | this.columns.forEach(item => { |
| | | if (item.dataIndex != 'action') { |
| | | entozh[item.dataIndex] = item.title |
| | | } |
| | | }) |
| | | } |
| | | WmsSubstituteGoodPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => { |
| | | this.loading = false; |
| | | //éè¦æªåæ¥æçåæ®µ |
| | | var arrDataCutout = this.columns.filter(v => v.customCutout == true); |
| | | res.data.rows.forEach(item => { |
| | | var arrKeys = Object.keys(item); |
| | | arrKeys.forEach(key => { |
| | | var strFieldDic = key + 'Data'; |
| | | //æä¸¾è½¬å¼ |
| | | if (this[strFieldDic] && this[strFieldDic].length > 0) { |
| | | let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key])); |
| | | if (arrFieldDic.length > 0) { |
| | | item[key] = arrFieldDic[0]?.name || '没ææä¸¾å¼'; |
| | | } |
| | | } |
| | | // æ¥ææªå |
| | | if (arrDataCutout.length > 0) { |
| | | arrDataCutout.forEach(itemIn => { |
| | | if (key == itemIn.dataIndex && item[key]) { |
| | | item[key] = item[key].split(" ")[0] |
| | | } |
| | | }) |
| | | } |
| | | }); |
| | | }) |
| | | exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`) |
| | | }).catch((err) => { |
| | | this.loading = false |
| | | this.$message.error('ä¸è½½é误ï¼è·åæä»¶æµé误' + err) |
| | | }) |
| | | }, |
| | | |
| | | |
| | | toggleAdvanced () { |
| | | this.advanced = !this.advanced |
| | | this.handleTableHt() //è®¾ç½®ä¸»è¡¨è¡¨æ ¼é«åº¦ |
| | | }, |
| | | onChangecreatedTime(date, dateString) { |
| | | this.queryParam.createdTime = dateString |
| | | }, |
| | | onChangeupdatedTime(date, dateString) { |
| | | this.queryParam.updatedTime = dateString |
| | | }, |
| | | handleOk () { |
| | | this.$refs.table.refresh() |
| | | }, |
| | | onSelectChange (selectedRowKeys, selectedRows) { |
| | | this.selectedRowKeys = selectedRowKeys |
| | | this.selectedRows = selectedRows |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="less"> |
| | | .table-operator { |
| | | margin-bottom: 18px; |
| | | } |
| | | button { |
| | | margin-right: 8px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-modal |
| | | title="æ°å¢ä»åºè¡¨" |
| | | :width="900" |
| | | :visible="visible" |
| | | :confirmLoading="confirmLoading" |
| | | @ok="handleSubmit" |
| | | @cancel="handleCancel"> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form :form="form"> |
| | | <a-form-item label="ä»åºç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ä»åºç¼å·" v-decorator="['code', {rules: [{required: true, message: '请è¾å
¥ä»åºç¼å·ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="ä»åºåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ä»åºåç§°" v-decorator="['name', {rules: [{required: true, message: '请è¾å
¥ä»åºåç§°ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="ä»åºå°å" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ä»åºå°å" v-decorator="['address']" /> |
| | | </a-form-item> |
| | | <a-form-item label="å·¥åç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å·¥åç¼å·" v-decorator="['factoryCode']" /> |
| | | </a-form-item> |
| | | <a-form-item label="é¿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥é¿" v-decorator="['length']" /> |
| | | </a-form-item> |
| | | <a-form-item label="宽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å®½" v-decorator="['width']" /> |
| | | </a-form-item> |
| | | <a-form-item label="é«" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥é«" v-decorator="['height']" /> |
| | | </a-form-item> |
| | | <a-form-item label="åºæ¬åå
" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥åºæ¬åå
" v-decorator="['baseUnit']" /> |
| | | </a-form-item> |
| | | <a-form-item label="å®ä½" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å®ä½" v-decorator="['position']" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¯å¦ç¦ç¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: 'è¯·éæ©æ¯å¦ç¦ç¨ï¼' }], valuePropName: 'checked'}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="夿³¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å¤æ³¨" v-decorator="['remarks']" /> |
| | | </a-form-item> |
| | | </a-form> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { |
| | | WmsWarehouseAdd |
| | | } from '@/api/modular/main/WmsBase/WmsWarehouseManage' |
| | | export default { |
| | | data () { |
| | | return { |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | add (record) { |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | |
| | | }); |
| | | }, |
| | | /** |
| | | * æäº¤è¡¨å |
| | | */ |
| | | handleSubmit () { |
| | | const { form: { validateFields } } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (typeof (values[key]) === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | } |
| | | } |
| | | WmsWarehouseAdd(values).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('æ°å¢æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', values) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('æ°å¢å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }).finally((res) => { |
| | | this.confirmLoading = false |
| | | }) |
| | | } else { |
| | | this.confirmLoading = false |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel () { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-modal |
| | | title="ç¼è¾ä»åºè¡¨" |
| | | :width="900" |
| | | :visible="visible" |
| | | :confirmLoading="confirmLoading" |
| | | @ok="handleSubmit" |
| | | @cancel="handleCancel"> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form :form="form"> |
| | | <a-form-item label="ä»åºç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ä»åºç¼å·" v-decorator="['code', {rules: [{required: true, message: '请è¾å
¥ä»åºç¼å·ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="ä»åºåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ä»åºåç§°" v-decorator="['name', {rules: [{required: true, message: '请è¾å
¥ä»åºåç§°ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="ä»åºå°å" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ä»åºå°å" v-decorator="['address']" /> |
| | | </a-form-item> |
| | | <a-form-item label="å·¥åç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å·¥åç¼å·" v-decorator="['factoryCode']" /> |
| | | </a-form-item> |
| | | <a-form-item label="é¿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥é¿" v-decorator="['length']" /> |
| | | </a-form-item> |
| | | <a-form-item label="宽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å®½" v-decorator="['width']" /> |
| | | </a-form-item> |
| | | <a-form-item label="é«" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥é«" v-decorator="['height']" /> |
| | | </a-form-item> |
| | | <a-form-item label="åºæ¬åå
" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥åºæ¬åå
" v-decorator="['baseUnit']" /> |
| | | </a-form-item> |
| | | <a-form-item label="å®ä½" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å®ä½" v-decorator="['position']" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¯å¦ç¦ç¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: 'è¯·éæ©æ¯å¦ç¦ç¨ï¼' }], valuePropName: 'checked'}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="夿³¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å¤æ³¨" v-decorator="['remarks']" /> |
| | | </a-form-item> |
| | | <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item> |
| | | </a-form> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { |
| | | WmsWarehouseEdit |
| | | } from '@/api/modular/main/WmsBase/WmsWarehouseManage' |
| | | export default { |
| | | data () { |
| | | return { |
| | | Id: 0, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | record: {}, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | edit (record) { |
| | | this.visible = true; |
| | | this.Id = record.id; |
| | | this.$nextTick(() => { |
| | | }); |
| | | //深度æ·è´ ç§»é¤VUEççå¬ï¼é²æ¢INDEX页é¢å¼åå¨ |
| | | this.record = JSON.parse(JSON.stringify(record)) |
| | | this.$nextTick(() => { |
| | | this.form.setFieldsValue( |
| | | { |
| | | id: record.id, |
| | | code: record.code, |
| | | name: record.name, |
| | | address: record.address, |
| | | factoryCode: record.factoryCode, |
| | | length: record.length, |
| | | width: record.width, |
| | | height: record.height, |
| | | baseUnit: record.baseUnit, |
| | | position: record.position, |
| | | isDisabled: record.isDisabled, |
| | | remarks: record.remarks |
| | | } |
| | | ) |
| | | }) |
| | | }, |
| | | handleSubmit () { |
| | | const { form: { validateFields } } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (values[key] == null) continue |
| | | if (typeof (values[key]) === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | this.record[key] = values[key] |
| | | } else { |
| | | this.record[key] = values[key] |
| | | } |
| | | } |
| | | WmsWarehouseEdit(this.record).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('ç¼è¾æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', this.record) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('ç¼è¾å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }).finally((res) => { |
| | | this.confirmLoading = false |
| | | }) |
| | | }else{ |
| | | this.confirmLoading = false |
| | | } |
| | | }); |
| | | }, |
| | | handleCancel () { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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>è¯·éæ©è¦å¯¼å
¥çæ°æ®æä»¶ï¼Excelæ ¼å¼ï¼</span> |
| | | </a-row> |
| | | <p></p> |
| | | <a-row> |
| | | <a-col :span="16"> |
| | | <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload"> |
| | | <a-icon style="font-size: 40px;" type="cloud-upload" /> |
| | | </a-upload-dragger> |
| | | </a-col> |
| | | <!--<a-col :span="8"> |
| | | <span>导å
¥æ¨¡å¼ï¼</span> |
| | | <a-select |
| | | style="width: 130px" |
| | | placeholder="è¯·éæ©å¯¼å
¥æ¨¡å¼" |
| | | v-model="importExcelType"> |
| | | <a-select-option |
| | | v-for="(item,index) in importExcelTypeData" |
| | | :key="index" |
| | | :value="item.code">{{ item.name }} |
| | | </a-select-option> |
| | | </a-select> |
| | | </a-col>--> |
| | | </a-row> |
| | | <a-row :span="24"> |
| | | <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed"> |
| | | ç¹å»æ¥çæä»¶ä¸ä¼ è¦æ± |
| | | </a-button>--> |
| | | <span>ã</span> |
| | | <a-button style="width: 90px;text-align: left;" @click="wmsWarehouseDownloadExcelTemplate" type="link">ä¸è½½å¯¼å
¥æ¨¡æ¿</a-button>ï¼å¡«åå¹¶ä¸ä¼ |
| | | <span>ã</span> |
| | | <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed"> |
| | | æ¶èµ· |
| | | </a-button> |
| | | </a-row> |
| | | <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24"> |
| | | <a-breadcrumb> |
| | | <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">æä»¶ä¸ä¼ è¦æ±</a-breadcrumb-item> |
| | | </a-breadcrumb> |
| | | </a-row> |
| | | <pre v-show="detailed"> |
| | | <div v-html="demandText"></div> |
| | | </pre> |
| | | <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table> |
| | | <pre v-show="detailed"> |
| | | <div v-html="columnText"></div> |
| | | </pre> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util' |
| | | |
| | | import { WmsWarehouseImportExcel, WmsWarehouseDownloadExcelTemplate} from '@/api/modular/main/WmsBase/WmsWarehouseManage' |
| | | import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage' |
| | | export default { |
| | | components: { |
| | | }, |
| | | data() { |
| | | return { |
| | | visible: false, |
| | | detailed: false, |
| | | confirmLoading: false, |
| | | fileList: [], |
| | | importExcelTypeData: [], |
| | | importExcelType: '1', |
| | | uploadFile: null, |
| | | columns: [], |
| | | dataList: [], |
| | | demandText:'', |
| | | columnText: '' |
| | | } |
| | | }, |
| | | methods: { |
| | | index() { |
| | | this.visible = true; |
| | | this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type') |
| | | this.demandText = parseDemandText("wmsWarehouseDownloadExcelTemplate") |
| | | window.downloadFile = this.wmsWarehouseDownloadExcelTemplate; |
| | | this.getTable(); |
| | | }, |
| | | showDemand() { |
| | | this.detailed = !this.detailed; |
| | | }, |
| | | customRequest(document) { |
| | | this.uploadFile = document |
| | | }, |
| | | getTable() { |
| | | sysExcelTemplateGetColumnList({className: "WmsWarehouse"}).then(res => |
| | | { |
| | | if (res.success) { |
| | | this.columns =[]; |
| | | this.dataList = [{}]; |
| | | res.data.forEach(x => { |
| | | this.columns.push({ |
| | | dataIndex: x.columnName, |
| | | key: x.columnName, |
| | | title: x.columnComment |
| | | }); |
| | | this.dataList[0][x.columnName] = x.isRequired ? "å¿
å¡«" : "éå¿
å¡«" |
| | | }); |
| | | this.columnText = parseExcelFieldText(res.data); |
| | | } |
| | | }); |
| | | }, |
| | | beforeUpload(fileInfo) { |
| | | let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']); |
| | | if (!res.success) { |
| | | this.$message.warning(res.msg) |
| | | return false |
| | | } |
| | | setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000) |
| | | }, |
| | | handleChange(fileInfo) { |
| | | if (fileInfo.file.status === 'error') { |
| | | fileInfo.fileList.splice(0, 1) |
| | | } |
| | | if (fileInfo.file.status === 'done') { |
| | | if (fileInfo.fileList.length > 1) { |
| | | fileInfo.fileList.splice(0, 1) |
| | | } |
| | | this.fileList = fileInfo.file |
| | | } |
| | | }, |
| | | handleSubmit() { |
| | | this.confirmLoading = true |
| | | const formData = new FormData() |
| | | formData.append('file', this.uploadFile.file) |
| | | WmsWarehouseImportExcel(formData, {importExcelType: this.importExcelType}).then(res => { |
| | | this.$message.success('æä½æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', []) |
| | | this.handleCancel() |
| | | }).finally((res)=>{this.confirmLoading = false}) |
| | | }, |
| | | handleCancel() { |
| | | this.visible = false |
| | | this.detailed = false |
| | | }, |
| | | wmsWarehouseDownloadExcelTemplate() { |
| | | WmsWarehouseDownloadExcelTemplate({version: "v2"}).then((res) => { |
| | | downloadFile(res); |
| | | }).catch((err) => { |
| | | this.$message.error('ä¸è½½é误ï¼è·åæä»¶æµé误' + err) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | ::v-deep .ant-upload.ant-upload-drag { |
| | | position: relative; |
| | | width: 140px; |
| | | height: 135px; |
| | | text-align: center; |
| | | background: #fafafa; |
| | | border: 1px dashed #d9d9d9; |
| | | border-radius: 2px; |
| | | cursor: pointer; |
| | | -webkit-transition: border-color 0.3s; |
| | | transition: border-color 0.3s; |
| | | } |
| | | ::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) { |
| | | color: #ffc53d; |
| | | border-color: white; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div ref="boxOutWrap" class="boxOutWrap"> |
| | | <div ref="boxForm" class="boxForm"> |
| | | <a-card :bordered="false" :bodyStyle="tstyle"> |
| | | |
| | | <div class="table-page-search-wrapper" v-if="hasPerm('WmsWarehouse:page')"> |
| | | <a-form layout="inline"> |
| | | <a-row :gutter="48"> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="ä»åºç¼å·"> |
| | | <a-input v-model="queryParam.code" allow-clear placeholder="请è¾å
¥ä»åºç¼å·"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="ä»åºåç§°"> |
| | | <a-input v-model="queryParam.name" allow-clear placeholder="请è¾å
¥ä»åºåç§°"/> |
| | | </a-form-item> |
| | | </a-col><template v-if="advanced"> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="ä»åºå°å"> |
| | | <a-input v-model="queryParam.address" allow-clear placeholder="请è¾å
¥ä»åºå°å"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="å·¥åç¼å·"> |
| | | <a-input v-model="queryParam.factoryCode" allow-clear placeholder="请è¾å
¥å·¥åç¼å·"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="é¿"> |
| | | <a-input v-model="queryParam.length" allow-clear placeholder="请è¾å
¥é¿"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="宽"> |
| | | <a-input v-model="queryParam.width" allow-clear placeholder="请è¾å
¥å®½"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="é«"> |
| | | <a-input v-model="queryParam.height" allow-clear placeholder="请è¾å
¥é«"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="åºæ¬åå
"> |
| | | <a-input v-model="queryParam.baseUnit" allow-clear placeholder="请è¾å
¥åºæ¬åå
"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="å®ä½"> |
| | | <a-input v-model="queryParam.position" allow-clear placeholder="请è¾å
¥å®ä½"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æ¯å¦ç¦ç¨"> |
| | | <a-select :allowClear="true" style="width: 100%" v-model="queryParam.isDisabled" placeholder="è¯·éæ©æ¯å¦ç¦ç¨"> |
| | | <a-select-option v-for="(item,index) in isDisabledData" :key="index" :value="item.code">{{ item.name }}</a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | </a-col> |
| | | |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="夿³¨"> |
| | | <a-input v-model="queryParam.remarks" allow-clear placeholder="请è¾å
¥å¤æ³¨"/> |
| | | </a-form-item> |
| | | </a-col> <!--å¹´ææ¥æ¶åç§--> |
| | | <!--æ¶é´èå´--> |
| | | |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="å建æ¶é´"> |
| | | <a-range-picker style="width: 100%" :placeholder="['å¼å§æ¶é´', 'ç»ææ¶é´']" :show-time="{ |
| | | format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangecreatedTime"/> |
| | | |
| | | </a-form-item> |
| | | </a-col> |
| | | <!--å¹´ææ¥æ¶åç§--> |
| | | <!--æ¶é´èå´--> |
| | | |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æ´æ°æ¶é´"> |
| | | <a-range-picker style="width: 100%" :placeholder="['å¼å§æ¶é´', 'ç»ææ¶é´']" :show-time="{ |
| | | format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangeupdatedTime"/> |
| | | |
| | | </a-form-item> |
| | | </a-col> |
| | | |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="å建è
åç§°"> |
| | | <a-input v-model="queryParam.createdUserName" allow-clear placeholder="请è¾å
¥å建è
åç§°"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="ä¿®æ¹è
åç§°"> |
| | | <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="请è¾å
¥ä¿®æ¹è
åç§°"/> |
| | | </a-form-item> |
| | | </a-col> </template> |
| | | |
| | | <a-col :md="8" :sm="24" > |
| | | <span class="table-page-search-submitButtons"> |
| | | <a-button type="primary" @click="$refs.table.refresh(true)" >æ¥è¯¢</a-button> |
| | | <a-button style="margin-left: 8px" @click="() => queryParam = {}">éç½®</a-button> |
| | | <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? 'æ¶èµ·' : 'å±å¼' }} |
| | | <a-icon :type="advanced ? 'up' : 'down'"/> |
| | | </a> |
| | | </span> |
| | | </a-col> |
| | | |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | </a-card> |
| | | </div> |
| | | <a-card :bordered="false"> |
| | | <s-table |
| | | ref="table" |
| | | :columns="columns" |
| | | :data="loadData" |
| | | :alert="true" |
| | | @changeTablePage="pageInfo = $event" |
| | | :scroll="{x: true,y:tableHeight}" |
| | | :rowKey="(record) => record.id" |
| | | :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"> |
| | | <template class="table-operator" slot="operator" v-if="hasPerm('WmsWarehouse:add')" > |
| | | <div ref="actionBar" class="actionBar"> |
| | | <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()"> |
| | | 导å
¥ |
| | | </a-button> |
| | | <a-button type="info" v-if="hasPerm('WmsWarehouse:exportExcel')" icon="download" @click="WmsWarehouseToExcel()"> |
| | | å¯¼åº |
| | | </a-button> |
| | | <a-button type="primary" v-if="hasPerm('WmsWarehouse:add')" icon="plus" @click="$refs.addForm.add()">æ°å¢ä»åºè¡¨</a-button> |
| | | </div> |
| | | </template> |
| | | <span slot="isDisabledscopedSlots" slot-scope="text"> |
| | | <div v-if="text===true "> |
| | | <a-tag color="green">æ¯</a-tag> |
| | | </div> |
| | | <div v-else-if="text==false"> |
| | | <a-tag color="volcano">å¦</a-tag> |
| | | </div> |
| | | <div v-else=""></div> |
| | | </span> |
| | | <span slot="action" slot-scope="text, record"> |
| | | |
| | | <a v-if="hasPerm('WmsWarehouse:edit')" @click="$refs.editForm.edit(record)">ç¼è¾</a> |
| | | <a-divider type="vertical" v-if="hasPerm('WmsWarehouse:edit') & hasPerm('WmsWarehouse:delete')"/> |
| | | <a-popconfirm v-if="hasPerm('WmsWarehouse:delete')" placement="topRight" title="确认å é¤ï¼" @confirm="() => WmsWarehouseDelete(record)"> |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </span> |
| | | </s-table> |
| | | <add-form ref="addForm" @ok="handleOk" /> |
| | | <edit-form ref="editForm" @ok="handleOk" /> |
| | | <excel-form ref="excelForm" @ok="handleOk" /> |
| | | </a-card> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import { STable } from '@/components' |
| | | import moment from 'moment' |
| | | import { WmsWarehousePage, WmsWarehouseDelete, WmsWarehouseToExcel } from '@/api/modular/main/WmsBase/WmsWarehouseManage' |
| | | //èªå®ä¹tableé«åº¦ |
| | | import setTableHtMixin from '@/mixins/handleTableHt.js' |
| | | import addForm from './addForm.vue' |
| | | import { exportExcel } from '@/utils/exportToExcel' |
| | | import { downloadFile } from '@/utils/util' |
| | | import editForm from './editForm.vue' |
| | | import excelForm from './excelForm.vue' |
| | | export default { |
| | | mixins: [setTableHtMixin], |
| | | components: { |
| | | STable, |
| | | addForm, |
| | | editForm, |
| | | excelForm |
| | | }, |
| | | data () { |
| | | return { |
| | | advanced: false, // é«çº§æç´¢ å±å¼/å
³é |
| | | queryParam: {}, |
| | | pageInfo: { |
| | | current: 1, |
| | | pageSize: 10 |
| | | }, |
| | | columns: [ |
| | | { |
| | | title:'åºå·', |
| | | width: '60px', |
| | | align: 'center', |
| | | customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}` |
| | | }, |
| | | { |
| | | title: 'ä»åºç¼å·', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'code' |
| | | }, |
| | | { |
| | | title: 'ä»åºåç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'name' |
| | | }, |
| | | { |
| | | title: 'ä»åºå°å', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'address' |
| | | }, |
| | | { |
| | | title: 'å·¥åç¼å·', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'factoryCode' |
| | | }, |
| | | { |
| | | title: 'é¿', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'length' |
| | | }, |
| | | { |
| | | title: '宽', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'width' |
| | | }, |
| | | { |
| | | title: 'é«', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'height' |
| | | }, |
| | | { |
| | | title: 'åºæ¬åå
', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'baseUnit' |
| | | }, |
| | | { |
| | | title: 'å®ä½', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'position' |
| | | }, |
| | | { |
| | | title: 'æ¯å¦ç¦ç¨', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'isDisabled', |
| | | scopedSlots: { customRender: 'isDisabledscopedSlots' } |
| | | }, |
| | | { |
| | | title: '夿³¨', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'remarks' |
| | | }, |
| | | { |
| | | title: 'å建æ¶é´', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'createdTime' |
| | | }, |
| | | { |
| | | title: 'æ´æ°æ¶é´', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'updatedTime' |
| | | }, |
| | | { |
| | | title: 'å建è
åç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'createdUserName' |
| | | }, |
| | | { |
| | | title: 'ä¿®æ¹è
åç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'updatedUserName' |
| | | } |
| | | ], |
| | | tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' }, |
| | | // å è½½æ°æ®æ¹æ³ å¿
须为 Promise 对象 |
| | | loadData: parameter => { |
| | | return WmsWarehousePage(Object.assign(parameter, this.switchingDate())).then((res) => { |
| | | return res.data |
| | | }) |
| | | }, |
| | | selectedRowKeys: [], |
| | | selectedRows: [] |
| | | } |
| | | }, |
| | | created () { |
| | | if (this.hasPerm('WmsWarehouse:edit') || this.hasPerm('WmsWarehouse:delete')) { |
| | | this.columns.push({ |
| | | title: 'æä½', |
| | | width: '150px', |
| | | dataIndex: 'action', |
| | | scopedSlots: { customRender: 'action' } |
| | | }) |
| | | } |
| | | const path = this.$route.path |
| | | const columnStr = window.localStorage.getItem(path) |
| | | if(columnStr) { |
| | | var _columns = JSON.parse(columnStr) |
| | | this.columns.forEach(element => { |
| | | var fObj = _columns.find((item, index) => { |
| | | return item.dataIndex === element.dataIndex; |
| | | }) |
| | | if(fObj!=undefined && fObj!=null){ |
| | | element.checked=fObj.checked; |
| | | } |
| | | }); |
| | | } |
| | | const isDisabledOption = this.$options |
| | | this.isDisabledData = isDisabledOption.filters['dictData']('yes_true_false') |
| | | |
| | | this.handleTableHt() //è®¾ç½®ä¸»è¡¨è¡¨æ ¼é«åº¦ |
| | | window.addEventListener( |
| | | 'resize', |
| | | () => { |
| | | this.handleTableHt() // çå¬å±å¹å¤§å°æ¹åè¡¨æ ¼é«åº¦ |
| | | }, |
| | | false |
| | | ) |
| | | |
| | | }, |
| | | methods: { |
| | | moment, |
| | | /** |
| | | * æ¥è¯¢åæ°ç»è£
|
| | | */ |
| | | switchingDate () { |
| | | const obj = JSON.parse(JSON.stringify(this.queryParam)) |
| | | return obj |
| | | }, |
| | | WmsWarehouseDelete (record) { |
| | | WmsWarehouseDelete(record).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('å 餿å') |
| | | this.$refs.table.refresh() |
| | | } else { |
| | | this.$message.error('å é¤å¤±è´¥') // + res.message |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | |
| | | WmsWarehouseToExcel() { |
| | | this.loading = true |
| | | let entozh = {}; |
| | | const path = this.$route.path; |
| | | if (window.localStorage.getItem(path)) { |
| | | JSON.parse(window.localStorage.getItem(path)).forEach(item => { |
| | | if (item.dataIndex != 'action' && item.checked) { |
| | | entozh[item.dataIndex] = item.title |
| | | } |
| | | }) |
| | | } else { //ç´æ¥ç¹å¯¼åº |
| | | this.columns.forEach(item => { |
| | | if (item.dataIndex != 'action') { |
| | | entozh[item.dataIndex] = item.title |
| | | } |
| | | }) |
| | | } |
| | | WmsWarehousePage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => { |
| | | this.loading = false; |
| | | //éè¦æªåæ¥æçåæ®µ |
| | | var arrDataCutout = this.columns.filter(v => v.customCutout == true); |
| | | res.data.rows.forEach(item => { |
| | | var arrKeys = Object.keys(item); |
| | | arrKeys.forEach(key => { |
| | | var strFieldDic = key + 'Data'; |
| | | //æä¸¾è½¬å¼ |
| | | if (this[strFieldDic] && this[strFieldDic].length > 0) { |
| | | let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key])); |
| | | if (arrFieldDic.length > 0) { |
| | | item[key] = arrFieldDic[0]?.name || '没ææä¸¾å¼'; |
| | | } |
| | | } |
| | | // æ¥ææªå |
| | | if (arrDataCutout.length > 0) { |
| | | arrDataCutout.forEach(itemIn => { |
| | | if (key == itemIn.dataIndex && item[key]) { |
| | | item[key] = item[key].split(" ")[0] |
| | | } |
| | | }) |
| | | } |
| | | }); |
| | | }) |
| | | exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`) |
| | | }).catch((err) => { |
| | | this.loading = false |
| | | this.$message.error('ä¸è½½é误ï¼è·åæä»¶æµé误' + err) |
| | | }) |
| | | }, |
| | | |
| | | |
| | | toggleAdvanced () { |
| | | this.advanced = !this.advanced |
| | | this.handleTableHt() //è®¾ç½®ä¸»è¡¨è¡¨æ ¼é«åº¦ |
| | | }, |
| | | onChangecreatedTime(date, dateString) { |
| | | this.queryParam.createdTime = dateString |
| | | }, |
| | | onChangeupdatedTime(date, dateString) { |
| | | this.queryParam.updatedTime = dateString |
| | | }, |
| | | handleOk () { |
| | | this.$refs.table.refresh() |
| | | }, |
| | | onSelectChange (selectedRowKeys, selectedRows) { |
| | | this.selectedRowKeys = selectedRowKeys |
| | | this.selectedRows = selectedRows |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="less"> |
| | | .table-operator { |
| | | margin-bottom: 18px; |
| | | } |
| | | button { |
| | | margin-right: 8px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core; |
| | | using Admin.NET.Core.Service; |
| | | using System.ComponentModel.DataAnnotations; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | |
| | | /// <summary> |
| | | /// å
è£
å
³ç³»åºç¡è¡¨æ¥è¯¢åæ° |
| | | /// </summary> |
| | | public class WmsContainerPackagingSearch : PageInputBase |
| | | { |
| | | /// <summary> |
| | | /// 容å¨ç±»åID |
| | | /// </summary> |
| | | public virtual long? ContainerTypeId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 容å¨ç±»ååç§° |
| | | /// </summary> |
| | | public virtual string ContainerTypeName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»åID |
| | | /// </summary> |
| | | public virtual long? MaterialTypeId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»åç¼å· |
| | | /// </summary> |
| | | public virtual string MaterialTypeCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»ååç§° |
| | | /// </summary> |
| | | public virtual string MaterialTypeName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æå®¹å¨å®¹é |
| | | /// </summary> |
| | | public virtual decimal? BoxQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public virtual List<string> CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public virtual List<string> UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public virtual string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public virtual string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å
è£
å
³ç³»åºç¡è¡¨ä¸å页æ¥è¯¢åæ° |
| | | /// </summary> |
| | | public class WmsContainerPackagingSearchNonPage : PageInputNonPageBase |
| | | { |
| | | /// <summary> |
| | | /// 容å¨ç±»åID |
| | | /// </summary> |
| | | public virtual long? ContainerTypeId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 容å¨ç±»ååç§° |
| | | /// </summary> |
| | | public virtual string ContainerTypeName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»åID |
| | | /// </summary> |
| | | public virtual long? MaterialTypeId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»åç¼å· |
| | | /// </summary> |
| | | public virtual string MaterialTypeCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»ååç§° |
| | | /// </summary> |
| | | public virtual string MaterialTypeName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æå®¹å¨å®¹é |
| | | /// </summary> |
| | | public virtual decimal? BoxQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public virtual List<DateTimeOffset>? CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public virtual List<DateTimeOffset>? UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public virtual string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public virtual string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å
è£
å
³ç³»åºç¡è¡¨è¾å
¥åæ° |
| | | /// </summary> |
| | | public class WmsContainerPackagingInput |
| | | { |
| | | /// <summary> |
| | | /// 容å¨ç±»åID |
| | | /// </summary> |
| | | public virtual long? ContainerTypeId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 容å¨ç±»ååç§° |
| | | /// </summary> |
| | | public virtual string ContainerTypeName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»åID |
| | | /// </summary> |
| | | public virtual long? MaterialTypeId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»åç¼å· |
| | | /// </summary> |
| | | public virtual string MaterialTypeCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»ååç§° |
| | | /// </summary> |
| | | public virtual string MaterialTypeName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æå®¹å¨å®¹é |
| | | /// </summary> |
| | | public virtual decimal? BoxQty { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å
è£
å
³ç³»åºç¡è¡¨æ°å¢åæ° |
| | | /// </summary> |
| | | public class AddWmsContainerPackagingInput : WmsContainerPackagingInput |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å
è£
å
³ç³»åºç¡è¡¨å é¤åæ° |
| | | /// </summary> |
| | | public class DeleteWmsContainerPackagingInput : BaseId |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å
è£
å
³ç³»åºç¡è¡¨æ´æ°åæ° |
| | | /// </summary> |
| | | public class UpdateWmsContainerPackagingInput : WmsContainerPackagingInput |
| | | { |
| | | /// <summary> |
| | | /// Idä¸»é® |
| | | /// </summary> |
| | | [Required(ErrorMessage = "Id主é®ä¸è½ä¸ºç©º")] |
| | | public long? Id { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å
è£
å
³ç³»åºç¡è¡¨è·ååä¸ªåæ° |
| | | /// </summary> |
| | | public class QueryeWmsContainerPackagingInput : BaseId |
| | | { |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core.Util.LowCode.Dto; |
| | | using System; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | /// <summary> |
| | | /// å
è£
å
³ç³»åºç¡è¡¨è¾åºåæ° |
| | | /// </summary> |
| | | public class WmsContainerPackagingOutput |
| | | { |
| | | /// <summary> |
| | | /// 容å¨ç±»åID |
| | | /// </summary> |
| | | public long? ContainerTypeId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 容å¨ç±»ååç§° |
| | | /// </summary> |
| | | public string ContainerTypeName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»åID |
| | | /// </summary> |
| | | public long? MaterialTypeId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»åç¼å· |
| | | /// </summary> |
| | | public string MaterialTypeCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»ååç§° |
| | | /// </summary> |
| | | public string MaterialTypeName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æå®¹å¨å®¹é |
| | | /// </summary> |
| | | public decimal? BoxQty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Idä¸»é® |
| | | /// </summary> |
| | | public long? Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public DateTimeOffset? CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public DateTimeOffset? UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using System.Collections.Generic; |
| | | using System.Threading.Tasks; |
| | | using Microsoft.AspNetCore.Http; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | public interface IWmsContainerPackagingService |
| | | { |
| | | Task<WmsContainerPackagingOutput> Get([FromQuery] QueryeWmsContainerPackagingInput input); |
| | | Task<List<WmsContainerPackagingOutput>> List([FromQuery] WmsContainerPackagingInput input); |
| | | Task<PageResult<WmsContainerPackagingOutput>> Page([FromQuery] WmsContainerPackagingSearch input); |
| | | Task<List<WmsContainerPackagingOutput>> ListNonPageAsync([FromQuery] WmsContainerPackagingSearchNonPage input); |
| | | |
| | | Task Add(AddWmsContainerPackagingInput input); |
| | | Task Update(UpdateWmsContainerPackagingInput input); |
| | | Task Delete(DeleteWmsContainerPackagingInput input); |
| | | Task<int> ImportExcelAsync(IFormFile file); |
| | | IActionResult DownloadExcelTemplate(string version); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Mapster; |
| | | using Admin.NET.Core; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | public class WmsContainerPackagingMapper : IRegister |
| | | { |
| | | public void Register(TypeAdapterConfig config) |
| | | { |
| | | config.ForType<AddWmsContainerPackagingInput, WmsContainerPackaging>() |
| | | ; |
| | | config.ForType<UpdateWmsContainerPackagingInput, WmsContainerPackaging>() |
| | | ; |
| | | config.ForType<WmsContainerPackaging, WmsContainerPackagingOutput>() |
| | | ; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.DatabaseAccessor.Extensions; |
| | | using Furion.DependencyInjection; |
| | | using Furion.DynamicApiController; |
| | | using Furion.FriendlyException; |
| | | using Admin.NET.Core; |
| | | using Mapster; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using System.Linq.Dynamic.Core; |
| | | using Microsoft.AspNetCore.Http; |
| | | using System.Text; |
| | | using System.Web; |
| | | using System.ComponentModel; |
| | | using System.Data; |
| | | namespace Admin.NET.Application |
| | | { |
| | | /// <summary> |
| | | /// å
è£
å
³ç³»åºç¡è¡¨æå¡ |
| | | /// </summary> |
| | | [ApiDescriptionSettings("WmsBase", Name = "WmsContainerPackaging", Order = 100)] |
| | | [Route("api")] |
| | | public class WmsContainerPackagingService : IWmsContainerPackagingService, IDynamicApiController, ITransient |
| | | { |
| | | private readonly IRepository<WmsContainerPackaging,MasterDbContextLocator> _wmsContainerPackagingRep; |
| | | private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep; |
| | | private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep; |
| | | private readonly ISysExcelTemplateService _sysExcelTemplateService; |
| | | private readonly static object _lock = new(); |
| | | |
| | | public WmsContainerPackagingService( |
| | | IRepository<WmsContainerPackaging,MasterDbContextLocator> wmsContainerPackagingRep |
| | | ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep |
| | | ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep |
| | | ,ISysExcelTemplateService sysExcelTemplateService |
| | | ) |
| | | { |
| | | _wmsContainerPackagingRep = wmsContainerPackagingRep; |
| | | _sysDictTypeRep = sysDictTypeRep; |
| | | _sysDictDataRep = sysDictDataRep; |
| | | _sysExcelTemplateService = sysExcelTemplateService; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å页æ¥è¯¢å
è£
å
³ç³»åºç¡è¡¨ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsContainerPackaging/page")] |
| | | public async Task<PageResult<WmsContainerPackagingOutput>> Page([FromQuery] WmsContainerPackagingSearch input) |
| | | { |
| | | var wmsContainerPackagings = await _wmsContainerPackagingRep.DetachedEntities |
| | | .Where(input.ContainerTypeId != null, u => u.ContainerTypeId == input.ContainerTypeId) |
| | | .Where(!string.IsNullOrEmpty(input.ContainerTypeName), u => u.ContainerTypeName == input.ContainerTypeName) |
| | | .Where(input.MaterialTypeId != null, u => u.MaterialTypeId == input.MaterialTypeId) |
| | | .Where(!string.IsNullOrEmpty(input.MaterialTypeCode), u => u.MaterialTypeCode == input.MaterialTypeCode) |
| | | .Where(!string.IsNullOrEmpty(input.MaterialTypeName), u => u.MaterialTypeName == input.MaterialTypeName) |
| | | .Where(input.BoxQty != null, u => u.BoxQty == input.BoxQty) |
| | | .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1])) |
| | | .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1])) |
| | | .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName) |
| | | .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName) |
| | | .OrderBy(PageInputOrder.OrderBuilder<WmsContainerPackagingSearch>(input)) |
| | | .ProjectToType<WmsContainerPackagingOutput>() |
| | | .ToADPagedListAsync(input.PageNo, input.PageSize); |
| | | return wmsContainerPackagings; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä¸å页æ¥è¯¢å
è£
å
³ç³»åºç¡è¡¨å表 |
| | | /// </summary> |
| | | /// <param name="input">å
è£
å
³ç³»åºç¡è¡¨æ¥è¯¢åæ°</param> |
| | | /// <returns>(å
è£
å
³ç³»åºç¡è¡¨)å®ä¾å表</returns> |
| | | [HttpGet("WmsContainerPackaging/listNonPage")] |
| | | public async Task<List<WmsContainerPackagingOutput>> ListNonPageAsync([FromQuery] WmsContainerPackagingSearchNonPage input) |
| | | { |
| | | var pContainerTypeId = input.ContainerTypeId; |
| | | var pContainerTypeName = input.ContainerTypeName?.Trim() ?? ""; |
| | | var pMaterialTypeId = input.MaterialTypeId; |
| | | var pMaterialTypeCode = input.MaterialTypeCode?.Trim() ?? ""; |
| | | var pMaterialTypeName = input.MaterialTypeName?.Trim() ?? ""; |
| | | var pBoxQty = input.BoxQty; |
| | | var pCreatedTime = input.CreatedTime; |
| | | var pUpdatedTime = input.UpdatedTime; |
| | | var pCreatedUserName = input.CreatedUserName?.Trim() ?? ""; |
| | | var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? ""; |
| | | var wmsContainerPackagings = await _wmsContainerPackagingRep.DetachedEntities |
| | | .Where(pContainerTypeId != null, u => u.ContainerTypeId == pContainerTypeId) |
| | | .Where(!string.IsNullOrEmpty(pContainerTypeName), u => u.ContainerTypeName == pContainerTypeName) |
| | | .Where(pMaterialTypeId != null, u => u.MaterialTypeId == pMaterialTypeId) |
| | | .Where(!string.IsNullOrEmpty(pMaterialTypeCode), u => u.MaterialTypeCode == pMaterialTypeCode) |
| | | .Where(!string.IsNullOrEmpty(pMaterialTypeName), u => u.MaterialTypeName == pMaterialTypeName) |
| | | .Where(pBoxQty != null, u => u.BoxQty == pBoxQty) |
| | | .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1])) |
| | | .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1])) |
| | | .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName) |
| | | .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName) |
| | | .OrderBy(PageInputOrder.OrderNonPageBuilder(input)) |
| | | .ProjectToType<WmsContainerPackagingOutput>() |
| | | .ToListAsync(); |
| | | return wmsContainerPackagings; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åå
è£
å
³ç³»åºç¡è¡¨ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsContainerPackaging/detail")] |
| | | public async Task<WmsContainerPackagingOutput> Get([FromQuery] QueryeWmsContainerPackagingInput input) |
| | | { |
| | | return (await _wmsContainerPackagingRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsContainerPackagingOutput>(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åå
è£
å
³ç³»åºç¡è¡¨å表 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsContainerPackaging/list")] |
| | | public async Task<List<WmsContainerPackagingOutput>> List([FromQuery] WmsContainerPackagingInput input) |
| | | { |
| | | return await _wmsContainerPackagingRep.DetachedEntities.ProjectToType<WmsContainerPackagingOutput>().ToListAsync(); |
| | | } |
| | | |
| | | #region å¢ãå ãæ¹ |
| | | |
| | | /// <summary> |
| | | /// å¢å å
è£
å
³ç³»åºç¡è¡¨ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsContainerPackaging/add")] |
| | | public async Task Add(AddWmsContainerPackagingInput input) |
| | | { |
| | | var wmsContainerPackaging = input.Adapt<WmsContainerPackaging>(); |
| | | //éªè¯ |
| | | await CheckExisit(wmsContainerPackaging); |
| | | |
| | | wmsContainerPackaging.CreatedUserId = wmsContainerPackaging.UpdatedUserId = SysHelper.GetUserId(); |
| | | wmsContainerPackaging.CreatedUserName = wmsContainerPackaging.UpdatedUserName = SysHelper.GetUserName(); |
| | | wmsContainerPackaging.CreatedTime = wmsContainerPackaging.UpdatedTime = SysHelper.GetNowTime(); |
| | | await _wmsContainerPackagingRep.InsertAsync(wmsContainerPackaging); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å é¤å
è£
å
³ç³»åºç¡è¡¨ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsContainerPackaging/delete")] |
| | | public async Task Delete(DeleteWmsContainerPackagingInput input) |
| | | { |
| | | var wmsContainerPackaging = await _wmsContainerPackagingRep.FirstOrDefaultAsync(u => u.Id == input.Id); |
| | | await _wmsContainerPackagingRep.DeleteAsync(wmsContainerPackaging); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°å
è£
å
³ç³»åºç¡è¡¨ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsContainerPackaging/edit")] |
| | | public async Task Update(UpdateWmsContainerPackagingInput input) |
| | | { |
| | | var isExist = await _wmsContainerPackagingRep.AnyAsync(u => u.Id == input.Id, false); |
| | | if (!isExist) throw Oops.Oh(ErrorCode.D1002); |
| | | |
| | | var wmsContainerPackaging = input.Adapt<WmsContainerPackaging>(); |
| | | //éªè¯ |
| | | await CheckExisit(wmsContainerPackaging,true); |
| | | |
| | | wmsContainerPackaging.UpdatedUserId = SysHelper.GetUserId(); |
| | | wmsContainerPackaging.UpdatedUserName = SysHelper.GetUserName(); |
| | | wmsContainerPackaging.UpdatedTime = SysHelper.GetNowTime(); |
| | | await _wmsContainerPackagingRep.UpdateAsync(wmsContainerPackaging,ignoreNullValues:true); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 导å
¥ |
| | | |
| | | /// <summary> |
| | | /// Excel模æ¿å¯¼å
¥å
è£
å
³ç³»åºç¡è¡¨åè½ |
| | | /// </summary> |
| | | /// <param name="file">Excelæ¨¡æ¿æä»¶</param> |
| | | /// <returns>导å
¥çè®°å½æ°</returns> |
| | | [HttpPost("WmsContainerPackaging/importExcel")] |
| | | public async Task<int> ImportExcelAsync(IFormFile file) |
| | | { |
| | | int _HeadStartLine = 2;//第1è¡æ¯è¯´æ,第2è¡æ¯åå |
| | | int _DataStartLine = 3;//第3è¡å¼å§æ¯æ°æ® |
| | | |
| | | DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine); |
| | | var addList =await CommonImport(importDataTable, _DataStartLine); |
| | | |
| | | lock (_lock) |
| | | { |
| | | _wmsContainerPackagingRep.InsertAsync(addList); |
| | | |
| | | } |
| | | await Task.CompletedTask; |
| | | return addList.Count; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// DataTable转æ¢å®ä½å¯¹è±¡å表 |
| | | /// </summary> |
| | | /// <param name="dataTable"></param> |
| | | /// <param name="dataStartLine">模çååå¼å§è¡</param> |
| | | /// <returns></returns> |
| | | private async Task<List<WmsContainerPackaging>> CommonImport(DataTable dataTable, int dataStartLine) |
| | | { |
| | | |
| | | var details = new List<WmsContainerPackaging>(); |
| | | int index = dataStartLine;//模çååå¼å§è¡ |
| | | foreach (System.Data.DataRow row in dataTable.Rows) |
| | | { |
| | | index++; |
| | | |
| | | //导å
¥æ¨¡çå®å¶å代ç ï¼æ¿æ¢æ¨¡ç使ç¨ï¼ |
| | | |
| | | var addItem = new WmsContainerPackaging() |
| | | { |
| | | CreatedTime = SysHelper.GetNowTime(), |
| | | CreatedUserId = SysHelper.GetUserId(), |
| | | CreatedUserName = SysHelper.GetUserName(), |
| | | UpdatedTime = SysHelper.GetNowTime(), |
| | | UpdatedUserId = SysHelper.GetUserId(), |
| | | UpdatedUserName = SysHelper.GetUserName() |
| | | }; |
| | | #region å®ä¹åé |
| | | var _ContainerTypeId = "";//容å¨ç±»åID |
| | | var _ContainerTypeName = "";//容å¨ç±»ååç§° |
| | | var _MaterialTypeId = "";//ç©æç±»åID |
| | | var _MaterialTypeCode = "";//ç©æç±»åç¼å· |
| | | var _MaterialTypeName = "";//ç©æç±»ååç§° |
| | | var _BoxQty = "";//ç©æå®¹å¨å®¹é |
| | | var _Id = "";//Idä¸»é® |
| | | #endregion |
| | | |
| | | |
| | | #region åå¼ |
| | | _ContainerTypeId = row["容å¨ç±»åID"]?.ToString() ; |
| | | _ContainerTypeName = row["容å¨ç±»ååç§°"]?.ToString() ; |
| | | _MaterialTypeId = row["ç©æç±»åID"]?.ToString() ; |
| | | _MaterialTypeCode = row["ç©æç±»åç¼å·"]?.ToString() ; |
| | | _MaterialTypeName = row["ç©æç±»ååç§°"]?.ToString() ; |
| | | _BoxQty = row["ç©æå®¹å¨å®¹é"]?.ToString() ; |
| | | _Id = row["Id主é®"]?.ToString() ; |
| | | #endregion |
| | | |
| | | |
| | | #region éªè¯ |
| | | if(!string.IsNullOrEmpty(_ContainerTypeId)) |
| | | { |
| | | if (!long.TryParse(_ContainerTypeId, out long outContainerTypeId)&&!string.IsNullOrEmpty(_ContainerTypeId)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[容å¨ç±»åID]{_ContainerTypeId}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outContainerTypeId <= 0&&!string.IsNullOrEmpty(_ContainerTypeId)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[容å¨ç±»åID]{_ContainerTypeId}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.ContainerTypeId = outContainerTypeId; |
| | | } |
| | | |
| | | } |
| | | if(!string.IsNullOrEmpty(_ContainerTypeName)) |
| | | { |
| | | addItem.ContainerTypeName = (string)_ContainerTypeName; |
| | | } |
| | | if(!string.IsNullOrEmpty(_MaterialTypeId)) |
| | | { |
| | | if (!long.TryParse(_MaterialTypeId, out long outMaterialTypeId)&&!string.IsNullOrEmpty(_MaterialTypeId)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[ç©æç±»åID]{_MaterialTypeId}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outMaterialTypeId <= 0&&!string.IsNullOrEmpty(_MaterialTypeId)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[ç©æç±»åID]{_MaterialTypeId}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.MaterialTypeId = outMaterialTypeId; |
| | | } |
| | | |
| | | } |
| | | if(!string.IsNullOrEmpty(_MaterialTypeCode)) |
| | | { |
| | | addItem.MaterialTypeCode = (string)_MaterialTypeCode; |
| | | } |
| | | if(!string.IsNullOrEmpty(_MaterialTypeName)) |
| | | { |
| | | addItem.MaterialTypeName = (string)_MaterialTypeName; |
| | | } |
| | | if(!string.IsNullOrEmpty(_BoxQty)) |
| | | { |
| | | if (!decimal.TryParse(_BoxQty, out decimal outBoxQty)&&!string.IsNullOrEmpty(_BoxQty)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[ç©æå®¹å¨å®¹é]{_BoxQty}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outBoxQty <= 0&&!string.IsNullOrEmpty(_BoxQty)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[ç©æå®¹å¨å®¹é]{_BoxQty}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.BoxQty = outBoxQty; |
| | | } |
| | | |
| | | } |
| | | if(!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[Id主é®]{_Id}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outId <= 0&&!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[Id主é®]{_Id}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.Id = outId; |
| | | } |
| | | |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | details.Add(addItem); |
| | | } |
| | | //éªé |
| | | await CheckExisitForImport(details); |
| | | |
| | | return details; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®çæ¬ä¸è½½å
è£
å
³ç³»åºç¡è¡¨çExcel导å
¥æ¨¡æ¿ |
| | | /// </summary> |
| | | /// <param name="version">模æ¿çæ¬</param> |
| | | /// <returns>ä¸è½½çæ¨¡æ¿æä»¶</returns> |
| | | [HttpGet("WmsContainerPackaging/downloadExcelTemplate")] |
| | | public IActionResult DownloadExcelTemplate([FromQuery] string version) |
| | | { |
| | | string _path = TemplateConst.EXCEL_TEMPLATEFILE_导å
¥æ¨¡çè·¯å¾ + $"\\WmsContainerPackaging{TemplateConst.EXCEL_TEMPLATEFILE_导å
¥æ¨¡çåç§°åç¼}.xlsx"; |
| | | var fileName = HttpUtility.UrlEncode($"导å
¥æ¨¡æ¿(å
è£
å
³ç³»åºç¡è¡¨).xlsx", Encoding.GetEncoding("UTF-8")); |
| | | return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName }; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ç§ææ¹æ³ |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®èå主é®éªè¯æ°æ®æ¯å¦å·²åå¨-æ°æ®åº |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <param name="isEdit"></param> |
| | | /// <returns></returns> |
| | | private async Task CheckExisit( WmsContainerPackaging input,bool isEdit=false) |
| | | { |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | //没æé
ç½®èå主é®ï¼ä¸éè¦éªé |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®èå主é®éªè¯æ°æ®æ¯å¦å·²åå¨-导å
¥æ¶éªè¯ |
| | | /// </summary> |
| | | /// <param name="inputs"></param> |
| | | /// <returns></returns> |
| | | private async Task CheckExisitForImport(List<WmsContainerPackaging> inputs) |
| | | { |
| | | //æ ¹æ®èå主é®éªè¯è¡¨æ ¼ä¸ä¸æ¯å¦å·²åå¨ç¸åæ°æ® |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core; |
| | | using Admin.NET.Core.Service; |
| | | using System.ComponentModel.DataAnnotations; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£åç®¡çæ¥è¯¢åæ° |
| | | /// </summary> |
| | | public class WmsSubstituteGoodSearch : PageInputBase |
| | | { |
| | | /// <summary> |
| | | /// æ¿ä»£ç¼å· |
| | | /// </summary> |
| | | public virtual string SubstituteCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç¼å· |
| | | /// </summary> |
| | | public virtual string MaterialCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æåç§° |
| | | /// </summary> |
| | | public virtual string MaterialName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£åç©æç¼å· |
| | | /// </summary> |
| | | public virtual string SubstituteMaterialCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£åç©æåç§° |
| | | /// </summary> |
| | | public virtual string SubstituteMaterialName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£æ¬¡åº |
| | | /// </summary> |
| | | public virtual int? SubstituteIndex { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | public virtual bool? IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public virtual List<string> CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public virtual List<string> UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public virtual string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public virtual string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£å管çä¸å页æ¥è¯¢åæ° |
| | | /// </summary> |
| | | public class WmsSubstituteGoodSearchNonPage : PageInputNonPageBase |
| | | { |
| | | /// <summary> |
| | | /// æ¿ä»£ç¼å· |
| | | /// </summary> |
| | | public virtual string SubstituteCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç¼å· |
| | | /// </summary> |
| | | public virtual string MaterialCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æåç§° |
| | | /// </summary> |
| | | public virtual string MaterialName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£åç©æç¼å· |
| | | /// </summary> |
| | | public virtual string SubstituteMaterialCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£åç©æåç§° |
| | | /// </summary> |
| | | public virtual string SubstituteMaterialName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£æ¬¡åº |
| | | /// </summary> |
| | | public virtual int? SubstituteIndex { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | public virtual bool? IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public virtual List<DateTimeOffset>? CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public virtual List<DateTimeOffset>? UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public virtual string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public virtual string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£å管çè¾å
¥åæ° |
| | | /// </summary> |
| | | public class WmsSubstituteGoodInput |
| | | { |
| | | /// <summary> |
| | | /// æ¿ä»£ç¼å· |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æ¿ä»£ç¼å·ä¸è½ä¸ºç©º")] |
| | | public virtual string SubstituteCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç¼å· |
| | | /// </summary> |
| | | [Required(ErrorMessage = "ç©æç¼å·ä¸è½ä¸ºç©º")] |
| | | public virtual string MaterialCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æåç§° |
| | | /// </summary> |
| | | [Required(ErrorMessage = "ç©æåç§°ä¸è½ä¸ºç©º")] |
| | | public virtual string MaterialName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£åç©æç¼å· |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æ¿ä»£åç©æç¼å·ä¸è½ä¸ºç©º")] |
| | | public virtual string SubstituteMaterialCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£åç©æåç§° |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æ¿ä»£åç©æåç§°ä¸è½ä¸ºç©º")] |
| | | public virtual string SubstituteMaterialName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£æ¬¡åº |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æ¿ä»£æ¬¡åºä¸è½ä¸ºç©º")] |
| | | public virtual int SubstituteIndex { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æ¯å¦ç¦ç¨ä¸è½ä¸ºç©º")] |
| | | public virtual bool IsDisabled { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£åç®¡çæ°å¢åæ° |
| | | /// </summary> |
| | | public class AddWmsSubstituteGoodInput : WmsSubstituteGoodInput |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£å管çå é¤åæ° |
| | | /// </summary> |
| | | public class DeleteWmsSubstituteGoodInput : BaseId |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£åç®¡çæ´æ°åæ° |
| | | /// </summary> |
| | | public class UpdateWmsSubstituteGoodInput : WmsSubstituteGoodInput |
| | | { |
| | | /// <summary> |
| | | /// Idä¸»é® |
| | | /// </summary> |
| | | [Required(ErrorMessage = "Id主é®ä¸è½ä¸ºç©º")] |
| | | public long? Id { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£å管çè·ååä¸ªåæ° |
| | | /// </summary> |
| | | public class QueryeWmsSubstituteGoodInput : BaseId |
| | | { |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core.Util.LowCode.Dto; |
| | | using System; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | /// <summary> |
| | | /// æ¿ä»£å管çè¾åºåæ° |
| | | /// </summary> |
| | | public class WmsSubstituteGoodOutput |
| | | { |
| | | /// <summary> |
| | | /// æ¿ä»£ç¼å· |
| | | /// </summary> |
| | | public string SubstituteCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç¼å· |
| | | /// </summary> |
| | | public string MaterialCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æåç§° |
| | | /// </summary> |
| | | public string MaterialName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£åç©æç¼å· |
| | | /// </summary> |
| | | public string SubstituteMaterialCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£åç©æåç§° |
| | | /// </summary> |
| | | public string SubstituteMaterialName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¿ä»£æ¬¡åº |
| | | /// </summary> |
| | | public int SubstituteIndex { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | public bool IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Idä¸»é® |
| | | /// </summary> |
| | | public long? Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public DateTimeOffset? CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public DateTimeOffset? UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using System.Collections.Generic; |
| | | using System.Threading.Tasks; |
| | | using Microsoft.AspNetCore.Http; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | public interface IWmsSubstituteGoodService |
| | | { |
| | | Task<WmsSubstituteGoodOutput> Get([FromQuery] QueryeWmsSubstituteGoodInput input); |
| | | Task<List<WmsSubstituteGoodOutput>> List([FromQuery] WmsSubstituteGoodInput input); |
| | | Task<PageResult<WmsSubstituteGoodOutput>> Page([FromQuery] WmsSubstituteGoodSearch input); |
| | | Task<List<WmsSubstituteGoodOutput>> ListNonPageAsync([FromQuery] WmsSubstituteGoodSearchNonPage input); |
| | | |
| | | Task Add(AddWmsSubstituteGoodInput input); |
| | | Task Update(UpdateWmsSubstituteGoodInput input); |
| | | Task Delete(DeleteWmsSubstituteGoodInput input); |
| | | Task<int> ImportExcelAsync(IFormFile file); |
| | | IActionResult DownloadExcelTemplate(string version); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Mapster; |
| | | using Admin.NET.Core; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | public class WmsSubstituteGoodMapper : IRegister |
| | | { |
| | | public void Register(TypeAdapterConfig config) |
| | | { |
| | | config.ForType<AddWmsSubstituteGoodInput, WmsSubstituteGood>() |
| | | ; |
| | | config.ForType<UpdateWmsSubstituteGoodInput, WmsSubstituteGood>() |
| | | ; |
| | | config.ForType<WmsSubstituteGood, WmsSubstituteGoodOutput>() |
| | | ; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.DatabaseAccessor.Extensions; |
| | | using Furion.DependencyInjection; |
| | | using Furion.DynamicApiController; |
| | | using Furion.FriendlyException; |
| | | using Admin.NET.Core; |
| | | using Mapster; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using System.Linq.Dynamic.Core; |
| | | using Microsoft.AspNetCore.Http; |
| | | using System.Text; |
| | | using System.Web; |
| | | using System.ComponentModel; |
| | | using System.Data; |
| | | namespace Admin.NET.Application |
| | | { |
| | | /// <summary> |
| | | /// æ¿ä»£å管çæå¡ |
| | | /// </summary> |
| | | [ApiDescriptionSettings("WmsBase", Name = "WmsSubstituteGood", Order = 100)] |
| | | [Route("api")] |
| | | public class WmsSubstituteGoodService : IWmsSubstituteGoodService, IDynamicApiController, ITransient |
| | | { |
| | | private readonly IRepository<WmsSubstituteGood,MasterDbContextLocator> _wmsSubstituteGoodRep; |
| | | private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep; |
| | | private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep; |
| | | private readonly ISysExcelTemplateService _sysExcelTemplateService; |
| | | private readonly static object _lock = new(); |
| | | |
| | | public WmsSubstituteGoodService( |
| | | IRepository<WmsSubstituteGood,MasterDbContextLocator> wmsSubstituteGoodRep |
| | | ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep |
| | | ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep |
| | | ,ISysExcelTemplateService sysExcelTemplateService |
| | | ) |
| | | { |
| | | _wmsSubstituteGoodRep = wmsSubstituteGoodRep; |
| | | _sysDictTypeRep = sysDictTypeRep; |
| | | _sysDictDataRep = sysDictDataRep; |
| | | _sysExcelTemplateService = sysExcelTemplateService; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å页æ¥è¯¢æ¿ä»£å管ç |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsSubstituteGood/page")] |
| | | public async Task<PageResult<WmsSubstituteGoodOutput>> Page([FromQuery] WmsSubstituteGoodSearch input) |
| | | { |
| | | var wmsSubstituteGoods = await _wmsSubstituteGoodRep.DetachedEntities |
| | | .Where(!string.IsNullOrEmpty(input.SubstituteCode), u => u.SubstituteCode == input.SubstituteCode) |
| | | .Where(!string.IsNullOrEmpty(input.MaterialCode), u => u.MaterialCode == input.MaterialCode) |
| | | .Where(!string.IsNullOrEmpty(input.MaterialName), u => u.MaterialName == input.MaterialName) |
| | | .Where(!string.IsNullOrEmpty(input.SubstituteMaterialCode), u => u.SubstituteMaterialCode == input.SubstituteMaterialCode) |
| | | .Where(!string.IsNullOrEmpty(input.SubstituteMaterialName), u => u.SubstituteMaterialName == input.SubstituteMaterialName) |
| | | .Where(input.SubstituteIndex != null, u => u.SubstituteIndex == input.SubstituteIndex) |
| | | .Where(input.IsDisabled != null, u => u.IsDisabled == input.IsDisabled) |
| | | .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1])) |
| | | .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1])) |
| | | .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName) |
| | | .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName) |
| | | .OrderBy(PageInputOrder.OrderBuilder<WmsSubstituteGoodSearch>(input)) |
| | | .ProjectToType<WmsSubstituteGoodOutput>() |
| | | .ToADPagedListAsync(input.PageNo, input.PageSize); |
| | | return wmsSubstituteGoods; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä¸å页æ¥è¯¢æ¿ä»£å管çå表 |
| | | /// </summary> |
| | | /// <param name="input">æ¿ä»£åç®¡çæ¥è¯¢åæ°</param> |
| | | /// <returns>(æ¿ä»£å管ç)å®ä¾å表</returns> |
| | | [HttpGet("WmsSubstituteGood/listNonPage")] |
| | | public async Task<List<WmsSubstituteGoodOutput>> ListNonPageAsync([FromQuery] WmsSubstituteGoodSearchNonPage input) |
| | | { |
| | | var pSubstituteCode = input.SubstituteCode?.Trim() ?? ""; |
| | | var pMaterialCode = input.MaterialCode?.Trim() ?? ""; |
| | | var pMaterialName = input.MaterialName?.Trim() ?? ""; |
| | | var pSubstituteMaterialCode = input.SubstituteMaterialCode?.Trim() ?? ""; |
| | | var pSubstituteMaterialName = input.SubstituteMaterialName?.Trim() ?? ""; |
| | | var pSubstituteIndex = input.SubstituteIndex; |
| | | var pIsDisabled = input.IsDisabled; |
| | | var pCreatedTime = input.CreatedTime; |
| | | var pUpdatedTime = input.UpdatedTime; |
| | | var pCreatedUserName = input.CreatedUserName?.Trim() ?? ""; |
| | | var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? ""; |
| | | var wmsSubstituteGoods = await _wmsSubstituteGoodRep.DetachedEntities |
| | | .Where(!string.IsNullOrEmpty(pSubstituteCode), u => u.SubstituteCode == pSubstituteCode) |
| | | .Where(!string.IsNullOrEmpty(pMaterialCode), u => u.MaterialCode == pMaterialCode) |
| | | .Where(!string.IsNullOrEmpty(pMaterialName), u => u.MaterialName == pMaterialName) |
| | | .Where(!string.IsNullOrEmpty(pSubstituteMaterialCode), u => u.SubstituteMaterialCode == pSubstituteMaterialCode) |
| | | .Where(!string.IsNullOrEmpty(pSubstituteMaterialName), u => u.SubstituteMaterialName == pSubstituteMaterialName) |
| | | .Where(pSubstituteIndex != null, u => u.SubstituteIndex == pSubstituteIndex) |
| | | .Where(pIsDisabled != null, u => u.IsDisabled == pIsDisabled) |
| | | .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1])) |
| | | .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1])) |
| | | .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName) |
| | | .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName) |
| | | .OrderBy(PageInputOrder.OrderNonPageBuilder(input)) |
| | | .ProjectToType<WmsSubstituteGoodOutput>() |
| | | .ToListAsync(); |
| | | return wmsSubstituteGoods; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åæ¿ä»£å管ç |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsSubstituteGood/detail")] |
| | | public async Task<WmsSubstituteGoodOutput> Get([FromQuery] QueryeWmsSubstituteGoodInput input) |
| | | { |
| | | return (await _wmsSubstituteGoodRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsSubstituteGoodOutput>(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åæ¿ä»£å管çå表 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsSubstituteGood/list")] |
| | | public async Task<List<WmsSubstituteGoodOutput>> List([FromQuery] WmsSubstituteGoodInput input) |
| | | { |
| | | return await _wmsSubstituteGoodRep.DetachedEntities.ProjectToType<WmsSubstituteGoodOutput>().ToListAsync(); |
| | | } |
| | | |
| | | #region å¢ãå ãæ¹ |
| | | |
| | | /// <summary> |
| | | /// å¢å æ¿ä»£å管ç |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsSubstituteGood/add")] |
| | | public async Task Add(AddWmsSubstituteGoodInput input) |
| | | { |
| | | var wmsSubstituteGood = input.Adapt<WmsSubstituteGood>(); |
| | | //éªè¯ |
| | | await CheckExisit(wmsSubstituteGood); |
| | | |
| | | wmsSubstituteGood.CreatedUserId = wmsSubstituteGood.UpdatedUserId = SysHelper.GetUserId(); |
| | | wmsSubstituteGood.CreatedUserName = wmsSubstituteGood.UpdatedUserName = SysHelper.GetUserName(); |
| | | wmsSubstituteGood.CreatedTime = wmsSubstituteGood.UpdatedTime = SysHelper.GetNowTime(); |
| | | await _wmsSubstituteGoodRep.InsertAsync(wmsSubstituteGood); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å 餿¿ä»£å管ç |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsSubstituteGood/delete")] |
| | | public async Task Delete(DeleteWmsSubstituteGoodInput input) |
| | | { |
| | | var wmsSubstituteGood = await _wmsSubstituteGoodRep.FirstOrDefaultAsync(u => u.Id == input.Id); |
| | | await _wmsSubstituteGoodRep.DeleteAsync(wmsSubstituteGood); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¿ä»£å管ç |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsSubstituteGood/edit")] |
| | | public async Task Update(UpdateWmsSubstituteGoodInput input) |
| | | { |
| | | var isExist = await _wmsSubstituteGoodRep.AnyAsync(u => u.Id == input.Id, false); |
| | | if (!isExist) throw Oops.Oh(ErrorCode.D1002); |
| | | |
| | | var wmsSubstituteGood = input.Adapt<WmsSubstituteGood>(); |
| | | //éªè¯ |
| | | await CheckExisit(wmsSubstituteGood,true); |
| | | |
| | | wmsSubstituteGood.UpdatedUserId = SysHelper.GetUserId(); |
| | | wmsSubstituteGood.UpdatedUserName = SysHelper.GetUserName(); |
| | | wmsSubstituteGood.UpdatedTime = SysHelper.GetNowTime(); |
| | | await _wmsSubstituteGoodRep.UpdateAsync(wmsSubstituteGood,ignoreNullValues:true); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 导å
¥ |
| | | |
| | | /// <summary> |
| | | /// Excel模æ¿å¯¼å
¥æ¿ä»£å管çåè½ |
| | | /// </summary> |
| | | /// <param name="file">Excelæ¨¡æ¿æä»¶</param> |
| | | /// <returns>导å
¥çè®°å½æ°</returns> |
| | | [HttpPost("WmsSubstituteGood/importExcel")] |
| | | public async Task<int> ImportExcelAsync(IFormFile file) |
| | | { |
| | | int _HeadStartLine = 2;//第1è¡æ¯è¯´æ,第2è¡æ¯åå |
| | | int _DataStartLine = 3;//第3è¡å¼å§æ¯æ°æ® |
| | | |
| | | DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine); |
| | | var addList =await CommonImport(importDataTable, _DataStartLine); |
| | | |
| | | lock (_lock) |
| | | { |
| | | _wmsSubstituteGoodRep.InsertAsync(addList); |
| | | |
| | | } |
| | | await Task.CompletedTask; |
| | | return addList.Count; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// DataTable转æ¢å®ä½å¯¹è±¡å表 |
| | | /// </summary> |
| | | /// <param name="dataTable"></param> |
| | | /// <param name="dataStartLine">模çååå¼å§è¡</param> |
| | | /// <returns></returns> |
| | | private async Task<List<WmsSubstituteGood>> CommonImport(DataTable dataTable, int dataStartLine) |
| | | { |
| | | |
| | | var details = new List<WmsSubstituteGood>(); |
| | | int index = dataStartLine;//模çååå¼å§è¡ |
| | | foreach (System.Data.DataRow row in dataTable.Rows) |
| | | { |
| | | index++; |
| | | |
| | | //导å
¥æ¨¡çå®å¶å代ç ï¼æ¿æ¢æ¨¡ç使ç¨ï¼ |
| | | |
| | | var addItem = new WmsSubstituteGood() |
| | | { |
| | | CreatedTime = SysHelper.GetNowTime(), |
| | | CreatedUserId = SysHelper.GetUserId(), |
| | | CreatedUserName = SysHelper.GetUserName(), |
| | | UpdatedTime = SysHelper.GetNowTime(), |
| | | UpdatedUserId = SysHelper.GetUserId(), |
| | | UpdatedUserName = SysHelper.GetUserName() |
| | | }; |
| | | #region å®ä¹åé |
| | | var _SubstituteCode = "";//æ¿ä»£ç¼å· |
| | | var _MaterialCode = "";//ç©æç¼å· |
| | | var _MaterialName = "";//ç©æåç§° |
| | | var _SubstituteMaterialCode = "";//æ¿ä»£åç©æç¼å· |
| | | var _SubstituteMaterialName = "";//æ¿ä»£åç©æåç§° |
| | | var _SubstituteIndex = "";//æ¿ä»£æ¬¡åº |
| | | var _IsDisabled = "";//æ¯å¦ç¦ç¨ |
| | | var _Id = "";//Idä¸»é® |
| | | #endregion |
| | | |
| | | |
| | | #region åå¼ |
| | | _SubstituteCode = row["æ¿ä»£ç¼å·"]?.ToString() ; |
| | | _MaterialCode = row["ç©æç¼å·"]?.ToString() ; |
| | | _MaterialName = row["ç©æåç§°"]?.ToString() ; |
| | | _SubstituteMaterialCode = row["æ¿ä»£åç©æç¼å·"]?.ToString() ; |
| | | _SubstituteMaterialName = row["æ¿ä»£åç©æåç§°"]?.ToString() ; |
| | | _SubstituteIndex = row["æ¿ä»£æ¬¡åº"]?.ToString() ; |
| | | _IsDisabled = row["æ¯å¦ç¦ç¨"]?.ToString() ; |
| | | _Id = row["Id主é®"]?.ToString() ; |
| | | #endregion |
| | | |
| | | |
| | | #region éªè¯ |
| | | |
| | | if (string.IsNullOrEmpty(_SubstituteCode)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¿ä»£ç¼å·]{_SubstituteCode}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_SubstituteCode)) |
| | | { |
| | | addItem.SubstituteCode = (string)_SubstituteCode; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_MaterialCode)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[ç©æç¼å·]{_MaterialCode}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_MaterialCode)) |
| | | { |
| | | addItem.MaterialCode = (string)_MaterialCode; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_MaterialName)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[ç©æåç§°]{_MaterialName}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_MaterialName)) |
| | | { |
| | | addItem.MaterialName = (string)_MaterialName; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_SubstituteMaterialCode)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¿ä»£åç©æç¼å·]{_SubstituteMaterialCode}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_SubstituteMaterialCode)) |
| | | { |
| | | addItem.SubstituteMaterialCode = (string)_SubstituteMaterialCode; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_SubstituteMaterialName)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¿ä»£åç©æåç§°]{_SubstituteMaterialName}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_SubstituteMaterialName)) |
| | | { |
| | | addItem.SubstituteMaterialName = (string)_SubstituteMaterialName; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_SubstituteIndex)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¿ä»£æ¬¡åº]{_SubstituteIndex}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_SubstituteIndex)) |
| | | { |
| | | if (!int.TryParse(_SubstituteIndex, out int outSubstituteIndex)&&!string.IsNullOrEmpty(_SubstituteIndex)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¿ä»£æ¬¡åº]{_SubstituteIndex}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outSubstituteIndex <= 0&&!string.IsNullOrEmpty(_SubstituteIndex)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¿ä»£æ¬¡åº]{_SubstituteIndex}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.SubstituteIndex = outSubstituteIndex; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_IsDisabled)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¯å¦ç¦ç¨]{_IsDisabled}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_IsDisabled)) |
| | | { |
| | | if(!_IsDisabled.Equals("æ¯") && !_IsDisabled.Equals("å¦")) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¯å¦ç¦ç¨]{_IsDisabled}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | else |
| | | { |
| | | bool outIsDisabled = _IsDisabled.Equals("æ¯") ? true : false; |
| | | addItem.IsDisabled = outIsDisabled; |
| | | } |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[Id主é®]{_Id}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outId <= 0&&!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[Id主é®]{_Id}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.Id = outId; |
| | | } |
| | | |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | details.Add(addItem); |
| | | } |
| | | //éªé |
| | | await CheckExisitForImport(details); |
| | | |
| | | return details; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®çæ¬ä¸è½½æ¿ä»£å管ççExcel导å
¥æ¨¡æ¿ |
| | | /// </summary> |
| | | /// <param name="version">模æ¿çæ¬</param> |
| | | /// <returns>ä¸è½½çæ¨¡æ¿æä»¶</returns> |
| | | [HttpGet("WmsSubstituteGood/downloadExcelTemplate")] |
| | | public IActionResult DownloadExcelTemplate([FromQuery] string version) |
| | | { |
| | | string _path = TemplateConst.EXCEL_TEMPLATEFILE_导å
¥æ¨¡çè·¯å¾ + $"\\WmsSubstituteGood{TemplateConst.EXCEL_TEMPLATEFILE_导å
¥æ¨¡çåç§°åç¼}.xlsx"; |
| | | var fileName = HttpUtility.UrlEncode($"导å
¥æ¨¡æ¿(æ¿ä»£å管ç).xlsx", Encoding.GetEncoding("UTF-8")); |
| | | return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName }; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ç§ææ¹æ³ |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®èå主é®éªè¯æ°æ®æ¯å¦å·²åå¨-æ°æ®åº |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <param name="isEdit"></param> |
| | | /// <returns></returns> |
| | | private async Task CheckExisit( WmsSubstituteGood input,bool isEdit=false) |
| | | { |
| | | |
| | | |
| | | |
| | | bool isExist = false; |
| | | if (!isEdit)//æ°å¢ |
| | | { |
| | | //æ°æ®æ¯å¦åå¨éå¤ |
| | | isExist = await _wmsSubstituteGoodRep.AnyAsync(u => |
| | | u.SubstituteCode.Equals(input.SubstituteCode) |
| | | ,false); |
| | | } |
| | | else//ç¼è¾ |
| | | { |
| | | |
| | | |
| | | |
| | | //å½åç¼è¾æ°æ®ä»¥å¤æ¯å¦åå¨éå¤ |
| | | isExist = await _wmsSubstituteGoodRep.AnyAsync(u => |
| | | u.Id != input.Id |
| | | &&u.SubstituteCode.Equals(input.SubstituteCode) |
| | | ,false); |
| | | } |
| | | |
| | | |
| | | |
| | | if (isExist) throw Oops.Oh(ErrorCode.E0001); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®èå主é®éªè¯æ°æ®æ¯å¦å·²åå¨-导å
¥æ¶éªè¯ |
| | | /// </summary> |
| | | /// <param name="inputs"></param> |
| | | /// <returns></returns> |
| | | private async Task CheckExisitForImport(List<WmsSubstituteGood> inputs) |
| | | { |
| | | //æ ¹æ®èå主é®éªè¯è¡¨æ ¼ä¸ä¸æ¯å¦å·²åå¨ç¸åæ°æ® |
| | | if (inputs?.Count <= 0) |
| | | { |
| | | throw Oops.Oh($"导å
¥æ°æ®ä¸è½ä¸ºç©º"); |
| | | } |
| | | //æ°æ®æ¯å¦éå¤ |
| | | var existExcelItem = inputs.GroupBy(g => new { |
| | | g.SubstituteCode |
| | | }) |
| | | .Where(g => g.Count() > 1) |
| | | .Select(s => new { |
| | | s.Key.SubstituteCode |
| | | }).FirstOrDefault(); |
| | | if (existExcelItem != null) |
| | | { |
| | | var wmsSubstituteGood = existExcelItem.Adapt<WmsSubstituteGood>(); |
| | | var item= existExcelItem.Adapt<WmsSubstituteGood>(); |
| | | throw Oops.Oh($"导å
¥çè¡¨æ ¼ä¸,æ¿ä»£ç¼å·[{item.SubstituteCode}]å·²åå¨"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //æ ¹æ®èå主é®éªè¯æ°æ®åºä¸æ¯å¦å·²åå¨ç¸åæ°æ® |
| | | var existDBItem = await _wmsSubstituteGoodRep.DetachedEntities.FirstOrDefaultAsync(w=> |
| | | inputs.Select(s=>"" |
| | | +s.SubstituteCode |
| | | ) |
| | | .Contains("" |
| | | +w.SubstituteCode |
| | | )); |
| | | if (existDBItem != null) |
| | | { |
| | | var wmsSubstituteGood = existExcelItem.Adapt<WmsSubstituteGood>(); |
| | | var item= existExcelItem.Adapt<WmsSubstituteGood>(); |
| | | throw Oops.Oh($"ç³»ç»ä¸,æ¿ä»£ç¼å·[{item.SubstituteCode}]å·²åå¨"); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core; |
| | | using Admin.NET.Core.Service; |
| | | using System.ComponentModel.DataAnnotations; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | |
| | | /// <summary> |
| | | /// ä»åºè¡¨æ¥è¯¢åæ° |
| | | /// </summary> |
| | | public class WmsWarehouseSearch : PageInputBase |
| | | { |
| | | /// <summary> |
| | | /// ä»åºç¼å· |
| | | /// </summary> |
| | | public virtual string Code { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»åºåç§° |
| | | /// </summary> |
| | | public virtual string Name { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»åºå°å |
| | | /// </summary> |
| | | public virtual string Address { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å·¥åç¼å· |
| | | /// </summary> |
| | | public virtual string FactoryCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// é¿ |
| | | /// </summary> |
| | | public virtual decimal? Length { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 宽 |
| | | /// </summary> |
| | | public virtual decimal? Width { get; set; } |
| | | |
| | | /// <summary> |
| | | /// é« |
| | | /// </summary> |
| | | public virtual decimal? Height { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºæ¬åå
|
| | | /// </summary> |
| | | public virtual string BaseUnit { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å®ä½ |
| | | /// </summary> |
| | | public virtual string Position { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | public virtual bool? IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 夿³¨ |
| | | /// </summary> |
| | | public virtual string Remarks { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public virtual List<string> CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public virtual List<string> UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public virtual string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public virtual string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä»åºè¡¨ä¸å页æ¥è¯¢åæ° |
| | | /// </summary> |
| | | public class WmsWarehouseSearchNonPage : PageInputNonPageBase |
| | | { |
| | | /// <summary> |
| | | /// ä»åºç¼å· |
| | | /// </summary> |
| | | public virtual string Code { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»åºåç§° |
| | | /// </summary> |
| | | public virtual string Name { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»åºå°å |
| | | /// </summary> |
| | | public virtual string Address { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å·¥åç¼å· |
| | | /// </summary> |
| | | public virtual string FactoryCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// é¿ |
| | | /// </summary> |
| | | public virtual decimal? Length { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 宽 |
| | | /// </summary> |
| | | public virtual decimal? Width { get; set; } |
| | | |
| | | /// <summary> |
| | | /// é« |
| | | /// </summary> |
| | | public virtual decimal? Height { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºæ¬åå
|
| | | /// </summary> |
| | | public virtual string BaseUnit { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å®ä½ |
| | | /// </summary> |
| | | public virtual string Position { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | public virtual bool? IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 夿³¨ |
| | | /// </summary> |
| | | public virtual string Remarks { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public virtual List<DateTimeOffset>? CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public virtual List<DateTimeOffset>? UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public virtual string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public virtual string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä»åºè¡¨è¾å
¥åæ° |
| | | /// </summary> |
| | | public class WmsWarehouseInput |
| | | { |
| | | /// <summary> |
| | | /// ä»åºç¼å· |
| | | /// </summary> |
| | | [Required(ErrorMessage = "ä»åºç¼å·ä¸è½ä¸ºç©º")] |
| | | public virtual string Code { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»åºåç§° |
| | | /// </summary> |
| | | [Required(ErrorMessage = "ä»åºåç§°ä¸è½ä¸ºç©º")] |
| | | public virtual string Name { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»åºå°å |
| | | /// </summary> |
| | | public virtual string Address { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å·¥åç¼å· |
| | | /// </summary> |
| | | public virtual string FactoryCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// é¿ |
| | | /// </summary> |
| | | public virtual decimal? Length { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 宽 |
| | | /// </summary> |
| | | public virtual decimal? Width { get; set; } |
| | | |
| | | /// <summary> |
| | | /// é« |
| | | /// </summary> |
| | | public virtual decimal? Height { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºæ¬åå
|
| | | /// </summary> |
| | | public virtual string BaseUnit { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å®ä½ |
| | | /// </summary> |
| | | public virtual string Position { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æ¯å¦ç¦ç¨ä¸è½ä¸ºç©º")] |
| | | public virtual bool IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 夿³¨ |
| | | /// </summary> |
| | | public virtual string Remarks { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä»åºè¡¨æ°å¢åæ° |
| | | /// </summary> |
| | | public class AddWmsWarehouseInput : WmsWarehouseInput |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä»åºè¡¨å é¤åæ° |
| | | /// </summary> |
| | | public class DeleteWmsWarehouseInput : BaseId |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä»åºè¡¨æ´æ°åæ° |
| | | /// </summary> |
| | | public class UpdateWmsWarehouseInput : WmsWarehouseInput |
| | | { |
| | | /// <summary> |
| | | /// Idä¸»é® |
| | | /// </summary> |
| | | [Required(ErrorMessage = "Id主é®ä¸è½ä¸ºç©º")] |
| | | public long? Id { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä»åºè¡¨è·ååä¸ªåæ° |
| | | /// </summary> |
| | | public class QueryeWmsWarehouseInput : BaseId |
| | | { |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core.Util.LowCode.Dto; |
| | | using System; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | /// <summary> |
| | | /// ä»åºè¡¨è¾åºåæ° |
| | | /// </summary> |
| | | public class WmsWarehouseOutput |
| | | { |
| | | /// <summary> |
| | | /// ä»åºç¼å· |
| | | /// </summary> |
| | | public string Code { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»åºåç§° |
| | | /// </summary> |
| | | public string Name { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»åºå°å |
| | | /// </summary> |
| | | public string Address { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å·¥åç¼å· |
| | | /// </summary> |
| | | public string FactoryCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// é¿ |
| | | /// </summary> |
| | | public decimal? Length { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 宽 |
| | | /// </summary> |
| | | public decimal? Width { get; set; } |
| | | |
| | | /// <summary> |
| | | /// é« |
| | | /// </summary> |
| | | public decimal? Height { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åºæ¬åå
|
| | | /// </summary> |
| | | public string BaseUnit { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å®ä½ |
| | | /// </summary> |
| | | public string Position { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | public bool IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 夿³¨ |
| | | /// </summary> |
| | | public string Remarks { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Idä¸»é® |
| | | /// </summary> |
| | | public long? Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public DateTimeOffset? CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public DateTimeOffset? UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using System.Collections.Generic; |
| | | using System.Threading.Tasks; |
| | | using Microsoft.AspNetCore.Http; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | public interface IWmsWarehouseService |
| | | { |
| | | Task<WmsWarehouseOutput> Get([FromQuery] QueryeWmsWarehouseInput input); |
| | | Task<List<WmsWarehouseOutput>> List([FromQuery] WmsWarehouseInput input); |
| | | Task<PageResult<WmsWarehouseOutput>> Page([FromQuery] WmsWarehouseSearch input); |
| | | Task<List<WmsWarehouseOutput>> ListNonPageAsync([FromQuery] WmsWarehouseSearchNonPage input); |
| | | |
| | | Task Add(AddWmsWarehouseInput input); |
| | | Task Update(UpdateWmsWarehouseInput input); |
| | | Task Delete(DeleteWmsWarehouseInput input); |
| | | Task<int> ImportExcelAsync(IFormFile file); |
| | | IActionResult DownloadExcelTemplate(string version); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Mapster; |
| | | using Admin.NET.Core; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | public class WmsWarehouseMapper : IRegister |
| | | { |
| | | public void Register(TypeAdapterConfig config) |
| | | { |
| | | config.ForType<AddWmsWarehouseInput, WmsWarehouse>() |
| | | ; |
| | | config.ForType<UpdateWmsWarehouseInput, WmsWarehouse>() |
| | | ; |
| | | config.ForType<WmsWarehouse, WmsWarehouseOutput>() |
| | | ; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.DatabaseAccessor.Extensions; |
| | | using Furion.DependencyInjection; |
| | | using Furion.DynamicApiController; |
| | | using Furion.FriendlyException; |
| | | using Admin.NET.Core; |
| | | using Mapster; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using System.Linq.Dynamic.Core; |
| | | using Microsoft.AspNetCore.Http; |
| | | using System.Text; |
| | | using System.Web; |
| | | using System.ComponentModel; |
| | | using System.Data; |
| | | namespace Admin.NET.Application |
| | | { |
| | | /// <summary> |
| | | /// ä»åºè¡¨æå¡ |
| | | /// </summary> |
| | | [ApiDescriptionSettings("WmsBase", Name = "WmsWarehouse", Order = 100)] |
| | | [Route("api")] |
| | | public class WmsWarehouseService : IWmsWarehouseService, IDynamicApiController, ITransient |
| | | { |
| | | private readonly IRepository<WmsWarehouse,MasterDbContextLocator> _wmsWarehouseRep; |
| | | private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep; |
| | | private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep; |
| | | private readonly ISysExcelTemplateService _sysExcelTemplateService; |
| | | private readonly static object _lock = new(); |
| | | |
| | | public WmsWarehouseService( |
| | | IRepository<WmsWarehouse,MasterDbContextLocator> wmsWarehouseRep |
| | | ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep |
| | | ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep |
| | | ,ISysExcelTemplateService sysExcelTemplateService |
| | | ) |
| | | { |
| | | _wmsWarehouseRep = wmsWarehouseRep; |
| | | _sysDictTypeRep = sysDictTypeRep; |
| | | _sysDictDataRep = sysDictDataRep; |
| | | _sysExcelTemplateService = sysExcelTemplateService; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å页æ¥è¯¢ä»åºè¡¨ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsWarehouse/page")] |
| | | public async Task<PageResult<WmsWarehouseOutput>> Page([FromQuery] WmsWarehouseSearch input) |
| | | { |
| | | var wmsWarehouses = await _wmsWarehouseRep.DetachedEntities |
| | | .Where(!string.IsNullOrEmpty(input.Code), u => u.Code == input.Code) |
| | | .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name) |
| | | .Where(!string.IsNullOrEmpty(input.Address), u => u.Address == input.Address) |
| | | .Where(!string.IsNullOrEmpty(input.FactoryCode), u => u.FactoryCode == input.FactoryCode) |
| | | .Where(input.Length != null, u => u.Length == input.Length) |
| | | .Where(input.Width != null, u => u.Width == input.Width) |
| | | .Where(input.Height != null, u => u.Height == input.Height) |
| | | .Where(!string.IsNullOrEmpty(input.BaseUnit), u => u.BaseUnit == input.BaseUnit) |
| | | .Where(!string.IsNullOrEmpty(input.Position), u => u.Position == input.Position) |
| | | .Where(input.IsDisabled != null, u => u.IsDisabled == input.IsDisabled) |
| | | .Where(!string.IsNullOrEmpty(input.Remarks), u => u.Remarks == input.Remarks) |
| | | .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1])) |
| | | .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1])) |
| | | .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName) |
| | | .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName) |
| | | .OrderBy(PageInputOrder.OrderBuilder<WmsWarehouseSearch>(input)) |
| | | .ProjectToType<WmsWarehouseOutput>() |
| | | .ToADPagedListAsync(input.PageNo, input.PageSize); |
| | | return wmsWarehouses; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä¸å页æ¥è¯¢ä»åºè¡¨å表 |
| | | /// </summary> |
| | | /// <param name="input">ä»åºè¡¨æ¥è¯¢åæ°</param> |
| | | /// <returns>(ä»åºè¡¨)å®ä¾å表</returns> |
| | | [HttpGet("WmsWarehouse/listNonPage")] |
| | | public async Task<List<WmsWarehouseOutput>> ListNonPageAsync([FromQuery] WmsWarehouseSearchNonPage input) |
| | | { |
| | | var pCode = input.Code?.Trim() ?? ""; |
| | | var pName = input.Name?.Trim() ?? ""; |
| | | var pAddress = input.Address?.Trim() ?? ""; |
| | | var pFactoryCode = input.FactoryCode?.Trim() ?? ""; |
| | | var pLength = input.Length; |
| | | var pWidth = input.Width; |
| | | var pHeight = input.Height; |
| | | var pBaseUnit = input.BaseUnit?.Trim() ?? ""; |
| | | var pPosition = input.Position?.Trim() ?? ""; |
| | | var pIsDisabled = input.IsDisabled; |
| | | var pRemarks = input.Remarks?.Trim() ?? ""; |
| | | var pCreatedTime = input.CreatedTime; |
| | | var pUpdatedTime = input.UpdatedTime; |
| | | var pCreatedUserName = input.CreatedUserName?.Trim() ?? ""; |
| | | var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? ""; |
| | | var wmsWarehouses = await _wmsWarehouseRep.DetachedEntities |
| | | .Where(!string.IsNullOrEmpty(pCode), u => u.Code == pCode) |
| | | .Where(!string.IsNullOrEmpty(pName), u => u.Name == pName) |
| | | .Where(!string.IsNullOrEmpty(pAddress), u => u.Address == pAddress) |
| | | .Where(!string.IsNullOrEmpty(pFactoryCode), u => u.FactoryCode == pFactoryCode) |
| | | .Where(pLength != null, u => u.Length == pLength) |
| | | .Where(pWidth != null, u => u.Width == pWidth) |
| | | .Where(pHeight != null, u => u.Height == pHeight) |
| | | .Where(!string.IsNullOrEmpty(pBaseUnit), u => u.BaseUnit == pBaseUnit) |
| | | .Where(!string.IsNullOrEmpty(pPosition), u => u.Position == pPosition) |
| | | .Where(pIsDisabled != null, u => u.IsDisabled == pIsDisabled) |
| | | .Where(!string.IsNullOrEmpty(pRemarks), u => u.Remarks == pRemarks) |
| | | .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1])) |
| | | .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1])) |
| | | .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName) |
| | | .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName) |
| | | .OrderBy(PageInputOrder.OrderNonPageBuilder(input)) |
| | | .ProjectToType<WmsWarehouseOutput>() |
| | | .ToListAsync(); |
| | | return wmsWarehouses; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åä»åºè¡¨ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsWarehouse/detail")] |
| | | public async Task<WmsWarehouseOutput> Get([FromQuery] QueryeWmsWarehouseInput input) |
| | | { |
| | | return (await _wmsWarehouseRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsWarehouseOutput>(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åä»åºè¡¨å表 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsWarehouse/list")] |
| | | public async Task<List<WmsWarehouseOutput>> List([FromQuery] WmsWarehouseInput input) |
| | | { |
| | | return await _wmsWarehouseRep.DetachedEntities.ProjectToType<WmsWarehouseOutput>().ToListAsync(); |
| | | } |
| | | |
| | | #region å¢ãå ãæ¹ |
| | | |
| | | /// <summary> |
| | | /// å¢å ä»åºè¡¨ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsWarehouse/add")] |
| | | public async Task Add(AddWmsWarehouseInput input) |
| | | { |
| | | var wmsWarehouse = input.Adapt<WmsWarehouse>(); |
| | | //éªè¯ |
| | | await CheckExisit(wmsWarehouse); |
| | | |
| | | wmsWarehouse.CreatedUserId = wmsWarehouse.UpdatedUserId = SysHelper.GetUserId(); |
| | | wmsWarehouse.CreatedUserName = wmsWarehouse.UpdatedUserName = SysHelper.GetUserName(); |
| | | wmsWarehouse.CreatedTime = wmsWarehouse.UpdatedTime = SysHelper.GetNowTime(); |
| | | await _wmsWarehouseRep.InsertAsync(wmsWarehouse); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å é¤ä»åºè¡¨ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsWarehouse/delete")] |
| | | public async Task Delete(DeleteWmsWarehouseInput input) |
| | | { |
| | | var wmsWarehouse = await _wmsWarehouseRep.FirstOrDefaultAsync(u => u.Id == input.Id); |
| | | await _wmsWarehouseRep.DeleteAsync(wmsWarehouse); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°ä»åºè¡¨ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsWarehouse/edit")] |
| | | public async Task Update(UpdateWmsWarehouseInput input) |
| | | { |
| | | var isExist = await _wmsWarehouseRep.AnyAsync(u => u.Id == input.Id, false); |
| | | if (!isExist) throw Oops.Oh(ErrorCode.D1002); |
| | | |
| | | var wmsWarehouse = input.Adapt<WmsWarehouse>(); |
| | | //éªè¯ |
| | | await CheckExisit(wmsWarehouse,true); |
| | | |
| | | wmsWarehouse.UpdatedUserId = SysHelper.GetUserId(); |
| | | wmsWarehouse.UpdatedUserName = SysHelper.GetUserName(); |
| | | wmsWarehouse.UpdatedTime = SysHelper.GetNowTime(); |
| | | await _wmsWarehouseRep.UpdateAsync(wmsWarehouse,ignoreNullValues:true); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 导å
¥ |
| | | |
| | | /// <summary> |
| | | /// Excel模æ¿å¯¼å
¥ä»åºè¡¨åè½ |
| | | /// </summary> |
| | | /// <param name="file">Excelæ¨¡æ¿æä»¶</param> |
| | | /// <returns>导å
¥çè®°å½æ°</returns> |
| | | [HttpPost("WmsWarehouse/importExcel")] |
| | | public async Task<int> ImportExcelAsync(IFormFile file) |
| | | { |
| | | int _HeadStartLine = 2;//第1è¡æ¯è¯´æ,第2è¡æ¯åå |
| | | int _DataStartLine = 3;//第3è¡å¼å§æ¯æ°æ® |
| | | |
| | | DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine); |
| | | var addList =await CommonImport(importDataTable, _DataStartLine); |
| | | |
| | | lock (_lock) |
| | | { |
| | | _wmsWarehouseRep.InsertAsync(addList); |
| | | |
| | | } |
| | | await Task.CompletedTask; |
| | | return addList.Count; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// DataTable转æ¢å®ä½å¯¹è±¡å表 |
| | | /// </summary> |
| | | /// <param name="dataTable"></param> |
| | | /// <param name="dataStartLine">模çååå¼å§è¡</param> |
| | | /// <returns></returns> |
| | | private async Task<List<WmsWarehouse>> CommonImport(DataTable dataTable, int dataStartLine) |
| | | { |
| | | |
| | | var details = new List<WmsWarehouse>(); |
| | | int index = dataStartLine;//模çååå¼å§è¡ |
| | | foreach (System.Data.DataRow row in dataTable.Rows) |
| | | { |
| | | index++; |
| | | |
| | | //导å
¥æ¨¡çå®å¶å代ç ï¼æ¿æ¢æ¨¡ç使ç¨ï¼ |
| | | |
| | | var addItem = new WmsWarehouse() |
| | | { |
| | | CreatedTime = SysHelper.GetNowTime(), |
| | | CreatedUserId = SysHelper.GetUserId(), |
| | | CreatedUserName = SysHelper.GetUserName(), |
| | | UpdatedTime = SysHelper.GetNowTime(), |
| | | UpdatedUserId = SysHelper.GetUserId(), |
| | | UpdatedUserName = SysHelper.GetUserName() |
| | | }; |
| | | #region å®ä¹åé |
| | | var _Code = "";//ä»åºç¼å· |
| | | var _Name = "";//ä»åºåç§° |
| | | var _Address = "";//ä»åºå°å |
| | | var _FactoryCode = "";//å·¥åç¼å· |
| | | var _Length = "";//é¿ |
| | | var _Width = "";//宽 |
| | | var _Height = "";//é« |
| | | var _BaseUnit = "";//åºæ¬åå
|
| | | var _Position = "";//å®ä½ |
| | | var _IsDisabled = "";//æ¯å¦ç¦ç¨ |
| | | var _Remarks = "";//夿³¨ |
| | | var _Id = "";//Idä¸»é® |
| | | #endregion |
| | | |
| | | |
| | | #region åå¼ |
| | | _Code = row["ä»åºç¼å·"]?.ToString() ; |
| | | _Name = row["ä»åºåç§°"]?.ToString() ; |
| | | _Address = row["ä»åºå°å"]?.ToString() ; |
| | | _FactoryCode = row["å·¥åç¼å·"]?.ToString() ; |
| | | _Length = row["é¿"]?.ToString() ; |
| | | _Width = row["宽"]?.ToString() ; |
| | | _Height = row["é«"]?.ToString() ; |
| | | _BaseUnit = row["åºæ¬åå
"]?.ToString() ; |
| | | _Position = row["å®ä½"]?.ToString() ; |
| | | _IsDisabled = row["æ¯å¦ç¦ç¨"]?.ToString() ; |
| | | _Remarks = row["夿³¨"]?.ToString() ; |
| | | _Id = row["Id主é®"]?.ToString() ; |
| | | #endregion |
| | | |
| | | |
| | | #region éªè¯ |
| | | |
| | | if (string.IsNullOrEmpty(_Code)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[ä»åºç¼å·]{_Code}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_Code)) |
| | | { |
| | | addItem.Code = (string)_Code; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_Name)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[ä»åºåç§°]{_Name}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_Name)) |
| | | { |
| | | addItem.Name = (string)_Name; |
| | | } |
| | | if(!string.IsNullOrEmpty(_Address)) |
| | | { |
| | | addItem.Address = (string)_Address; |
| | | } |
| | | if(!string.IsNullOrEmpty(_FactoryCode)) |
| | | { |
| | | addItem.FactoryCode = (string)_FactoryCode; |
| | | } |
| | | if(!string.IsNullOrEmpty(_Length)) |
| | | { |
| | | if (!decimal.TryParse(_Length, out decimal outLength)&&!string.IsNullOrEmpty(_Length)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[é¿]{_Length}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outLength <= 0&&!string.IsNullOrEmpty(_Length)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[é¿]{_Length}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.Length = outLength; |
| | | } |
| | | |
| | | } |
| | | if(!string.IsNullOrEmpty(_Width)) |
| | | { |
| | | if (!decimal.TryParse(_Width, out decimal outWidth)&&!string.IsNullOrEmpty(_Width)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[宽]{_Width}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outWidth <= 0&&!string.IsNullOrEmpty(_Width)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[宽]{_Width}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.Width = outWidth; |
| | | } |
| | | |
| | | } |
| | | if(!string.IsNullOrEmpty(_Height)) |
| | | { |
| | | if (!decimal.TryParse(_Height, out decimal outHeight)&&!string.IsNullOrEmpty(_Height)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[é«]{_Height}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outHeight <= 0&&!string.IsNullOrEmpty(_Height)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[é«]{_Height}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.Height = outHeight; |
| | | } |
| | | |
| | | } |
| | | if(!string.IsNullOrEmpty(_BaseUnit)) |
| | | { |
| | | addItem.BaseUnit = (string)_BaseUnit; |
| | | } |
| | | if(!string.IsNullOrEmpty(_Position)) |
| | | { |
| | | addItem.Position = (string)_Position; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_IsDisabled)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¯å¦ç¦ç¨]{_IsDisabled}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_IsDisabled)) |
| | | { |
| | | if(!_IsDisabled.Equals("æ¯") && !_IsDisabled.Equals("å¦")) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¯å¦ç¦ç¨]{_IsDisabled}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | else |
| | | { |
| | | bool outIsDisabled = _IsDisabled.Equals("æ¯") ? true : false; |
| | | addItem.IsDisabled = outIsDisabled; |
| | | } |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_Remarks)) |
| | | { |
| | | addItem.Remarks = (string)_Remarks; |
| | | } |
| | | if(!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[Id主é®]{_Id}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outId <= 0&&!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[Id主é®]{_Id}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.Id = outId; |
| | | } |
| | | |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | details.Add(addItem); |
| | | } |
| | | //éªé |
| | | await CheckExisitForImport(details); |
| | | |
| | | return details; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®çæ¬ä¸è½½ä»åºè¡¨çExcel导å
¥æ¨¡æ¿ |
| | | /// </summary> |
| | | /// <param name="version">模æ¿çæ¬</param> |
| | | /// <returns>ä¸è½½çæ¨¡æ¿æä»¶</returns> |
| | | [HttpGet("WmsWarehouse/downloadExcelTemplate")] |
| | | public IActionResult DownloadExcelTemplate([FromQuery] string version) |
| | | { |
| | | string _path = TemplateConst.EXCEL_TEMPLATEFILE_导å
¥æ¨¡çè·¯å¾ + $"\\WmsWarehouse{TemplateConst.EXCEL_TEMPLATEFILE_导å
¥æ¨¡çåç§°åç¼}.xlsx"; |
| | | var fileName = HttpUtility.UrlEncode($"导å
¥æ¨¡æ¿(ä»åºè¡¨).xlsx", Encoding.GetEncoding("UTF-8")); |
| | | return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName }; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ç§ææ¹æ³ |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®èå主é®éªè¯æ°æ®æ¯å¦å·²åå¨-æ°æ®åº |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <param name="isEdit"></param> |
| | | /// <returns></returns> |
| | | private async Task CheckExisit( WmsWarehouse input,bool isEdit=false) |
| | | { |
| | | |
| | | |
| | | |
| | | bool isExist = false; |
| | | if (!isEdit)//æ°å¢ |
| | | { |
| | | //æ°æ®æ¯å¦åå¨éå¤ |
| | | isExist = await _wmsWarehouseRep.AnyAsync(u => |
| | | u.Code.Equals(input.Code) |
| | | ,false); |
| | | } |
| | | else//ç¼è¾ |
| | | { |
| | | |
| | | |
| | | |
| | | //å½åç¼è¾æ°æ®ä»¥å¤æ¯å¦åå¨éå¤ |
| | | isExist = await _wmsWarehouseRep.AnyAsync(u => |
| | | u.Id != input.Id |
| | | &&u.Code.Equals(input.Code) |
| | | ,false); |
| | | } |
| | | |
| | | |
| | | |
| | | if (isExist) throw Oops.Oh(ErrorCode.E0001); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®èå主é®éªè¯æ°æ®æ¯å¦å·²åå¨-导å
¥æ¶éªè¯ |
| | | /// </summary> |
| | | /// <param name="inputs"></param> |
| | | /// <returns></returns> |
| | | private async Task CheckExisitForImport(List<WmsWarehouse> inputs) |
| | | { |
| | | //æ ¹æ®èå主é®éªè¯è¡¨æ ¼ä¸ä¸æ¯å¦å·²åå¨ç¸åæ°æ® |
| | | if (inputs?.Count <= 0) |
| | | { |
| | | throw Oops.Oh($"导å
¥æ°æ®ä¸è½ä¸ºç©º"); |
| | | } |
| | | //æ°æ®æ¯å¦éå¤ |
| | | var existExcelItem = inputs.GroupBy(g => new { |
| | | g.Code |
| | | }) |
| | | .Where(g => g.Count() > 1) |
| | | .Select(s => new { |
| | | s.Key.Code |
| | | }).FirstOrDefault(); |
| | | if (existExcelItem != null) |
| | | { |
| | | var wmsWarehouse = existExcelItem.Adapt<WmsWarehouse>(); |
| | | var item= existExcelItem.Adapt<WmsWarehouse>(); |
| | | throw Oops.Oh($"导å
¥çè¡¨æ ¼ä¸,ä»åºç¼å·[{item.Code}]å·²åå¨"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //æ ¹æ®èå主é®éªè¯æ°æ®åºä¸æ¯å¦å·²åå¨ç¸åæ°æ® |
| | | var existDBItem = await _wmsWarehouseRep.DetachedEntities.FirstOrDefaultAsync(w=> |
| | | inputs.Select(s=>"" |
| | | +s.Code |
| | | ) |
| | | .Contains("" |
| | | +w.Code |
| | | )); |
| | | if (existDBItem != null) |
| | | { |
| | | var wmsWarehouse = existExcelItem.Adapt<WmsWarehouse>(); |
| | | var item= existExcelItem.Adapt<WmsWarehouse>(); |
| | | throw Oops.Oh($"ç³»ç»ä¸,ä»åºç¼å·[{item.Code}]å·²åå¨"); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |