| | |
| | | <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" |
| | |
| | | >导出所有数据</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">累计扣减金额<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-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">累计扣减金额<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" |
| | |
| | | <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> |
| | |
| | | :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 |
| | |
| | | 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> |
| | | |
| | |
| | | <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() { |
| | |
| | | this.getList(); |
| | | }, |
| | | methods: { |
| | | checkPermi, |
| | | checkRole, |
| | | frequencyFormatter(row) { |
| | | if (row.frequency === "1") { |
| | | return "月度考核" |
| | |
| | | // }) |
| | | }, |
| | | 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() { |
| | |
| | | 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 => { |
| | |
| | | |
| | | }, |
| | | /** 导出按钮操作 */ |
| | | 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) { |
| | |
| | | }); |
| | | 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() { |
| | | |