更新履约验收界面期数判断
This commit is contained in:
@@ -137,6 +137,8 @@ const commonForm = ref<Record<string, any>>({})
|
|||||||
/** 每次打开自增,用于强制 AcceptCommonForm 重新挂载,确保公共信息彻底清空 */
|
/** 每次打开自增,用于强制 AcceptCommonForm 重新挂载,确保公共信息彻底清空 */
|
||||||
const openToken = ref(0)
|
const openToken = ref(0)
|
||||||
const batchForms = reactive<Record<number, any>>({})
|
const batchForms = reactive<Record<number, any>>({})
|
||||||
|
/** 记录哪些期已保存到服务器,用于控制“下一期可填”:只有上一期已保存才允许填下一期 */
|
||||||
|
const batchSavedFlags = ref<Record<number, boolean>>({})
|
||||||
|
|
||||||
const setBatchFormRef = (batch: number, el: any) => {
|
const setBatchFormRef = (batch: number, el: any) => {
|
||||||
if (el) batchFormRefMap.value[batch] = el
|
if (el) batchFormRefMap.value[batch] = el
|
||||||
@@ -158,22 +160,22 @@ const getPreviousBatchesTeams = (batchNum: number) => {
|
|||||||
return list
|
return list
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 是否允许编辑该期:第 1 期始终可编辑;第 N 期仅当第 1~N-1 期均已保存后才可编辑 */
|
||||||
const canEditBatch = (batch: number) => {
|
const canEditBatch = (batch: number) => {
|
||||||
if (batch === 1) return true
|
if (batch === 1) return true
|
||||||
for (let i = 1; i < batch; i++) {
|
for (let i = 1; i < batch; i++) {
|
||||||
if (!isBatchCompletedByIdx(i)) return false
|
if (!batchSavedFlags.value[i]) return false
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 该期是否已保存(用于 tab 上显示“已填”标签) */
|
||||||
const isBatchCompleted = (b: any) => {
|
const isBatchCompleted = (b: any) => {
|
||||||
const form = batchForms[b.batch]
|
return !!batchSavedFlags.value[b.batch]
|
||||||
return !!(form?.acceptType && form?.acceptDate)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const isBatchCompletedByIdx = (batch: number) => {
|
const isBatchCompletedByIdx = (batch: number) => {
|
||||||
const b = batches.value.find((x: any) => x.batch === batch)
|
return !!batchSavedFlags.value[batch]
|
||||||
return b ? isBatchCompleted(b) : false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const loadData = async () => {
|
const loadData = async () => {
|
||||||
@@ -237,11 +239,17 @@ const loadData = async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const loadBatchDetails = async () => {
|
const loadBatchDetails = async () => {
|
||||||
|
for (const b of batches.value) {
|
||||||
|
batchSavedFlags.value[b.batch] = false
|
||||||
|
}
|
||||||
for (const b of batches.value) {
|
for (const b of batches.value) {
|
||||||
try {
|
try {
|
||||||
const res = await getDetail(String(purchaseId.value), b.batch)
|
const res = await getDetail(String(purchaseId.value), b.batch)
|
||||||
const d = res?.data
|
const d = res?.data
|
||||||
if (d?.accept) {
|
if (d?.accept) {
|
||||||
|
// 仅当该期在服务端有验收日期(且验收方式)时才视为已保存,避免空结构被当成“已填”
|
||||||
|
const hasSaved = !!(d.accept.acceptDate && d.accept.acceptType)
|
||||||
|
batchSavedFlags.value[b.batch] = hasSaved
|
||||||
const itemMap = (acceptanceItems.value || []).reduce((acc: any, it: any) => {
|
const itemMap = (acceptanceItems.value || []).reduce((acc: any, it: any) => {
|
||||||
acc[it.id] = it
|
acc[it.id] = it
|
||||||
return acc
|
return acc
|
||||||
@@ -360,6 +368,7 @@ const saveCurrentBatch = async () => {
|
|||||||
acceptTeam: team,
|
acceptTeam: team,
|
||||||
})
|
})
|
||||||
useMessage().success('保存成功')
|
useMessage().success('保存成功')
|
||||||
|
batchSavedFlags.value[curBatch] = true
|
||||||
await loadData()
|
await loadData()
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
useMessage().error(e?.msg || '保存失败')
|
useMessage().error(e?.msg || '保存失败')
|
||||||
@@ -398,6 +407,7 @@ const resetAllToDefault = () => {
|
|||||||
acceptanceItems.value = []
|
acceptanceItems.value = []
|
||||||
canFillForm.value = true
|
canFillForm.value = true
|
||||||
Object.keys(batchForms).forEach((k) => delete batchForms[Number(k)])
|
Object.keys(batchForms).forEach((k) => delete batchForms[Number(k)])
|
||||||
|
batchSavedFlags.value = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
const open = async (row: any) => {
|
const open = async (row: any) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user