Remove obsolete export APIs and persist recruitment work history

This commit is contained in:
wkc
2026-04-22 13:38:43 +08:00
parent 94507e3747
commit 0c5fa6b2c8
47 changed files with 823 additions and 408 deletions

View File

@@ -43,15 +43,6 @@ export function delRelation(ids) {
})
}
// 导出信贷客户实体关联
export function exportRelation(query) {
return request({
url: '/ccdi/custEnterpriseRelation/export',
method: 'post',
params: query
})
}
// 下载导入模板
export function importTemplate() {
return request({

View File

@@ -43,15 +43,6 @@ export function delRelation(ids) {
})
}
// 导出信贷客户家庭关系
export function exportRelation(query) {
return request({
url: '/ccdi/custFmyRelation/export',
method: 'post',
params: query
})
}
// 下载导入模板
export function importTemplate() {
return request({

View File

@@ -43,15 +43,6 @@ export function delTransaction(purchaseIds) {
})
}
// 导出采购交易
export function exportTransaction(query) {
return request({
url: '/ccdi/purchaseTransaction/export',
method: 'post',
params: query
})
}
// 下载导入模板
export function importTemplate() {
return request({

View File

@@ -43,15 +43,6 @@ export function delRelation(ids) {
})
}
// 导出员工实体关系
export function exportRelation(query) {
return request({
url: '/ccdi/staffEnterpriseRelation/export',
method: 'post',
params: query
})
}
// 下载导入模板
export function importTemplate() {
return request({

View File

@@ -43,15 +43,6 @@ export function delRelation(ids) {
})
}
// 导出员工亲属关系
export function exportRelation(query) {
return request({
url: '/ccdi/staffFmyRelation/export',
method: 'post',
params: query
})
}
// 下载导入模板
export function importTemplate() {
return request({

View File

@@ -78,12 +78,3 @@ export function getImportFailures(taskId, pageNum, pageSize) {
params: { pageNum, pageSize }
})
}
// 导出招聘信息
export function exportStaffRecruitment(query) {
return request({
url: '/ccdi/staffRecruitment/export',
method: 'post',
params: query
})
}

View File

@@ -43,15 +43,6 @@ export function delTransfer(ids) {
})
}
// 导出员工调动记录
export function exportTransfer(query) {
return request({
url: '/ccdi/staffTransfer/export',
method: 'post',
params: query
})
}
// 下载导入模板
export function importTemplate() {
return request({

View File

@@ -89,16 +89,6 @@
v-hasPermi="['ccdi:accountInfo:import']"
>导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['ccdi:accountInfo:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" />
</el-row>
@@ -646,11 +636,6 @@ export default {
handleImport() {
this.upload.open = true
},
handleExport() {
this.download('ccdi/accountInfo/export', {
...this.queryParams
}, `账户库管理_${new Date().getTime()}.xlsx`)
},
importTemplate() {
this.download('ccdi/accountInfo/importTemplate', {}, `账户库导入模板_${new Date().getTime()}.xlsx`)
},

View File

@@ -1675,11 +1675,10 @@ export default {
.employee-edit-dialog .assets-table-wrapper {
width: 100%;
overflow-x: auto;
}
.employee-edit-dialog .assets-table {
min-width: 1460px;
width: 100%;
}
.employee-edit-dialog .assets-table .el-input,

View File

@@ -61,16 +61,6 @@
v-hasPermi="['ccdi:custEnterpriseRelation:import']"
>导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['ccdi:custEnterpriseRelation:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5" v-if="showFailureButton">
<el-tooltip
:content="getLastImportTooltip()"
@@ -554,12 +544,6 @@ export default {
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('ccdi/custEnterpriseRelation/export', {
...this.queryParams
}, `信贷客户实体关联_${new Date().getTime()}.xlsx`);
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "信贷客户实体关联数据导入";

View File

@@ -62,16 +62,6 @@
v-hasPermi="['ccdi:custFmyRelation:import']"
>导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['ccdi:custFmyRelation:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5" v-if="showFailureButton">
<el-tooltip
:content="getLastImportTooltip()"
@@ -869,12 +859,6 @@ export default {
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('ccdi/custFmyRelation/export', {
...this.queryParams
}, `信贷客户家庭关系_${new Date().getTime()}.xlsx`);
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "信贷客户家庭关系数据导入";

View File

@@ -66,16 +66,6 @@
v-hasPermi="['ccdi:purchaseTransaction:import']"
>导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['ccdi:purchaseTransaction:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5" v-if="showFailureButton">
<el-tooltip
:content="getLastImportTooltip()"
@@ -929,12 +919,6 @@ export default {
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('ccdi/purchaseTransaction/export', {
...this.queryParams
}, `采购交易_${new Date().getTime()}.xlsx`);
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "采购交易数据导入";

View File

@@ -61,16 +61,6 @@
v-hasPermi="['ccdi:staffEnterpriseRelation:import']"
>导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['ccdi:staffEnterpriseRelation:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5" v-if="showFailureButton">
<el-tooltip
:content="getLastImportTooltip()"
@@ -630,12 +620,6 @@ export default {
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('ccdi/staffEnterpriseRelation/export', {
...this.queryParams
}, `员工实体关系_${new Date().getTime()}.xlsx`);
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "员工实体关系数据导入";

View File

@@ -72,16 +72,6 @@
v-hasPermi="['ccdi:staffFmyRelation:import']"
>导入亲属资产信息</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['ccdi:staffFmyRelation:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5" v-if="showFailureButton">
<el-tooltip
:content="getLastImportTooltip()"
@@ -1215,12 +1205,6 @@ export default {
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('ccdi/staffFmyRelation/export', {
...this.queryParams
}, `员工亲属关系_${new Date().getTime()}.xlsx`);
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "员工亲属关系数据导入";
@@ -1690,11 +1674,10 @@ export default {
.assets-table-wrapper {
width: 100%;
overflow-x: auto;
}
.assets-table {
min-width: 1440px;
width: 100%;
}
.assets-table .el-input,

View File

@@ -118,25 +118,6 @@
v-hasPermi="['ccdi:staffRecruitment:import']"
>导入工作经历</el-button>
</el-col>
<el-col :span="1.5">
<el-button
v-if="isPreviewMode()"
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button>
<el-button
v-else
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['ccdi:staffRecruitment:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5" v-if="showFailureButton">
<el-tooltip
:content="getLastImportTooltip()"
@@ -339,6 +320,101 @@
</el-col>
</el-row>
<template v-if="!isAdd && isSocialRecruitment(form)">
<el-divider content-position="left">候选人历史工作经历</el-divider>
<div class="work-experience-toolbar">
<span class="work-experience-tip">支持在编辑页手动补录候选人的历史工作经历保存后会覆盖当前记录下已有的工作经历</span>
<el-button type="primary" plain size="mini" icon="el-icon-plus" @click="handleAddWorkExperience">新增经历</el-button>
</div>
<el-table
:data="form.workExperienceList"
border
class="work-experience-edit-table"
empty-text="暂无历史工作经历请点击新增经历手动补录"
>
<el-table-column label="序号" align="center" width="80">
<template slot-scope="scope">
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column label="工作单位" min-width="180">
<template slot-scope="scope">
<el-input v-model.trim="scope.row.companyName" placeholder="请输入工作单位" maxlength="200" />
</template>
</el-table-column>
<el-table-column label="所属部门" min-width="140">
<template slot-scope="scope">
<el-input v-model.trim="scope.row.departmentName" placeholder="请输入所属部门" maxlength="100" />
</template>
</el-table-column>
<el-table-column label="岗位名称" min-width="140">
<template slot-scope="scope">
<el-input v-model.trim="scope.row.positionName" placeholder="请输入岗位名称" maxlength="100" />
</template>
</el-table-column>
<el-table-column label="入职时间" width="180">
<template slot-scope="scope">
<el-date-picker
v-model="scope.row.jobStartMonth"
type="month"
value-format="yyyy-MM"
format="yyyy-MM"
placeholder="请选择入职时间"
clearable
style="width: 100%;"
/>
</template>
</el-table-column>
<el-table-column label="离职时间" width="180">
<template slot-scope="scope">
<el-date-picker
v-model="scope.row.jobEndMonth"
type="month"
value-format="yyyy-MM"
format="yyyy-MM"
placeholder="请选择离职时间"
clearable
style="width: 100%;"
/>
</template>
</el-table-column>
<el-table-column label="离职原因" min-width="180">
<template slot-scope="scope">
<el-input v-model.trim="scope.row.departureReason" placeholder="请输入离职原因" maxlength="500" />
</template>
</el-table-column>
<el-table-column label="主要工作内容" min-width="220">
<template slot-scope="scope">
<el-input
v-model.trim="scope.row.workContent"
type="textarea"
:rows="2"
placeholder="请输入主要工作内容"
maxlength="1000"
show-word-limit
/>
</template>
</el-table-column>
<el-table-column label="备注" min-width="180">
<template slot-scope="scope">
<el-input
v-model.trim="scope.row.remark"
type="textarea"
:rows="2"
placeholder="请输入备注"
maxlength="500"
show-word-limit
/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="90" fixed="right">
<template slot-scope="scope">
<el-button type="text" icon="el-icon-delete" @click="handleRemoveWorkExperience(scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
<el-divider content-position="left">面试官信息</el-divider>
<el-row :gutter="16">
<el-col :span="12">
@@ -558,6 +634,8 @@ import ImportResultDialog from "@/components/ImportResultDialog.vue";
const idCardPattern = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/;
// 毕业年月校验正则 (YYYYMM)
const gradPattern = /^((19|20)\d{2})(0[1-9]|1[0-2])$/;
// 工作经历年月校验正则 (YYYY-MM)
const workMonthPattern = /^((19|20)\d{2})-(0[1-9]|1[0-2])$/;
const previewRecruitmentList = [
{
recruitId: "RC2025001205",
@@ -990,8 +1068,88 @@ export default {
const first = Number(a.sortOrder || 0);
const second = Number(b.sortOrder || 0);
return first - second;
}).map((item, index) => {
const normalizedItem = this.createEmptyWorkExperience(index + 1);
return {
...normalizedItem,
...item,
sortOrder: index + 1
};
});
},
/** 新建空工作经历 */
createEmptyWorkExperience(sortOrder) {
return {
sortOrder,
companyName: "",
departmentName: "",
positionName: "",
jobStartMonth: "",
jobEndMonth: "",
departureReason: "",
workContent: "",
remark: ""
};
},
/** 新增工作经历 */
handleAddWorkExperience() {
const currentList = Array.isArray(this.form.workExperienceList) ? this.form.workExperienceList.slice() : [];
currentList.push(this.createEmptyWorkExperience(currentList.length + 1));
this.form.workExperienceList = currentList;
this.syncWorkExperienceSortOrder();
},
/** 删除工作经历 */
handleRemoveWorkExperience(index) {
if (!Array.isArray(this.form.workExperienceList)) {
return;
}
this.form.workExperienceList.splice(index, 1);
this.syncWorkExperienceSortOrder();
},
/** 同步工作经历排序号 */
syncWorkExperienceSortOrder() {
if (!Array.isArray(this.form.workExperienceList)) {
this.form.workExperienceList = [];
return;
}
this.form.workExperienceList = this.form.workExperienceList.map((item, index) => ({
...this.createEmptyWorkExperience(index + 1),
...item,
sortOrder: index + 1
}));
},
/** 校验工作经历 */
validateWorkExperienceList() {
if (this.isAdd || !this.isSocialRecruitment(this.form)) {
return true;
}
const workExperienceList = this.normalizeWorkExperienceList(this.form.workExperienceList);
for (let index = 0; index < workExperienceList.length; index++) {
const item = workExperienceList[index];
const rowLabel = `${index + 1}条历史工作经历`;
if (!item.companyName) {
this.$modal.msgError(`${rowLabel}的工作单位不能为空`);
return false;
}
if (!item.jobStartMonth) {
this.$modal.msgError(`${rowLabel}的入职年月不能为空`);
return false;
}
if (!workMonthPattern.test(item.jobStartMonth)) {
this.$modal.msgError(`${rowLabel}的入职年月格式不正确应为YYYY-MM`);
return false;
}
if (item.jobEndMonth && !workMonthPattern.test(item.jobEndMonth)) {
this.$modal.msgError(`${rowLabel}的离职年月格式不正确应为YYYY-MM`);
return false;
}
if (item.jobEndMonth && item.jobEndMonth < item.jobStartMonth) {
this.$modal.msgError(`${rowLabel}的离职年月不能早于入职年月`);
return false;
}
}
return true;
},
/** 是否为预览模式 */
isPreviewMode() {
return this.$route && this.$route.query && this.$route.query.preview === "1";
@@ -1030,19 +1188,30 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (!this.validateWorkExperienceList()) {
return;
}
const formData = {
...this.form,
workExperienceList: this.isSocialRecruitment(this.form)
? this.normalizeWorkExperienceList(this.form.workExperienceList)
: []
};
if (this.isPreviewMode()) {
this.$modal.msgSuccess(this.isAdd ? "预览模式:新增成功" : "预览模式:修改成功");
this.open = false;
return;
}
if (this.isAdd) {
addStaffRecruitment(this.form).then(response => {
const addData = { ...formData };
delete addData.workExperienceList;
addStaffRecruitment(addData).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
} else {
updateStaffRecruitment(this.form).then(response => {
updateStaffRecruitment(formData).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
@@ -1065,12 +1234,6 @@ export default {
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('ccdi/staffRecruitment/export', {
...this.queryParams
}, `招聘信息_${new Date().getTime()}.xlsx`);
},
/** 导入按钮操作 */
handleImport() {
this.openImportDialog("recruitment");
@@ -1406,4 +1569,22 @@ export default {
.work-experience-empty {
padding: 24px 0 8px;
}
.work-experience-toolbar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
margin-bottom: 12px;
}
.work-experience-tip {
color: #909399;
font-size: 12px;
line-height: 1.5;
}
.work-experience-edit-table ::v-deep .el-textarea__inner {
min-height: 54px !important;
}
</style>

View File

@@ -97,16 +97,6 @@
v-hasPermi="['ccdi:staffTransfer:import']"
>导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['ccdi:staffTransfer:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5" v-if="showFailureButton">
<el-tooltip
:content="getLastImportTooltip()"
@@ -737,18 +727,6 @@ export default {
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
const params = { ...this.queryParams };
// 处理日期范围
if (params.transferDateRange && params.transferDateRange.length === 2) {
params.beginTransferDate = params.transferDateRange[0];
params.endTransferDate = params.transferDateRange[1];
}
delete params.transferDateRange;
this.download('ccdi/staffTransfer/export', params, `员工调动记录_${new Date().getTime()}.xlsx`);
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "员工调动记录数据导入";