src/views/system/contract/report/index.vue
@@ -25,17 +25,17 @@
      >
      <el-card class="box-card" >
        <div slot="header" class="clearfix">
          <span>{{ item.unitName +item.whichYear+"年核算报告" }}</span>
          <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">累计扣减金额<span class="time">{{ item.deductMoney ? item.deductMoney:0}}</span></div>
        <div class="text item">最近核算月份
          <span v-if="item.latestTime" class="time">{{ new Date(item.latestTime).getFullYear() }}年{{ new Date(item.latestTime).getMonth()+1 }}月</span>
          <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)" v-hasPermi="['system:calculate:report:export']">导出</el-button>
        <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>
@@ -85,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
@@ -114,7 +117,7 @@
          </el-table-column>
          <el-table-column
            prop="status"
            label="发布状态"
            label="操作"
            width="150"
            v-if="checkRole(['admin'])"
          >
@@ -122,7 +125,7 @@
              <el-button
                size="small"
                type="text"
                v-if="scope.row.status === 'published'"
                v-if="scope.row.status === 'PUBLISHED'"
                @click="handleDetailPublish(scope.row)"
              >
                取消发布
@@ -134,6 +137,13 @@
                @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>
@@ -277,14 +287,14 @@
      // })
    },
    handleDetail(row) {
      getCalculateReportById(row.contractId,row.whichYear).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' ? '取消发布' : '发布';
      let text = row.status === 'PUBLISHED' ? '取消发布' : '发布';
      this.$modal.confirm('确认要【' + text + "】【" +  row.unitName +row.whichYear+"年】" + '的核算报告吗?').then(function() {
        // return publishCheckResult(ids);
      }).then(() => {
@@ -296,8 +306,8 @@
    },
    handleDetailPublish(row){
      let text = row.status === 'published' ? '取消发布' : '发布';
      row.status = row.status === 'published' ? 'not_publish' : 'published'
      let text = row.status === 'PUBLISHED' ? '取消发布' : '发布';
      row.status = row.status === 'PUBLISHED' ? 'UNPUBLISHED' : 'PUBLISHED'
      updatePublishStatusById(row.id,row.status).then(res => {
        this.$modal.msgSuccess(text + "成功");
      })
@@ -333,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) {
@@ -370,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() {