Browse Source

feat开发

xiaweibo 3 months ago
parent
commit
3bc541b4b8

+ 48 - 0
src/api/evaluationSystem/index.ts

@@ -577,6 +577,44 @@ export function saveSecurityExamineDeptAdvUser(data: SaveSecurityExamineDeptAdvU
   });
 }
 
+/**
+ * 管理员端保存先进个人请求参数
+ */
+export interface SaveSecurityExamineAdvUserAdminRequest {
+  psemId: number; // 考核表ID(路由参数id)
+  deptId: number; // 部门ID
+  advUserStaffNo: string; // 员工工号
+  advUserName: string; // 先进个人姓名
+  advUserLink: string; // 先进个人联系方式
+  remark: string; // 先进个人描述
+}
+
+/**
+ * 管理员端保存先进个人
+ */
+export function saveSecurityExamineAdvUserAdmin(data: SaveSecurityExamineAdvUserAdminRequest) {
+  return http.request({
+    url: '/securityExamine/admin/saveSecurityExamineAdvUserAdmin',
+    method: 'post',
+    data,
+  });
+}
+
+/**
+ * 管理员端更新先进个人
+ */
+export interface UpdateSecurityExamineAdvUserAdminRequest extends EvaluationDeptAdvancedUserItem {
+  psemId?: number; // 考核表ID(可选)
+}
+
+export function updateSecurityExamineAdvUserAdmin(data: UpdateSecurityExamineAdvUserAdminRequest) {
+  return http.request({
+    url: '/securityExamine/admin/updateSecurityExamineAdvUserAdmin',
+    method: 'post',
+    data,
+  });
+}
+
 /**
  * 查询部门端先进个人详情
  */
@@ -615,6 +653,16 @@ export function updateSecurityExamineDeptAdvUser(data: UpdateSecurityExamineDept
   });
 }
 
+/**
+ * 管理员端查询先进个人详情
+ */
+export function querySecurityExamineAdvUser(id: number) {
+  return http.request<EvaluationDeptAdvancedUserItem>({
+    url: `/securityExamine/admin/querySecurityExamineAdvUser?id=${id}`,
+    method: 'get',
+  });
+}
+
 /**
  * 删除部门端先进个人
  */

+ 76 - 93
src/views/production-safety/safetyAssessment/evaluationSystem/components/EvaluationSystemAdvancedPerson.vue

@@ -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 || '';