修改相关bug
This commit is contained in:
@@ -295,6 +295,7 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, onMounted, reactive, ref } from "vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import dayjs from "dayjs";
|
||||
import {
|
||||
OnboardingCompany,
|
||||
OnboardingContractTemplate,
|
||||
@@ -508,10 +509,23 @@ async function onContractTemplateChange(row: any) {
|
||||
await loadContractVersions(row.contractTemplateId);
|
||||
}
|
||||
|
||||
function isVersionCurrentlyAvailable(version: OnboardingContractVersion) {
|
||||
const now = dayjs();
|
||||
const effectiveAt = version.effectiveDate ? dayjs(version.effectiveDate) : undefined;
|
||||
const expiresAt = version.expiryDate ? dayjs(version.expiryDate) : undefined;
|
||||
return version.versionStatus === "enabled"
|
||||
&& (!effectiveAt || (effectiveAt.isValid() && !effectiveAt.isAfter(now)))
|
||||
&& (!expiresAt || (expiresAt.isValid() && expiresAt.isAfter(now)));
|
||||
}
|
||||
|
||||
async function loadContractVersions(templateId: number) {
|
||||
if (versionOptions[templateId]) return;
|
||||
const res = await onboardingTaskApi.versionPage({ templateId, pageNum: 1, pageSize: 100 });
|
||||
versionOptions[templateId] = (res.data?.list || []).filter((it: any) => it.versionStatus === "enabled");
|
||||
const res = await onboardingTaskApi.versionPage({
|
||||
templateId,
|
||||
versionStatus: "enabled",
|
||||
pageNum: 1,
|
||||
pageSize: 100
|
||||
});
|
||||
versionOptions[templateId] = (res.data?.list || []).filter(isVersionCurrentlyAvailable);
|
||||
}
|
||||
|
||||
function addContract() {
|
||||
@@ -619,12 +633,25 @@ async function openEdit(row: OnboardingTemplate) {
|
||||
const positionRes = await onboardingTaskApi.listPositionsByDepartment(form.departmentId);
|
||||
positions.value = positionRes.data || [];
|
||||
}
|
||||
const configuredContractCount = form.contracts.length;
|
||||
await loadAvailableContractTemplates();
|
||||
const removedTemplateCount = configuredContractCount - form.contracts.length;
|
||||
let clearedVersionCount = 0;
|
||||
for (const contract of form.contracts) {
|
||||
if (contract.contractTemplateId) {
|
||||
await loadContractVersions(contract.contractTemplateId);
|
||||
const availableVersions = versionOptions[contract.contractTemplateId] || [];
|
||||
if (!availableVersions.some(item => item.id === contract.contractTemplateVersionId)) {
|
||||
contract.contractTemplateVersionId = undefined as any;
|
||||
clearedVersionCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (removedTemplateCount > 0 || clearedVersionCount > 0) {
|
||||
ElMessage.warning(
|
||||
"该入职模板原来关联了已停用、未生效或已失效的签署材料,已从当前选择中移除或清空,请重新选择后保存"
|
||||
);
|
||||
}
|
||||
visible.value = true;
|
||||
}
|
||||
|
||||
@@ -645,6 +672,14 @@ async function save() {
|
||||
if (!form.contracts.length || form.contracts.some(item => !item.contractTemplateId || !item.contractTemplateVersionId)) {
|
||||
return ElMessage.warning("请完整选择至少一份签署材料模板及版本");
|
||||
}
|
||||
const containsUnavailableVersion = form.contracts.some(contract => {
|
||||
const versions = versionOptions[contract.contractTemplateId] || [];
|
||||
const selected = versions.find(item => item.id === contract.contractTemplateVersionId);
|
||||
return !selected || !isVersionCurrentlyAvailable(selected);
|
||||
});
|
||||
if (containsUnavailableVersion) {
|
||||
return ElMessage.warning("所选签署材料版本已停用、尚未生效或已经失效,请重新选择");
|
||||
}
|
||||
|
||||
saving.value = true;
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user