iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsBase/WmsWarehouseManage.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,114 @@ 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' }) } iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/addForm.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,115 @@ <template> <a-modal title="æ°å¢ä»åºè¡¨" :width="900" :visible="visible" :confirmLoading="confirmLoading" @ok="handleSubmit" @cancel="handleCancel"> <a-spin :spinning="confirmLoading"> <a-form :form="form"> <a-form-item label="ä»åºç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥ä»åºç¼å·" v-decorator="['code', {rules: [{required: true, message: '请è¾å ¥ä»åºç¼å·ï¼'}]}]" /> </a-form-item> <a-form-item label="ä»åºåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥ä»åºåç§°" v-decorator="['name', {rules: [{required: true, message: '请è¾å ¥ä»åºåç§°ï¼'}]}]" /> </a-form-item> <a-form-item label="ä»åºå°å" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥ä»åºå°å" v-decorator="['address']" /> </a-form-item> <a-form-item label="å·¥åç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥å·¥åç¼å·" v-decorator="['factoryCode']" /> </a-form-item> <a-form-item label="é¿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥é¿" v-decorator="['length']" /> </a-form-item> <a-form-item label="宽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥å®½" v-decorator="['width']" /> </a-form-item> <a-form-item label="é«" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥é«" v-decorator="['height']" /> </a-form-item> <a-form-item label="åºæ¬åå " :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥åºæ¬åå " v-decorator="['baseUnit']" /> </a-form-item> <a-form-item label="å®ä½" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥å®ä½" v-decorator="['position']" /> </a-form-item> <a-form-item label="æ¯å¦ç¦ç¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: 'è¯·éæ©æ¯å¦ç¦ç¨ï¼' }], valuePropName: 'checked'}]" /> </a-form-item> <a-form-item label="夿³¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥å¤æ³¨" v-decorator="['remarks']" /> </a-form-item> </a-form> </a-spin> </a-modal> </template> <script> import moment from 'moment' import { WmsWarehouseAdd } from '@/api/modular/main/WmsBase/WmsWarehouseManage' export default { data () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: false, confirmLoading: false, form: this.$form.createForm(this) } }, methods: { moment, // åå§åæ¹æ³ add (record) { this.visible = true this.$nextTick(() => { }); }, /** * æäº¤è¡¨å */ handleSubmit () { const { form: { validateFields } } = this this.confirmLoading = true validateFields((errors, values) => { if (!errors) { for (const key in values) { if (typeof (values[key]) === 'object') { values[key] = JSON.stringify(values[key]) } } WmsWarehouseAdd(values).then((res) => { if (res.success) { this.$message.success('æ°å¢æå') this.confirmLoading = false this.$emit('ok', values) this.handleCancel() } else { this.$message.error('æ°å¢å¤±è´¥ï¼' + JSON.stringify(res.message)) } }).finally((res) => { this.confirmLoading = false }) } else { this.confirmLoading = false } }) }, handleCancel () { this.form.resetFields() this.visible = false } } } </script> iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/editForm.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,139 @@ <template> <a-modal title="ç¼è¾ä»åºè¡¨" :width="900" :visible="visible" :confirmLoading="confirmLoading" @ok="handleSubmit" @cancel="handleCancel"> <a-spin :spinning="confirmLoading"> <a-form :form="form"> <a-form-item label="ä»åºç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥ä»åºç¼å·" v-decorator="['code', {rules: [{required: true, message: '请è¾å ¥ä»åºç¼å·ï¼'}]}]" /> </a-form-item> <a-form-item label="ä»åºåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥ä»åºåç§°" v-decorator="['name', {rules: [{required: true, message: '请è¾å ¥ä»åºåç§°ï¼'}]}]" /> </a-form-item> <a-form-item label="ä»åºå°å" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥ä»åºå°å" v-decorator="['address']" /> </a-form-item> <a-form-item label="å·¥åç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥å·¥åç¼å·" v-decorator="['factoryCode']" /> </a-form-item> <a-form-item label="é¿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥é¿" v-decorator="['length']" /> </a-form-item> <a-form-item label="宽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥å®½" v-decorator="['width']" /> </a-form-item> <a-form-item label="é«" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥é«" v-decorator="['height']" /> </a-form-item> <a-form-item label="åºæ¬åå " :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥åºæ¬åå " v-decorator="['baseUnit']" /> </a-form-item> <a-form-item label="å®ä½" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥å®ä½" v-decorator="['position']" /> </a-form-item> <a-form-item label="æ¯å¦ç¦ç¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: 'è¯·éæ©æ¯å¦ç¦ç¨ï¼' }], valuePropName: 'checked'}]" /> </a-form-item> <a-form-item label="夿³¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> <a-input placeholder="请è¾å ¥å¤æ³¨" v-decorator="['remarks']" /> </a-form-item> <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item> </a-form> </a-spin> </a-modal> </template> <script> import moment from 'moment' import { WmsWarehouseEdit } from '@/api/modular/main/WmsBase/WmsWarehouseManage' export default { data () { return { Id: 0, labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, record: {}, visible: false, confirmLoading: false, form: this.$form.createForm(this) } }, methods: { moment, // åå§åæ¹æ³ edit (record) { this.visible = true; this.Id = record.id; this.$nextTick(() => { }); //深度æ·è´ ç§»é¤VUEççå¬ï¼é²æ¢INDEX页é¢å¼åå¨ this.record = JSON.parse(JSON.stringify(record)) this.$nextTick(() => { this.form.setFieldsValue( { id: record.id, code: record.code, name: record.name, address: record.address, factoryCode: record.factoryCode, length: record.length, width: record.width, height: record.height, baseUnit: record.baseUnit, position: record.position, isDisabled: record.isDisabled, remarks: record.remarks } ) }) }, handleSubmit () { const { form: { validateFields } } = this this.confirmLoading = true validateFields((errors, values) => { if (!errors) { for (const key in values) { if (values[key] == null) continue if (typeof (values[key]) === 'object') { values[key] = JSON.stringify(values[key]) this.record[key] = values[key] } else { this.record[key] = values[key] } } WmsWarehouseEdit(this.record).then((res) => { if (res.success) { this.$message.success('ç¼è¾æå') this.confirmLoading = false this.$emit('ok', this.record) this.handleCancel() } else { this.$message.error('ç¼è¾å¤±è´¥ï¼' + JSON.stringify(res.message)) } }).finally((res) => { this.confirmLoading = false }) }else{ this.confirmLoading = false } }); }, handleCancel () { this.form.resetFields() this.visible = false } } } </script> iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/excelForm.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,181 @@ <template> <a-modal :width="850" :destroyOnClose="true" :visible="visible" :forceRender="true" title="æ¹éå¯¼å ¥" cancelText="åæ¶ä¸ä¼ " okText="å¼å§ä¸ä¼ " @cancel="handleCancel" @ok="handleSubmit"> <a-spin :spinning="confirmLoading"> <a-row :span="24"> <span>è¯·éæ©è¦å¯¼å ¥çæ°æ®æä»¶ï¼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> iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsWarehouse/index.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,638 @@ <template> <div ref="boxOutWrap" class="boxOutWrap"> <div ref="boxForm" class="boxForm"> <a-card :bordered="false" :bodyStyle="tstyle"> <div class="table-page-search-wrapper" v-if="hasPerm('WmsWarehouse:page')"> <a-form layout="inline"> <a-row :gutter="48"> <a-col :md="8" :sm="24"> <a-form-item label="ä»åºç¼å·"> <a-input v-model="queryParam.code" allow-clear placeholder="请è¾å ¥ä»åºç¼å·"/> </a-form-item> </a-col> <a-col :md="8" :sm="24"> <a-form-item label="ä»åºåç§°"> <a-input v-model="queryParam.name" allow-clear placeholder="请è¾å ¥ä»åºåç§°"/> </a-form-item> </a-col><template v-if="advanced"> <a-col :md="8" :sm="24"> <a-form-item label="ä»åºå°å"> <a-input v-model="queryParam.address" allow-clear placeholder="请è¾å ¥ä»åºå°å"/> </a-form-item> </a-col> <a-col :md="8" :sm="24"> <a-form-item label="å·¥åç¼å·"> <a-input v-model="queryParam.factoryCode" allow-clear placeholder="请è¾å ¥å·¥åç¼å·"/> </a-form-item> </a-col> <a-col :md="8" :sm="24"> <a-form-item label="é¿"> <a-input v-model="queryParam.length" allow-clear placeholder="请è¾å ¥é¿"/> </a-form-item> </a-col> <a-col :md="8" :sm="24"> <a-form-item label="宽"> <a-input v-model="queryParam.width" allow-clear placeholder="请è¾å ¥å®½"/> </a-form-item> </a-col> <a-col :md="8" :sm="24"> <a-form-item label="é«"> <a-input v-model="queryParam.height" allow-clear placeholder="请è¾å ¥é«"/> </a-form-item> </a-col> <a-col :md="8" :sm="24"> <a-form-item label="åºæ¬åå "> <a-input v-model="queryParam.baseUnit" allow-clear placeholder="请è¾å ¥åºæ¬åå "/> </a-form-item> </a-col> <a-col :md="8" :sm="24"> <a-form-item label="å®ä½"> <a-input v-model="queryParam.position" allow-clear placeholder="请è¾å ¥å®ä½"/> </a-form-item> </a-col> <a-col :md="8" :sm="24"> <a-form-item label="æ¯å¦ç¦ç¨"> <a-select :allowClear="true" style="width: 100%" v-model="queryParam.isDisabled" placeholder="è¯·éæ©æ¯å¦ç¦ç¨"> <a-select-option v-for="(item,index) in isDisabledData" :key="index" :value="item.code">{{ item.name }}</a-select-option> </a-select> </a-form-item> </a-col> <a-col :md="8" :sm="24"> <a-form-item label="夿³¨"> <a-input v-model="queryParam.remarks" allow-clear placeholder="请è¾å ¥å¤æ³¨"/> </a-form-item> </a-col> <!--å¹´ææ¥æ¶åç§--> <!--æ¶é´èå´--> <a-col :md="8" :sm="24"> <a-form-item label="å建æ¶é´"> <a-range-picker style="width: 100%" :placeholder="['å¼å§æ¶é´', 'ç»ææ¶é´']" :show-time="{ format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangecreatedTime"/> </a-form-item> </a-col> <!--å¹´ææ¥æ¶åç§--> <!--æ¶é´èå´--> <a-col :md="8" :sm="24"> <a-form-item label="æ´æ°æ¶é´"> <a-range-picker style="width: 100%" :placeholder="['å¼å§æ¶é´', 'ç»ææ¶é´']" :show-time="{ format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangeupdatedTime"/> </a-form-item> </a-col> <a-col :md="8" :sm="24"> <a-form-item label="å建è åç§°"> <a-input v-model="queryParam.createdUserName" allow-clear placeholder="请è¾å ¥å建è åç§°"/> </a-form-item> </a-col> <a-col :md="8" :sm="24"> <a-form-item label="ä¿®æ¹è åç§°"> <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="请è¾å ¥ä¿®æ¹è åç§°"/> </a-form-item> </a-col> </template> <a-col :md="8" :sm="24" > <span class="table-page-search-submitButtons"> <a-button type="primary" @click="$refs.table.refresh(true)" >æ¥è¯¢</a-button> <a-button style="margin-left: 8px" @click="() => queryParam = {}">éç½®</a-button> <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? 'æ¶èµ·' : 'å±å¼' }} <a-icon :type="advanced ? 'up' : 'down'"/> </a> </span> </a-col> </a-row> </a-form> </div> </a-card> </div> <a-card :bordered="false"> <s-table ref="table" :columns="columns" :data="loadData" :alert="true" @changeTablePage="pageInfo = $event" :scroll="{x: true,y:tableHeight}" :rowKey="(record) => record.id" :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"> <template class="table-operator" slot="operator" v-if="hasPerm('WmsWarehouse:add')" > <div ref="actionBar" class="actionBar"> <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()"> å¯¼å ¥ </a-button> <a-button type="info" v-if="hasPerm('WmsWarehouse:exportExcel')" icon="download" @click="WmsWarehouseToExcel()"> å¯¼åº </a-button> <a-button type="primary" v-if="hasPerm('WmsWarehouse:add')" icon="plus" @click="$refs.addForm.add()">æ°å¢ä»åºè¡¨</a-button> </div> </template> <span slot="isDisabledscopedSlots" slot-scope="text"> <div v-if="text===true "> <a-tag color="green">æ¯</a-tag> </div> <div v-else-if="text==false"> <a-tag color="volcano">å¦</a-tag> </div> <div v-else=""></div> </span> <span slot="action" slot-scope="text, record"> <a v-if="hasPerm('WmsWarehouse:edit')" @click="$refs.editForm.edit(record)">ç¼è¾</a> <a-divider type="vertical" v-if="hasPerm('WmsWarehouse:edit') & hasPerm('WmsWarehouse:delete')"/> <a-popconfirm v-if="hasPerm('WmsWarehouse:delete')" placement="topRight" title="确认å é¤ï¼" @confirm="() => WmsWarehouseDelete(record)"> <a>å é¤</a> </a-popconfirm> </span> </s-table> <add-form ref="addForm" @ok="handleOk" /> <edit-form ref="editForm" @ok="handleOk" /> <excel-form ref="excelForm" @ok="handleOk" /> </a-card> </div> </template> <script> import { STable } from '@/components' import moment from 'moment' import { WmsWarehousePage, WmsWarehouseDelete, WmsWarehouseToExcel } from '@/api/modular/main/WmsBase/WmsWarehouseManage' //èªå®ä¹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> iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Dto/WmsWarehouseInput.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,271 @@ 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 { } } iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Dto/WmsWarehouseOutput.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,92 @@ 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; } } } iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/IWmsWarehouseService.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 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); } } iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/Map/WmsWarehouseMapper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ 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>() ; } } } iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsWarehouse/WmsWarehouseService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,517 @@ 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 } } iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsWarehouseImport.xlsxBinary files differ