From 09f0861e61e69e2d818eafc7b9edbd17cf0822d4 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 06 十一月 2025 17:20:02 +0800
Subject: [PATCH] 页面优化以及扣分详情导出
---
src/views/system/contract/report/index.vue | 156 +++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 117 insertions(+), 39 deletions(-)
diff --git a/src/views/system/contract/report/index.vue b/src/views/system/contract/report/index.vue
index df97728..772af3f 100644
--- a/src/views/system/contract/report/index.vue
+++ b/src/views/system/contract/report/index.vue
@@ -1,7 +1,7 @@
<template>
<div class="app-container">
- <el-row style="margin-left: 10px" :gutter="10" class="mb8">
+ <!-- <el-row style="margin-left: 10px" :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
@@ -12,23 +12,36 @@
>瀵煎嚭鎵�鏈夋暟鎹�</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row> -->
+ <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-if="item.latestMonth" class="time">{{ item.whichYear }}骞磠{ item.latestMonth }}鏈�</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-card class="box-card" v-for="(item) in checkResultList">
- <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" 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-empty v-else description="鏆傛棤鏁版嵁"></el-empty>
<pagination
v-show="total>0"
@@ -41,8 +54,8 @@
<el-dialog :title="detailTitle" :visible.sync="detailOpen" width="760px" append-to-body>
<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" style="display: flex; margin-right: 50px;">
- <div style="line-height: 16px;margin-right: 10px;display: flex; align-items: center">{{ ruleItem.scoreCondition }}鍒�</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;max-width: 300px;word-wrap:break-word;word-break:normal;color: #2273b9">{{ ruleItem.description }}</div>
</div>
</div>
@@ -73,16 +86,20 @@
: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>-->
+ <span> {{ scope.row.whichYear +'骞�'+ scope.row.whichMonth+ '鏈�'}}</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
@@ -91,19 +108,51 @@
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>
<div slot="footer" class="dialog-footer">
- <el-button type="primary" @click="submitForm">淇� 瀛�</el-button>
<el-button @click="cancel">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitForm" v-hasPermi="['system:calculate:report:backfill']">鏍哥畻</el-button>
</div>
</el-dialog>
@@ -112,16 +161,16 @@
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
</el-form>
<div slot="footer" class="dialog-footer">
- <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
<el-button @click="cancel">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
</div>
</el-dialog>
</div>
</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() {
@@ -171,6 +220,8 @@
this.getList();
},
methods: {
+ checkPermi,
+ checkRole,
frequencyFormatter(row) {
if (row.frequency === "1") {
return "鏈堝害鑰冩牳"
@@ -238,23 +289,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() {
@@ -271,7 +329,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 => {
@@ -287,10 +345,12 @@
},
/** 瀵煎嚭鎸夐挳鎿嶄綔 */
- handleExport() {
- this.download('system/checkResult/export', {
- ...this.queryParams
- }, `checkResult_${new Date().getTime()}.xlsx`)
+ handleExport(whichYear,whichMonth,whichDay,contractId,contractName) {
+
+ const name = contractName+whichYear+'骞�'+(whichMonth==null? '': whichMonth+'鏈�')+(whichDay==null? '': whichDay+'鏃�')+'杩愮淮鏍哥畻.xlsx'
+ this.download('calculate-report/export', {
+ ...{ 'whichYear': whichYear,'whichMonth': whichMonth,'whichDay':whichDay, 'contractId': contractId},
+ }, `${name}`)
},
/** 鍚堣琛� */
getSummaries(param) {
@@ -324,11 +384,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