style:仓储管理模块适配中英文

main^2
黄伟杰 7 hours ago
parent 856be29655
commit e957e51735

@ -111,6 +111,7 @@ export default {
price: 'Amount', price: 'Amount',
totalPrice: 'Total Price', totalPrice: 'Total Price',
inType: 'Inbound Type', inType: 'Inbound Type',
file: 'Attachment',
tabProduct: 'Product Inbound', tabProduct: 'Product Inbound',
tabMaterial: 'Material Inbound', tabMaterial: 'Material Inbound',
tabPart: 'Part Inbound', tabPart: 'Part Inbound',
@ -218,6 +219,34 @@ export default {
validatorWarehouseRequired: 'Warehouse name is required' validatorWarehouseRequired: 'Warehouse name is required'
} }
}, },
Record: {
product: 'Product',
warehouse: 'Warehouse',
bizType: 'Type',
bizNo: 'Business No',
categoryProduct: 'Product',
categoryMaterial: 'Material',
categorySpare: 'Spare Part',
categoryTool: 'Tool',
categoryConsumable: 'Consumable',
categoryOther: 'Other',
productName: 'Product Name',
categoryName: 'Product Category',
unitName: 'Unit',
warehouseName: 'Warehouse Code',
count: 'In/Out Quantity',
totalCount: 'Stock Quantity',
recordTime: 'In/Out Date',
createTime: 'Create Date',
creatorName: 'Operator',
placeholderProduct: 'Please select product',
placeholderWarehouse: 'Please select warehouse',
placeholderBizType: 'Please select type',
placeholderBizNo: 'Please input business no',
placeholderCreateTimeStart: 'Start Date',
placeholderCreateTimeEnd: 'End Date',
exportName: 'ProductStockRecord.xls'
},
Move: { Move: {
no: 'Transfer No', no: 'Transfer No',
product: 'Product', product: 'Product',
@ -502,6 +531,8 @@ export default {
detail: 'Detail', detail: 'Detail',
export: 'Export', export: 'Export',
import: 'Import', import: 'Import',
approve: 'Approve',
unapprove: 'Unapprove',
generate: 'Generate', generate: 'Generate',
logout: 'Login Out', logout: 'Login Out',
test: 'Test', test: 'Test',

@ -111,6 +111,7 @@ export default {
price: '金额', price: '金额',
totalPrice: '合计金额', totalPrice: '合计金额',
inType: '入库类型', inType: '入库类型',
file: '附件',
tabProduct: '产品入库', tabProduct: '产品入库',
tabMaterial: '原料入库', tabMaterial: '原料入库',
tabPart: '备件入库', tabPart: '备件入库',
@ -218,6 +219,34 @@ export default {
validatorWarehouseRequired: '仓库名字不能为空' validatorWarehouseRequired: '仓库名字不能为空'
} }
}, },
Record: {
product: '产品',
warehouse: '仓库',
bizType: '类型',
bizNo: '业务单号',
categoryProduct: '产品',
categoryMaterial: '原料',
categorySpare: '备件',
categoryTool: '工具',
categoryConsumable: '耗材',
categoryOther: '其他',
productName: '产品名称',
categoryName: '产品分类',
unitName: '产品单位',
warehouseName: '仓库编号',
count: '出入库数量',
totalCount: '库存量',
recordTime: '出入库日期',
createTime: '创建日期',
creatorName: '操作人',
placeholderProduct: '请选择产品',
placeholderWarehouse: '请选择仓库',
placeholderBizType: '请选择类型',
placeholderBizNo: '请输入业务单号',
placeholderCreateTimeStart: '开始日期',
placeholderCreateTimeEnd: '结束日期',
exportName: '产品库存明细.xls'
},
Move: { Move: {
no: '调拨单号', no: '调拨单号',
product: '产品', product: '产品',
@ -504,6 +533,8 @@ export default {
detail: '详情', detail: '详情',
export: '导出', export: '导出',
import: '导入', import: '导入',
approve: '审批',
unapprove: '反审批',
generate: '生成', generate: '生成',
logout: '强制退出', logout: '强制退出',
test: '测试', test: '测试',

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

@ -9,8 +9,8 @@
:disabled="disabled" :disabled="disabled"
> >
<el-table :data="formData" show-summary :summary-method="getSummaries" class="-mt-10px"> <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="t('common.index')" type="index" align="center" width="60" />
<el-table-column label="仓库名称" min-width="125"> <el-table-column :label="t('ErpStock.Item.warehouse')" min-width="125">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item <el-form-item
:prop="`${$index}.warehouseId`" :prop="`${$index}.warehouseId`"
@ -21,7 +21,7 @@
v-model="row.warehouseId" v-model="row.warehouseId"
clearable clearable
filterable filterable
placeholder="请选择仓库" :placeholder="t('ErpStock.Item.placeholderWarehouse')"
@change="onChangeWarehouse($event, row)" @change="onChangeWarehouse($event, row)"
> >
<el-option <el-option
@ -34,7 +34,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </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 }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productId`" :rules="formRules.productId" class="mb-0px!"> <el-form-item :prop="`${$index}.productId`" :rules="formRules.productId" class="mb-0px!">
<el-cascader <el-cascader
@ -45,34 +45,34 @@
clearable clearable
filterable filterable
@change="onChangeProduct($event, row)" @change="onChangeProduct($event, row)"
placeholder="请选择产品" :placeholder="t('ErpStock.Item.placeholderProduct')"
class="!w-100%" class="!w-100%"
/> />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="库存" min-width="100"> <el-table-column :label="t('ErpStock.Item.stock')" min-width="100">
<template #default="{ row }"> <template #default="{ row }">
<el-form-item class="mb-0px!"> <el-form-item class="mb-0px!">
<el-input disabled v-model="row.stockCount" :formatter="erpCountInputFormatter" /> <el-input disabled v-model="row.stockCount" :formatter="erpCountInputFormatter" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="条码" min-width="150"> <el-table-column :label="t('ErpStock.Item.barcode')" min-width="150">
<template #default="{ row }"> <template #default="{ row }">
<el-form-item class="mb-0px!"> <el-form-item class="mb-0px!">
<el-input disabled v-model="row.productBarCode" /> <el-input disabled v-model="row.productBarCode" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单位" min-width="80"> <el-table-column :label="t('ErpStock.Item.unit')" min-width="80">
<template #default="{ row }"> <template #default="{ row }">
<el-form-item class="mb-0px!"> <el-form-item class="mb-0px!">
<el-input disabled v-model="row.productUnitName" /> <el-input disabled v-model="row.productUnitName" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="数量" prop="count" fixed="right" min-width="140"> <el-table-column :label="t('ErpStock.Item.count')" prop="count" fixed="right" min-width="140">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.count`" :rules="formRules.count" class="mb-0px!"> <el-form-item :prop="`${$index}.count`" :rules="formRules.count" class="mb-0px!">
<el-input-number <el-input-number
@ -85,7 +85,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </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 }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productPrice`" class="mb-0px!"> <el-form-item :prop="`${$index}.productPrice`" class="mb-0px!">
<el-input-number <el-input-number
@ -98,21 +98,21 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </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 }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.totalPrice`" class="mb-0px!"> <el-form-item :prop="`${$index}.totalPrice`" class="mb-0px!">
<el-input disabled v-model="row.totalPrice" :formatter="erpPriceInputFormatter" /> <el-input disabled v-model="row.totalPrice" :formatter="erpPriceInputFormatter" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" fixed="right" min-width="150"> <el-table-column :label="t('ErpStock.Item.remark')" fixed="right" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" class="mb-0px!"> <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.In.placeholderRemark')" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </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 }"> <template #default="{ $index }">
<el-button type="danger" @click="handleDelete($index)" link> <el-button type="danger" @click="handleDelete($index)" link>
<Icon icon="ep:delete" /> <Icon icon="ep:delete" />
@ -122,7 +122,7 @@
</el-table> </el-table>
</el-form> </el-form>
<el-row justify="center" class="mt-3" v-if="!disabled"> <el-row justify="center" class="mt-3" v-if="!disabled">
<el-button @click="handleAdd" round>+ 添加入库产品</el-button> <el-button @click="handleAdd" round>+ {{ t('ErpStock.In.addItem') }}</el-button>
</el-row> </el-row>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -142,11 +142,11 @@ const props = defineProps<{
}>() }>()
const formLoading = ref(false) // const formLoading = ref(false) //
const formData = ref([]) const formData = ref([])
const { t } = useI18n()
const formRules = reactive({ const formRules = reactive({
inId: [{ required: true, message: '入库编号不能为空', trigger: 'blur' }], warehouseId: [{ required: true, message: t('ErpStock.Item.validatorWarehouseRequired'), trigger: 'blur' }],
warehouseId: [{ required: true, message: '仓库不能为空', trigger: 'blur' }], productId: [{ required: true, message: t('ErpStock.Item.validatorProductRequired'), trigger: 'blur' }],
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }], count: [{ required: true, message: t('ErpStock.Item.validatorCountRequired'), trigger: 'blur' }]
count: [{ required: true, message: '产品数量不能为空', trigger: 'blur' }]
}) })
const formRef = ref([]) // Ref const formRef = ref([]) // Ref
const productList = ref<ProductVO[]>([]) // const productList = ref<ProductVO[]>([]) //

@ -6,23 +6,23 @@
:model="queryParams" :model="queryParams"
ref="queryFormRef" ref="queryFormRef"
:inline="true" :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 <el-input
v-model="queryParams.no" v-model="queryParams.no"
placeholder="请输入入库单号" :placeholder="t('ErpStock.In.placeholderNo')"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="产品" prop="productId"> <el-form-item :label="t('ErpStock.In.product')" prop="productId">
<el-select <el-select
v-model="queryParams.productId" v-model="queryParams.productId"
clearable clearable
filterable filterable
placeholder="请选择产品" :placeholder="t('ErpStock.In.placeholderProduct')"
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
@ -33,13 +33,13 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="入库时间" prop="inTime"> <el-form-item :label="t('ErpStock.In.inTime')" prop="inTime">
<el-date-picker <el-date-picker
v-model="queryParams.inTime" v-model="queryParams.inTime"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
type="daterange" type="daterange"
start-placeholder="开始日期" :start-placeholder="t('common.startTimeText')"
end-placeholder="结束日期" :end-placeholder="t('common.endTimeText')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px" class="!w-220px"
/> />
@ -60,12 +60,12 @@
/> />
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item label="仓库" prop="warehouseId"> <el-form-item :label="t('ErpStock.In.warehouse')" prop="warehouseId">
<el-select <el-select
v-model="queryParams.warehouseId" v-model="queryParams.warehouseId"
clearable clearable
filterable filterable
placeholder="请选择仓库" :placeholder="t('ErpStock.In.placeholderWarehouse')"
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
@ -76,12 +76,12 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建人" prop="creator"> <el-form-item :label="t('ErpStock.In.creator')" prop="creator">
<el-select <el-select
v-model="queryParams.creator" v-model="queryParams.creator"
clearable clearable
filterable filterable
placeholder="请选择创建人" :placeholder="t('ErpStock.In.placeholderCreator')"
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
@ -92,8 +92,13 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item :label="t('ErpStock.In.status')" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px"> <el-select
v-model="queryParams.status"
:placeholder="t('ErpStock.In.placeholderStatus')"
clearable
class="!w-240px"
>
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ERP_AUDIT_STATUS)" v-for="dict in getIntDictOptions(DICT_TYPE.ERP_AUDIT_STATUS)"
:key="dict.value" :key="dict.value"
@ -102,25 +107,25 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item :label="t('ErpStock.In.remark')" prop="remark">
<el-input <el-input
v-model="queryParams.remark" v-model="queryParams.remark"
placeholder="请输入备注" :placeholder="t('ErpStock.In.placeholderRemark')"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" 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" /> 重置</el-button> <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}</el-button>
<el-button <el-button
type="primary" type="primary"
plain plain
@click="openForm('create')" @click="openForm('create')"
v-hasPermi="['erp:stock-in: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>
<el-button <el-button
type="success" type="success"
@ -129,7 +134,7 @@
:loading="exportLoading" :loading="exportLoading"
v-hasPermi="['erp:stock-in:export']" 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>
<el-button <el-button
type="danger" type="danger"
@ -138,7 +143,7 @@
v-hasPermi="['erp:stock-in:delete']" v-hasPermi="['erp:stock-in:delete']"
:disabled="selectionList.length === 0" :disabled="selectionList.length === 0"
> >
<Icon icon="ep:delete" class="mr-5px" /> 删除 <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }}
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -147,10 +152,10 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick"> <el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="产品入库" name="产品入库" /> <el-tab-pane :label="t('ErpStock.In.tabProduct')" name="产品入库" />
<!-- <el-tab-pane label="原料入库" name="原料入库" /> --> <!-- <el-tab-pane :label="t('ErpStock.In.tabMaterial')" name="原料入库" /> -->
<el-tab-pane label="备件入库" name="备件入库" /> <el-tab-pane :label="t('ErpStock.In.tabPart')" name="备件入库" />
<el-tab-pane label="其他入库" name="其他入库" /> <el-tab-pane :label="t('ErpStock.In.tabOther')" name="其他入库" />
</el-tabs> </el-tabs>
<el-table <el-table
@ -160,20 +165,31 @@
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column width="30" label="选择" type="selection" /> <el-table-column width="30" :label="t('common.select')" type="selection" />
<el-table-column min-width="180" label="入库单号" align="center" prop="no" /> <el-table-column
<el-table-column label="产品信息" align="left" sortable prop="productNames" min-width="200" /> 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="供应商" align="center" prop="supplierName" /> -->
<el-table-column <el-table-column
label="入库时间" :label="t('ErpStock.In.inTime')"
align="center" align="center"
prop="inTime" prop="inTime"
:formatter="dateFormatter2" :formatter="dateFormatter2"
width="120px" 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 <el-table-column
label="数量" :label="t('ErpStock.In.count')"
align="right" align="right"
sortable sortable
prop="totalCount" prop="totalCount"
@ -186,19 +202,25 @@
prop="totalPrice" prop="totalPrice"
:formatter="erpPriceTableColumnFormatter" :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"> <template #default="scope">
<dict-tag :type="DICT_TYPE.ERP_AUDIT_STATUS" :value="scope.row.status" /> <dict-tag :type="DICT_TYPE.ERP_AUDIT_STATUS" :value="scope.row.status" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="220"> <el-table-column :label="t('common.operate')" align="center" fixed="right" width="220">
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link
@click="openForm('detail', scope.row.id)" @click="openForm('detail', scope.row.id)"
v-hasPermi="['erp:stock-in:query']" v-hasPermi="['erp:stock-in:query']"
> >
详情 {{ t('action.detail') }}
</el-button> </el-button>
<el-button <el-button
link link
@ -207,7 +229,7 @@
v-hasPermi="['erp:stock-in:update']" v-hasPermi="['erp:stock-in:update']"
:disabled="scope.row.status === 20" :disabled="scope.row.status === 20"
> >
编辑 {{ t('action.edit') }}
</el-button> </el-button>
<el-button <el-button
link link
@ -216,7 +238,7 @@
v-hasPermi="['erp:stock-in:update-status']" v-hasPermi="['erp:stock-in:update-status']"
v-if="scope.row.status === 10" v-if="scope.row.status === 10"
> >
审批 {{ t('action.approve') }}
</el-button> </el-button>
<el-button <el-button
link link
@ -225,7 +247,7 @@
v-hasPermi="['erp:stock-in:update-status']" v-hasPermi="['erp:stock-in:update-status']"
v-else v-else
> >
反审批 {{ t('action.unapprove') }}
</el-button> </el-button>
<el-button <el-button
link link
@ -233,7 +255,7 @@
@click="handleDelete([scope.row.id])" @click="handleDelete([scope.row.id])"
v-hasPermi="['erp:stock-in:delete']" v-hasPermi="['erp:stock-in:delete']"
> >
删除 {{ t('action.del') }}
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -340,10 +362,12 @@ const handleDelete = async (ids: number[]) => {
const handleUpdateStatus = async (id: number, status: number) => { const handleUpdateStatus = async (id: number, status: number) => {
try { try {
// //
await message.confirm(`确定${status === 20 ? '审批' : '反审批'}该入库单吗?`) const confirmText = status === 20 ? t('ErpStock.In.confirmApprove') : t('ErpStock.In.confirmReverseApprove')
await message.confirm(confirmText)
// //
await StockInApi.updateStockInStatus(id, status) await StockInApi.updateStockInStatus(id, status)
message.success(`${status === 20 ? '审批' : '反审批'}成功`) const successText = status === 20 ? t('ErpStock.In.approveSuccess') : t('ErpStock.In.reverseApproveSuccess')
message.success(successText)
// //
await getList() await getList()
} catch {} } catch {}
@ -357,7 +381,7 @@ const handleExport = async () => {
// //
exportLoading.value = true exportLoading.value = true
const data = await StockInApi.exportStockIn(queryParams) const data = await StockInApi.exportStockIn(queryParams)
download.excel(data, '其它入库单.xls') download.excel(data, t('ErpStock.In.exportName'))
} catch { } catch {
} finally { } finally {
exportLoading.value = false exportLoading.value = false

@ -132,12 +132,11 @@ const customerList = ref<CustomerVO[]>([]) // 客户列表
const options = [ const options = [
{ {
value: '其他出库', value: '其他出库',
label: '其他出库', label: t('ErpStock.Out.tabOther')
}, },
{ {
value: '备件出库', value: '备件出库',
label: '备件出库', label: t('ErpStock.Out.tabPart')
}, },
// { // {
// value: '', // value: '',
@ -149,10 +148,9 @@ const options = [
// }, // },
{ {
value: '领料出库', value: '领料出库',
label: '领料出库', label: t('ErpStock.Out.tabPick'),
disabled: true, disabled: true
}, }
] ]
/** 子表的表单 */ /** 子表的表单 */
const subTabsName = ref('item') const subTabsName = ref('item')

@ -9,8 +9,8 @@
:disabled="disabled" :disabled="disabled"
> >
<el-table :data="formData" show-summary :summary-method="getSummaries" class="-mt-10px"> <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="t('common.index')" type="index" align="center" width="60" />
<el-table-column label="仓库名称" min-width="125"> <el-table-column :label="t('ErpStock.Item.warehouse')" min-width="125">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item <el-form-item
:prop="`${$index}.warehouseId`" :prop="`${$index}.warehouseId`"
@ -21,7 +21,7 @@
v-model="row.warehouseId" v-model="row.warehouseId"
clearable clearable
filterable filterable
placeholder="请选择仓库" :placeholder="t('ErpStock.Item.placeholderWarehouse')"
@change="onChangeWarehouse($event, row)" @change="onChangeWarehouse($event, row)"
> >
<el-option <el-option
@ -34,7 +34,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </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 }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productId`" :rules="formRules.productId" class="mb-0px!"> <el-form-item :prop="`${$index}.productId`" :rules="formRules.productId" class="mb-0px!">
<el-cascader <el-cascader
@ -45,34 +45,34 @@
clearable clearable
filterable filterable
@change="onChangeProduct($event, row)" @change="onChangeProduct($event, row)"
placeholder="请选择产品" :placeholder="t('ErpStock.Item.placeholderProduct')"
class="!w-100%" class="!w-100%"
/> />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="库存" min-width="100"> <el-table-column :label="t('ErpStock.Item.stock')" min-width="100">
<template #default="{ row }"> <template #default="{ row }">
<el-form-item class="mb-0px!"> <el-form-item class="mb-0px!">
<el-input disabled v-model="row.stockCount" :formatter="erpCountInputFormatter" /> <el-input disabled v-model="row.stockCount" :formatter="erpCountInputFormatter" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="条码" min-width="150"> <el-table-column :label="t('ErpStock.Item.barcode')" min-width="150">
<template #default="{ row }"> <template #default="{ row }">
<el-form-item class="mb-0px!"> <el-form-item class="mb-0px!">
<el-input disabled v-model="row.productBarCode" /> <el-input disabled v-model="row.productBarCode" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单位" min-width="80"> <el-table-column :label="t('ErpStock.Item.unit')" min-width="80">
<template #default="{ row }"> <template #default="{ row }">
<el-form-item class="mb-0px!"> <el-form-item class="mb-0px!">
<el-input disabled v-model="row.productUnitName" /> <el-input disabled v-model="row.productUnitName" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="数量" prop="count" fixed="right" min-width="140"> <el-table-column :label="t('ErpStock.Item.count')" prop="count" fixed="right" min-width="140">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.count`" :rules="formRules.count" class="mb-0px!"> <el-form-item :prop="`${$index}.count`" :rules="formRules.count" class="mb-0px!">
<el-input-number <el-input-number
@ -85,7 +85,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </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 }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productPrice`" class="mb-0px!"> <el-form-item :prop="`${$index}.productPrice`" class="mb-0px!">
<el-input-number <el-input-number
@ -98,21 +98,21 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </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 }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.totalPrice`" class="mb-0px!"> <el-form-item :prop="`${$index}.totalPrice`" class="mb-0px!">
<el-input disabled v-model="row.totalPrice" :formatter="erpPriceInputFormatter" /> <el-input disabled v-model="row.totalPrice" :formatter="erpPriceInputFormatter" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" fixed="right" min-width="150"> <el-table-column :label="t('ErpStock.Item.remark')" fixed="right" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" class="mb-0px!"> <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.Out.placeholderRemark')" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </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 }"> <template #default="{ $index }">
<el-button type="danger" @click="handleDelete($index)" link> <el-button type="danger" @click="handleDelete($index)" link>
<Icon icon="ep:delete" /> <Icon icon="ep:delete" />
@ -122,7 +122,7 @@
</el-table> </el-table>
</el-form> </el-form>
<el-row justify="center" class="mt-3" v-if="!disabled"> <el-row justify="center" class="mt-3" v-if="!disabled">
<el-button @click="handleAdd" round>+ 添加出库产品</el-button> <el-button @click="handleAdd" round>+ {{ t('ErpStock.Out.addItem') }}</el-button>
</el-row> </el-row>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -142,11 +142,11 @@ const props = defineProps<{
}>() }>()
const formLoading = ref(false) // const formLoading = ref(false) //
const formData = ref([]) const formData = ref([])
const { t } = useI18n()
const formRules = reactive({ const formRules = reactive({
inId: [{ required: true, message: '出库编号不能为空', trigger: 'blur' }], warehouseId: [{ required: true, message: t('ErpStock.Item.validatorWarehouseRequired'), trigger: 'blur' }],
warehouseId: [{ required: true, message: '仓库不能为空', trigger: 'blur' }], productId: [{ required: true, message: t('ErpStock.Item.validatorProductRequired'), trigger: 'blur' }],
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }], count: [{ required: true, message: t('ErpStock.Item.validatorCountRequired'), trigger: 'blur' }]
count: [{ required: true, message: '产品数量不能为空', trigger: 'blur' }]
}) })
const formRef = ref([]) // Ref const formRef = ref([]) // Ref
const productList = ref<ProductVO[]>([]) // const productList = ref<ProductVO[]>([]) //
@ -213,7 +213,7 @@ const getSummaries = (param: SummaryMethodProps) => {
const sums: string[] = [] const sums: string[] = []
columns.forEach((column, index) => { columns.forEach((column, index) => {
if (index === 0) { if (index === 0) {
sums[index] = '合计' sums[index] = t('common.total')
return return
} }
if (['count', 'totalPrice'].includes(column.property)) { if (['count', 'totalPrice'].includes(column.property)) {

@ -6,23 +6,23 @@
:model="queryParams" :model="queryParams"
ref="queryFormRef" ref="queryFormRef"
:inline="true" :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 <el-input
v-model="queryParams.no" v-model="queryParams.no"
placeholder="请输入出库单号" :placeholder="t('ErpStock.Out.placeholderNo')"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="产品" prop="productId"> <el-form-item :label="t('ErpStock.In.product')" prop="productId">
<el-select <el-select
v-model="queryParams.productId" v-model="queryParams.productId"
clearable clearable
filterable filterable
placeholder="请选择产品" :placeholder="t('ErpStock.In.placeholderProduct')"
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
@ -33,13 +33,13 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="出库时间" prop="outTime"> <el-form-item :label="t('ErpStock.Out.outTime')" prop="outTime">
<el-date-picker <el-date-picker
v-model="queryParams.outTime" v-model="queryParams.outTime"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
type="daterange" type="daterange"
start-placeholder="开始日期" :start-placeholder="t('common.startTimeText')"
end-placeholder="结束日期" :end-placeholder="t('common.endTimeText')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px" class="!w-240px"
/> />
@ -60,12 +60,12 @@
/> />
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item label="仓库" prop="warehouseId"> <el-form-item :label="t('ErpStock.Out.warehouse')" prop="warehouseId">
<el-select <el-select
v-model="queryParams.warehouseId" v-model="queryParams.warehouseId"
clearable clearable
filterable filterable
placeholder="请选择仓库" :placeholder="t('ErpStock.In.placeholderWarehouse')"
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
@ -76,12 +76,12 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建人" prop="creator"> <el-form-item :label="t('ErpStock.In.creator')" prop="creator">
<el-select <el-select
v-model="queryParams.creator" v-model="queryParams.creator"
clearable clearable
filterable filterable
placeholder="请选择创建人" :placeholder="t('ErpStock.In.placeholderCreator')"
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
@ -92,8 +92,13 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item :label="t('ErpStock.In.status')" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px"> <el-select
v-model="queryParams.status"
:placeholder="t('ErpStock.In.placeholderStatus')"
clearable
class="!w-240px"
>
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ERP_AUDIT_STATUS)" v-for="dict in getIntDictOptions(DICT_TYPE.ERP_AUDIT_STATUS)"
:key="dict.value" :key="dict.value"
@ -102,25 +107,25 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item :label="t('ErpStock.Out.remark')" prop="remark">
<el-input <el-input
v-model="queryParams.remark" v-model="queryParams.remark"
placeholder="请输入备注" :placeholder="t('ErpStock.Out.placeholderRemark')"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" 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" /> 重置</el-button> <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}</el-button>
<el-button <el-button
type="primary" type="primary"
plain plain
@click="openForm('create')" @click="openForm('create')"
v-hasPermi="['erp:stock-out:create']" v-hasPermi="['erp:stock-out:create']"
> >
<Icon icon="ep:plus" class="mr-5px" /> 新增 <Icon icon="ep:plus" class="mr-5px" /> {{ t('common.add') }}
</el-button> </el-button>
<el-button <el-button
type="success" type="success"
@ -129,7 +134,7 @@
:loading="exportLoading" :loading="exportLoading"
v-hasPermi="['erp:stock-out:export']" 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>
<el-button <el-button
type="danger" type="danger"
@ -138,7 +143,7 @@
v-hasPermi="['erp:stock-out:delete']" v-hasPermi="['erp:stock-out:delete']"
:disabled="selectionList.length === 0" :disabled="selectionList.length === 0"
> >
<Icon icon="ep:delete" class="mr-5px" /> 删除 <Icon icon="ep:delete" class="mr-5px" /> {{ t('action.del') }}
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -147,11 +152,11 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick"> <el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="领料出库" name="领料出库" /> <el-tab-pane :label="t('ErpStock.Out.tabPick')" name="领料出库" />
<!-- <el-tab-pane label="产品出库" name="产品出库" /> --> <!-- <el-tab-pane :label="t('ErpStock.Out.tabProduct')" name="产品出库" /> -->
<!-- <el-tab-pane label="原料出库" name="原料出库" /> --> <!-- <el-tab-pane :label="t('ErpStock.Out.tabMaterial')" name="原料出库" /> -->
<el-tab-pane label="备件出库" name="备件出库" /> <el-tab-pane :label="t('ErpStock.Out.tabPart')" name="备件出库" />
<el-tab-pane label="其他出库" name="其他出库" /> <el-tab-pane :label="t('ErpStock.Out.tabOther')" name="其他出库" />
</el-tabs> </el-tabs>
<el-table <el-table
@ -161,21 +166,32 @@
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column width="30" label="选择" type="selection" /> <el-table-column width="30" :label="t('common.select')" type="selection" />
<el-table-column min-width="180" label="出库单号" align="center" prop="no" /> <el-table-column
<el-table-column label="产品信息" align="left" sortable prop="productNames" min-width="180" /> min-width="180"
:label="t('ErpStock.Out.no')"
align="center"
prop="no"
/>
<el-table-column
:label="t('ErpStock.In.productInfo')"
align="left"
sortable
prop="productNames"
min-width="180"
/>
<!-- <el-table-column label="客户" align="center" prop="customerName" /> --> <!-- <el-table-column label="客户" align="center" prop="customerName" /> -->
<el-table-column <el-table-column
label="出库时间" :label="t('ErpStock.Out.outTime')"
align="center" align="center"
sortable sortable
prop="outTime" prop="outTime"
:formatter="dateFormatter2" :formatter="dateFormatter2"
width="120px" 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 <el-table-column
label="数量" :label="t('ErpStock.In.count')"
align="right" align="right"
sortable sortable
prop="totalCount" prop="totalCount"
@ -188,19 +204,25 @@
prop="totalPrice" prop="totalPrice"
:formatter="erpPriceTableColumnFormatter" :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"> <template #default="scope">
<dict-tag :type="DICT_TYPE.ERP_AUDIT_STATUS" :value="scope.row.status" /> <dict-tag :type="DICT_TYPE.ERP_AUDIT_STATUS" :value="scope.row.status" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="220"> <el-table-column :label="t('common.operate')" align="center" fixed="right" width="220">
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link
@click="openForm('detail', scope.row.id)" @click="openForm('detail', scope.row.id)"
v-hasPermi="['erp:stock-out:query']" v-hasPermi="['erp:stock-out:query']"
> >
详情 {{ t('action.detail') }}
</el-button> </el-button>
<el-button <el-button
link link
@ -209,7 +231,7 @@
v-hasPermi="['erp:stock-out:update']" v-hasPermi="['erp:stock-out:update']"
:disabled="scope.row.status === 20" :disabled="scope.row.status === 20"
> >
编辑 {{ t('action.edit') }}
</el-button> </el-button>
<el-button <el-button
link link
@ -218,7 +240,7 @@
v-hasPermi="['erp:stock-out:update-status']" v-hasPermi="['erp:stock-out:update-status']"
v-if="scope.row.status === 10" v-if="scope.row.status === 10"
> >
审批 {{ t('action.approve') }}
</el-button> </el-button>
<el-button <el-button
link link
@ -227,7 +249,7 @@
v-hasPermi="['erp:stock-out:update-status']" v-hasPermi="['erp:stock-out:update-status']"
v-else v-else
> >
反审批 {{ t('action.unapprove') }}
</el-button> </el-button>
<el-button <el-button
link link
@ -235,7 +257,7 @@
@click="handleDelete([scope.row.id])" @click="handleDelete([scope.row.id])"
v-hasPermi="['erp:stock-out:delete']" v-hasPermi="['erp:stock-out:delete']"
> >
删除 {{ t('action.del') }}
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -344,10 +366,12 @@ const handleDelete = async (ids: number[]) => {
const handleUpdateStatus = async (id: number, status: number) => { const handleUpdateStatus = async (id: number, status: number) => {
try { try {
// //
await message.confirm(`确定${status === 20 ? '审批' : '反审批'}该出库单吗?`) const confirmText = status === 20 ? t('ErpStock.Out.confirmApprove') : t('ErpStock.Out.confirmReverseApprove')
await message.confirm(confirmText)
// //
await StockOutApi.updateStockOutStatus(id, status) await StockOutApi.updateStockOutStatus(id, status)
message.success(`${status === 20 ? '审批' : '反审批'}成功`) const successText = status === 20 ? t('ErpStock.Out.approveSuccess') : t('ErpStock.Out.reverseApproveSuccess')
message.success(successText)
// //
await getList() await getList()
} catch {} } catch {}
@ -361,7 +385,7 @@ const handleExport = async () => {
// //
exportLoading.value = true exportLoading.value = true
const data = await StockOutApi.exportStockOut(queryParams) const data = await StockOutApi.exportStockOut(queryParams)
download.excel(data, '其它出库单.xls') download.excel(data, t('ErpStock.Out.exportName'))
} catch { } catch {
} finally { } finally {
exportLoading.value = false exportLoading.value = false

@ -8,14 +8,14 @@
:model="queryParams" :model="queryParams"
ref="queryFormRef" ref="queryFormRef"
:inline="true" :inline="true"
label-width="68px" label-width="auto"
> >
<el-form-item label="产品" prop="productId"> <el-form-item :label="t('ErpStock.Record.product')" prop="productId">
<el-select <el-select
v-model="queryParams.productId" v-model="queryParams.productId"
clearable clearable
filterable filterable
placeholder="请选择产品" :placeholder="t('ErpStock.Record.placeholderProduct')"
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
@ -26,12 +26,12 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="仓库" prop="warehouseId"> <el-form-item :label="t('ErpStock.Record.warehouse')" prop="warehouseId">
<el-select <el-select
v-model="queryParams.warehouseId" v-model="queryParams.warehouseId"
clearable clearable
filterable filterable
placeholder="请选择仓库" :placeholder="t('ErpStock.Record.placeholderWarehouse')"
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
@ -42,10 +42,10 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="类型" prop="bizType"> <el-form-item :label="t('ErpStock.Record.bizType')" prop="bizType">
<el-select <el-select
v-model="queryParams.bizType" v-model="queryParams.bizType"
placeholder="请选择类型" :placeholder="t('ErpStock.Record.placeholderBizType')"
clearable clearable
class="!w-240px" class="!w-240px"
> >
@ -57,36 +57,36 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="业务单号" prop="bizNo"> <el-form-item :label="t('ErpStock.Record.bizNo')" prop="bizNo">
<el-input <el-input
v-model="queryParams.bizNo" v-model="queryParams.bizNo"
placeholder="请输入业务单号" :placeholder="t('ErpStock.Record.placeholderBizNo')"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="创建时间" prop="createTime"> <el-form-item :label="t('common.createTime')" prop="createTime">
<el-date-picker <el-date-picker
v-model="queryParams.createTime" v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
type="daterange" type="daterange"
start-placeholder="开始日期" :start-placeholder="t('ErpStock.Record.placeholderCreateTimeStart')"
end-placeholder="结束日期" :end-placeholder="t('ErpStock.Record.placeholderCreateTimeEnd')"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px" class="!w-220px"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" 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" /> 重置</el-button> <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> {{ t('common.reset') }}</el-button>
<el-button <el-button
type="primary" type="primary"
plain plain
@click="openForm('create')" @click="openForm('create')"
v-hasPermi="['erp:stock-record:create']" v-hasPermi="['erp:stock-record:create']"
> >
<Icon icon="ep:plus" class="mr-5px" /> 新增 <Icon icon="ep:plus" class="mr-5px" /> {{ t('common.add') }}
</el-button> </el-button>
<el-button <el-button
type="success" type="success"
@ -95,7 +95,7 @@
:loading="exportLoading" :loading="exportLoading"
v-hasPermi="['erp:stock-record:export']" 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-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -104,27 +104,27 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-tabs v-model="activeName" @tab-click="handleTabClick"> <el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="产品" name="2" /> <el-tab-pane :label="t('ErpStock.Record.categoryProduct')" name="2" />
<el-tab-pane label="原料" name="1" /> <el-tab-pane :label="t('ErpStock.Record.categoryMaterial')" name="1" />
<el-tab-pane label="备件" name="5" /> <el-tab-pane :label="t('ErpStock.Record.categorySpare')" name="5" />
<el-tab-pane label="工具" name="3" /> <el-tab-pane :label="t('ErpStock.Record.categoryTool')" name="3" />
<el-tab-pane label="耗材" name="4" /> <el-tab-pane :label="t('ErpStock.Record.categoryConsumable')" name="4" />
<el-tab-pane label="其他" name="0" /> <el-tab-pane :label="t('ErpStock.Record.categoryOther')" name="0" />
</el-tabs> </el-tabs>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <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="t('ErpStock.Record.productName')" align="left" sortable prop="productName" width="210px" />
<el-table-column label="产品分类" align="center" prop="categoryName" /> <el-table-column :label="t('ErpStock.Record.categoryName')" align="center" prop="categoryName" />
<el-table-column label="产品单位" align="center" prop="unitName" /> <el-table-column :label="t('ErpStock.Record.unitName')" align="center" prop="unitName" />
<el-table-column label="仓库编号" align="center" prop="warehouseName" /> <el-table-column :label="t('ErpStock.Record.warehouseName')" align="center" prop="warehouseName" />
<el-table-column label="类型" align="center" prop="bizType" min-width="100"> <el-table-column :label="t('ErpStock.Record.bizType')" align="center" prop="bizType" min-width="100">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.ERP_STOCK_RECORD_BIZ_TYPE" :value="scope.row.bizType" /> <dict-tag :type="DICT_TYPE.ERP_STOCK_RECORD_BIZ_TYPE" :value="scope.row.bizType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="出入库单号" align="center" prop="bizNo" width="200" /> <el-table-column :label="t('ErpStock.Record.bizNo')" align="center" prop="bizNo" width="200" />
<el-table-column <el-table-column
label="出入库数量" :label="t('ErpStock.Record.count')"
align="right" align="right"
sortable sortable
prop="count" prop="count"
@ -132,7 +132,7 @@
:formatter="erpCountTableColumnFormatter" :formatter="erpCountTableColumnFormatter"
/> />
<el-table-column <el-table-column
label="库存量" :label="t('ErpStock.Record.totalCount')"
align="right" align="right"
sortable sortable
prop="totalCount" prop="totalCount"
@ -140,7 +140,7 @@
:formatter="erpCountTableColumnFormatter" :formatter="erpCountTableColumnFormatter"
/> />
<el-table-column <el-table-column
label="出入库日期" :label="t('ErpStock.Record.recordTime')"
align="center" align="center"
sortable sortable
prop="recordTime" prop="recordTime"
@ -148,13 +148,13 @@
width="120px" width="120px"
/> />
<el-table-column <el-table-column
label="创建日期" :label="t('ErpStock.Record.createTime')"
align="center" align="center"
prop="createTime" prop="createTime"
:formatter="dateFormatter" :formatter="dateFormatter"
width="180px" width="180px"
/> />
<el-table-column label="操作人" align="center" prop="creatorName" /> <el-table-column :label="t('ErpStock.Record.creatorName')" align="center" prop="creatorName" />
</el-table> </el-table>
<!-- 分页 --> <!-- 分页 -->
<Pagination <Pagination

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

Loading…
Cancel
Save