HashMap 2d47349f24 fix (view): 修复了库存管理中手动添加缺失的问题
隐藏了出入库的手动增删改功能
2025-08-12 10:15:21 +08:00

315 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="单据日期" prop="docDate">
<el-input v-model="queryParams.docDate" placeholder="请输入单据日期" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="业务类型" prop="businessType">
<el-input v-model="queryParams.businessType" placeholder="请输入业务类型" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="仓库" prop="repositoryName">
<el-input v-model="queryParams.repositoryName" placeholder="请输入仓库" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="存货" prop="materialName">
<el-input v-model="queryParams.materialName" placeholder="请输入存货" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5" >
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['stock:in:add']" v-show="false">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate"
v-hasPermi="['stock:in:edit']" v-show="false">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
v-hasPermi="['stock:in:remove']" v-show="false">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport"
v-hasPermi="['stock:in:export']">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="info" plain icon="Upload" @click="handleImport" v-hasPermi="['stock:in:import']">导入</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="inList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" prop="stockInCode" />
<el-table-column label="单据日期" align="center" prop="docDate" />
<el-table-column label="创建时间" align="center" prop="createDate" />
<el-table-column label="单据编号" align="center" prop="docId" />
<el-table-column label="业务类型" align="center" prop="businessType" />
<el-table-column label="仓库编码" align="center" prop="repositoryId" />
<el-table-column label="仓库" align="center" prop="repositoryName" />
<el-table-column label="入库类别" align="center" prop="stockInType" />
<el-table-column label="供应商编码" align="center" prop="supplierId" />
<el-table-column label="供应商" align="center" prop="supplierName" />
<el-table-column label="部门编码" align="center" prop="departmentId" />
<el-table-column label="部门" align="center" prop="departmentName" />
<el-table-column label="经手人编码" align="center" prop="operatorId" />
<el-table-column label="经手人" align="center" prop="operatorName" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="制单人" align="center" prop="single" />
<el-table-column label="审核人" align="center" prop="reviewer" />
<el-table-column label="存货编码" align="center" prop="materialId" />
<el-table-column label="存货" align="center" prop="materialName" />
<el-table-column label="规格型号" align="center" prop="materialSpecification" />
<el-table-column label="计量单位" align="center" prop="materialUnit" />
<el-table-column label="实收数量" align="center" prop="count" />
<el-table-column label="入库调整" align="center" prop="stockInAdjustRemark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['stock:in:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['stock:in:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改入库记录对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="inRef" :model="form" :rules="rules" label-width="80px">
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
<!-- 入库记录导入对话框 -->
<el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
<el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<template #tip>
<div class="el-upload__tip text-center">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
@click="importTemplate">下载模板</el-link>
</div>
</template>
</el-upload>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="In">
import { listIn, getIn, delIn, addIn, updateIn } from "@/api/stock/in"
import { getToken } from "@/utils/auth"
import { isVisible } from "element-plus/es/utils/index.mjs"
const { proxy } = getCurrentInstance()
const inList = ref([])
const open = ref(false)
const loading = ref(true)
const showSearch = ref(true)
const ids = ref([])
const single = ref(true)
const multiple = ref(true)
const total = ref(0)
const title = ref("")
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
docDate: null,
businessType: null,
repositoryName: null,
materialName: null,
},
rules: {
}
})
/*** 用户导入参数 */
const upload = reactive({
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url: import.meta.env.VITE_APP_BASE_API + "/stock/in/importData"
})
/** 导入按钮操作 */
function handleImport() {
upload.title = "入库记录导入"
upload.open = true
}
/** 提交上传文件 */
function submitFileForm() {
proxy.$refs["uploadRef"].submit()
}
/**文件上传中处理 */
const handleFileUploadProgress = (event, file, fileList) => {
upload.isUploading = true
}
/** 文件上传成功处理 */
const handleFileSuccess = (response, file, fileList) => {
upload.open = false
upload.isUploading = false
proxy.$refs["uploadRef"].handleRemove(file)
proxy.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true })
getList()
}
const { queryParams, form, rules } = toRefs(data)
/** 查询入库记录列表 */
function getList() {
loading.value = true
listIn(queryParams.value).then(response => {
inList.value = response.rows
total.value = response.total
loading.value = false
})
}
// 取消按钮
function cancel() {
open.value = false
reset()
}
// 表单重置
function reset() {
form.value = {
stockInCode: null,
docDate: null,
createDate: null,
docId: null,
businessType: null,
repositoryId: null,
repositoryName: null,
stockInType: null,
supplierId: null,
supplierName: null,
departmentId: null,
departmentName: null,
operatorId: null,
operatorName: null,
remark: null,
single: null,
reviewer: null,
materialId: null,
materialName: null,
materialSpecification: null,
materialUnit: null,
count: null,
stockInAdjustRemark: null
}
proxy.resetForm("inRef")
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1
getList()
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef")
handleQuery()
}
// 多选框选中数据
function handleSelectionChange(selection) {
ids.value = selection.map(item => item.stockInCode)
single.value = selection.length != 1
multiple.value = !selection.length
}
/** 新增按钮操作 */
function handleAdd() {
reset()
open.value = true
title.value = "添加入库记录"
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset()
const _stockInCode = row.stockInCode || ids.value
getIn(_stockInCode).then(response => {
form.value = response.data
open.value = true
title.value = "修改入库记录"
})
}
/** 提交按钮 */
function submitForm() {
proxy.$refs["inRef"].validate(valid => {
if (valid) {
if (form.value.stockInCode != null) {
updateIn(form.value).then(response => {
proxy.$modal.msgSuccess("修改成功")
open.value = false
getList()
})
} else {
addIn(form.value).then(response => {
proxy.$modal.msgSuccess("新增成功")
open.value = false
getList()
})
}
}
})
}
/** 删除按钮操作 */
function handleDelete(row) {
const _stockInCodes = row.stockInCode || ids.value
proxy.$modal.confirm('是否确认删除入库记录编号为"' + _stockInCodes + '"的数据项?').then(function () {
return delIn(_stockInCodes)
}).then(() => {
getList()
proxy.$modal.msgSuccess("删除成功")
}).catch(() => { })
}
/** 导出按钮操作 */
function handleExport() {
proxy.download('stock/in/export', {
...queryParams.value
}, `in_${new Date().getTime()}.xlsx`)
}
getList()
</script>