feat:入库单据/出库单据-添加isAudit配置判断

main
黄伟杰 1 month ago
parent 860aa3c32d
commit b6a88bce86

@ -28,11 +28,6 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item :label="t('MoldManagement.MoldBrandFormPage.version')" prop="version">
<el-input v-model="formData.version" :placeholder="t('MoldManagement.MoldBrandFormPage.placeholderVersion')" @input="handleVersionInput" />
</el-form-item>
</el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="t('MoldManagement.MoldBrandFormPage.status')" prop="status"> <el-form-item :label="t('MoldManagement.MoldBrandFormPage.status')" prop="status">
<el-select v-model="formData.status" :placeholder="t('MoldManagement.MoldBrandFormPage.placeholderStatus')" class="w-1/1"> <el-select v-model="formData.status" :placeholder="t('MoldManagement.MoldBrandFormPage.placeholderStatus')" class="w-1/1">
@ -104,7 +99,6 @@ const formData = ref<MoldBrandVO>({
productName: '', productName: '',
productIds: [], productIds: [],
images: '', images: '',
version: '',
status: 0, status: 0,
useTime: 0, useTime: 0,
maintainType: undefined, maintainType: undefined,
@ -134,21 +128,6 @@ const handleCodeAutoChange = (value: boolean) => {
formRef.value?.clearValidate('code') formRef.value?.clearValidate('code')
} }
const handleVersionInput = (value: string) => {
formData.value.version = value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1')
}
const stripVersionPrefix = (val: any): string => {
if (!val) return ''
return String(val).replace(/^V/i, '')
}
const addVersionPrefix = (val: any): string => {
if (!val) return ''
const raw = String(val).replace(/^V/i, '')
return raw ? `V${raw}` : ''
}
const formRules = reactive({ const formRules = reactive({
code: [{ validator: validateCode, trigger: 'blur' }], code: [{ validator: validateCode, trigger: 'blur' }],
name: [{ required: true, message: t('MoldManagement.MoldBrandFormPage.validatorNameRequired'), trigger: 'blur' }], name: [{ required: true, message: t('MoldManagement.MoldBrandFormPage.validatorNameRequired'), trigger: 'blur' }],
@ -168,7 +147,6 @@ const resetForm = () => {
productName: '', productName: '',
productIds: [], productIds: [],
images: '', images: '',
version: '',
status: 1, status: 1,
useTime: 0, useTime: 0,
maintainType: undefined, maintainType: undefined,
@ -203,7 +181,6 @@ const open = async (type: string, id?: number) => {
...formData.value, ...formData.value,
...data, ...data,
isCode: (data as any)?.isCode ?? false, isCode: (data as any)?.isCode ?? false,
version: stripVersionPrefix(data?.version),
productIds: Array.isArray(data?.productIds) productIds: Array.isArray(data?.productIds)
? data.productIds ? data.productIds
: data?.productId : data?.productId
@ -225,7 +202,6 @@ const submitForm = async () => {
handleProductChange(formData.value.productIds) handleProductChange(formData.value.productIds)
const payload: MoldBrandVO = { const payload: MoldBrandVO = {
...formData.value, ...formData.value,
version: addVersionPrefix(formData.value.version),
productIds: Array.isArray(formData.value.productIds) ? formData.value.productIds : [], productIds: Array.isArray(formData.value.productIds) ? formData.value.productIds : [],
isEnable: Boolean(formData.value.isEnable) isEnable: Boolean(formData.value.isEnable)
} }

@ -65,7 +65,6 @@
</el-table-column> </el-table-column>
<el-table-column :label="t('MoldManagement.MoldBrandPage.name')" prop="name" min-width="160" sortable /> <el-table-column :label="t('MoldManagement.MoldBrandPage.name')" prop="name" min-width="160" sortable />
<el-table-column :label="t('MoldManagement.MoldBrandPage.productName')" prop="productName" min-width="140" /> <el-table-column :label="t('MoldManagement.MoldBrandPage.productName')" prop="productName" min-width="140" />
<el-table-column :label="t('MoldManagement.MoldBrandPage.version')" prop="version" width="100" />
<el-table-column :label="t('MoldManagement.MoldBrandPage.status')" prop="status" width="100" align="center"> <el-table-column :label="t('MoldManagement.MoldBrandPage.status')" prop="status" width="100" align="center">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.ERP_MOLD_STATUS" :value="scope.row.status" /> <dict-tag :type="DICT_TYPE.ERP_MOLD_STATUS" :value="scope.row.status" />
@ -86,10 +85,10 @@
<template #default="scope"> <template #default="scope">
<el-button link type="primary" @click="openDetail(scope.row.id)">{{ t('MoldManagement.MoldBrandPage.detail') <el-button link type="primary" @click="openDetail(scope.row.id)">{{ t('MoldManagement.MoldBrandPage.detail')
}}</el-button> }}</el-button>
<el-button link type="primary" @click="openOperateForm(1, scope.row)" v-if="scope.row.status === 1">{{ <el-button link type="primary" @click="openOperateForm(2, scope.row)" v-if="scope.row.deviceName">{{
t('MoldManagement.MoldBrandPage.moldUp') }}</el-button>
<el-button link type="primary" @click="openOperateForm(2, scope.row)" v-if="scope.row.status === 0">{{
t('MoldManagement.MoldBrandPage.moldDown') }}</el-button> t('MoldManagement.MoldBrandPage.moldDown') }}</el-button>
<el-button link type="primary" @click="openOperateForm(1, scope.row)" v-if="!scope.row.deviceName">{{
t('MoldManagement.MoldBrandPage.moldUp') }}</el-button>
<el-button link type="warning" @click="openMaintainForm(scope.row)">{{ <el-button link type="warning" @click="openMaintainForm(scope.row)">{{
t('MoldManagement.MoldBrandPage.maintain') }}</el-button> t('MoldManagement.MoldBrandPage.maintain') }}</el-button>
<el-button link type="primary" @click="openForm('update', scope.row.id)" <el-button link type="primary" @click="openForm('update', scope.row.id)"

@ -231,7 +231,7 @@
@click="openSubmitDialog(scope.row)" @click="openSubmitDialog(scope.row)"
v-hasPermi="['erp:stock-in:update-status']" v-hasPermi="['erp:stock-in:update-status']"
> >
{{ t('ErpStock.In.submitAudit') }} {{ submitActionText }}
</el-button> </el-button>
<el-button <el-button
v-if="Number(scope.row.status) === 10" v-if="Number(scope.row.status) === 10"
@ -275,9 +275,9 @@
<!-- 表单面板添加/修改 --> <!-- 表单面板添加/修改 -->
<StockInForm v-else ref="formRef" @success="getList" @closed="formVisible = false" /> <StockInForm v-else ref="formRef" @success="getList" @closed="formVisible = false" />
<Dialog :title="t('ErpStock.In.submitAudit')" v-model="submitDialogVisible" width="520px"> <Dialog :title="submitActionText" v-model="submitDialogVisible" width="520px">
<el-form ref="submitFormRef" :model="submitFormData" :rules="submitFormRules" label-width="90px"> <el-form ref="submitFormRef" :model="submitFormData" :rules="submitFormRules" label-width="90px">
<el-form-item :label="t('ErpStock.In.auditUser')" prop="auditUserId"> <el-form-item v-if="!isAuditDisabled" :label="t('ErpStock.In.auditUser')" prop="auditUserId">
<el-select <el-select
v-model="submitFormData.auditUserId" v-model="submitFormData.auditUserId"
clearable clearable
@ -339,6 +339,7 @@ import { SupplierApi, SupplierVO } from '@/api/erp/purchase/supplier'
import { UserVO } from '@/api/system/user' import { UserVO } from '@/api/system/user'
import * as UserApi from '@/api/system/user' import * as UserApi from '@/api/system/user'
import { erpCountTableColumnFormatter, erpPriceTableColumnFormatter } from '@/utils' import { erpCountTableColumnFormatter, erpPriceTableColumnFormatter } from '@/utils'
import * as ConfigApi from '@/api/infra/config'
/** ERP 其它入库单列表 */ /** ERP 其它入库单列表 */
defineOptions({ name: 'ErpStockIn' }) defineOptions({ name: 'ErpStockIn' })
@ -385,6 +386,8 @@ const userList = ref<UserVO[]>([]) // 用户列表
const formVisible = ref(false) // const formVisible = ref(false) //
const actionLoading = ref(false) const actionLoading = ref(false)
const isAuditDisabled = ref(false)
const submitActionText = computed(() => isAuditDisabled.value ? '入库' : t('ErpStock.In.submitAudit'))
const submitDialogVisible = ref(false) const submitDialogVisible = ref(false)
const submitFormRef = ref() const submitFormRef = ref()
const submitFormData = reactive({ const submitFormData = reactive({
@ -392,7 +395,7 @@ const submitFormData = reactive({
auditUserId: '', auditUserId: '',
remark: '' remark: ''
}) })
const submitFormRules = reactive({ const submitFormRules = computed(() => isAuditDisabled.value ? {} : {
auditUserId: [{ required: true, message: t('ErpStock.In.validatorAuditUserRequired'), trigger: 'change' }] auditUserId: [{ required: true, message: t('ErpStock.In.validatorAuditUserRequired'), trigger: 'change' }]
}) })
const auditDialogVisible = ref(false) const auditDialogVisible = ref(false)
@ -405,10 +408,21 @@ const auditFormData = reactive({
const auditDialogTitle = computed(() => auditFormData.status === '20' ? t('ErpStock.In.auditApprove') : t('ErpStock.In.auditReject')) const auditDialogTitle = computed(() => auditFormData.status === '20' ? t('ErpStock.In.auditApprove') : t('ErpStock.In.auditReject'))
const auditRemarkPlaceholder = computed(() => auditFormData.status === '20' ? t('ErpStock.In.placeholderAuditApproveRemark') : t('ErpStock.In.placeholderAuditRejectRemark')) const auditRemarkPlaceholder = computed(() => auditFormData.status === '20' ? t('ErpStock.In.placeholderAuditApproveRemark') : t('ErpStock.In.placeholderAuditRejectRemark'))
const loadAuditConfig = async () => {
try {
const data = await ConfigApi.getConfigPage({ pageNo: 1, pageSize: 10, key: 'isAudit' } as PageParam & { key: string })
const auditConfig = data?.list?.find((item) => item?.key === 'isAudit')
isAuditDisabled.value = auditConfig?.value === '0'
} catch {
isAuditDisabled.value = false
}
}
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
await loadAuditConfig()
const data = await StockInApi.getStockInPage(queryParams) const data = await StockInApi.getStockInPage(queryParams)
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
@ -462,14 +476,19 @@ const openSubmitDialog = (row: StockInVO) => {
} }
const handleSubmitStockIn = async () => { const handleSubmitStockIn = async () => {
await submitFormRef.value.validate() if (!isAuditDisabled.value) {
await submitFormRef.value.validate()
}
actionLoading.value = true actionLoading.value = true
try { try {
await StockInApi.submitStockIn({ const data: { id: string; auditUserId?: string; remark?: string } = {
id: submitFormData.id, id: submitFormData.id,
auditUserId: submitFormData.auditUserId,
remark: submitFormData.remark remark: submitFormData.remark
}) }
if (!isAuditDisabled.value) {
data.auditUserId = submitFormData.auditUserId
}
await StockInApi.submitStockIn(data as { id: string; auditUserId: string; remark?: string })
message.success(t('ErpStock.In.submitSuccess')) message.success(t('ErpStock.In.submitSuccess'))
submitDialogVisible.value = false submitDialogVisible.value = false
await getList() await getList()

@ -231,7 +231,7 @@
@click="openSubmitDialog(scope.row)" @click="openSubmitDialog(scope.row)"
v-hasPermi="['erp:stock-out:update-status']" v-hasPermi="['erp:stock-out:update-status']"
> >
{{ t('ErpStock.Out.submitAudit') }} {{ submitActionText }}
</el-button> </el-button>
<el-button <el-button
v-if="Number(scope.row.status) === 10" v-if="Number(scope.row.status) === 10"
@ -275,9 +275,9 @@
<!-- 琛ㄥ崟闈㈡澘锛氭坊鍔? --> <!-- 琛ㄥ崟闈㈡澘锛氭坊鍔? -->
<StockOutForm v-else ref="formRef" @success="getList" @closed="formVisible = false" /> <StockOutForm v-else ref="formRef" @success="getList" @closed="formVisible = false" />
<Dialog :title="t('ErpStock.Out.submitAudit')" v-model="submitDialogVisible" width="520px"> <Dialog :title="submitActionText" v-model="submitDialogVisible" width="520px">
<el-form ref="submitFormRef" :model="submitFormData" :rules="submitFormRules" label-width="90px"> <el-form ref="submitFormRef" :model="submitFormData" :rules="submitFormRules" label-width="90px">
<el-form-item :label="t('ErpStock.Out.auditUser')" prop="auditUserId"> <el-form-item v-if="!isAuditDisabled" :label="t('ErpStock.Out.auditUser')" prop="auditUserId">
<el-select <el-select
v-model="submitFormData.auditUserId" v-model="submitFormData.auditUserId"
clearable clearable
@ -338,6 +338,7 @@ import { WarehouseApi, WarehouseVO } from '@/api/erp/stock/warehouse'
import { UserVO } from '@/api/system/user' import { UserVO } from '@/api/system/user'
import * as UserApi from '@/api/system/user' import * as UserApi from '@/api/system/user'
import { erpCountTableColumnFormatter, erpPriceTableColumnFormatter } from '@/utils' import { erpCountTableColumnFormatter, erpPriceTableColumnFormatter } from '@/utils'
import * as ConfigApi from '@/api/infra/config'
/** ERP 鍏跺畠鍏ュ簱鍗曞垪琛?*/ /** ERP 鍏跺畠鍏ュ簱鍗曞垪琛?*/
defineOptions({ name: 'ErpStockOut' }) defineOptions({ name: 'ErpStockOut' })
@ -384,6 +385,8 @@ const userList = ref<UserVO[]>([]) // 鐢ㄦ埛鍒楄〃
const formVisible = ref(false) // const formVisible = ref(false) //
const actionLoading = ref(false) const actionLoading = ref(false)
const isAuditDisabled = ref(false)
const submitActionText = computed(() => isAuditDisabled.value ? '出库' : t('ErpStock.Out.submitAudit'))
const submitDialogVisible = ref(false) const submitDialogVisible = ref(false)
const submitFormRef = ref() const submitFormRef = ref()
const submitFormData = reactive({ const submitFormData = reactive({
@ -391,7 +394,7 @@ const submitFormData = reactive({
auditUserId: '', auditUserId: '',
remark: '' remark: ''
}) })
const submitFormRules = reactive({ const submitFormRules = computed(() => isAuditDisabled.value ? {} : {
auditUserId: [{ required: true, message: t('ErpStock.Out.validatorAuditUserRequired'), trigger: 'change' }] auditUserId: [{ required: true, message: t('ErpStock.Out.validatorAuditUserRequired'), trigger: 'change' }]
}) })
const auditDialogVisible = ref(false) const auditDialogVisible = ref(false)
@ -404,10 +407,21 @@ const auditFormData = reactive({
const auditDialogTitle = computed(() => auditFormData.status === '20' ? t('ErpStock.Out.auditApprove') : t('ErpStock.Out.auditReject')) const auditDialogTitle = computed(() => auditFormData.status === '20' ? t('ErpStock.Out.auditApprove') : t('ErpStock.Out.auditReject'))
const auditRemarkPlaceholder = computed(() => auditFormData.status === '20' ? t('ErpStock.Out.placeholderAuditApproveRemark') : t('ErpStock.Out.placeholderAuditRejectRemark')) const auditRemarkPlaceholder = computed(() => auditFormData.status === '20' ? t('ErpStock.Out.placeholderAuditApproveRemark') : t('ErpStock.Out.placeholderAuditRejectRemark'))
const loadAuditConfig = async () => {
try {
const data = await ConfigApi.getConfigPage({ pageNo: 1, pageSize: 10, key: 'isAudit' } as PageParam & { key: string })
const auditConfig = data?.list?.find((item) => item?.key === 'isAudit')
isAuditDisabled.value = auditConfig?.value === '0'
} catch {
isAuditDisabled.value = false
}
}
/** 鏌ヨ鍒楄〃 */ /** 鏌ヨ鍒楄〃 */
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
await loadAuditConfig()
const data = await StockOutApi.getStockOutPage(queryParams) const data = await StockOutApi.getStockOutPage(queryParams)
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
@ -461,14 +475,19 @@ const openSubmitDialog = (row: StockOutVO) => {
} }
const handleSubmitStockOut = async () => { const handleSubmitStockOut = async () => {
await submitFormRef.value.validate() if (!isAuditDisabled.value) {
await submitFormRef.value.validate()
}
actionLoading.value = true actionLoading.value = true
try { try {
await StockOutApi.submitStockOut({ const data: { id: string; auditUserId?: string; remark?: string } = {
id: submitFormData.id, id: submitFormData.id,
auditUserId: submitFormData.auditUserId,
remark: submitFormData.remark remark: submitFormData.remark
}) }
if (!isAuditDisabled.value) {
data.auditUserId = submitFormData.auditUserId
}
await StockOutApi.submitStockOut(data as { id: string; auditUserId: string; remark?: string })
message.success(t('ErpStock.Out.submitSuccess')) message.success(t('ErpStock.Out.submitSuccess'))
submitDialogVisible.value = false submitDialogVisible.value = false
await getList() await getList()

Loading…
Cancel
Save