admin-vue3/src/views/mes/wm/outsourceissue/index.vue

262 lines
8.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<ContentWrap>
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="100px"
>
<el-form-item label="发料单编号" prop="code">
<el-input
v-model="queryParams.code"
placeholder="请输入发料单编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="发料单名称" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入发料单名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="供应商" prop="vendorId">
<MdVendorSelect v-model="queryParams.vendorId" class="!w-240px" />
</el-form-item>
<!-- TODO @AI前后端筛选去掉 workorderCode -->
<el-form-item label="工单编号" prop="workorderCode">
<el-input
v-model="queryParams.workorderCode"
placeholder="请输入工单编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="发料日期" prop="issueDate">
<el-date-picker
v-model="queryParams.issueDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单据状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择单据状态"
clearable
class="!w-240px"
>
<!-- TODO @AIMES_WM_OUTSOURCE_ISSUE_STATUS 在 DICT_TYPE 不要声明; -->
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.MES_WM_OUTSOURCE_ISSUE_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['mes:wm-outsource-issue:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['mes:wm-outsource-issue: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="发料单编号" align="center" prop="code" min-width="160">
<template #default="scope">
<el-link type="primary" @click="openForm('detail', scope.row.id)">
{{ scope.row.code }}
</el-link>
</template>
</el-table-column>
<el-table-column label="发料单名称" align="center" prop="name" min-width="150" />
<!-- TODO @AI增加“生产工单号”去掉“工单编号” -->
<el-table-column label="供应商名称" align="center" prop="vendorName" min-width="120" />
<el-table-column label="工单编号" align="center" prop="workorderCode" min-width="140" />
<el-table-column
label="发料日期"
align="center"
prop="issueDate"
:formatter="dateFormatter2"
width="180px"
/>
<el-table-column label="单据状态" align="center" prop="status" min-width="100">
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_WM_OUTSOURCE_ISSUE_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="220" fixed="right">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['mes:wm-outsource-issue:update']"
v-if="scope.row.status === MesWmOutsourceIssueStatusEnum.PREPARE"
>
编辑
</el-button>
<!-- TODO @AI不同状态不同操作
1执行拣货
2执行领出
-->
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['mes:wm-outsource-issue:delete']"
v-if="scope.row.status === MesWmOutsourceIssueStatusEnum.PREPARE"
>
删除
</el-button>
<el-button
link
type="warning"
@click="handleExecute(scope.row.id)"
v-hasPermi="['mes:wm-outsource-issue:execute']"
v-if="scope.row.status === MesWmOutsourceIssueStatusEnum.PREPARE"
>
执行出库
</el-button>
</template>
</el-table-column>
</el-table>
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
<OutsourceIssueForm ref="formRef" @success="getList" />
</template>
<script setup lang="ts">
import { dateFormatter2 } from '@/utils/formatTime'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import download from '@/utils/download'
import { WmOutsourceIssueApi, WmOutsourceIssueVO } from '@/api/mes/wm/outsourceissue'
import MdVendorSelect from '@/views/mes/md/vendor/components/MdVendorSelect.vue'
import OutsourceIssueForm from './OutsourceIssueForm.vue'
import { MesWmOutsourceIssueStatusEnum } from '@/views/mes/utils/constants'
defineOptions({ name: 'MesWmOutsourceIssue' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref<WmOutsourceIssueVO[]>([]) // 列表的数据
const total = ref(0) // 列表的总页数
const exportLoading = ref(false) // 导出的加载中
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
code: undefined,
name: undefined,
vendorId: undefined,
workorderCode: undefined,
issueDate: undefined,
status: undefined
})
const queryFormRef = ref() // 搜索的表单
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await WmOutsourceIssueApi.getOutsourceIssuePage(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 handleExecute = async (id: number) => {
try {
await message.confirm('确认执行出库吗?执行后将扣减库存,且无法撤销。')
await WmOutsourceIssueApi.executeOutsourceIssue(id)
message.success('出库成功')
await getList()
} catch {}
}
/** 删除 */
const handleDelete = async (id: number) => {
try {
await message.delConfirm()
await WmOutsourceIssueApi.deleteOutsourceIssue(id)
message.success(t('common.delSuccess'))
await getList()
} catch {}
}
/** 导出 */
const handleExport = async () => {
try {
await message.exportConfirm()
exportLoading.value = true
const data = await WmOutsourceIssueApi.exportOutsourceIssue(queryParams)
download.excel(data, '外协发料单.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 */
onMounted(async () => {
await getList()
})
</script>