|
|
@@ -53,17 +53,9 @@
|
|
|
<section class="search-btn">
|
|
|
<el-button type="primary" @click="handleSearch">查询</el-button>
|
|
|
<el-button @click="handleReset">重置</el-button>
|
|
|
- <el-dropdown trigger="click" @command="selectDeptType">
|
|
|
- <el-button type="primary" style="margin:0 10px;">
|
|
|
- 添加
|
|
|
- </el-button>
|
|
|
- <template #dropdown>
|
|
|
- <el-dropdown-menu>
|
|
|
- <el-dropdown-item command="normal">普通部门</el-dropdown-item>
|
|
|
- <el-dropdown-item command="advanced">先进集体部门</el-dropdown-item>
|
|
|
- </el-dropdown-menu>
|
|
|
- </template>
|
|
|
- </el-dropdown>
|
|
|
+ <el-button type="primary" @click="openAddDialog">
|
|
|
+ 添加
|
|
|
+ </el-button>
|
|
|
<el-button plain class="search-table-container--button" @click="handleExport">
|
|
|
导出
|
|
|
</el-button>
|
|
|
@@ -93,7 +85,7 @@
|
|
|
<!-- 添加/编辑先进个人对话框 -->
|
|
|
<el-dialog
|
|
|
v-model="addDialogVisible"
|
|
|
- :title="`${isEditMode ? '编辑' : '新增'}先进个人 (${deptType === 'normal' ? '普通部门' : '先进集体部门'})`"
|
|
|
+ :title="`${isEditMode ? '编辑' : '新增'}先进个人`"
|
|
|
width="800px"
|
|
|
:close-on-click-modal="false"
|
|
|
@close="handleDialogClose"
|
|
|
@@ -114,6 +106,18 @@
|
|
|
:rules="normalFormRules"
|
|
|
label-width="140px"
|
|
|
>
|
|
|
+ <el-form-item label="所属部门:">
|
|
|
+ <el-cascader
|
|
|
+ v-model="currentDeptId"
|
|
|
+ :options="deptTree"
|
|
|
+ :props="cascaderDeptProp"
|
|
|
+ :show-all-levels="false"
|
|
|
+ placeholder="请选择所属部门"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ style="width: 100%"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="员工工号:" prop="employeeCode">
|
|
|
<el-input
|
|
|
v-model="normalForm.employeeCode"
|
|
|
@@ -148,7 +152,8 @@
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
|
|
|
- <!-- 先进集体部门表格表单 -->
|
|
|
+ <!-- 先进集体部门表格表单(暂不使用) -->
|
|
|
+ <!--
|
|
|
<div v-if="deptType === 'advanced'">
|
|
|
<el-table :data="advancedFormList" border style="width: 100%">
|
|
|
<el-table-column label="编号" width="80" align="center">
|
|
|
@@ -195,7 +200,7 @@
|
|
|
/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="操作" width="150" align="center">
|
|
|
+ <el-table-column label="操作" width="150" align-center>
|
|
|
<template #default="{ $index }">
|
|
|
<el-button
|
|
|
type="primary"
|
|
|
@@ -216,6 +221,7 @@
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</div>
|
|
|
+ -->
|
|
|
</div>
|
|
|
|
|
|
<template #footer>
|
|
|
@@ -243,16 +249,17 @@
|
|
|
import {
|
|
|
querySecurityExamineIssueAdvancedUser,
|
|
|
querySecurityExamineDetail,
|
|
|
- saveSecurityExamineDeptAdvUser,
|
|
|
+ saveSecurityExamineAdvUserAdmin,
|
|
|
+ updateSecurityExamineAdvUserAdmin,
|
|
|
deleteSecurityExamineDeptAdvUser,
|
|
|
- querySecurityExamineDeptAdvUserDetail,
|
|
|
- updateSecurityExamineDeptAdvUser,
|
|
|
+ querySecurityExamineAdvUser,
|
|
|
} from '@/api/evaluationSystem';
|
|
|
import type {
|
|
|
QuerySecurityExamineIssueAdvancedUserParams,
|
|
|
EvaluationDeptAdvancedUserItem,
|
|
|
EvaluationSystemItem,
|
|
|
- UpdateSecurityExamineDeptAdvUserRequest,
|
|
|
+ SaveSecurityExamineAdvUserAdminRequest,
|
|
|
+ UpdateSecurityExamineAdvUserAdminRequest,
|
|
|
} from '@/api/evaluationSystem';
|
|
|
import { getAllDepartments } from '@/api/auth/dept';
|
|
|
import type { DeptTree } from '@/types/dept/type';
|
|
|
@@ -364,6 +371,24 @@
|
|
|
},
|
|
|
]);
|
|
|
|
|
|
+ // 打开新增先进个人(普通部门)弹窗
|
|
|
+ const openAddDialog = () => {
|
|
|
+ deptType.value = 'normal';
|
|
|
+ isEditMode.value = false;
|
|
|
+ currentEditRow.value = null;
|
|
|
+ editDetailData.value = null;
|
|
|
+ // 重置部门与表单
|
|
|
+ currentDeptId.value = undefined;
|
|
|
+ if (normalFormRef.value) {
|
|
|
+ normalFormRef.value.resetFields();
|
|
|
+ }
|
|
|
+ normalForm.employeeCode = '';
|
|
|
+ normalForm.employeeName = '';
|
|
|
+ normalForm.employeeContact = '';
|
|
|
+ normalForm.remark = '';
|
|
|
+ addDialogVisible.value = true;
|
|
|
+ };
|
|
|
+
|
|
|
const handleSizeChange = (value: number) => {
|
|
|
pagination.pageSize = value;
|
|
|
tableQuery.pageSize = value;
|
|
|
@@ -512,6 +537,7 @@
|
|
|
},
|
|
|
];
|
|
|
deptType.value = 'normal';
|
|
|
+ currentDeptId.value = undefined;
|
|
|
};
|
|
|
|
|
|
// 验证普通部门表单
|
|
|
@@ -550,101 +576,57 @@
|
|
|
|
|
|
// 保存
|
|
|
const handleSave = async () => {
|
|
|
- if (!psemId.value || !currentDeptId.value) {
|
|
|
- ElMessage.error('缺少必要参数');
|
|
|
- return;
|
|
|
- }
|
|
|
+ try {
|
|
|
+ if (isEditMode.value) {
|
|
|
+ // 编辑模式:直接使用详情接口返回的数据作为更新参数,
|
|
|
+ // 并用弹窗表单中的输入值覆盖相应字段
|
|
|
+ if (!editDetailData.value || !editDetailData.value.id) {
|
|
|
+ ElMessage.error('缺少编辑记录数据,无法保存');
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- let users: Array<{
|
|
|
- deptId: number;
|
|
|
- advUserStaffNo: string;
|
|
|
- advUserName: string;
|
|
|
- advUserLink: string;
|
|
|
- remark: string;
|
|
|
- }> = [];
|
|
|
-
|
|
|
- if (deptType.value === 'normal') {
|
|
|
- // 验证普通部门表单
|
|
|
- const isValid = await validateNormalForm();
|
|
|
- if (!isValid) {
|
|
|
- return;
|
|
|
- }
|
|
|
- users = [
|
|
|
- {
|
|
|
- deptId: currentDeptId.value,
|
|
|
+ const updatePayload: UpdateSecurityExamineAdvUserAdminRequest = {
|
|
|
+ ...editDetailData.value,
|
|
|
advUserStaffNo: normalForm.employeeCode,
|
|
|
advUserName: normalForm.employeeName,
|
|
|
advUserLink: normalForm.employeeContact,
|
|
|
remark: normalForm.remark,
|
|
|
- },
|
|
|
- ];
|
|
|
- } else {
|
|
|
- // 验证先进集体部门表单
|
|
|
- if (!validateAdvancedForm()) {
|
|
|
- return;
|
|
|
- }
|
|
|
- // 过滤掉空行
|
|
|
- users = advancedFormList.value
|
|
|
- .filter(
|
|
|
- (item) =>
|
|
|
- item.employeeCode || item.employeeName || item.employeeContact || item.remark,
|
|
|
- )
|
|
|
- .map((item) => ({
|
|
|
- deptId: currentDeptId.value!,
|
|
|
- advUserStaffNo: item.employeeCode,
|
|
|
- advUserName: item.employeeName,
|
|
|
- advUserLink: item.employeeContact,
|
|
|
- remark: item.remark,
|
|
|
- }));
|
|
|
- }
|
|
|
-
|
|
|
- if (users.length === 0) {
|
|
|
- ElMessage.warning('请至少填写一条记录');
|
|
|
- return;
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
- try {
|
|
|
- if (isEditMode.value && currentEditRow.value?.id && editDetailData.value) {
|
|
|
// 编辑模式:调用更新接口
|
|
|
- // 验证表单
|
|
|
- const isValid = await validateNormalForm();
|
|
|
- if (!isValid) {
|
|
|
+ await updateSecurityExamineAdvUserAdmin(updatePayload);
|
|
|
+ } else {
|
|
|
+ // 新增模式:psemId 使用路由参数的 id,deptId 使用选择的部门
|
|
|
+ if (!evaluationId.value || !currentDeptId.value) {
|
|
|
+ ElMessage.error('缺少必要参数');
|
|
|
return;
|
|
|
}
|
|
|
- if (!psemId.value) {
|
|
|
- ElMessage.error('缺少必要参数');
|
|
|
+
|
|
|
+ // 目前仅保留普通部门表单逻辑
|
|
|
+ // 验证普通部门表单
|
|
|
+ const isValid = await validateNormalForm();
|
|
|
+ if (!isValid) {
|
|
|
return;
|
|
|
}
|
|
|
- // 使用详情接口返回的数据作为基础,但使用表单中修改后的字段
|
|
|
- const updateParams: UpdateSecurityExamineDeptAdvUserRequest = {
|
|
|
- id: currentEditRow.value.id,
|
|
|
- psemId: psemId.value,
|
|
|
- deptName: editDetailData.value.deptName,
|
|
|
- deptId: editDetailData.value.deptId || currentDeptId.value || 0,
|
|
|
- deptUserId: editDetailData.value.deptUserId || deptUserId.value || 0,
|
|
|
- deptUserName: editDetailData.value.deptUserName,
|
|
|
- deptUserLink: editDetailData.value.deptUserLink,
|
|
|
- // 使用表单中修改后的字段
|
|
|
+
|
|
|
+ const createPayload: SaveSecurityExamineAdvUserAdminRequest = {
|
|
|
+ psemId: evaluationId.value,
|
|
|
+ deptId: currentDeptId.value,
|
|
|
advUserStaffNo: normalForm.employeeCode,
|
|
|
advUserName: normalForm.employeeName,
|
|
|
advUserLink: normalForm.employeeContact,
|
|
|
remark: normalForm.remark,
|
|
|
};
|
|
|
- await updateSecurityExamineDeptAdvUser(updateParams);
|
|
|
- ElMessage.success('更新成功');
|
|
|
- } else {
|
|
|
+
|
|
|
// 新增模式:调用保存接口
|
|
|
- await saveSecurityExamineDeptAdvUser({
|
|
|
- psemId: psemId.value,
|
|
|
- users,
|
|
|
- });
|
|
|
- ElMessage.success('保存成功');
|
|
|
+ await saveSecurityExamineAdvUserAdmin(createPayload);
|
|
|
}
|
|
|
+ ElMessage.success('保存成功');
|
|
|
handleDialogClose();
|
|
|
getTableData();
|
|
|
} catch (e) {
|
|
|
console.error('保存失败:', e);
|
|
|
- ElMessage.error(isEditMode.value ? '更新失败' : '保存失败');
|
|
|
+ ElMessage.error('保存失败');
|
|
|
}
|
|
|
};
|
|
|
|
|
|
@@ -655,8 +637,8 @@
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
- // 调用详情接口获取数据
|
|
|
- const detail = await querySecurityExamineDeptAdvUserDetail(row.id);
|
|
|
+ // 调用管理员端详情接口获取数据
|
|
|
+ const detail = await querySecurityExamineAdvUser(row.id);
|
|
|
|
|
|
// 保存当前编辑的行数据和详情数据
|
|
|
currentEditRow.value = row;
|
|
|
@@ -666,6 +648,7 @@
|
|
|
addDialogVisible.value = true;
|
|
|
|
|
|
// 回填表单数据(普通部门)- 使用详情数据
|
|
|
+ currentDeptId.value = detail.deptId || undefined;
|
|
|
normalForm.employeeCode = detail.advUserStaffNo || '';
|
|
|
normalForm.employeeName = detail.advUserName || '';
|
|
|
normalForm.employeeContact = detail.advUserLink || '';
|