style:仓储管理中英文

main
黄伟杰 20 hours ago
parent f88c124173
commit 56478433ae

@ -44,6 +44,7 @@ export default {
importMessage: 'Whether to confirm import data item?',
createSuccess: 'Create Success',
updateSuccess: 'Update Success',
total: 'Total',
delMessage: 'Delete the selected data?',
delDataMessage: 'Delete the data?',
delNoData: 'Please select the data to delete',
@ -57,6 +58,203 @@ export default {
copySuccess: 'Copy Success',
copyError: 'Copy Error'
},
ErpStock: {
Warehouse: {
name: 'Warehouse Name',
status: 'Warehouse Status',
address: 'Warehouse Address',
warehousePrice: 'Storage Fee',
truckagePrice: 'Truckage Fee',
principal: 'Principal',
remark: 'Remark',
sort: 'Sort',
defaultStatus: 'Default Status',
createTime: 'Create Time',
placeholderName: 'Please enter warehouse name',
placeholderStatus: 'Please select warehouse status',
placeholderAddress: 'Please enter warehouse address',
placeholderPrincipal: 'Please enter principal',
placeholderSort: 'Please enter sort',
placeholderRemark: 'Please enter remark',
validatorNameRequired: 'Warehouse name is required',
validatorSortRequired: 'Sort is required',
validatorStatusRequired: 'Status is required',
confirmDefaultStatus: 'Are you sure to {action} "{name}" as default?',
set: 'set',
cancel: 'cancel',
exportName: 'Warehouse.xls'
},
Stock: {
product: 'Product',
warehouse: 'Warehouse',
code: 'Code',
name: 'Name',
category: 'Category',
unit: 'Unit',
count: 'Stock Quantity',
placeholderProduct: 'Please select product',
placeholderWarehouse: 'Please select warehouse',
exportName: 'Product Stock.xls'
},
In: {
no: 'Inbound No',
product: 'Product',
inTime: 'Inbound Time',
warehouse: 'Warehouse',
creator: 'Creator',
status: 'Status',
remark: 'Remark',
supplier: 'Supplier',
productInfo: 'Product Info',
count: 'Quantity',
price: 'Amount',
totalPrice: 'Total Price',
inType: 'Inbound Type',
tabProduct: 'Product Inbound',
tabMaterial: 'Material Inbound',
tabPart: 'Part Inbound',
tabOther: 'Other Inbound',
placeholderNo: 'Please enter inbound no',
placeholderNoAuto: 'Auto-generated on save',
placeholderProduct: 'Please select product',
placeholderWarehouse: 'Please select warehouse',
placeholderCreator: 'Please select creator',
placeholderStatus: 'Please select status',
placeholderRemark: 'Please enter remark',
placeholderSupplier: 'Please select supplier',
placeholderInTime: 'Select inbound time',
placeholderInType: 'Please select inbound type',
validatorInTimeRequired: 'Inbound time is required',
validatorInTypeRequired: 'Inbound type is required',
confirmApprove: 'Are you sure to approve this inbound order?',
confirmReverseApprove: 'Are you sure to reverse approve this inbound order?',
approveSuccess: 'Approve success',
reverseApproveSuccess: 'Reverse approve success',
exportName: 'Other Inbound Order.xls',
list: 'Inbound Product List',
addItem: 'Add Inbound Product'
},
Out: {
no: 'Outbound No',
customer: 'Customer',
outTime: 'Outbound Time',
outType: 'Outbound Type',
warehouse: 'Warehouse',
remark: 'Remark',
file: 'Attachment',
list: 'Outbound Product List',
tabOther: 'Other Outbound',
tabPart: 'Part Outbound',
tabMaterial: 'Material Outbound',
tabProduct: 'Product Outbound',
tabPick: 'Pick Outbound',
placeholderNo: 'Auto-generated on save',
placeholderCustomer: 'Please select customer',
placeholderOutTime: 'Select outbound time',
placeholderOutType: 'Please select outbound type',
placeholderRemark: 'Please enter remark',
validatorOutTimeRequired: 'Outbound time is required',
validatorOutTypeRequired: 'Outbound type is required',
confirmApprove: 'Are you sure to approve this outbound order?',
confirmReverseApprove: 'Are you sure to reverse approve this outbound order?',
approveSuccess: 'Approve success',
reverseApproveSuccess: 'Reverse approve success',
exportName: 'Other Outbound Order.xls',
addItem: 'Add Outbound Product'
},
Item: {
index: 'Index',
warehouse: 'Warehouse Name',
product: 'Product Name',
stock: 'Stock',
barcode: 'Barcode',
unit: 'Unit',
count: 'Quantity',
price: 'Price',
totalPrice: 'Total Price',
remark: 'Remark',
action: 'Action',
placeholderWarehouse: 'Please select warehouse',
placeholderProduct: 'Please select product',
validatorWarehouseRequired: 'Warehouse is required',
validatorProductRequired: 'Product is required',
validatorCountRequired: 'Quantity is required'
},
Check: {
no: 'Check No',
product: 'Product',
checkTime: 'Check Time',
warehouse: 'Warehouse',
creator: 'Creator',
status: 'Status',
remark: 'Remark',
productNames: 'Product Names',
count: 'Quantity',
price: 'Amount',
totalPrice: 'Total Price',
placeholderNo: 'Please enter check no',
placeholderNoAuto: 'Auto-generated on save',
placeholderProduct: 'Please select product',
placeholderWarehouse: 'Please select warehouse',
placeholderCreator: 'Please select creator',
placeholderStatus: 'Please select status',
placeholderRemark: 'Please enter remark',
placeholderCheckTime: 'Select check time',
validatorCheckTimeRequired: 'Check time is required',
confirmApprove: 'Are you sure to approve this check order?',
confirmReverseApprove: 'Are you sure to reverse approve this check order?',
approveSuccess: 'Approve success',
reverseApproveSuccess: 'Reverse approve success',
exportName: 'Check Order.xls',
list: 'Check Product List',
addItem: 'Add Check Product',
item: {
warehouse: 'Warehouse Name',
bookStock: 'Book Stock',
actualStock: 'Actual Stock',
profitLoss: 'Profit/Loss',
placeholderWarehouse: 'Please select warehouse name',
validatorWarehouseRequired: 'Warehouse name is required'
}
},
Move: {
no: 'Transfer No',
product: 'Product',
moveTime: 'Transfer Time',
fromWarehouse: 'Warehouse',
creator: 'Creator',
status: 'Status',
remark: 'Remark',
productNames: 'Product Info',
count: 'Quantity',
price: 'Amount',
totalPrice: 'Total Price',
placeholderNo: 'Please enter transfer no',
placeholderNoAuto: 'Auto-generated on save',
placeholderProduct: 'Please select product',
placeholderWarehouse: 'Please select warehouse',
placeholderCreator: 'Please select creator',
placeholderStatus: 'Please select status',
placeholderRemark: 'Please enter remark',
placeholderMoveTime: 'Select transfer time',
validatorMoveTimeRequired: 'Transfer time is required',
confirmApprove: 'Are you sure to approve this transfer order?',
confirmReverseApprove: 'Are you sure to reverse approve this transfer order?',
approveSuccess: 'Approve success',
reverseApproveSuccess: 'Reverse approve success',
exportName: 'Stock Transfer Order.xls',
list: 'Transfer Product List',
addItem: 'Add Transfer Product',
item: {
fromWarehouse: 'From Warehouse',
toWarehouse: 'To Warehouse',
placeholderFromWarehouse: 'Please select from warehouse',
placeholderToWarehouse: 'Please select to warehouse',
validatorFromWarehouseRequired: 'From warehouse is required',
validatorToWarehouseRequired: 'To warehouse is required'
}
}
},
lock: {
lockScreen: 'Lock screen',
lock: 'Lock',

@ -44,6 +44,7 @@ export default {
importMessage: '是否确认导入数据项?',
createSuccess: '新增成功',
updateSuccess: '修改成功',
total: '合计',
delMessage: '是否删除所选中数据?',
delDataMessage: '是否删除数据?',
delNoData: '请选择需要删除的数据',
@ -58,6 +59,203 @@ export default {
copyError: '复制失败',
code:'编码保存后自动生成'
},
ErpStock: {
Warehouse: {
name: '仓库名称',
status: '仓库状态',
address: '仓库地址',
warehousePrice: '仓储费',
truckagePrice: '搬运费',
principal: '负责人',
remark: '备注',
sort: '排序',
defaultStatus: '是否默认',
createTime: '创建时间',
placeholderName: '请输入仓库名称',
placeholderStatus: '请选择仓库状态',
placeholderAddress: '请输入仓库地址',
placeholderPrincipal: '请输入负责人',
placeholderSort: '请输入排序',
placeholderRemark: '请输入备注',
validatorNameRequired: '仓库名称不能为空',
validatorSortRequired: '排序不能为空',
validatorStatusRequired: '开启状态不能为空',
confirmDefaultStatus: '确认要{action}"{name}"默认吗?',
set: '设置',
cancel: '取消',
exportName: '仓库.xls'
},
Stock: {
product: '产品',
warehouse: '仓库',
code: '编码',
name: '名称',
category: '分类',
unit: '单位',
count: '库存量',
placeholderProduct: '请选择产品',
placeholderWarehouse: '请选择仓库',
exportName: '产品库存.xls'
},
In: {
no: '入库单号',
product: '产品',
inTime: '入库时间',
warehouse: '仓库',
creator: '创建人',
status: '状态',
remark: '备注',
supplier: '供应商',
productInfo: '产品信息',
count: '数量',
price: '金额',
totalPrice: '合计金额',
inType: '入库类型',
tabProduct: '产品入库',
tabMaterial: '原料入库',
tabPart: '备件入库',
tabOther: '其他入库',
placeholderNo: '请输入入库单号',
placeholderNoAuto: '保存时自动生成',
placeholderProduct: '请选择产品',
placeholderWarehouse: '请选择仓库',
placeholderCreator: '请选择创建人',
placeholderStatus: '请选择状态',
placeholderRemark: '请输入备注',
placeholderSupplier: '请选择供应商',
placeholderInTime: '选择入库时间',
placeholderInType: '请选择入库类型',
validatorInTimeRequired: '入库时间不能为空',
validatorInTypeRequired: '入库类型不能为空',
confirmApprove: '确定审批该入库单吗?',
confirmReverseApprove: '确定反审批该入库单吗?',
approveSuccess: '审批成功',
reverseApproveSuccess: '反审批成功',
exportName: '其它入库单.xls',
list: '入库产品清单',
addItem: '添加入库产品'
},
Out: {
no: '出库单号',
customer: '客户',
outTime: '出库时间',
outType: '出库类型',
warehouse: '仓库',
remark: '备注',
file: '附件',
list: '出库产品清单',
tabOther: '其他出库',
tabPart: '备件出库',
tabMaterial: '原料出库',
tabProduct: '产品出库',
tabPick: '领料出库',
placeholderNo: '保存时自动生成',
placeholderCustomer: '请选择客户',
placeholderOutTime: '选择出库时间',
placeholderOutType: '请选择出库类型',
placeholderRemark: '请输入备注',
validatorOutTimeRequired: '出库时间不能为空',
validatorOutTypeRequired: '出库类型不能为空',
confirmApprove: '确定审批该出库单吗?',
confirmReverseApprove: '确定反审批该出库单吗?',
approveSuccess: '审批成功',
reverseApproveSuccess: '反审批成功',
exportName: '其它出库单.xls',
addItem: '添加出库产品'
},
Item: {
index: '序号',
warehouse: '仓库名称',
product: '产品名称',
stock: '库存',
barcode: '条码',
unit: '单位',
count: '数量',
price: '产品单价',
totalPrice: '合计金额',
remark: '备注',
action: '操作',
placeholderWarehouse: '请选择仓库',
placeholderProduct: '请选择产品',
validatorWarehouseRequired: '仓库不能为空',
validatorProductRequired: '产品不能为空',
validatorCountRequired: '产品数量不能为空'
},
Check: {
no: '盘点单号',
product: '产品',
checkTime: '盘点时间',
warehouse: '仓库',
creator: '创建人',
status: '状态',
remark: '备注',
productNames: '产品物料名称',
count: '数量',
price: '金额',
totalPrice: '合计金额',
placeholderNo: '请输入盘点单号',
placeholderNoAuto: '保存时自动生成',
placeholderProduct: '请选择产品',
placeholderWarehouse: '请选择仓库',
placeholderCreator: '请选择创建人',
placeholderStatus: '请选择状态',
placeholderRemark: '请输入备注',
placeholderCheckTime: '选择盘点时间',
validatorCheckTimeRequired: '盘点时间不能为空',
confirmApprove: '确定审批该盘点单吗?',
confirmReverseApprove: '确定反审批该盘点单吗?',
approveSuccess: '审批成功',
reverseApproveSuccess: '反审批成功',
exportName: '其它盘点单.xls',
list: '盘点产品物料清单',
addItem: '添加盘点产品',
item: {
warehouse: '仓库名字',
bookStock: '账面库存',
actualStock: '实际库存',
profitLoss: '盈亏数量',
placeholderWarehouse: '请选择仓库名字',
validatorWarehouseRequired: '仓库名字不能为空'
}
},
Move: {
no: '调拨单号',
product: '产品',
moveTime: '调度时间',
fromWarehouse: '仓库',
creator: '创建人',
status: '状态',
remark: '备注',
productNames: '产品信息',
count: '数量',
price: '金额',
totalPrice: '合计金额',
placeholderNo: '请输入调拨单号',
placeholderNoAuto: '保存时自动生成',
placeholderProduct: '请选择产品',
placeholderWarehouse: '请选择仓库',
placeholderCreator: '请选择创建人',
placeholderStatus: '请选择状态',
placeholderRemark: '请输入备注',
placeholderMoveTime: '选择调度时间',
validatorMoveTimeRequired: '调度时间不能为空',
confirmApprove: '确定审批该调拨单吗?',
confirmReverseApprove: '确定反审批该调拨单吗?',
approveSuccess: '审批成功',
reverseApproveSuccess: '反审批成功',
exportName: '库存调拨单.xls',
list: '调度产品清单',
addItem: '添加调度产品',
item: {
fromWarehouse: '调出仓库',
toWarehouse: '调入仓库',
placeholderFromWarehouse: '请选择调出仓库',
placeholderToWarehouse: '请选择调入仓库',
validatorFromWarehouseRequired: '调出仓库不能为空',
validatorToWarehouseRequired: '调入仓库不能为空'
}
}
},
lock: {
lockScreen: '锁定屏幕',
lock: '锁定',

@ -4,39 +4,39 @@
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
label-width="auto"
v-loading="formLoading"
:disabled="disabled"
>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="盘点单号" prop="no">
<el-input disabled v-model="formData.no" placeholder="保存时自动生成" />
<el-form-item :label="t('ErpStock.Check.no')" prop="no">
<el-input disabled v-model="formData.no" :placeholder="t('ErpStock.Check.placeholderNoAuto')" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="盘点时间" prop="checkTime">
<el-form-item :label="t('ErpStock.Check.checkTime')" prop="checkTime">
<el-date-picker
v-model="formData.checkTime"
type="date"
value-format="x"
placeholder="选择盘点时间"
:placeholder="t('ErpStock.Check.placeholderCheckTime')"
class="!w-1/1"
/>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('ErpStock.Check.remark')" prop="remark">
<el-input
type="textarea"
v-model="formData.remark"
:rows="1"
placeholder="请输入备注"
:placeholder="t('ErpStock.Check.placeholderRemark')"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="fileUrl">
<el-form-item :label="t('ErpStock.Out.file')" prop="fileUrl">
<UploadFile :is-show-tip="false" v-model="formData.fileUrl" :limit="1" />
</el-form-item>
</el-col>
@ -45,16 +45,16 @@
<!-- 子表的表单 -->
<ContentWrap>
<el-tabs v-model="subTabsName" class="-mt-15px -mb-10px">
<el-tab-pane label="盘点产品物料清单" name="item">
<el-tab-pane :label="t('ErpStock.Check.list')" name="item">
<StockCheckItemForm ref="itemFormRef" :items="formData.items" :disabled="disabled" />
</el-tab-pane>
</el-tabs>
</ContentWrap>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading" v-if="!disabled">
{{ t('common.ok') }}
</el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="dialogVisible = false">{{ t('common.cancel') }}</el-button>
</template>
</Dialog>
</template>
@ -81,7 +81,7 @@ const formData = ref({
items: []
})
const formRules = reactive({
checkTime: [{ required: true, message: '盘点时间不能为空', trigger: 'blur' }]
checkTime: [{ required: true, message: t('ErpStock.Check.validatorCheckTimeRequired'), trigger: 'blur' }]
})
const disabled = computed(() => formType.value === 'detail')
const formRef = ref() // Ref

@ -9,8 +9,8 @@
:disabled="disabled"
>
<el-table :data="formData" show-summary :summary-method="getSummaries" class="-mt-10px">
<el-table-column label="序号" type="index" align="center" width="60" />
<el-table-column label="仓库名字" min-width="125">
<el-table-column :label="t('ErpStock.Item.index')" type="index" align="center" width="60" />
<el-table-column :label="t('ErpStock.Check.item.warehouse')" min-width="125">
<template #default="{ row, $index }">
<el-form-item
:prop="`${$index}.warehouseId`"
@ -21,7 +21,7 @@
v-model="row.warehouseId"
clearable
filterable
placeholder="请选择仓库名字"
:placeholder="t('ErpStock.Check.item.placeholderWarehouse')"
@change="onChangeWarehouse($event, row)"
>
<el-option
@ -34,7 +34,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="产品名称" min-width="180">
<el-table-column :label="t('ErpStock.Item.product')" min-width="180">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productId`" :rules="formRules.productId" class="mb-0px!">
<el-select
@ -42,7 +42,7 @@
clearable
filterable
@change="onChangeProduct($event, row)"
placeholder="请选择产品"
:placeholder="t('ErpStock.Item.placeholderProduct')"
>
<el-option
v-for="item in productList"
@ -54,28 +54,28 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="产品物料编码" min-width="150">
<el-table-column :label="t('ErpStock.Check.item.barCode')" min-width="150">
<template #default="{ row }">
<el-form-item class="mb-0px!">
<el-input disabled v-model="row.productBarCode" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="账面库存" min-width="100">
<el-table-column :label="t('ErpStock.Check.item.bookStock')" min-width="100">
<template #default="{ row }">
<el-form-item class="mb-0px!">
<el-input disabled v-model="row.stockCount" :formatter="erpCountInputFormatter" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="单位" min-width="80">
<el-table-column :label="t('ErpStock.Item.unit')" min-width="80">
<template #default="{ row }">
<el-form-item class="mb-0px!">
<el-input disabled v-model="row.productUnitName" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="实际库存" fixed="right" min-width="140">
<el-table-column :label="t('ErpStock.Check.item.actualStock')" fixed="right" min-width="140">
<template #default="{ row, $index }">
<el-form-item
:prop="`${$index}.actualCount`"
@ -91,7 +91,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="盈亏数量" prop="count" fixed="right" min-width="110">
<el-table-column :label="t('ErpStock.Check.item.profitLoss')" prop="count" fixed="right" min-width="110">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.count`" :rules="formRules.count" class="mb-0px!">
<el-input
@ -103,7 +103,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="产品单价" fixed="right" min-width="120">
<el-table-column :label="t('ErpStock.Item.price')" fixed="right" min-width="120">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productPrice`" class="mb-0px!">
<el-input-number
@ -116,21 +116,21 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="合计金额" prop="totalPrice" fixed="right" min-width="100">
<el-table-column :label="t('ErpStock.Item.totalPrice')" prop="totalPrice" fixed="right" min-width="100">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.totalPrice`" class="mb-0px!">
<el-input disabled v-model="row.totalPrice" :formatter="erpPriceInputFormatter" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="备注" min-width="150">
<el-table-column :label="t('ErpStock.Item.remark')" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" class="mb-0px!">
<el-input v-model="row.remark" placeholder="请输入备注" />
<el-input v-model="row.remark" :placeholder="t('ErpStock.Check.placeholderRemark')" />
</el-form-item>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="60">
<el-table-column align="center" fixed="right" :label="t('ErpStock.Item.action')" width="60">
<template #default="{ $index }">
<el-button @click="handleDelete($index)" link></el-button>
</template>
@ -138,7 +138,7 @@
</el-table>
</el-form>
<el-row justify="center" class="mt-3" v-if="!disabled">
<el-button @click="handleAdd" round>+ 添加盘点产品</el-button>
<el-button @click="handleAdd" round>+ {{ t('ErpStock.Check.addItem') }}</el-button>
</el-row>
</template>
<script setup lang="ts">
@ -204,7 +204,7 @@ const getSummaries = (param: SummaryMethodProps) => {
const sums: string[] = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计'
sums[index] = t('common.total')
return
}
if (['count', 'totalPrice'].includes(column.property)) {

@ -8,23 +8,23 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
label-width="auto"
>
<el-form-item label="盘点单号" prop="no">
<el-form-item :label="t('ErpStock.Check.no')" prop="no">
<el-input
v-model="queryParams.no"
placeholder="请输入盘点单号"
:placeholder="t('ErpStock.Check.placeholderNo')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="产品" prop="productId">
<el-form-item :label="t('ErpStock.Check.product')" prop="productId">
<el-select
v-model="queryParams.productId"
clearable
filterable
placeholder="请选择产品"
:placeholder="t('ErpStock.Check.placeholderProduct')"
class="!w-240px"
>
<el-option
@ -35,23 +35,23 @@
/>
</el-select>
</el-form-item>
<el-form-item label="盘点时间" prop="checkTime">
<el-form-item :label="t('ErpStock.Check.checkTime')" prop="checkTime">
<el-date-picker
v-model="queryParams.checkTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:start-placeholder="t('common.startTimeText')"
:end-placeholder="t('common.endTimeText')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="仓库" prop="warehouseId">
<el-form-item :label="t('ErpStock.Check.warehouse')" prop="warehouseId">
<el-select
v-model="queryParams.warehouseId"
clearable
filterable
placeholder="请选择仓库"
:placeholder="t('ErpStock.Check.placeholderWarehouse')"
class="!w-240px"
>
<el-option
@ -62,12 +62,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="创建人" prop="creator">
<el-form-item :label="t('ErpStock.Check.creator')" prop="creator">
<el-select
v-model="queryParams.creator"
clearable
filterable
placeholder="请选择创建人"
:placeholder="t('ErpStock.Check.placeholderCreator')"
class="!w-240px"
>
<el-option
@ -78,8 +78,8 @@
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-form-item :label="t('ErpStock.Check.status')" prop="status">
<el-select v-model="queryParams.status" :placeholder="t('ErpStock.Check.placeholderStatus')" clearable class="!w-240px">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ERP_AUDIT_STATUS)"
:key="dict.value"
@ -88,25 +88,25 @@
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="备注" prop="remark">
<!-- <el-form-item :label="t('ErpStock.Check.remark')" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
:placeholder="t('ErpStock.Check.placeholderRemark')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('common.query') }}</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['erp:stock-check:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
<Icon icon="ep:plus" class="mr-5px" /> {{ t('action.add') }}
</el-button>
<el-button
type="success"
@ -115,7 +115,7 @@
:loading="exportLoading"
v-hasPermi="['erp:stock-check:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
<Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
</el-button>
<el-button
type="danger"
@ -124,7 +124,7 @@
v-hasPermi="['erp:stock-check:delete']"
:disabled="selectionList.length === 0"
>
<Icon icon="ep:delete" class="mr-5px" /> 删除
<Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }}
</el-button>
</el-form-item>
</el-form>
@ -139,44 +139,44 @@
:show-overflow-tooltip="true"
@selection-change="handleSelectionChange"
>
<el-table-column width="30" label="选择" type="selection" />
<el-table-column label="盘点单号" align="center" prop="no" />
<!-- <el-table-column label="产品物料编码" align="left" sortable prop="productBarCode" min-width="200" /> -->
<el-table-column label="产品物料名称" align="left" sortable prop="productNames"/>
<el-table-column width="30" :label="t('action.select')" type="selection" />
<el-table-column :label="t('ErpStock.Check.no')" align="center" prop="no" />
<!-- <el-table-column :label="t('ErpStock.Check.productBarCode')" align="left" sortable prop="productBarCode" min-width="200" /> -->
<el-table-column :label="t('ErpStock.Check.productNames')" align="left" sortable prop="productNames"/>
<el-table-column
label="盘点时间"
:label="t('ErpStock.Check.checkTime')"
align="center"
prop="checkTime"
:formatter="dateFormatter2"
/>
<el-table-column label="创建人" align="center" prop="creatorName" />
<el-table-column :label="t('ErpStock.Check.creator')" align="center" prop="creatorName" />
<el-table-column
label="数量"
:label="t('ErpStock.Check.count')"
align="right"
sortable
prop="totalCount"
:formatter="erpCountTableColumnFormatter"
/>
<el-table-column
label="金额"
:label="t('ErpStock.Check.price')"
align="right"
sortable
prop="totalPrice"
:formatter="erpPriceTableColumnFormatter"
/>
<el-table-column label="状态" align="center" fixed="right" width="90" prop="status">
<el-table-column :label="t('ErpStock.Check.status')" align="center" fixed="right" width="90" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ERP_AUDIT_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="220">
<el-table-column :label="t('action.operate')" align="center" fixed="right" width="220">
<template #default="scope">
<el-button
link
@click="openForm('detail', scope.row.id)"
v-hasPermi="['erp:stock-check:query']"
>
详情
{{ t('action.detail') }}
</el-button>
<el-button
link
@ -185,7 +185,7 @@
v-hasPermi="['erp:stock-check:update']"
:disabled="scope.row.status === 20"
>
编辑
{{ t('action.edit') }}
</el-button>
<el-button
link
@ -194,7 +194,7 @@
v-hasPermi="['erp:stock-check:update-status']"
v-if="scope.row.status === 10"
>
审批
{{ t('ErpStock.Check.confirmApprove').replace('确定', '').replace('该盘点单吗?', '') }}
</el-button>
<el-button
link
@ -203,7 +203,7 @@
v-hasPermi="['erp:stock-check:update-status']"
v-else
>
反审批
{{ t('ErpStock.Check.confirmReverseApprove').replace('确定', '').replace('该盘点单吗?', '') }}
</el-button>
<el-button
link
@ -211,7 +211,7 @@
@click="handleDelete([scope.row.id])"
v-hasPermi="['erp:stock-check:delete']"
>
删除
{{ t('action.del') }}
</el-button>
</template>
</el-table-column>
@ -315,10 +315,10 @@ const handleDelete = async (ids: number[]) => {
const handleUpdateStatus = async (id: number, status: number) => {
try {
//
await message.confirm(`确定${status === 20 ? '审批' : '反审批'}该盘点单吗?`)
await message.confirm(status === 20 ? t('ErpStock.Check.confirmApprove') : t('ErpStock.Check.confirmReverseApprove'))
//
await StockCheckApi.updateStockCheckStatus(id, status)
message.success(`${status === 20 ? '审批' : '反审批'}成功`)
message.success(status === 20 ? t('ErpStock.Check.approveSuccess') : t('ErpStock.Check.reverseApproveSuccess'))
//
await getList()
} catch {}
@ -332,7 +332,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await StockCheckApi.exportStockCheck(queryParams)
download.excel(data, '其它盘点单.xls')
download.excel(data, t('ErpStock.Check.exportName'))
} catch {
} finally {
exportLoading.value = false

@ -8,94 +8,72 @@
v-loading="formLoading"
:disabled="disabled"
>
<el-form-item prop="code">
<template #label>
<span>
入库单号
<el-tooltip content="入库单号" placement="top">
<Icon icon="ep:question-filled" />
</el-tooltip>
</span>
</template>
<el-row :gutter="10" style="width: 100%;">
<el-col :xs="24" :sm="18" :md="16" :lg="14" :xl="12">
<el-input
:disabled="formData.isCode == true || formType === 'update'"
v-model="formData.no"
placeholder="编码保存后自动生成"
/>
</el-col>
<el-col :xs="24" :sm="6" :md="4" :lg="3" :xl="2">
<div>
<el-switch
v-model="formData.isCode"
:disabled="formType === 'update'"
/>
</div>
</el-col>
</el-row>
</el-form-item>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="入库类型" prop="inType">
<el-form-item :label="t('ErpStock.In.no')" prop="no">
<el-input disabled v-model="formData.no" :placeholder="t('ErpStock.In.placeholderNoAuto')" />
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<el-form-item :label="t('ErpStock.In.supplier')" prop="supplierId">
<el-select
v-model="formData.inType"
v-model="formData.supplierId"
clearable
filterable
placeholder="请选择入库类型"
:placeholder="t('ErpStock.In.placeholderSupplier')"
class="!w-1/1"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
v-for="item in supplierList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
</el-col> -->
<el-col :span="8">
<el-form-item label="入库时间" prop="inTime">
<el-form-item :label="t('ErpStock.In.inTime')" prop="inTime">
<el-date-picker
v-model="formData.inTime"
type="date"
value-format="x"
placeholder="选择入库时间"
:placeholder="t('ErpStock.In.placeholderInTime')"
class="!w-1/1"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="供应商" prop="supplierId">
<el-form-item :label="t('ErpStock.In.inType')" prop="inType">
<el-select
v-model="formData.supplierId"
v-model="formData.inType"
clearable
filterable
placeholder="请选择供应商"
:placeholder="t('ErpStock.In.placeholderInType')"
class="!w-1/1"
>
<el-option
v-for="item in supplierList"
:key="item.id"
:label="item.name"
:value="item.id"
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('ErpStock.In.remark')" prop="remark">
<el-input
type="textarea"
v-model="formData.remark"
:rows="1"
placeholder="请输入备注"
:placeholder="t('ErpStock.In.placeholderRemark')"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="fileUrl">
<el-form-item :label="t('ErpStock.Out.file')" prop="fileUrl">
<UploadFile :is-show-tip="false" v-model="formData.fileUrl" :limit="1" />
</el-form-item>
</el-col>
@ -104,16 +82,16 @@
<!-- 子表的表单 -->
<ContentWrap>
<el-tabs v-model="subTabsName" class="-mt-15px -mb-10px">
<el-tab-pane label="入库产品清单" name="item">
<el-tab-pane :label="t('ErpStock.In.list')" name="item">
<StockInItemForm ref="itemFormRef" :items="formData.items" :disabled="disabled" />
</el-tab-pane>
</el-tabs>
</ContentWrap>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading" v-if="!disabled">
{{ t('common.ok') }}
</el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="dialogVisible = false">{{ t('common.cancel') }}</el-button>
</template>
</Dialog>
</template>
@ -144,8 +122,8 @@ const formData = ref({
no: undefined
})
const formRules = reactive({
inTime: [{ required: true, message: '入库时间不能为空', trigger: 'blur' }],
inType: [{ required: true, message: '入库类型不能为空', trigger: 'blur' }]
inTime: [{ required: true, message: t('ErpStock.In.validatorInTimeRequired'), trigger: 'blur' }],
inType: [{ required: true, message: t('ErpStock.In.validatorInTypeRequired'), trigger: 'blur' }]
})
const disabled = computed(() => formType.value === 'detail')
const formRef = ref() // Ref

@ -7,23 +7,23 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
label-width="auto"
>
<el-form-item label="入库单号" prop="no">
<el-form-item :label="t('ErpStock.In.no')" prop="no">
<el-input
v-model="queryParams.no"
placeholder="请输入入库单号"
:placeholder="t('ErpStock.In.placeholderNo')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="产品" prop="productId">
<el-form-item :label="t('ErpStock.In.product')" prop="productId">
<el-select
v-model="queryParams.productId"
clearable
filterable
placeholder="请选择产品"
:placeholder="t('ErpStock.In.placeholderProduct')"
class="!w-240px"
>
<el-option
@ -34,13 +34,13 @@
/>
</el-select>
</el-form-item>
<el-form-item label="入库时间" prop="inTime">
<el-form-item :label="t('ErpStock.In.inTime')" prop="inTime">
<el-date-picker
v-model="queryParams.inTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:start-placeholder="t('common.startTimeText')"
:end-placeholder="t('common.endTimeText')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px"
/>
@ -61,12 +61,12 @@
/>
</el-select>
</el-form-item> -->
<el-form-item label="仓库" prop="warehouseId">
<el-form-item :label="t('ErpStock.In.warehouse')" prop="warehouseId">
<el-select
v-model="queryParams.warehouseId"
clearable
filterable
placeholder="请选择仓库"
:placeholder="t('ErpStock.In.placeholderWarehouse')"
class="!w-240px"
>
<el-option
@ -77,12 +77,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="创建人" prop="creator">
<el-form-item :label="t('ErpStock.In.creator')" prop="creator">
<el-select
v-model="queryParams.creator"
clearable
filterable
placeholder="请选择创建人"
:placeholder="t('ErpStock.In.placeholderCreator')"
class="!w-240px"
>
<el-option
@ -93,8 +93,8 @@
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-form-item :label="t('ErpStock.In.status')" prop="status">
<el-select v-model="queryParams.status" :placeholder="t('ErpStock.In.placeholderStatus')" clearable class="!w-240px">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ERP_AUDIT_STATUS)"
:key="dict.value"
@ -103,25 +103,25 @@
/>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('ErpStock.In.remark')" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
:placeholder="t('ErpStock.In.placeholderRemark')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('common.query') }}</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['erp:stock-in:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
<Icon icon="ep:plus" class="mr-5px" /> {{ t('action.add') }}
</el-button>
<el-button
type="success"
@ -130,7 +130,7 @@
:loading="exportLoading"
v-hasPermi="['erp:stock-in:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
<Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
</el-button>
<el-button
type="danger"
@ -139,7 +139,7 @@
v-hasPermi="['erp:stock-in:delete']"
:disabled="selectionList.length === 0"
>
<Icon icon="ep:delete" class="mr-5px" /> 删除
<Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }}
</el-button>
</el-form-item>
</el-form>
@ -148,10 +148,10 @@
<!-- 列表 -->
<ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="产品入库" name="产品入库" />
<el-tab-pane label="原料入库" name="原料入库" />
<el-tab-pane label="备件入库" name="备件入库" />
<el-tab-pane label="其他入库" name="其他入库" />
<el-tab-pane :label="t('ErpStock.In.tabProduct')" name="产品入库" />
<el-tab-pane :label="t('ErpStock.In.tabMaterial')" name="原料入库" />
<el-tab-pane :label="t('ErpStock.In.tabPart')" name="备件入库" />
<el-tab-pane :label="t('ErpStock.In.tabOther')" name="其他入库" />
</el-tabs>
<el-table
@ -162,19 +162,19 @@
@selection-change="handleSelectionChange"
>
<el-table-column width="30" label="选择" type="selection" />
<el-table-column min-width="180" label="入库单号" align="center" prop="no" />
<el-table-column label="产品信息" align="left" sortable prop="productNames" min-width="200" />
<el-table-column min-width="180" :label="t('ErpStock.In.no')" align="center" prop="no" />
<el-table-column :label="t('ErpStock.In.productInfo')" align="left" sortable prop="productNames" min-width="200" />
<!-- <el-table-column label="供应商" align="center" prop="supplierName" /> -->
<el-table-column
label="入库时间"
:label="t('ErpStock.In.inTime')"
align="center"
prop="inTime"
:formatter="dateFormatter2"
width="120px"
/>
<el-table-column label="创建人" align="center" prop="creatorName" />
<el-table-column :label="t('ErpStock.In.creator')" align="center" prop="creatorName" />
<el-table-column
label="数量"
:label="t('ErpStock.In.count')"
align="right"
sortable
prop="totalCount"
@ -187,19 +187,19 @@
prop="totalPrice"
:formatter="erpPriceTableColumnFormatter"
/> -->
<el-table-column label="状态" align="center" fixed="right" width="90" prop="status">
<el-table-column :label="t('ErpStock.In.status')" align="center" fixed="right" width="90" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ERP_AUDIT_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="220">
<el-table-column :label="t('action.operate')" align="center" fixed="right" width="220">
<template #default="scope">
<el-button
link
@click="openForm('detail', scope.row.id)"
v-hasPermi="['erp:stock-in:query']"
>
详情
{{ t('action.detail') }}
</el-button>
<el-button
link
@ -208,7 +208,7 @@
v-hasPermi="['erp:stock-in:update']"
:disabled="scope.row.status === 20"
>
编辑
{{ t('action.edit') }}
</el-button>
<el-button
link
@ -234,7 +234,7 @@
@click="handleDelete([scope.row.id])"
v-hasPermi="['erp:stock-in:delete']"
>
删除
{{ t('action.del') }}
</el-button>
</template>
</el-table-column>
@ -341,10 +341,10 @@ const handleDelete = async (ids: number[]) => {
const handleUpdateStatus = async (id: number, status: number) => {
try {
//
await message.confirm(`确定${status === 20 ? '审批' : '反审批'}该入库单吗?`)
await message.confirm(status === 20 ? t('ErpStock.In.confirmApprove') : t('ErpStock.In.confirmReverseApprove'))
//
await StockInApi.updateStockInStatus(id, status)
message.success(`${status === 20 ? '审批' : '反审批'}成功`)
message.success(status === 20 ? t('ErpStock.In.approveSuccess') : t('ErpStock.In.reverseApproveSuccess'))
//
await getList()
} catch {}
@ -358,7 +358,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await StockInApi.exportStockIn(queryParams)
download.excel(data, '其它入库单.xls')
download.excel(data, t('ErpStock.In.exportName'))
} catch {
} finally {
exportLoading.value = false

@ -4,39 +4,39 @@
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
label-width="auto"
v-loading="formLoading"
:disabled="disabled"
>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="调拨单号" prop="no">
<el-input disabled v-model="formData.no" placeholder="保存时自动生成" />
<el-form-item :label="t('ErpStock.Move.no')" prop="no">
<el-input disabled v-model="formData.no" :placeholder="t('ErpStock.Move.placeholderNoAuto')" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="调拨时间" prop="moveTime">
<el-form-item :label="t('ErpStock.Move.moveTime')" prop="moveTime">
<el-date-picker
v-model="formData.moveTime"
type="date"
value-format="x"
placeholder="选择调度时间"
:placeholder="t('ErpStock.Move.placeholderMoveTime')"
class="!w-1/1"
/>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('ErpStock.Move.remark')" prop="remark">
<el-input
type="textarea"
v-model="formData.remark"
:rows="1"
placeholder="请输入备注"
:placeholder="t('ErpStock.Move.placeholderRemark')"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="fileUrl">
<el-form-item :label="t('ErpStock.Out.file')" prop="fileUrl">
<UploadFile :is-show-tip="false" v-model="formData.fileUrl" :limit="1" />
</el-form-item>
</el-col>
@ -45,16 +45,16 @@
<!-- 子表的表单 -->
<ContentWrap>
<el-tabs v-model="subTabsName" class="-mt-15px -mb-10px">
<el-tab-pane label="调度产品清单" name="item">
<el-tab-pane :label="t('ErpStock.Move.list')" name="item">
<StockMoveItemForm ref="itemFormRef" :items="formData.items" :disabled="disabled" />
</el-tab-pane>
</el-tabs>
</ContentWrap>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading" v-if="!disabled">
{{ t('common.ok') }}
</el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="dialogVisible = false">{{ t('common.cancel') }}</el-button>
</template>
</Dialog>
</template>
@ -81,7 +81,7 @@ const formData = ref({
items: []
})
const formRules = reactive({
moveTime: [{ required: true, message: '调度时间不能为空', trigger: 'blur' }]
moveTime: [{ required: true, message: t('ErpStock.Move.validatorMoveTimeRequired'), trigger: 'blur' }]
})
const disabled = computed(() => formType.value === 'detail')
const formRef = ref() // Ref

@ -160,6 +160,8 @@ import {
getSumValue
} from '@/utils'
const { t } = useI18n() //
const props = defineProps<{
items: undefined
disabled: false
@ -168,10 +170,10 @@ const formLoading = ref(false) // 表单的加载中
const formData = ref([])
const formRules = reactive({
inId: [{ required: true, message: '调度编号不能为空', trigger: 'blur' }],
fromWarehouseId: [{ required: true, message: '调出仓库不能为空', trigger: 'blur' }],
toWarehouseId: [{ required: true, message: '调入仓库不能为空', trigger: 'blur' }],
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }],
count: [{ required: true, message: '产品数量不能为空', trigger: 'blur' }]
fromWarehouseId: [{ required: true, message: t('ErpStock.Move.item.validatorFromWarehouseRequired'), trigger: 'blur' }],
toWarehouseId: [{ required: true, message: t('ErpStock.Move.item.validatorToWarehouseRequired'), trigger: 'blur' }],
productId: [{ required: true, message: t('ErpStock.Item.validatorProductRequired'), trigger: 'blur' }],
count: [{ required: true, message: t('ErpStock.Item.validatorCountRequired'), trigger: 'blur' }]
})
const formRef = ref([]) // Ref
const productList = ref<ProductVO[]>([]) //
@ -208,7 +210,7 @@ const getSummaries = (param: SummaryMethodProps) => {
const sums: string[] = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计'
sums[index] = t('common.total')
return
}
if (['count', 'totalPrice'].includes(column.property)) {

@ -7,23 +7,23 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
label-width="auto"
>
<el-form-item label="调拨单号" prop="no">
<el-form-item :label="t('ErpStock.Move.no')" prop="no">
<el-input
v-model="queryParams.no"
placeholder="请输入调拨单号"
:placeholder="t('ErpStock.Move.placeholderNo')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="产品" prop="productId">
<el-form-item :label="t('ErpStock.Move.product')" prop="productId">
<el-select
v-model="queryParams.productId"
clearable
filterable
placeholder="请选择产品"
:placeholder="t('ErpStock.Move.placeholderProduct')"
class="!w-240px"
>
<el-option
@ -34,23 +34,23 @@
/>
</el-select>
</el-form-item>
<el-form-item label="调度时间" prop="moveTime">
<el-form-item :label="t('ErpStock.Move.moveTime')" prop="moveTime">
<el-date-picker
v-model="queryParams.moveTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:start-placeholder="t('common.startTimeText')"
:end-placeholder="t('common.endTimeText')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="仓库" prop="fromWarehouseId">
<el-form-item :label="t('ErpStock.Move.fromWarehouse')" prop="fromWarehouseId">
<el-select
v-model="queryParams.fromWarehouseId"
clearable
filterable
placeholder="请选择仓库"
:placeholder="t('ErpStock.Move.placeholderWarehouse')"
class="!w-240px"
>
<el-option
@ -61,12 +61,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="创建人" prop="creator">
<el-form-item :label="t('ErpStock.Move.creator')" prop="creator">
<el-select
v-model="queryParams.creator"
clearable
filterable
placeholder="请选择创建人"
:placeholder="t('ErpStock.Move.placeholderCreator')"
class="!w-240px"
>
<el-option
@ -77,8 +77,8 @@
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-form-item :label="t('ErpStock.Move.status')" prop="status">
<el-select v-model="queryParams.status" :placeholder="t('ErpStock.Move.placeholderStatus')" clearable class="!w-240px">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ERP_AUDIT_STATUS)"
:key="dict.value"
@ -87,25 +87,25 @@
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="备注" prop="remark">
<!-- <el-form-item :label="t('ErpStock.Move.remark')" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
:placeholder="t('ErpStock.Move.placeholderRemark')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('common.query') }}</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['erp:stock-move:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
<Icon icon="ep:plus" class="mr-5px" /> {{ t('action.add') }}
</el-button>
<el-button
type="success"
@ -114,7 +114,7 @@
:loading="exportLoading"
v-hasPermi="['erp:stock-move:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
<Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
</el-button>
<el-button
type="danger"
@ -123,7 +123,7 @@
v-hasPermi="['erp:stock-move:delete']"
:disabled="selectionList.length === 0"
>
<Icon icon="ep:delete" class="mr-5px" /> 删除
<Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }}
</el-button>
</el-form-item>
</el-form>
@ -138,44 +138,44 @@
:show-overflow-tooltip="true"
@selection-change="handleSelectionChange"
>
<el-table-column label="选择" type="selection" />
<el-table-column label="调拨单号" align="center" prop="no" />
<el-table-column label="产品信息" align="left" prop="productNames" />
<el-table-column :label="t('action.select')" type="selection" />
<el-table-column :label="t('ErpStock.Move.no')" align="center" prop="no" />
<el-table-column :label="t('ErpStock.Move.productNames')" align="left" prop="productNames" />
<el-table-column
label="调度时间"
:label="t('ErpStock.Move.moveTime')"
align="center"
prop="moveTime"
sortable
:formatter="dateFormatter2"
/>
<el-table-column label="创建人" align="center" prop="creatorName" />
<el-table-column :label="t('ErpStock.Move.creator')" align="center" prop="creatorName" />
<el-table-column
label="数量"
:label="t('ErpStock.Move.count')"
align="right"
sortable
prop="totalCount"
:formatter="erpCountTableColumnFormatter"
/>
<el-table-column
label="金额"
:label="t('ErpStock.Move.price')"
align="right"
sortable
prop="totalPrice"
:formatter="erpPriceTableColumnFormatter"
/>
<el-table-column label="状态" align="center" fixed="right" prop="status">
<el-table-column :label="t('ErpStock.Move.status')" align="center" fixed="right" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ERP_AUDIT_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<el-table-column :label="t('action.operate')" align="center" fixed="right">
<template #default="scope">
<el-button
link
@click="openForm('detail', scope.row.id)"
v-hasPermi="['erp:stock-move:query']"
>
详情
{{ t('action.detail') }}
</el-button>
<el-button
link
@ -184,7 +184,7 @@
v-hasPermi="['erp:stock-move:update']"
:disabled="scope.row.status === 20"
>
编辑
{{ t('action.edit') }}
</el-button>
<el-button
link
@ -193,7 +193,7 @@
v-hasPermi="['erp:stock-move:update-status']"
v-if="scope.row.status === 10"
>
审批
{{ t('ErpStock.Move.confirmApprove').replace('确定', '').replace('该调拨单吗?', '') }}
</el-button>
<el-button
link
@ -202,7 +202,7 @@
v-hasPermi="['erp:stock-move:update-status']"
v-else
>
反审批
{{ t('ErpStock.Move.confirmReverseApprove').replace('确定', '').replace('该调拨单吗?', '') }}
</el-button>
<el-button
link
@ -210,7 +210,7 @@
@click="handleDelete([scope.row.id])"
v-hasPermi="['erp:stock-move:delete']"
>
删除
{{ t('action.del') }}
</el-button>
</template>
</el-table-column>
@ -314,10 +314,10 @@ const handleDelete = async (ids: number[]) => {
const handleUpdateStatus = async (id: number, status: number) => {
try {
//
await message.confirm(`确定${status === 20 ? '审批' : '反审批'}该调拨单吗?`)
await message.confirm(status === 20 ? t('ErpStock.Move.confirmApprove') : t('ErpStock.Move.confirmReverseApprove'))
//
await StockMoveApi.updateStockMoveStatus(id, status)
message.success(`${status === 20 ? '审批' : '反审批'}成功`)
message.success(status === 20 ? t('ErpStock.Move.approveSuccess') : t('ErpStock.Move.reverseApproveSuccess'))
//
await getList()
} catch {}
@ -331,7 +331,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await StockMoveApi.exportStockMove(queryParams)
download.excel(data, '库存调拨单.xls')
download.excel(data, t('ErpStock.Move.exportName'))
} catch {
} finally {
exportLoading.value = false

@ -10,17 +10,17 @@
>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="出库单号" prop="no">
<el-input disabled v-model="formData.no" placeholder="保存时自动生成" />
<el-form-item :label="t('ErpStock.Out.no')" prop="no">
<el-input disabled v-model="formData.no" :placeholder="t('ErpStock.Out.placeholderNo')" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="客户" prop="customerId">
<el-form-item :label="t('ErpStock.Out.customer')" prop="customerId">
<el-select
v-model="formData.customerId"
clearable
filterable
placeholder="请选择客户"
:placeholder="t('ErpStock.Out.placeholderCustomer')"
class="!w-1/1"
>
<el-option
@ -33,23 +33,23 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="出库时间" prop="outTime">
<el-form-item :label="t('ErpStock.Out.outTime')" prop="outTime">
<el-date-picker
v-model="formData.outTime"
type="date"
value-format="x"
placeholder="选择出库时间"
:placeholder="t('ErpStock.Out.placeholderOutTime')"
class="!w-1/1"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="出库类型" prop="outType">
<el-form-item :label="t('ErpStock.Out.outType')" prop="outType">
<el-select
v-model="formData.outType"
clearable
filterable
placeholder="请选择出库类型"
:placeholder="t('ErpStock.Out.placeholderOutType')"
class="!w-1/1"
>
<el-option
@ -65,18 +65,18 @@
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('ErpStock.Out.remark')" prop="remark">
<el-input
type="textarea"
v-model="formData.remark"
:rows="1"
placeholder="请输入备注"
:placeholder="t('ErpStock.Out.placeholderRemark')"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="fileUrl">
<el-form-item :label="t('ErpStock.Out.file')" prop="fileUrl">
<UploadFile :is-show-tip="false" v-model="formData.fileUrl" :limit="1" />
</el-form-item>
</el-col>
@ -85,16 +85,16 @@
<!-- 子表的表单 -->
<ContentWrap>
<el-tabs v-model="subTabsName" class="-mt-15px -mb-10px">
<el-tab-pane label="出库产品清单" name="item">
<el-tab-pane :label="t('ErpStock.Out.list')" name="item">
<StockOutItemForm ref="itemFormRef" :items="formData.items" :disabled="disabled" />
</el-tab-pane>
</el-tabs>
</ContentWrap>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading" v-if="!disabled">
{{ t('common.ok') }}
</el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="dialogVisible = false">{{ t('common.cancel') }}</el-button>
</template>
</Dialog>
</template>
@ -124,8 +124,8 @@ const formData = ref({
items: []
})
const formRules = reactive({
outTime: [{ required: true, message: '出库时间不能为空', trigger: 'blur' }],
outType: [{ required: true, message: '出库类型不能为空', trigger: 'blur' }]
outTime: [{ required: true, message: t('ErpStock.Out.validatorOutTimeRequired'), trigger: 'blur' }],
outType: [{ required: true, message: t('ErpStock.Out.validatorOutTypeRequired'), trigger: 'blur' }]
})
const disabled = computed(() => formType.value === 'detail')
const formRef = ref() // Ref

@ -7,23 +7,38 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
label-width="auto"
>
<el-form-item label="出库单号" prop="no">
<el-form-item :label="t('ErpStock.Out.no')" prop="no">
<el-input
v-model="queryParams.no"
placeholder="请输入出库单号"
:placeholder="t('ErpStock.Out.placeholderNo')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="产品" prop="productId">
<el-form-item :label="t('ErpStock.Out.outType')" prop="outType">
<el-select
v-model="queryParams.outType"
clearable
filterable
:placeholder="t('ErpStock.Out.placeholderOutType')"
class="!w-240px"
>
<el-option label="其他出库" value="其他出库" />
<el-option label="备件出库" value="备件出库" />
<el-option label="原料出库" value="原料出库" />
<el-option label="产品出库" value="产品出库" />
<el-option label="领料出库" value="领料出库" disabled />
</el-select>
</el-form-item>
<el-form-item :label="t('ErpStock.Stock.product')" prop="productId">
<el-select
v-model="queryParams.productId"
clearable
filterable
placeholder="请选择产品"
:placeholder="t('ErpStock.Stock.placeholderProduct')"
class="!w-240px"
>
<el-option
@ -34,23 +49,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="出库时间" prop="outTime">
<el-date-picker
v-model="queryParams.outTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<!-- <el-form-item label="客户" prop="customerId">
<el-form-item :label="t('ErpStock.Out.customer')" prop="customerId">
<el-select
v-model="queryParams.customerId"
clearable
filterable
placeholder="请选择客户"
:placeholder="t('ErpStock.Out.placeholderCustomer')"
class="!w-240px"
>
<el-option
@ -60,13 +64,24 @@
:value="item.id"
/>
</el-select>
</el-form-item> -->
<el-form-item label="仓库" prop="warehouseId">
</el-form-item>
<el-form-item :label="t('ErpStock.Out.outTime')" prop="outTime">
<el-date-picker
v-model="queryParams.outTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
:start-placeholder="t('common.startTimeText')"
:end-placeholder="t('common.endTimeText')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px"
/>
</el-form-item>
<el-form-item :label="t('ErpStock.Out.warehouse')" prop="warehouseId">
<el-select
v-model="queryParams.warehouseId"
clearable
filterable
placeholder="请选择仓库"
:placeholder="t('ErpStock.Out.placeholderWarehouse')"
class="!w-240px"
>
<el-option
@ -77,12 +92,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="创建人" prop="creator">
<el-form-item :label="t('ErpStock.In.creator')" prop="creator">
<el-select
v-model="queryParams.creator"
clearable
filterable
placeholder="请选择创建人"
:placeholder="t('ErpStock.In.placeholderCreator')"
class="!w-240px"
>
<el-option
@ -93,8 +108,8 @@
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-form-item :label="t('ErpStock.In.status')" prop="status">
<el-select v-model="queryParams.status" :placeholder="t('ErpStock.In.placeholderStatus')" clearable class="!w-240px">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ERP_AUDIT_STATUS)"
:key="dict.value"
@ -103,25 +118,25 @@
/>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('ErpStock.Out.remark')" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
:placeholder="t('ErpStock.Out.placeholderRemark')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('common.query') }}</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['erp:stock-out:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
<Icon icon="ep:plus" class="mr-5px" /> {{ t('action.add') }}
</el-button>
<el-button
type="success"
@ -130,7 +145,7 @@
:loading="exportLoading"
v-hasPermi="['erp:stock-out:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
<Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
</el-button>
<el-button
type="danger"
@ -139,7 +154,7 @@
v-hasPermi="['erp:stock-out:delete']"
:disabled="selectionList.length === 0"
>
<Icon icon="ep:delete" class="mr-5px" /> 删除
<Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }}
</el-button>
</el-form-item>
</el-form>
@ -147,14 +162,6 @@
<!-- 列表 -->
<ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="产品出库" name="产品出库" />
<el-tab-pane label="原料出库" name="原料出库" />
<el-tab-pane label="备件出库" name="备件出库" />
<el-tab-pane label="其他出库" name="其他出库" />
<el-tab-pane label="领料出库" name="领料出库" />
</el-tabs>
<el-table
v-loading="loading"
:data="list"
@ -163,20 +170,20 @@
@selection-change="handleSelectionChange"
>
<el-table-column width="30" label="选择" type="selection" />
<el-table-column min-width="180" label="出库单号" align="center" prop="no" />
<el-table-column label="产品信息" align="left" sortable prop="productNames" min-width="180" />
<!-- <el-table-column label="客户" align="center" prop="customerName" /> -->
<el-table-column min-width="180" :label="t('ErpStock.Out.no')" align="center" prop="no" />
<el-table-column min-width="100" :label="t('ErpStock.Out.outType')" align="center" prop="outType" />
<el-table-column min-width="100" :label="t('ErpStock.Out.customer')" align="center" prop="customerName" />
<el-table-column :label="t('ErpStock.In.productInfo')" align="left" sortable prop="productNames" min-width="200" />
<el-table-column
label="出库时间"
:label="t('ErpStock.Out.outTime')"
align="center"
sortable
prop="outTime"
:formatter="dateFormatter2"
width="120px"
/>
<el-table-column label="创建人" align="center" prop="creatorName" />
<el-table-column :label="t('ErpStock.In.creator')" align="center" prop="creatorName" />
<el-table-column
label="数量"
:label="t('ErpStock.In.count')"
align="right"
sortable
prop="totalCount"
@ -189,19 +196,19 @@
prop="totalPrice"
:formatter="erpPriceTableColumnFormatter"
/> -->
<el-table-column label="状态" align="center" fixed="right" width="90" prop="status">
<el-table-column :label="t('ErpStock.In.status')" align="center" fixed="right" width="90" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ERP_AUDIT_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="220">
<el-table-column :label="t('action.operate')" align="center" fixed="right" width="220">
<template #default="scope">
<el-button
link
@click="openForm('detail', scope.row.id)"
v-hasPermi="['erp:stock-out:query']"
>
详情
{{ t('action.detail') }}
</el-button>
<el-button
link
@ -210,7 +217,7 @@
v-hasPermi="['erp:stock-out:update']"
:disabled="scope.row.status === 20"
>
编辑
{{ t('action.edit') }}
</el-button>
<el-button
link
@ -236,7 +243,7 @@
@click="handleDelete([scope.row.id])"
v-hasPermi="['erp:stock-out:delete']"
>
删除
{{ t('action.del') }}
</el-button>
</template>
</el-table-column>
@ -345,10 +352,10 @@ const handleDelete = async (ids: number[]) => {
const handleUpdateStatus = async (id: number, status: number) => {
try {
//
await message.confirm(`确定${status === 20 ? '审批' : '反审批'}该出库单吗?`)
await message.confirm(status === 20 ? t('ErpStock.Out.confirmApprove') : t('ErpStock.Out.confirmReverseApprove'))
//
await StockOutApi.updateStockOutStatus(id, status)
message.success(`${status === 20 ? '审批' : '反审批'}成功`)
message.success(status === 20 ? t('ErpStock.Out.approveSuccess') : t('ErpStock.Out.reverseApproveSuccess'))
//
await getList()
} catch {}
@ -362,7 +369,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await StockOutApi.exportStockOut(queryParams)
download.excel(data, '其它出库单.xls')
download.excel(data, t('ErpStock.Out.exportName'))
} catch {
} finally {
exportLoading.value = false

@ -8,14 +8,14 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
label-width="auto"
>
<el-form-item label="产品" prop="productId">
<el-form-item :label="t('ErpStock.Stock.product')" prop="productId">
<el-select
v-model="queryParams.productId"
clearable
filterable
placeholder="请选择产品"
:placeholder="t('ErpStock.Stock.placeholderProduct')"
class="!w-240px"
>
<el-option
@ -27,12 +27,12 @@
</el-select>
</el-form-item>
<el-form-item label="仓库" prop="warehouseId">
<el-form-item :label="t('ErpStock.Stock.warehouse')" prop="warehouseId">
<el-select
v-model="queryParams.warehouseId"
clearable
filterable
placeholder="请选择仓库"
:placeholder="t('ErpStock.Stock.placeholderWarehouse')"
class="!w-240px"
>
<el-option
@ -44,15 +44,15 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('common.query') }}</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['erp:stock:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
<Icon icon="ep:plus" class="mr-5px" /> {{ t('action.add') }}
</el-button>
<el-button
type="success"
@ -61,7 +61,7 @@
:loading="exportLoading"
v-hasPermi="['erp:stock:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
<Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
</el-button>
</el-form-item>
</el-form>
@ -87,19 +87,19 @@
/>
</el-tabs>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="编码" align="left" sortable prop="barCode" />
<el-table-column label="名称" align="left" sortable prop="productName" />
<el-table-column label="分类" align="center" prop="categoryName" />
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column :label="t('ErpStock.Stock.code')" align="left" sortable prop="barCode" />
<el-table-column :label="t('ErpStock.Stock.name')" align="left" sortable prop="productName" />
<el-table-column :label="t('ErpStock.Stock.category')" align="center" prop="categoryName" />
<el-table-column :label="t('ErpStock.Stock.unit')" align="center" prop="unitName" />
<el-table-column
label="库存量"
:label="t('ErpStock.Stock.count')"
align="right"
sortable
prop="count"
:formatter="erpCountTableColumnFormatter"
/>
<el-table-column label="仓库" align="center" prop="warehouseName" />
<el-table-column :label="t('ErpStock.Stock.warehouse')" align="center" prop="warehouseName" />
</el-table>
<!-- 分页 -->
<Pagination
@ -193,7 +193,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await StockApi.exportStock(queryParams)
download.excel(data, '产品库存.xls')
download.excel(data, t('ErpStock.Stock.exportName'))
} catch {
} finally {
exportLoading.value = false

@ -8,13 +8,13 @@
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="仓库名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入仓库名称" :disabled = "formType === 'update'"/>
<el-form-item :label="t('ErpStock.Warehouse.name')" prop="name">
<el-input v-model="formData.name" :placeholder="t('ErpStock.Warehouse.placeholderName')" :disabled = "formType === 'update'"/>
</el-form-item>
<el-form-item label="仓库地址" prop="address">
<el-input v-model="formData.address" placeholder="请输入仓库地址" />
<el-form-item :label="t('ErpStock.Warehouse.address')" prop="address">
<el-input v-model="formData.address" :placeholder="t('ErpStock.Warehouse.placeholderAddress')" />
</el-form-item>
<el-form-item label="仓库状态" prop="status">
<el-form-item :label="t('ErpStock.Warehouse.status')" prop="status">
<el-radio-group v-model="formData.status">
<el-radio
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
@ -43,24 +43,24 @@
class="!w-1/1"
/>
</el-form-item> -->
<el-form-item label="负责人" prop="principal">
<el-input v-model="formData.principal" placeholder="请输入负责人" />
<el-form-item :label="t('ErpStock.Warehouse.principal')" prop="principal">
<el-input v-model="formData.principal" :placeholder="t('ErpStock.Warehouse.placeholderPrincipal')" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-form-item :label="t('ErpStock.Warehouse.sort')" prop="sort">
<el-input-number
v-model="formData.sort"
placeholder="请输入排序"
:placeholder="t('ErpStock.Warehouse.placeholderSort')"
:precision="0"
class="!w-1/1"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input type="textarea" v-model="formData.remark" placeholder="请输入备注" />
<el-form-item :label="t('ErpStock.Warehouse.remark')" prop="remark">
<el-input type="textarea" v-model="formData.remark" :placeholder="t('ErpStock.Warehouse.placeholderRemark')" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="submitForm" type="primary" :disabled="formLoading">{{ t('common.ok') }}</el-button>
<el-button @click="dialogVisible = false">{{ t('common.cancel') }}</el-button>
</template>
</Dialog>
</template>
@ -91,9 +91,9 @@ const formData = ref({
status: undefined
})
const formRules = reactive({
name: [{ required: true, message: '仓库名称不能为空', trigger: 'blur' }],
sort: [{ required: true, message: '排序不能为空', trigger: 'blur' }],
status: [{ required: true, message: '开启状态不能为空', trigger: 'blur' }]
name: [{ required: true, message: t('ErpStock.Warehouse.validatorNameRequired'), trigger: 'blur' }],
sort: [{ required: true, message: t('ErpStock.Warehouse.validatorSortRequired'), trigger: 'blur' }],
status: [{ required: true, message: t('ErpStock.Warehouse.validatorStatusRequired'), trigger: 'blur' }]
})
const formRef = ref() // Ref

@ -8,21 +8,21 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
label-width="auto"
>
<el-form-item label="仓库名称" prop="name">
<el-form-item :label="t('ErpStock.Warehouse.name')" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入仓库名称"
:placeholder="t('ErpStock.Warehouse.placeholderName')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="仓库状态" prop="status">
<el-form-item :label="t('ErpStock.Warehouse.status')" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择仓库状态"
:placeholder="t('ErpStock.Warehouse.placeholderStatus')"
clearable
class="!w-240px"
>
@ -35,15 +35,15 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> {{ t('common.query') }}</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['erp:warehouse:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
<Icon icon="ep:plus" class="mr-5px" /> {{ t('action.add') }}
</el-button>
<el-button
type="success"
@ -52,7 +52,7 @@
:loading="exportLoading"
v-hasPermi="['erp:warehouse:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
<Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
</el-button>
</el-form-item>
</el-form>
@ -61,29 +61,29 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="仓库名称" align="center" prop="name" />
<el-table-column label="仓库地址" align="center" prop="address" />
<el-table-column :label="t('ErpStock.Warehouse.name')" align="center" prop="name" />
<el-table-column :label="t('ErpStock.Warehouse.address')" align="center" prop="address" />
<el-table-column
label="仓储费"
:label="t('ErpStock.Warehouse.warehousePrice')"
align="center"
prop="warehousePrice"
:formatter="erpPriceTableColumnFormatter"
/>
<el-table-column
label="搬运费"
:label="t('ErpStock.Warehouse.truckagePrice')"
align="center"
prop="truckagePrice"
:formatter="erpPriceTableColumnFormatter"
/>
<el-table-column label="负责人" align="center" prop="principal" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="排序" align="center" prop="sort" />
<el-table-column label="状态" align="center" prop="status">
<el-table-column :label="t('ErpStock.Warehouse.principal')" align="center" prop="principal" />
<el-table-column :label="t('ErpStock.Warehouse.remark')" align="center" prop="remark" />
<el-table-column :label="t('ErpStock.Warehouse.sort')" align="center" prop="sort" />
<el-table-column :label="t('ErpStock.Warehouse.status')" align="center" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="是否默认" align="center" prop="defaultStatus">
<el-table-column :label="t('ErpStock.Warehouse.defaultStatus')" align="center" prop="defaultStatus">
<template #default="scope">
<el-switch
v-model="scope.row.defaultStatus"
@ -94,13 +94,13 @@
</template>
</el-table-column>
<el-table-column
label="创建时间"
:label="t('ErpStock.Warehouse.createTime')"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="操作" align="center">
<el-table-column :label="t('action.operate')" align="center">
<template #default="scope">
<el-button
link
@ -108,7 +108,7 @@
@click="openForm('update', scope.row.id)"
v-hasPermi="['erp:warehouse:update']"
>
编辑
{{ t('action.edit') }}
</el-button>
<el-button
link
@ -116,7 +116,7 @@
@click="handleDelete(scope.row.id)"
v-hasPermi="['erp:warehouse:delete']"
>
删除
{{ t('action.del') }}
</el-button>
</template>
</el-table-column>
@ -207,8 +207,8 @@ const handleDelete = async (id: number) => {
const handleDefaultStatusChange = async (row: WarehouseVO) => {
try {
//
const text = row.defaultStatus ? '设置' : '取消'
await message.confirm('确认要' + text + '"' + row.name + '"默认吗?')
const text = row.defaultStatus ? t('ErpStock.Warehouse.set') : t('ErpStock.Warehouse.cancel')
await message.confirm(t('ErpStock.Warehouse.confirmDefaultStatus', { action: text, name: row.name }))
//
await WarehouseApi.updateWarehouseDefaultStatus(row.id, row.defaultStatus)
//
@ -227,7 +227,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await WarehouseApi.exportWarehouse(queryParams)
download.excel(data, '仓库.xls')
download.excel(data, t('ErpStock.Warehouse.exportName'))
} catch {
} finally {
exportLoading.value = false

Loading…
Cancel
Save