修复相关bug
This commit is contained in:
Vendored
+47
@@ -19,23 +19,70 @@ declare module 'vue' {
|
||||
DatePicker: typeof import('./src/components/Form/DatePicker/index.vue')['default']
|
||||
ECharts: typeof import('./src/components/ECharts/index.vue')['default']
|
||||
ElAlert: typeof import('element-plus/es')['ElAlert']
|
||||
ElAside: typeof import('element-plus/es')['ElAside']
|
||||
ElAvatar: typeof import('element-plus/es')['ElAvatar']
|
||||
ElBadge: typeof import('element-plus/es')['ElBadge']
|
||||
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
|
||||
ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
|
||||
ElButton: typeof import('element-plus/es')['ElButton']
|
||||
ElCard: typeof import('element-plus/es')['ElCard']
|
||||
ElCascader: typeof import('element-plus/es')['ElCascader']
|
||||
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
||||
ElCol: typeof import('element-plus/es')['ElCol']
|
||||
ElCollapse: typeof import('element-plus/es')['ElCollapse']
|
||||
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
|
||||
ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
|
||||
ElContainer: typeof import('element-plus/es')['ElContainer']
|
||||
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
|
||||
ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
|
||||
ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
|
||||
ElDialog: typeof import('element-plus/es')['ElDialog']
|
||||
ElDivider: typeof import('element-plus/es')['ElDivider']
|
||||
ElDrawer: typeof import('element-plus/es')['ElDrawer']
|
||||
ElDropdown: typeof import('element-plus/es')['ElDropdown']
|
||||
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
|
||||
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
|
||||
ElEmpty: typeof import('element-plus/es')['ElEmpty']
|
||||
ElFooter: typeof import('element-plus/es')['ElFooter']
|
||||
ElForm: typeof import('element-plus/es')['ElForm']
|
||||
ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
||||
ElHeader: typeof import('element-plus/es')['ElHeader']
|
||||
ElIcon: typeof import('element-plus/es')['ElIcon']
|
||||
ElImage: typeof import('element-plus/es')['ElImage']
|
||||
ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
|
||||
ElInput: typeof import('element-plus/es')['ElInput']
|
||||
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
|
||||
ElLink: typeof import('element-plus/es')['ElLink']
|
||||
ElMain: typeof import('element-plus/es')['ElMain']
|
||||
ElMenu: typeof import('element-plus/es')['ElMenu']
|
||||
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
|
||||
ElOption: typeof import('element-plus/es')['ElOption']
|
||||
ElPagination: typeof import('element-plus/es')['ElPagination']
|
||||
ElPopover: typeof import('element-plus/es')['ElPopover']
|
||||
ElRadio: typeof import('element-plus/es')['ElRadio']
|
||||
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
|
||||
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
||||
ElResult: typeof import('element-plus/es')['ElResult']
|
||||
ElRow: typeof import('element-plus/es')['ElRow']
|
||||
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
|
||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||
ElSlider: typeof import('element-plus/es')['ElSlider']
|
||||
ElSpace: typeof import('element-plus/es')['ElSpace']
|
||||
ElStep: typeof import('element-plus/es')['ElStep']
|
||||
ElSteps: typeof import('element-plus/es')['ElSteps']
|
||||
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
|
||||
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
||||
ElTable: typeof import('element-plus/es')['ElTable']
|
||||
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
||||
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
||||
ElTabs: typeof import('element-plus/es')['ElTabs']
|
||||
ElTag: typeof import('element-plus/es')['ElTag']
|
||||
ElTimeline: typeof import('element-plus/es')['ElTimeline']
|
||||
ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
|
||||
ElTooltip: typeof import('element-plus/es')['ElTooltip']
|
||||
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
|
||||
ElUpload: typeof import('element-plus/es')['ElUpload']
|
||||
ElWatermark: typeof import('element-plus/es')['ElWatermark']
|
||||
ESign: typeof import('./src/components/ESign/index.vue')['default']
|
||||
FormContainer: typeof import('./src/components/Form/FormContainer/index.vue')['default']
|
||||
Grid: typeof import('./src/components/Grid/index.vue')['default']
|
||||
|
||||
@@ -346,6 +346,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-alert
|
||||
v-if="contractConfigurationError"
|
||||
:title="contractConfigurationError"
|
||||
type="error"
|
||||
show-icon
|
||||
:closable="false"
|
||||
class="mb-3"
|
||||
/>
|
||||
<!-- 3. 合同逐份预览与确认 -->
|
||||
<div v-if="contractPreviews.length" class="form-card-section">
|
||||
<div class="section-title contract-preview-section-title">
|
||||
@@ -1653,6 +1661,7 @@ interface ContractPreviewState {
|
||||
}
|
||||
|
||||
const contractPreviews = ref<ContractPreviewState[]>([]);
|
||||
const contractConfigurationError = ref("");
|
||||
const confirmedContractCount = computed(
|
||||
() => contractPreviews.value.filter(item => item.confirmed).length
|
||||
);
|
||||
@@ -2347,6 +2356,42 @@ async function onOnboardingTemplateChange(templateId: number) {
|
||||
const sortResult = (left.sortCode ?? 100) - (right.sortCode ?? 100);
|
||||
return sortResult || left.contractTemplateVersionId - right.contractTemplateVersionId;
|
||||
});
|
||||
const matchesCurrentScope = (item: OnboardingContractTemplate, contractTemplateId: number) =>
|
||||
item.id === contractTemplateId
|
||||
&& item.status === "enable"
|
||||
&& item.companyId === form.companyId
|
||||
&& item.departmentId === form.departmentId;
|
||||
const unresolvedTemplateIds = contracts
|
||||
.map(contract => contract.contractTemplateId)
|
||||
.filter(contractTemplateId =>
|
||||
!contractTemplates.value.some(item => matchesCurrentScope(item, contractTemplateId))
|
||||
)
|
||||
.filter((contractTemplateId, index, values) => values.indexOf(contractTemplateId) === index);
|
||||
if (unresolvedTemplateIds.length) {
|
||||
const detailResults = await Promise.all(
|
||||
unresolvedTemplateIds.map(id =>
|
||||
onboardingTaskApi.templateDetail({ id }).catch(() => ({ data: undefined }))
|
||||
)
|
||||
);
|
||||
detailResults.forEach(result => {
|
||||
const item = result.data;
|
||||
if (
|
||||
item
|
||||
&& matchesCurrentScope(item, item.id)
|
||||
&& !contractTemplates.value.some(existing => existing.id === item.id)
|
||||
) {
|
||||
contractTemplates.value.push(item);
|
||||
}
|
||||
});
|
||||
}
|
||||
const unavailableContract = contracts.find(contract =>
|
||||
!contractTemplates.value.some(item => matchesCurrentScope(item, contract.contractTemplateId))
|
||||
);
|
||||
if (unavailableContract) {
|
||||
contractConfigurationError.value = "原签署材料已失效,请重新配置入职模板";
|
||||
ElMessage.error(contractConfigurationError.value);
|
||||
return;
|
||||
}
|
||||
const variableResults = await Promise.all(
|
||||
contracts.map(contract => onboardingTaskApi.variablePage({
|
||||
templateVersionId: contract.contractTemplateVersionId,
|
||||
@@ -2374,12 +2419,12 @@ async function onOnboardingTemplateChange(templateId: number) {
|
||||
}));
|
||||
});
|
||||
|
||||
contractPreviews.value = contracts.map((contract, index) => ({
|
||||
contractPreviews.value = contracts.map(contract => ({
|
||||
contractTemplateId: contract.contractTemplateId,
|
||||
contractTemplateVersionId: contract.contractTemplateVersionId,
|
||||
contractName:
|
||||
contractTemplates.value.find(item => item.id === contract.contractTemplateId)
|
||||
?.templateName || `合同${index + 1}`,
|
||||
?.templateName || "原签署材料已失效,请重新配置入职模板",
|
||||
required: contract.required,
|
||||
sortCode: contract.sortCode ?? 100,
|
||||
downloaded: false,
|
||||
@@ -2495,6 +2540,7 @@ function buildTaskCreatePayload() {
|
||||
}
|
||||
|
||||
function resetContractPreviewState(clearContracts = false) {
|
||||
contractConfigurationError.value = "";
|
||||
if (clearContracts) {
|
||||
contractPreviews.value = [];
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user