| | |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-form-item label="绩效类型"> |
| | | <el-radio-group v-model="queryParams.pabonustype"> |
| | | <el-radio v-for="item in reporttype" :key="item.value" :label="item.value">{{ item.label }}</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-col :span="10"> |
| | | <el-form-item label="绩效人员" prop="pauserno"> |
| | | <el-input v-model="queryParams.pausername" placeholder="请输入姓名" clearable size="small" |
| | | @keyup.enter.native="handleQuery" /> |
| | |
| | | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
| | | </el-row> |
| | | |
| | | <!--<el-table v-loading="loading" border :data="donatebaseinfoList"> --> |
| | | <el-table v-loading="loading" :data="jxidata" ref="table" border max-height="700" highlight-current-row |
| | | :summary-method="getSummaries" show-summary> |
| | | <el-table-column label="序号" align="center" prop="id" width="100"> |
| | | </el-table-column> |
| | | <el-table-column label="统计月份" align="center" prop="bonusmonth" /> |
| | | <el-table-column label="科室业务组" align="center" prop="deptName"> </el-table-column> |
| | | <el-table-column label="绩效人员/医院" align="center" prop="beneficiaryname" /> |
| | | <el-table-column label="绩效金额" align="center" prop="amount" :formatter="amountFormatter" /> |
| | | <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="mini" type="text" icon="el-icon-edit">明细</el-button> |
| | | </template> |
| | | </el-table-column> --> |
| | | </el-table> |
| | | <el-tabs v-model="activeTab"> |
| | | <el-tab-pane label="按业务组" name="dept"> |
| | | <el-table v-loading="loading" :data="deptData" ref="deptTable" border max-height="700" |
| | | highlight-current-row :summary-method="getDeptSummaries" show-summary> |
| | | <el-table-column label="序号" align="center" prop="id" width="80" /> |
| | | <el-table-column label="业务组" align="center" prop="deptname" /> |
| | | <el-table-column label="绩效金额" align="center" prop="amount" :formatter="amountFormatter" /> |
| | | <el-table-column label="月度绩效" align="center" prop="mamount" :formatter="amountFormatter" /> |
| | | <el-table-column label="季度绩效" align="center" prop="samount" :formatter="amountFormatter" /> |
| | | <el-table-column label="年度绩效" align="center" prop="yamount" :formatter="amountFormatter" /> |
| | | </el-table> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="按人员" name="person"> |
| | | <el-table v-loading="loading" :data="jxidata" ref="personTable" border max-height="700" |
| | | highlight-current-row :summary-method="getSummaries" show-summary> |
| | | <el-table-column label="序号" align="center" prop="id" width="80" /> |
| | | <el-table-column label="业务组" align="center" prop="deptName" /> |
| | | <el-table-column label="绩效人员/医院" align="center" prop="beneficiaryname" /> |
| | | <el-table-column label="绩效金额" align="center" prop="amount" :formatter="amountFormatter" /> |
| | | <el-table-column label="月度绩效" align="center" prop="mamount" :formatter="amountFormatter" /> |
| | | <el-table-column label="季度绩效" align="center" prop="samount" :formatter="amountFormatter" /> |
| | | <el-table-column label="年度绩效" align="center" prop="yamount" :formatter="amountFormatter" /> |
| | | <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="mini" type="text" icon="el-icon-edit">明细</el-button> |
| | | </template> |
| | | </el-table-column> --> |
| | | </el-table> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | |
| | | <div style="margin: 10px;text-align: right;"> |
| | | <div> |
| | | 共 <span style="color:#1890FF ;">{{ total }}</span> 条数据 |
| | | 共 <span style="color:#1890FF ;">{{ tableTotal }}</span> 条数据 |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | listbxiaostatistics, |
| | | listjixstatistics, |
| | | listanlstatistics, |
| | | exportPerformanceStatistics |
| | | exportPerformanceStatistics, |
| | | exportPerformanceDeptStatistics |
| | | } from "@/api/project/statistics"; |
| | | |
| | | import { listUser } from "@/api/project/organization"; |
| | |
| | | |
| | | selecttime: "", |
| | | reportervalue: "", |
| | | reporttype: [ |
| | | { label: "全部", value: "0" }, |
| | | { label: "月度", value: "68" }, |
| | | { label: "季度", value: "69" }, |
| | | { label: "年度", value: "70" } |
| | | ], |
| | | //省市区 |
| | | //默认值设置,可为空 |
| | | searchAddress: { |
| | |
| | | donatebaseinfoList: [], |
| | | // 捐献基础表格数据 |
| | | jxidata: [], |
| | | // 当前页签:dept=按业务组,person=按人员 |
| | | activeTab: "dept", |
| | | // 按业务组聚合数据 |
| | | deptData: [], |
| | | // 弹出层标题 |
| | | title: "", |
| | | // 是否显示弹出层 |
| | |
| | | daterangeReporttime: [], |
| | | // 查询参数 |
| | | queryParams: { |
| | | pabonustype: "0", |
| | | pabegtime: null, |
| | | paendtime: null, |
| | | pausername: "", |
| | |
| | | }; |
| | | }, |
| | | //监听属性 类似于data概念 |
| | | computed: {}, |
| | | computed: { |
| | | tableTotal() { |
| | | return this.activeTab === "dept" ? this.deptData.length : this.jxidata.length; |
| | | } |
| | | }, |
| | | activated() { }, |
| | | mounted() { }, |
| | | |
| | |
| | | return Arr; |
| | | }, |
| | | |
| | | /** 组装查询参数:未选择统计日期时查全部,绩效类型为空按全部 */ |
| | | /** 组装查询参数:未选择统计日期时查全部 */ |
| | | buildQueryParams() { |
| | | const query = { ...this.queryParams }; |
| | | if (!query.pabegtime || !query.paendtime) { |
| | | // 新 SP 默认取近 6 个月,而绩效 jxrq 数据集中在 2023-08~2024-01,默认会查不到 |
| | | query.pabegtime = "2000-01-01 00:00:00"; |
| | | query.paendtime = "2999-12-31 23:59:59"; |
| | | } |
| | | if (!query.pabonustype) { |
| | | query.pabonustype = "0"; |
| | | } |
| | | return query; |
| | | }, |
| | |
| | | $obj.id = $index + 1; |
| | | }); |
| | | this.total = res.total; |
| | | this.buildDeptData(); |
| | | }); |
| | | }, |
| | | /** 按业务组聚合:绩效金额/月度/季度/年度分别求和 */ |
| | | buildDeptData() { |
| | | const map = new Map(); |
| | | this.jxidata.forEach(row => { |
| | | const key = row.deptId || row.deptName || "未分组"; |
| | | if (!map.has(key)) { |
| | | map.set(key, { |
| | | deptname: row.deptName || "未分组", |
| | | amount: 0, |
| | | mamount: 0, |
| | | samount: 0, |
| | | yamount: 0 |
| | | }); |
| | | } |
| | | const item = map.get(key); |
| | | item.amount += Number(row.amount) || 0; |
| | | item.mamount += Number(row.mamount) || 0; |
| | | item.samount += Number(row.samount) || 0; |
| | | item.yamount += Number(row.yamount) || 0; |
| | | }); |
| | | this.deptData = Array.from(map.values()).map((item, index) => { |
| | | item.id = index + 1; |
| | | return item; |
| | | }); |
| | | }, |
| | | /** 导出按钮操作 */ |
| | | handleExport() { |
| | | const queryParams = this.buildQueryParams(); |
| | | const exportApi = |
| | | this.activeTab === "dept" |
| | | ? exportPerformanceDeptStatistics |
| | | : exportPerformanceStatistics; |
| | | this.$modal |
| | | .confirm("是否确认导出当前筛选条件下的绩效统计数据?") |
| | | .confirm("是否确认导出当前列表的绩效统计数据?") |
| | | .then(() => { |
| | | this.exportLoading = true; |
| | | return exportPerformanceStatistics(queryParams); |
| | | return exportApi(queryParams); |
| | | }) |
| | | .then(response => { |
| | | this.$download.name(response.msg); |
| | |
| | | |
| | | |
| | | this.queryParams = { |
| | | pabonustype: "0", |
| | | pabegtime: null, |
| | | paendtime: null, |
| | | pausername: "", |
| | |
| | | getSummaries(param) { |
| | | const { columns, data } = param; |
| | | const sums = []; |
| | | var columnnames = ["applymonth", "deptmentName", "username", "deptName", "beneficiaryname"]; |
| | | var columnnames = ["deptName", "beneficiaryname"]; |
| | | columns.forEach((column, index) => { |
| | | if (index === 0) { |
| | | sums[index] = "合计"; |
| | |
| | | } |
| | | }); |
| | | return sums; |
| | | }, |
| | | /** 按业务组表格合计 */ |
| | | getDeptSummaries(param) { |
| | | const { columns, data } = param; |
| | | const sums = []; |
| | | columns.forEach((column, index) => { |
| | | if (index === 0) { |
| | | sums[index] = "合计"; |
| | | return; |
| | | } |
| | | if (column.property === "deptname") { |
| | | return; |
| | | } |
| | | const total = data.reduce( |
| | | (prev, item) => prev + (Number(item[column.property]) || 0), |
| | | 0 |
| | | ); |
| | | sums[index] = total === 0 ? "" : Number(total).toFixed(2); |
| | | }); |
| | | return sums; |
| | | } |
| | | }, |
| | | |