From 3c6bdb6f439ff7af04765259fd6a91b6d201d095 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 19 六月 2025 17:12:25 +0800
Subject: [PATCH] 工单,数据中心用户查看数据的权限,合同考核每日,以及导出每日和按月

---
 src/views/system/contract/report/index.vue |  145 ++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 110 insertions(+), 35 deletions(-)

diff --git a/src/views/system/contract/report/index.vue b/src/views/system/contract/report/index.vue
index 112a1e2..eea5e8e 100644
--- a/src/views/system/contract/report/index.vue
+++ b/src/views/system/contract/report/index.vue
@@ -13,23 +13,34 @@
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row> -->
-
-    <el-card class="box-card" v-for="item in checkResultList" :key="item.id">
-      <div slot="header" class="clearfix">
-        <span>{{ item.unitName }}</span>
-        <el-button style="float: right; padding: 3px 0" type="text" @click="handleDetail(item)">鏍哥畻</el-button>
-      </div>
-      <div class="text item">鍚堝悓<span class="time">{{ item.contractName }}</span></div>
-      <div class="text item">鏈�杩戞墸鍑忛噾棰�<span class="time">{{ item.latestDeductMoney }}</span></div>
-      <div class="text item">绱鎵e噺閲戦<span class="time">{{ item.deductMoney }}</span></div>
-      <div class="text item">鏈�杩戞牳绠楁湀浠�
-        <span v-if="item.latestTime" class="time">{{ new Date(item.latestTime).getFullYear() }}骞磠{ new Date(item.latestTime).getMonth() }}鏈�</span>
-        <span v-else class="time">鏆傛棤</span>
-      </div>
-      <el-button size="small" type="primary" round style="float: right;margin-left: 18px;" @click="handleExport(item)" v-hasPermi="['system:calculate:report:export']">瀵煎嚭</el-button>
-      <el-button size="small" round style="float: right;margin-bottom: 18px;" @click="handlePublish(item)" v-if="item.status === 'not_publish'" :disabled="!item.canPublish" v-hasPermi="['system:calculate:report:status']">纭鍙戝竷</el-button>
-      <el-button size="small" round style="float: right;margin-bottom: 18px;" @click="handlePublish(item)" v-if="item.status === 'published'" v-hasPermi="['system:calculate:report:status']">鍙栨秷鍙戝竷</el-button>
-    </el-card>
+    <el-row v-if="checkResultList && checkResultList.length > 0">
+      <el-col
+        :xl="8"
+        :lg="8"
+        :md="12"
+        :sm="12"
+        :xs="12"
+        v-for="item in checkResultList"
+        :key="item.id"
+      >
+      <el-card class="box-card" >
+        <div slot="header" class="clearfix">
+          <span>{{ item.unitName +item.whichYear+"骞�"+item.whichMonth+"鏈堟牳绠楁姤鍛�" }}</span>
+          <el-button style="float: right; padding: 3px 0" type="text" @click="handleDetail(item)">鏍哥畻</el-button>
+        </div>
+        <div class="text item">鍚堝悓<span class="time">{{ item.contractName }}</span></div>
+        <div class="text item">鏈�杩戞墸鍑忛噾棰�<span class="time">{{ item.latestDeductMoney ?  item.latestDeductMoney:0 }}</span></div>
+        <div class="text item">绱鎵e噺閲戦<span class="time">{{ item.deductMoney ? item.deductMoney:0}}</span></div>
+        <div class="text item">鏈�杩戞牳绠楁湀浠�
+          <span v-if="item.latestMonth" class="time">{{ item.whichYear }}骞磠{ item.latestMonth }}鏈坽{item.latestDay}}鏃�</span>
+          <span v-else class="time">鏆傛棤</span>
+        </div>
+        <el-button size="small" type="primary" round style="float: right;margin-left: 18px;" @click="handleExport(item.whichYear,item.whichMonth,null,item.contractId,item.contractName)" v-hasPermi="['system:calculate:report:export']">瀵煎嚭</el-button>
+        <el-button size="small" round style="float: right;margin-bottom: 18px;" @click="handlePublish(item)"  v-hasPermi="['system:calculate:report:status']">纭鍙戝竷</el-button>
+      </el-card>
+      </el-col>
+    </el-row>
+    <el-empty v-else description="鏆傛棤鏁版嵁"></el-empty>
 
     <pagination
       v-show="total>0"
@@ -43,7 +54,7 @@
       <div style="display: flex; flex-direction: row; width: 100%;margin-bottom: 10px; justify-content: center; align-items: center">
         <div style="line-height: 16px">搴旂敤瑙勫垯锛�</div>
         <div v-for="ruleItem in detail.ruleList" :key="ruleItem.id" style="display: flex; margin-right: 50px;">
-          <div style="line-height: 16px;margin-right: 10px;display: flex; align-items: center">{{ ruleItem.scoreCondition }}鍒�</div>
+          <div style="line-height: 16px;margin-right: 10px;display: flex; align-items: center">{{ ruleItem.scoreCondition }}</div>
           <div style="line-height: 16px;max-width: 300px;word-wrap:break-word;word-break:normal;color: #2273b9">{{ ruleItem.description }}</div>
         </div>
       </div>
@@ -74,16 +85,19 @@
           :summary-method="getSummaries"
           style="width: 100%;text-align:center">
           <el-table-column
-            prop="createTime"
-            label="鏍哥畻鏃ユ湡"
+            prop="whichMonth"
+            label="鏍哥畻鏈堜唤"
             width="180">
+          <template slot-scope="scope">
+            <span> {{ scope.row.whichYear +'骞�'+ scope.row.whichMonth+ '鏈�' + scope.row.whichDay+ '鏃�'}}</span>
+          </template>
           </el-table-column>
           <el-table-column
             prop="score"
             label="鑰冩牳鍒嗘暟"
            >
             <template slot-scope="scope">
-              <el-link @click="toScorePage(scope.row)">{{scope.row.score}}</el-link>
+              <el-link @click="toScorePage(scope.row,detail.unitId)">{{scope.row.score}}</el-link>
             </template>
           </el-table-column>
           <el-table-column
@@ -92,13 +106,45 @@
             width="180">
             <template slot-scope="scope">
               <el-input
-                :disabled="!scope.row.latest"
                 type="number"
                 :precision="2" :step="0.1"
                 :min="0" :max="1000000"
                 v-model="scope.row.deductMoney"
+                :disabled="!checkRole(['admin'])"
                 placeholder="璇疯緭鍏ユ墸鍑忛噾棰�">
               </el-input>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="status"
+            label="鎿嶄綔"
+            width="150"
+            v-if="checkRole(['admin'])"
+          >
+            <template slot-scope="scope">
+              <el-button
+                size="small"
+                type="text"
+                v-if="scope.row.status === 'PUBLISHED'"
+                @click="handleDetailPublish(scope.row)"
+              >
+                鍙栨秷鍙戝竷
+              </el-button>
+              <el-button
+                v-else
+                size="small"
+                type="text"
+                @click="handleDetailPublish(scope.row)"
+                >
+                鍙戝竷
+              </el-button>
+              <el-button
+                size="small"
+                type="text"
+                @click="handleExport(scope.row.whichYear,scope.row.whichMonth,scope.row.whichDay,detail.contractId,detail.contractName)"
+              >
+                瀵煎嚭
+              </el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -121,8 +167,8 @@
 </template>
 
 <script>
-import { getCalculateReports, getCalculateReportById, backfill, updatePublishStatus } from "@/api/platform/calculate-report";
-
+import { getCalculateReports, getCalculateReportById, backfill, updatePublishStatus,updatePublishStatusById } from "@/api/platform/calculate-report";
+import { checkPermi, checkRole } from "@/utils/permission"; // 鏉冮檺鍒ゆ柇鍑芥暟
 export default {
   name: "CheckResult",
   data() {
@@ -172,6 +218,8 @@
     this.getList();
   },
   methods: {
+    checkPermi,
+    checkRole,
     frequencyFormatter(row) {
       if (row.frequency === "1") {
         return "鏈堝害鑰冩牳"
@@ -239,23 +287,30 @@
       // })
     },
     handleDetail(row) {
-      getCalculateReportById(row.id).then(res => {
+      getCalculateReportById(row.contractId,row.whichYear,row.whichMonth).then(res => {
         this.detail = res.data
         this.detailTitle = row.unitName + '鑰冩牳缁撴灉'
         this.detailOpen = true
       })
     },
     handlePublish(row) {
-      let text = row.status === 'published' ? '鍙栨秷鍙戝竷' : '鍙戝竷';
-      this.$modal.confirm('纭瑕併��' + text + "銆戙��" + row.contractName + "銆戙��" + new Date(row.latestTime).getMonth() + "鏈堛��" + '鐨勬牳绠楁姤鍛婂悧锛�').then(function() {
+      let text = row.status === 'PUBLISHED' ? '鍙栨秷鍙戝竷' : '鍙戝竷';
+      this.$modal.confirm('纭瑕併��' + text + "銆戙��" +  row.unitName +row.whichYear+"骞淬��" + '鐨勬牳绠楁姤鍛婂悧锛�').then(function() {
         // return publishCheckResult(ids);
       }).then(() => {
-        updatePublishStatus(row.id).then(res => {
+        updatePublishStatus(row.contractId,row.whichYear).then(res => {
           this.getList();
           this.$modal.msgSuccess(text + "鎴愬姛");
         })
       }).catch(() => {});
 
+    },
+    handleDetailPublish(row){
+      let text = row.status === 'PUBLISHED' ? '鍙栨秷鍙戝竷' : '鍙戝竷';
+      row.status = row.status === 'PUBLISHED' ? 'UNPUBLISHED' : 'PUBLISHED'
+      updatePublishStatusById(row.id,row.status).then(res => {
+        this.$modal.msgSuccess(text + "鎴愬姛");
+      })
     },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
     handleQuery() {
@@ -272,7 +327,7 @@
     submitForm() {
       let data = {
         id: this.detail.id,
-        recordList: this.detail.recordList.filter(item => item.latest)
+        recordList: this.detail.recordList
       }
       if (data.recordList.length > 0) {
         backfill(data).then(res => {
@@ -288,10 +343,12 @@
 
     },
     /** 瀵煎嚭鎸夐挳鎿嶄綔 */
-    handleExport(item) {
+    handleExport(whichYear,whichMonth,whichDay,contractId,contractName) {
+
+      const name = contractName+whichYear+'骞�'+(whichMonth==null? '': whichMonth+'鏈�')+(whichDay==null? '': whichDay+'鏃�')+'杩愮淮鏍哥畻.xlsx'
       this.download('calculate-report/export', {
-        ...{ 'contractId': item.contractId }
-      }, `${item.contractName}杩愮淮鏍哥畻.xlsx`)
+        ...{ 'whichYear': whichYear,'whichMonth': whichMonth,'whichDay':whichDay, 'contractId': contractId},
+      }, `${name}`)
     },
     /** 鍚堣琛� */
     getSummaries(param) {
@@ -325,11 +382,29 @@
       });
       return sums;
     },
-    toScorePage() {
-    // 浣跨敤Vue Router杩涜椤甸潰璺宠浆
-    this.$router.push('/contract/score/index');
+    toScorePage(row,unitId) {
+      // 浣跨敤Vue Router杩涜椤甸潰璺宠浆
+      const { startDate, endDate } = this.getMonthDatesFormatted(row.whichYear, row.whichMonth);
+      const time = [startDate,endDate]
+      this.$router.push({path: '/contract/score', query: {unitId: unitId, time: time}});
     },
+    getMonthDatesFormatted(year, month) {
+      const startDate = new Date(year, month - 1, 1);
+      const endDate = new Date(year, month, 0);
 
+      // 鏍煎紡鍖栨垚 YYYY-MM-DD
+      const formatDate = (date) => {
+        const yyyy = date.getFullYear();
+        const mm = String(date.getMonth() + 1).padStart(2, '0');
+        const dd = String(date.getDate()).padStart(2, '0');
+        return `${yyyy}-${mm}-${dd}`;
+      };
+
+      return {
+        startDate: formatDate(startDate),
+        endDate: formatDate(endDate)
+      };
+    },
     // 鍒犻櫎鎸夐挳
     handleDelete() {
 

--
Gitblit v1.8.0