Browse Source

Merge remote-tracking branch 'origin/master'

ouyj 5 months ago
parent
commit
8d99b4e747

+ 3 - 3
ygtx-gxt/src/main/java/com/ygtx/gxt/controller/GxtUserScoreController.java

@@ -122,12 +122,12 @@ public class GxtUserScoreController extends BaseController
      * @return
      */
     @GetMapping("/getScoreSummary")
-    public AjaxResult getScoreSummary(@RequestParam Integer rtType, @RequestParam String monthPeriod) {
+    public AjaxResult getScoreSummary(@RequestParam Integer rtType, @RequestParam String monthPeriod, @RequestParam Long deptId) {
         if (rtType==null) {
             rtType = 0;
         }
         String permission = configService.selectConfigByKey("gxt.user.scorePage");
-        GxtMonthScore monthScore = gxtMonthScoreService.getGxtMonthScoreByParams(rtType,monthPeriod,permission);
+        GxtMonthScore monthScore = gxtMonthScoreService.getGxtMonthScoreByParams(rtType,monthPeriod,permission,deptId);
         AjaxResult ajax = AjaxResult.success();
         ajax.put("monthScore", monthScore);
         return ajax;
@@ -140,7 +140,7 @@ public class GxtUserScoreController extends BaseController
     @GetMapping("/getMonthScoreList")
     public AjaxResult getMonthScoreList(GxtMonthScore monthScore) {
         startPage();
-        List<GxtMonthScore> monthScoreList = gxtMonthScoreService.selectGxtMonthScoreList(monthScore);
+        List<GxtMonthScore> monthScoreList = gxtMonthScoreService.getMonthScoreList(monthScore);
         AjaxResult ajax = AjaxResult.success();
         ajax.put("monthScoreList", monthScoreList);
         return ajax;

+ 68 - 6
ygtx-gxt/src/main/java/com/ygtx/gxt/domain/GxtMonthScore.java

@@ -2,6 +2,7 @@ package com.ygtx.gxt.domain;
 
 import com.ygtx.common.core.domain.BaseEntity;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -20,6 +21,8 @@ public class GxtMonthScore extends BaseEntity
     /** 场站ID */
     private Long deptId;
 
+    private String deptName;
+
     /** 统计月份 */
     private String monthPeriod;
 
@@ -53,7 +56,17 @@ public class GxtMonthScore extends BaseEntity
      */
     private Integer previousStatus;
 
-    private Integer no_status;
+    private String statusList;
+
+    private Integer plannedCount;
+
+    private Integer actualCount;
+
+    private BigDecimal groupDeduction;
+
+    private BigDecimal repairOrderCoefficient;
+
+    private BigDecimal workOrderCoefficient;
 
     public void setId(Long id) 
     {
@@ -73,7 +86,16 @@ public class GxtMonthScore extends BaseEntity
     {
         return deptId;
     }
-    public void setMonthPeriod(String monthPeriod) 
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public void setMonthPeriod(String monthPeriod)
     {
         this.monthPeriod = monthPeriod;
     }
@@ -176,11 +198,51 @@ public class GxtMonthScore extends BaseEntity
         this.previousStatus = previousStatus;
     }
 
-    public Integer getNo_status() {
-        return no_status;
+    public String getStatusList() {
+        return statusList;
+    }
+
+    public void setStatusList(String statusList) {
+        this.statusList = statusList;
+    }
+
+    public Integer getPlannedCount() {
+        return plannedCount;
+    }
+
+    public void setPlannedCount(Integer plannedCount) {
+        this.plannedCount = plannedCount;
+    }
+
+    public Integer getActualCount() {
+        return actualCount;
+    }
+
+    public void setActualCount(Integer actualCount) {
+        this.actualCount = actualCount;
+    }
+
+    public BigDecimal getGroupDeduction() {
+        return groupDeduction;
+    }
+
+    public void setGroupDeduction(BigDecimal groupDeduction) {
+        this.groupDeduction = groupDeduction;
+    }
+
+    public BigDecimal getRepairOrderCoefficient() {
+        return repairOrderCoefficient;
+    }
+
+    public void setRepairOrderCoefficient(BigDecimal repairOrderCoefficient) {
+        this.repairOrderCoefficient = repairOrderCoefficient;
+    }
+
+    public BigDecimal getWorkOrderCoefficient() {
+        return workOrderCoefficient;
     }
 
-    public void setNo_status(Integer no_status) {
-        this.no_status = no_status;
+    public void setWorkOrderCoefficient(BigDecimal workOrderCoefficient) {
+        this.workOrderCoefficient = workOrderCoefficient;
     }
 }

+ 2 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/mapper/GxtMonthScoreMapper.java

@@ -27,6 +27,8 @@ public interface GxtMonthScoreMapper
      */
     public List<GxtMonthScore> selectGxtMonthScoreList(GxtMonthScore gxtMonthScore);
 
+    public List<GxtMonthScore> selectGxtMonthScoreListByStatus(GxtMonthScore gxtMonthScore);
+
     /**
      * 新增月度统计表
      * 

+ 3 - 1
ygtx-gxt/src/main/java/com/ygtx/gxt/service/IGxtMonthScoreService.java

@@ -19,7 +19,9 @@ public interface IGxtMonthScoreService
      */
     public GxtMonthScore selectGxtMonthScoreById(Long id);
 
-    public GxtMonthScore getGxtMonthScoreByParams(Integer rtType,String monthPeriod,String permission);
+    public GxtMonthScore getGxtMonthScoreByParams(Integer rtType,String monthPeriod,String permission,Long deptId);
+
+    public List<GxtMonthScore> getMonthScoreList(GxtMonthScore monthScore);
 
     public void submitGxtMonthScore(GxtMonthScore monthScore);
 

+ 15 - 4
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtMonthScoreServiceImpl.java

@@ -63,17 +63,19 @@ public class GxtMonthScoreServiceImpl implements IGxtMonthScoreService
 
 
     @Override
-    public GxtMonthScore getGxtMonthScoreByParams(Integer rtType,String monthPeriod,String permission)
+    public GxtMonthScore getGxtMonthScoreByParams(Integer rtType,String monthPeriod,String permission,Long deptId)
     {
         Long userId = SecurityUtils.getUserId();
         String userName = SecurityUtils.getLoginUser().getUser().getNickName();
-        Long deptId = SecurityUtils.getDeptId();
-        String deptName = SecurityUtils.getLoginUser().getUser().getDept().getDeptName();
+        if (deptId==null || deptId==0L) {
+            deptId = SecurityUtils.getDeptId();
+        }
         GxtMonthScore monthScore = new GxtMonthScore();
         monthScore.setMonthPeriod(monthPeriod);
         monthScore.setDeptId(deptId);
         List<GxtMonthScore> monthScoreList = selectGxtMonthScoreList(monthScore);
         if (monthScoreList==null || monthScoreList.isEmpty()) {
+            String deptName = SecurityUtils.getLoginUser().getUser().getDept().getDeptName();
             // 新增
             monthScore.setStatus(0);
             monthScore.setPersionId(userId);
@@ -220,8 +222,17 @@ public class GxtMonthScoreServiceImpl implements IGxtMonthScoreService
         return monthScore;
     }
 
+    @Override
+    public List<GxtMonthScore> getMonthScoreList(GxtMonthScore monthScore) {
+        return gxtMonthScoreMapper.selectGxtMonthScoreListByStatus(monthScore);
+    }
+
+    @Override
     public void submitGxtMonthScore(GxtMonthScore monthScore) {
-        if (monthScore.getStatus()==1 || monthScore.getStatus()==2) {
+        if (monthScore.getPreviousStatus()!=null && monthScore.getPreviousStatus()>monthScore.getStatus()) {
+            return;
+        }
+        if (monthScore.getStatus()==1 || monthScore.getStatus()==2 || monthScore.getStatus()==3) {
             GxtMonthScoreLog monthScoreLog = new GxtMonthScoreLog();
             gxtMonthScoreMapper.updateGxtMonthScore(monthScore);
             GxtCoefficientScore coefficientScore = monthScore.getCoefficientScore();

+ 2 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtWorkOrderServiceImpl.java

@@ -140,6 +140,8 @@ public class GxtWorkOrderServiceImpl implements IGxtWorkOrderService
                 gxtWorkOrder.setGxtCenter(dept.getParentName());
                 gxtWorkOrder.setPcsStationPid(dept.getDeptId());
             }
+        } else {
+            throw new ServiceException(gxtWorkOrder.getPcsStationName()+"不存在!");
         }
 
         gxtWorkOrder.setCreateTime(DateUtils.getNowDate());

+ 37 - 1
ygtx-gxt/src/main/resources/mapper/gxt/GxtMonthScoreMapper.xml

@@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <resultMap type="GxtMonthScore" id="GxtMonthScoreResult">
         <result property="id" column="id"/>
         <result property="deptId" column="dept_id"/>
+        <result property="deptName" column="dept_name"/>
         <result property="monthPeriod" column="month_period"/>
         <result property="status" column="status"/>
         <result property="feedbackContent" column="feedback_content"/>
@@ -16,10 +17,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateBy" column="update_by"/>
         <result property="updateTime" column="update_time"/>
         <result property="remark" column="remark"/>
+        <result property="plannedCount" column="planned_count"/>
+        <result property="actualCount" column="actual_count"/>
+        <result property="groupDeduction" column="group_deduction"/>
+        <result property="explainCode" column="explain_code"/>
+        <result property="repairOrderCoefficient" column="repair_order_coefficient"/>
+        <result property="workOrderCoefficient" column="work_order_coefficient"/>
     </resultMap>
 
     <sql id="selectGxtMonthScoreVo">
-        select id, dept_id, month_period, status, feedback_content, persion_id, create_by, create_time, update_by, update_time, remark from gxt_month_score
+        select id, dept_id,(SELECT dept_name FROM sys_dept WHERE dept_id=gxt_month_score.dept_id) AS dept_name, month_period, status, feedback_content, persion_id, create_by, create_time, update_by, update_time, remark from gxt_month_score
     </sql>
 
     <select id="selectGxtMonthScoreList" parameterType="GxtMonthScore" resultMap="GxtMonthScoreResult">
@@ -41,6 +48,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ORDER BY create_time DESC
     </select>
 
+    <select id="selectGxtMonthScoreListByStatus" parameterType="GxtMonthScore" resultMap="GxtMonthScoreResult">
+        SELECT ms.id,ms.month_period,ms.dept_id,cs.detp_name AS dept_name,ms.status,cs.planned_count,cs.actual_count,cs.group_deduction,cs.explain_code,
+               COALESCE(cs2.repair_order_coefficient, 1) AS repair_order_coefficient,COALESCE(cs2.work_order_coefficient, 1) AS work_order_coefficient
+        FROM gxt_month_score ms
+            LEFT JOIN gxt_coefficient_score cs ON ms.month_period=cs.month_period AND ms.dept_id=cs.dept_id
+            LEFT JOIN gxt_coefficient_score cs2 ON cs2.dept_id=ms.dept_id AND cs2.month_period=DATE_FORMAT(DATE_SUB(STR_TO_DATE(ms.month_period, '%Y-%m'), INTERVAL 1 MONTH), '%Y-%m')
+        <where>
+            <if test="deptId != null "> and ms.dept_id = #{deptId}</if>
+            <if test="monthPeriod != null  and monthPeriod != ''"> and ms.month_period = #{monthPeriod}</if>
+            <if test="status != null "> and ms.status = #{status}</if>
+            <if test="statusList != null and statusList != ''">
+                AND ms.status IN
+                <foreach item="item" collection="statusList.split(',')" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="feedbackContent != null  and feedbackContent != ''"> and ms.feedback_content = #{feedbackContent}</if>
+            <if test="persionId != null "> and ms.persion_id = #{persionId}</if>
+            <if test="createBy != null  and createBy != ''"> and ms.create_by = #{createBy}</if>
+            <if test="params.beginCreateTime != null and params.beginCreateTime != ''"> and ms.create_time &gt;= #{params.beginCreateTime}</if>
+            <if test="params.endCreateTime != null and params.endCreateTime != ''"> and ms.create_time &lt;= #{params.endCreateTime}</if>
+            <if test="updateBy != null  and updateBy != ''"> and ms.update_by = #{updateBy}</if>
+            <if test="params.beginUpdateTime != null and params.beginUpdateTime != ''"> and ms.update_time &gt;= #{params.beginUpdateTime}</if>
+            <if test="params.endUpdateTime != null and params.endUpdateTime != ''"> and ms.update_time &lt;= #{params.endUpdateTime}</if>
+            <if test="remark != null  and remark != ''"> and ms.remark = #{remark}</if>
+        </where>
+        ORDER BY ms.create_time DESC
+    </select>
+
     <select id="selectGxtMonthScoreById" parameterType="Long" resultMap="GxtMonthScoreResult">
         <include refid="selectGxtMonthScoreVo"/>
         where id = #{id}

+ 1 - 1
ygtx-gxt/src/main/resources/mapper/gxt/source/GxtMisInfoMapper.xml

@@ -33,7 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select work_order_project_no, work_order_status, pcs_station_name,
                pcs_device_name, plan_start_time, plan_end_time, real_start_time, real_end_time,
                work_content, issuer_name,permitter_name, create_time, update_time, remark
-        from fujian_wo_workorder_info t
+        from fujian_wo_workorder_info t where pcs_device_name is not null
     </sql>
 
     <sql id="selectGxtWorkOrderPersonVo">

+ 3 - 2
ygtx-ui/src/api/gxt/userScore.js

@@ -77,13 +77,14 @@ export function submitAllScores(data) {
 }
 
 // 获取月度工分汇总数据
-export function getScoreSummary(monthPeriod, rtType) {
+export function getScoreSummary(monthPeriod, rtType, deptParam) {
   return request({
     url: '/gxt/userscore/getScoreSummary',
     method: 'get',
     params: {
       rtType: rtType || 0,
-      monthPeriod: monthPeriod
+      monthPeriod: monthPeriod,
+      deptId: deptParam
     }
   })
 }

+ 1 - 1
ygtx-ui/src/components/misInfoSelect/single.vue

@@ -50,7 +50,7 @@
           <el-table-column label="MIS工单编码" align="center" key="misNo" prop="misNo" :show-overflow-tooltip="true" />
           <el-table-column label="风机编号" align="center" key="pcsDeviceName" prop="pcsDeviceName" :show-overflow-tooltip="true" />
           <el-table-column label="场站" align="center" key="pcsStationName" prop="pcsStationName" :show-overflow-tooltip="true" />
-          <el-table-column label="修内容" align="center" key="content" prop="content" :show-overflow-tooltip="true" />
+          <el-table-column label="修内容" align="center" key="content" prop="content" :show-overflow-tooltip="true" />
           <el-table-column label="状态" align="center" key="workOrderStatus" prop="workOrderStatus" :show-overflow-tooltip="true" />
           <el-table-column label="开始时间" align="center" key="realStartTime" prop="realStartTime" :show-overflow-tooltip="true" />
           <el-table-column label="结束时间" align="center" key="realEndTime" prop="realEndTime" :show-overflow-tooltip="true" />

+ 30 - 10
ygtx-ui/src/views/gxt/gxtOrder/index.vue

@@ -221,7 +221,7 @@
               v-hasPermi="['gxt:maintenance:order:edit']"
           ><i class="fa fa-edit"></i>编辑</el-button>
           <!-- 已派单状态:只显示确认按钮 -->
-          <el-button link type="success" @click="handleAccept(scope.row)" v-if="scope.row.workOrderStatus === 'assigned'" v-hasPermi="['gxt:maintenance:order:accept']">
+          <el-button link type="primary" @click="handleAccept(scope.row)" v-if="scope.row.workOrderStatus === 'assigned'" v-hasPermi="['gxt:maintenance:order:accept']">
             <i class="fa fa-check"></i>接单
           </el-button>
 
@@ -250,7 +250,7 @@
 <!--          </el-button>-->
 
           <!-- 已完成状态:显示复运按钮 -->
-          <el-button link type="info" @click="handleRestart(scope.row)" v-if="scope.row.workOrderStatus === 'completed' && scope.row.restartTime === null" v-hasPermi="['gxt:maintenance:order:restart']">
+          <el-button link type="success" @click="handleRestart(scope.row)" v-if="scope.row.workOrderStatus === 'completed' && scope.row.restartTime === null" v-hasPermi="['gxt:maintenance:order:restart']">
             <i class="fa fa-refresh"></i>复运
           </el-button>
 
@@ -1448,6 +1448,21 @@ const showTeamLeaderQuickSelect = ref(false)
 const quickTeamLeaderList = ref([])
 const teamLeaderLoading = ref(false)
 const teamLeaderSearchTimer = ref(null)
+const allUserList = ref([]) // 存储所有设备数据用于快速检索
+
+/** 过滤快速检索用户列表 */
+const filterQuickUserList = (keyword) => {
+  debugger
+  if (!allUserList.value.length) {
+    loadQuickTeamLeaderList();
+    return;
+  }
+
+  const lowerKeyword = keyword.toLowerCase();
+  quickTeamLeaderList.value = allUserList.value.filter(item =>
+      (item.nickName && item.nickName.toLowerCase().includes(lowerKeyword))
+  );
+}
 
 // 工作负责人快速检索方法
 /** 工作负责人输入框获取焦点 */
@@ -1488,9 +1503,10 @@ const handleTeamLeaderInput = (value) => {
   }
 
   // 设置新的定时器,防抖处理(300ms)
-  teamLeaderSearchTimer.value = setTimeout(() => {
-    searchTeamLeaderList(searchText)
-  }, 300)
+  // teamLeaderSearchTimer.value = setTimeout(() => {
+    // searchTeamLeaderList(searchText)
+  filterQuickUserList(searchText)
+  // }, 300)
 }
 
 /** 搜索工作负责人列表 */
@@ -1521,6 +1537,11 @@ const searchTeamLeaderList = async (keyword) => {
 
 /** 加载快速检索工作负责人列表 */
 const loadQuickTeamLeaderList = async () => {
+  // 如果已有所有用户数据,直接使用
+  if (allUserList.value.length > 0) {
+    quickTeamLeaderList.value = allUserList.value;
+    return;
+  }
   teamLeaderLoading.value = true
   try {
     // 加载当前部门下的用户列表
@@ -1528,10 +1549,11 @@ const loadQuickTeamLeaderList = async () => {
       deptId: acceptForm.value.gxtCenterId, // 使用维保中心ID
       status: '0'
     })
-    quickTeamLeaderList.value = response.data || []
+    allUserList.value = response.data || []
+    quickTeamLeaderList.value = allUserList.value; //
   } catch (error) {
     console.error('加载工作负责人列表失败:', error)
-    quickTeamLeaderList.value = []
+    allUserList.value = []
   } finally {
     teamLeaderLoading.value = false
   }
@@ -2023,8 +2045,6 @@ function handleAdd() {
   genCode('WORK_ORDER_CODE').then(response =>{
     form.value.workOrderProjectNo = response;
   });
-  // // 预加载MIS工单数据用于快速检索
-  // loadQuickMisNoList()
   open.value = true
   title.value = "添加维保工单"
   commonKey++
@@ -2262,7 +2282,7 @@ function handleAccept(row) {
       loadQuickTeamLeaderList()
       acceptDialogVisible.value = true
       // listUserNoPermi({deptId: row.gxtCenterId}).then(response => {
-      //   userList.value = response.data
+      //   allUserList.value = response.data
       //   acceptDialogVisible.value = true
       //   // 打开对话框后重置表单验证错误
       //   proxy.$nextTick(() => {

+ 116 - 55
ygtx-ui/src/views/gxt/repairOrder/index.vue

@@ -135,7 +135,11 @@
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="风机编号" align="center" prop="pcsDeviceName" width="120" :show-overflow-tooltip="true"/>
+      <el-table-column label="风机编号" align="center" prop="pcsDeviceName" width="120" :show-overflow-tooltip="true">
+        <template #default="scope">
+          {{ scope.row.pcsDeviceName || '-' }}
+        </template>
+      </el-table-column>
 <!--      <el-table-column label="检修类型" align="center" prop="maintenanceType" min-width="100">-->
 <!--        <template #default="scope">-->
 <!--          <dict-tag :options="gxt_maintenance_type" :value="scope.row.maintenanceType" />-->
@@ -146,40 +150,76 @@
           <dict-tag :options="gxt_work_order_status" :value="scope.row.workOrderStatus" />
         </template>
       </el-table-column>
-      <el-table-column label="维保中心" align="center" prop="gxtCenter"  width="150" :show-overflow-tooltip="true"/>
-      <el-table-column label="场站" align="center" prop="pcsStationName" width="150" :show-overflow-tooltip="true"/>
-      <el-table-column label="品牌" align="center" prop="brand" width="120" :show-overflow-tooltip="true"/>
-      <el-table-column label="机型" align="center" prop="model" width="120" :show-overflow-tooltip="true"/>
-      <el-table-column label="故障代码" align="center" prop="faultCode" width="120" :show-overflow-tooltip="true"/>
+      <el-table-column label="维保中心" align="center" prop="gxtCenter"  width="150" :show-overflow-tooltip="true">
+        <template #default="scope">
+          {{ scope.row.gxtCenter || '-' }}
+        </template>
+      </el-table-column>
+      <el-table-column label="场站" align="center" prop="pcsStationName" width="150" :show-overflow-tooltip="true">
+        <template #default="scope">
+          {{ scope.row.pcsStationName || '-' }}
+        </template>
+      </el-table-column>
+      <el-table-column label="品牌" align="center" prop="brand" width="120" :show-overflow-tooltip="true">
+        <template #default="scope">
+          {{ scope.row.brand || '-' }}
+        </template>
+      </el-table-column>
+      <el-table-column label="机型" align="center" prop="model" width="120" :show-overflow-tooltip="true">
+        <template #default="scope">
+          {{ scope.row.model || '-' }}
+        </template>
+      </el-table-column>
+      <el-table-column label="故障代码" align="center" prop="faultCode" width="120" :show-overflow-tooltip="true">
+        <template #default="scope">
+          {{ scope.row.faultCode || '-' }}
+        </template>
+      </el-table-column>
       <el-table-column label="发生时间" align="center" prop="occurTime" width="150" >
         <template #default="scope">
-          <span>{{ parseTime(scope.row.occurTime, '{y}-{m}-{d} {h}:{i}') }}</span>
+          <span>{{ scope.row.occurTime ? parseTime(scope.row.occurTime, '{y}-{m}-{d} {h}:{i}') : '-' }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="MIS工单编码" align="center" prop="misOrderNo"  width="150" :show-overflow-tooltip="true">
+        <template #default="scope">
+          {{ scope.row.misOrderNo || '-' }}
+        </template>
+      </el-table-column>
+      <el-table-column label="下发人" align="center" prop="assignUserName" width="100" >
+        <template #default="scope">
+          {{ scope.row.assignUserName || '-' }}
         </template>
       </el-table-column>
-      <el-table-column label="MIS工单编码" align="center" prop="misOrderNo"  width="150" :show-overflow-tooltip="true"/>
-      <el-table-column label="下发人" align="center" prop="assignUserName" width="100" />
       <el-table-column label="下发时间" align="center" prop="assignTime" width="150">
         <template #default="scope">
-          <span>{{ parseTime(scope.row.assignTime, '{y}-{m}-{d} {h}:{i}') }}</span>
+          <span>{{ scope.row.assignTime ? parseTime(scope.row.assignTime, '{y}-{m}-{d} {h}:{i}') : '-' }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="接单人" align="center" prop="acceptUserName" width="100" >
+        <template #default="scope">
+          {{ scope.row.acceptUserName || '-' }}
         </template>
       </el-table-column>
-      <el-table-column label="接单人" align="center" prop="acceptUserName" width="100" />
       <el-table-column label="接单时间" align="center" prop="acceptTime" width="150">
         <template #default="scope">
-          <span>{{ parseTime(scope.row.acceptTime, '{y}-{m}-{d} {h}:{i}') }}</span>
+          <span>{{ scope.row.acceptTime ? parseTime(scope.row.acceptTime, '{y}-{m}-{d} {h}:{i}') : '-' }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="开始时间" align="center" prop="realStartTime" width="150">
+        <template #default="scope">
+          <span>{{ scope.row.realStartTime ? parseTime(scope.row.realStartTime, '{y}-{m}-{d} {h}:{i}') : '-' }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="开始时间" align="center" prop="acceptTime" width="150">
+      <el-table-column label="结束时间" align="center" prop="realEndTime" width="150">
         <template #default="scope">
-          <span>{{ parseTime(scope.row.realStartTime, '{y}-{m}-{d} {h}:{i}') }}</span>
+          <span>{{ scope.row.realEndTime ? parseTime(scope.row.realEndTime, '{y}-{m}-{d} {h}:{i}') : '-' }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="结束时间" align="center" prop="acceptTime" width="150">
+      <el-table-column label="工作负责人" align="center" prop="teamLeaderName" width="100" >
         <template #default="scope">
-          <span>{{ parseTime(scope.row.realEndTime, '{y}-{m}-{d} {h}:{i}') }}</span>
+          {{ scope.row.teamLeaderName || '-' }}
         </template>
       </el-table-column>
-      <el-table-column label="工作负责人" align="center" prop="teamLeaderName" width="100" />
       <!--      <el-table-column label="优先级" align="center" prop="priorityType" min-width="100">
               <template #default="scope">
                 <dict-tag :options="gxt_order_priority_type" :value="scope.row.priorityType" />
@@ -267,7 +307,7 @@
               link
               @click="handleRestart(scope.row)"
               v-hasPermi="['gxt:repairOrder:restart']"
-          ><i class="fa fa-play"></i>复运</el-button>
+          ><i class="fa fa-refresh"></i>复运</el-button>
           <el-button
               type="info"
               link
@@ -1062,16 +1102,16 @@
 <!--          <el-col :span="12">
             <el-form-item label="故障描述">{{ ratingForm.faultDesc || '无' }}</el-form-item>
           </el-col>-->
-          <el-col :span="24">
-            <el-form-item label="维修总结">
-              <el-input
-                  v-model="ratingForm.content"
-                  type="textarea"
-                  :rows="3"
-                  disabled
-              />
-            </el-form-item>
-          </el-col>
+<!--          <el-col :span="24">-->
+<!--            <el-form-item label="维修总结">-->
+<!--              <el-input-->
+<!--                  v-model="ratingForm.content"-->
+<!--                  type="textarea"-->
+<!--                  :rows="3"-->
+<!--                  disabled-->
+<!--              />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
 <!--          <el-col :span="12">-->
 <!--            <el-form-item label="检修类型">-->
 <!--              <el-select v-model="ratingForm.maintenanceType" style="width: 100%" disabled>-->
@@ -1227,31 +1267,28 @@
                     </el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="风机编号">{{ viewForm.pcsDeviceName }}</el-form-item>
+                    <el-form-item label="风机编号">{{ viewForm.pcsDeviceName || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="维保中心">{{ viewForm.gxtCenter }}</el-form-item>
+                    <el-form-item label="维保中心">{{ viewForm.gxtCenter || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="场站">{{ viewForm.pcsStationName }}</el-form-item>
+                    <el-form-item label="场站">{{ viewForm.pcsStationName || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="品牌">{{ viewForm.brand }}</el-form-item>
+                    <el-form-item label="品牌">{{ viewForm.brand || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="机型">{{ viewForm.model }}</el-form-item>
+                    <el-form-item label="机型">{{ viewForm.model || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="故障代码">{{ viewForm.faultCode }}</el-form-item>
+                    <el-form-item label="故障代码">{{ viewForm.faultCode || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="故障信息">{{ viewForm.faultBarcode }}</el-form-item>
+                    <el-form-item label="故障信息">{{ viewForm.faultBarcode || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="发生时间">{{ parseTime(viewForm.occurTime, '{y}-{m}-{d} {h}:{i}') }}</el-form-item>
-                  </el-col>
-                  <el-col :span="24">
-                    <el-form-item label="MIS工单编码">{{ viewForm.misOrderNo }}</el-form-item>
+                    <el-form-item label="发生时间">{{ parseTime(viewForm.occurTime, '{y}-{m}-{d} {h}:{i}') || '-' }}</el-form-item>
                   </el-col>
 <!--                  <el-col :span="24">
                     <el-form-item label="故障描述">{{ viewForm.faultDesc }}</el-form-item>
@@ -1270,39 +1307,42 @@
               <el-form label-width="100px" label-position="top">
                 <el-row :gutter="20">
                   <el-col :span="24">
-                    <el-form-item label="下发人">{{ viewForm.assignUserName }}</el-form-item>
+                    <el-form-item label="下发人">{{ viewForm.assignUserName || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="下发时间">{{ parseTime(viewForm.assignTime, '{y}-{m}-{d} {h}:{i}') }}</el-form-item>
+                    <el-form-item label="下发时间">{{ parseTime(viewForm.assignTime, '{y}-{m}-{d} {h}:{i}') || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="接单人">{{ viewForm.acceptUserName }}</el-form-item>
+                    <el-form-item label="接单人">{{ viewForm.acceptUserName || '-'}}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="接单时间">{{ parseTime(viewForm.acceptTime, '{y}-{m}-{d} {h}:{i}') }}</el-form-item>
+                    <el-form-item label="接单时间">{{ parseTime(viewForm.acceptTime, '{y}-{m}-{d} {h}:{i}') || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="工作负责人">{{ viewForm.teamLeaderName }}</el-form-item>
+                    <el-form-item label="工作负责人">{{ viewForm.teamLeaderName || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="检修人员">{{ viewForm.workGroupMemberName }}</el-form-item>
+                    <el-form-item label="检修人员">{{ viewForm.workGroupMemberName || '-' }}</el-form-item>
                   </el-col>
 <!--                  <el-col :span="24">-->
 <!--                    <el-form-item label="检修类型">-->
 <!--                      <dict-tag :options="gxt_maintenance_type" :value="viewForm.maintenanceType" />-->
 <!--                    </el-form-item>-->
+<!--                  </el-col>-->
+<!--                  <el-col :span="24">-->
+<!--                    <el-form-item label="维修总结">{{ viewForm.content }}</el-form-item>-->
 <!--                  </el-col>-->
                   <el-col :span="24">
-                    <el-form-item label="维修总结">{{ viewForm.content }}</el-form-item>
+                    <el-form-item label="MIS工单编码">{{ viewForm.misOrderNo || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="开始时间">{{ parseTime(viewForm.realStartTime, '{y}-{m}-{d} {h}:{i}') }}</el-form-item>
+                    <el-form-item label="开始时间">{{ parseTime(viewForm.realStartTime, '{y}-{m}-{d} {h}:{i}') || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="结束时间">{{ parseTime(viewForm.realEndTime, '{y}-{m}-{d} {h}:{i}') }}</el-form-item>
+                    <el-form-item label="结束时间">{{ parseTime(viewForm.realEndTime, '{y}-{m}-{d} {h}:{i}') || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="恢复运行时间">{{ parseTime(viewForm.restartTime, '{y}-{m}-{d} {h}:{i}') }}</el-form-item>
+                    <el-form-item label="恢复运行时间">{{ parseTime(viewForm.restartTime, '{y}-{m}-{d} {h}:{i}') || '-' }}</el-form-item>
                   </el-col>
                 </el-row>
               </el-form>
@@ -1542,6 +1582,21 @@ const showTeamLeaderQuickSelect = ref(false)
 const quickTeamLeaderList = ref([])
 const teamLeaderLoading = ref(false)
 const teamLeaderSearchTimer = ref(null)
+const allUserList = ref([]) // 存储所有设备数据用于快速检索
+
+/** 过滤快速检索用户列表 */
+const filterQuickUserList = (keyword) => {
+  debugger
+  if (!allUserList.value.length) {
+    loadQuickTeamLeaderList();
+    return;
+  }
+
+  const lowerKeyword = keyword.toLowerCase();
+  quickTeamLeaderList.value = allUserList.value.filter(item =>
+      (item.nickName && item.nickName.toLowerCase().includes(lowerKeyword))
+  );
+}
 
 // 工作负责人快速检索方法
 /** 工作负责人输入框获取焦点 */
@@ -1580,11 +1635,11 @@ const handleTeamLeaderInput = (value) => {
   if (teamLeaderSearchTimer.value) {
     clearTimeout(teamLeaderSearchTimer.value)
   }
-
+  filterQuickUserList(searchText)
   // 设置新的定时器,防抖处理(300ms)
-  teamLeaderSearchTimer.value = setTimeout(() => {
-    searchTeamLeaderList(searchText)
-  }, 300)
+  // teamLeaderSearchTimer.value = setTimeout(() => {
+  //   searchTeamLeaderList(searchText)
+  // }, 300)
 }
 
 /** 搜索工作负责人列表 */
@@ -1615,6 +1670,11 @@ const searchTeamLeaderList = async (keyword) => {
 
 /** 加载快速检索工作负责人列表 */
 const loadQuickTeamLeaderList = async () => {
+  // 如果已有所有用户数据,直接使用
+  if (allUserList.value.length > 0) {
+    quickTeamLeaderList.value = allUserList.value;
+    return;
+  }
   teamLeaderLoading.value = true
   try {
     // 加载当前部门下的用户列表
@@ -1622,10 +1682,11 @@ const loadQuickTeamLeaderList = async () => {
       deptId: acceptForm.value.gxtCenterId, // 使用维保中心ID
       status: '0'
     })
-    quickTeamLeaderList.value = response.data || []
+    allUserList.value = response.data || []
+    quickTeamLeaderList.value = allUserList.value; //
   } catch (error) {
     console.error('加载工作负责人列表失败:', error)
-    quickTeamLeaderList.value = []
+    allUserList.value = []
   } finally {
     teamLeaderLoading.value = false
   }

+ 209 - 51
ygtx-ui/src/views/gxt/userScore/scoreSummary.vue

@@ -23,24 +23,37 @@
           v-model="statusFilter" 
           placeholder="请选择状态" 
           clearable
-          style="width: 120px;"
+          style="width: 120px;margin-right: 20px;"
           @change="handleStatusChange"
         >
           <el-option style="margin-left: 10px;" label="待处理" :value="1"></el-option>
         </el-select>
+        <el-button style="padding: 10px;" type="primary" v-hasPermi="['gxt:scoresummary:first']" @click="addMonthScore">+ 提交上月评分</el-button>
       </div>
       <div class="form-content">
         <el-table :data="departmentStats" style="width: 100%">
-          <el-table-column prop="department" label="部门"></el-table-column>
+          <el-table-column prop="deptName" label="部门"></el-table-column>
+          <el-table-column prop="monthPeriod" label="汇总月份"></el-table-column>
+          <el-table-column prop="status" label="状态">
+            <template #default="{ row }">
+              <span v-if="row.status === 0">未提交</span>
+              <span v-else-if="row.status === 1" style="color: orange;">反馈待处理</span>
+              <span v-else-if="row.status === 2" style="color: blue;">待终审</span>
+              <span v-else-if="row.status === 3" style="color: green;">完成</span>
+              <span v-else>未知状态</span>
+            </template>
+          </el-table-column>
           <el-table-column prop="plannedCount" label="计划维保台数"></el-table-column>
           <el-table-column prop="actualCount" label="实际维保台数"></el-table-column>
           <el-table-column prop="groupDeduction" label="全组扣分"></el-table-column>
           <el-table-column prop="explainCode" label="说明"></el-table-column>
-          <el-table-column prop="workOrderCoefficient" label="本月维保工单系数"></el-table-column>
-          <el-table-column prop="repairOrderCoefficient" label="本月维修工单系数"></el-table-column>
+          <el-table-column prop="workOrderCoefficient" label="月维保工单系数"></el-table-column>
+          <el-table-column prop="repairOrderCoefficient" label="月维修工单系数"></el-table-column>
           <el-table-column label="操作">
             <template #default="scope">
-              <el-tag type="primary" @click="handleReview(scope.row)" style="cursor: pointer;">审核</el-tag>
+              <el-tag type="primary" @click="handleReview(scope.row)" style="cursor: pointer;padding: 5px 10px;margin-right: 10px;">查看</el-tag>
+              <el-tag v-hasPermi="['gxt:scoresummary:second']" v-if="scope.row.status==1" type="warning" @click="handleReview(scope.row)" style="cursor: pointer;padding: 5px 10px;margin-right: 10px;">处理反馈</el-tag>
+              <el-tag v-hasPermi="['gxt:scoresummary:third']" v-if="scope.row.status==2" type="danger" @click="handleReview(scope.row)" style="cursor: pointer;padding: 5px 10px;">终审</el-tag>
             </template>
           </el-table-column>
         </el-table>
@@ -90,8 +103,14 @@
           <el-col :span="4">
             <div class="statistic-item">
               <div class="statistic-label">
-                说明
-                <span v-if="isRemarksRequired" class="required-mark">*</span>
+                <el-tooltip placement="top" effect="light">
+                  <template #content>
+                    <el-tag style="padding: 5px;" v-if="monthScore.coefficientScore.status==2" type="danger">取消扣分申请已拒绝</el-tag>
+                    <el-tag style="padding: 5px;" v-else-if="monthScore.coefficientScore.status==1" type="success">取消扣分申请已通过</el-tag>
+                    <el-tag style="padding: 5px;" v-else type="primary">全组扣分未处理</el-tag>
+                  </template>
+                  <span style="cursor: pointer;">说明<span v-if="isRemarksRequired" class="required-mark">*</span></span>
+                </el-tooltip>
               </div>
               <el-input 
                 v-model="maintenanceOrderStats.explainCode" 
@@ -261,12 +280,44 @@
         </el-table>
       </div>
     </el-card>
+
+    <el-card v-if="!isList && !isFirst" class="card-form" shadow="hover">
+      <div slot="header" class="clearfix">
+        <el-tooltip placement="top" effect="light">
+          <template #content>
+            <el-tag style="padding: 5px;" v-if="monthScore.coefficientScore.status==2" type="danger">取消扣分申请已拒绝</el-tag>
+            <el-tag style="padding: 5px;" v-else-if="monthScore.coefficientScore.status==1" type="success">取消扣分申请已通过</el-tag>
+            <el-tag style="padding: 5px;" v-else type="primary">全组扣分未处理</el-tag>
+          </template>
+          <span style="font-weight: bold;margin-right: 20px;">评分更改说明</span>
+        </el-tooltip>
+      </div>
+      <div class="form-content">
+        <el-form style="margin-top: 20px;">
+          <el-form-item>
+            <el-input
+              type="textarea"
+              style="width: 100%"
+              :rows="4"
+              placeholder="请输入评分更改的详细说明"
+              v-model="monthScore.feedbackContent"
+              maxlength="200"
+              readonly
+              show-word-limit>
+            </el-input>
+          </el-form-item>
+        </el-form>
+      </div>
+    </el-card>
     
     <!-- 底部按钮 -->
     <div v-if="!isList" class="button-group">
-      <el-button @click="handleCancel">取消</el-button>
-      <el-button @click="handleFeedback">反馈</el-button>
-      <el-button @click="handleSubmit">提交评分</el-button>
+      <el-button v-hasPermi="['gxt:scoresummary:second','gxt:scoresummary:third']" @click="handleCancel">返回</el-button>
+      <el-button v-hasPermi="['gxt:scoresummary:first']" v-if="monthScore.status==0" @click="handleFeedback">反馈</el-button>
+      <el-button v-hasPermi="['gxt:scoresummary:first']" v-if="monthScore.status==0" @click="handleSubmit">提交评分</el-button>
+      <el-button v-hasPermi="['gxt:scoresummary:second']" v-if="monthScore.status==1" @click="agreeFeedBack">取消全组扣分</el-button>
+      <el-button v-hasPermi="['gxt:scoresummary:second']" v-if="monthScore.status==1" @click="againstFeedBack">拒绝取消扣分</el-button>
+      <el-button v-hasPermi="['gxt:scoresummary:third']" v-if="monthScore.status==2" @click="submitCoefficient">提交本月系数</el-button>
     </div>
   </div>
   </div>
@@ -320,7 +371,7 @@ export default {
       isInfo:false,
       monthScore: {
         status: 0,
-        deptId: null,
+        deptId: 0,
         feedbackContent: '' // 添加feedbackContent属性
       },
       selectedMonth: null, // 默认选中的月份
@@ -358,7 +409,7 @@ export default {
     }
   },
   created() {
-    this.initMonthOptions();
+    this.initMonthOptions(0,null);
     this.checkPermissions();
     this.initDict();
   },
@@ -386,11 +437,12 @@ export default {
         this.maintenanceOrderStats.groupDeduction = 0; // 或设为 0
       }
     },
-    // 处理审核点击事件
     handleReview(row) {
-      console.log('审核按钮被点击,行数据:', row);
-      // 在这里添加审核操作的逻辑
-      this.$message.success('审核功能待实现,选中行的部门为: ' + row.department);
+      this.isList = false;
+      this.monthScore.id=row.id;
+      this.monthScore.status = row.status;
+      this.initMonthOptions(row.deptId);
+      this.checkPermissions();
     },
     // 根据inspectionTypeId获取inspectionType标签
     getInspectionTypeLabel(inspectionTypeId) {
@@ -416,17 +468,21 @@ export default {
       }
     },
     // 初始化月份选项
-    initMonthOptions() {
+    initMonthOptions(param,monthParam) {
       // 从后端接口获取月份选项数据
-      getSummaryMonths(0).then(response => {
+      getSummaryMonths(param).then(response => {
         if (response.code === 200) {
           this.monthOptions = response.dictList || [];
           
           // 如果有月份选项数据,设置默认选中第一个
           if (this.monthOptions.length > 0) {
-            this.selectedMonth = this.monthOptions[0].value;
+            if(monthParam && monthParam!=null) {
+              this.selectedMonth = monthParam;
+            }else{
+              this.selectedMonth = this.monthOptions[0].value;
+            }
             // 获取默认月份的数据
-            this.fetchScoreSummaryData(this.selectedMonth);
+            this.fetchScoreSummaryData(this.selectedMonth,param);
           }
         } else {
           console.error('获取月份选项数据失败:', response.msg);
@@ -441,19 +497,31 @@ export default {
     },
     
     // 获取月度工分汇总数据
-    fetchScoreSummaryData(monthPeriod) {
+    fetchScoreSummaryData(monthPeriod,deptParam) {
       if(this.isList) {
-        if(this.statusFilter==1 && checkPermi(['gxt:scoresummary:second'])) {
-          this.queryParams.status = 1;
-        }else if (this.statusFilter==1 && checkPermi(['gxt:scoresummary:third'])) {
-          this.queryParams.status = 2;
+        if(this.statusFilter && this.statusFilter==1) {
+          if(checkPermi(['gxt:scoresummary:second']) && checkPermi(['gxt:scoresummary:third'])) {
+            this.queryParams.status = null;
+            this.queryParams.statusList = '1,2';
+          }else if (checkPermi(['gxt:scoresummary:second'])) {
+            this.queryParams.status = 1;
+            this.queryParams.statusList = null;
+          }else if (checkPermi(['gxt:scoresummary:third'])) {
+            this.queryParams.status = 2;
+            this.queryParams.statusList = null;
+          }else{
+            this.queryParams.status = null;
+            this.queryParams.statusList = null;
+          }
         }else{
           this.queryParams.status = null;
+          this.queryParams.statusList = null;
         }
-        console.log(this.queryParams);
+        // console.log(this.queryParams);
         getMonthScoreList(this.queryParams).then(response => {
           if (response.code === 200) {
             this.departmentStats = response.monthScoreList;
+            // console.log(this.departmentStats);
           }else{
             this.departmentStats = [];
           }
@@ -466,11 +534,11 @@ export default {
       // 根据权限设置rtType参数
       const rtType = this.isInfo ? 1 : 0;
       
-      getScoreSummary(monthPeriod, rtType).then(response => {
+      getScoreSummary(monthPeriod, rtType, deptParam).then(response => {
         if (response.code === 200 && response.monthScore) {
           const monthScoreGet = response.monthScore;
           this.monthScore = monthScoreGet;
-          console.log(monthScoreGet);
+          // console.log(monthScoreGet);
           
           // 设置本月维保工单统计数据
           if (monthScoreGet.coefficientScore) {
@@ -517,35 +585,46 @@ export default {
     
     // 处理月份变化
     handleMonthChange(value) {
-      console.log('选择的月份:', value);
+      // console.log('选择的月份:', value);
       // 获取选择月份的数据
-      this.fetchScoreSummaryData(value);
+      this.fetchScoreSummaryData(value,this.monthScore.deptId);
+    },
+
+    addMonthScore() {
+      // console.log('提交上月评分按钮被点击')
+      this.isList = false;
+      this.initMonthOptions(0,null);
+      this.checkPermissions();
     },
     
     // 处理取消按钮点击事件
     handleCancel() {
-      console.log('取消按钮被点击')
+      // console.log('返回按钮被点击')
+      this.isList = true;
+      this.fetchScoreSummaryData(this.selectedMonth,this.monthScore.deptId);
       // 在这里添加取消操作的逻辑
     },
     
     // 处理反馈按钮点击事件
     handleFeedback() {
-      console.log('反馈按钮被点击')
+      // console.log('反馈按钮被点击')
       // 只有当isFirst为true时才显示弹窗
-      if (this.isFirst) {
-        const planned = parseInt(this.maintenanceOrderStats.plannedCount) || 0;
-        const actual = parseInt(this.maintenanceOrderStats.actualCount) || 0;
-        if(actual < planned && this.maintenanceOrderStats.explainCode=='') {
-          this.$message.warning('请输入全组扣分说明');
-          return;
-        }
-        this.feedbackDialogVisible = true;
+      const planned = parseInt(this.maintenanceOrderStats.plannedCount) || 0;
+      const actual = parseInt(this.maintenanceOrderStats.actualCount) || 0;
+      if(actual < planned && this.maintenanceOrderStats.explainCode=='') {
+        this.$message.warning('请输入全组扣分说明');
+        return;
       }
+      this.feedbackDialogVisible = true;
     },
     
     // 处理提交评分按钮点击事件
     handleSubmit() {
-      console.log('提交评分按钮被点击')
+      // console.log('提交评分按钮被点击')
+      if(this.monthScore.status != 0) {
+        this.$message.warning('请勿重复提交评分!');
+        return;
+      }
       // 在这里添加提交评分操作的逻辑
       this.monthScore.previousStatus = this.monthScore.status;
       this.monthScore.status = 2;
@@ -554,7 +633,7 @@ export default {
         if (response.code === 200) {
           alert('评分提交成功!');
           this.checkPermissions();
-          this.fetchScoreSummaryData(this.selectedMonth);
+          this.fetchScoreSummaryData(this.selectedMonth,this.monthScore.deptId);
         } else {
           alert(response.msg)
         }
@@ -563,6 +642,80 @@ export default {
         alert('评分提交失败,请查看控制台错误信息')
       })
     },
+
+    agreeFeedBack() {
+      // console.log('通过反馈按钮被点击')
+      if(this.monthScore.status != 1) {
+        this.$message.warning('反馈已审核,请勿重复操作!');
+        return;
+      }
+      // 在这里添加提交评分操作的逻辑
+      this.monthScore.previousStatus = this.monthScore.status;
+      this.monthScore.status = 2;
+      this.maintenanceOrderStats.status = 1;
+      this.monthScore.coefficientScore = this.maintenanceOrderStats;
+      submitMonthScore(this.monthScore).then(response => {
+        if (response.code === 200) {
+          alert('取消全组扣分成功!');
+          this.checkPermissions();
+          this.fetchScoreSummaryData(this.selectedMonth,this.monthScore.deptId);
+        } else {
+          alert(response.msg)
+        }
+      }).catch(error => {
+        console.error('审核提交失败:', error)
+        alert('审核提交失败,请查看控制台错误信息')
+      })
+    },
+
+    againstFeedBack() {
+      // console.log('不通过反馈按钮被点击')
+      if(this.monthScore.status != 1) {
+        this.$message.warning('反馈已审核,请勿重复操作!');
+        return;
+      }
+      // 在这里添加提交评分操作的逻辑
+      this.monthScore.previousStatus = this.monthScore.status;
+      this.monthScore.status = 2;
+      this.maintenanceOrderStats.status = 2;
+      this.monthScore.coefficientScore = this.maintenanceOrderStats;
+      submitMonthScore(this.monthScore).then(response => {
+        if (response.code === 200) {
+          alert('审核提交成功!');
+          this.checkPermissions();
+          this.fetchScoreSummaryData(this.selectedMonth,this.monthScore.deptId);
+        } else {
+          alert(response.msg)
+        }
+      }).catch(error => {
+        console.error('审核提交失败:', error)
+        alert('审核提交失败,请查看控制台错误信息')
+      })
+    },
+
+    submitCoefficient() {
+      // console.log('主任提交本月系数按钮被点击')
+      if(this.monthScore.status != 2) {
+        this.$message.warning('系数已提交,请勿重复操作!');
+        return;
+      }
+      // 在这里添加提交评分操作的逻辑
+      this.monthScore.previousStatus = this.monthScore.status;
+      this.monthScore.status = 3;
+      this.monthScore.coefficientScore = this.maintenanceOrderStats;
+      submitMonthScore(this.monthScore).then(response => {
+        if (response.code === 200) {
+          alert('系数提交成功!');
+          this.checkPermissions();
+          this.fetchScoreSummaryData(this.selectedMonth,this.monthScore.deptId);
+        } else {
+          alert(response.msg)
+        }
+      }).catch(error => {
+        console.error('系数提交失败:', error)
+        alert('系数提交失败,请查看控制台错误信息')
+      })
+    },
     
     // 初始化默认月份选项(原有逻辑)
     initDefaultMonthOptions() {
@@ -591,7 +744,7 @@ export default {
       this.selectedMonth = `${defaultYear}-${defaultMonth}`;
       
       // 获取默认月份的数据
-      this.fetchScoreSummaryData(this.selectedMonth);
+      this.fetchScoreSummaryData(this.selectedMonth,this.monthScore.deptId);
     },
     
     // 检查权限
@@ -600,9 +753,10 @@ export default {
       this.isSecond = checkPermi(['gxt:scoresummary:second']) && this.monthScore.status==1;
       this.isThird = checkPermi(['gxt:scoresummary:third']) && this.monthScore.status==2;
       this.isInfo = checkPermi(['gxt:scoresummary:first']) || checkPermi(['gxt:scoresummary:second']) || checkPermi(['gxt:scoresummary:third']);
-      console.log(this.isFirst);
-      console.log(this.isSecond);
-      console.log(this.isThird);
+      // console.log(this.isFirst);
+      // console.log(this.isSecond);
+      // console.log(this.isThird);
+      // console.log(this.monthScore.status);
     },
     
     // 处理反馈弹窗关闭
@@ -621,14 +775,16 @@ export default {
     
     // 处理反馈弹窗提交按钮
     handleFeedbackSubmit() {
+      if(this.monthScore.status != 0) {
+        this.$message.warning('请勿重复提交反馈!');
+        return;
+      }
       // 添加验证逻辑,确保用户输入了反馈内容
       if (!this.monthScore.feedbackContent || this.monthScore.feedbackContent.trim() === '') {
         this.$message.warning('请输入评分更改说明');
         return;
       }
-      
-      // 这里可以添加提交反馈的逻辑
-      console.log('提交反馈:', this.monthScore.feedbackContent);
+      // console.log('提交反馈:', this.monthScore.feedbackContent);
       this.monthScore.previousStatus = this.monthScore.status;
       this.monthScore.status = 1;
       this.monthScore.coefficientScore = this.maintenanceOrderStats;
@@ -636,7 +792,7 @@ export default {
         if (response.code === 200) {
           alert('反馈提交成功!');
           this.checkPermissions();
-          this.fetchScoreSummaryData(this.selectedMonth);
+          this.fetchScoreSummaryData(this.selectedMonth,this.monthScore.deptId);
         } else {
           alert(response.msg)
         }
@@ -650,7 +806,8 @@ export default {
     
     // 处理状态筛选变化
     handleStatusChange(value) {
-      console.log('状态筛选变化:', value);
+      // console.log('状态筛选变化:', value);
+      this.fetchScoreSummaryData(this.selectedMonth,this.monthScore.deptId);
       // 在这里可以添加根据状态筛选数据的逻辑
       // 例如:重新加载部门统计数据或其他相关操作
     }
@@ -727,6 +884,7 @@ export default {
   gap: 10px;
   margin-top: 20px;
   margin-right: 20px;
+  margin-bottom: 10px;
 }
 
 .button-group .el-button {