| src/api/project/register.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/project/donationdetails/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/project/fund/applyDetail/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/project/fund/ethicalExpertFeeApply/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/project/fund/expertFeeApply/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/project/fund/medicalCostApply/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/project/register/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/project/statistics/applyStatistics/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/project/statistics/caseStatistics/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/project/statistics/chargeStatistics/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/project/statistics/performanceStaristics/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/project/register.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ import request from '@/utils/request' // æ¥è¯¢å¨å®å»å¤åè¡¨ï¼æ°æ®æºï¼è§å¾ v_service_donateorgan_registerï¼ export function listRegister(query) { return request({ url: '/project/register/list', method: 'get', params: query }) } // æ¥è¯¢å¨å®å»å¤è¯¦ç» export function getRegister(id) { return request({ url: '/project/register/' + id, method: 'get' }) } // 导åºå¨å®å»å¤å表 export function exportRegister(query) { return request({ url: '/project/register/export', method: 'get', params: query }) } src/views/project/donationdetails/index.vue
@@ -4539,16 +4539,16 @@ overflow: hidden; transition: all 0.3s ease; // 左侧工ä½è¿ç¨æ // 左侧工ä½è¿ç¨æ ï¼2026-10-22ï¼å»æåºè²ï¼åªç䏿¡åéçº¿ï¼æ 颿忹åçéï¼ .left-course { background: #fff; background: transparent; width: 220px; min-width: 220px; text-align: center; margin: 0; padding: 0; height: 100%; box-shadow: 2px 0 8px rgba(16, 24, 40, 0.08); border-right: 1px solid var(--opo-border-base, #e5e7eb); transition: all 0.3s ease; position: relative; z-index: 100; @@ -4583,10 +4583,10 @@ flex-direction: column; .title { background: var(--opo-primary, #0e768f); background: transparent; margin-bottom: 0; padding: 15px 10px; color: #fff; color: var(--opo-primary, #0e768f); font-size: 16px; font-weight: 600; display: flex; @@ -4596,11 +4596,13 @@ transition: all 0.3s ease; min-height: 54px; // ç¡®ä¿æ é¢åºåæåºå®é«åº¦ box-sizing: border-box; border-bottom: 1px solid var(--opo-border-base, #e5e7eb); .collapse-btn { background: rgba(255, 255, 255, 0.2); border: none; color: #fff; // æ é¢åºè²å»æåï¼æé®æ¹ä¸ºæµ éæè¾¹é£æ ¼ï¼é¿å ç½åºç½åçä¸è§ background: var(--opo-primary-light-9, #e7f1f4); border: 1px solid var(--opo-primary-light-7, #b7d6dd); color: var(--opo-primary, #0e768f); width: 32px; // ç¨å¾®å¢å¤§ç¡®ä¿å¯ç¹å»åºå height: 32px; padding: 0; @@ -4612,7 +4614,8 @@ flex-shrink: 0; // 鲿¢æé®è¢«å缩 &:hover { background: rgba(255, 255, 255, 0.3); background: var(--opo-primary-light-7, #b7d6dd); border-color: var(--opo-primary, #0e768f); transform: scale(1.1); } src/views/project/fund/applyDetail/index.vue
@@ -69,14 +69,6 @@ <el-input :disabled="true" v-model="form.donorname" placeholder="请è¾å ¥æç®è å§å" /> </el-form-item> </el-col> <el-col :span="4"> <div style="margin-left: 10px;"> <dict-tag :options="dict.type.sys_DonationStatus" :value="form.invoicecount" /> </div> </el-col> <el-col :span="10"> <el-form-item label="ç³è¯·è¯´æ" prop="remark"> <el-input v-model="form.remark" placeholder="ç³è¯·è¯´æ" /> @@ -2606,6 +2598,23 @@ }); this.batchdialogVisible = true; }, /** * æç»è¡æ¯å¦ä¸ºã空记å½ãï¼æå¡é¡¹ç®ãä¸å®¶ãä¸å®¶æå¨åä½ æ¯å¦é½ä¸ºç©º * ç¨äºæ¹éå½å ¥ä¸å®¶æ¶å¤æ"å¤ç¨æåä¸è¡"è¿æ¯"è¿½å æ°è¡" */ isBlankDetailRow(row) { if (!row) { return false; } const isEmpty = v => v === null || v === undefined || String(v).trim() === ""; return ( isEmpty(row.itemid) && isEmpty(row.beneficiaryname) && isEmpty(row.unitno) && isEmpty(row.unitname) ); }, /** æ¹éå½å ¥å¼¹æ¡ï¼å§å/åä½/å·¥å·/身份è¯å4ä½ å½ä¸å¤æ */ personMatchKeyword(item, kw) { const idcard = String(item.idcrad || ""); @@ -2631,6 +2640,17 @@ existed[String(row.beneficiaryname).trim()] = true; } }); // 2026-10-22ï¼ä¿®æ£"å¯¼å ¥åè¡¨æ ¼å¤åºä¸è¡ç©ºè®°å½"ã // è§åï¼å çæå䏿¡è®°å½ï¼è¥å®ç"æå¡é¡¹ç® / ä¸å®¶ / ä¸å®¶æå¨åä½"齿¯ç©ºçï¼ // è¯´ææ¯ä¸æ¡ç©ºè®°å½ï¼å°±ä»è¿ä¸è¡å¼å§å¡«ï¼å¦åè¿½å æ°è¡ã let writeIndex = this.rbDetails.length; if ( writeIndex > 0 && this.isBlankDetailRow(this.rbDetails[writeIndex - 1]) ) { writeIndex -= 1; } const duplicated = []; this.checkedCities.forEach(item => { @@ -2690,7 +2710,13 @@ annexfiles: null }; if (writeIndex < this.rbDetails.length) { // å¤ç¨æå飿¡ç©ºè®°å½ this.rbDetails.splice(writeIndex, 1, rowData); } else { this.rbDetails.push(rowData); } writeIndex++; }); for (let i = 0; i < this.rbDetails.length; i++) { this.rbDetails[i].orderno = i + 1; src/views/project/fund/ethicalExpertFeeApply/index.vue
@@ -1,123 +1,67 @@ <!-- --> <template> <div class="app-container"> <el-row> <el-col :span="24"> <el-card shadow="naver"> <el-form ref="infoform" label-width="100px"> <!-- æ¥éåçéï¼æç®è ã审æ¹ç¶æ --> <el-form class="opo-query-form" :model="queryParams" ref="queryForm" :model="fundQueryParam" ref="fundQueryForm" :inline="true" label-width="70px" label-width="82px" > <el-row align="left"> <el-row> <el-col :span="6"> <el-form-item label="å§å" prop="name"> <el-form-item label="æç®è " prop="donorname"> <el-input v-model="queryParams.name" placeholder="请è¾å ¥å§å" v-model="fundQueryParam.donorname" placeholder="请è¾å ¥æç®è å§å" clearable size="small" @keyup.enter.native="handleQuery" @keyup.enter.native="handleQueryFund" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="æç®è¿åº¦" prop="recordstate"> <el-form-item label="审æ¹ç¶æ" prop="recordstatus"> <el-select v-model="queryParams.recordstate" placeholder="è¯·éæ©è®°å½ç¶æ" v-model="fundQueryParam.recordstatus" placeholder="è¯·éæ©å®¡æ¹ç¶æ" clearable size="small" style="width: 100%" > <el-option v-for="dict in dict.type.sys_DonationStatus" v-for="dict in dict.type.sys_recordstatus" :key="dict.value" :label="dict.label" :value="dict.value" :value="Number(dict.value)" /> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="æç®è " prop="name"> <el-input v-model="queryParams.donorname" placeholder="请è¾å ¥æç®è å§å" clearable size="small" @keyup.enter.native="handleQuery" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label-width="10px"> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" size="small" @click="handleQueryFund" >æç´¢</el-button > <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" <el-button icon="el-icon-refresh" size="small" @click="resetFundQuery" >éç½®</el-button > </el-form-item> </el-col> </el-row> </el-form> <el-row> <el-col :span="6"> <el-card shadow="never"> <!-- æç®æ¡ä¾å表 --> <el-row> <el-col :span="10"> <el-row type="flex" :gutter="10" align="right" class="mb8"> </el-row> </el-col> </el-row> <el-table v-loading="loading" border highlight-current-row :data="donatebaseinfoList" @row-click="selectDonotor" > <!-- <el-table-column label="æç®ç¼å·" align="center" prop="donorno" /> --> <el-table-column label="æç®è¿åº¦" align="center" prop="recordstate"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_DonationStatus" :value="scope.row.recordstate" /> </template> </el-table-column> <el-table-column label="å§å" align="center" prop="name" /> </el-table> <pagination v-show="total > 0" :total="total" small :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getBaseInfoList" /> </el-card> </el-col> <el-col :span="18"> <el-card shadow="naver"> <el-form ref="infoform" label-width="100px"> <el-row :gutter="4" align="right" class="mb8"> <el-col :span="9"> <el-form-item label="æç®ç¼å·"> <el-input v-model="curCase.donorno" :disabled="true" ></el-input> </el-form-item> </el-col> <el-col :span="9"> <el-form-item label="å§å"> <el-input v-model="curCase.name" :disabled="true"></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button @@ -199,6 +143,13 @@ /> </template> </el-table-column> <el-table-column label="æç®è " align="center" prop="donorname" width="110px" show-overflow-tooltip /> <!-- <el-table-column label="èç³»çµè¯" align="center" prop="phone" width="150px" /> <el-table-column label="å·¥ä½åä½" align="center" prop="unitname" width="220px" /> @@ -262,11 +213,119 @@ </template> </el-table-column> </el-table> <!-- æªéæ©æ¡ä¾æ¶å±ç¤ºè¯¥ç»å½äººå ¨é¨ä¼¦ç审æ¥åæ®ï¼è¶ è¿ä¸é¡µå¯ç¨å页翻ç --> <pagination v-show="fundTotal > 0" :total="fundTotal" small :page.sync="fundQueryParam.pageNum" :limit.sync="fundQueryParam.pageSize" @pagination="listFundData" /> </el-row> </el-form> </el-card> </el-col> </el-row> <!-- æ°å¢ç³è¯·ååå éæ©æç®æ¡ä¾ï¼å左侧æ¡ä¾å表移å°è¿éï¼ --> <el-dialog title="éæ©æç®æ¡ä¾" :visible.sync="caseDialogVisible" width="760px" append-to-body > <el-form class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" label-width="70px" > <el-row> <el-col :span="8"> <el-form-item label="å§å" prop="name"> <el-input v-model="queryParams.name" placeholder="请è¾å ¥å§å" clearable size="small" @keyup.enter.native="handleQuery" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="æç®è¿åº¦" prop="recordstate"> <el-select v-model="queryParams.recordstate" placeholder="è¯·éæ©è®°å½ç¶æ" clearable size="small" style="width: 100%" > <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-col> <el-col :span="8"> <el-form-item label-width="10px"> <el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery" >æç´¢</el-button > <el-button icon="el-icon-refresh" size="small" @click="resetQuery" >éç½®</el-button > </el-form-item> </el-col> </el-row> </el-form> <el-table ref="caseTable" v-loading="loading" border height="380" highlight-current-row :data="donatebaseinfoList" @row-click="selectDonotor" > <el-table-column label="æç®è¿åº¦" align="center" prop="recordstate"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_DonationStatus" :value="scope.row.recordstate" /> </template> </el-table-column> <el-table-column label="å§å" align="center" prop="name" /> <el-table-column label="æä½" align="center" width="90"> <template slot-scope="scope"> <el-button type="text" size="mini" @click="selectDonotor(scope.row)" >éæ©</el-button > </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" small :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getBaseInfoList" /> <div slot="footer" class="dialog-footer"> <el-button @click="caseDialogVisible = false">å æ¶</el-button> </div> </el-dialog> <!-- æ·»å æä¿®æ¹è´¹ç¨ç³è¯·å --> <el-dialog @@ -1013,11 +1072,19 @@ }, fundQueryParam: { pageNum: 1, pageSize: 100, pageSize: 10, infoid: null, applytype: "2", createBy: null createBy: null, // æ¥éåç鿡件 donorname: null, recordstatus: null }, // å³ä¾§æ¥éåæ»æ°ï¼ç¨äºåé¡µï¼ fundTotal: 0, // ãéæ©æç®æ¡ä¾ãå¯¹è¯æ¡ï¼æ°å¢ç³è¯·åæ¶ä½¿ç¨ï¼ caseDialogVisible: false, casePickerMode: "", // 表ååæ° form: {}, // è¡¨åæ ¡éª @@ -1104,7 +1171,14 @@ }, /** æ°å¢æé®æä½ */ handleAdd() { if (this.curCase.id) { // æ°å¢ç³è¯·åï¼å å¼¹åºãéæ©æç®æ¡ä¾ãå¯¹è¯æ¡ this.casePickerMode = "add"; this.caseDialogVisible = true; this.getBaseInfoList(); }, /** æºå¸¦å·²éæ¡ä¾è·³è½¬å°ç³è¯·åå¡«å页 */ goApplyAdd() { this.$router.push({ path: "/finance/applyDetail/", query: { @@ -1114,45 +1188,6 @@ curCase: this.curCase } }); } else { const h = this.$createElement; this.$message({ message: h("p", null, [ h("span", null, "请å¨å·¦è¾¹çæç®æ¡ä¾è¡¨éæ©éè¦æä½çæ¡ä¾ï¼") ]) }); } return; if (this.curCase.id) { this.istrue += 2; this.reset(); this.dialogOpen = true; this.title = "æ·»å è´¹ç¨ç³è¯·"; this.dialogType = "edit"; this.queryParams.params = {}; this.form.infoid = this.curCase.id; this.form.donorno = this.curCase.donorno; this.form.donorname = this.curCase.name; this.form.username = this.defaultperson.nickName; this.form.userno = this.defaultperson.userName; this.form.deptmentname = this.defaultperson.dept.deptName; this.form.deptmentno = this.defaultperson.dept.deptId; this.form.managername = this.defaultperson.dept.leader; // this.form.createTime = nowdate; //this.open = true; //this.initFundApplyForm(); this.fundDetailArr = []; this.fundflowList = []; this.addRow(); } else { const h = this.$createElement; this.$message({ message: h("p", null, [h("span", null, "请å éæ©å·¦æ¹æç®æ¡ä¾ ")]) }); } }, /** ä¿®æ¹æé®æä½ */ handleUpdate(row) { @@ -1496,18 +1531,60 @@ //ç¹å»æç®æ¡ä¾åè¡¨è§¦åæ¹æ³ selectDonotor(row, column, event) { this.curCase = row; this.getfundList(); if (this.casePickerMode === "add") { // ä»ãæ°å¢ç³è¯·åãè¿å ¥ï¼é宿¡ä¾ç´æ¥è·³å°ç³è¯·åå¡«å页 this.casePickerMode = ""; this.caseDialogVisible = false; this.goApplyAdd(); } }, /** æå½å fundQueryParam æ¥è¯¢å³ä¾§æ¥éåå表 */ listFundData() { this.loading = true; listFund(this.fundQueryParam).then(response => { this.loading = false; this.donateconsolationfundList = response.rows; this.fundTotal = response.total; }); }, /** æ¥éåçéï¼æç´¢ */ handleQueryFund() { this.fundQueryParam.pageNum = 1; this.listFundData(); }, /** æ¥éåçéï¼éç½®ï¼æ¸ 空æ¡ä»¶ä¸å·²éæ¡ä¾ï¼åå°è¯¥ç»å½äººå ¨é¨åæ®ï¼ */ resetFundQuery() { this.fundQueryParam.donorname = null; this.fundQueryParam.recordstatus = null; this.getAllfundList(); }, /** æ£ç´¢å ¨é¨ï¼åæ¶æ¡ä¾éæ©ä¸çéæ¡ä»¶ï¼æ¥è¯¢å½åç»å½äººçå ¨é¨ä¼¦ç审æ¥åæ® */ getAllfundList() { this.curCase = {}; if (this.$refs.caseTable) { this.$refs.caseTable.setCurrentRow(); } this.reset(); this.fundQueryParam.infoid = null; this.fundQueryParam.donorname = null; this.fundQueryParam.recordstatus = null; this.fundQueryParam.pageNum = 1; this.listFundData(); }, //è·åæ¡ä¾ä¸å®¶è´¹ç¨ç³è¯·å getfundList() { this.loading = true; this.reset(); // é䏿¡ä¾åææ¡ä¾å±ç¤ºï¼åæ¶æ¸ æå表ç鿡件ï¼é¿å 两个æ¡ä»¶å å 导è´ç©ºå表 this.fundQueryParam.donorname = null; this.fundQueryParam.recordstatus = null; this.fundQueryParam.infoid = this.curCase.id; listFund(this.fundQueryParam).then(response => { this.loading = false; this.donateconsolationfundList = response.rows; }); this.fundQueryParam.pageNum = 1; this.listFundData(); }, select(row) { @@ -2058,10 +2135,11 @@ //çå½å¨æ - åå»ºå®æï¼å¯ä»¥è®¿é®å½åthiså®ä¾ï¼ created() { this.getUnitList(); this.getList(); this.getBaseInfoList(); // æ¡ä¾åè¡¨å·²ç§»å ¥ãéæ©æç®æ¡ä¾ãå¯¹è¯æ¡ï¼æå¼å¯¹è¯æ¡æ¶åæ¥è¯¢ this.getlistUser(); this.getCurFundType(); // é¦å±å±ç¤ºå½åç»å½äººçå ¨é¨ä¼¦ç审æ¥åæ® this.getAllfundList(); }, //çå½å¨æ - æè½½å®æï¼å¯ä»¥è®¿é®DOMå ç´ ï¼ mounted() { src/views/project/fund/expertFeeApply/index.vue
@@ -2,120 +2,66 @@ <template> <div class="app-container"> <el-row> <el-col :span="6"> <el-card shadow="never"> <!-- æç®æ¡ä¾å表 --> <el-row> <el-col :span="10"> <el-row type="flex" :gutter="10" align="right" class="mb8"> </el-row> </el-col> </el-row> <div> <el-col :span="24"> <el-card shadow="naver"> <el-form ref="infoform" label-width="100px"> <!-- æ¥éåçéï¼æç®è ã审æ¹ç¶æ --> <el-form class="opo-query-form" :model="queryParams" ref="queryForm" :model="fundQueryParam" ref="fundQueryForm" :inline="true" label-width="70px" label-width="82px" > <el-form-item label="å§å" prop="name"> <el-row> <el-col :span="6"> <el-form-item label="æç®è " prop="donorname"> <el-input v-model="queryParams.name" placeholder="请è¾å ¥å§å" v-model="fundQueryParam.donorname" placeholder="请è¾å ¥æç®è å§å" clearable size="small" @keyup.enter.native="handleQuery" @keyup.enter.native="handleQueryFund" /> </el-form-item> <el-form-item label="æç®è¿åº¦" prop="recordstate"> </el-col> <el-col :span="6"> <el-form-item label="审æ¹ç¶æ" prop="recordstatus"> <el-select v-model="queryParams.recordstate" placeholder="è¯·éæ©è®°å½ç¶æ" v-model="fundQueryParam.recordstatus" placeholder="è¯·éæ©å®¡æ¹ç¶æ" clearable size="small" style="width: 100%" > <el-option v-for="dict in dict.type.sys_DonationStatus" v-for="dict in dict.type.sys_recordstatus" :key="dict.value" :label="dict.label" :value="dict.value" :value="Number(dict.value)" /> </el-select> </el-form-item> <div style="float: right; margin-bottom: 10px;"> </el-col> <el-col :span="6"> <el-form-item label-width="10px"> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" size="small" @click="handleQueryFund" >æç´¢</el-button > <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" size="small" @click="resetFundQuery" >éç½®</el-button > </div> </el-form> </div> <el-table v-loading="loading" highlight-current-row :data="donatebaseinfoList" @row-click="selectDonotor" > <!-- <el-table-column label="æç®ç¼å·" align="center" prop="donorno" /> --> <el-table-column label="æç®è¿åº¦" align="center" prop="recordstate"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_DonationStatus" :value="scope.row.recordstate" :key="dict.value" /> <!-- :label="dict.label" --> </template> </el-table-column> <el-table-column label="å§å" align="center" prop="name" /> </el-table> <pagination v-show="total > 0" :total="total" small :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getBaseInfoList" /> </el-card> </el-col> <el-col :span="18"> <el-card shadow="naver"> <el-form ref="infoform" label-width="100px"> <el-row :gutter="4" align="right" class="mb8"> <el-col :span="7"> <el-form-item label="æç®ç¼å·"> <el-input v-model="curCase.donorno" :disabled="true" ></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="å§å"> <el-input v-model="curCase.name" :disabled="true"></el-input> </el-form-item> </el-col> <el-col :span="3"> <el-button type="primary" icon="el-icon-search" size="mini" @click="allgetfundList" >æ£ç´¢å ¨é¨</el-button > </el-col> </el-row> </el-form> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button @@ -269,6 +215,8 @@ <!-- v-hasPermi="['project:expretfund:download']" --> </template> </el-table-column> <!-- 2026-10-22ï¼æè¦æ±éèãåè½ãåï¼çº¿ä¸æ¥éï¼ï¼éè¦æ¶åæ¶æ³¨éå³å¯æ¢å¤ --> <!-- <el-table-column fixed="right" align="center" @@ -288,12 +236,121 @@ > </template> </el-table-column> --> </el-table> <!-- æªéæ©æ¡ä¾æ¶å±ç¤ºè¯¥ç»å½äººå ¨é¨ä¸å®¶å³å¡åæ®ï¼è¶ è¿ä¸é¡µå¯ç¨å页翻ç --> <pagination v-show="fundTotal > 0" :total="fundTotal" small :page.sync="fundQueryParam.pageNum" :limit.sync="fundQueryParam.pageSize" @pagination="listFundData" /> </el-row> </el-form> </el-card> </el-col> </el-row> <!-- æ°å¢ç³è¯·ååå éæ©æç®æ¡ä¾ï¼å左侧æ¡ä¾å表移å°è¿éï¼ --> <el-dialog title="éæ©æç®æ¡ä¾" :visible.sync="caseDialogVisible" width="760px" append-to-body > <el-form class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" label-width="70px" > <el-row> <el-col :span="8"> <el-form-item label="å§å" prop="name"> <el-input v-model="queryParams.name" placeholder="请è¾å ¥å§å" clearable size="small" @keyup.enter.native="handleQuery" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="æç®è¿åº¦" prop="recordstate"> <el-select v-model="queryParams.recordstate" placeholder="è¯·éæ©è®°å½ç¶æ" clearable size="small" style="width: 100%" > <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-col> <el-col :span="8"> <el-form-item label-width="10px"> <el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery" >æç´¢</el-button > <el-button icon="el-icon-refresh" size="small" @click="resetQuery" >éç½®</el-button > </el-form-item> </el-col> </el-row> </el-form> <el-table ref="caseTable" v-loading="loading" border height="380" highlight-current-row :data="donatebaseinfoList" @row-click="selectDonotor" > <el-table-column label="æç®è¿åº¦" align="center" prop="recordstate"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_DonationStatus" :value="scope.row.recordstate" /> </template> </el-table-column> <el-table-column label="å§å" align="center" prop="name" /> <el-table-column label="æä½" align="center" width="90"> <template slot-scope="scope"> <el-button type="text" size="mini" @click="selectDonotor(scope.row)" >éæ©</el-button > </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" small :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getBaseInfoList" /> <div slot="footer" class="dialog-footer"> <el-button @click="caseDialogVisible = false">å æ¶</el-button> </div> </el-dialog> <!-- æ·»å æä¿®æ¹è´¹ç¨ç³è¯·å --> <el-dialog @@ -1215,11 +1272,16 @@ }, fundQueryParam: { pageNum: 1, pageSize: 100, pageSize: 10, infoid: null, applytype: "1", createBy: null createBy: null, // æ¥éåç鿡件 donorname: null, recordstatus: null }, // å³ä¾§æ¥éåæ»æ°ï¼ç¨äºåé¡µï¼ fundTotal: 0, // 表ååæ° form: {}, //ææäººå表 @@ -1268,6 +1330,9 @@ donatebaseinfoList: [], //å½åéä¸æç®æ¡ä¾ curCase: {}, // ãéæ©æç®æ¡ä¾ãå¯¹è¯æ¡ï¼æ°å¢ç³è¯·åæ¶ä½¿ç¨ï¼ caseDialogVisible: false, casePickerMode: "", //æ¯å¦æ¾ç¤ºè´¹ç¨ç³è¯·å¼¹çª dialogOpen: false, // title: "", @@ -1363,11 +1428,12 @@ watch: {}, //çå½å¨æ - åå»ºå®æï¼å¯ä»¥è®¿é®å½åthiså®ä¾ï¼ created() { this.getList(); this.getBaseInfoList(); // æ¡ä¾åè¡¨å·²ç§»å ¥ãéæ©æç®æ¡ä¾ãå¯¹è¯æ¡ï¼æå¼å¯¹è¯æ¡æ¶åæ¥è¯¢ this.getCurFundType(); this.getUserList(); this.getUnitList(); // é¦å±å±ç¤ºå½åç»å½äººçå ¨é¨ä¸å®¶å³å¡åæ® this.allgetfundList(); }, //çå½å¨æ - æè½½å®æï¼å¯ä»¥è®¿é®DOMå ç´ ï¼ @@ -1411,9 +1477,15 @@ }); }, /** æ°å¢æé®æä½ */ /** æ°å¢æé®æä½ï¼å å¼¹åºãéæ©æç®æ¡ä¾ãå¯¹è¯æ¡ */ handleAdd() { if (this.curCase.id) { this.casePickerMode = "add"; this.caseDialogVisible = true; this.getBaseInfoList(); }, /** æºå¸¦å·²éæ¡ä¾è·³è½¬å°ç³è¯·åå¡«å页 */ goApplyAdd() { this.$router.push({ path: "/finance/applyDetail/", query: { @@ -1423,45 +1495,6 @@ curCase: this.curCase } }); } else { const h = this.$createElement; this.$message({ message: h("p", null, [ h("span", null, "请å¨å·¦è¾¹çæç®æ¡ä¾è¡¨éæ©éè¦æä½çæ¡ä¾ï¼") ]) }); } return; if (this.curCase.id) { this.istrue += 2; this.reset(); this.queryParams.params = {}; this.form.infoid = this.curCase.id; this.form.donorno = this.curCase.donorno; this.form.donorname = this.curCase.name; this.form.username = this.defaultperson.nickName; this.form.userno = this.defaultperson.userName; this.form.phone = this.defaultperson.phonenumber; this.form.deptmentname = this.defaultperson.dept.deptName; this.form.deptmentno = this.defaultperson.dept.deptId; this.form.managername = this.defaultperson.dept.leader; // this.form.createTime = nowdate; //this.open = true; //this.initFundApplyForm(); this.fundDetails = []; this.addRow(); this.dialogOpen = true; this.dialogType = "edit"; this.title = "è´¹ç¨ç³è¯·"; } else { const h = this.$createElement; this.$message({ message: h("p", null, [h("span", null, "请å éæ©å·¦æ¹æç®æ¡ä¾ ")]) }); } }, /** ä¿®æ¹æé®æä½ */ @@ -2171,25 +2204,57 @@ //ç¹å»æç®æ¡ä¾åè¡¨è§¦åæ¹æ³ selectDonotor(row, column, event) { this.curCase = row; this.getfundList(); if (this.casePickerMode === "add") { // ä»ãæ°å¢ç³è¯·åãè¿å ¥ï¼é宿¡ä¾ç´æ¥è·³å°ç³è¯·åå¡«å页 this.casePickerMode = ""; this.caseDialogVisible = false; this.goApplyAdd(); } }, allgetfundList() { this.loading = true; // æ£ç´¢å ¨é¨ï¼åæ¶å·¦ä¾§æ¡ä¾éæ©ä¸çéæ¡ä»¶ï¼æ¥è¯¢å½åç»å½äººçå ¨é¨ä¸å®¶å³å¡åæ® this.curCase = {}; if (this.$refs.caseTable) { this.$refs.caseTable.setCurrentRow(); } this.reset(); this.fundQueryParam.infoid = null; this.fundQueryParam.donorname = null; this.fundQueryParam.recordstatus = null; this.fundQueryParam.pageNum = 1; this.listFundData(); }, /** æ¥éåçéï¼æç´¢ */ handleQueryFund() { this.fundQueryParam.pageNum = 1; this.listFundData(); }, /** æ¥éåçéï¼éç½®ï¼æ¸ 空æ¡ä»¶ä¸å·²éæ¡ä¾ï¼åå°è¯¥ç»å½äººå ¨é¨åæ®ï¼ */ resetFundQuery() { this.fundQueryParam.donorname = null; this.fundQueryParam.recordstatus = null; this.allgetfundList(); }, /** * æå½å fundQueryParam æ¥è¯¢å³ä¾§æ¥éåå表 * infoid 为空 = å½åç»å½äººçå ¨é¨è¯¥ç±»ååæ®ï¼æå¼ = æå®æ¡ä¾ */ listFundData() { this.loading = true; listFund(this.fundQueryParam).then(response => { this.loading = false; this.donateconsolationfundList = response.rows; this.fundTotal = response.total; }); }, getfundList() { this.loading = true; this.reset(); // é䏿¡ä¾åææ¡ä¾å±ç¤ºï¼åæ¶æ¸ æå表ç鿡件ï¼é¿å 两个æ¡ä»¶å å 导è´ç©ºå表 this.fundQueryParam.donorname = null; this.fundQueryParam.recordstatus = null; this.fundQueryParam.infoid = this.curCase.id; listFund(this.fundQueryParam).then(response => { this.loading = false; this.donateconsolationfundList = response.rows; }); this.fundQueryParam.pageNum = 1; this.listFundData(); }, //å¯¼å ¥ææé¡¹ç® src/views/project/fund/medicalCostApply/index.vue
@@ -2,254 +2,94 @@ <template> <div class="app-container"> <el-row> <el-col :span="6"> <el-card shadow="never"> <!-- æç®æ¡ä¾å表 --> <el-row> <el-col :span="10"> <el-row type="flex" :gutter="10" align="right" class="mb8"> </el-row> </el-col> </el-row> <div> <el-form class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" label-width="70px" > <el-form-item label="å§å" prop="name"> <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> </el-form-item> <div style="float: right; margin-bottom: 10px;"> <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 > </div> </el-form> </div> <el-table v-loading="loading" border highlight-current-row :data="donatebaseinfoList" @row-click="selectDonotor" > <!-- <el-table-column label="æç®ç¼å·" align="center" prop="donorno" /> --> <el-table-column label="æç®è¿åº¦" align="center" prop="recordstate"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_DonationStatus" :value="scope.row.recordstate" /> </template> </el-table-column> <el-table-column label="å§å" align="center" prop="name" /> </el-table> <pagination v-show="total > 0" :total="total" small :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getBaseInfoList" /> </el-card> </el-col> <el-col :span="18"> <el-col :span="24"> <el-card shadow="naver"> <el-form ref="infoform" label-width="100px"> <el-row :gutter="4" align="right" class="mb8"> <el-col :span="9"> <el-form-item label="æç®ç¼å·"> <el-input v-model="curCase.donorno" :disabled="true" ></el-input> <!-- æ¥éåçéï¼æç®è ã审æ¹ç¶æ --> <el-form class="opo-query-form" :model="fundQueryParam" ref="fundQueryForm" :inline="true" label-width="82px"> <el-row> <el-col :span="6"> <el-form-item label="æç®è " prop="donorname"> <el-input v-model="fundQueryParam.donorname" placeholder="请è¾å ¥æç®è å§å" clearable size="small" @keyup.enter.native="handleQueryFund" /> </el-form-item> </el-col> <el-col :span="9"> <el-form-item label="å§å"> <el-input v-model="curCase.name" :disabled="true"></el-input> <el-col :span="6"> <el-form-item label="审æ¹ç¶æ" prop="recordstatus"> <el-select v-model="fundQueryParam.recordstatus" placeholder="è¯·éæ©å®¡æ¹ç¶æ" clearable size="small" style="width: 100%"> <el-option v-for="dict in dict.type.sys_recordstatus" :key="dict.value" :label="dict.label" :value="Number(dict.value)" /> </el-select> </el-form-item> </el-col> <el-col> </el-col> <el-col :span="6"> <el-form-item label-width="10px"> <el-button type="primary" icon="el-icon-search" size="small" @click="handleQueryFund">æç´¢</el-button> <el-button icon="el-icon-refresh" size="small" @click="resetFundQuery">éç½®</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="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['project:medicalfund:add']" >æ°å¢ç³è¯·å</el-button > <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['project:medicalfund:add']">æ°å¢ç³è¯·å</el-button> </el-col> </el-row> <el-row> <el-table v-loading="loading" border :data="donateconsolationfundList" :row-class-name="rowClassName" > <el-table-column label="ç³è¯·æ¥æ" align="center" prop="applyTime" width="150px" > <el-table v-loading="loading" border :data="donateconsolationfundList" :row-class-name="rowClassName"> <el-table-column label="ç³è¯·æ¥æ" align="center" prop="applyTime" width="150px"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.applyTime, "{y}-{m}-{d}") }}</span> </template> </el-table-column> <el-table-column label="ç³è¯·äºº" align="center" prop="username" width="120px" /> <el-table-column label="ç³è¯·éé¢" align="center" prop="pretaxcost" width="200px" /> <el-table-column label="æå±ç»å«" align="center" prop="deptmentname" width="220px" /> <el-table-column label="ç»é¿" align="center" prop="managername" width="200px" /> <el-table-column label="å®¡æ ¸ç¶æ" align="center" prop="recordstatus" > <el-table-column label="ç»å人" align="center" prop="username" width="120px" /> <el-table-column label="ç³è¯·éé¢" align="center" prop="pretaxcost" width="200px" /> <el-table-column label="å®¡æ ¸ç¶æ" align="center" prop="recordstatus"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_recordstatus" :value="scope.row.recordstatus" /> <dict-tag :options="dict.type.sys_recordstatus" :value="scope.row.recordstatus" /> </template> </el-table-column> <el-table-column label="ææé¢å®¡ç¶æ" width="140" align="center" prop="checkstatus" > <el-table-column label="ææé¢å®¡ç¶æ" width="140" align="center" prop="checkstatus"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_stage_type" :value="scope.row.checkstatus" /> <dict-tag :options="dict.type.sys_stage_type" :value="scope.row.checkstatus" /> </template> </el-table-column> <el-table-column label="æç®è " align="center" prop="donorname" show-overflow-tooltip /> <el-table-column label="æå±ç»å«" align="center" prop="deptmentname"/> <el-table-column label="ç»é¿" align="center" prop="managername" /> <!-- <el-table-column label="èç³»çµè¯" align="center" prop="phone" width="150px" /> <el-table-column label="å·¥ä½åä½" align="center" prop="unitname" width="150px" /> --> <el-table-column label="æä½" fixed="right" align="center" class-name="small-padding fixed-width" width="280px" > <el-table-column label="æä½" fixed="right" align="center" class-name="small-padding fixed-width" width="280px"> <template slot-scope="scope"> <el-button v-if=" <el-button v-if=" scope.row.recordstatus == -1 || scope.row.recordstatus == 1 " size="mini" type="text" icon="el-icon-edit" @click="handleup(scope.row)" >䏿¥</el-button > <el-button v-if=" " size="mini" type="text" icon="el-icon-edit" @click="handleup(scope.row)">䏿¥</el-button> <el-button v-if=" scope.row.recordstatus == -1 || scope.row.recordstatus == 1 " size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" >ä¿®æ¹</el-button > <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)" >æ¥ç</el-button > <el-button v-if=" " size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">ä¿®æ¹</el-button> <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)">æ¥ç</el-button> <el-button v-if=" scope.row.recordstatus == -1 || scope.row.recordstatus == 1 " size="mini" type="text" @click="handleDelete(scope.row)" ><span class="button-delete" ><i class="el-icon-delete"></i>å é¤</span ></el-button > <el-button size="mini" type="text" icon="el-icon-download" @click="mixExport(scope.row.id)" >ä¸è½½</el-button > " size="mini" type="text" @click="handleDelete(scope.row)"><span class="button-delete"><i class="el-icon-delete"></i>å é¤</span></el-button> <el-button size="mini" type="text" icon="el-icon-download" @click="mixExport(scope.row.id)">ä¸è½½</el-button> </template> </el-table-column> <!-- 2026-10-22ï¼æè¦æ±éèãåè½ãåï¼çº¿ä¸æ¥éï¼ï¼éè¦æ¶åæ¶æ³¨éå³å¯æ¢å¤ --> <!-- <el-table-column fixed="right" align="center" @@ -269,12 +109,64 @@ > </template> </el-table-column> --> </el-table> <!-- æªéæ©æ¡ä¾æ¶å±ç¤ºè¯¥ç»å½äººå ¨é¨å»å¦ææ¬åæ®ï¼è¶ è¿ä¸é¡µå¯ç¨å页翻ç --> <pagination v-show="fundTotal > 0" :total="fundTotal" small :page.sync="fundQueryParam.pageNum" :limit.sync="fundQueryParam.pageSize" @pagination="listFundData" /> </el-row> </el-form> </el-card> </el-col> </el-row> <!-- æ°å¢ç³è¯·ååå éæ©æç®æ¡ä¾ï¼å左侧æ¡ä¾å表移å°è¿éï¼ --> <el-dialog title="éæ©æç®æ¡ä¾" :visible.sync="caseDialogVisible" width="760px" append-to-body> <el-form class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" label-width="70px"> <el-row> <el-col :span="8"> <el-form-item label="å§å" prop="name"> <el-input v-model="queryParams.name" placeholder="请è¾å ¥å§å" clearable size="small" @keyup.enter.native="handleQuery" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="æç®è¿åº¦" prop="recordstate"> <el-select v-model="queryParams.recordstate" placeholder="è¯·éæ©è®°å½ç¶æ" clearable size="small" style="width: 100%"> <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-col> <el-col :span="8"> <el-form-item label-width="10px"> <el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">æç´¢</el-button> <el-button icon="el-icon-refresh" size="small" @click="resetQuery">éç½®</el-button> </el-form-item> </el-col> </el-row> </el-form> <el-table ref="caseTable" v-loading="loading" border height="380" highlight-current-row :data="donatebaseinfoList" @row-click="selectDonotor"> <el-table-column label="æç®è¿åº¦" align="center" prop="recordstate"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_DonationStatus" :value="scope.row.recordstate" /> </template> </el-table-column> <el-table-column label="å§å" align="center" prop="name" /> <el-table-column label="æä½" align="center" width="90"> <template slot-scope="scope"> <el-button type="text" size="mini" @click="selectDonotor(scope.row)">éæ©</el-button> </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" small :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getBaseInfoList" /> <div slot="footer" class="dialog-footer"> <el-button @click="caseDialogVisible = false">å æ¶</el-button> </div> </el-dialog> </div> </template> @@ -387,10 +279,13 @@ fundQueryParam: { pageNum: 1, pageSize: 100, pageSize: 10, infoid: null, applytype: "3", createBy: null createBy: null, // æ¥éåç鿡件 donorname: null, recordstatus: null }, // 表ååæ° form: {}, @@ -412,6 +307,9 @@ donatebaseinfoList: [], //å½åéä¸æç®æ¡ä¾ curCase: {}, // ãéæ©æç®æ¡ä¾ãå¯¹è¯æ¡ï¼æ°å¢ç³è¯·åæ¶ä½¿ç¨ï¼ caseDialogVisible: false, casePickerMode: "", //æ¯å¦æ¾ç¤ºè´¹ç¨ç³è¯·å¼¹çª dialogOpen: false, // title: "", @@ -420,6 +318,8 @@ // æç®äººéæ °é®éè¡¨æ ¼æ°æ® donateconsolationfundList: [], // å³ä¾§æ¥éåæ»æ°ï¼ç¨äºåé¡µï¼ fundTotal: 0, //æç»è®°å½ fundDetails: [], @@ -473,11 +373,12 @@ watch: {}, //çå½å¨æ - åå»ºå®æï¼å¯ä»¥è®¿é®å½åthiså®ä¾ï¼ created() { this.getList(); this.getBaseInfoList(); // æ¡ä¾åè¡¨å·²ç§»å ¥ãéæ©æç®æ¡ä¾ãå¯¹è¯æ¡ï¼æå¼å¯¹è¯æ¡æ¶åæ¥è¯¢ this.getCurFundType(); this.getlistUser(); // this.getUnitList(); // é¦å±å±ç¤ºå½åç»å½äººçå ¨é¨å»å¦ææ¬åæ® this.getAllfundList(); }, //çå½å¨æ - æè½½å®æï¼å¯ä»¥è®¿é®DOMå ç´ ï¼ @@ -501,7 +402,7 @@ this.queryParams.pageNum = 1; this.getList(); }, /** éç½®æé®æä½ */ /** éç½®æé®æä½ï¼æ¡ä¾éæ©å¯¹è¯æ¡å çæ¡ä¾æ¥è¯¢ï¼ */ resetQuery() { this.daterangeReporttime = []; @@ -538,9 +439,15 @@ }); }, /** æ°å¢æé®æä½ */ /** æ°å¢æé®æä½ï¼å å¼¹åºãéæ©æç®æ¡ä¾ãå¯¹è¯æ¡ */ handleAdd() { if (this.curCase.id) { this.casePickerMode = "add"; this.caseDialogVisible = true; this.getBaseInfoList(); }, /** æºå¸¦å·²éæ¡ä¾è·³è½¬å°ç³è¯·åå¡«å页 */ goApplyAdd() { this.$router.push({ path: "/finance/applyDetail/", query: { @@ -550,43 +457,6 @@ curCase: this.curCase, } }); } else { const h = this.$createElement; this.$message({ message: h("p", null, [ h("span", null, "请å¨å·¦è¾¹çæç®æ¡ä¾è¡¨éæ©éè¦æä½çæ¡ä¾ï¼") ]) }); } return; if (this.curCase.id) { this.istrue += 2; this.reset(); this.queryParams.params = {}; this.form.donorno = this.curCase.donorno; this.form.name = this.curCase.name; this.form.infoid = this.curCase.id; this.form.username = this.defaultperson.nickName; this.form.userno = this.defaultperson.userName; this.form.deptmentname = this.defaultperson.dept.deptName; this.form.deptmentno = this.defaultperson.dept.deptId; this.form.managername = this.defaultperson.dept.leader; // this.form.createTime = nowdate; //this.open = true; //this.initFundApplyForm(); this.fundDetails = []; this.addRow(); this.dialogOpen = true; this.title = "æ·»å è´¹ç¨ç³è¯·"; this.dialogType = "edit"; } else { const h = this.$createElement; this.$message({ message: h("p", null, [h("span", null, "请å éæ©å·¦æ¹æç®æ¡ä¾ ")]) }); } }, /** ä¿®æ¹æé®æä½ */ handleUpdate(row) { @@ -886,20 +756,68 @@ }); }, //ç¹å»æç®æ¡ä¾åè¡¨è§¦åæ¹æ³ //ç¹å»æç®æ¡ä¾åè¡¨è§¦åæ¹æ³ï¼æ¡ä¾åè¡¨å·²ç§»å ¥ãéæ©æç®æ¡ä¾ãå¯¹è¯æ¡ï¼ selectDonotor(row, column, event) { this.curCase = row; this.getfundList(); if (this.casePickerMode === "add") { // ä»ãæ°å¢ç³è¯·åãè¿å ¥ï¼é宿¡ä¾ç´æ¥è·³å°ç³è¯·åå¡«å页 this.casePickerMode = ""; this.caseDialogVisible = false; this.goApplyAdd(); } }, getfundList() { this.loading = true; this.reset(); // é䏿¡ä¾åææ¡ä¾å±ç¤ºï¼åæ¶æ¸ æå表ç鿡件ï¼é¿å 两个æ¡ä»¶å å 导è´ç©ºå表 this.fundQueryParam.donorname = null; this.fundQueryParam.recordstatus = null; this.fundQueryParam.infoid = this.curCase.id; this.fundQueryParam.pageNum = 1; this.listFundData(); }, /** * æå½å fundQueryParam æ¥è¯¢å³ä¾§æ¥éåå表 * infoid 为空 = å½åç»å½äººçå ¨é¨è¯¥ç±»ååæ®ï¼æå¼ = æå®æ¡ä¾ */ listFundData() { this.loading = true; listFund(this.fundQueryParam).then(response => { this.loading = false; this.donateconsolationfundList = response.rows; this.fundTotal = response.total; }); }, /** æ¥éåçéï¼æç´¢ */ handleQueryFund() { this.fundQueryParam.pageNum = 1; this.listFundData(); }, /** æ¥éåçéï¼éç½®ï¼æ¸ 空æ¡ä»¶ä¸å·²éæ¡ä¾ï¼åå°è¯¥ç»å½äººå ¨é¨åæ®ï¼ */ resetFundQuery() { this.fundQueryParam.donorname = null; this.fundQueryParam.recordstatus = null; this.getAllfundList(); }, /** * æ£ç´¢å ¨é¨ï¼åæ¶å·¦ä¾§æ¡ä¾éæ©ä¸çéæ¡ä»¶ï¼æ¥è¯¢å½åç»å½äººçå ¨é¨å»å¦ææ¬åæ® */ getAllfundList() { this.curCase = {}; // åæ¶æ¸ æå·¦ä¾§æ¡ä¾å表çé«äº®é䏿 if (this.$refs.caseTable) { this.$refs.caseTable.setCurrentRow(); } this.reset(); this.fundQueryParam.infoid = null; this.fundQueryParam.donorname = null; this.fundQueryParam.recordstatus = null; this.fundQueryParam.pageNum = 1; this.listFundData(); }, // åæ¶æé® @@ -1480,6 +1398,7 @@ .button-delete { color: rgb(236, 69, 69); } ::v-deep.el-table .error-row { background: #fcebeb; } src/views/project/register/index.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,351 @@ <template> <div class="app-container"> <!-- æ¥è¯¢æ¡ä»¶ï¼æé®ç´§è·æ¡ä»¶ä¹åï¼ä¸æ¡ä¾è¯ä¼°é¡µé£æ ¼ä¸è´ï¼ --> <el-form class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="82px" > <el-row> <el-col :span="6"> <el-form-item label="æç®è " prop="name"> <el-input v-model="queryParams.name" placeholder="请è¾å ¥æç®è å§å" clearable size="small" @keyup.enter.native="handleQuery" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="è¯ä»¶å·ç " prop="idcardno"> <el-input v-model="queryParams.idcardno" placeholder="请è¾å ¥è¯ä»¶å·ç " clearable size="small" @keyup.enter.native="handleQuery" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="å¨å®ç±»å«" prop="organno"> <el-select v-model="queryParams.organno" placeholder="è¯·éæ©å¨å®ç±»å«" clearable size="small" style="width: 100%" > <el-option v-for="dict in dict.type.sys_Organ" :key="dict.value" :label="dict.label" :value="dict.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="è·åç¶æ" prop="organstate"> <el-select v-model="queryParams.organstate" placeholder="è¯·éæ©è·åç¶æ" clearable size="small" style="width: 100%" > <el-option v-for="dict in dict.type.sys_organstate" :key="dict.value" :label="dict.label" :value="dict.value" /> </el-select> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="6"> <el-form-item label="å¨å®ç¼å·" prop="organnumber"> <el-input v-model="queryParams.organnumber" placeholder="请è¾å ¥å¨å®ç¼å·" clearable size="small" @keyup.enter.native="handleQuery" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="ç§»æ¤æºæ" prop="transplanthospitalname"> <el-input v-model="queryParams.transplanthospitalname" placeholder="请è¾å ¥ç§»æ¤æºæåç§°" clearable size="small" @keyup.enter.native="handleQuery" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="ç§»æ¤äºº" prop="acceptname"> <el-input v-model="queryParams.acceptname" placeholder="请è¾å ¥ç§»æ¤äººå§å" clearable size="small" @keyup.enter.native="handleQuery" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label-width="10px"> <el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">æç´¢</el-button> <el-button icon="el-icon-refresh" size="small" @click="resetQuery">éç½®</el-button> <el-button type="warning" plain icon="el-icon-download" size="small" :loading="exportLoading" @click="handleExport" v-hasPermi="['project:register:export']" >导åº</el-button> </el-form-item> </el-col> </el-row> <el-row class="mb8"> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> </el-form> <el-table v-loading="loading" :data="registerList" :border="true"> <el-table-column label="æç®è ç¼å·" align="center" prop="donorno" width="200" show-overflow-tooltip /> <el-table-column label="å§å" align="center" prop="name" width="90" show-overflow-tooltip /> <el-table-column label="æ§å«" align="center" prop="sex" width="70"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" /> </template> </el-table-column> <el-table-column label="å¹´é¾" align="center" width="80"> <template slot-scope="scope"> <span v-if="scope.row.age">{{ scope.row.age }}{{ scope.row.ageunit }}</span> </template> </el-table-column> <el-table-column label="å¨å®ç±»å«" align="center" prop="organname" width="90" show-overflow-tooltip /> <el-table-column label="å¨å®ç¼å·" align="center" prop="organnumber" width="130" show-overflow-tooltip /> <el-table-column label="è·åç¶æ" align="center" prop="organstate" width="100"> <template slot-scope="scope"> <dict-tag :options="dict.type.sys_organstate" :value="scope.row.organstate" /> </template> </el-table-column> <el-table-column label="è·åæ¶é´" align="center" prop="organgettime" width="150"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.organgettime) }}</span> </template> </el-table-column> <el-table-column label="è·åæºæ" align="center" prop="gainhospitalname" min-width="180" show-overflow-tooltip /> <el-table-column label="ç§»æ¤æºæ" align="center" prop="transplanthospitalname" min-width="180" show-overflow-tooltip /> <el-table-column label="ç§»æ¤å»ç" align="center" prop="transplantdoct" width="100" show-overflow-tooltip /> <el-table-column label="ç§»æ¤æ¶é´" align="center" prop="transplanttime" width="150"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.transplanttime) }}</span> </template> </el-table-column> <el-table-column label="æä½" align="center" width="90" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)" v-hasPermi="['project:register:query']" >详æ </el-button> </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> <!-- 详æ ï¼åªè¯»å±ç¤ºå ¨é¨å段 --> <el-dialog title="å¨å®å»å¤è¯¦æ " :visible.sync="open" width="900px" append-to-body> <div v-loading="detailLoading" class="register-detail"> <el-divider content-position="left">æç®è ä¿¡æ¯</el-divider> <el-descriptions :column="3" size="small" border> <el-descriptions-item label="å§å">{{ detail.name }}</el-descriptions-item> <el-descriptions-item label="æ§å«">{{ dictLabel("sys_user_sex", detail.sex) }}</el-descriptions-item> <el-descriptions-item label="å¹´é¾"> <span v-if="detail.age">{{ detail.age }}{{ detail.ageunit }}</span> </el-descriptions-item> <el-descriptions-item label="è¯ä»¶å·ç ">{{ detail.idcardno }}</el-descriptions-item> <el-descriptions-item label="åºçæ¥æ">{{ parseTime(detail.birthday, "{y}-{m}-{d}") }}</el-descriptions-item> <el-descriptions-item label="èç³»çµè¯">{{ detail.phone }}</el-descriptions-item> <el-descriptions-item label="ç°ä½å°å" :span="3">{{ detail.residenceaddress }}</el-descriptions-item> <el-descriptions-item label="æç®è ç¼å·">{{ detail.donorno }}</el-descriptions-item> </el-descriptions> <el-divider content-position="left">å¨å®ä¿¡æ¯</el-divider> <el-descriptions :column="3" size="small" border> <el-descriptions-item label="å¨å®ç±»å«">{{ detail.organname }}</el-descriptions-item> <el-descriptions-item label="å¨å®ç¼å·">{{ detail.organnumber }}</el-descriptions-item> <el-descriptions-item label="è·åç¶æ"> {{ dictLabel("sys_organstate", detail.organstate) }} </el-descriptions-item> <el-descriptions-item label="è·åæ¶é´">{{ parseTime(detail.organgettime) }}</el-descriptions-item> <el-descriptions-item label="è·åå»ç" :span="2">{{ detail.organgetdoct }}</el-descriptions-item> <el-descriptions-item label="è·åæºæ" :span="2">{{ detail.gainhospitalname }}</el-descriptions-item> <el-descriptions-item label="ç§»æ¤æºæ" :span="2">{{ detail.transplanthospitalname }}</el-descriptions-item> <el-descriptions-item label="ç§»æ¤å»ç">{{ detail.transplantdoct }}</el-descriptions-item> <el-descriptions-item label="ç§»æ¤æ¶é´" :span="2">{{ parseTime(detail.transplanttime) }}</el-descriptions-item> </el-descriptions> <el-divider content-position="left">ç³è¯·ä¸å®¡æ ¸</el-divider> <el-descriptions :column="3" size="small" border> <el-descriptions-item label="ç³è¯·äºº">{{ detail.applicantusername }}</el-descriptions-item> <el-descriptions-item label="ç³è¯·æ¶é´" :span="2">{{ parseTime(detail.applicanttime) }}</el-descriptions-item> <el-descriptions-item label="å®¡æ ¸äºº">{{ detail.checkusername }}</el-descriptions-item> <el-descriptions-item label="å®¡æ ¸æ¶é´" :span="2">{{ parseTime(detail.checktime) }}</el-descriptions-item> <el-descriptions-item label="å®¡æ ¸æè§" :span="3">{{ detail.checksuggestion }}</el-descriptions-item> </el-descriptions> <el-divider content-position="left">ç§»æ¤äººä¿¡æ¯</el-divider> <el-descriptions :column="3" size="small" border> <el-descriptions-item label="å§å">{{ detail.acceptname }}</el-descriptions-item> <el-descriptions-item label="æ§å«">{{ dictLabel("sys_user_sex", detail.acceptsex) }}</el-descriptions-item> <el-descriptions-item label="å¹´é¾"> <span v-if="detail.acceptage">{{ detail.acceptage }}{{ detail.acceptageunit }}</span> </el-descriptions-item> <el-descriptions-item label="è¯ä»¶å·ç ">{{ detail.acceptidcard }}</el-descriptions-item> <el-descriptions-item label="èç³»çµè¯" :span="2">{{ detail.acceptphone }}</el-descriptions-item> <el-descriptions-item label="ç°ä½å°å" :span="3">{{ detail.acceptresidenceaddress }}</el-descriptions-item> </el-descriptions> </div> <div slot="footer" class="dialog-footer"> <el-button @click="open = false">å ³ é</el-button> </div> </el-dialog> </div> </template> <script> import { listRegister, getRegister, exportRegister } from "@/api/project/register"; export default { name: "Register", dicts: ["sys_Organ", "sys_organstate", "sys_user_sex", "sys_AgeUnit"], data() { return { // é®ç½©å± loading: true, // 详æ å è½½ detailLoading: false, // 导åºé®ç½©å± exportLoading: false, // æ¾ç¤ºæç´¢æ¡ä»¶ showSearch: true, // æ»æ¡æ° total: 0, // å¨å®å»å¤å表 registerList: [], // 详æ å¼¹çª open: false, detail: {}, // æ¥è¯¢åæ°ï¼åéä¸å端 queryList / Mapper æ¯æçæ¡ä»¶ä¸è´ï¼ queryParams: { pageNum: 1, pageSize: 10, name: null, idcardno: null, organno: null, organstate: null, organnumber: null, transplanthospitalname: null, acceptname: null } }; }, created() { this.getList(); }, methods: { /** æ¥è¯¢å¨å®å»å¤å表 */ getList() { this.loading = true; listRegister(this.queryParams).then(response => { this.registerList = response.rows; this.total = response.total; this.loading = false; }); }, /** æç´¢æé®æä½ */ handleQuery() { this.queryParams.pageNum = 1; this.getList(); }, /** éç½®æé®æä½ */ resetQuery() { this.resetForm("queryForm"); this.handleQuery(); }, /** è¯¦æ æé®æä½ */ handleDetail(row) { this.detail = {}; this.open = true; this.detailLoading = true; getRegister(row.id).then(response => { this.detail = response.data || {}; this.detailLoading = false; }).catch(() => { this.detailLoading = false; }); }, /** åå ¸ç¿»è¯ï¼æ¨¡æ¿éç¨ï¼é¿å å¤ä¸ª dict-tag åµå¥ï¼ */ dictLabel(type, value) { const list = this.dict.type[type] || []; const item = list.find(d => String(d.value) === String(value)); return item ? item.label : value; }, /** å¯¼åºæé®æä½ */ handleExport() { this.$modal .confirm("æ¯å¦ç¡®è®¤å¯¼åºå¨å®å»å¤æ°æ®ï¼") .then(() => { this.exportLoading = true; return exportRegister(this.queryParams); }) .then(response => { this.$download.name(response.msg); this.exportLoading = false; }) .catch(() => { this.exportLoading = false; }); } } }; </script> <style scoped> .register-detail >>> .el-divider--horizontal { margin: 12px 0 14px; } .register-detail >>> .el-divider__text { color: var(--opo-primary, #0e768f); font-size: var(--opo-font-size-sm, 14px); } .register-detail >>> .el-descriptions-item__label { color: var(--opo-text-secondary, #6b7280); width: 90px; } </style> src/views/project/statistics/applyStatistics/index.vue
@@ -266,48 +266,14 @@ this.queryParams.pabegtime = this.selecttime[0]; this.queryParams.paendtime = this.selecttime[1]; // if (this.queryParams.paendtime == this.queryParams.pabegtime) { let num = Number(this.queryParams.paendtime.slice(5, 7)); if (num < 9) { let mon = Number(this.queryParams.paendtime.slice(6, 7)); this.queryParams.paendtime = this.queryParams.paendtime.slice(0, 5) + "0" + (mon + 1) + "-" + "01" + " " + "00" + ":" + "00" + ":" + "00"; } // this.queryParams.paendtime=this.queryParams.paendtime.slice(0,5)å¹´ else if (num >= 10) { this.queryParams.paendtime = this.queryParams.paendtime.slice(0, 5) + (num + 1) + "-" + "01" + " " + "00" + ":" + "00" + ":" + "00"; } else { this.queryParams.paendtime = this.queryParams.paendtime.slice(0, 5) + "10" + "-" + "01" + " " + "00" + ":" + "00" + ":" + "00"; } // ç»ææ¶é´å"æéç»ææç次æ 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"; // } src/views/project/statistics/caseStatistics/index.vue
@@ -272,48 +272,14 @@ this.queryParams.pabegtime = this.selecttime[0]; this.queryParams.paendtime = this.selecttime[1]; // if (this.queryParams.paendtime == this.queryParams.pabegtime) { let num = Number(this.queryParams.paendtime.slice(5, 7)); if (num < 9) { let mon = Number(this.queryParams.paendtime.slice(6, 7)); this.queryParams.paendtime = this.queryParams.paendtime.slice(0, 5) + "0" + (mon + 1) + "-" + "01" + " " + "00" + ":" + "00" + ":" + "00"; } // this.queryParams.paendtime=this.queryParams.paendtime.slice(0,5)å¹´ else if (num >= 10) { this.queryParams.paendtime = this.queryParams.paendtime.slice(0, 5) + (num + 1) + "-" + "01" + " " + "00" + ":" + "00" + ":" + "00"; } else { this.queryParams.paendtime = this.queryParams.paendtime.slice(0, 5) + "10" + "-" + "01" + " " + "00" + ":" + "00" + ":" + "00"; } // ç»ææ¶é´å"æéç»ææç次æ 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"; // } src/views/project/statistics/chargeStatistics/index.vue
@@ -290,48 +290,14 @@ this.queryParams.pabegtime = this.selecttime[0]; this.queryParams.paendtime = this.selecttime[1]; // if (this.queryParams.paendtime == this.queryParams.pabegtime) { let num = Number(this.queryParams.paendtime.slice(5, 7)); if (num < 9) { let mon = Number(this.queryParams.paendtime.slice(6, 7)); this.queryParams.paendtime = this.queryParams.paendtime.slice(0, 5) + "0" + (mon + 1) + "-" + "01" + " " + "00" + ":" + "00" + ":" + "00"; } // this.queryParams.paendtime=this.queryParams.paendtime.slice(0,5)å¹´ else if (num >= 10) { this.queryParams.paendtime = this.queryParams.paendtime.slice(0, 5) + (num + 1) + "-" + "01" + " " + "00" + ":" + "00" + ":" + "00"; } else { this.queryParams.paendtime = this.queryParams.paendtime.slice(0, 5) + "10" + "-" + "01" + " " + "00" + ":" + "00" + ":" + "00"; } // ç»ææ¶é´å"æéç»ææç次æ 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"; // } src/views/project/statistics/performanceStaristics/index.vue
@@ -278,48 +278,14 @@ this.queryParams.pabegtime = this.selecttime[0]; this.queryParams.paendtime = this.selecttime[1]; // if (this.queryParams.paendtime == this.queryParams.pabegtime) { let num = Number(this.queryParams.paendtime.slice(5, 7)); if (num < 9) { let mon = Number(this.queryParams.paendtime.slice(6, 7)); this.queryParams.paendtime = this.queryParams.paendtime.slice(0, 5) + "0" + (mon + 1) + "-" + "01" + " " + "00" + ":" + "00" + ":" + "00"; } // this.queryParams.paendtime=this.queryParams.paendtime.slice(0,5)å¹´ else if (num >= 10) { this.queryParams.paendtime = this.queryParams.paendtime.slice(0, 5) + (num + 1) + "-" + "01" + " " + "00" + ":" + "00" + ":" + "00"; } else { this.queryParams.paendtime = this.queryParams.paendtime.slice(0, 5) + "10" + "-" + "01" + " " + "00" + ":" + "00" + ":" + "00"; } // ç»ææ¶é´å"æéç»ææç次æ 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"; // }