yufei_wang
2 weeks ago
12 changed files with 8066 additions and 0 deletions
@ -0,0 +1,428 @@ |
|||||
|
<template> |
||||
|
<ContentWrap> |
||||
|
<!-- 搜索工作栏 --> |
||||
|
<Search |
||||
|
:schema="[ |
||||
|
...PurchasereceiptJobMain.allSchemas.searchSchema, |
||||
|
...PurchasereceiptJobDetail.allSchemas.searchSchema |
||||
|
]" |
||||
|
@search="setSearchParams" |
||||
|
@reset="setSearchParams" |
||||
|
/> |
||||
|
</ContentWrap> |
||||
|
|
||||
|
<!-- 列表头部 --> |
||||
|
<TableHead |
||||
|
:HeadButttondata="HeadButttondata" |
||||
|
@button-base-click="buttonBaseClick" |
||||
|
:routeName="routeName" |
||||
|
@updataTableColumns="updataTableColumns" |
||||
|
@searchFormClick="searchFormClick" |
||||
|
:allSchemas="PurchasereceiptJobMain.allSchemas" |
||||
|
:detailAllSchemas="PurchasereceiptJobDetail.allSchemas" |
||||
|
/> |
||||
|
|
||||
|
<!-- 列表 --> |
||||
|
<ContentWrap> |
||||
|
<Table |
||||
|
v-clientTable |
||||
|
:columns="tableColumns" |
||||
|
:data="tableObject.tableList" |
||||
|
:loading="tableObject.loading" |
||||
|
:pagination="{ |
||||
|
total: tableObject.total |
||||
|
}" |
||||
|
v-model:pageSize="tableObject.pageSize" |
||||
|
v-model:currentPage="tableObject.currentPage" |
||||
|
v-model:sort="tableObject.sort" |
||||
|
> |
||||
|
<template #number="{ row }"> |
||||
|
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)"> |
||||
|
<span>{{ row.number }}</span> |
||||
|
</el-button> |
||||
|
</template> |
||||
|
<template #action="{ row, $index }"> |
||||
|
<ButtonBase |
||||
|
:Butttondata="butttondata(row, $index)" |
||||
|
@button-base-click="buttonTableClick($event, row)" |
||||
|
/> |
||||
|
</template> |
||||
|
</Table> |
||||
|
</ContentWrap> |
||||
|
|
||||
|
<!-- 表单弹窗:添加/修改 --> |
||||
|
<BasicForm |
||||
|
ref="formRef" |
||||
|
@success="getList" |
||||
|
:rules="PurchasereceiptJobMainRules" |
||||
|
:formAllSchemas="PurchasereceiptJobMain.allSchemas" |
||||
|
:searchTableParams="searchTableParams" |
||||
|
:tableAllSchemas="PurchasereceiptJobDetail.allSchemas" |
||||
|
:tableFormRules="PurchasereceiptJobDetailRules" |
||||
|
:apiUpdate="PurchasereceiptJobMainApi.updatePurchasereceiptJobMain" |
||||
|
:apiCreate="PurchasereceiptJobMainApi.createPurchasereceiptJobMain" |
||||
|
:isBusiness="true" |
||||
|
@searchTableSuccess="searchTableSuccess" |
||||
|
/> |
||||
|
|
||||
|
<!-- 详情 --> |
||||
|
<Detail |
||||
|
ref="detailRef" |
||||
|
:isBasic="false" |
||||
|
:allSchemas="PurchasereceiptJobMain.allSchemas" |
||||
|
:detailAllSchemas="PurchasereceiptJobDetail.allSchemas" |
||||
|
:detailAllSchemasRules="PurchasereceiptJobDetailRules" |
||||
|
:searchTableParams="searchTableParams" |
||||
|
:apiPage="PurchasereceiptJobDetailApi.getToolPurchasereceiptJobDetailPage" |
||||
|
:detailButtonIsShowEdit="false" |
||||
|
:detailButtonIsShowDelete="false" |
||||
|
:buttondataTable="buttondataTable" |
||||
|
@tableFormButton="tableFormButton" |
||||
|
/> |
||||
|
|
||||
|
<!-- 子包装弹窗 --> |
||||
|
<BasicForm |
||||
|
ref="detailParenPackingRef" |
||||
|
@success="getList" |
||||
|
:tableAllSchemas="PurchasereceiptJobDetailPackingNumber.allSchemas" |
||||
|
:tableFormRules="PurchasereceiptJobDetailRules" |
||||
|
:tableData="packingDetatableData.tableList" |
||||
|
:isBusiness="true" |
||||
|
:isShowButton="false" |
||||
|
:isShowReduceButton="false" |
||||
|
:isShowFooterButtton="false" |
||||
|
/> |
||||
|
<el-dialog |
||||
|
v-model="showQualityReport" |
||||
|
:title="t('质检明细')" |
||||
|
:append-to-body="false" |
||||
|
destroy-on-close |
||||
|
fullscreen |
||||
|
> |
||||
|
<iframe :height="reportHeight" width="100%" :src="qualityReport" frameborder="0"></iframe> |
||||
|
</el-dialog> |
||||
|
</template> |
||||
|
|
||||
|
<script setup lang="ts"> |
||||
|
import download from '@/utils/download' |
||||
|
import { |
||||
|
PurchasereceiptJobMain, |
||||
|
PurchasereceiptJobMainRules, |
||||
|
PurchasereceiptJobDetail, |
||||
|
PurchasereceiptJobDetailRules, |
||||
|
PurchasereceiptJobDetailPackingNumber |
||||
|
} from './purchasereceiptJobMain.data' |
||||
|
import * as PurchasereceiptJobMainApi from '@/api/wms/purchasereceiptJobMain' |
||||
|
import * as PurchasereceiptJobDetailApi from '@/api/wms/purchasereceiptJobDetail' |
||||
|
import * as defaultButtons from '@/utils/disposition/defaultButtons' |
||||
|
import { getSwitchByCode } from '@/api/wms/switch' |
||||
|
import { CACHE_KEY, useCache } from '@/hooks/web/useCache' |
||||
|
import { getReportUrl } from '@/utils/systemParam' |
||||
|
import { formatDate } from '@/utils/formatTime' |
||||
|
import { usePageLoading } from '@/hooks/web/usePageLoading' |
||||
|
const { loadStart, loadDone } = usePageLoading() |
||||
|
// 协定品收货任务主 |
||||
|
defineOptions({ name: 'ToolPurchasereceiptJobMain' }) |
||||
|
|
||||
|
const message = useMessage() // 消息弹窗 |
||||
|
const { t } = useI18n() // 国际化 |
||||
|
|
||||
|
const route = useRoute() // 路由信息 |
||||
|
const routeName = ref() |
||||
|
routeName.value = route.name |
||||
|
const tableColumns = ref([ |
||||
|
...PurchasereceiptJobMain.allSchemas.tableColumns, |
||||
|
...PurchasereceiptJobDetail.allSchemas.tableMainColumns |
||||
|
]) |
||||
|
|
||||
|
// 字段设置 更新主列表字段 |
||||
|
const updataTableColumns = (val) => { |
||||
|
|
||||
|
tableColumns.value = val |
||||
|
} |
||||
|
|
||||
|
// 查询列表页面参数设置 |
||||
|
const searchTableParams = ref([ |
||||
|
//{ |
||||
|
// formField: 'productItemCode', |
||||
|
// searchTableTitle: '物料信息', |
||||
|
// searchTableAllSchemas: Itembasic.allSchemas, |
||||
|
// searchTablePage: ItembasicApi.getItembasicPage |
||||
|
//} |
||||
|
]) |
||||
|
|
||||
|
// 查询页面返回 |
||||
|
const searchTableSuccess = (formField, searchField, val, formRef, type, row) => { |
||||
|
nextTick(() => { |
||||
|
if (type == 'tableForm') { |
||||
|
// 明细查询页赋值 |
||||
|
//row[formField] = val[0][searchField] |
||||
|
//row['poLine'] = val[0]['poLine'] |
||||
|
//row['batch'] = val[0]['toBatch'] |
||||
|
//row['altBatch'] = val[0]['altBatch'] |
||||
|
//row['itemCode'] = val[0]['itemCode'] |
||||
|
//row['itemName'] = val[0]['itemName'] |
||||
|
//row['itemDesc1'] = val[0]['itemDesc1'] |
||||
|
//row['itemDesc2'] = val[0]['itemDesc2'] |
||||
|
//row['projectCode'] = val[0]['projectCode'] |
||||
|
//row['qty'] = val[0]['qty'] |
||||
|
//row['uom'] = val[0]['uom'] |
||||
|
} else { |
||||
|
const setV = {} |
||||
|
setV[formField] = val[0][searchField] |
||||
|
//setV['ppNumber'] = val[0]['ppNumber'] |
||||
|
//setV['supplierCode'] = val[0]['supplierCode'] |
||||
|
formRef.setValues(setV) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
// 子表新增的时候选择表格之后需要会显得字段 |
||||
|
// const Echo = ['ppNumber','poLine', 'batch', 'altBatch', 'itemCode', 'itemName', 'itemDesc1', 'itemDesc2', 'projectCode', 'qty', 'uom'] |
||||
|
const Echo = [] |
||||
|
|
||||
|
const { tableObject, tableMethods } = useTable({ |
||||
|
getListApi: PurchasereceiptJobDetailApi.getToolPurchasereceiptJobDetailPage // 分页接口 |
||||
|
}) |
||||
|
|
||||
|
// 获得表格的各种操作 |
||||
|
const { getList, setSearchParams } = tableMethods |
||||
|
|
||||
|
// 列表头部按钮 |
||||
|
const HeadButttondata = [ |
||||
|
defaultButtons.defaultExportBtn({ hasPermi: 'wms:tool-purchasereceipt-job-main:export' }), // 导出 |
||||
|
defaultButtons.defaultFreshBtn(null), // 刷新 |
||||
|
defaultButtons.defaultFilterBtn(null), // 筛选 |
||||
|
defaultButtons.defaultSetBtn(null) // 设置 |
||||
|
] |
||||
|
|
||||
|
// 头部按钮事件 |
||||
|
const buttonBaseClick = (val, item) => { |
||||
|
if (val == 'export') { |
||||
|
// 导出 |
||||
|
handleExport() |
||||
|
} else if (val == 'refresh') { |
||||
|
// 刷新 |
||||
|
if (tableObject.params.filters && tableObject.params.filters.length > 0) { |
||||
|
searchFormClick({ |
||||
|
filters: tableObject.params.filters |
||||
|
}) |
||||
|
} else { |
||||
|
getList() |
||||
|
} |
||||
|
} else if (val == 'filtrate') { |
||||
|
// 筛选 |
||||
|
} else { |
||||
|
// 其他按钮 |
||||
|
console.log('其他按钮', item) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 根据状态返回该按钮是否显示 |
||||
|
const isShowMainButton = (row, val) => { |
||||
|
if (val.indexOf(row.status) > -1) { |
||||
|
return false |
||||
|
} else { |
||||
|
return true |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 根据收货来源判断该按钮是否显示,根据QMS开关判断该按钮是否显示(检验相关) |
||||
|
const EnableQms = ref(true) |
||||
|
const isShowSourceTypeButton = (row) => { |
||||
|
if (EnableQms.value) { |
||||
|
if (row.sourceType == 'EDI' || row.sourceType == 'ASN_ExternalReceipt') { |
||||
|
return true |
||||
|
} else { |
||||
|
return false |
||||
|
} |
||||
|
} else { |
||||
|
return true |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 列表-操作按钮 |
||||
|
const butttondata = (row, $index) => { |
||||
|
const findIndex = row['masterId'] |
||||
|
? tableObject.tableList.findIndex((item) => item['masterId'] == row['masterId']) |
||||
|
: -1 |
||||
|
if (findIndex > -1 && findIndex < $index) { |
||||
|
return [] |
||||
|
} |
||||
|
return [ |
||||
|
defaultButtons.mainListJobAccBtn({ hide: isShowMainButton(row, ['1']) }), // 承接 |
||||
|
defaultButtons.mainListJobCloBtn({ |
||||
|
hide: isShowMainButton(row, ['1']), |
||||
|
hasPermi: 'wms:tool-purchasereceipt-job-main:close' |
||||
|
}), // 关闭 |
||||
|
defaultButtons.mainListJobAbaBtn({ hide: isShowMainButton(row, ['2']) }), // 放弃 |
||||
|
// defaultButtons.mainListJobExeBtn({hide:isShowMainButton(row,['2'])}), // 执行 |
||||
|
{ |
||||
|
label: '拒收', |
||||
|
name: 'mainJobRefusal', |
||||
|
hide: isShowMainButton(row, ['2']), |
||||
|
type: 'primary', |
||||
|
icon: '', |
||||
|
color: '', |
||||
|
hasPermi: 'wms:tool-purchasereceipt-job-main:refusal', |
||||
|
link: true // 文本展现按钮 |
||||
|
}, |
||||
|
defaultButtons.mainListPlanCheckQualityReportBtn({ hide: isShowSourceTypeButton(row) }) // 查看质检报告 |
||||
|
] |
||||
|
} |
||||
|
|
||||
|
// 列表-操作按钮事件 |
||||
|
const buttonTableClick = async (val, row) => { |
||||
|
if (val == 'mainJobExe') { |
||||
|
// 执行 |
||||
|
console.log('列表-操作按钮事件-执行') |
||||
|
} else if (val == 'mainJobAba') { |
||||
|
// 放弃 |
||||
|
console.log('列表-操作按钮事件-放弃') |
||||
|
await PurchasereceiptJobMainApi.abandonPurchasereceiptJobMainSpare(row.masterId) |
||||
|
buttonBaseClick('refresh', null) |
||||
|
} else if (val == 'mainJobClo') { |
||||
|
// 拒收 |
||||
|
handleClose(row.masterId) |
||||
|
buttonBaseClick('refresh', null) |
||||
|
} else if (val == 'mainJobAcc') { |
||||
|
// 承接 |
||||
|
console.log('列表-操作按钮事件-承接') |
||||
|
await PurchasereceiptJobMainApi.acceptPurchasereceiptJobMain(row.masterId) |
||||
|
buttonBaseClick('refresh', null) |
||||
|
} |
||||
|
// else if(val == 'mainPlanCheckQualityReport'){ |
||||
|
// // 查看质检报告 |
||||
|
// checkQualityReport(row) |
||||
|
// } |
||||
|
else if (val == 'mainJobRefusal') { |
||||
|
// handleRefusal(row.masterId) |
||||
|
resonSubmit(row) |
||||
|
} |
||||
|
} |
||||
|
// 查看质检报告 |
||||
|
const showQualityReport = ref(false) |
||||
|
const reportHeight = ref(window.innerHeight - 120) |
||||
|
const qualityReport = ref('') |
||||
|
const checkQualityReport = async (row) => { |
||||
|
showQualityReport.value = true |
||||
|
qualityReport.value = `${getReportUrl()}/purchasereceiptReport?asnNumber=${row.asnNumber}` |
||||
|
} |
||||
|
|
||||
|
/** 关闭按钮操作 */ |
||||
|
const handleClose = async (id: number) => { |
||||
|
try { |
||||
|
await message.confirm(t('common.confirmColse')) |
||||
|
await PurchasereceiptJobMainApi.closePurchasereceiptJobMain(id) |
||||
|
message.success(t('common.closeSuccess')) |
||||
|
buttonBaseClick('refresh', null) |
||||
|
} catch {} |
||||
|
} |
||||
|
const resonSubmit = async (row) => { |
||||
|
ElMessageBox.prompt(t('ts.请输入拒收原因'), t('ts.提示'), { |
||||
|
confirmButtonText: t('common.ok'), |
||||
|
cancelButtonText: t('common.cancel'), |
||||
|
inputPattern: /^[\s\S]*.*\S[\s\S]*$/, // 判断非空,且非空格 |
||||
|
inputErrorMessage: t(`ts.${'驳回原因不能为空,且不超过256字'}`), |
||||
|
inputType: 'textarea', |
||||
|
inputValidator: (value) => { |
||||
|
if (value.length > 60 || value.length == 0) { |
||||
|
return false |
||||
|
} else { |
||||
|
return true |
||||
|
} |
||||
|
} |
||||
|
}) |
||||
|
.then(({ value }) => { |
||||
|
// 驳回原因 |
||||
|
handleRefusal(row.masterId, value) |
||||
|
}) |
||||
|
.catch(() => {}) |
||||
|
} |
||||
|
/** 拒收按钮操作 */ |
||||
|
const handleRefusal = async (id: number, refuseReason: string) => { |
||||
|
// refuseReason |
||||
|
try { |
||||
|
await PurchasereceiptJobMainApi.refusalPurchasereceiptJobMain({ id, refuseReason }) |
||||
|
message.success(t('common.refusalSuccess')) |
||||
|
buttonBaseClick('refresh', null) |
||||
|
} catch {} |
||||
|
} |
||||
|
|
||||
|
// 子包装数据 |
||||
|
const detailParenPackingRef = ref() |
||||
|
const { tableObject: packingDetatableData, tableMethods: packDetatableMethods } = useTable({ |
||||
|
getListApi: PurchasereceiptJobDetailApi.queryPurchaseceiptChildPackingNumber |
||||
|
}) |
||||
|
const { getList: queryDetailList } = packDetatableMethods |
||||
|
// 获取部门 用于详情 部门回显 |
||||
|
const { wsCache } = useCache() |
||||
|
/** 详情操作 */ |
||||
|
const detailRef = ref() |
||||
|
const openDetail = (row: any, titleName: any, titleValue: any) => { |
||||
|
const departmentCode = wsCache |
||||
|
.get(CACHE_KEY.DEPT) |
||||
|
.find((account) => account.id == row.departmentCode)?.name |
||||
|
if (departmentCode) row.departmentCode = JSON.parse(JSON.stringify(departmentCode)) |
||||
|
detailRef.value.openDetail(row, titleName, titleValue, 'jobPurchasereceiptMain') |
||||
|
} |
||||
|
|
||||
|
// 详情 table 操作扩展 按钮 |
||||
|
const buttondataTable = ref([ |
||||
|
{ |
||||
|
label: '查看子包装', |
||||
|
name: 'viewParentPickingNumber', |
||||
|
hide: false, |
||||
|
type: 'primary', |
||||
|
icon: '', |
||||
|
color: '', |
||||
|
hasPermi: '', |
||||
|
link: true // 文本展现按钮 |
||||
|
} |
||||
|
]) |
||||
|
|
||||
|
// 查看其他包装规格 |
||||
|
const tableFormButton = async (val, row) => { |
||||
|
if (val == 'viewParentPickingNumber') { |
||||
|
//查看其他包装规格 |
||||
|
packingDetatableData.params = { |
||||
|
masterId: row.masterId, |
||||
|
parentPackingNumber: row.packingNumber |
||||
|
} |
||||
|
await queryDetailList() |
||||
|
detailParenPackingRef.value.open('create', row, null, 'viewDetail') //查看明细数据 |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 导出按钮操作 */ |
||||
|
const handleExport = async () => { |
||||
|
try { |
||||
|
// 导出的二次确认 |
||||
|
await message.exportConfirm() |
||||
|
// 发起导出 |
||||
|
loadStart() |
||||
|
const excelTitle = ref(route.meta.title) |
||||
|
const data = await PurchasereceiptJobMainApi.exportToolPurchasereceiptJobMain(tableObject.params) |
||||
|
download.excel(data, `【${excelTitle.value}】【${formatDate(new Date())}】.xlsx`) |
||||
|
} catch { |
||||
|
} finally { |
||||
|
loadDone() |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 筛选提交 |
||||
|
const searchFormClick = (searchData) => { |
||||
|
tableObject.params = { |
||||
|
isSearch: true, |
||||
|
filters: searchData.filters |
||||
|
} |
||||
|
getList() // 刷新当前列表 |
||||
|
} |
||||
|
|
||||
|
/** 初始化 **/ |
||||
|
onMounted(async () => { |
||||
|
getList() |
||||
|
await getSwitchByCode('EnableQms').then((res) => { |
||||
|
EnableQms.value = res == 'TRUE' ? true : false |
||||
|
}) |
||||
|
}) |
||||
|
</script> |
File diff suppressed because it is too large
@ -0,0 +1,475 @@ |
|||||
|
<template> |
||||
|
<ContentWrap> |
||||
|
<!-- 搜索工作栏 --> |
||||
|
<Search |
||||
|
:schema="[ |
||||
|
...PurchasereceiptRecordMain.allSchemas.searchSchema, |
||||
|
...PurchasereceiptRecordDetail.allSchemas.searchSchema |
||||
|
]" |
||||
|
@search="searchList" |
||||
|
@reset="searchList" |
||||
|
/> |
||||
|
</ContentWrap> |
||||
|
|
||||
|
<!-- 列表头部 --> |
||||
|
<TableHead |
||||
|
:HeadButttondata="HeadButttondata" |
||||
|
@button-base-click="buttonBaseClick" |
||||
|
:routeName="routeName" |
||||
|
@updataTableColumns="updataTableColumns" |
||||
|
@searchFormClick="searchFormClick" |
||||
|
:allSchemas="PurchasereceiptRecordMain.allSchemas" |
||||
|
:detailAllSchemas="PurchasereceiptRecordDetail.allSchemas" |
||||
|
/> |
||||
|
|
||||
|
<!-- 列表 --> |
||||
|
<ContentWrap> |
||||
|
<Table |
||||
|
v-clientTable |
||||
|
:columns="tableColumns" |
||||
|
:data="tableObject.tableList" |
||||
|
:loading="tableObject.loading" |
||||
|
:pagination="{ |
||||
|
total: tableObject.total |
||||
|
}" |
||||
|
v-model:pageSize="tableObject.pageSize" |
||||
|
v-model:currentPage="tableObject.currentPage" |
||||
|
v-model:sort="tableObject.sort" |
||||
|
> |
||||
|
<template #number="{ row }"> |
||||
|
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)"> |
||||
|
<span>{{ row.number }}</span> |
||||
|
</el-button> |
||||
|
</template> |
||||
|
<template #action="{ row, $index }"> |
||||
|
<ButtonBase |
||||
|
:Butttondata="butttondata(row, $index)" |
||||
|
@button-base-click="buttonTableClick($event, row)" |
||||
|
/> |
||||
|
</template> |
||||
|
</Table> |
||||
|
</ContentWrap> |
||||
|
|
||||
|
<!-- 表单弹窗:添加/修改 --> |
||||
|
<BasicForm |
||||
|
ref="formRef" |
||||
|
@success="getList" |
||||
|
:rules="PurchasereceiptRecordMainRules" |
||||
|
:formAllSchemas="PurchasereceiptRecordMain.allSchemas" |
||||
|
:tableAllSchemas="PurchasereceiptRecordDetail.allSchemas" |
||||
|
:tableFormRules="PurchasereceiptRecordDetailRules" |
||||
|
:isBusiness="true" |
||||
|
/> |
||||
|
|
||||
|
<!-- 详情 --> |
||||
|
<Detail |
||||
|
ref="detailRef" |
||||
|
:isBasic="false" |
||||
|
:allSchemas="PurchasereceiptRecordMain.allSchemas" |
||||
|
:detailAllSchemas="detailAllSchemas" |
||||
|
:detailAllSchemasRules="PurchasereceiptRecordDetailRules" |
||||
|
:apiPage="apiPage" |
||||
|
:tabs="PurchasereceiptRequestTabsList" |
||||
|
@changeTabs="changeTabs" |
||||
|
:buttondataTable="buttondataTable" |
||||
|
@tableFormButton="tableFormButton" |
||||
|
/> |
||||
|
|
||||
|
<!-- 记录子包装弹窗 --> |
||||
|
<BasicForm |
||||
|
ref="detailParenPackingRef" |
||||
|
@success="getList" |
||||
|
:tableAllSchemas="PurchasereceiptRecordDetailPackingNumber.allSchemas" |
||||
|
:tableFormRules="PurchasereceiptRecordDetailRules" |
||||
|
:tableData="packingDetatableData.tableList" |
||||
|
:isBusiness="true" |
||||
|
:isShowButton="false" |
||||
|
:isShowReduceButton="false" |
||||
|
:isShowFooterButtton="false" |
||||
|
/> |
||||
|
|
||||
|
<!-- 缺货子包装弹窗 --> |
||||
|
<BasicForm |
||||
|
ref="outStockDetailParenPackingRef" |
||||
|
@success="getList" |
||||
|
:tableAllSchemas="PurchasereceiptRecordDetailPackingNumber.allSchemas" |
||||
|
:tableFormRules="PurchasereceiptRecordDetailRules" |
||||
|
:tableData="outStockPackingDetatableData.tableList" |
||||
|
:isBusiness="true" |
||||
|
:isShowButton="false" |
||||
|
:isShowReduceButton="false" |
||||
|
:isShowFooterButtton="false" |
||||
|
/> |
||||
|
<el-dialog |
||||
|
v-model="showQualityReport" |
||||
|
:title="t('质检明细')" |
||||
|
:append-to-body="false" |
||||
|
destroy-on-close |
||||
|
fullscreen |
||||
|
> |
||||
|
<iframe :height="reportHeight" width="100%" :src="qualityReport" frameborder="0"></iframe> |
||||
|
</el-dialog> |
||||
|
</template> |
||||
|
|
||||
|
<script setup lang="ts"> |
||||
|
import download from '@/utils/download' |
||||
|
import { |
||||
|
PurchasereceiptRecordMain, |
||||
|
PurchasereceiptRecordMainRules, |
||||
|
PurchasereceiptRecordDetail, |
||||
|
PurchasereceiptRecordDetailRules, |
||||
|
PurchasereceiptRecordDetailPackingNumber |
||||
|
} from './purchasereceiptRecordMain.data' |
||||
|
import * as PurchasereceiptRecordMainApi from '@/api/wms/purchasereceiptRecordMain' |
||||
|
import * as PurchasereceiptRecordDetailApi from '@/api/wms/purchasereceiptRecordDetail' |
||||
|
import * as defaultButtons from '@/utils/disposition/defaultButtons' |
||||
|
import { getSwitchByCode } from '@/api/wms/switch' |
||||
|
import { PurchasereceiptRequestTabsList } from '@/utils/disposition/tabsList' |
||||
|
import { CACHE_KEY, useCache } from '@/hooks/web/useCache' |
||||
|
import { getJmreportBaseUrl, getReportUrl } from '@/utils/systemParam' |
||||
|
import { formatDate } from '@/utils/formatTime' |
||||
|
import { usePageLoading } from '@/hooks/web/usePageLoading' |
||||
|
import { mainListPointBtn, mainListPrintInspectionBtn } from '@/utils/disposition/defaultButtons' |
||||
|
import { getAccessToken } from '@/utils/auth' |
||||
|
const { loadStart, loadDone } = usePageLoading() |
||||
|
// 采购收货记录主 |
||||
|
defineOptions({ name: 'PurchasereceiptRecordMain' }) |
||||
|
const message = useMessage() // 消息弹窗 |
||||
|
const { t } = useI18n() // 国际化 |
||||
|
const route = useRoute() // 路由信息 |
||||
|
const routeName = ref() |
||||
|
routeName.value = route.name |
||||
|
const apiPage = ref(PurchasereceiptRecordDetailApi.getToolPurchasereceiptRecordDetailPage |
||||
|
) |
||||
|
const tableColumns = ref([ |
||||
|
...PurchasereceiptRecordMain.allSchemas.tableColumns, |
||||
|
...PurchasereceiptRecordDetail.allSchemas.tableMainColumns |
||||
|
]) |
||||
|
const detailAllSchemas = ref(PurchasereceiptRecordDetail.allSchemas) |
||||
|
|
||||
|
// 字段设置 更新主列表字段 |
||||
|
const updataTableColumns = (val) => { |
||||
|
tableColumns.value = val |
||||
|
} |
||||
|
|
||||
|
const { tableObject, tableMethods } = useTable({ |
||||
|
getListApi: PurchasereceiptRecordDetailApi.getToolPurchasereceiptRecordDetailPage // 分页接口 |
||||
|
}) |
||||
|
|
||||
|
// 获得表格的各种操作 |
||||
|
const { getList, setSearchParams } = tableMethods |
||||
|
|
||||
|
// 列表头部按钮 |
||||
|
const HeadButttondata = [ |
||||
|
defaultButtons.defaultExportBtn({ hasPermi: 'wms:tool-purchasereceipt-record-main:export' }), // 导出 |
||||
|
defaultButtons.defaultFreshBtn(null), // 刷新 |
||||
|
defaultButtons.defaultFilterBtn(null), // 筛选 |
||||
|
defaultButtons.defaultSetBtn(null) // 设置 |
||||
|
] |
||||
|
|
||||
|
// 头部按钮事件 |
||||
|
const buttonBaseClick = (val, item) => { |
||||
|
if (val == 'export') { |
||||
|
// 导出 |
||||
|
handleExport() |
||||
|
} else if (val == 'refresh') { |
||||
|
// 刷新 |
||||
|
if (tableObject.params.filters && tableObject.params.filters.length > 0) { |
||||
|
searchFormClick({ |
||||
|
filters: tableObject.params.filters |
||||
|
}) |
||||
|
} else { |
||||
|
getList() |
||||
|
} |
||||
|
} else if (val == 'filtrate') { |
||||
|
// 筛选 |
||||
|
} else { |
||||
|
// 其他按钮 |
||||
|
console.log('其他按钮', item) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 根据收货来源判断该按钮是否显示,根据QMS开关判断该按钮是否显示(检验相关) |
||||
|
const EnableQms = ref(true) |
||||
|
const isShowSourceTypeButton = (row) => { |
||||
|
if (EnableQms.value) { |
||||
|
if (row.sourceType == 'EDI' || row.sourceType == 'ASN_ExternalReceipt') { |
||||
|
return true |
||||
|
} else { |
||||
|
return false |
||||
|
} |
||||
|
} else { |
||||
|
return true |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 根据QMS开关判断该按钮是否显示(检验相关) |
||||
|
const isShowSCPAndQMSButton = () => { |
||||
|
if (EnableQms.value) { |
||||
|
return false |
||||
|
} else { |
||||
|
return true |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 根据QMS开关判断该按钮是否显示(检验相关) |
||||
|
const isShowputawayRequestFlagButton = (row) => { |
||||
|
if (EnableQms.value) { |
||||
|
if (row.inspectRequestFlag == 'FALSE') { |
||||
|
return true |
||||
|
} else { |
||||
|
return false |
||||
|
} |
||||
|
} else { |
||||
|
return true |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 列表-操作按钮 |
||||
|
const butttondata = (row, $index) => { |
||||
|
const findIndex = row['masterId'] |
||||
|
? tableObject.tableList.findIndex((item) => item['masterId'] == row['masterId']) |
||||
|
: -1 |
||||
|
if (findIndex > -1 && findIndex < $index) { |
||||
|
return [defaultButtons.mainListPrintInspectionBtn({ hide: isShowSCPAndQMSButton() })] |
||||
|
} |
||||
|
return [ |
||||
|
defaultButtons.mainInspectRequestBtn({ |
||||
|
hasPermi: 'wms:tool-purchasereceipt-record-main:createInspectRequest', |
||||
|
hide: isShowputawayRequestFlagButton(row) |
||||
|
}), // 生成到货检验申请 |
||||
|
defaultButtons.mainPutawayRequestBtn({ |
||||
|
hasPermi: 'wms:tool-purchasereceipt-record-main:createPutawayRequest', |
||||
|
hide: row.putawayRequestFlag == 'FALSE' |
||||
|
}), // 生成采购上架申请 |
||||
|
defaultButtons.mainPurchasereturnRecordBtn({ |
||||
|
hasPermi: 'wms:tool-purchasereceipt-record-main:createPurchasereturnRecord', |
||||
|
hide: row.purchasereturnRecordFlag == 'FALSE' |
||||
|
}), // 生成采购退后记录申请 |
||||
|
//defaultButtons.mainListPlanCheckQualityReportBtn({hide:row.orderTypeM == "2"}), // 查看质检报告 |
||||
|
defaultButtons.mainListPlanCheckQualityReportBtn({ hide: isShowSourceTypeButton(row) }), // 查看质检报告 |
||||
|
defaultButtons.mainListPrintInspectionBtn({ hide: isShowSCPAndQMSButton() }) |
||||
|
] |
||||
|
} |
||||
|
|
||||
|
// 列表-操作按钮事件 |
||||
|
const buttonTableClick = async (val, row) => { |
||||
|
if (val == 'putawayRequest') { |
||||
|
// 生成采购上架申请 |
||||
|
handleCreatePutawayRequest(row.number) |
||||
|
} else if (val == 'inspectRequest') { |
||||
|
//生成到货检验申请 |
||||
|
handleCreateInspectRequest(row.number) |
||||
|
} else if (val == 'purchasereturnRecord') { |
||||
|
//生成采购退后记录申请 |
||||
|
handleCreatePurchasereturnRecord(row.number) |
||||
|
} else if (val == 'mainPlanCheckQualityReport') { |
||||
|
// 查看质检报告 |
||||
|
checkQualityReport(row) |
||||
|
} else if (val == 'printInspection') { |
||||
|
handlePrint(row) |
||||
|
} |
||||
|
} |
||||
|
const searchList = (model) => { |
||||
|
let params = { ...model } |
||||
|
if (Array.isArray(params.itemType) && params.itemType.length > 0) { |
||||
|
params.itemTypes = params.itemType.join(',') |
||||
|
params.itemType = '' |
||||
|
} else { |
||||
|
params.itemTypes = '' |
||||
|
params.itemType = '' |
||||
|
} |
||||
|
params.orderTypeM = '1' |
||||
|
setSearchParams(params) |
||||
|
} |
||||
|
|
||||
|
// 查看质检报告 |
||||
|
const reportHeight = ref(window.innerHeight - 120) |
||||
|
const showQualityReport = ref(false) |
||||
|
const qualityReport = ref('') |
||||
|
const checkQualityReport = async (row) => { |
||||
|
showQualityReport.value = true |
||||
|
// qualityReport.value = "http://localhost/purchasereceiptReport?asnNumber=ASNS20240720-0002" |
||||
|
qualityReport.value = `${getReportUrl()}/purchasereceiptReport?asnNumber=${row.asnNumber}` |
||||
|
} |
||||
|
|
||||
|
const BASE_URL = getJmreportBaseUrl() |
||||
|
const src = ref(BASE_URL + '/jmreport/view/986481894320525312?token=' + getAccessToken()) |
||||
|
const handlePrint = async (row) => { |
||||
|
window.open(src.value + '&jobNumber=' + row.jobNumber) |
||||
|
} |
||||
|
|
||||
|
/** 生成采购上架申请按钮操作 */ |
||||
|
const handleCreatePutawayRequest = async (number: string) => { |
||||
|
try { |
||||
|
await message.confirm(t('ts.确认生成上架申请吗?')) |
||||
|
tableObject.loading = true |
||||
|
await PurchasereceiptRecordMainApi.createPutawayRequest(number) |
||||
|
message.success(t('ts.上架申请生成成功')) |
||||
|
buttonBaseClick('refresh', null) |
||||
|
} catch { |
||||
|
} finally { |
||||
|
tableObject.loading = false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 生成到货检验申请按钮操作 */ |
||||
|
const handleCreateInspectRequest = async (number: string) => { |
||||
|
try { |
||||
|
await message.confirm(t('ts.确认生成到货检验申请吗?')) |
||||
|
tableObject.loading = true |
||||
|
await PurchasereceiptRecordMainApi.createInspectRequest(number) |
||||
|
message.success(t('ts.到货检验申请生成成功')) |
||||
|
buttonBaseClick('refresh', null) |
||||
|
} catch { |
||||
|
} finally { |
||||
|
tableObject.loading = false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 生成采购退货记录按钮操作 */ |
||||
|
const handleCreatePurchasereturnRecord = async (number: string) => { |
||||
|
try { |
||||
|
await message.confirm(t('ts.确认生成采购退货记录吗?')) |
||||
|
tableObject.loading = true |
||||
|
await PurchasereceiptRecordMainApi.createPurchasereturnRecord(number) |
||||
|
message.success(t('ts.采购退货记录生成成功')) |
||||
|
buttonBaseClick('refresh', null) |
||||
|
} catch { |
||||
|
} finally { |
||||
|
tableObject.loading = false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 子包装数据 |
||||
|
const detailParenPackingRef = ref() |
||||
|
const { tableObject: packingDetatableData, tableMethods: packDetatableMethods } = useTable({ |
||||
|
getListApi: PurchasereceiptRecordDetailApi.queryPurchaseceiptChildPackingNumber |
||||
|
}) |
||||
|
const { getList: queryDetailList } = packDetatableMethods |
||||
|
|
||||
|
// 缺货子包装数据 |
||||
|
const outStockDetailParenPackingRef = ref() |
||||
|
const { tableObject: outStockPackingDetatableData, tableMethods: outStockPackDetatableMethods } = |
||||
|
useTable({ |
||||
|
getListApi: PurchasereceiptRecordDetailApi.queryPurchaseshortageChildPackingNumber |
||||
|
}) |
||||
|
const { getList: queryOutStockDetailList } = outStockPackDetatableMethods |
||||
|
// 获取部门 用于详情 部门回显 |
||||
|
const { wsCache } = useCache() |
||||
|
/** 详情操作 */ |
||||
|
const detailRef = ref() |
||||
|
const openDetail = (row: any, titleName: any, titleValue: any) => { |
||||
|
const departmentCode = wsCache |
||||
|
.get(CACHE_KEY.DEPT) |
||||
|
.find((account) => account.id == row.departmentCode)?.name |
||||
|
if (departmentCode) row.departmentCode = JSON.parse(JSON.stringify(departmentCode)) |
||||
|
detailRef.value.openDetail(row, titleName, titleValue, 'recordPurchasereceiptMain') |
||||
|
} |
||||
|
|
||||
|
// 详情 table 操作扩展 按钮 |
||||
|
const buttondataTable = ref([ |
||||
|
{ |
||||
|
label: t('ts.查看子包装'), |
||||
|
name: 'viewParentPickingNumber', |
||||
|
hide: false, |
||||
|
type: 'primary', |
||||
|
icon: '', |
||||
|
color: '', |
||||
|
hasPermi: '', |
||||
|
link: true // 文本展现按钮 |
||||
|
} |
||||
|
]) |
||||
|
|
||||
|
const tabeKey = ref('receiptDetail') |
||||
|
// 查看其他包装规格 |
||||
|
const tableFormButton = async (val, row) => { |
||||
|
if (val == 'viewParentPickingNumber' && tabeKey.value == 'receiptDetail') { |
||||
|
//查看其他包装规格 |
||||
|
packingDetatableData.params = { |
||||
|
masterId: row.masterId, |
||||
|
parentPackingNumber: row.packingNumber |
||||
|
} |
||||
|
await queryDetailList() |
||||
|
detailParenPackingRef.value.open('create', row, null, 'viewDetail') //查看明细数据 |
||||
|
} |
||||
|
if (val == 'viewParentPickingNumber' && tabeKey.value == 'scarceGoodsDetail') { |
||||
|
//查看其他包装规格 |
||||
|
outStockPackingDetatableData.params = { |
||||
|
masterId: row.masterId, |
||||
|
parentPackingNumber: row.packingNumber |
||||
|
} |
||||
|
await queryOutStockDetailList() |
||||
|
outStockDetailParenPackingRef.value.open('create', row, null, 'viewDetail') //查看明细数据 |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 导出按钮操作 */ |
||||
|
const handleExport = async () => { |
||||
|
try { |
||||
|
// 导出的二次确认 |
||||
|
await message.exportConfirm() |
||||
|
// 发起导出 |
||||
|
loadStart() |
||||
|
const excelTitle = ref(route.meta.title) |
||||
|
const data = await PurchasereceiptRecordMainApi.exportToolPurchasereceiptRecordMain( |
||||
|
tableObject.params |
||||
|
) |
||||
|
download.excel(data, `【${excelTitle.value}】【${formatDate(new Date())}】.xlsx`) |
||||
|
} catch { |
||||
|
} finally { |
||||
|
loadDone() |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 筛选提交 |
||||
|
const searchFormClick = (searchData) => { |
||||
|
searchData.filters.push({ |
||||
|
action: '==', |
||||
|
column: 'order_type_m', |
||||
|
value: '1' |
||||
|
}) |
||||
|
tableObject.params = { |
||||
|
isSearch: true, |
||||
|
filters: searchData.filters |
||||
|
} |
||||
|
getList() // 刷新当前列表 |
||||
|
} |
||||
|
// tabs 切换事件 |
||||
|
const changeTabs = (data) => { |
||||
|
if (data.prop == 'receiptDetail') { |
||||
|
console.log(data) |
||||
|
apiPage.value = PurchasereceiptRecordDetailApi.getToolPurchasereceiptRecordDetailPage |
||||
|
detailAllSchemas.value = PurchasereceiptRecordDetail.allSchemas |
||||
|
tabeKey.value = 'receiptDetail' |
||||
|
} else if (data.prop == 'scarceGoodsDetail') { |
||||
|
apiPage.value = PurchasereceiptRecordDetailApi.getScarceGoodsDetailPage |
||||
|
detailAllSchemas.value = PurchasereceiptRecordDetail.allSchemas |
||||
|
tabeKey.value = 'scarceGoodsDetail' |
||||
|
} |
||||
|
detailAllSchemas.value.tableColumns.forEach((item) => { |
||||
|
if (item['field'] == 'qty') { |
||||
|
item['label'] = data.prop == 'scarceGoodsDetail' ? '缺货数量' : '收货数量' |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
console.log('detailAllSchemas', detailAllSchemas.value) |
||||
|
} |
||||
|
|
||||
|
/** 初始化 **/ |
||||
|
onMounted(async () => { |
||||
|
tableObject.params = { |
||||
|
orderTypeM: '1' |
||||
|
} |
||||
|
await getSwitchByCode('EnableQms').then((res) => { |
||||
|
EnableQms.value = res == 'TRUE' ? true : false |
||||
|
}) |
||||
|
getList() |
||||
|
}) |
||||
|
onActivated(() => { |
||||
|
tableObject.params = { |
||||
|
orderTypeM: '1' |
||||
|
} |
||||
|
getList() |
||||
|
}) |
||||
|
</script> |
File diff suppressed because it is too large
@ -0,0 +1,915 @@ |
|||||
|
<template> |
||||
|
<ContentWrap> |
||||
|
<!-- 搜索工作栏 --> |
||||
|
<Search :schema="[...PurchasereceiptRequestMain.allSchemas.searchSchema,...PurchasereceiptRequestDetail.allSchemas.searchSchema]" @search="setSearchParams" @reset="setSearchParams" /> |
||||
|
</ContentWrap> |
||||
|
|
||||
|
<!-- 列表头部 --> |
||||
|
<TableHead |
||||
|
:HeadButttondata="HeadButttondata" |
||||
|
@button-base-click="buttonBaseClick" |
||||
|
:routeName="routeName" |
||||
|
@updataTableColumns="updataTableColumns" |
||||
|
@searchFormClick="searchFormClick" |
||||
|
:allSchemas="PurchasereceiptRequestMain.allSchemas" |
||||
|
:detailAllSchemas="PurchasereceiptRequestDetail.allSchemas" |
||||
|
/> |
||||
|
<!-- 列表 --> |
||||
|
<ContentWrap> |
||||
|
<Table v-clientTable |
||||
|
:columns="tableColumns" |
||||
|
:data="tableObject.tableList" |
||||
|
:loading="tableObject.loading" |
||||
|
:pagination="{ |
||||
|
total: tableObject.total |
||||
|
}" |
||||
|
v-model:pageSize="tableObject.pageSize" |
||||
|
v-model:currentPage="tableObject.currentPage" |
||||
|
v-model:sort="tableObject.sort" |
||||
|
> |
||||
|
<template #number="{row}"> |
||||
|
<el-button type="primary" link @click="openDetail(row, '单据号', row.number)"> |
||||
|
<span>{{ row.number }}</span> |
||||
|
</el-button> |
||||
|
</template> |
||||
|
<template #action="{ row,$index }"> |
||||
|
<ButtonBase :Butttondata="butttondata(row,$index)" @button-base-click="buttonTableClick($event,row)" /> |
||||
|
</template> |
||||
|
</Table> |
||||
|
</ContentWrap> |
||||
|
|
||||
|
<!-- 表单弹窗:添加/修改 --> |
||||
|
<BasicForm |
||||
|
ref="formRef" |
||||
|
@success="getList" |
||||
|
:isOpenSearchTable="true" |
||||
|
fieldTableColumn="poNumber" |
||||
|
:rules="PurchasereceiptRequestMainRules" |
||||
|
:formAllSchemas="PurchasereceiptRequestMain.allSchemas" |
||||
|
:tableAllSchemas="PurchasereceiptRequestDetail.allSchemas" |
||||
|
:tableFormRules="PurchasereceiptRequestDetailRules" |
||||
|
:tableData="tableData" |
||||
|
:apiUpdate="PurchasereceiptRequestMainApi.updatePurchasereceiptRequestMain" |
||||
|
:apiCreate="PurchasereceiptRequestMainApi.createPurchasereceiptRequestMain" |
||||
|
:isBusiness="true" |
||||
|
@handleAddTable="handleAddTable" |
||||
|
@handleDeleteTable="handleDeleteTable" |
||||
|
:isShowReduceButtonSelection="true" |
||||
|
@tableSelectionDelete="tableSelectionDelete" |
||||
|
@searchTableSuccess="searchTableSuccess" |
||||
|
@submitForm="submitForm" |
||||
|
@formFormDateChange="formFormDateChange" |
||||
|
@onEnter="onEnter" |
||||
|
> |
||||
|
<template v-slot="{row}"> |
||||
|
<el-date-picker v-bind:modelValue="row['expireTime']?addDay(row['produceDate'],row['expireTime']):dayjs('2099-12-31').valueOf()" |
||||
|
:clearable="true" |
||||
|
style="width: 100%" |
||||
|
:disabled="true" |
||||
|
:placeholder="t('ts.选择日期')"/> |
||||
|
</template> |
||||
|
</BasicForm> |
||||
|
<!-- 详情 --> |
||||
|
<Detail |
||||
|
ref="detailRef" |
||||
|
:isBasic="false" |
||||
|
:allSchemas="PurchasereceiptRequestMain.allSchemas" |
||||
|
:detailAllSchemas="detailAllSchemas" |
||||
|
:detailAllSchemasRules="PurchasereceiptRequestDetailRules" |
||||
|
:apiCreate="PurchasereceiptRequestDetailApi.createPurchasereceiptRequestDetail" |
||||
|
:apiUpdate="PurchasereceiptRequestDetailApi.updatePurchasereceiptRequestDetail" |
||||
|
:apiPage="apiPage" |
||||
|
:apiDelete="PurchasereceiptRequestDetailApi.deletePurchasereceiptRequestDetail" |
||||
|
fromeWhere="purchasereceipt" |
||||
|
@searchTableSuccessDetail="searchTableSuccessDetail" |
||||
|
:detailButtonIsShowAdd="false" |
||||
|
:detailButtonIsShowEdit="false" |
||||
|
:detailButtonIsShowDelete="false" |
||||
|
:buttondataTable="buttondataTable" |
||||
|
@tableFormButton="tableFormButton" |
||||
|
/> |
||||
|
|
||||
|
<!-- 导入 --> |
||||
|
<ImportForm |
||||
|
ref="importFormRef" |
||||
|
url="/wms/purchasereceipt-request-main/import" |
||||
|
:importTemplateData="importTemplateData" |
||||
|
@success="importSuccess" |
||||
|
:updateIsDisable="true" |
||||
|
:coverIsDisable="true" |
||||
|
:mode="2" |
||||
|
/> |
||||
|
|
||||
|
<!-- 创建标签 --> |
||||
|
<BasicForm |
||||
|
ref="formLabelRef" |
||||
|
@success="getList" |
||||
|
:tableAllSchemas="PurchasereceiptRequestDetailLabel.allSchemas" |
||||
|
:tableFormRules="PurchasereceiptRequestDetailRules" |
||||
|
:tableData="detatableData.tableList" |
||||
|
:isBusiness="true" |
||||
|
:isShowButton="false" |
||||
|
:isShowReduceButton="false" |
||||
|
@submitForm="submitFormLabel" |
||||
|
@searchTableSuccess="searchTableSuccessLabel" |
||||
|
@formFormDateChange="onChangeLabel" |
||||
|
/> |
||||
|
|
||||
|
<!-- 子包装弹窗 --> |
||||
|
<BasicForm |
||||
|
ref="detailParenPackingRef" |
||||
|
@success="getList" |
||||
|
:tableAllSchemas="PurchasereceiptRequestDetailPackingNumber.allSchemas" |
||||
|
:tableFormRules="PurchasereceiptRequestDetailRules" |
||||
|
:tableData="packingDetatableData.tableList" |
||||
|
:isBusiness="true" |
||||
|
:isShowButton="false" |
||||
|
:isShowReduceButton="false" |
||||
|
:isShowFooterButtton="false" |
||||
|
/> |
||||
|
<!-- 标签打印 --> |
||||
|
<SearchTable width="905px" ref="searchTableRef" @searchTableSuccess="searchTableSuccess1" > |
||||
|
<template #searchQuery> |
||||
|
<el-form :inline="true"> |
||||
|
<el-form-item> |
||||
|
<el-input v-model="printItemCode" placeholder="请输入物料代码"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item> |
||||
|
<el-button type="primary" @click="searchPrint"> |
||||
|
<Icon class="mr-5px" icon="ep:search" />查询 |
||||
|
</el-button> |
||||
|
<el-button type="primary" @click="resetPrint"> |
||||
|
<Icon class="mr-5px" icon="ep:refresh" />重置 |
||||
|
</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
</template> |
||||
|
</SearchTable> |
||||
|
<el-dialog |
||||
|
v-model="showQualityReport" |
||||
|
:title="t('质检明细')" |
||||
|
:append-to-body="false" |
||||
|
destroy-on-close |
||||
|
fullscreen |
||||
|
> |
||||
|
<iframe :height="reportHeight" width="100%" :src="qualityReport" frameborder="0"></iframe> |
||||
|
</el-dialog> |
||||
|
|
||||
|
</template> |
||||
|
|
||||
|
<script setup lang="ts"> |
||||
|
import dayjs from 'dayjs' |
||||
|
import { addDay } from '@/utils/formatTime' |
||||
|
import download from '@/utils/download' |
||||
|
import { CACHE_KEY, useCache } from '@/hooks/web/useCache' |
||||
|
import { |
||||
|
PurchasereceiptRequestMain, |
||||
|
PurchasereceiptRequestMainRules, |
||||
|
PurchasereceiptRequestDetail, |
||||
|
PurchasereceiptRequestDetailRules, |
||||
|
PurchasereceiptRequestDetailLabel, |
||||
|
PurchasereceiptRequestDetailPackingNumber |
||||
|
} from './purchasereceiptRequestMain.data' |
||||
|
import { |
||||
|
SupplierdeliverRequestPackage |
||||
|
} from '../../supplierdeliver/supplierdeliverRequestMain/supplierdeliverRequestMain.data' |
||||
|
import { PurchaseDetail } from '../../supplierdeliver/purchaseMain/purchaseMain.data' |
||||
|
import * as PackageApi from '@/api/wms/package' |
||||
|
import * as PurchasereceiptRequestMainApi from '@/api/wms/purchasereceiptRequestMain' |
||||
|
import * as PurchasereceiptRequestDetailApi from '@/api/wms/purchasereceiptRequestDetail' |
||||
|
import * as defaultButtons from '@/utils/disposition/defaultButtons' |
||||
|
import { formatDate } from '@/utils/formatTime' |
||||
|
import * as SupplieritemApi from '@/api/wms/supplieritem' |
||||
|
import { getAccessToken } from '@/utils/auth' |
||||
|
import { getSwitchByCode } from '@/api/wms/switch' |
||||
|
import * as PurchaseDetailApi from '@/api/wms/purchaseDetail' |
||||
|
import * as ItembasicApi from '@/api/wms/itembasic' |
||||
|
import { getJmreportBaseUrl } from '@/utils/systemParam' |
||||
|
import { getReportUrl } from '@/utils/systemParam' |
||||
|
import { dateFormatter2 } from '@/utils/formatTime' |
||||
|
import { usePageLoading } from '@/hooks/web/usePageLoading' |
||||
|
const { loadStart, loadDone } = usePageLoading() |
||||
|
// 协定品收货申请 |
||||
|
defineOptions({ name: 'ToolPurchasereceiptRequestMain' }) |
||||
|
|
||||
|
const message = useMessage() // 消息弹窗 |
||||
|
const { t } = useI18n() // 国际化 |
||||
|
const genLabelId = ref(); //主表ID |
||||
|
const route = useRoute() // 路由信息 |
||||
|
const routeName = ref() |
||||
|
routeName.value = route.name |
||||
|
const tableColumns = ref([...PurchasereceiptRequestMain.allSchemas.tableColumns,...PurchasereceiptRequestDetail.allSchemas.tableMainColumns]) |
||||
|
|
||||
|
const apiPage = ref(PurchasereceiptRequestDetailApi.getTOOLPurchasereceiptRequestDetailPage) |
||||
|
const detailAllSchemas = ref(PurchasereceiptRequestDetail.allSchemas) |
||||
|
|
||||
|
|
||||
|
// 字段设置 更新主列表字段 |
||||
|
const updataTableColumns = (val) => { |
||||
|
tableColumns.value = val |
||||
|
} |
||||
|
|
||||
|
// 查询页面返回 |
||||
|
const searchTableSuccessLabel = (formField, searchField, val, formRef, type, row) => { |
||||
|
nextTick(() => { |
||||
|
if (type == 'tableForm') { |
||||
|
// 明细查询页赋值 |
||||
|
row[formField] = val[0][searchField] |
||||
|
if (formField == 'packUnit' || formField == 'packQty') { |
||||
|
row['packUnit'] = val[0]['packUnit'] |
||||
|
row['packQty'] = val[0]['packQty'] |
||||
|
} |
||||
|
if (formField == 'secondPackUnit') { |
||||
|
row['secondPackUnit'] = val[0]['packUnit'] |
||||
|
row['secondPackQty'] = val[0]['packQty'] |
||||
|
} |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
// 查询页面返回 |
||||
|
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => { |
||||
|
//console.log("formRef",formRef) |
||||
|
console.log("searchTableSuccess",formField, searchField, val, formRef, type, row) |
||||
|
nextTick(async () => { |
||||
|
if (type == 'tableForm') { |
||||
|
// 明细查询页赋值 |
||||
|
//row[formField] = val[0][searchField] |
||||
|
if(formField == 'itemCode') { |
||||
|
row['itemCode'] = val[0]['code'] |
||||
|
} else if(formField == 'poNumber') { |
||||
|
updateTableData(val) |
||||
|
// row['poNumber'] = val[0]['number'] |
||||
|
|
||||
|
} else if(formField == 'poLine'){ |
||||
|
//添加费用明细--点击确定 |
||||
|
val.forEach(item=>{ |
||||
|
if(tableData.value.find(item1=>item1['id'] == item['id'])) return |
||||
|
const newRow = JSON.parse(JSON.stringify({...tableFormKeys,...row})) |
||||
|
newRow['poLine'] = item['lineNumber'] |
||||
|
newRow['itemCode'] = item['itemCode'] |
||||
|
newRow['uom'] = item['uom'] |
||||
|
newRow['poNumber'] = item['number'] |
||||
|
newRow['poLineType'] = item['poLineType'] |
||||
|
let supplierCode = formRef.formModel.supplierCode; |
||||
|
let queryData = { |
||||
|
supplierCode:supplierCode, |
||||
|
itemCode: item['itemCode'] |
||||
|
} |
||||
|
SupplieritemApi.getDefaultLocationCode(queryData as SupplieritemApi.SupplieritemVO).then(res =>{ |
||||
|
newRow['defaultToLocationCode'] = res |
||||
|
tableData.value.push(newRow) |
||||
|
}) |
||||
|
}) |
||||
|
}else if (formField == 'packQty'){ |
||||
|
row['packQty'] = val[0]['packQty'] |
||||
|
row['packUnit'] = val[0]['packUnit'] |
||||
|
}else if(formField == 'defaultToLocationCode'){ |
||||
|
row['defaultToLocationCode'] = val[0]['code'] |
||||
|
} else { |
||||
|
row[formField] = val[0][searchField] |
||||
|
} |
||||
|
} else { |
||||
|
const setV = {} |
||||
|
if(formField == 'supplierCode'){ |
||||
|
setV['supplierCode'] = val[0]['code'] |
||||
|
}else if(formField == 'poNumber') { |
||||
|
//新增--采购订单-- |
||||
|
setV['supplierCode'] = val[0]['supplierCode'] |
||||
|
setV['poNumber'] = val[0]['number'] |
||||
|
let res = await PurchasereceiptRequestMainApi.queryPurchasePlan({ |
||||
|
"poNumber": val[0]['number']//采购订单号 |
||||
|
}) |
||||
|
console.log('默认到库位res',res) |
||||
|
if(res&&res['toLocationCode']){ |
||||
|
setV['onlyDefaultToLocationCode'] = res['toLocationCode'] // 仅仅用来存储数据--用于给子表赋值 |
||||
|
} |
||||
|
|
||||
|
// 请求明细数据 |
||||
|
getSearchTableData(val[0]['number']) |
||||
|
// tableData.value = [newRow] |
||||
|
// formRef.handleAddTable() |
||||
|
} |
||||
|
setV[formField] = val[0][searchField] |
||||
|
formRef.setValues(setV) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
// 查询页面返回——详情 |
||||
|
const searchTableSuccessDetail = (formField, searchField, val, formRef ) => { |
||||
|
nextTick(() => { |
||||
|
const setV = {} |
||||
|
setV[formField] = val[0][searchField] |
||||
|
if(formField == 'itemCode') { |
||||
|
setV['itemCode'] = val[0]['code'] |
||||
|
} else { |
||||
|
setV['poNumber'] = val[0]['number'] |
||||
|
setV['poLine'] = val[0]['lineNumber'] |
||||
|
} |
||||
|
formRef.setValues(setV) |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
const { tableObject, tableMethods } = useTable({ |
||||
|
getListApi: PurchasereceiptRequestDetailApi.getTOOLPurchasereceiptRequestDetailPage // 分页接口 |
||||
|
}) |
||||
|
|
||||
|
// 获得表格的各种操作 |
||||
|
const { getList, setSearchParams } = tableMethods |
||||
|
|
||||
|
// 列表头部按钮 |
||||
|
const HeadButttondata = [ |
||||
|
defaultButtons.defaultAddBtn(null), // 新增 |
||||
|
defaultButtons.defaultImportBtn(null), // 导入 |
||||
|
defaultButtons.defaultExportBtn({hasPermi:'wms:tool-purchasereceipt-request-main:export'}), // 导出 |
||||
|
defaultButtons.defaultFreshBtn(null), // 刷新 |
||||
|
defaultButtons.defaultFilterBtn(null), // 筛选 |
||||
|
defaultButtons.defaultSetBtn(null), // 设置 |
||||
|
] |
||||
|
|
||||
|
// 头部按钮事件 |
||||
|
const buttonBaseClick = (val, item) => { |
||||
|
if (val == 'add') {// 新增 |
||||
|
openForm('create') |
||||
|
} else if (val == 'import') {// 导入 |
||||
|
handleImport() |
||||
|
}else if (val == 'export') { // 导出 |
||||
|
handleExport() |
||||
|
} else if (val == 'refresh') { // 刷新 |
||||
|
if (tableObject.params.filters && tableObject.params.filters.length > 0 ) { |
||||
|
searchFormClick({ |
||||
|
filters: tableObject.params.filters |
||||
|
}) |
||||
|
} else { |
||||
|
getList() |
||||
|
} |
||||
|
} else if (val == 'filtrate') { // 筛选 |
||||
|
} else { // 其他按钮 |
||||
|
console.log('其他按钮', item) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 根据状态返回该按钮是否显示 |
||||
|
const isShowMainButton = (row,val) => { |
||||
|
if (val.indexOf(row.status) > -1) { |
||||
|
return false |
||||
|
} else { |
||||
|
return true |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 根据收货来源判断该按钮是否显示,根据QMS开关判断该按钮是否显示(检验相关) |
||||
|
const EnableQms = ref(true) |
||||
|
const isShowSourceTypeButton = (row) => { |
||||
|
if (EnableQms.value) { |
||||
|
if (row.sourceType == 'EDI' || row.sourceType == 'ASN_ExternalReceipt') { |
||||
|
return true |
||||
|
} else { |
||||
|
return false |
||||
|
} |
||||
|
} else { |
||||
|
return true |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 根据状态返回该按钮是否显示 |
||||
|
const isASNShowMainButton = (row,val) => { |
||||
|
if (val.indexOf(row.status) > -1) { |
||||
|
if(row.sourceType == 'ASN_ExternalReceipt'){ |
||||
|
return false |
||||
|
} |
||||
|
} else { |
||||
|
return true |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// 根据状态返回该按钮是否显示 |
||||
|
const isASNShowMainButtonCreateLabel = (row,val) => { |
||||
|
if (val.indexOf(row.status) > -1) { |
||||
|
if(row.sourceType == 'ASN_ExternalReceipt' && row.asnOutLabel == '2'){ |
||||
|
return true; |
||||
|
}else{ |
||||
|
return false; |
||||
|
} |
||||
|
} else { |
||||
|
return true; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 列表-操作按钮 |
||||
|
const butttondata = (row,$index) => { |
||||
|
const findIndex = row['masterId']?tableObject.tableList.findIndex(item=>item['masterId'] == row['masterId']):-1 |
||||
|
if(findIndex>-1&&findIndex<$index){ |
||||
|
return [] |
||||
|
} |
||||
|
return [ |
||||
|
defaultButtons.mainListReAddBtn({hide:isShowMainButton(row,['5']),hasPermi:'wms:tool-purchasereceipt-request-main:reAdd'}), //重新添加 |
||||
|
defaultButtons.mainListSubmitBtn({hide:isShowMainButton(row,['1']),hasPermi:'wms:tool-purchasereceipt-request-main:submit'}), // 提交审批 |
||||
|
defaultButtons.mainListTurnDownBtn({hide:isShowMainButton(row,['2']),hasPermi:'wms:tool-purchasereceipt-request-main:refused'}), // 驳回 |
||||
|
defaultButtons.mainListApproveBtn({hide:isShowMainButton(row,['2']),hasPermi:'wms:tool-purchasereceipt-request-main:agree'}), // 审批通过 |
||||
|
// defaultButtons.mainListEditBtn({hide:isShowMainButton(row,['1']),hasPermi:'wms:purchasereceipt-request-main:update'}), // 编辑 |
||||
|
{ |
||||
|
label: '生成标签', |
||||
|
name: 'ssbq', |
||||
|
hide: isASNShowMainButtonCreateLabel(row, ['3']), |
||||
|
type: 'primary', |
||||
|
icon: '', |
||||
|
color: '', |
||||
|
hasPermi: '', |
||||
|
link: true // 文本展现按钮 |
||||
|
}, |
||||
|
defaultButtons.mainListPointBtn({ hide: isASNShowMainButton(row, ['3','6','8']) }), // 标签打印 |
||||
|
defaultButtons.mainListHandleBtn({hide:isShowMainButton(row,['3']),hasPermi:'wms:tool-purchasereceipt-request-main:handle'}), // 处理 |
||||
|
defaultButtons.mainListCloseBtn({hide:isShowMainButton(row,['1','2','3','4','6']),hasPermi:'wms:tool-purchasereceipt-request-main:close'}), // 关闭 |
||||
|
defaultButtons.mainListPlanCheckQualityReportBtn({hide:isShowSourceTypeButton(row)}), // 查看质检报告 |
||||
|
] |
||||
|
} |
||||
|
|
||||
|
// 列表-操作按钮事件 |
||||
|
const buttonTableClick = async (val, row) => { |
||||
|
if (val == 'mainClose') { // 关闭 |
||||
|
handleClose(row.masterId) |
||||
|
} else if (val == 'mainReAdd') { // 重新添加 |
||||
|
handleReAdd(row.masterId) |
||||
|
} else if (val == 'mainSubmit') { // 提交审批 |
||||
|
handleSubmit(row.masterId) |
||||
|
} else if (val == 'mainTurnDown') { // 驳回 |
||||
|
handleRefused(row.masterId) |
||||
|
} else if (val == 'mainApprove') { // 审批通过 |
||||
|
handleAgree(row.masterId) |
||||
|
} else if (val == 'mainHandle') { // 处理 |
||||
|
handleHandle(row.masterId) |
||||
|
} else if (val == 'edit') { // 编辑 |
||||
|
openForm('update', row) |
||||
|
} else if(val == 'ssbq'){ // 生成标签 |
||||
|
// 生成标签 |
||||
|
detatableData.params = { |
||||
|
masterId:row.masterId |
||||
|
} |
||||
|
genLabelId.value = row.masterId |
||||
|
// 数据来源是EDI默认让输入生产日期 |
||||
|
if (row.sourceType == 'EDI') { |
||||
|
PurchasereceiptRequestDetailLabel.allSchemas.tableFormColumns.forEach(item => { |
||||
|
if (item.field == 'produceDate') { |
||||
|
item.tableForm.disabled = false |
||||
|
} |
||||
|
}) |
||||
|
} else { |
||||
|
PurchasereceiptRequestDetailLabel.allSchemas.tableFormColumns.forEach(item => { |
||||
|
if (item.field == 'produceDate') { |
||||
|
item.tableForm.disabled = true |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
await getDetailList() |
||||
|
formLabelRef.value.open('create', row, null,'createLabel')//创建标签页面 createLabel 标题 |
||||
|
}else if (val == 'point') { |
||||
|
// 标签打印 |
||||
|
labelPrint(row) |
||||
|
} |
||||
|
else if(val == 'mainPlanCheckQualityReport'){ |
||||
|
// 查看质检报告 |
||||
|
checkQualityReport(row) |
||||
|
} |
||||
|
} |
||||
|
// 生成标签选择 |
||||
|
const onChangeLabel =(field,e,row, index) => { |
||||
|
const arr = dateFormatter2('', '', e)?.split('-') |
||||
|
const str = arr[0]+arr[1]+arr[2] |
||||
|
row.batch = str |
||||
|
} |
||||
|
// 查看质检报告 |
||||
|
const showQualityReport = ref(false) |
||||
|
const reportHeight = ref(window.innerHeight - 120) |
||||
|
const qualityReport = ref('') |
||||
|
const checkQualityReport = async (row)=>{ |
||||
|
showQualityReport.value = true |
||||
|
qualityReport.value = `${getReportUrl()}/purchasereceiptReport?asnNumber=${row.asnNumber}` |
||||
|
} |
||||
|
|
||||
|
// 生成标签 |
||||
|
const isCreateLabel = ref(false) |
||||
|
const formLabelRef = ref() |
||||
|
const { tableObject: detatableData, tableMethods: detatableMethods } =useTable({ |
||||
|
getListApi: PurchasereceiptRequestDetailApi.getTOOLPurchasereceiptRequestDetailPage |
||||
|
}) |
||||
|
const { getList:getDetailList } = detatableMethods |
||||
|
|
||||
|
// 生成标签按钮操作 |
||||
|
const submitFormLabel = async (formType, submitData) => { |
||||
|
let data = {...submitData} |
||||
|
if(data.masterId){ |
||||
|
data.id = data.masterId |
||||
|
} |
||||
|
try { |
||||
|
console.log("formType==",formType) |
||||
|
console.log("data==",data) |
||||
|
data.subList = detatableData.tableList |
||||
|
console.log("detatableData",detatableData) |
||||
|
await message.confirm(t('ts.是否为此数据生成标签?')) |
||||
|
await PurchasereceiptRequestMainApi.genLabel(data) //genLabelId.value |
||||
|
isCreateLabel.value = true |
||||
|
message.success('创建标签成功') |
||||
|
} finally { |
||||
|
formLabelRef.value.formLoading = false |
||||
|
formLabelRef.value.dialogVisible = false |
||||
|
buttonBaseClick('refresh',null); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
const BASE_URL = getJmreportBaseUrl() |
||||
|
const src = ref(BASE_URL + '/jmreport/view/922729953438072832?token=' + getAccessToken()) |
||||
|
|
||||
|
// 标签打印 |
||||
|
const searchTableRef = ref() |
||||
|
|
||||
|
// 本地筛选 |
||||
|
const printTableList = ref([]) |
||||
|
const printItemCode = ref('') |
||||
|
const searchPrint = ()=>{ |
||||
|
printItemCode.value = printItemCode.value.trim() |
||||
|
if(printItemCode.value == ''){ |
||||
|
searchTableRef.value.updateData(printTableList.value) |
||||
|
}else{ |
||||
|
console.log(printItemCode.value) |
||||
|
let printItemCodes = printItemCode.value.split(',') |
||||
|
console.log(printItemCodes) |
||||
|
let itemCodesList = printTableList.value.filter(item=>!!printItemCodes.find(item1=>item['itemCode']==item1)) |
||||
|
searchTableRef.value.updateData(itemCodesList) |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
const resetPrint = ()=>{ |
||||
|
printItemCode.value = '' |
||||
|
searchPrint() |
||||
|
} |
||||
|
const labelPrint = async (row) => { |
||||
|
tableObject.loading = true |
||||
|
const defaultParams = {'moduleName':'purchasereceipt_request','recordNumber':row.asnNumber} |
||||
|
const {tableObject:tableObjectPrint ,tableMethods} = useTable({ |
||||
|
defaultParams, |
||||
|
getListApi: PackageApi.getLabelDetailPage // 分页接口 |
||||
|
}) |
||||
|
|
||||
|
// 获得表格的各种操作 |
||||
|
const { getList:getListPrint } = tableMethods |
||||
|
await getListPrint() |
||||
|
tableObject.loading = false |
||||
|
const tableColumns = SupplierdeliverRequestPackage.allSchemas.tableFormColumns |
||||
|
tableColumns.forEach((item) => { |
||||
|
item.width = item.table?.width |
||||
|
}) |
||||
|
printItemCode.value = '' |
||||
|
printTableList.value = JSON.parse(JSON.stringify(tableObjectPrint.tableList)) |
||||
|
searchTableRef.value.openData("标签信息",tableObjectPrint,{tableColumns},true) |
||||
|
} |
||||
|
|
||||
|
// 批量打印---采购收货申请 |
||||
|
const searchTableSuccess1 = async (formField, searchField, val, formRef, type, row) => { |
||||
|
console.log('批量打印',val) |
||||
|
// let rows:any = [] |
||||
|
// val.forEach(item=>{ |
||||
|
// rows = [...rows,...item.selectionRows.map(item1=>item1.number)] |
||||
|
// }) |
||||
|
if(val.length == 0){ |
||||
|
message.warning("请先选择要打印的数据!") |
||||
|
return |
||||
|
} |
||||
|
// window.open(src.value + '&asn_number=' + val.map(item1=>item1.number).join(',')) |
||||
|
|
||||
|
await PackageApi.batchPrintingLable(val.map(item1=>item1.number).join(',')).then(res => { |
||||
|
console.log(res) |
||||
|
window.open(src.value + '&asn_number=' + res) |
||||
|
}).catch(err => { |
||||
|
console.log(err) |
||||
|
message.error('创建标签失败') |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
const updateTableData = (tableList)=>{ |
||||
|
let itemCodes = tableList.filter(item=>tableData.value.find(item1=>item1['poNumber']==item['number']&&item1['supplierCode']==item['supplierCode']&&item1['poLine']==item['lineNumber']&&item1['itemCode']==item['itemCode'])) |
||||
|
if(itemCodes.length>0){ |
||||
|
itemCodes = itemCodes.map(item=>(item.itemCode)) |
||||
|
message.warning(`物料${itemCodes.join(',')}已经存在`) |
||||
|
} |
||||
|
tableList = tableList.filter(item=>!tableData.value.find(item1=>item1['poNumber']==item['number']&&item1['supplierCode']==item['supplierCode']&&item1['poLine']==item['lineNumber']&&item1['itemCode']==item['itemCode'])) |
||||
|
if(tableList.length==0) return |
||||
|
tableList.forEach(row=>{ |
||||
|
//poNumber poLine itemCode batch |
||||
|
const newRow = JSON.parse(JSON.stringify({...tableFormKeys,...row})) |
||||
|
newRow['poLine'] = row['lineNumber'] |
||||
|
newRow['itemCode'] = row['itemCode'] |
||||
|
newRow['uom'] = row['uom'] |
||||
|
newRow['poNumber'] =row['number'] |
||||
|
newRow['supplierCode'] =row['supplierCode'] |
||||
|
//生产日期 到货日期 默认当天 |
||||
|
newRow['produceDate'] = dayjs().valueOf() |
||||
|
newRow['arriveDate'] = dayjs().valueOf() |
||||
|
//批次 |
||||
|
newRow['batch'] = formatDate(newRow['produceDate'],'YYYYMMDD'); |
||||
|
// newRow['defaultToLocationCode'] =row['defaultLocation'] |
||||
|
if(!newRow['defaultToLocationCode']){ |
||||
|
newRow['defaultToLocationCode'] = formRef.value.formRef.formModel['onlyDefaultToLocationCode'] |
||||
|
} |
||||
|
|
||||
|
if(!tableData.value.find((item:object)=>item.poNumber == newRow.poNumber&&item.itemCode == newRow.itemCode&&item.poLine == newRow.poLine&&item.batch == newRow.batch)){ |
||||
|
tableData.value.push(newRow) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
const getSearchTableData = async (number,isEnter=false)=>{ |
||||
|
const {tableObject ,tableMethods} = useTable({ |
||||
|
defaultParams:{number}, |
||||
|
getListApi: PurchaseDetailApi.getPurchaseDetailPageWMS // 分页接口 |
||||
|
}) |
||||
|
tableObject.pageSize = 500 |
||||
|
// 获得表格的各种操作 |
||||
|
const { getList:getList1 } = tableMethods |
||||
|
await getList1() |
||||
|
const tableColumns = PurchaseDetail.allSchemas.tableFormColumns |
||||
|
tableColumns.forEach((item) => { |
||||
|
item.width = item.table?.width || 150 |
||||
|
}) |
||||
|
tableData.value = [] |
||||
|
updateTableData(tableObject.tableList) |
||||
|
const itemCodes = [] |
||||
|
tableObject.tableList.forEach(row=>{ |
||||
|
itemCodes.push(row['itemCode']) |
||||
|
if(isEnter){ |
||||
|
//回车--供应商代码 |
||||
|
const setV = {} |
||||
|
setV['poNumber'] = number |
||||
|
setV['supplierCode'] = row.supplierCode |
||||
|
formRef.value.formRef.setValues(setV) |
||||
|
} |
||||
|
}) |
||||
|
//有效期 |
||||
|
ItembasicApi.getItembasicPage({ |
||||
|
code:itemCodes.join(',') |
||||
|
}).then((res)=>{ |
||||
|
res.list.forEach((item,index)=>{ |
||||
|
const findItem = tableData.value.find(item1=>item1['itemCode']==item['code']) |
||||
|
findItem['expireTime'] = item['expireTime'] |
||||
|
}) |
||||
|
}) |
||||
|
} |
||||
|
/** 添加/修改操作 */ |
||||
|
const formRef = ref() |
||||
|
const openForm =async (type: string, row?: number) => { |
||||
|
tableData.value = [] // 重置明细数据 |
||||
|
formRef.value.open(type, row) |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// 子包装数据 |
||||
|
const detailParenPackingRef = ref() |
||||
|
const { tableObject: packingDetatableData, tableMethods: packDetatableMethods } = useTable({ |
||||
|
getListApi: PurchasereceiptRequestDetailApi.queryPurchaseceiptChildPackingNumber |
||||
|
}) |
||||
|
const { getList:queryDetailList } = packDetatableMethods |
||||
|
|
||||
|
|
||||
|
// 获取部门 用于详情 部门回显 |
||||
|
const { wsCache } = useCache() |
||||
|
/** 详情操作 */ |
||||
|
const detailRef = ref() |
||||
|
const openDetail = (row: any, titleName: any, titleValue: any) => { |
||||
|
const departmentCode = wsCache.get(CACHE_KEY.DEPT).find((account) => account.id == row.departmentCode)?.name |
||||
|
if (departmentCode) row.departmentCode = JSON.parse(JSON.stringify(departmentCode)) |
||||
|
detailRef.value.openDetail(row, titleName, titleValue,'requestPurchasereceiptMain') |
||||
|
} |
||||
|
|
||||
|
// 详情 table 操作扩展 按钮 |
||||
|
const buttondataTable = ref([{ |
||||
|
label: '查看子包装', |
||||
|
name: 'viewParentPickingNumber', |
||||
|
hide: false, |
||||
|
type: 'primary', |
||||
|
icon: '', |
||||
|
color: '', |
||||
|
hasPermi: '', |
||||
|
link: true, // 文本展现按钮 |
||||
|
}]) |
||||
|
|
||||
|
// 查看其他包装规格 |
||||
|
const tableFormButton = async (val , row) => { |
||||
|
if (val == 'viewParentPickingNumber') { //查看其他包装规格 |
||||
|
packingDetatableData.params = { |
||||
|
masterId:row.masterId, |
||||
|
parentPackingNumber:row.packingNumber |
||||
|
} |
||||
|
await queryDetailList() |
||||
|
detailParenPackingRef.value.open('create', row, null,'viewDetail')//查看明细数据 |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 关闭按钮操作 */ |
||||
|
const handleClose = async (id: number) => { |
||||
|
try{ |
||||
|
await message.confirm(t('common.confirmColse')) |
||||
|
tableObject.loading = true |
||||
|
await PurchasereceiptRequestMainApi.closePurchasereceiptRequestMain(id) |
||||
|
message.success(t('common.closeSuccess')) |
||||
|
buttonBaseClick('refresh',null) |
||||
|
}catch{}finally{ |
||||
|
tableObject.loading = false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 重新添加按钮操作 */ |
||||
|
const handleReAdd = async (id: number) => { |
||||
|
try{ |
||||
|
await message.confirm(t('common.confirmReAdd')) |
||||
|
tableObject.loading = true |
||||
|
await PurchasereceiptRequestMainApi.reAddPurchasereceiptRequestMain(id) |
||||
|
message.success(t('common.reAddSuccess')) |
||||
|
buttonBaseClick('refresh',null) |
||||
|
}catch{}finally{ |
||||
|
tableObject.loading = false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 审批通过按钮操作 */ |
||||
|
const handleAgree = async (id: number) => { |
||||
|
try{ |
||||
|
await message.confirm(t('common.confirmAgree')) |
||||
|
tableObject.loading = true |
||||
|
await PurchasereceiptRequestMainApi.agreePurchasereceiptRequestMain(id) |
||||
|
message.success(t('common.agreeSuccess')) |
||||
|
tableObject.loading = false |
||||
|
buttonBaseClick('refresh',null) |
||||
|
}catch{}finally{ |
||||
|
tableObject.loading = false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 审批驳回按钮操作 */ |
||||
|
const handleRefused = async (id: number) => { |
||||
|
try{ |
||||
|
await message.confirm(t('common.confirmRefused')) |
||||
|
tableObject.loading = true |
||||
|
await PurchasereceiptRequestMainApi.refusedPurchasereceiptRequestMain(id) |
||||
|
message.success(t('common.refusedSuccess')) |
||||
|
tableObject.loading = false |
||||
|
buttonBaseClick('refresh',null) |
||||
|
}catch{}finally{ |
||||
|
tableObject.loading = false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 处理按钮操作 */ |
||||
|
const handleHandle = async (id: number) => { |
||||
|
try{ |
||||
|
await message.confirm(t('common.confirmHandle')) |
||||
|
tableObject.loading = true |
||||
|
await PurchasereceiptRequestMainApi.handlePurchasereceiptRequestMain(id) |
||||
|
message.success(t('common.handleSuccess')) |
||||
|
tableObject.loading = false |
||||
|
buttonBaseClick('refresh',null) |
||||
|
}catch{}finally{ |
||||
|
tableObject.loading = false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 提交按钮操作 */ |
||||
|
const handleSubmit = async (id: number) => { |
||||
|
try{ |
||||
|
await message.confirm(t('common.confirmSubmit')) |
||||
|
tableObject.loading = true |
||||
|
await PurchasereceiptRequestMainApi.submitPurchasereceiptRequestMain(id) |
||||
|
message.success(t('common.submitSuccess')) |
||||
|
tableObject.loading = false |
||||
|
buttonBaseClick('refresh',null) |
||||
|
}catch{}finally{ |
||||
|
tableObject.loading = false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 导出按钮操作 */ |
||||
|
const handleExport = async () => { |
||||
|
try { |
||||
|
// 导出的二次确认 |
||||
|
await message.exportConfirm() |
||||
|
// 发起导出 |
||||
|
loadStart() |
||||
|
const excelTitle = ref(route.meta.title) |
||||
|
const data = await PurchasereceiptRequestMainApi.exportToolPurchasereceiptRequestMain(tableObject.params) |
||||
|
download.excel(data, `【${excelTitle.value}】【${formatDate(new Date())}】.xlsx`) |
||||
|
} catch { |
||||
|
} finally { |
||||
|
loadDone() |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* tableForm方法 |
||||
|
*/ |
||||
|
const tableFormKeys = {} |
||||
|
PurchasereceiptRequestDetail.allSchemas.tableFormColumns.forEach(item => { |
||||
|
tableFormKeys[item.field] = item.default ? item.default : '' |
||||
|
}) |
||||
|
const tableData = ref([]) |
||||
|
|
||||
|
// 添加明细 |
||||
|
const handleAddTable = () => { |
||||
|
tableData.value.push(JSON.parse(JSON.stringify(tableFormKeys))) |
||||
|
} |
||||
|
// 删除明细 |
||||
|
const handleDeleteTable = (item, index) => { |
||||
|
let itemIndex = tableData.value.indexOf(item) |
||||
|
if(itemIndex>-1){ |
||||
|
tableData.value.splice(itemIndex, 1) |
||||
|
} |
||||
|
} |
||||
|
const tableSelectionDelete = (selection) => { |
||||
|
tableData.value = tableData.value.filter(item => !selection.includes(item)) |
||||
|
} |
||||
|
const onEnter = async (field,value)=>{ |
||||
|
console.log(field,value) |
||||
|
getSearchTableData(value,true) |
||||
|
} |
||||
|
// 主子数据 提交 |
||||
|
const submitForm = async (formType, submitData) => { |
||||
|
let data = {...submitData} |
||||
|
if(data.masterId){ |
||||
|
data.id = data.masterId |
||||
|
} |
||||
|
tableData.value.forEach((row, index) => { |
||||
|
row['expireDate'] = row['expireTime']?addDay(row['produceDate'],row['expireTime']).valueOf():dayjs('2099-12-31').valueOf() |
||||
|
}) |
||||
|
let alalQty = 0 |
||||
|
tableData.value.forEach(item => { |
||||
|
alalQty += item.qty ? parseFloat(item.qty) : 0 |
||||
|
}) |
||||
|
if (alalQty == 0) { |
||||
|
message.error('收货总数量不可以为0') |
||||
|
return |
||||
|
} |
||||
|
data.subList = tableData.value.filter(item => parseFloat(item.qty) > 0) // 拼接子表数据参数 |
||||
|
formRef.value.formLoading = true |
||||
|
try { |
||||
|
if (formType === 'create') { |
||||
|
data.orderTypeM='1'; |
||||
|
await PurchasereceiptRequestMainApi.createPurchasereceiptRequestMain(data) |
||||
|
message.success(t('common.createSuccess')) |
||||
|
} else { |
||||
|
data.orderTypeM='1'; |
||||
|
await PurchasereceiptRequestMainApi.updatePurchasereceiptRequestMain(data) |
||||
|
message.success(t('common.updateSuccess')) |
||||
|
} |
||||
|
formRef.value.dialogVisible = false |
||||
|
// 刷新当前列表 |
||||
|
if (formType === 'create') { |
||||
|
getList() |
||||
|
}else{ |
||||
|
buttonBaseClick('refresh',null) |
||||
|
} |
||||
|
} finally { |
||||
|
formRef.value.formLoading = false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 导入 */ |
||||
|
const importFormRef = ref() |
||||
|
const handleImport = () => { |
||||
|
importFormRef.value.open() |
||||
|
} |
||||
|
|
||||
|
// 导入附件弹窗所需的参数 |
||||
|
const importTemplateData = reactive({ |
||||
|
templateUrl: '', |
||||
|
templateTitle: `【${route.meta.title}】导入模版.xlsx` |
||||
|
}) |
||||
|
|
||||
|
// 导入成功之后 |
||||
|
const importSuccess = () => { |
||||
|
getList() |
||||
|
} |
||||
|
|
||||
|
// 筛选提交 |
||||
|
const searchFormClick = (searchData) => { |
||||
|
tableObject.params = { |
||||
|
isSearch: true, |
||||
|
filters: searchData.filters |
||||
|
} |
||||
|
getList() // 刷新当前列表 |
||||
|
} |
||||
|
|
||||
|
|
||||
|
const formFormDateChange = (field, val,row, index) => { |
||||
|
if(field == 'produceDate'){ |
||||
|
let produceDateStr = formatDate(val,'YYYYMMDD'); |
||||
|
row.batch = produceDateStr |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** 初始化 **/ |
||||
|
onMounted(async () => { |
||||
|
await getSwitchByCode('EnableQms').then((res) => { |
||||
|
EnableQms.value = res == 'TRUE' ? true : false |
||||
|
}) |
||||
|
getList() |
||||
|
importTemplateData.templateUrl = await PurchasereceiptRequestMainApi.importTemplate() |
||||
|
}) |
||||
|
</script> |
File diff suppressed because it is too large
Loading…
Reference in new issue