Merge branch 'master' of http://116.62.18.175:6699/r/~yxh/opo-web
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | // æ¥è¯¢æ¡ä¾å
¨æ¯ |
| | | export function listCasePanorama(query) { |
| | | return request({ |
| | | url: '/project/casePanorama/list', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // å¯¼åºæ¡ä¾å
¨æ¯ |
| | | export function exportCasePanorama(query) { |
| | | return request({ |
| | | url: '/project/casePanorama/export', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // ä¸å¡ç»ä¸æé项 |
| | | export function getCasePanoramaDeptOptions() { |
| | | return request({ |
| | | url: '/project/casePanorama/deptOptions', |
| | | method: 'get' |
| | | }) |
| | | } |
| | |
| | | params: query |
| | | }) |
| | | } |
| | | // å¯¼åºæ¡ä¾ç»è®¡ï¼æä¸å¡ç»ï¼ |
| | | export function exportCaseDeptStatistics(query) { |
| | | return request({ |
| | | url: '/project/spstatcase/exportDept', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // æ¥è¯¢ç»©æç»è®¡ |
| | | export function listjixstatistics(query) { |
| | | return request({ |
| | |
| | | export function exportPerformanceStatistics(query) { |
| | | return request({ |
| | | url: '/project/funddetail/exportBonus', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // 导åºç»©æç»è®¡ï¼æä¸å¡ç»ï¼ |
| | | export function exportPerformanceDeptStatistics(query) { |
| | | return request({ |
| | | url: '/project/funddetail/exportBonusDept', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | |
| | | params: query |
| | | }) |
| | | } |
| | | // 导åºè´¹ç¨ç»è®¡ï¼æä¸å¡ç»ï¼ |
| | | export function exportExpenseDeptStatistics(query) { |
| | | return request({ |
| | | url: '/project/spstatexpense/exportDept', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // æ¥è¯¢æ¶è´¹ç»è®¡ |
| | | export function listsfeistatistics(query) { |
| | | return request({ |
| | |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // å¯¼åºæ¶æ¬¾ç»è®¡ |
| | | export function exportChargeStatistics(query) { |
| | | return request({ |
| | | url: '/project/donorchargeorgan/exportChange', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | |
| | | <!-- --> |
| | | <template> |
| | | <div class="app-container" :donorno="donorno"> |
| | | <el-alert |
| | | v-if="noCostData" |
| | | title="该æ¡ä¾ææ ææ¬æ°æ®" |
| | | type="info" |
| | | :closable="false" |
| | | show-icon |
| | | style="margin-bottom: 10px" |
| | | /> |
| | | <el-table |
| | | v-loading="costLoading" |
| | | border |
| | | class="table-bordered" |
| | | :data="fundList" |
| | | :span-method="objectSpanMethod" |
| | | label-width="96px" |
| | |
| | | organMedicineSupportCostRowIndex: 0, |
| | | //å¨å®è·åææ¯ææ¬åå¹¶è¡æ° |
| | | organMedicineSupportCostRowSpan: 0, |
| | | curdorno: null, |
| | | // ææ¬æç»å è½½ä¸ |
| | | costLoading: false, |
| | | // å½åæ¡ä¾æ¯å¦æ²¡æææ¬æ°æ® |
| | | noCostData: false, |
| | | }; |
| | | }, |
| | | //çå¬å±æ§ 类似äºdataæ¦å¿µ |
| | | computed: {}, |
| | | //çæ§dataä¸çæ°æ®åå |
| | | watch: { |
| | | //çå¬donornoåçæ¹åæ¶è§¦å |
| | | curdorno(newVal) { |
| | | this.curdorno = newVal; |
| | | //alert(this.donorno); |
| | | //console.log("çå¬å°æç®ç¼å·åå" + this.curdorno); |
| | | this.getCostData(this.curdorno); |
| | | // ç嬿¡ä¾ ID ååï¼ç«å³å è½½ææ¬æç» |
| | | donorno: { |
| | | immediate: true, |
| | | handler(val) { |
| | | this.getCostData(val); |
| | | }, |
| | | }, |
| | | }, |
| | | //æ¹æ³éå |
| | |
| | | |
| | | //è°ç¨æ¥å£è·åææ¬æ°æ® |
| | | getCostData(donorno) { |
| | | getDonationCost(donorno).then((res) => { |
| | | if (res.code == 200) { |
| | | let resList = res.data; |
| | | var arr = []; |
| | | for (var i in resList) { |
| | | arr.push(resList[i]); |
| | | if (donorno === null || donorno === undefined || donorno === "") { |
| | | this.costLoading = false; |
| | | this.noCostData = false; |
| | | return; |
| | | } |
| | | this.costLoading = true; |
| | | this.noCostData = false; |
| | | this.resetCostAmounts(); |
| | | getDonationCost(donorno) |
| | | .then((res) => { |
| | | if (res.code == 200) { |
| | | const data = res.data || {}; |
| | | const before = []; |
| | | for (let i = 1; i <= 52; i++) { |
| | | before.push(data["fy" + i]); |
| | | } |
| | | before.push(data.fyhj); |
| | | const after = []; |
| | | for (let i = 1; i <= 52; i++) { |
| | | after.push(data["sh" + i]); |
| | | } |
| | | after.push(data.shhj); |
| | | |
| | | let hasData = false; |
| | | before.forEach((value, index) => { |
| | | const num = Number(value); |
| | | if (!Number.isNaN(num) && num !== 0) { |
| | | this.fundList[index].amount = num.toFixed(2); |
| | | hasData = true; |
| | | } |
| | | }); |
| | | after.forEach((value, index) => { |
| | | const num = Number(value); |
| | | if (!Number.isNaN(num) && num !== 0) { |
| | | this.fundList[index].amounted = num.toFixed(2); |
| | | hasData = true; |
| | | } |
| | | }); |
| | | this.noCostData = !hasData; |
| | | } else { |
| | | this.$modal.msgError(res.msg || "è·åææ¬æç»å¤±è´¥"); |
| | | } |
| | | |
| | | let arr1 = arr.slice(0, 53); |
| | | arr1.forEach((item, i) => { |
| | | if (item !== 0) { |
| | | this.fundList[i].amount = item.toFixed(2); |
| | | } |
| | | }); |
| | | |
| | | arr1 = arr.slice(53, 106); |
| | | arr1.forEach((item, i) => { |
| | | if (item !== 0) { |
| | | this.fundList[i].amounted = item.toFixed(2); |
| | | } |
| | | }); |
| | | |
| | | // this.fundList = resList |
| | | // for (let i = 0; i < resList.length; i++) { |
| | | // let itemIndex = this.fundList.findIndex( |
| | | // (item) => resList[i].itemname == item.itemname |
| | | // ); |
| | | // console.log(itemIndex); |
| | | // if (itemIndex > -1) { |
| | | // if(resList[i].amount != "0.00"){ |
| | | // this.fundList[itemIndex].amount = |
| | | // resList[i].amount; |
| | | // }else{ |
| | | // this.fundList[itemIndex].amount = |
| | | // "" |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | | this.costLoading = false; |
| | | }) |
| | | .catch(() => { |
| | | this.costLoading = false; |
| | | this.$modal.msgError("è·åææ¬æç»å¤±è´¥"); |
| | | }); |
| | | }, |
| | | resetCostAmounts() { |
| | | this.fundList.forEach((item) => { |
| | | item.amount = ""; |
| | | item.amounted = ""; |
| | | }); |
| | | }, |
| | | }, |
| | | //çå½å¨æ - åå»ºå®æï¼å¯ä»¥è®¿é®å½åthiså®ä¾ï¼ |
| | | created() { |
| | | this.calculateRowSpanConfig(); |
| | | }, |
| | | //çå½å¨æ - æè½½å®æï¼å¯ä»¥è®¿é®DOMå
ç´ ï¼ |
| | | mounted() { |
| | | this.curdorno = this.donorno; |
| | | }, |
| | | beforeCreate() {}, //çå½å¨æ - å建ä¹å |
| | | beforeMount() {}, //çå½å¨æ - æè½½ä¹å |
| | |
| | | </el-table-column> |
| | | <el-table-column label="è´¦å·ç¼å·" align="center" prop="userno" /> |
| | | <el-table-column label="è´¦å·åç§°" align="center" prop="username" /> |
| | | <el-table-column label="绩æç§å®¤" align="center" prop="deptName" width="140" /> |
| | | <el-table-column label="身份è¯å·" width="200" align="center" prop="idcardno" /> |
| | | <el-table-column label="èç§°" align="center" prop="title"> |
| | | <template slot-scope="scope"> |
| | |
| | | dict.label |
| | | }}</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row v-if="hasUserType(form.usertype, 'performance')"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="绩æç§å®¤" prop="deptId"> |
| | | <el-select |
| | | v-model="form.deptId" |
| | | placeholder="è¯·éæ©ç»©æç§å®¤" |
| | | clearable |
| | | filterable |
| | | style="width: 100%" |
| | | @change="handleDeptChange" |
| | | > |
| | | <el-option |
| | | v-for="dept in deptList" |
| | | :key="dept.deptId" |
| | | :label="dept.deptName" |
| | | :value="dept.deptId" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | } from "@/api/project/organization"; |
| | | |
| | | import { getUserProfile } from "@/api/system/user"; |
| | | import { listDept } from "@/api/system/dept"; |
| | | |
| | | export default { |
| | | name: "Externalperson", |
| | |
| | | |
| | | //å»çæºæå表 |
| | | unitList: [], |
| | | // 绩æç§å®¤å表 |
| | | deptList: [], |
| | | // å¼¹åºå±æ é¢ |
| | | title: "", |
| | | // æ¯å¦æ¾ç¤ºå¼¹åºå± |
| | |
| | | ], |
| | | depositbank: [ |
| | | { required: true, message: "请è¾å
¥å¼æ·é¶è¡", trigger: "blur" } |
| | | ], |
| | | deptId: [ |
| | | { |
| | | validator: (rule, value, callback) => { |
| | | if ( |
| | | this.hasUserType(this.form.usertype, "performance") && |
| | | (value === null || value === undefined || value === "") |
| | | ) { |
| | | return callback(new Error("è¯·éæ©ç»©æç§å®¤")); |
| | | } |
| | | return callback(); |
| | | }, |
| | | trigger: "change" |
| | | } |
| | | ] |
| | | }, |
| | | }; |
| | |
| | | created() { |
| | | this.getUserProfile(); |
| | | this.getUnitList(); |
| | | this.getDeptList(); |
| | | // é»è®¤ä¸æå¼ |
| | | // this.getList(); |
| | | }, |
| | |
| | | updateBy: null, |
| | | updateTime: null, |
| | | pym: null, |
| | | wbm: null |
| | | wbm: null, |
| | | deptId: null, |
| | | deptName: null |
| | | }; |
| | | this.resetForm("form"); |
| | | }, |
| | |
| | | this.form = response.data; |
| | | //è´¦å·ç±»å«ä¸ºå¤å¼ï¼éå·åéï¼ï¼è¡¨åç¨æ°ç»åæ¾ |
| | | this.form.usertype = this.splitUserType(response.data.usertype); |
| | | if (this.form.deptId !== null && this.form.deptId !== undefined && this.form.deptId !== "") { |
| | | this.form.deptId = Number(this.form.deptId); |
| | | } |
| | | this.open = true; |
| | | this.title = "人å/åä½è´¦å·ä¿¡æ¯ä¿®æ¹"; |
| | | }); |
| | |
| | | if (res.organizationid == this.form.unitno) |
| | | this.form.unitname = res.organizationname; |
| | | }); |
| | | //绩æç§å®¤ï¼æäº¤åæ deptId åå¡« deptName |
| | | if (this.form.deptId !== null && this.form.deptId !== undefined && this.form.deptId !== "") { |
| | | const dept = this.deptList.find( |
| | | item => String(item.deptId) === String(this.form.deptId) |
| | | ); |
| | | this.form.deptName = dept ? dept.deptName : this.form.deptName; |
| | | } |
| | | //è´¦å·ç±»å«ä¸ºå¤å¼ï¼æäº¤å转åéå·åéçå符串 |
| | | this.form.usertype = this.joinUserType(this.form.usertype); |
| | | console.log(this.form); |
| | |
| | | console.log(this.unitList); |
| | | } |
| | | }); |
| | | }, |
| | | /** 绩æç§å®¤å表 */ |
| | | getDeptList() { |
| | | listDept({}).then(response => { |
| | | this.deptList = response.data || []; |
| | | }); |
| | | }, |
| | | /** 绩æç§å®¤éæ©ååï¼åæ¥åç§° */ |
| | | handleDeptChange(deptId) { |
| | | if (deptId === null || deptId === undefined || deptId === "") { |
| | | this.form.deptName = null; |
| | | return; |
| | | } |
| | | const dept = this.deptList.find( |
| | | item => String(item.deptId) === String(deptId) |
| | | ); |
| | | this.form.deptName = dept ? dept.deptName : null; |
| | | } |
| | | } |
| | | }; |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="deptName" |
| | | align="center" |
| | | label="绩æç§å®¤" |
| | | width="160" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-select |
| | | v-model="scope.row.deptId" |
| | | size="mini" |
| | | clearable |
| | | filterable |
| | | placeholder="è¯·éæ©ç»©æç§å®¤" |
| | | style="width: 100%" |
| | | @change="value => handleRowDeptChange(scope.row, value)" |
| | | > |
| | | <el-option |
| | | v-for="dept in deptList" |
| | | :key="dept.deptId" |
| | | :label="dept.deptName" |
| | | :value="dept.deptId" |
| | | /> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="isunit" |
| | | align="center" |
| | | label="人åç±»å«" |
| | |
| | | :label="city" |
| | | :key="city.id" |
| | | >{{ city.username }}{{ city.isUnitPerson ? "ï¼åä½ï¼" : "" |
| | | }}{{ city.unitname ? " · " + city.unitname : "" }}</el-checkbox |
| | | }}{{ city.unitname ? " · " + city.unitname : "" |
| | | }}{{ city.deptName ? " · ç§å®¤ï¼" + city.deptName : "" }}</el-checkbox |
| | | > |
| | | </el-checkbox-group> |
| | | </div> |
| | |
| | | import { listItemexpense } from "@/api/project/itemexpense"; |
| | | |
| | | import { getUserProfile } from "@/api/system/user"; |
| | | import { listDept } from "@/api/system/dept"; |
| | | import Li_area_select from "@/components/Address"; |
| | | import OrgSelecter from "@/views/project/components/orgselect"; |
| | | import { getToken } from "@/utils/auth"; |
| | |
| | | expertlist: [], |
| | | //å»çæºæå表 |
| | | unitList: [], |
| | | //绩æç§å®¤å表 |
| | | deptList: [], |
| | | //è´¹ç¨æ¥éæºæå表 |
| | | feeUnitList: [], |
| | | batchdialogVisible: false, |
| | |
| | | }); |
| | | }, |
| | | |
| | | /** 绩æç§å®¤å表 */ |
| | | getDeptList() { |
| | | listDept({}).then(res => { |
| | | this.deptList = res.data || []; |
| | | }); |
| | | }, |
| | | |
| | | /** è¡¨æ ¼å
ç´æ¥ä¿®æ¹ç»©æç§å®¤ï¼åæ¥åç§° */ |
| | | handleRowDeptChange(row, deptId) { |
| | | if (deptId === null || deptId === undefined || deptId === "") { |
| | | this.$set(row, "deptName", null); |
| | | return; |
| | | } |
| | | const dept = this.deptList.find( |
| | | item => String(item.deptId) === String(deptId) |
| | | ); |
| | | this.$set(row, "deptName", dept ? dept.deptName : null); |
| | | }, |
| | | |
| | | //è·åå»çæºæå表 |
| | | getUnitList() { |
| | | listOrganization(3).then(response => { |
| | |
| | | isunit: isunit ? 1 : 0, |
| | | unitname: item.unitname, |
| | | unitno: item.unitno, |
| | | deptId: item.deptId, |
| | | deptName: item.deptName, |
| | | uintuserno: null, |
| | | title: item.title, |
| | | idcardtype: null, |
| | |
| | | singleDetail.title = person.title; |
| | | singleDetail.unitname = person.unitname; |
| | | singleDetail.unitno = person.unitno; |
| | | singleDetail.deptId = person.deptId; |
| | | singleDetail.deptName = person.deptName; |
| | | } else { |
| | | // æå·¥è¾å
¥ç人åï¼åªåå§åï¼èº«ä»½è¯å·/é¶è¡è´¦å·ç±ç»å人填å |
| | | singleDetail.beneficiaryname = String(key); |
| | |
| | | this.getExternalList(); |
| | | this.getFeeUnitList(); |
| | | this.listperformance(); |
| | | this.getDeptList(); |
| | | }, |
| | | |
| | | //çå½å¨æ - æè½½å®æï¼å¯ä»¥è®¿é®DOMå
ç´ ï¼ |
| | |
| | | <div class="app-container"> |
| | | <el-col :span="24" v-if="showType == 'list'"> |
| | | <el-card shadow="never"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true"> |
| | | <el-form class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true"> |
| | | <el-form-item label="å§å" prop="name"> |
| | | <el-input |
| | | v-model="queryParams.name" |
| | | placeholder="请è¾å
¥å§å" |
| | | clearable |
| | | size="small" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | <el-input v-model="queryParams.name" placeholder="请è¾å
¥å§å" clearable size="small" |
| | | @keyup.enter.native="handleQuery" /> |
| | | </el-form-item> |
| | | <el-form-item label="æç®è¿åº¦" prop="recordstate"> |
| | | <el-select |
| | | v-model="queryParams.recordstate" |
| | | placeholder="è¯·éæ©å½åè¿åº¦" |
| | | clearable |
| | | size="small" |
| | | > |
| | | <el-option |
| | | v-for="dict in dict.type.sys_DonationStatus" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | /> |
| | | <el-select v-model="queryParams.recordstate" placeholder="è¯·éæ©å½åè¿åº¦" clearable size="small"> |
| | | <el-option v-for="dict in dict.type.sys_DonationStatus" :key="dict.value" :label="dict.label" |
| | | :value="dict.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-search" |
| | | size="mini" |
| | | @click="handleQuery" |
| | | >æç´¢</el-button |
| | | > |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" |
| | | >éç½®</el-button |
| | | > |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">æç´¢</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">éç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <!-- æç®æ¡ä¾å表 --> |
| | | <el-table |
| | | v-loading="loading" |
| | | style="width: 1240px" |
| | | fit |
| | | highlight-current-row |
| | | header-align |
| | | border |
| | | :data="donationCaseTableData" |
| | | > |
| | | <el-table-column |
| | | label="æ¡ä¾æ¶é´" |
| | | align="center" |
| | | prop="reporttime" |
| | | width="150" |
| | | > |
| | | <el-table v-loading="loading" fit highlight-current-row header-align border |
| | | :data="donationCaseTableData"> |
| | | <el-table-column label="æ¡ä¾æ¶é´" align="center" prop="reporttime" width="150"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.reporttime, "{y}-{m}-{d}") }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="å§å" |
| | | width="120" |
| | | align="center" |
| | | prop="name" |
| | | /> |
| | | <el-table-column label="å§å" width="120" align="center" prop="name" /> |
| | | <el-table-column label="æ§å«" width="120" align="center" prop="sex"> |
| | | <el-table-column label="å¹´é¾" align="center" prop="age" width="100"> |
| | | <template slot-scope="scope"> |
| | | {{ |
| | | `${ |
| | | scope.row.age && scope.row.age !== 0 |
| | | `${scope.row.age && scope.row.age !== 0 |
| | | ? `${scope.row.age}${scope.row.ageunit}` |
| | | : "" |
| | | } ${ |
| | | scope.row.age2 && scope.row.age2 !== 0 |
| | | } ${scope.row.age2 && scope.row.age2 !== 0 |
| | | ? `${scope.row.age2}${scope.row.ageunit2}` |
| | | : "" |
| | | }`.trim() |
| | | }`.trim() |
| | | }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æ§å«" width="120" align="center" prop="sex"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_user_sex" |
| | | :value="scope.row.sex" |
| | | /> |
| | | <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ä¸è人å" |
| | | align="center" |
| | | prop="reportername" |
| | | width="100" |
| | | /> |
| | | <el-table-column |
| | | label="ä¸å¡ç»" |
| | | align="center" |
| | | prop="treatmenthospitalname" |
| | | /> |
| | | <el-table-column label="æç®è¿åº¦" align="center" prop="recordstate"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_donornode" |
| | | :value="scope.row.workflow" |
| | | /> |
| | | <dict-tag :options="dict.type.sys_donornode" :value="scope.row.workflow" /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="æä½" |
| | | align="center" |
| | | class-name="small-padding fixed-width" |
| | | width="200" |
| | | fixed="right" |
| | | > |
| | | </el-table-column> <el-table-column label="æç®å»é¢"align="center" prop=" |
| | | treatmenthospitalname |
| | | " /> |
| | | <el-table-column label="ä¸è人å" align="center" prop="reportername"/> |
| | | <el-table-column label="ä¸å¡ç»" align="center" prop="deptname" /> |
| | | <el-table-column label="æä½" align="center" class-name="small-padding fixed-width" width="200" fixed="right"> |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-download" |
| | | @click="exportSummary(scope.row.id)" |
| | | v-hasPermi="['project:fundstatistics:summaryexoprt']" |
| | | >导åº</el-button |
| | | > |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | @click="jumptocost(scope.row)" |
| | | v-hasPermi="['project:fundstatistics:list']" |
| | | >æ¥çææ¬æ±æ»</el-button |
| | | > |
| | | <el-button size="mini" type="text" icon="el-icon-download" @click="exportSummary(scope.row.id)" |
| | | v-hasPermi="['project:fundstatistics:summaryexoprt']">导åº</el-button> |
| | | <el-button size="mini" type="text" icon="el-icon-edit" @click="jumptocost(scope.row)" |
| | | v-hasPermi="['project:fundstatistics:list']">æ¥çæç»</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- hide-on-single-page --> |
| | | <pagination |
| | | v-show="total > 0" |
| | | style="margin-left: 100px" |
| | | :total="total" |
| | | :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" |
| | | @pagination="getBaseInfoList" |
| | | /> |
| | | <pagination v-show="total > 0" style="margin-left: 100px" :total="total" :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" @pagination="getBaseInfoList" /> |
| | | </el-card> |
| | | </el-col> |
| | | <el-col :span="24" v-if="showType == 'costinfo'"> |
| | | <el-form :model="curCaseInfo" ref="infoForm" :inline="true"> |
| | | <el-row> |
| | | <el-col :span="3"> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-back" |
| | | @click="backDonateList" |
| | | >æç®å表</el-button |
| | | > |
| | | <el-button type="primary" icon="el-icon-back" @click="backDonateList">æç®å表</el-button> |
| | | </el-col> |
| | | <el-form-item label="æç®ç¼å·" prop="donorno"> |
| | | <el-input v-model="curCaseInfo.donorno" disabled /> |
| | |
| | | }); |
| | | }, |
| | | jumptocost(row) { |
| | | this.showType = "costinfo"; |
| | | this.curdonorno = row.id; |
| | | this.curCaseInfo.donorno = row.donorno; |
| | | this.curCaseInfo.name = row.name; |
| | | //console.log("dononro:" + this.curdonorno); |
| | | this.showType = "costinfo"; |
| | | }, |
| | | |
| | | backDonateList() { |
| | |
| | | this.getBaseInfoList(); |
| | | }, |
| | | //çå½å¨æ - æè½½å®æï¼å¯ä»¥è®¿é®DOMå
ç´ ï¼ |
| | | mounted() {}, |
| | | beforeCreate() {}, //çå½å¨æ - å建ä¹å |
| | | beforeMount() {}, //çå½å¨æ - æè½½ä¹å |
| | | beforeUpdate() {}, //çå½å¨æ - æ´æ°ä¹å |
| | | updated() {}, //çå½å¨æ - æ´æ°ä¹å |
| | | beforeDestroy() {}, //çå½å¨æ - 鿝ä¹å |
| | | destroyed() {}, //çå½å¨æ - 鿝宿 |
| | | activated() {} //妿页颿keep-aliveç¼ååè½ï¼è¿ä¸ªå½æ°ä¼è§¦å |
| | | mounted() { }, |
| | | beforeCreate() { }, //çå½å¨æ - å建ä¹å |
| | | beforeMount() { }, //çå½å¨æ - æè½½ä¹å |
| | | beforeUpdate() { }, //çå½å¨æ - æ´æ°ä¹å |
| | | updated() { }, //çå½å¨æ - æ´æ°ä¹å |
| | | beforeDestroy() { }, //çå½å¨æ - 鿝ä¹å |
| | | destroyed() { }, //çå½å¨æ - 鿝宿 |
| | | activated() { } //妿页颿keep-aliveç¼ååè½ï¼è¿ä¸ªå½æ°ä¼è§¦å |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="è´¹ç¨ç±»å"> |
| | | <el-select |
| | | v-model="queryParams.paexpensetype" |
| | | placeholder="è¯·éæ©è´¹ç¨ç±»å" |
| | | > |
| | | <el-option |
| | | v-for="item in reportlist" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item align="left" label="æ¥éé¨é¨" prop="padeptno"> |
| | |
| | | ></right-toolbar> |
| | | </el-row> |
| | | |
| | | <!--<el-table v-loading="loading" border :data="donatebaseinfoList"> --> |
| | | <el-table |
| | | :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="50" /> |
| | | <el-table-column label="ç»è®¡æä»½" align="center" prop="applymonth" /> |
| | | <el-table-column label="ä¸å¡ç»" align="center" prop="deptmentName" /> |
| | | <el-table-column label="ä¸è人å" align="center" prop="username" /> |
| | | <el-table-column label="æ¥éæ»éé¢" align="center" prop="amount" width="180" :formatter="amountFormatter" /> |
| | | <el-table-column label="ä¸å®¶è´¹" align="center" prop="expertfee" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="伦çä¸å®¶è´¹" align="center" prop="ethicalistfee" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="å»å¦ææ¬" align="center" prop="medicalcost" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="åå
¬è´¹" align="center" prop="officecost" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="å·®æ
è´¹" align="center" prop="reimcost" width="160" :formatter="amountFormatter" /> |
| | | <el-tabs v-model="activeTab"> |
| | | <el-tab-pane label="æä¸å¡ç»" name="dept"> |
| | | <el-table :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="50" /> |
| | | <el-table-column label="ä¸å¡ç»" align="center" prop="deptname" /> |
| | | <el-table-column label="æ¥éæ»éé¢" align="center" prop="amount" width="180" :formatter="amountFormatter" /> |
| | | <el-table-column label="ä¸å®¶è´¹" align="center" prop="expertfee" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="伦çä¸å®¶è´¹" align="center" prop="ethicalistfee" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="å»å¦ææ¬" align="center" prop="medicalcost" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="åå
¬è´¹" align="center" prop="officecost" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="å·®æ
è´¹" align="center" prop="reimcost" width="160" :formatter="amountFormatter" /> |
| | | </el-table> |
| | | </el-tab-pane> |
| | | |
| | | <!-- <el-table-column label="æä½" align="center"> |
| | | <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 label="æäººå" name="person"> |
| | | <el-table :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="50" /> |
| | | <el-table-column label="ä¸å¡ç»" align="center" prop="deptmentName" /> |
| | | <el-table-column label="ä¸è人å" align="center" prop="username" /> |
| | | <el-table-column label="æ¥éæ»éé¢" align="center" prop="amount" width="180" :formatter="amountFormatter" /> |
| | | <el-table-column label="ä¸å®¶è´¹" align="center" prop="expertfee" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="伦çä¸å®¶è´¹" align="center" prop="ethicalistfee" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="å»å¦ææ¬" align="center" prop="medicalcost" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="åå
¬è´¹" align="center" prop="officecost" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="å·®æ
è´¹" align="center" prop="reimcost" width="160" :formatter="amountFormatter" /> |
| | | |
| | | <!-- <el-table-column label="æä½" align="center"> |
| | | <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, |
| | | exportExpenseStatistics |
| | | exportExpenseStatistics, |
| | | exportExpenseDeptStatistics |
| | | } from "@/api/project/statistics"; |
| | | |
| | | import { listUser } from "@/api/project/organization"; |
| | |
| | | donatebaseinfoList: [], |
| | | // æç®åºç¡è¡¨æ ¼æ°æ® |
| | | jxidata: [], |
| | | // å½å页ç¾ï¼dept=æä¸å¡ç»ï¼person=æäººå |
| | | activeTab: "dept", |
| | | // æä¸å¡ç»èåæ°æ® |
| | | deptData: [], |
| | | // å¼¹åºå±æ é¢ |
| | | title: "", |
| | | // æ¯å¦æ¾ç¤ºå¼¹åºå± |
| | |
| | | }; |
| | | }, |
| | | //çå¬å±æ§ 类似äºdataæ¦å¿µ |
| | | computed: {}, |
| | | computed: { |
| | | tableTotal() { |
| | | return this.activeTab === "dept" ? this.deptData.length : this.jxidata.length; |
| | | } |
| | | }, |
| | | activated() {}, |
| | | mounted() {}, |
| | | |
| | |
| | | this.jxidata.forEach(($obj, $index) => { |
| | | $obj.id = $index + 1; |
| | | }); |
| | | this.buildDeptData(); |
| | | }); |
| | | }, |
| | | /** æä¸å¡ç»èåï¼6 个éé¢å嫿±å */ |
| | | buildDeptData() { |
| | | const map = new Map(); |
| | | this.jxidata.forEach(row => { |
| | | const key = row.deptmentno || row.deptmentName || "æªåç»"; |
| | | if (!map.has(key)) { |
| | | map.set(key, { |
| | | deptname: row.deptmentName || "æªåç»", |
| | | amount: 0, |
| | | expertfee: 0, |
| | | ethicalistfee: 0, |
| | | medicalcost: 0, |
| | | officecost: 0, |
| | | reimcost: 0 |
| | | }); |
| | | } |
| | | const item = map.get(key); |
| | | item.amount += Number(row.amount) || 0; |
| | | item.expertfee += Number(row.expertfee) || 0; |
| | | item.ethicalistfee += Number(row.ethicalistfee) || 0; |
| | | item.medicalcost += Number(row.medicalcost) || 0; |
| | | item.officecost += Number(row.officecost) || 0; |
| | | item.reimcost += Number(row.reimcost) || 0; |
| | | }); |
| | | this.deptData = Array.from(map.values()).map((item, index) => { |
| | | item.id = index + 1; |
| | | return item; |
| | | }); |
| | | }, |
| | | /** å¯¼åºæé®æä½ */ |
| | |
| | | pauserno: this.queryParams.pauserno, |
| | | paexpensetype: this.queryParams.paexpensetype |
| | | }; |
| | | const exportApi = |
| | | this.activeTab === "dept" |
| | | ? exportExpenseDeptStatistics |
| | | : exportExpenseStatistics; |
| | | this.$modal |
| | | .confirm("æ¯å¦ç¡®è®¤å¯¼åºå½åç鿡件ä¸çè´¹ç¨ç»è®¡æ°æ®ï¼") |
| | | .confirm("æ¯å¦ç¡®è®¤å¯¼åºå½åå表çè´¹ç¨ç»è®¡æ°æ®ï¼") |
| | | .then(() => { |
| | | this.exportLoading = true; |
| | | return exportExpenseStatistics(queryParams); |
| | | return exportApi(queryParams); |
| | | }) |
| | | .then(response => { |
| | | this.$download.name(response.msg); |
| | |
| | | getSummaries(param) { |
| | | const { columns, data } = param; |
| | | const sums = []; |
| | | var columnnames = ["applymonth", "deptmentName", "username"]; |
| | | var columnnames = ["deptmentName", "username"]; |
| | | 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; |
| | | } |
| | | }, |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- æ¡ä¾å
¨æ¯ --> |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | | v-show="showSearch" |
| | | label-width="65px" |
| | | > |
| | | <el-row :gutter="0"> |
| | | <el-col :span="5"> |
| | | <el-form-item label="æç®è
" prop="donorName"> |
| | | <el-input |
| | | v-model="queryParams.donorName" |
| | | placeholder="请è¾å
¥æç®è
å§å" |
| | | clearable |
| | | size="small" |
| | | style="width: 140px" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="æç®æ¥æ"> |
| | | <el-date-picker |
| | | v-model="dateRange" |
| | | type="daterange" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | value-format="yyyy-MM-dd" |
| | | style="width: 250px" |
| | | @change="handleDateChange" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-form-item label="ä¸å¡ç»" prop="deptName"> |
| | | <el-select |
| | | v-model="queryParams.deptName" |
| | | placeholder="è¯·éæ©ä¸å¡ç»" |
| | | clearable |
| | | filterable |
| | | style="width: 140px" |
| | | > |
| | | <el-option |
| | | v-for="item in deptOptions" |
| | | :key="item" |
| | | :label="item" |
| | | :value="item" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-form-item label="人å" prop="reporterName"> |
| | | <el-input |
| | | v-model="queryParams.reporterName" |
| | | placeholder="请è¾å
¥ä¸å¡å§å" |
| | | clearable |
| | | size="small" |
| | | style="width: 140px" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-search" |
| | | size="mini" |
| | | @click="handleQuery" |
| | | >æç´¢</el-button |
| | | > |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" |
| | | >éç½®</el-button |
| | | > |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | |
| | | <el-row :gutter="10" class="mb8"> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-download" |
| | | size="mini" |
| | | :loading="exportLoading" |
| | | @click="handleExport" |
| | | >导åº</el-button |
| | | > |
| | | </el-col> |
| | | <right-toolbar |
| | | :showSearch.sync="showSearch" |
| | | @queryTable="getList" |
| | | ></right-toolbar> |
| | | </el-row> |
| | | |
| | | <el-table |
| | | v-loading="loading" |
| | | :data="caseList" |
| | | border |
| | | class="table-bordered" |
| | | max-height="700" |
| | | highlight-current-row |
| | | :summary-method="getSummaries" |
| | | show-summary |
| | | style="width: 100%" |
| | | > |
| | | <el-table-column type="index" label="åºå·" width="55" align="center" fixed="left" /> |
| | | <el-table-column label="æç®è
å§å" prop="donorName" width="110" align="center" fixed="left" show-overflow-tooltip /> |
| | | <el-table-column label="æç®æ¥æ" prop="donateTime" width="110" align="center" fixed="left" /> |
| | | <el-table-column label="䏿¥æ¥æ" prop="reportTime" width="110" align="center" fixed="left" /> |
| | | <el-table-column label="ä¸å¡ç»" prop="deptName" width="130" align="center" show-overflow-tooltip /> |
| | | <el-table-column label="ä¸å¡äººå" prop="reporterName" width="110" align="center" show-overflow-tooltip /> |
| | | <el-table-column label="æ¡ä¾ç»æ¢" prop="terminationFlag" width="90" align="center" /> |
| | | <el-table-column label="å½åç¶æ" prop="workflow" width="120" align="center"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag :options="dict.type.sys_donornode" :value="scope.row.workflow" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æç®å»é¢" prop="donationHospital" width="200" align="center" show-overflow-tooltip /> |
| | | |
| | | <el-table-column label="æç®å¨å®" prop="organName" width="120" align="left"> |
| | | <template slot-scope="scope"> |
| | | <div class="organ-cell" v-html="formatOrganName(scope.row.organName)"></div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="è·åå¨å®" prop="organProcurement" width="120" align="center"> |
| | | <template slot-scope="scope"> |
| | | <div class="organ-cell" v-html="highlightOrgan(scope.row.organProcurement)"></div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ç§»æ¤å¨å®" prop="organTransplantation" width="120" align="center"> |
| | | <template slot-scope="scope"> |
| | | <div class="organ-cell" v-html="highlightOrgan(scope.row.organTransplantation)"></div> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="ææ¬å计" prop="totalCost" width="130" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="å®¶å±è´¹ç¨" prop="donorFamilyCost" width="120" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="å»å¦ææ¬å°è®¡" prop="medCost" width="130" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="ä¸å®¶ææ¬å°è®¡" prop="expertCost" width="130" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="å
¶ä»ææ¬å°è®¡" prop="itemCode34" width="130" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="ææ¯å®¤ä½¿ç¨è´¹" prop="itemCode42" width="120" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="å¨å®ä¿åçæ³¨" prop="itemCode46" width="120" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="å¨å®ä¿å设å¤" prop="itemCode50" width="120" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="èèä¸ç»´é建" prop="itemCode44" width="120" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="ç
çç©¿åºæ´»æ£" prop="itemCode47" width="120" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="HLAé
å" prop="itemCode48" width="110" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="çåæ æ¬ææ¬" prop="itemCode21" width="120" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="æ æ¬è¿è¾è´¹" prop="itemCode12" width="110" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="转è¿è½¦è´¹" prop="itemCode17" width="110" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="éä½è¿è¾" prop="itemCode23" width="110" align="right" :formatter="amountFormatter" /> |
| | | <el-table-column label="å°¸æ£" prop="itemCode25" width="90" align="right" :formatter="amountFormatter" /> |
| | | </el-table> |
| | | |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | listCasePanorama, |
| | | exportCasePanorama, |
| | | getCasePanoramaDeptOptions |
| | | } from "@/api/project/casePanorama"; |
| | | |
| | | export default { |
| | | name: "CasePanorama", |
| | | dicts: ["sys_donornode"], |
| | | data() { |
| | | return { |
| | | // é®ç½©å± |
| | | loading: false, |
| | | // 导åºé®ç½©å± |
| | | exportLoading: false, |
| | | // æ¾ç¤ºæç´¢æ¡ä»¶ |
| | | showSearch: true, |
| | | // æ»æ¡æ° |
| | | total: 0, |
| | | // æ¡ä¾å
¨æ¯æ°æ® |
| | | caseList: [], |
| | | // ä¸å¡ç»é项 |
| | | deptOptions: [], |
| | | // æ¡ä¾æ¶é´èå´ |
| | | dateRange: [], |
| | | // æ¥è¯¢åæ° |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 20, |
| | | donorName: null, |
| | | donateTimeBegin: null, |
| | | donateTimeEnd: null, |
| | | deptName: null, |
| | | reporterName: null |
| | | } |
| | | }; |
| | | }, |
| | | created() { |
| | | this.getDeptOptions(); |
| | | this.getList(); |
| | | }, |
| | | methods: { |
| | | /** æ¥è¯¢æ¡ä¾å
¨æ¯ */ |
| | | getList() { |
| | | this.loading = true; |
| | | listCasePanorama(this.queryParams) |
| | | .then(res => { |
| | | this.caseList = res.rows; |
| | | this.total = res.total; |
| | | this.loading = false; |
| | | }) |
| | | .catch(() => { |
| | | this.loading = false; |
| | | }); |
| | | }, |
| | | /** ä¸å¡ç»é项 */ |
| | | getDeptOptions() { |
| | | getCasePanoramaDeptOptions().then(res => { |
| | | this.deptOptions = res.data || []; |
| | | }); |
| | | }, |
| | | /** æ¡ä¾æ¶é´èå´åå */ |
| | | handleDateChange(val) { |
| | | if (val && val.length === 2) { |
| | | this.queryParams.donateTimeBegin = val[0]; |
| | | this.queryParams.donateTimeEnd = val[1]; |
| | | } else { |
| | | this.queryParams.donateTimeBegin = null; |
| | | this.queryParams.donateTimeEnd = null; |
| | | } |
| | | }, |
| | | /** æç´¢æé®æä½ */ |
| | | handleQuery() { |
| | | this.queryParams.pageNum = 1; |
| | | this.getList(); |
| | | }, |
| | | /** éç½®æé®æä½ */ |
| | | resetQuery() { |
| | | this.dateRange = []; |
| | | this.queryParams = { |
| | | pageNum: 1, |
| | | pageSize: 20, |
| | | donorName: null, |
| | | donateTimeBegin: null, |
| | | donateTimeEnd: null, |
| | | deptName: null, |
| | | reporterName: null |
| | | }; |
| | | this.resetForm("queryForm"); |
| | | this.getList(); |
| | | }, |
| | | /** æç®å¨å®ï¼æå¨å®é个æ¢è¡æ¾ç¤º */ |
| | | formatOrganName(text) { |
| | | if (!text) { |
| | | return ""; |
| | | } |
| | | const escaped = String(text) |
| | | .replace(/&/g, "&") |
| | | .replace(/</g, "<") |
| | | .replace(/>/g, ">"); |
| | | return escaped |
| | | .split(/[,ï¼ã\n]/) |
| | | .map(item => item.trim()) |
| | | .filter(item => item) |
| | | .join("<br/>"); |
| | | }, |
| | | /** å¨å®è·å/ç§»æ¤ï¼å¡«çº³ãå¼ç¨æ 红ï¼ä¿çæ¢è¡ */ |
| | | highlightOrgan(text) { |
| | | if (!text) { |
| | | return ""; |
| | | } |
| | | const escaped = String(text) |
| | | .replace(/&/g, "&") |
| | | .replace(/</g, "<") |
| | | .replace(/>/g, ">") |
| | | .replace(/\n/g, "<br/>"); |
| | | return escaped |
| | | .replace(/\(填纳\)/g, '<span style="color:#F56C6C">(填纳)</span>') |
| | | .replace(/\(å¼ç¨\)/g, '<span style="color:#F56C6C">(å¼ç¨)</span>'); |
| | | }, |
| | | /** é颿¾ç¤ºï¼ä¿ç两ä½å°æ°ï¼0 æ¾ç¤ºä¸ºç©º */ |
| | | formatAmount(value) { |
| | | if (value === null || value === undefined || value === "") { |
| | | return ""; |
| | | } |
| | | const num = Number(value); |
| | | if (!Number.isFinite(num) || num === 0) { |
| | | return ""; |
| | | } |
| | | return num.toFixed(2); |
| | | }, |
| | | amountFormatter(row, column, cellValue) { |
| | | return this.formatAmount(cellValue); |
| | | }, |
| | | /** è´¹ç¨åå计 */ |
| | | getSummaries(param) { |
| | | const { columns, data } = param; |
| | | const sums = []; |
| | | const textColumns = [ |
| | | "donorName", |
| | | "reportTime", |
| | | "deptName", |
| | | "reporterName", |
| | | "terminationFlag", |
| | | "workflow", |
| | | "donateTime", |
| | | "donationHospital", |
| | | "organName", |
| | | "organProcurement", |
| | | "organTransplantation" |
| | | ]; |
| | | columns.forEach((column, index) => { |
| | | if (index === 0) { |
| | | sums[index] = "å计"; |
| | | return; |
| | | } |
| | | if (textColumns.indexOf(column.property) > -1) { |
| | | return; |
| | | } |
| | | const total = data.reduce( |
| | | (prev, item) => prev + (Number(item[column.property]) || 0), |
| | | 0 |
| | | ); |
| | | sums[index] = total === 0 ? "" : Number(total).toFixed(2); |
| | | }); |
| | | return sums; |
| | | }, |
| | | /** å¯¼åºæé®æä½ */ |
| | | handleExport() { |
| | | const queryParams = { ...this.queryParams }; |
| | | delete queryParams.pageNum; |
| | | delete queryParams.pageSize; |
| | | this.$modal |
| | | .confirm("æ¯å¦ç¡®è®¤å¯¼åºå½åç鿡件ä¸çæ¡ä¾å
¨æ¯æ°æ®ï¼") |
| | | .then(() => { |
| | | this.exportLoading = true; |
| | | return exportCasePanorama(queryParams); |
| | | }) |
| | | .then(response => { |
| | | this.$download.name(response.msg); |
| | | this.exportLoading = false; |
| | | }) |
| | | .catch(() => { |
| | | this.exportLoading = false; |
| | | }); |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | .opo-query-form ::v-deep .el-form-item { |
| | | margin-right: 8px; |
| | | margin-bottom: 0; |
| | | } |
| | | .organ-cell { |
| | | white-space: normal; |
| | | line-height: 1.4; |
| | | text-align: left; |
| | | word-break: break-all; |
| | | } |
| | | </style> |
| | |
| | | ></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="50" /> |
| | | <el-table-column label="ç»è®¡æä»½" align="center" prop="donationmonth" /> |
| | | <el-table-column label="ä¸å¡ç»" align="center" prop="deptname"> </el-table-column> |
| | | <el-table-column label="ä¸è人å" align="center" prop="reportername" /> |
| | | <el-table-column label="æ¡ä¾ç´¯è®¡" align="center" prop="casesum" /> |
| | | <el-table-column label="æ½å¨æç®" align="center" prop="workflow0" width="100" /> |
| | | <el-table-column label="å»å¦è¯ä¼°" align="center" prop="workflow1" width="100" /> |
| | | <el-table-column label="å®¶å±ç¡®è®¤" align="center" prop="workflow2" width="100" /> |
| | | <el-table-column label="伦ç审æ¥" align="center" prop="workflow3" width="100" /> |
| | | <el-table-column label="å¨å®åé
" align="center" prop="workflow4" width="100" /> |
| | | <el-table-column label="è·åè§è¯" align="center" prop="workflow5" width="100" /> |
| | | <el-table-column label="æç®å®æ" align="center" prop="workflow6" width="100" /> |
| | | <el-table-column label="彿¡£æ¤é" align="center" prop="workflow7" width="100" /> |
| | | <el-table-column label="æ¡ä¾å½æ¡£" align="center" prop="workflow8" width="100" /> |
| | | <!-- <el-table-column label="æ¡ä¾ç»æ¢" align="center" prop="workflow9" width="90" /> --> |
| | | <el-table-column label="ç»æ¢æ¡ä¾" align="center" prop="terminationcase" width="100" /> |
| | | <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="50" /> |
| | | <el-table-column label="ä¸å¡ç»" align="center" prop="deptname" width="250" /> |
| | | <el-table-column label="累计æ¡ä¾" align="center" prop="caseTotal" width="150" /> |
| | | <el-table-column label="ç»æ¢æ¡ä¾" align="center" prop="terminationTotal" width="150" /> |
| | | </el-table> |
| | | </el-tab-pane> |
| | | |
| | | <!-- <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 |
| | | <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="50" /> |
| | | <el-table-column label="ä¸å¡ç»" align="center" prop="deptname" width="250" > </el-table-column> |
| | | <el-table-column label="ä¸è人å" align="center" prop="reportername" width="150" /> |
| | | <!-- <el-table-column label="ç»è®°æ¡ä¾ç´¯è®¡" align="center" prop="casesum" width="100" /> --> |
| | | <!-- <el-table-column label="æ½å¨æç®" align="center" prop="workflow0" width="100" /> |
| | | <el-table-column label="å»å¦è¯ä¼°" align="center" prop="workflow1" width="100" /> |
| | | <el-table-column label="å®¶å±ç¡®è®¤" align="center" prop="workflow2" width="100" /> |
| | | <el-table-column label="伦ç审æ¥" align="center" prop="workflow3" width="100" /> |
| | | <el-table-column label="å¨å®åé
" align="center" prop="workflow4" width="100" /> |
| | | <el-table-column label="è·åè§è¯" align="center" prop="workflow5" width="100" /> |
| | | <el-table-column label="æç®å®æ" align="center" prop="workflow6" width="100" /> |
| | | <el-table-column label="彿¡£æ¤é" align="center" prop="workflow7" width="100" /> |
| | | <el-table-column label="æ¡ä¾å½æ¡£" align="center" prop="workflow8" width="100" /> --> |
| | | <el-table-column label="æ¡ä¾ç´¯è®¡" align="center" prop="workflowsum" width="200" /> |
| | | <el-table-column label="ç»æ¢æ¡ä¾" align="center" prop="terminationcase" width="100" /> |
| | | |
| | | <!-- <el-table-column |
| | | label="æä½" |
| | | align="center" |
| | | class-name="small-padding fixed-width" |
| | | fixed="right" |
| | | > |
| | | </template> |
| | | </el-table-column> --> |
| | | </el-table> |
| | | <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, |
| | | exportCaseStatistics |
| | | exportCaseStatistics, |
| | | exportCaseDeptStatistics |
| | | } from "@/api/project/statistics"; |
| | | |
| | | import { listUser } from "@/api/project/organization"; |
| | |
| | | donatebaseinfoList: [], |
| | | // æç®åºç¡è¡¨æ ¼æ°æ® |
| | | jxidata: [], |
| | | // å½å页ç¾ï¼dept=æä¸å¡ç»ï¼person=æäººå |
| | | activeTab: "dept", |
| | | // æä¸å¡ç»èåæ°æ® |
| | | deptData: [], |
| | | // å¼¹åºå±æ é¢ |
| | | title: "", |
| | | // æ¯å¦æ¾ç¤ºå¼¹åºå± |
| | |
| | | }; |
| | | }, |
| | | //çå¬å±æ§ 类似äºdataæ¦å¿µ |
| | | computed: {}, |
| | | computed: { |
| | | tableTotal() { |
| | | return this.activeTab === "dept" ? this.deptData.length : this.jxidata.length; |
| | | } |
| | | }, |
| | | activated() {}, |
| | | mounted() {}, |
| | | |
| | |
| | | $obj.id = $index + 1; |
| | | }); |
| | | this.total = res.total; |
| | | this.buildDeptData(); |
| | | }); |
| | | }, |
| | | /** æä¸å¡ç»èåï¼ç´¯è®¡æ¡ä¾ = Σworkflowsumï¼ç»æ¢æ¡ä¾ = Σterminationcase */ |
| | | 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 || "æªåç»", |
| | | caseTotal: 0, |
| | | terminationTotal: 0 |
| | | }); |
| | | } |
| | | const item = map.get(key); |
| | | item.caseTotal += Number(row.workflowsum) || 0; |
| | | item.terminationTotal += Number(row.terminationcase) || 0; |
| | | }); |
| | | this.deptData = Array.from(map.values()).map((item, index) => { |
| | | item.id = index + 1; |
| | | return item; |
| | | }); |
| | | }, |
| | | /** å¯¼åºæé®æä½ */ |
| | |
| | | padeptno: this.queryParams.padeptno, |
| | | pausername: this.queryParams.pausername |
| | | }; |
| | | const exportApi = |
| | | this.activeTab === "dept" |
| | | ? exportCaseDeptStatistics |
| | | : exportCaseStatistics; |
| | | this.$modal |
| | | .confirm("æ¯å¦ç¡®è®¤å¯¼åºå½åç鿡件ä¸çæ¡ä¾ç»è®¡æ°æ®ï¼") |
| | | .confirm("æ¯å¦ç¡®è®¤å¯¼åºå½ååè¡¨çæ¡ä¾ç»è®¡æ°æ®ï¼") |
| | | .then(() => { |
| | | this.exportLoading = true; |
| | | return exportCaseStatistics(queryParams); |
| | | return exportApi(queryParams); |
| | | }) |
| | | .then(response => { |
| | | this.$download.name(response.msg); |
| | |
| | | getSummaries(param) { |
| | | const { columns, data } = param; |
| | | const sums = []; |
| | | var columnnames = ["donationmonth", "deptname", "reportername"]; |
| | | var columnnames = ["deptname", "reportername"]; |
| | | 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] = data.length === 0 ? "" : total; |
| | | }); |
| | | return sums; |
| | | }, |
| | | |
| | | // 表åéç½® |
| | | reset() { |
| | |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | | label-width="70px" |
| | | v-show="showSearch" |
| | | label-width="80px" |
| | | > |
| | | <el-row :gutter="8"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="æä»½èå´"> |
| | | <el-form-item label="æ¡ä¾æ¶é´"> |
| | | <el-date-picker |
| | | style="width: 100%" |
| | | v-model="selecttime" |
| | | type="monthrange" |
| | | type="daterange" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æä»½" |
| | | end-placeholder="ç»ææä»½" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | value-format="yyyy-MM-dd" |
| | | style="width: 100%" |
| | | @change="getTimeList" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="å»é¢åç§°"> |
| | | <org-selecter |
| | | ref="orgSelecter" |
| | | :org-type="'4'" |
| | | v-model="queryParams.pahospitalno" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-col> |
| | | <el-col :span="7"> |
| | | <el-form-item label="å»é¢åç§°"> |
| | | <el-input |
| | | v-model="queryParams.pahospitalname" |
| | | placeholder="请è¾å
¥å»é¢åç§°" |
| | | clearable |
| | | size="small" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item> |
| | | <el-button |
| | |
| | | </el-row> |
| | | </el-form> |
| | | |
| | | <!--<el-table v-loading="loading" border :data="donatebaseinfoList"> --> |
| | | <el-row :gutter="10" class="mb8"> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-download" |
| | | size="mini" |
| | | :loading="exportLoading" |
| | | @click="handleExport" |
| | | >导åº</el-button |
| | | > |
| | | </el-col> |
| | | <right-toolbar |
| | | :showSearch.sync="showSearch" |
| | | @queryTable="getList" |
| | | ></right-toolbar> |
| | | </el-row> |
| | | |
| | | <el-table |
| | | v-loading="loading" |
| | | :data="jxidata" |
| | |
| | | :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="receivemonth" /> |
| | | <el-table-column label="å»é¢åç§°" align="center" prop="hospitalname"> |
| | | </el-table-column> |
| | | <el-table-column label="å·²æ¶éé¢" align="center" prop="amount"> |
| | | </el-table-column> |
| | | <el-table-column label="æªæ¶éé¢" align="center" prop="nonpayment"> |
| | | </el-table-column> |
| | | <el-table-column label="åºæ¶éé¢" align="center" prop="organcharge"> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="æä½" |
| | | align="center" |
| | | class-name="small-padding fixed-width" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <!-- v-if="scope.row.recordstate==2" |
| | | --> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | >说æ</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="åºå·" align="center" prop="id" width="80" /> |
| | | <el-table-column label="å»é¢åç§°" align="center" prop="hospitalname" show-overflow-tooltip width="260" /> |
| | | <el-table-column label="åºæ¶éé¢" align="center" prop="organcharge" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="å·²æ¶éé¢" align="center" prop="amount" width="160" :formatter="amountFormatter" /> |
| | | <el-table-column label="æªæ¶éé¢" align="center" prop="nonpayment" width="160" :formatter="amountFormatter" /> |
| | | </el-table> |
| | | |
| | | <div style="margin: 10px;text-align: right;"> |
| | |
| | | listsfeistatistics, |
| | | listbxiaostatistics, |
| | | listjixstatistics, |
| | | listanlstatistics |
| | | listanlstatistics, |
| | | exportChargeStatistics |
| | | } from "@/api/project/statistics"; |
| | | |
| | | import { listUser } from "@/api/project/organization"; |
| | |
| | | countyname: "", |
| | | cuuntry: "", |
| | | |
| | | selecttime: "", |
| | | selecttime: [], |
| | | reportervalue: "", |
| | | reportlist: [ |
| | | { label: "æªæ¶æ¬¾", value: "0" }, |
| | |
| | | // è·åç»ç»åç§°æ¶é´èå´ |
| | | daterangeReporttime: [], |
| | | // æ¥è¯¢åæ° |
| | | queryParams: {}, |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 20, |
| | | pabegtime: "", |
| | | paendtime: "", |
| | | pahospitalname: "" |
| | | }, |
| | | |
| | | // 表ååæ° |
| | | form: {}, |
| | |
| | | return Arr; |
| | | }, |
| | | |
| | | /** æ¥è¯¢æç®åºç¡å表 */ |
| | | /** æ¥è¯¢æ¶æ¬¾ç»è®¡ */ |
| | | getList() { |
| | | listsfeistatistics(this.queryParams).then(res => { |
| | | this.jxidata = res.rows; |
| | | this.jxidata.forEach(($obj, $index) => { |
| | | $obj.id = $index + 1; |
| | | this.loading = true; |
| | | listsfeistatistics(this.queryParams) |
| | | .then(res => { |
| | | this.jxidata = res.rows || []; |
| | | this.jxidata.forEach(($obj, $index) => { |
| | | $obj.id = $index + 1; |
| | | }); |
| | | this.total = res.total; |
| | | this.loading = false; |
| | | }) |
| | | .catch(() => { |
| | | this.loading = false; |
| | | }); |
| | | this.total = res.total; |
| | | }); |
| | | }, |
| | | /** å¯¼åºæé®æä½ */ |
| | | handleExport() { |
| | | const queryParams = { |
| | | pabegtime: this.queryParams.pabegtime, |
| | | paendtime: this.queryParams.paendtime, |
| | | pahospitalname: this.queryParams.pahospitalname |
| | | }; |
| | | this.$modal |
| | | .confirm("æ¯å¦ç¡®è®¤å¯¼åºå½åç鿡件ä¸çæ¶æ¬¾ç»è®¡æ°æ®ï¼") |
| | | .then(() => { |
| | | this.exportLoading = true; |
| | | return exportChargeStatistics(queryParams); |
| | | }) |
| | | .then(response => { |
| | | this.$download.name(response.msg); |
| | | this.exportLoading = false; |
| | | }) |
| | | .catch(() => { |
| | | this.exportLoading = false; |
| | | }); |
| | | }, |
| | | |
| | | // 表åéç½® |
| | |
| | | }, |
| | | /** éç½®æé®æä½ */ |
| | | resetQuery() { |
| | | this.daterangeReporttime = []; |
| | | |
| | | this.reportervalue = ""; |
| | | |
| | | this.queryParams = {}; |
| | | this.selecttime = []; |
| | | this.getTimeList(); |
| | | this.searchAddress = { |
| | | sheng: "", |
| | | shi: "", |
| | | qu: "", |
| | | organizationname: null |
| | | this.queryParams = { |
| | | pageNum: 1, |
| | | pageSize: 20, |
| | | pabegtime: "", |
| | | paendtime: "", |
| | | pahospitalname: "" |
| | | }; |
| | | |
| | | this.resetForm("queryForm"); |
| | | this.handleQuery(); |
| | | this.getList(); |
| | | }, |
| | | getTimeList(e) { |
| | | if (this.selecttime != 0) { |
| | | this.queryParams.pabegtime = this.selecttime[0]; |
| | | this.queryParams.paendtime = this.selecttime[1]; |
| | | // if (this.queryParams.paendtime == this.queryParams.pabegtime) { |
| | | // ç»ææ¶é´å"æéç»ææç次æ 1 å·"ï¼ä»¥å
嫿´ä¸ªç»ææã |
| | | // åå®ç°ææä»½ +1 åç´æ¥æ¼å符串ï¼12 æä¼å¾å° 13 æï¼2026-13-01ï¼ï¼ |
| | | // MySQL æ¥ Incorrect datetime valueï¼åå¨è¿ç¨ç´æ¥ 500ã |
| | | this.queryParams.paendtime = this.$moment(this.queryParams.paendtime) |
| | | .startOf("month") |
| | | .add(1, "month") |
| | | .format("YYYY-MM") |
| | | .concat("-01 00:00:00"); |
| | | this.queryParams.pabegtime = |
| | | this.queryParams.pabegtime + " " + "00" + ":" + "00" + ":" + "00"; |
| | | // } |
| | | /** æ¥æèå´ï¼æ¡ä¾æ¶é´ï¼å¼å§ 00:00:00ï¼ç»æ 23:59:59 */ |
| | | getTimeList() { |
| | | if (this.selecttime && this.selecttime.length === 2) { |
| | | this.queryParams.pabegtime = this.selecttime[0] + " 00:00:00"; |
| | | this.queryParams.paendtime = this.selecttime[1] + " 23:59:59"; |
| | | } else { |
| | | // this.queryParams.pabegtime = "1998-01-01 00:00:00"; |
| | | // this.queryParams.paendtime = "2998-01-01 00:00:00"; |
| | | this.queryParams.pabegtime = ""; |
| | | this.queryParams.paendtime = ""; |
| | | } |
| | | }, |
| | | /** é颿¾ç¤ºï¼ä¿ç两ä½å°æ°ï¼0 æ¾ç¤º 0.00 */ |
| | | amountFormatter(row, column, cellValue) { |
| | | if (cellValue === null || cellValue === undefined || cellValue === "") { |
| | | return "0.00"; |
| | | } |
| | | const num = Number(cellValue); |
| | | return Number.isFinite(num) ? num.toFixed(2) : "0.00"; |
| | | }, |
| | | getSummaries(param) { |
| | | const { columns, data } = param; |
| | | const sums = []; |
| | | var columnnames = ["receivemonth", "hospitalname"]; |
| | | var columnnames = ["hospitalname"]; |
| | | columns.forEach((column, index) => { |
| | | if (index === 0) { |
| | | sums[index] = "å计"; |
| | |
| | | </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; |
| | | } |
| | | }, |
| | | |