1. 回退goods.vue的代码

This commit is contained in:
梁州 2025-06-12 22:38:37 +08:00
parent 0244078642
commit 3a2386347b
2 changed files with 222 additions and 334 deletions

View File

@ -10,7 +10,7 @@
<script setup>
import store from '@/store'
import {ref, reactive} from 'vue';
import {uploadExcelBaseGoods, uploadExcelInventoryRequest} from '@/api/excel.js'
import {uploadExcelInventoryRequest} from '@/api/excel.js'
import {ElMessage} from 'element-plus'
import {errorBox} from '@/utils/myMessageBox';
import {sizeFormatter} from '@/utils/formatter.js'

View File

@ -9,11 +9,11 @@
<el-row>
<el-form-item label="料号">
<el-input v-model="searchQueryFormEntity.goodsId" @keyup.enter="search()"
clearable />
clearable/>
</el-form-item>
<el-form-item label="描述">
<el-input v-model="searchQueryFormEntity.goodsDesc" @keyup.enter="search()"
clearable />
clearable/>
</el-form-item>
</el-row>
<div style="align-content: center;">
@ -21,6 +21,14 @@
<el-button type="primary" class="btn-search" @click="search()">查询</el-button>
<el-button type="warning" class="btn-search" @click="clearQuery()">清除输入</el-button>
</el-row>
<el-row>
<el-button style="background-color: #00CED1;" class="btn-search"
@click="openUploadDialog()">导入数据
</el-button>
<el-button type="success" class="btn-search"
@click="exportExcel()">导出excel
</el-button>
</el-row>
</div>
</div>
</el-form>
@ -36,129 +44,44 @@
</template>
</el-table-column>
<el-table-column prop="goodsId" label="料号" fixed="left" min-width="120px" sortable="custom"
show-overflow-tooltip />
show-overflow-tooltip/>
<el-table-column prop="goodsDescription" label="描述" min-width="120px" sortable="custom"
show-overflow-tooltip />
show-overflow-tooltip/>
<el-table-column prop="plant" label="工厂" min-width="120px" sortable="custom"
show-overflow-tooltip />
show-overflow-tooltip/>
<el-table-column prop="vendorName" label="供应商" min-width="120px" sortable="custom"
show-overflow-tooltip />
show-overflow-tooltip/>
<el-table-column prop="isSled" label="SLED管理" min-width="120px" sortable="custom"
show-overflow-tooltip />
show-overflow-tooltip/>
<el-table-column prop="sledDays" label="SLED天数" min-width="120px" sortable="custom"
show-overflow-tooltip />
show-overflow-tooltip/>
<el-table-column prop="feedingType" label="补料类型" min-width="120px" sortable="custom"
show-overflow-tooltip />
show-overflow-tooltip/>
<el-table-column prop="boxQty" label="每盒数量" min-width="120px" sortable="custom"
show-overflow-tooltip />
show-overflow-tooltip/>
<el-table-column prop="maxBoxNum" label="最大盒数" min-width="120px" sortable="custom"
show-overflow-tooltip />
show-overflow-tooltip/>
<el-table-column prop="putArea" label="存放区域" min-width="120px" sortable="custom"
show-overflow-tooltip />
show-overflow-tooltip/>
<el-table-column prop="hotPoint" label="热点区域" min-width="120px" sortable="custom"
show-overflow-tooltip />
<el-table-column fixed="right" label="操作" width="170px">
<template v-slot="scope">
<div style="display: inline-block; align-content: center;">
<el-button type="primary"
@click="editCurrentRowFormEntity(scope.row)">编辑</el-button>
<el-button type="danger" @click="closeGoods(scope.row)">关闭</el-button>
</div>
</template>
</el-table-column>
show-overflow-tooltip/>
</el-table>
<br />
<br/>
<el-pagination v-model:current-page="baseTableQuery.currentPage"
v-model:page-size="baseTableQuery.pageSize" :page-sizes="[10, 25, 50]" :small="false"
:disabled="false" :background="false" :default-page-size="10" @size-change="search"
@current-change="search" layout="total, sizes, prev, pager, next, jumper"
:total="baseTableQuery.total" />
:total="baseTableQuery.total"/>
</div>
<el-dialog v-model="rowEditFlag" title="物料信息" width="60%" draggable :show-close="false">
<el-form ref="rowEditFormRef" :model="rowFormEntity" :label-position="labelPosition"
label-width="100px" style="max-width: 100%" status-icon>
<el-row :gutter="16">
<el-col :span="12" :offset="0">
<el-form-item label="料号">
<el-input v-model="rowFormEntity.goodsId" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="描述">
<el-input v-model="rowFormEntity.goodsDescription" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12" :offset="0">
<el-form-item label="工厂">
<el-input v-model="rowFormEntity.plant" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="供应商">
<el-input v-model="rowFormEntity.vendorName" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12" :offset="0">
<el-form-item label="SLED管理">
<el-input v-model="rowFormEntity.isSled" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="SLED天数">
<el-input v-model="rowFormEntity.sledDays" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12" :offset="0">
<el-form-item label="补料类型">
<el-input v-model="rowFormEntity.feedingType" disabled />
</el-form-item>
</el-col>
</el-row>
<!-- 可编辑字段 -->
<el-divider>可编辑字段</el-divider>
<el-row :gutter="16">
<el-col :span="12" :offset="0">
<el-form-item label="每盒数量">
<el-input-number v-model="rowFormEntity.boxQty" controls-position="right"
:min="0" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最大盒数">
<el-input-number v-model="rowFormEntity.maxBoxNum" controls-position="right"
:min="0" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12" :offset="0">
<el-form-item label="存放区域">
<el-input v-model="rowFormEntity.putArea" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="热点区域">
<el-input v-model="rowFormEntity.hotPoint" clearable />
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="rowEditFlag = false">取消</el-button>
<el-button type="success" @click="submitUpdateRow(rowFormEntity)">
确定
</el-button>
</span>
</template>
<el-dialog v-model="showUploadDialog" title="上传物料信息" width="40%" draggable :show-close="true">
<fieldset class="search-area">
<legend>导入基础信息</legend>
<UploadExcelBaseGoods></UploadExcelBaseGoods>
</fieldset>
<fieldset class="search-area">
<legend>导入看板信息</legend>
<UploadExcelKanban></UploadExcelKanban>
</fieldset>
</el-dialog>
</div>
</el-container>
@ -168,13 +91,15 @@
<script setup>
import store from '@/store'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
import { getGoodsInfoByPage, updateGoodsInfo, closeGoodsInfo } from '@/api/goods.js'
import { timeFormatter, wmsTaskTypeFormatter, wmsTaskStatusFormatter } from '@/utils/formatter.js'
import { ref, reactive, onMounted, nextTick, onBeforeUnmount } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { genTableRequest } from '@/utils/generator.js'
import { labelPosition } from '@/constant/form.js'
import { loading } from '@/utils/loading'
import {getGoodsInfoByPage} from '@/api/goods.js'
import {ref, reactive, onMounted, nextTick, onBeforeUnmount} from 'vue'
import {ElMessage} from 'element-plus'
import {genTableRequest} from '@/utils/generator.js'
import {labelPosition} from '@/constant/form.js'
import UploadExcelBaseGoods from '@/excel/UploadExcelBaseGoods.vue'
import UploadExcelKanban from '@/excel/UploadExcelKanban.vue'
import {exportGoodsExcel} from "@/api/excel";
/**
* 常量定义
*/
@ -203,6 +128,7 @@ let rowEditFlag = ref(false)
let goodsId = ''
let rowEditFormRef = ref()
let rowFormEntity = reactive({})
let showUploadDialog = ref(false)
/**
* 系统方法
*/
@ -232,7 +158,7 @@ const search = () => {
request.goodsDesc = searchQueryFormEntity.goodsDesc.trim()
getGoodsInfoByPage(request).then((res) => {
const response = res.data
if (response.code == 0) {
if (response.code === 0) {
const data = response.data
if (data != null) {
tableData.value = data.lists
@ -258,83 +184,45 @@ const handleSortChange = (data) => {
if (baseTableQuery.sortBy.has(data.prop)) {
baseTableQuery.sortBy.delete(data.prop)
}
baseTableQuery.sortBy.set(data.prop, data.order == 'ascending')
baseTableQuery.sortBy.set(data.prop, data.order.toLowerCase() === 'ascending')
search()
}
const openUploadDialog = () => {
showUploadDialog.value = true
}
const getCurrentRow = (row) => {
goodsId = row.goodsId
}
const timeFormat = (row, column, cellValue, index) => {
return timeFormatter(cellValue)
}
const taskTypeFormat = (row, column, cellValue, index) => {
return wmsTaskTypeFormatter(cellValue)
}
const taskStatusFormat = (row, column, cellValue, index) => {
return wmsTaskStatusFormatter(cellValue)
}
//
const editCurrentRowFormEntity = (row) => {
// form
Object.assign(rowFormEntity, row)
//
rowEditFlag.value = true
}
//
const closeGoods = (row) => {
ElMessageBox.confirm(`确定要关闭物料(${row.goodsId})吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const request = {
goodsId: row.goodsId,
standId: STAND_ID,
userName: USER_NAME
};
loading.open('关闭中...');
closeGoodsInfo(request).then(res => {
const response = res.data;
if (response.code == 0) {
ElMessage.success(response.message);
search();
} else {
ElMessage.error(response.message);
}
}).catch(err => {
ElMessage.error('请求异常。');
}).finally(() => {
loading.close();
});
}).catch(err => {
ElMessage.info('已取消关闭操作');
});
}
//
const submitUpdateRow = (rowFormEntity) => {
const request = {
goodsId: rowFormEntity.goodsId,
boxQty: rowFormEntity.boxQty,
maxBoxNum: rowFormEntity.maxBoxNum,
putArea: rowFormEntity.putArea,
hotPoint: rowFormEntity.hotPoint,
standId: STAND_ID,
const exportExcel = () => {
const params = {
goodsId: searchQueryFormEntity.goodsId,
goodsDesc: searchQueryFormEntity.goodsDesc,
userName: USER_NAME
}
loading.open('更新中...')
updateGoodsInfo(request).then(res => {
if (res.data.code == 0) {
ElMessage.success('更新数据成功。')
rowEditFlag.value = false
search()
} else {
ElMessage.error('更新数据失败。')
exportGoodsExcel(params).then(res => {
const link = document.createElement('a');//a
try {
// let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); //blobblobtypexls
let blob = res.data //blob
// let _fileName = res.headers['content-disposition'].split(';')[1].split('=')[1]; //
let _fileName = '物料基础信息' + dateFormatter(new Date) + '.xlsx'
link.style.display = 'none'//
// URL
const url = window.URL || window.webkitURL || window.moxURL
link.href = url.createObjectURL(blob)
link.setAttribute('download', _fileName.substring(_fileName.lastIndexOf('_') + 1))
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
url.revokeObjectURL(link.href)//url
} catch (e) {
console.log(e)
ElMessage.error('下载文件失败')
}
}).catch(err => {
console.log(err)
ElMessage.error('更新数据异常。')
}).finally(() => {
loading.close()
ElMessage.error('导出失败')
})
}
</script>