黄伟杰 3 weeks ago
commit dac0d9734b

@ -0,0 +1,43 @@
import request from '@/config/axios'
// 模具上下模 VO
export interface MoldOperateVO {
id: number // ID
operateType: string // 操作类型
moldId: number // 关联模具id
deviceId: number // 关联设备id
remark: string // 备注
}
// 模具上下模 API
export const MoldOperateApi = {
// 查询模具上下模分页
getMoldOperatePage: async (params: any) => {
return await request.get({ url: `/mes/mold-operate/page`, params })
},
// 查询模具上下模详情
getMoldOperate: async (id: number) => {
return await request.get({ url: `/mes/mold-operate/get?id=` + id })
},
// 新增模具上下模
createMoldOperate: async (data: MoldOperateVO) => {
return await request.post({ url: `/mes/mold-operate/create`, data })
},
// 修改模具上下模
updateMoldOperate: async (data: MoldOperateVO) => {
return await request.put({ url: `/mes/mold-operate/update`, data })
},
// 删除模具上下模
deleteMoldOperate: async (id: number) => {
return await request.delete({ url: `/mes/mold-operate/delete?id=` + id })
},
// 导出模具上下模 Excel
exportMoldOperate: async (params) => {
return await request.download({ url: `/mes/mold-operate/export-excel`, params })
},
}

@ -84,7 +84,7 @@
<!-- 子表的表单 -->
<ContentWrap>
<el-tabs v-model="subTabsName" class="-mt-15px -mb-10px">
<el-tab-pane label="出库产品清单" name="item">
<el-tab-pane label="出库模具清单" name="item">
<StockOutItemForm ref="itemFormRef" :items="formData.items" :disabled="disabled" />
</el-tab-pane>
</el-tabs>

@ -149,8 +149,8 @@ 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' }]
productId: [{ required: true, message: '模具不能为空', trigger: 'blur' }],
count: [{ required: true, message: '数量不能为空', trigger: 'blur' }]
})
const formRef = ref([]) // Ref
const productList = ref<MoldVO[]>([]) //

@ -283,7 +283,7 @@ const queryParams = reactive({
no: undefined,
productId: undefined,
customerId: undefined,
outType: '模出库',
outType: '出库',
warehouseId: undefined,
outTime: [],
status: 10,
@ -363,7 +363,7 @@ const handleExport = async () => {
//
exportLoading.value = true
const data = await StockOutApi.exportStockOut(queryParams)
download.excel(data, '其它出库单.xls')
download.excel(data, '模具出库单.xls')
} catch {
} finally {
exportLoading.value = false
@ -381,7 +381,7 @@ const query = reactive({
})
/** 初始化 **/
onMounted(async () => {
queryParams.outType ='模出库'
queryParams.outType ='出库'
await getList()
//
// productList.value = await ProductApi.getProductSimpleList()
@ -390,12 +390,5 @@ onMounted(async () => {
customerList.value = await CustomerApi.getCustomerSimpleList()
userList.value = await UserApi.getSimpleUserList()
})
// TODO
// TODO
/** tab 切换 */
let activeName = '产品出库'
const handleTabClick = (tab: TabsPaneContext) => {
queryParams.outType = tab.paneName
handleQuery()
}
</script>

@ -0,0 +1,109 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="操作类型" prop="operateType">
<el-select v-model="formData.operateType" placeholder="请选择操作类型">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="关联模具id" prop="moldId">
<el-input v-model="formData.moldId" placeholder="请输入关联模具id" />
</el-form-item>
<el-form-item label="关联设备id" prop="deviceId">
<el-input v-model="formData.deviceId" placeholder="请输入关联设备id" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { MoldOperateApi, MoldOperateVO } from '@/api/mes/moldoperate'
/** 模具上下模 表单 */
defineOptions({ name: 'MoldOperateForm' })
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
operateType: undefined,
moldId: undefined,
deviceId: undefined,
remark: undefined,
})
const formRules = reactive({
moldId: [{ required: true, message: '关联模具id不能为空', trigger: 'blur' }],
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
//
if (id) {
formLoading.value = true
try {
formData.value = await MoldOperateApi.getMoldOperate(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value as unknown as MoldOperateVO
if (formType.value === 'create') {
await MoldOperateApi.createMoldOperate(data)
message.success(t('common.createSuccess'))
} else {
await MoldOperateApi.updateMoldOperate(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
operateType: undefined,
moldId: undefined,
deviceId: undefined,
remark: undefined,
}
formRef.value?.resetFields()
}
</script>

@ -0,0 +1,221 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="操作类型" prop="operateType">
<el-select
v-model="queryParams.operateType"
placeholder="请选择操作类型"
clearable
class="!w-240px"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="关联模具id" prop="moldId">
<el-input
v-model="queryParams.moldId"
placeholder="请输入关联模具id"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="关联设备id" prop="deviceId">
<el-input
v-model="queryParams.deviceId"
placeholder="请输入关联设备id"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-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
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['mes:mold-operate:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['mes:mold-operate:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="ID" align="center" prop="id" />
<el-table-column label="操作类型" align="center" prop="operateType" />
<el-table-column label="关联模具id" align="center" prop="moldId" />
<el-table-column label="关联设备id" align="center" prop="deviceId" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="操作" align="center" min-width="120px">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['mes:mold-operate:update']"
>
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['mes:mold-operate:delete']"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<MoldOperateForm ref="formRef" @success="getList" />
</template>
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { MoldOperateApi, MoldOperateVO } from '@/api/mes/moldoperate'
import MoldOperateForm from './MoldOperateForm.vue'
/** 模具上下模 列表 */
defineOptions({ name: 'MoldOperate' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref<MoldOperateVO[]>([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
operateType: undefined,
moldId: undefined,
deviceId: undefined,
remark: undefined,
createTime: [],
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await MoldOperateApi.getMoldOperatePage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await MoldOperateApi.deleteMoldOperate(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await MoldOperateApi.exportMoldOperate(queryParams)
download.excel(data, '模具上下模.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 **/
onMounted(() => {
getList()
})
</script>

@ -1,52 +1,109 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<Dialog :title="dialogTitle" v-model="dialogVisible" width="1200">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
:disabled="disabled"
>
<el-form-item label="领模单号" prop="orderId">
<el-input v-model="formData.orderId" placeholder="请输入领模单号" />
</el-form-item>
<el-form-item label="模具编码" prop="code">
<el-input v-model="formData.code" placeholder="请输入模具编码" />
</el-form-item>
<el-form-item label="模具名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入模具名称" />
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="入库类型" prop="inType">
<el-select
v-model="formData.inType"
clearable
filterable
placeholder="请选择入库类型"
class="!w-1/1"
disabled
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="state">
<el-input v-model="formData.state" placeholder="请输入状态" />
</el-col>
<el-col :span="8">
<el-form-item label="入库单号" prop="no">
<el-input disabled v-model="formData.no" placeholder="保存时自动生成" />
</el-form-item>
<el-form-item label="归还人" prop="person">
<el-input v-model="formData.person" placeholder="请输入归还人" />
</el-col>
<!-- <el-col :span="8">
<el-form-item label="客户" prop="customerId">
<el-select
v-model="formData.customerId"
clearable
filterable
placeholder="请选择客户"
class="!w-1/1"
>
<el-option
v-for="item in customerList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="入库时间" prop="returnTime">
</el-col> -->
<el-col :span="8">
<el-form-item label="入库时间" prop="inTime">
<el-date-picker
v-model="formData.returnTime"
v-model="formData.inTime"
type="date"
value-format="x"
placeholder="选择入库时间"
class="!w-1/1"
/>
</el-form-item>
<el-form-item label="库管员" prop="principal">
<el-input v-model="formData.principal" placeholder="请输入库管员" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" />
<el-input
type="textarea"
v-model="formData.remark"
:rows="1"
placeholder="请输入备注"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="fileUrl">
<UploadFile :is-show-tip="false" v-model="formData.fileUrl" :limit="1" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<!-- 子表的表单 -->
<ContentWrap>
<el-tabs v-model="subTabsName" class="-mt-15px -mb-10px">
<el-tab-pane label="入库模具清单" 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"> </el-button>
<el-button @click="submitForm" type="primary" :disabled="formLoading" v-if="!disabled">
</el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { MoldReturnApi, MoldReturnVO } from '@/api/mes/moldreturn'
import { StockInApi, StockInVO } from '@/api/erp/stock/in'
import StockInItemForm from './components/StockInItemForm.vue'
import { CustomerApi, CustomerVO } from '@/api/erp/sale/customer'
import {DICT_TYPE, getBoolDictOptions, getStrDictOptions} from "@/utils/dict";
/** 模具管理-模具入库 表单 */
/** ERP 其它出库单表单 */
defineOptions({ name: 'MoldReturnForm' })
const { t } = useI18n() //
@ -55,25 +112,33 @@ const message = useMessage() // 消息弹窗
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formType = ref('') // create - update - detail -
const formData = ref({
id: undefined,
orderId: undefined,
code: undefined,
name: undefined,
state: undefined,
person: undefined,
returnTime: undefined,
principal: undefined,
customerId: undefined,
inTime: undefined,
remark: undefined,
inType: undefined,
fileUrl: '',
items: []
})
const formRules = reactive({
orderId: [{ required: true, message: '领模单号不能为空', trigger: 'blur' }],
code: [{ required: true, message: '模具编码不能为空', trigger: 'blur' }],
name: [{ required: true, message: '模具名称不能为空', trigger: 'blur' }],
state: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
inTime: [{ required: true, message: '入库时间不能为空', trigger: 'blur' }],
inType: [{ required: true, message: '入库类型不能为空', trigger: 'blur' }]
})
const disabled = computed(() => formType.value === 'detail')
const formRef = ref() // Ref
const customerList = ref<CustomerVO[]>([]) //
const options = [
{
value: '模具入库',
label: '模具入库',
},
]
/** 子表的表单 */
const subTabsName = ref('item')
const itemFormRef = ref()
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
@ -85,11 +150,13 @@ const open = async (type: string, id?: number) => {
if (id) {
formLoading.value = true
try {
formData.value = await MoldReturnApi.getMoldReturn(id)
formData.value = await StockInApi.getStockIn(id)
} finally {
formLoading.value = false
}
}
//
customerList.value = await CustomerApi.getCustomerSimpleList()
}
defineExpose({ open }) // open
@ -98,15 +165,16 @@ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成
const submitForm = async () => {
//
await formRef.value.validate()
await itemFormRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value as unknown as MoldReturnVO
const data = formData.value as unknown as StockInVO
if (formType.value === 'create') {
await MoldReturnApi.createMoldReturn(data)
await StockInApi.createStockIn(data)
message.success(t('common.createSuccess'))
} else {
await MoldReturnApi.updateMoldReturn(data)
await StockInApi.updateStockIn(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
@ -121,14 +189,12 @@ const submitForm = async () => {
const resetForm = () => {
formData.value = {
id: undefined,
orderId: undefined,
code: undefined,
name: undefined,
state: undefined,
person: undefined,
returnTime: undefined,
principal: undefined,
customerId: undefined,
inTime: undefined,
remark: undefined,
fileUrl: undefined,
items: [],
inType: "模具入库"
}
formRef.value?.resetFields()
}

@ -0,0 +1,269 @@
<template>
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
v-loading="formLoading"
label-width="0px"
:inline-message="true"
: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">
<template #default="{ row, $index }">
<el-form-item
:prop="`${$index}.warehouseId`"
:rules="formRules.warehouseId"
class="mb-0px!"
>
<el-select
v-model="row.warehouseId"
clearable
filterable
placeholder="请选择仓库"
@change="onChangeWarehouse($event, row)"
>
<el-option
v-for="item in warehouseList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="模具名称" min-width="180">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productId`" :rules="formRules.productId" class="mb-0px!">
<el-select
v-model="row.productId"
clearable
filterable
@change="onChangeProduct($event, row)"
placeholder="请选择模具"
>
<el-option
v-for="item in productList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="库存" 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">
<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">
<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">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.count`" :rules="formRules.count" class="mb-0px!">
<el-input-number
v-model="row.count"
controls-position="right"
:min="0"
:precision="0"
class="!w-100%"
/>
</el-form-item>
</template>
</el-table-column>
<!-- <el-table-column label="单价" fixed="right" min-width="120">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.productPrice`" class="mb-0px!">
<el-input-number
v-model="row.productPrice"
controls-position="right"
:min="0.01"
:precision="2"
class="!w-100%"
/>
</el-form-item>
</template>
</el-table-column> -->
<!-- <el-table-column label="合计金额" 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">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" class="mb-0px!">
<el-input v-model="row.remark" placeholder="请输入备注" />
</el-form-item>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="60">
<template #default="{ $index }">
<el-button type="danger" @click="handleDelete($index)" link>
<Icon icon="ep:delete" />
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
<el-row justify="center" class="mt-3" v-if="!disabled">
<el-button @click="handleAdd" round>+ 添加入库模具</el-button>
</el-row>
</template>
<script setup lang="ts">
import { ProductApi, ProductVO } from '@/api/erp/product/product'
import { WarehouseApi, WarehouseVO } from '@/api/erp/stock/warehouse'
import { StockApi } from '@/api/erp/stock/stock'
import { MoldBrandApi, MoldVO } from '@/api/erp/mold'
import {
erpCountInputFormatter,
erpPriceInputFormatter,
erpPriceMultiply,
getSumValue
} from '@/utils'
const props = defineProps<{
items: undefined
disabled: false
}>()
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' }]
})
const formRef = ref([]) // Ref
const productList = ref<MoldVO[]>([]) //
const warehouseList = ref<WarehouseVO[]>([]) //
const defaultWarehouse = ref<WarehouseVO>(undefined) //
/** 初始化设置出库项 */
watch(
() => props.items,
async (val) => {
formData.value = val
},
{ immediate: true }
)
/** 监听合同产品变化,计算合同产品总价 */
watch(
() => formData.value,
(val) => {
if (!val || val.length === 0) {
return
}
//
val.forEach((item) => {
item.totalPrice = erpPriceMultiply(item.productPrice, item.count)
})
},
{ deep: true }
)
/** 合计 */
const getSummaries = (param: SummaryMethodProps) => {
const { columns, data } = param
const sums: string[] = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计'
return
}
if (['count', 'totalPrice'].includes(column.property)) {
const sum = getSumValue(data.map((item) => Number(item[column.property])))
sums[index] =
String(Math.trunc(Number(column.property === 'count' ? erpCountInputFormatter(sum) : erpPriceInputFormatter(sum))))
} else {
sums[index] = ''
}
})
return sums
}
/** 新增按钮操作 */
const handleAdd = () => {
const row = {
id: undefined,
warehouseId: defaultWarehouse.value?.id,
productId: undefined,
productUnitName: undefined, //
productBarCode: undefined, //
productPrice: undefined,
stockCount: undefined,
count: 1,
totalPrice: undefined,
remark: undefined
}
formData.value.push(row)
}
/** 删除按钮操作 */
const handleDelete = (index) => {
formData.value.splice(index, 1)
}
/** 处理仓库变更 */
const onChangeWarehouse = (warehouseId, row) => {
//
setStockCount(row)
}
/** 处理产品变更 */
const onChangeProduct = (productId, row) => {
const product = productList.value.find((item) => item.id === productId)
if (product) {
row.productUnitName = product.unitId
row.productBarCode = product.code
}
//
setStockCount(row)
}
/** 加载库存 */
const setStockCount = async (row) => {
if (!row.productId || !row.warehouseId) {
return
}
const stock = await StockApi.getStock2(row.productId, row.warehouseId)
row.stockCount = stock ? stock.count : 0
}
/** 表单校验 */
const validate = () => {
return formRef.value.validate()
}
defineExpose({ validate })
/** 初始化 */
onMounted(async () => {
// productList.value = await ProductApi.getComponentSimpleList()
productList.value = await MoldBrandApi.getMoldAllList()
warehouseList.value = await WarehouseApi.getWarehouseSimpleList()
defaultWarehouse.value = warehouseList.value.find((item) => item.defaultStatus)
//
if (formData.value.length === 0) {
handleAdd()
}
})
</script>

@ -257,7 +257,7 @@
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { dateFormatter2 } from '@/utils/formatTime'
import download from '@/utils/download'
import { StockOutApi, StockOutVO } from '@/api/erp/stock/out'
import { StockInApi, StockInVO } from '@/api/erp/stock/in'
import MoldReturnForm from './MoldReturnForm.vue'
import { ProductApi, ProductVO } from '@/api/erp/product/product'
import { MoldBrandApi, MoldVO } from '@/api/erp/mold'
@ -267,13 +267,13 @@ import * as UserApi from '@/api/system/user'
import { CustomerApi, CustomerVO } from '@/api/erp/sale/customer'
/** ERP 其它出库单列表 */
defineOptions({ name: 'MoldGet' })
defineOptions({ name: 'MoldReturn' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref<StockOutVO[]>([]) //
const list = ref<StockInVO[]>([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
@ -281,7 +281,7 @@ const queryParams = reactive({
no: undefined,
productId: undefined,
customerId: undefined,
outType: '领模出库',
inType: '模具入库',
warehouseId: undefined,
outTime: [],
status: 10,
@ -300,7 +300,7 @@ const moldList = ref<MoldVO[]>([]) // 模具列表
const getList = async () => {
loading.value = true
try {
const data = await StockOutApi.getStockOutPage(queryParams)
const data = await StockInApi.getStockInPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
@ -332,7 +332,7 @@ const handleDelete = async (ids: number[]) => {
//
await message.delConfirm()
//
await StockOutApi.deleteStockOut(ids)
await StockInApi.deleteStockIn(ids)
message.success(t('common.delSuccess'))
//
await getList()
@ -344,9 +344,9 @@ const handleDelete = async (ids: number[]) => {
const handleUpdateStatus = async (id: number, status: number) => {
try {
//
await message.confirm(`确定${status === 20 ? '审批' : '反审批'}库单吗?`)
await message.confirm(`确定${status === 20 ? '审批' : '反审批'}库单吗?`)
//
await StockOutApi.updateStockOutStatus(id, status)
await StockInApi.updateStockInStatus(id, status)
message.success(`${status === 20 ? '审批' : '反审批'}成功`)
//
await getList()
@ -360,8 +360,8 @@ const handleExport = async () => {
await message.exportConfirm()
//
exportLoading.value = true
const data = await StockOutApi.exportStockOut(queryParams)
download.excel(data, '其它出库单.xls')
const data = await StockInApi.exportStockIn(queryParams)
download.excel(data, '模具入库单.xls')
} catch {
} finally {
exportLoading.value = false
@ -369,8 +369,8 @@ const handleExport = async () => {
}
/** 选中操作 */
const selectionList = ref<StockOutVO[]>([])
const handleSelectionChange = (rows: StockOutVO[]) => {
const selectionList = ref<StockInVO[]>([])
const handleSelectionChange = (rows: StockInVO[]) => {
selectionList.value = rows
}
@ -379,7 +379,7 @@ const query = reactive({
})
/** 初始化 **/
onMounted(async () => {
queryParams.outType ='领模出库'
queryParams.inType ='模具入库'
await getList()
//
// productList.value = await ProductApi.getProductSimpleList()
@ -388,12 +388,4 @@ onMounted(async () => {
customerList.value = await CustomerApi.getCustomerSimpleList()
userList.value = await UserApi.getSimpleUserList()
})
// TODO
// TODO
/** tab 切换 */
let activeName = '产品出库'
const handleTabClick = (tab: TabsPaneContext) => {
queryParams.outType = tab.paneName
handleQuery()
}
</script>

Loading…
Cancel
Save