iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsContainerPackagingManage.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,114 @@ 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' }) } iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/addForm.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,100 @@ <template> <a-modal title="æ°å¢å è£ å ³ç³»åºç¡è¡¨" :width="900" :visible="visible" :confirmLoading="confirmLoading" @ok="handleSubmit" @cancel="handleCancel"> <a-spin :spinning="confirmLoading"> <a-form :form="form"> <a-form-item label="容å¨ç±»åID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥å®¹å¨ç±»å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> iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/editForm.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,119 @@ <template> <a-modal title="ç¼è¾å è£ å ³ç³»åºç¡è¡¨" :width="900" :visible="visible" :confirmLoading="confirmLoading" @ok="handleSubmit" @cancel="handleCancel"> <a-spin :spinning="confirmLoading"> <a-form :form="form"> <a-form-item label="容å¨ç±»åID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥å®¹å¨ç±»å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> iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/excelForm.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,181 @@ <template> <a-modal :width="850" :destroyOnClose="true" :visible="visible" :forceRender="true" title="æ¹éå¯¼å ¥" cancelText="åæ¶ä¸ä¼ " okText="å¼å§ä¸ä¼ " @cancel="handleCancel" @ok="handleSubmit"> <a-spin :spinning="confirmLoading"> <a-row :span="24"> <span>è¯·éæ©è¦å¯¼å ¥çæ°æ®æä»¶ï¼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> iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsContainerPackaging/index.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,498 @@ <template> <div ref="boxOutWrap" class="boxOutWrap"> <div ref="boxForm" class="boxForm"> <a-card :bordered="false" :bodyStyle="tstyle"> <div class="table-page-search-wrapper" v-if="hasPerm('WmsContainerPackaging:page')"> <a-form layout="inline"> <a-row :gutter="48"> <a-col :md="8" :sm="24"> <a-form-item label="容å¨ç±»åID"> <a-input v-model="queryParam.containerTypeId" allow-clear placeholder="请è¾å ¥å®¹å¨ç±»å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> iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabForm.vue
@@ -25,9 +25,9 @@ <a-tab-pane key="5" tab="客æ·"> <add-form-base-customer ref="addFormBaseCustomer" @ok="handleOk" /> </a-tab-pane> <a-tab-pane key="7" tab="å è£ å ³ç³»"> Content of Tab Pane 6 <add-form-container-packaging ref="addFormContainerPackaging" @ok="handleOk" /> </a-tab-pane> </a-tabs> @@ -39,15 +39,14 @@ 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' export default { components: { // STable, addForm, addFormBaseCustomer, // editForm, // excelForm addFormContainerPackaging, }, data() { return { iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabItem/addFormContainerPackaging.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,91 @@ <template> <!-- å è£ å ³ç³»åºç¡è¡¨ --> <a-form :form="form"> <a-form-item label="容å¨ç±»åID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥å®¹å¨ç±»å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> iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Dto/WmsContainerPackagingInput.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,193 @@ 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 { } } iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Dto/WmsContainerPackagingOutput.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,67 @@ 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; } } } iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/IWmsContainerPackagingService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ 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); } } iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/Map/WmsContainerPackagingMapper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ 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>() ; } } } iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,397 @@ 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 } } iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsContainerPackagingImport.xlsxBinary files differ