style:备件模块适配中英文

main
黄伟杰 1 week ago
parent 64811f4b25
commit ff04961d4c

@ -813,5 +813,172 @@ export default {
validatorComponentRequired: 'Key component can not be empty',
validatorIsEnableRequired: 'Enabled can not be empty'
}
},
SparePartsManagement: {
SpareInfo: {
name: 'Spare Part Name',
code: 'Spare Part Code',
standard: 'Specification',
category: 'Category',
unit: 'Unit',
safetyNumber: 'Safety Stock',
status: 'Status',
createTime: 'Create Time',
operate: 'Operate',
remark: 'Remark',
exportFilename: 'SparePartsInfo.xls',
placeholderName: 'Please input name',
placeholderCode: 'Please input code',
placeholderUnit: 'Please select unit',
placeholderSafetyNumber: 'Please input safety stock',
placeholderRemark: 'Please input remark',
placeholderStandard: 'Please input specification',
placeholderExpiryDay: 'Please input shelf life (days)',
validatorNameRequired: 'Spare part name can not be empty',
validatorCodeRequired: 'Spare part code can not be empty',
validatorCategoryRequired: 'Category can not be empty',
validatorUnitRequired: 'Unit can not be empty',
validatorStatusRequired: 'Status can not be empty'
},
SpareStock: {
product: 'Spare Part',
warehouse: 'Warehouse',
category: 'Category',
count: 'Stock Quantity',
unit: 'Unit',
exportFilename: 'SparePartsStock.xls',
placeholderProduct: 'Please select spare part',
placeholderWarehouse: 'Please select warehouse'
},
SpareRecord: {
product: 'Spare Part',
warehouse: 'Warehouse',
unit: 'Unit',
bizType: 'Type',
bizNo: 'Stock In/Out No',
count: 'In/Out Quantity',
totalCount: 'Stock Quantity',
recordTime: 'In/Out Date',
createTime: 'Create Date',
creatorName: 'Operator',
exportFilename: 'SparePartsRecord.xls',
placeholderProduct: 'Please select spare part',
placeholderWarehouse: 'Please select warehouse',
placeholderBizNo: 'Please input business no',
placeholderCreateTimeStart: 'Start Date',
placeholderCreateTimeEnd: 'End Date'
},
SpareIn: {
product: 'Spare Part',
inTime: 'Stock In Time',
supplier: 'Supplier',
warehouse: 'Warehouse',
remark: 'Remark',
status: 'Status',
inType: 'Stock In Type',
no: 'Stock In No',
creatorName: 'Creator',
totalCount: 'Quantity',
totalPrice: 'Amount',
operate: 'Operate',
tabUnAudit: 'Unaudited',
tabAudited: 'Audited',
tabAll: 'All',
detail: 'Detail',
edit: 'Edit',
approve: 'Approve',
unapprove: 'Unapprove',
delete: 'Delete',
itemListTitle: 'Stock In Item List',
itemIndex: 'No.',
itemWarehouseName: 'Warehouse Name',
itemProductName: 'Spare Part Name',
itemStockCount: 'Stock',
itemProductCode: 'Spare Part Code',
itemUnitName: 'Unit',
itemCount: 'Quantity',
itemProductPrice: 'Spare Part Price',
itemTotalPrice: 'Total Amount',
itemRemark: 'Remark',
itemOperate: 'Operate',
itemAddButton: 'Add Stock In Spare Part',
sumLabel: 'Total',
exportFilename: 'SparePartsIn.xls',
placeholderProduct: 'Please select spare part',
placeholderInTimeStart: 'Start Date',
placeholderInTimeEnd: 'End Date',
placeholderSupplier: 'Please select supplier',
placeholderWarehouse: 'Please select warehouse',
placeholderRemark: 'Please input remark',
placeholderInType: 'Please select stock in type',
placeholderInTime: 'Select stock in time',
placeholderNoAuto: 'Auto generated when saved',
validatorInTimeRequired: 'Stock in time can not be empty',
validatorInTypeRequired: 'Stock in type can not be empty',
validatorItemInIdRequired: 'Stock in id can not be empty',
validatorItemWarehouseRequired: 'Warehouse can not be empty',
validatorItemProductRequired: 'Spare part can not be empty',
validatorItemCountRequired: 'Spare part quantity can not be empty',
confirmApprove: 'Confirm to approve this stock in order?',
confirmUnapprove: 'Confirm to unapprove this stock in order?',
approveSuccess: 'Approve successfully',
unapproveSuccess: 'Unapprove successfully'
},
SpareOut: {
no: 'Stock Out No',
product: 'Spare Part',
outTime: 'Stock Out Time',
warehouse: 'Warehouse',
remark: 'Remark',
customer: 'Customer',
status: 'Status',
totalCount: 'Quantity',
totalPrice: 'Amount',
creatorName: 'Creator',
operate: 'Operate',
tabUnAudit: 'Unaudited',
tabAudited: 'Audited',
tabAll: 'All',
detail: 'Detail',
edit: 'Edit',
approve: 'Approve',
unapprove: 'Unapprove',
delete: 'Delete',
itemListTitle: 'Stock Out Item List',
itemIndex: 'No.',
itemWarehouseName: 'Warehouse Name',
itemProductName: 'Spare Part Name',
itemStockCount: 'Stock',
itemProductCode: 'Spare Part Code',
itemUnitName: 'Unit',
itemCount: 'Quantity',
itemProductPrice: 'Price',
itemTotalPrice: 'Total Amount',
itemRemark: 'Remark',
itemOperate: 'Operate',
itemAddButton: 'Add Stock Out Spare Part',
sumLabel: 'Total',
exportFilename: 'SparePartsOut.xls',
placeholderNo: 'Please input stock out no',
placeholderProduct: 'Please select spare part',
placeholderOutTimeStart: 'Start Date',
placeholderOutTimeEnd: 'End Date',
placeholderWarehouse: 'Please select warehouse',
placeholderRemark: 'Please input remark',
placeholderOutType: 'Please select stock out type',
placeholderOutTime: 'Select stock out time',
placeholderNoAuto: 'Auto generated when saved',
validatorOutTimeRequired: 'Stock out time can not be empty',
validatorOutTypeRequired: 'Stock out type can not be empty',
validatorItemOutIdRequired: 'Stock out id can not be empty',
validatorItemWarehouseRequired: 'Warehouse can not be empty',
validatorItemProductRequired: 'Spare part can not be empty',
validatorItemCountRequired: 'Spare part quantity can not be empty'
}
}
}

@ -810,5 +810,172 @@ export default {
validatorComponentRequired: '关键件不能为空',
validatorIsEnableRequired: '是否启用不能为空'
}
},
// 备件管理
SparePartsManagement: {
SpareInfo: {
name: '备件名称',
code: '备件编码',
standard: '规格',
category: '分类',
unit: '单位',
safetyNumber: '预警库存',
status: '状态',
createTime: '创建时间',
operate: '操作',
remark: '备注',
exportFilename: '备件信息.xls',
placeholderName: '请输入名称',
placeholderCode: '请输入编码',
placeholderUnit: '请选择单位',
placeholderSafetyNumber: '请输入预警库存数量',
placeholderRemark: '请输入备注',
placeholderStandard: '请输入规格',
placeholderExpiryDay: '请输入保质期天数',
validatorNameRequired: '备件名称不能为空',
validatorCodeRequired: '备件编码不能为空',
validatorCategoryRequired: '分类不能为空',
validatorUnitRequired: '单位不能为空',
validatorStatusRequired: '状态不能为空'
},
SpareStock: {
product: '备件',
warehouse: '仓库',
category: '分类',
count: '库存量',
unit: '单位',
exportFilename: '备件库存.xls',
placeholderProduct: '请选择备件',
placeholderWarehouse: '请选择仓库'
},
SpareRecord: {
product: '备件',
warehouse: '仓库',
unit: '单位',
bizType: '类型',
bizNo: '出入库单号',
count: '出入库数量',
totalCount: '库存量',
recordTime: '出入库日期',
createTime: '创建日期',
creatorName: '操作人',
exportFilename: '备件库存明细.xls',
placeholderProduct: '请选择备件',
placeholderWarehouse: '请选择仓库',
placeholderBizNo: '请输入业务单号',
placeholderCreateTimeStart: '开始日期',
placeholderCreateTimeEnd: '结束日期'
},
SpareIn: {
product: '备件',
inTime: '入库时间',
supplier: '供应商',
warehouse: '仓库',
remark: '备注',
status: '状态',
inType: '入库类型',
no: '入库单号',
creatorName: '创建人',
totalCount: '数量',
totalPrice: '金额',
operate: '操作',
tabUnAudit: '未审核',
tabAudited: '已审核',
tabAll: '所有',
detail: '详情',
edit: '编辑',
approve: '审批',
unapprove: '反审批',
delete: '删除',
itemListTitle: '入库产品清单',
itemIndex: '序号',
itemWarehouseName: '仓库名称',
itemProductName: '备件名称',
itemStockCount: '库存',
itemProductCode: '备件编码',
itemUnitName: '单位',
itemCount: '数量',
itemProductPrice: '备件单价',
itemTotalPrice: '合计金额',
itemRemark: '备注',
itemOperate: '操作',
itemAddButton: '添加入库备件',
sumLabel: '合计',
exportFilename: '备件入库.xls',
placeholderProduct: '请选择备件',
placeholderInTimeStart: '开始日期',
placeholderInTimeEnd: '结束日期',
placeholderSupplier: '请选择供应商',
placeholderWarehouse: '请选择仓库',
placeholderRemark: '请输入备注',
placeholderInType: '请选择入库类型',
placeholderInTime: '选择入库时间',
placeholderNoAuto: '保存时自动生成',
validatorInTimeRequired: '入库时间不能为空',
validatorInTypeRequired: '入库类型不能为空',
validatorItemInIdRequired: '入库编号不能为空',
validatorItemWarehouseRequired: '仓库不能为空',
validatorItemProductRequired: '备件不能为空',
validatorItemCountRequired: '备件数量不能为空',
confirmApprove: '确定审批该入库单吗?',
confirmUnapprove: '确定反审批该入库单吗?',
approveSuccess: '审批成功',
unapproveSuccess: '反审批成功'
},
SpareOut: {
no: '出库单号',
product: '备件',
outTime: '出库时间',
warehouse: '仓库',
remark: '备注',
customer: '客户',
status: '状态',
totalCount: '数量',
totalPrice: '金额',
creatorName: '创建人',
operate: '操作',
tabUnAudit: '未审核',
tabAudited: '已审核',
tabAll: '所有',
detail: '详情',
edit: '编辑',
approve: '审批',
unapprove: '反审批',
delete: '删除',
itemListTitle: '出库备件清单',
itemIndex: '序号',
itemWarehouseName: '仓库名称',
itemProductName: '备件名称',
itemStockCount: '库存',
itemProductCode: '备件编码',
itemUnitName: '单位',
itemCount: '数量',
itemProductPrice: '单价',
itemTotalPrice: '合计金额',
itemRemark: '备注',
itemOperate: '操作',
itemAddButton: '添加出库备件',
sumLabel: '合计',
exportFilename: '备件出库.xls',
placeholderNo: '请输入出库单号',
placeholderProduct: '请选择备件',
placeholderOutTimeStart: '开始日期',
placeholderOutTimeEnd: '结束日期',
placeholderWarehouse: '请选择仓库',
placeholderRemark: '请输入备注',
placeholderOutType: '请选择出库类型',
placeholderOutTime: '选择出库时间',
placeholderNoAuto: '保存时自动生成',
validatorOutTimeRequired: '出库时间不能为空',
validatorOutTypeRequired: '出库类型不能为空',
validatorItemOutIdRequired: '出库编号不能为空',
validatorItemWarehouseRequired: '仓库不能为空',
validatorItemProductRequired: '备件不能为空',
validatorItemCountRequired: '备件数量不能为空'
}
}
}

@ -4,24 +4,24 @@
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
label-width="110px"
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('SparePartsManagement.SpareIn.no')" prop="no">
<el-input disabled v-model="formData.no" :placeholder="t('SparePartsManagement.SpareIn.placeholderNoAuto')" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="入库类型" prop="inType">
<el-form-item :label="t('SparePartsManagement.SpareIn.inType')" prop="inType">
<el-select
disabled
v-model="formData.inType"
clearable
filterable
placeholder="请选择入库类型"
:placeholder="t('SparePartsManagement.SpareIn.placeholderInType')"
class="!w-1/1"
>
<el-option
@ -35,23 +35,23 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="入库时间" prop="inTime">
<el-form-item :label="t('SparePartsManagement.SpareIn.inTime')" prop="inTime">
<el-date-picker
v-model="formData.inTime"
type="date"
value-format="x"
placeholder="选择入库时间"
:placeholder="t('SparePartsManagement.SpareIn.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('SparePartsManagement.SpareIn.supplier')" prop="supplierId">
<el-select
v-model="formData.supplierId"
clearable
filterable
placeholder="请选择供应商"
:placeholder="t('SparePartsManagement.SpareIn.placeholderSupplier')"
class="!w-1/1"
>
<el-option
@ -64,17 +64,17 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('SparePartsManagement.SpareIn.remark')" prop="remark">
<el-input
type="textarea"
v-model="formData.remark"
:rows="1"
placeholder="请输入备注"
:placeholder="t('SparePartsManagement.SpareIn.placeholderRemark')"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="fileUrl">
<el-form-item :label="t('common.file')" prop="fileUrl">
<UploadFile :is-show-tip="false" v-model="formData.fileUrl" :limit="1" />
</el-form-item>
</el-col>
@ -83,16 +83,16 @@
<!-- 子表的表单 -->
<ContentWrap>
<el-tabs v-model="subTabsName" class="-mt-15px -mb-10px">
<el-tab-pane label="入库产品清单" name="item">
<el-tab-pane :label="t('SparePartsManagement.SpareIn.itemListTitle')" 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>
@ -121,8 +121,8 @@ const formData = ref({
items: []
})
const formRules = reactive({
inTime: [{ required: true, message: '入库时间不能为空', trigger: 'blur' }],
inType: [{ required: true, message: '入库类型不能为空', trigger: 'blur' }]
inTime: [{ required: true, message: t('SparePartsManagement.SpareIn.validatorInTimeRequired'), trigger: 'blur' }],
inType: [{ required: true, message: t('SparePartsManagement.SpareIn.validatorInTypeRequired'), 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('SparePartsManagement.SpareIn.itemIndex')" type="index" align="center" width="60" />
<el-table-column :label="t('SparePartsManagement.SpareIn.itemWarehouseName')" 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('SparePartsManagement.SpareIn.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('SparePartsManagement.SpareIn.itemProductName')" 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('SparePartsManagement.SpareIn.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="100">
<el-table-column :label="t('SparePartsManagement.SpareIn.itemStockCount')" 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="150">
<el-table-column :label="t('SparePartsManagement.SpareIn.itemProductCode')" 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="80">
<el-table-column :label="t('SparePartsManagement.SpareIn.itemUnitName')" 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="数量" prop="count" fixed="right" min-width="140">
<el-table-column :label="t('SparePartsManagement.SpareIn.itemCount')" prop="count" fixed="right" min-width="140">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.count`" :rules="formRules.count" class="mb-0px!">
<el-input-number
@ -88,7 +88,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="备件单价" fixed="right" min-width="120">
<el-table-column :label="t('SparePartsManagement.SpareIn.itemProductPrice')" fixed="right" min-width="120">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productPrice`" class="mb-0px!">
<el-input-number
@ -101,21 +101,24 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="合计金额" prop="totalPrice" fixed="right" min-width="100">
<el-table-column :label="t('SparePartsManagement.SpareIn.itemTotalPrice')" 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="备注" fixed="right" min-width="150">
<el-table-column :label="t('SparePartsManagement.SpareIn.itemRemark')" fixed="right" 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('SparePartsManagement.SpareIn.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('SparePartsManagement.SpareIn.itemOperate')" width="60">
<template #default="{ $index }">
<el-button type="danger" @click="handleDelete($index)" link>
<Icon icon="ep:delete" />
@ -125,10 +128,11 @@
</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('SparePartsManagement.SpareIn.itemAddButton') }}</el-button>
</el-row>
</template>
<script setup lang="ts">
import { useI18n } from '@/hooks/web/useI18n'
import { ProductApi, ProductVO } from '@/api/erp/product/product'
import { WarehouseApi, WarehouseVO } from '@/api/erp/stock/warehouse'
import { StockApi } from '@/api/erp/stock/stock'
@ -139,6 +143,8 @@ import {
getSumValue
} from '@/utils'
const { t } = useI18n()
const props = defineProps<{
items: undefined
disabled: false
@ -146,10 +152,30 @@ const props = defineProps<{
const formLoading = ref(false) //
const formData = ref([])
const formRules = reactive({
inId: [{ required: true, message: '入库编号不能为空', trigger: 'blur' }],
warehouseId: [{ required: true, message: '仓库不能为空', trigger: 'blur' }],
productId: [{ required: true, message: '备件不能为空', trigger: 'blur' }],
count: [{ required: true, message: '备件数量不能为空', trigger: 'blur' }]
inId: [
{ required: true, message: t('SparePartsManagement.SpareIn.validatorItemInIdRequired'), trigger: 'blur' }
],
warehouseId: [
{
required: true,
message: t('SparePartsManagement.SpareIn.validatorItemWarehouseRequired'),
trigger: 'blur'
}
],
productId: [
{
required: true,
message: t('SparePartsManagement.SpareIn.validatorItemProductRequired'),
trigger: 'blur'
}
],
count: [
{
required: true,
message: t('SparePartsManagement.SpareIn.validatorItemCountRequired'),
trigger: 'blur'
}
]
})
const formRef = ref([]) // Ref
const productList = ref<ProductVO[]>([]) //
@ -186,7 +212,7 @@ const getSummaries = (param: SummaryMethodProps) => {
const sums: string[] = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计'
sums[index] = t('SparePartsManagement.SpareIn.sumLabel')
return
}
if (['count', 'totalPrice'].includes(column.property)) {

@ -7,14 +7,14 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
label-width="110px"
>
<el-form-item label="备件" prop="productId">
<el-form-item :label="t('SparePartsManagement.SpareIn.product')" prop="productId">
<el-select
v-model="queryParams.productId"
clearable
filterable
placeholder="请选择备件"
:placeholder="t('SparePartsManagement.SpareIn.placeholderProduct')"
class="!w-240px"
>
<el-option
@ -25,23 +25,23 @@
/>
</el-select>
</el-form-item>
<el-form-item label="入库时间" prop="inTime">
<el-form-item :label="t('SparePartsManagement.SpareIn.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('SparePartsManagement.SpareIn.placeholderInTimeStart')"
:end-placeholder="t('SparePartsManagement.SpareIn.placeholderInTimeEnd')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px"
/>
</el-form-item>
<el-form-item label="供应商" prop="supplierId">
<el-form-item :label="t('SparePartsManagement.SpareIn.supplier')" prop="supplierId">
<el-select
v-model="queryParams.supplierId"
clearable
filterable
placeholder="请选择供应商"
:placeholder="t('SparePartsManagement.SpareIn.placeholderSupplier')"
class="!w-240px"
>
<el-option
@ -52,12 +52,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="仓库" prop="warehouseId">
<el-form-item :label="t('SparePartsManagement.SpareIn.warehouse')" prop="warehouseId">
<el-select
v-model="queryParams.warehouseId"
clearable
filterable
placeholder="请选择仓库"
:placeholder="t('SparePartsManagement.SpareIn.placeholderWarehouse')"
class="!w-240px"
>
<el-option
@ -68,26 +68,25 @@
/>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('SparePartsManagement.SpareIn.remark')" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
:placeholder="t('SparePartsManagement.SpareIn.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"
@ -96,7 +95,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"
@ -105,7 +104,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>
@ -114,9 +113,9 @@
<!-- 列表 -->
<ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="未审核" name="10" />
<el-tab-pane label="已审核" name="20" />
<el-tab-pane label="所有" name="" />
<el-tab-pane :label="t('SparePartsManagement.SpareIn.tabUnAudit')" name="10" />
<el-tab-pane :label="t('SparePartsManagement.SpareIn.tabAudited')" name="20" />
<el-tab-pane :label="t('SparePartsManagement.SpareIn.tabAll')" name="" />
</el-tabs>
<el-table
@ -126,45 +125,45 @@
:show-overflow-tooltip="true"
@selection-change="handleSelectionChange"
>
<el-table-column width="30" label="选择" type="selection" />
<el-table-column min-width="180" label="入库单号" align="left" prop="no" />
<el-table-column label="备件信息" align="left" sortable prop="productNames" min-width="200" />
<el-table-column label="供应商" align="left" prop="supplierName" />
<el-table-column width="30" :label="t('common.action')" type="selection" />
<el-table-column min-width="180" :label="t('SparePartsManagement.SpareIn.no')" align="left" prop="no" />
<el-table-column :label="t('SparePartsManagement.SpareIn.product')" align="left" sortable prop="productNames" min-width="200" />
<el-table-column :label="t('SparePartsManagement.SpareIn.supplier')" align="left" prop="supplierName" />
<el-table-column
label="入库时间"
:label="t('SparePartsManagement.SpareIn.inTime')"
align="center"
prop="inTime"
:formatter="dateFormatter2"
width="120px"
/>
<el-table-column label="创建人" align="center" prop="creatorName" />
<el-table-column :label="t('SparePartsManagement.SpareIn.creatorName')" align="center" prop="creatorName" />
<el-table-column
label="数量"
:label="t('SparePartsManagement.SpareIn.totalCount')"
align="right"
sortable
prop="totalCount"
:formatter="erpCountTableColumnFormatter"
/>
<el-table-column
label="金额"
:label="t('SparePartsManagement.SpareIn.totalPrice')"
align="right"
sortable
prop="totalPrice"
:formatter="erpPriceTableColumnFormatter"
/>
<el-table-column label="状态" align="center" fixed="right" width="90" prop="status">
<el-table-column :label="t('SparePartsManagement.SpareIn.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="180">
<el-table-column :label="t('SparePartsManagement.SpareIn.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('SparePartsManagement.SpareIn.detail') }}
</el-button>
<el-button
link
@ -173,7 +172,7 @@
v-hasPermi="['erp:stock-in:update']"
v-if="scope.row.status === 10"
>
编辑
{{ t('SparePartsManagement.SpareIn.edit') }}
</el-button>
<el-button
link
@ -182,7 +181,7 @@
v-hasPermi="['erp:stock-in:update-status']"
v-if="scope.row.status === 10"
>
审批
{{ t('SparePartsManagement.SpareIn.approve') }}
</el-button>
<el-button
link
@ -191,7 +190,7 @@
v-hasPermi="['erp:stock-in:update-status']"
v-else
>
反审批
{{ t('SparePartsManagement.SpareIn.unapprove') }}
</el-button>
<el-button
link
@ -200,7 +199,7 @@
v-hasPermi="['erp:stock-in:delete']"
v-if="scope.row.status === 10"
>
删除
{{ t('SparePartsManagement.SpareIn.delete') }}
</el-button>
</template>
</el-table-column>
@ -308,10 +307,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('SparePartsManagement.SpareIn.confirmApprove') : t('SparePartsManagement.SpareIn.confirmUnapprove'))
//
await StockInApi.updateStockInStatus(id, status)
message.success(`${status === 20 ? '审批' : '反审批'}成功`)
message.success(status === 20 ? t('SparePartsManagement.SpareIn.approveSuccess') : t('SparePartsManagement.SpareIn.unapproveSuccess'))
//
await getList()
} catch {}
@ -325,7 +324,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await StockInApi.exportStockIn(queryParams)
download.excel(data, '其它入库单.xls')
download.excel(data, t('SparePartsManagement.SpareIn.exportFilename'))
} catch {
} finally {
exportLoading.value = false

@ -10,30 +10,34 @@
>
<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('SparePartsManagement.SpareOut.no')" prop="no">
<el-input
disabled
v-model="formData.no"
:placeholder="t('SparePartsManagement.SpareOut.placeholderNoAuto')"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="出库时间" prop="outTime">
<el-form-item :label="t('SparePartsManagement.SpareOut.outTime')" prop="outTime">
<el-date-picker
v-model="formData.outTime"
type="date"
value-format="x"
placeholder="选择出库时间"
:placeholder="t('SparePartsManagement.SpareOut.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('SparePartsManagement.SpareOut.outType')" prop="outType">
<el-select
disabled
v-model="formData.outType"
clearable
filterable
placeholder="请选择出库类型"
:placeholder="t('SparePartsManagement.SpareOut.placeholderOutType')"
class="!w-1/1"
>
<el-option
@ -49,12 +53,12 @@
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('SparePartsManagement.SpareOut.remark')" prop="remark">
<el-input
type="textarea"
v-model="formData.remark"
:rows="1"
placeholder="请输入备注"
:placeholder="t('SparePartsManagement.SpareOut.placeholderRemark')"
/>
</el-form-item>
</el-col>
@ -63,16 +67,16 @@
<!-- 子表的表单 -->
<ContentWrap>
<el-tabs v-model="subTabsName" class="-mt-15px -mb-10px">
<el-tab-pane label="出库备件清单" name="item">
<el-tab-pane :label="t('SparePartsManagement.SpareOut.itemListTitle')" 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('action.save') }}
</el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="dialogVisible = false">{{ t('dialog.close') }}</el-button>
</template>
</Dialog>
</template>
@ -102,8 +106,12 @@ const formData = ref({
items: []
})
const formRules = reactive({
outTime: [{ required: true, message: '出库时间不能为空', trigger: 'blur' }],
outType: [{ required: true, message: '出库类型不能为空', trigger: 'blur' }]
outTime: [
{ required: true, message: t('SparePartsManagement.SpareOut.validatorOutTimeRequired'), trigger: 'blur' }
],
outType: [
{ required: true, message: t('SparePartsManagement.SpareOut.validatorOutTypeRequired'), 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('SparePartsManagement.SpareOut.itemIndex')" type="index" align="center" width="60" />
<el-table-column :label="t('SparePartsManagement.SpareOut.itemWarehouseName')" 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('SparePartsManagement.SpareOut.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('SparePartsManagement.SpareOut.itemProductName')" 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('SparePartsManagement.SpareOut.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="100">
<el-table-column :label="t('SparePartsManagement.SpareOut.itemStockCount')" 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="150">
<el-table-column :label="t('SparePartsManagement.SpareOut.itemProductCode')" 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="80">
<el-table-column :label="t('SparePartsManagement.SpareOut.itemUnitName')" 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="数量" prop="count" fixed="right" min-width="140">
<el-table-column :label="t('SparePartsManagement.SpareOut.itemCount')" prop="count" fixed="right" min-width="140">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.count`" :rules="formRules.count" class="mb-0px!">
<el-input-number
@ -88,7 +88,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="单价" fixed="right" min-width="120">
<el-table-column :label="t('SparePartsManagement.SpareOut.itemProductPrice')" fixed="right" min-width="120">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productPrice`" class="mb-0px!">
<el-input-number
@ -101,21 +101,24 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="合计金额" prop="totalPrice" fixed="right" min-width="100">
<el-table-column :label="t('SparePartsManagement.SpareOut.itemTotalPrice')" 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="备注" fixed="right" min-width="150">
<el-table-column :label="t('SparePartsManagement.SpareOut.itemRemark')" fixed="right" 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('SparePartsManagement.SpareOut.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('SparePartsManagement.SpareOut.itemOperate')" width="60">
<template #default="{ $index }">
<el-button type="danger" @click="handleDelete($index)" link>
<Icon icon="ep:delete" />
@ -125,10 +128,11 @@
</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('SparePartsManagement.SpareOut.itemAddButton') }}</el-button>
</el-row>
</template>
<script setup lang="ts">
import { useI18n } from '@/hooks/web/useI18n'
import { ProductApi, ProductVO } from '@/api/erp/product/product'
import { WarehouseApi, WarehouseVO } from '@/api/erp/stock/warehouse'
import { StockApi } from '@/api/erp/stock/stock'
@ -139,6 +143,8 @@ import {
getSumValue
} from '@/utils'
const { t } = useI18n()
const props = defineProps<{
items: undefined
disabled: false
@ -146,10 +152,30 @@ const props = defineProps<{
const formLoading = ref(false) //
const formData = ref([])
const formRules = reactive({
inId: [{ required: true, message: '出库编号不能为空', trigger: 'blur' }],
warehouseId: [{ required: true, message: '仓库不能为空', trigger: 'blur' }],
productId: [{ required: true, message: '备件不能为空', trigger: 'blur' }],
count: [{ required: true, message: '备件数量不能为空', trigger: 'blur' }]
inId: [
{ required: true, message: t('SparePartsManagement.SpareOut.validatorItemOutIdRequired'), trigger: 'blur' }
],
warehouseId: [
{
required: true,
message: t('SparePartsManagement.SpareOut.validatorItemWarehouseRequired'),
trigger: 'blur'
}
],
productId: [
{
required: true,
message: t('SparePartsManagement.SpareOut.validatorItemProductRequired'),
trigger: 'blur'
}
],
count: [
{
required: true,
message: t('SparePartsManagement.SpareOut.validatorItemCountRequired'),
trigger: 'blur'
}
]
})
const formRef = ref([]) // Ref
const productList = ref<ProductVO[]>([]) //
@ -186,7 +212,7 @@ const getSummaries = (param: SummaryMethodProps) => {
const sums: string[] = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计'
sums[index] = t('SparePartsManagement.SpareOut.sumLabel')
return
}
if (['count', 'totalPrice'].includes(column.property)) {

@ -7,23 +7,23 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
label-width="110px"
>
<el-form-item label="出库单号" prop="no">
<el-form-item :label="t('SparePartsManagement.SpareOut.no')" prop="no">
<el-input
v-model="queryParams.no"
placeholder="请输入出库单号"
:placeholder="t('SparePartsManagement.SpareOut.placeholderNo')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备件" prop="productId">
<el-form-item :label="t('SparePartsManagement.SpareOut.product')" prop="productId">
<el-select
v-model="queryParams.productId"
clearable
filterable
placeholder="请选择备件"
:placeholder="t('SparePartsManagement.SpareOut.placeholderProduct')"
class="!w-240px"
>
<el-option
@ -34,23 +34,23 @@
/>
</el-select>
</el-form-item>
<el-form-item label="出库时间" prop="outTime">
<el-form-item :label="t('SparePartsManagement.SpareOut.outTime')" prop="outTime">
<el-date-picker
v-model="queryParams.outTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:start-placeholder="t('SparePartsManagement.SpareOut.placeholderOutTimeStart')"
:end-placeholder="t('SparePartsManagement.SpareOut.placeholderOutTimeEnd')"
: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('SparePartsManagement.SpareOut.warehouse')" prop="warehouseId">
<el-select
v-model="queryParams.warehouseId"
clearable
filterable
placeholder="请选择仓库"
:placeholder="t('SparePartsManagement.SpareOut.placeholderWarehouse')"
class="!w-240px"
>
<el-option
@ -61,25 +61,25 @@
/>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-form-item :label="t('SparePartsManagement.SpareOut.remark')" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
:placeholder="t('SparePartsManagement.SpareOut.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"
@ -88,7 +88,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"
@ -97,7 +97,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>
@ -106,9 +106,9 @@
<!-- 列表 -->
<ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="未审核" name="10" />
<el-tab-pane label="已审核" name="20" />
<el-tab-pane label="所有" name="" />
<el-tab-pane :label="t('SparePartsManagement.SpareOut.tabUnAudit')" name="10" />
<el-tab-pane :label="t('SparePartsManagement.SpareOut.tabAudited')" name="20" />
<el-tab-pane :label="t('SparePartsManagement.SpareOut.tabAll')" name="" />
</el-tabs>
<el-table
@ -118,46 +118,46 @@
:show-overflow-tooltip="true"
@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="210" />
<el-table-column label="客户" align="center" prop="customerName" />
<el-table-column width="30" :label="t('common.action')" type="selection" />
<el-table-column min-width="180" :label="t('SparePartsManagement.SpareOut.no')" align="center" prop="no" />
<el-table-column :label="t('SparePartsManagement.SpareOut.product')" align="left" sortable prop="productNames" min-width="210" />
<el-table-column :label="t('SparePartsManagement.SpareOut.customer')" align="center" prop="customerName" />
<el-table-column
label="出库时间"
:label="t('SparePartsManagement.SpareOut.outTime')"
align="center"
sortable
prop="outTime"
:formatter="dateFormatter2"
width="120px"
/>
<el-table-column label="创建人" align="center" prop="creatorName" />
<el-table-column :label="t('SparePartsManagement.SpareOut.creatorName')" align="center" prop="creatorName" />
<el-table-column
label="数量"
:label="t('SparePartsManagement.SpareOut.totalCount')"
align="right"
sortable
prop="totalCount"
:formatter="erpCountTableColumnFormatter"
/>
<el-table-column
label="金额"
:label="t('SparePartsManagement.SpareOut.totalPrice')"
align="right"
sortable
prop="totalPrice"
:formatter="erpPriceTableColumnFormatter"
/>
<el-table-column label="状态" align="center" fixed="right" width="90" prop="status">
<el-table-column :label="t('SparePartsManagement.SpareOut.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('SparePartsManagement.SpareOut.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('SparePartsManagement.SpareOut.detail') }}
</el-button>
<el-button
link
@ -166,7 +166,7 @@
v-hasPermi="['erp:stock-out:update']"
:disabled="scope.row.status === 20"
>
编辑
{{ t('SparePartsManagement.SpareOut.edit') }}
</el-button>
<el-button
link
@ -175,7 +175,7 @@
v-hasPermi="['erp:stock-out:update-status']"
v-if="scope.row.status === 10"
>
审批
{{ t('SparePartsManagement.SpareOut.approve') }}
</el-button>
<el-button
link
@ -184,7 +184,7 @@
v-hasPermi="['erp:stock-out:update-status']"
v-else
>
反审批
{{ t('SparePartsManagement.SpareOut.unapprove') }}
</el-button>
<el-button
link
@ -192,7 +192,7 @@
@click="handleDelete([scope.row.id])"
v-hasPermi="['erp:stock-out:delete']"
>
删除
{{ t('SparePartsManagement.SpareOut.delete') }}
</el-button>
</template>
</el-table-column>

@ -10,19 +10,19 @@
>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="备件名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称" />
<el-form-item :label="t('SparePartsManagement.SpareInfo.name')" prop="name">
<el-input v-model="formData.name" :placeholder="t('SparePartsManagement.SpareInfo.placeholderName')" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备件编码" prop="barCode">
<el-input v-model="formData.barCode" placeholder="请输入编码" />
<el-form-item :label="t('SparePartsManagement.SpareInfo.code')" prop="barCode">
<el-input v-model="formData.barCode" :placeholder="t('SparePartsManagement.SpareInfo.placeholderCode')" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位" prop="unitId">
<el-select v-model="formData.unitId" clearable placeholder="请选择单位" class="w-1/1">
<el-form-item :label="t('SparePartsManagement.SpareInfo.unit')" prop="unitId">
<el-select v-model="formData.unitId" clearable :placeholder="t('SparePartsManagement.SpareInfo.placeholderUnit')" class="w-1/1">
<el-option
v-for="unit in unitList"
:key="unit.id"
@ -33,7 +33,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态" prop="status">
<el-form-item :label="t('SparePartsManagement.SpareInfo.status')" prop="status">
<el-radio-group v-model="formData.status">
<el-radio
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
@ -46,15 +46,15 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="规格" prop="standard">
<el-input v-model="formData.standard" placeholder="请输入规格" />
<el-form-item :label="t('SparePartsManagement.SpareInfo.standard')" prop="standard">
<el-input v-model="formData.standard" :placeholder="t('SparePartsManagement.SpareInfo.placeholderStandard')" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="保质期天数" prop="expiryDay">
<el-form-item :label="t('SparePartsManagement.SpareInfo.expiryDay')" prop="expiryDay">
<el-input-number
v-model="formData.expiryDay"
placeholder="请输入保质期天数"
:placeholder="t('SparePartsManagement.SpareInfo.placeholderExpiryDay')"
:min="0"
:precision="0"
class="!w-1/1"
@ -73,10 +73,10 @@
</el-form-item>
</el-col> -->
<el-col :span="12">
<el-form-item label="预警库存" prop="safetyNumber">
<el-form-item :label="t('SparePartsManagement.SpareInfo.safetyNumber')" prop="safetyNumber">
<el-input-number
v-model="formData.safetyNumber"
placeholder="请输入预警库存数量"
:placeholder="t('SparePartsManagement.SpareInfo.placeholderSafetyNumber')"
:min="0"
:precision="2"
class="!w-1/1"
@ -84,15 +84,15 @@
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input type="textarea" v-model="formData.remark" placeholder="请输入备注" />
<el-form-item :label="t('SparePartsManagement.SpareInfo.remark')" prop="remark">
<el-input type="textarea" v-model="formData.remark" :placeholder="t('SparePartsManagement.SpareInfo.placeholderRemark')" />
</el-form-item>
</el-col>
</el-row>
</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>
@ -130,11 +130,11 @@ const formData = ref({
safetyNumber: undefined
})
const formRules = reactive({
name: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }],
barCode: [{ required: true, message: '产品条码不能为空', trigger: 'blur' }],
categoryId: [{ required: true, message: '产品分类编号不能为空', trigger: 'blur' }],
unitId: [{ required: true, message: '单位编号不能为空', trigger: 'blur' }],
status: [{ required: true, message: '产品状态不能为空', trigger: 'blur' }]
name: [{ required: true, message: t('SparePartsManagement.SpareInfo.validatorNameRequired'), trigger: 'blur' }],
barCode: [{ required: true, message: t('SparePartsManagement.SpareInfo.validatorCodeRequired'), trigger: 'blur' }],
categoryId: [{ required: true, message: t('SparePartsManagement.SpareInfo.validatorCategoryRequired'), trigger: 'blur' }],
unitId: [{ required: true, message: t('SparePartsManagement.SpareInfo.validatorUnitRequired'), trigger: 'blur' }],
status: [{ required: true, message: t('SparePartsManagement.SpareInfo.validatorStatusRequired'), trigger: 'blur' }]
})
const formRef = ref() // Ref
const unitList = ref<ProductUnitVO[]>([]) //

@ -11,25 +11,25 @@
:inline="true"
label-width="68px"
>
<el-form-item label="备件名称" prop="name">
<el-form-item :label="t('SparePartsManagement.SpareInfo.name')" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入名称"
:placeholder="t('SparePartsManagement.SpareInfo.placeholderName')"
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:product:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
<Icon icon="ep:plus" class="mr-5px" /> {{ t('action.add') }}
</el-button>
<el-button
type="success"
@ -38,7 +38,7 @@
:loading="exportLoading"
v-hasPermi="['erp:product: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>
@ -47,25 +47,25 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="备件编码" align="center" prop="barCode" />
<el-table-column label="备件名称" align="left" prop="name" width="220px"/>
<el-table-column v-if="checkPermi(['erp:component:standard'])" label="规格" align="center" prop="standard" />
<el-table-column label="分类" align="center" prop="categoryName" />
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="预警库存" align="center" prop="safetyNumber" />
<el-table-column label="状态" align="center" prop="status">
<el-table-column :label="t('SparePartsManagement.SpareInfo.code')" align="center" prop="barCode" />
<el-table-column :label="t('SparePartsManagement.SpareInfo.name')" align="left" prop="name" width="220px"/>
<el-table-column v-if="checkPermi(['erp:component:standard'])" :label="t('SparePartsManagement.SpareInfo.standard')" align="center" prop="standard" />
<el-table-column :label="t('SparePartsManagement.SpareInfo.category')" align="center" prop="categoryName" />
<el-table-column :label="t('SparePartsManagement.SpareInfo.unit')" align="center" prop="unitName" />
<el-table-column :label="t('SparePartsManagement.SpareInfo.safetyNumber')" align="center" prop="safetyNumber" />
<el-table-column :label="t('SparePartsManagement.SpareInfo.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="创建时间"
:label="t('SparePartsManagement.SpareInfo.createTime')"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="操作" align="center" width="150px">
<el-table-column :label="t('SparePartsManagement.SpareInfo.operate')" align="center" width="150px">
<template #default="scope">
<el-button
link
@ -73,7 +73,7 @@
@click="openForm('update', scope.row.id)"
v-hasPermi="['erp:product:update']"
>
编辑
{{ t('action.edit') }}
</el-button>
<el-button
link
@ -81,7 +81,7 @@
@click="handleDelete(scope.row.id)"
v-hasPermi="['erp:product:delete']"
>
删除
{{ t('action.del') }}
</el-button>
</template>
</el-table-column>
@ -181,7 +181,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await ProductApi.exportProduct(queryParams)
download.excel(data, '备件信息.xls')
download.excel(data, t('SparePartsManagement.SpareInfo.exportFilename'))
} catch {
} finally {
exportLoading.value = false

@ -8,14 +8,14 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
label-width="90px"
>
<el-form-item label="备件" prop="productId">
<el-form-item :label="t('SparePartsManagement.SpareRecord.product')" prop="productId">
<el-select
v-model="queryParams.productId"
clearable
filterable
placeholder="请选择备件"
:placeholder="t('SparePartsManagement.SpareRecord.placeholderProduct')"
class="!w-240px"
>
<el-option
@ -26,12 +26,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="仓库" prop="warehouseId">
<el-form-item :label="t('SparePartsManagement.SpareRecord.warehouse')" prop="warehouseId">
<el-select
v-model="queryParams.warehouseId"
clearable
filterable
placeholder="请选择仓库"
:placeholder="t('SparePartsManagement.SpareRecord.placeholderWarehouse')"
class="!w-240px"
>
<el-option
@ -43,36 +43,36 @@
</el-select>
</el-form-item>
<el-form-item label="业务单号" prop="bizNo">
<el-form-item :label="t('SparePartsManagement.SpareRecord.bizNo')" prop="bizNo">
<el-input
v-model="queryParams.bizNo"
placeholder="请输入业务单号"
:placeholder="t('SparePartsManagement.SpareRecord.placeholderBizNo')"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-form-item :label="t('SparePartsManagement.SpareRecord.createTime')" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:start-placeholder="t('SparePartsManagement.SpareRecord.placeholderCreateTimeStart')"
:end-placeholder="t('SparePartsManagement.SpareRecord.placeholderCreateTimeEnd')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px"
/>
</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-record:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
<Icon icon="ep:plus" class="mr-5px" /> {{ t('action.add') }}
</el-button>
<el-button
type="success"
@ -81,7 +81,7 @@
:loading="exportLoading"
v-hasPermi="['erp:stock-record: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>
@ -91,17 +91,17 @@
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="备件名称" align="left" sortable prop="productName" width="210px"/>
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="仓库" align="center" prop="warehouseName" />
<el-table-column label="类型" align="center" prop="bizType" min-width="100">
<el-table-column :label="t('SparePartsManagement.SpareRecord.product')" align="left" sortable prop="productName" width="210px"/>
<el-table-column :label="t('SparePartsManagement.SpareRecord.unit')" align="center" prop="unitName" />
<el-table-column :label="t('SparePartsManagement.SpareRecord.warehouse')" align="center" prop="warehouseName" />
<el-table-column :label="t('SparePartsManagement.SpareRecord.bizType')" align="center" prop="bizType" min-width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ERP_STOCK_RECORD_BIZ_TYPE" :value="scope.row.bizType" />
</template>
</el-table-column>
<el-table-column label="出入库单号" align="center" prop="bizNo" width="200" />
<el-table-column :label="t('SparePartsManagement.SpareRecord.bizNo')" align="center" prop="bizNo" width="200" />
<el-table-column
label="出入库数量"
:label="t('SparePartsManagement.SpareRecord.count')"
align="right"
sortable
prop="count"
@ -109,7 +109,7 @@
:formatter="erpCountTableColumnFormatter"
/>
<el-table-column
label="库存量"
:label="t('SparePartsManagement.SpareRecord.totalCount')"
align="right"
sortable
prop="totalCount"
@ -117,7 +117,7 @@
:formatter="erpCountTableColumnFormatter"
/>
<el-table-column
label="出入库日期"
:label="t('SparePartsManagement.SpareRecord.recordTime')"
align="center"
sortable
prop="recordTime"
@ -125,13 +125,13 @@
width="120px"
/>
<el-table-column
label="创建日期"
:label="t('SparePartsManagement.SpareRecord.createTime')"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="操作人" align="center" prop="creatorName" />
<el-table-column :label="t('SparePartsManagement.SpareRecord.creatorName')" align="center" prop="creatorName" />
</el-table>
<!-- 分页 -->
<Pagination
@ -210,7 +210,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await StockRecordApi.exportStockRecord(queryParams)
download.excel(data, '备件库存明细.xls')
download.excel(data, t('SparePartsManagement.SpareRecord.exportFilename'))
} catch {
} finally {
exportLoading.value = false

@ -10,12 +10,12 @@
:inline="true"
label-width="68px"
>
<el-form-item label="备件" prop="productId">
<el-form-item :label="t('SparePartsManagement.SpareStock.product')" prop="productId">
<el-select
v-model="queryParams.productId"
clearable
filterable
placeholder="请选择备件"
:placeholder="t('SparePartsManagement.SpareStock.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('SparePartsManagement.SpareStock.warehouse')" prop="warehouseId">
<el-select
v-model="queryParams.warehouseId"
clearable
filterable
placeholder="请选择仓库"
:placeholder="t('SparePartsManagement.SpareStock.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>
@ -70,17 +70,17 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="备件" align="left" sortable prop="productName" />
<el-table-column label="分类" align="center" prop="categoryName" />
<el-table-column :label="t('SparePartsManagement.SpareStock.product')" align="left" sortable prop="productName" />
<el-table-column :label="t('SparePartsManagement.SpareStock.category')" align="center" prop="categoryName" />
<el-table-column
label="库存量"
:label="t('SparePartsManagement.SpareStock.count')"
align="right"
sortable
prop="count"
:formatter="erpCountTableColumnFormatter"
/>
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="仓库" align="center" prop="warehouseName" />
<el-table-column :label="t('SparePartsManagement.SpareStock.unit')" align="center" prop="unitName" />
<el-table-column :label="t('SparePartsManagement.SpareStock.warehouse')" align="center" prop="warehouseName" />
</el-table>
<!-- 分页 -->
<Pagination
@ -155,7 +155,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await StockApi.exportStock(queryParams)
download.excel(data, '产品库存.xls')
download.excel(data, t('SparePartsManagement.SpareStock.exportFilename'))
} catch {
} finally {
exportLoading.value = false

Loading…
Cancel
Save