Procházet zdrojové kódy

Merge branch 'feat/production-safety' into 'dev'

Feat/production safety

See merge request product-group-fe/sfy-safety-group/sfy-safety!331
ai0197(吴云丰) před 2 měsíci
rodič
revize
28bd3a969c

+ 7 - 7
src/api/production-education-training-plan/index.ts

@@ -32,7 +32,7 @@ export interface FormDataType {
  */
 export function getEducationAndTrainingProgramList(params: QueryPageRequest<ProductionSafetyFileQuery>) {
   return http.request({
-    url: '/productioneducationtrainingplan/query-page',
+    url: '/educationTrainingPlan/query-page',
     method: 'post',
     params,
   });
@@ -42,7 +42,7 @@ export function getEducationAndTrainingProgramList(params: QueryPageRequest<Prod
  */
 export function saveEducationAndTrainingProgram(data: any) {
   return http.request({
-    url: '/productioneducationtrainingplan/save',
+    url: '/educationTrainingPlan/save',
     method: 'post',
     data: data,
   });
@@ -53,7 +53,7 @@ export function saveEducationAndTrainingProgram(data: any) {
  */
 export function updateEducationAndTrainingProgram(data: any) {
   return http.request({
-    url: '/productioneducationtrainingplan/update',
+    url: '/educationTrainingPlan/update',
     method: 'put',
     data: data,
   });
@@ -64,7 +64,7 @@ export function updateEducationAndTrainingProgram(data: any) {
  */
 export function issueEducationAndTrainingProgram(data: any) {
   return http.request({
-    url: '/productioneducationtrainingplan/issue',
+    url: '/educationTrainingPlan/issue',
     method: 'put',
     data: data,
   });
@@ -75,7 +75,7 @@ export function issueEducationAndTrainingProgram(data: any) {
  */
 export function cancelEducationAndTrainingProgram(data: any) {
   return http.request({
-    url: '/productioneducationtrainingplan/cancel',
+    url: '/educationTrainingPlan/cancel',
     method: 'put',
     data,
   });
@@ -86,7 +86,7 @@ export function cancelEducationAndTrainingProgram(data: any) {
  */
 export function deleteEducationAndTrainingProgram(id: string | number) {
   return http.request({
-    url: `/productioneducationtrainingplan/delete?id=${id}`,
+    url: `/educationTrainingPlan/delete?id=${id}`,
     method: 'delete',
   });
 }
@@ -96,7 +96,7 @@ export function deleteEducationAndTrainingProgram(id: string | number) {
  */
 export function queryEducationAndTrainingProgramDetail(id: string | number) {
   return http.request({
-    url: `/productioneducationtrainingplan/detail?id=${id}`,
+    url: `/educationTrainingPlan/detail?id=${id}`,
     method: 'get',
   });
 }

+ 1 - 1
src/constant/nav.ts

@@ -20,7 +20,7 @@ export const NAV_LIST: Array<RouteRecordString> = [
   },
   {
     name: 'WorkSafety',
-    path: '/work-safety/safetyAssessment/inventory',
+    path: '/work-safety/responsibility-implementation/responsibility-agree-manage-dept',
     meta: {
       title: '生产安全',
     },

+ 1 - 1
src/views/production-safety/implement-safety-duty/components/IssueSafetyResponsibility.vue

@@ -261,7 +261,7 @@
       //   const id = departmentOptions.find((d) => d.deptName === '院领导')?.id;
       //   formData.deptId = [id];
       // }
-      console.log('departmentOptions:', departmentOptions);
+    //   console.log('departmentOptions:', departmentOptions);
       formData.leader1 = null;
       formData.leader2 = null;
       formData.signPerson = [];

+ 8 - 0
src/views/production-safety/implement-safety-duty/responsibility-agree-manage.vue

@@ -240,6 +240,10 @@
         return 'C';
       case '科室':
         return 'D';
+      case '员工':
+        return 'E';
+      case '常驻供应商':
+        return 'F';
       default:
         return 'default';
     }
@@ -253,6 +257,10 @@
         return filterDeptsByLevel(deptsOptions.value, 2);
       case 'D': // 科室
         return filterDeptsByLevel(deptsOptions.value, 3);
+      case 'E': // 员工
+        return filterDeptsByLevel(deptsOptions.value, 4);
+      case 'F': // 常驻供应商
+        return filterDeptsByLevel(deptsOptions.value, 5);
       default:
         return deptsOptions.value;
     }

+ 1 - 0
src/views/production-safety/implement-safety-duty/responsibility-notice-manage-admin/notice-view.vue

@@ -69,6 +69,7 @@
           <el-table-column label="类别名称" prop="safetyAreaTypeName" />
 
           <el-table-column label="通知区域" prop="safetyAreaName" />
+          <el-table-column label="安全责任人" prop="responsiblePersonName" />
           <el-table-column label="计划完成时间" prop="planEndTime" />
           <el-table-column fixed="right" width="200" label="操作">
             <template #default="scope">

+ 4 - 2
src/views/production-safety/implement-safety-duty/sign-agree-dept.vue

@@ -196,7 +196,7 @@
   <PreviewOnline ref="previewOnlineRef" />
   <el-dialog v-model="dialogVisible" title="下一节点签署人" width="500">
     <el-form-item :label="currentLabel">
-      <el-select v-model="signerId" placeholder="请选择" size="large" style="width: 100%" filterable>
+      <el-select v-model="signerId" placeholder="请选择" size="large"  style="width: 100%" filterable remote :remote-method="remoteMethod">
         <el-option v-for="item in userOptions" :key="item.value" :label="item.label" :value="item.value" />
       </el-select>
     </el-form-item>
@@ -435,7 +435,9 @@
       });
     });
   };
-
+  const remoteMethod = async (value) => {
+    await getUserData(value);
+  };
   const getUserData = (realname = '') => {
     queryAvailableUserList({
       pageNumber: 1,

+ 2 - 2
src/views/production-safety/risk-identification-and-control/hazard-approval-manage/audit.vue

@@ -41,7 +41,7 @@
         </el-form>
 
         <div>
-          <el-button type="primary" @click="$router.push({ name: 'hazardApprovalManageAdd' })">添加 </el-button>
+          <!-- <el-button type="primary" @click="$router.push({ name: 'hazardApprovalManageAdd' })">添加 </el-button> -->
           <el-button type="primary" @click="queryTableList">查询</el-button>
           <el-button @click="handleRestParams">重置</el-button>
         </div>
@@ -77,7 +77,7 @@
 
               <!-- <el-button type="primary" link @click="handleConfirmDeleteRow(scope)">删除</el-button> -->
 
-              <el-button type="primary" link @click="openApproveDialog(scope)">审核</el-button>
+              <el-button type="primary" link @click="openApproveDialog(scope)" v-if="scope.row.status === 2">审核</el-button>
               <!-- <el-button
                 type="primary"
                 link

+ 7 - 2
src/views/production-safety/risk-identification-and-control/hazard-approval-manage/list.vue

@@ -62,15 +62,18 @@
 
           <el-table-column fixed="right" min-width="240" label="操作">
             <template #default="scope">
+
               <el-button v-if="scope.row.status === 1" type="primary" link @click="handleSendApproval(scope)"
                 >提交</el-button
               >
               <el-button
                 type="primary"
                 link
+                v-if="scope.row.status === 1"
                 @click="$router.push({ name: 'hazardApprovalManageEdit', query: { id: scope.row.id } })"
                 >编辑</el-button
               >
+              
               <el-button
                 type="primary"
                 link
@@ -78,19 +81,21 @@
                 >查看</el-button
               >
 
-              <el-popconfirm title="确定要删除吗?" @confirm="handleConfirmDeleteRow(scope)">
+              <el-popconfirm title="确定要删除吗?" @confirm="handleConfirmDeleteRow(scope)" v-if="scope.row.status === 1">
                 <template #reference>
                   <el-button type="primary" link>删除</el-button>
                 </template>
               </el-popconfirm>
 
-              <el-button type="primary" link>审批</el-button>
+              <!-- <el-button type="primary" link>审批</el-button> -->
               <el-button
+                v-if="scope.row.status === 3"
                 type="primary"
                 link
                 @click="$router.push({ name: 'hazardApprovalManageMonitor', query: { id: scope.row.id } })"
                 >视频监控</el-button
               >
+              
             </template>
           </el-table-column>
         </el-table>

+ 2 - 2
src/views/production-safety/risk-identification-and-control/labor-products-requisition-manage/list.vue

@@ -43,11 +43,11 @@
           <el-table-column label="职业危害因素" prop="hazardFactor" min-width="120" show-overflow-tooltip />
           <el-table-column label="防护用品名称" prop="ppeName" min-width="120" />
           <el-table-column label="型号" prop="version" min-width="100" />
-          <el-table-column label="领用数量" prop="receiveNum" width="90" align="center" />
+          <el-table-column label="领用数量" prop="receiveNum" width="120" align="center" />
           <el-table-column label="发放人" prop="issuerName" width="100" />
           <el-table-column label="发放时间" prop="issueTime" width="170" />
           <el-table-column label="领用人" prop="receiverName" width="100" />
-          <el-table-column label="用品状态" width="90">
+          <el-table-column label="用品状态" width="120">
             <template #default="{ row }">
               {{
                 row.status === 1 ||

+ 1 - 9
src/views/production-safety/safetyTrainingAndEducation/educationTrainingPlanManagement/configs/form.ts

@@ -1,13 +1,5 @@
-/*
- * @Author: liuJie
- * @Date: 2026-02-03 17:55:50
- * @LastEditors: liuJie
- * @LastEditTime: 2026-02-26 15:03:30
- * @Describe: file describe
- */
-
 export const FORM_RULES = {
-  trainingPlanName: [{ required: true, message: '请输入分类名称', trigger: 'blur' }],
+  trainingPlanName: [{ required: true, message: '教育培训计划名称', trigger: 'blur' }],
   categoryName: [{ required: true, message: '请输入分类名称', trigger: 'change' }],
   trainingContent: [{ required: true, message: '请输入培训名称(内容)', trigger: 'blur' }],
   trainingObject: [{ required: true, message: '请输入培训对象', trigger: 'blur' }],

+ 12 - 3
src/views/production-safety/safetyTrainingAndEducation/educationTrainingPlanManagementDept/components/addTrainingInformation.vue

@@ -136,7 +136,14 @@
   const handleEditorChange = () => {
     // 编辑器内容变化时的处理
   };
-  const handleImageUploadSuccess = (response: any, file: any, fileList: any[]) => {};
+  const handleImageUploadSuccess = (response: any, file: any, fileList: any[]) => {
+    console.log('图片上传成功:', response, file, fileList);
+    form.courseImg = fileList;
+  };
+const handleImageRemove = (file: any, fileList: any[]) => {
+    console.log('图片被移除:', file, fileList);
+    form.courseImg = fileList;
+}
 
 const handleFileChange = (file, fileList) => {
     // 1. 验证文件类型和大小
@@ -172,7 +179,7 @@ const handleFileChange = (file, fileList) => {
     };
 }
 
-  const handleUploadSignsUploadSuccess = async (item, fileList) => {
+  const handleUploadSignsUploadSuccess = async (item:any, fileList) => {
     // const attachment = await formatAttachmentList(fileList);
     // item.attachment = attachment;
 
@@ -319,7 +326,7 @@ const handleFileChange = (file, fileList) => {
             />
           <!-- <el-upload
             class="image-uploader"
-            action="safety_api/api/admin/minio/uploadFile"
+            action="#"
             :file-list="form.courseContent"
             :disabled="isViewMode"
             :limit="1"
@@ -336,6 +343,8 @@ const handleFileChange = (file, fileList) => {
               <div class="el-upload__tip"> 支持格式:.jpg .png .jpeg,单个文件不能超过300k,设置一个默认图片。 </div>
             </template>
           </el-upload> -->
+
+
         </el-form-item>
       </el-form>
 

+ 1 - 1
src/views/production-safety/safetyTrainingAndEducation/educationTrainingPlanManagementDept/components/educationTrainingPlanManagementDeptDetail.vue

@@ -46,7 +46,7 @@
             {{ details.deptName }}
           </el-descriptions-item>
 
-          <el-descriptions-item label="学时"> {{ details.studyHours }}时 </el-descriptions-item>
+          <el-descriptions-item label="学时"> {{ details.studyHours }}时 </el-descriptions-item>
           <el-descriptions-item label="培训分组">
             {{ details.groupName }}
           </el-descriptions-item>