From 84326b11401f217cd483d13bc72cec4ffd5da7ce Mon Sep 17 00:00:00 2001 From: bob <bob.zhang@highdatas.com> Date: 星期三, 25 十一月 2020 10:02:22 +0800 Subject: [PATCH] 2020-11-13 --- src/components/finance/collectionStatistics.vue | 356 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 284 insertions(+), 72 deletions(-) diff --git a/src/components/finance/collectionStatistics.vue b/src/components/finance/collectionStatistics.vue index d2936ea..965656b 100644 --- a/src/components/finance/collectionStatistics.vue +++ b/src/components/finance/collectionStatistics.vue @@ -7,12 +7,14 @@ <el-input v-model="formInline.name" placeholder="椤圭洰鍚嶇О"></el-input> </el-form-item> - <el-form-item label="鐮旂┒鐩殑"> - <el-select v-model="formInline.type" placeholder="鐮旂┒鐩殑"> - <el-option label="骞查鎬х郴缁熻瘎浠�" value="骞查鎬х郴缁熻瘎浠�"></el-option> - <el-option label="璇婃柇鎬х郴缁熻瘎浠�" value="璇婃柇鎬х郴缁熻瘎浠�"></el-option> - <el-option label="棰勫悗鎬х郴缁熻瘎浠�" value="棰勫悗鎬х郴缁熻瘎浠�"></el-option> - <el-option label="鐩稿叧鎬х郴缁熻瘎浠�" value="鐩稿叧鎬х郴缁熻瘎浠�"></el-option> + <el-form-item label="鐮旂┒绫诲瀷鍒嗙被" label-width="100px"> + <el-select v-model="formInline.type" placeholder="鐮旂┒绫诲瀷鍒嗙被"> + <el-option + v-for="(item,k) in options_type" + :key="k" + :label="item" + :value="item" + ></el-option> </el-select> </el-form-item> @@ -33,38 +35,42 @@ </div> <div style="width: 100%; text-align: left;"> - <span>缁熻宸插洖娆鹃噾棰濓細{{sum_budget}}</span> + <span>缁熻寮�绁ㄩ噾棰濓細{{sum_budget}}</span> + <span style="margin-left: 32px;">缁熻宸茬‘璁ら噾棰濓細{{sum_payMoney}}</span> </div> +<!-- :summary-method="getSummaries" + show-summary --> <el-table highlight-current-row ref="data_table" @current-change="tableChange" v-loading="loading_table" - size="small" - :summary-method="getSummaries" - show-summary :data="tableData" :header-cell-style="{'width': '100%', 'text-align': 'center'}" :row-class-name="tableRowClassName"> <!-- <el-table-column type="index" width="50"> </el-table-column> --> + <el-table-column label="鎿嶄綔" align="center"><!-- fixed="right" --> + <template v-slot="{row}"> + <el-row> + <el-button type="primary" size="mini" @click="showDetail(row)">璇︽儏</el-button> + </el-row> + </template> + </el-table-column> + <el-table-column prop="code" label="椤圭洰鍙�" width="120" show-overflow-tooltip></el-table-column> <el-table-column prop="name" label="椤圭洰鍚嶇О" width="120" show-overflow-tooltip></el-table-column> <el-table-column prop="status" label="褰撳墠鐘舵��" width="100" align="center" :formatter="status_"></el-table-column> - <el-table-column prop="reseachType" label="鐮旂┒绫诲瀷" width="130"></el-table-column> + <el-table-column prop="type" label="鐮旂┒绫诲瀷鍒嗙被" show-overflow-tooltip width="130"></el-table-column> <el-table-column prop="totalCnt" label="鏈嶅姟椤圭洰鏁�" width="100" align="center"></el-table-column> <el-table-column prop="finishCnt" label="宸插畬鎴愰」鐩�" width="100" align="center"></el-table-column> <el-table-column prop="delayCnt" label="寤舵湡椤圭洰" width="100" align="center"></el-table-column> <el-table-column prop="totalBudget" label="鍚堝悓閲戦" width="100" align="center"></el-table-column> - <el-table-column prop="budget" sortable label="宸插洖娆鹃噾棰�" width="150" align="center"> - <template v-slot="{row}"> - <div> - <el-input-number size="mini" v-model="row.budget" @change="moneyChange(row)"></el-input-number> - </div> - </template> - </el-table-column> + <el-table-column prop="budget" label="寮�绁ㄩ噾棰�" width="150" align="center"></el-table-column> + <el-table-column prop="payMoney" label="宸茬‘璁ら噾棰�" width="150" align="center"></el-table-column> <el-table-column prop="startTime" label="寮�濮嬫椂闂�" width="100" align="center" :formatter="dateFormat_"></el-table-column> <el-table-column prop="endTime" label="缁撴潫鏃堕棿" width="100" align="center" :formatter="dateFormat_" ></el-table-column> <el-table-column prop="desp" label="椤圭洰鎻忚堪" show-overflow-tooltip></el-table-column> + </el-table> <div style="text-align: right; background-color: #fff;"> <el-pagination @@ -77,19 +83,119 @@ </el-pagination> </div> - <el-dialog title="椤圭洰璇︽儏纭" v-if="dialog_2" @close="Cancel2" width="70%" top="50px" :visible.sync="dialog_2" append-to-body> - <substepReadOnly @closeProject="closeDetail" v-bind:xmId="detailData.id" ref="newProject2_"></substepReadOnly> + <el-dialog title="浠樻璇︽儏" v-if="dialog_2" @close="Cancel2" width="70%" top="50px" :visible.sync="dialog_2"> + <el-table + highlight-current-row + ref="data_table2" + size="small" + :data="tableData2" + :header-cell-style="{'width': '100%', 'text-align': 'center', 'background-color': 'rgb(247, 248, 249)'}" + :row-class-name="tableRowClassName"> + <el-table-column prop="code" label="椤圭洰鍙�" show-overflow-tooltip></el-table-column> + <el-table-column prop="name" label="椤圭洰鍚嶇О" show-overflow-tooltip></el-table-column> + <el-table-column prop="status" label="褰撳墠鐘舵��" width="100" align="center" :formatter="status_"></el-table-column> + <el-table-column prop="totalBudget" label="鍚堝悓閲戦" align="center"></el-table-column> + <el-table-column prop="budget" label="寮�绁ㄩ噾棰濇�昏" align="center"></el-table-column> + <el-table-column prop="payMoney" label="宸茬‘璁ら噾棰濇�昏" align="center"></el-table-column> + <!-- <el-table-column prop="totalBudget" label="姣涘埄鐜�" align="center"></el-table-column> --> + </el-table> + + <div style="width: 100%; text-align: left; margin: 10px;"> + <el-button type="primary" size="mini" @click="addPhase">鏂板鍒嗘湡</el-button> + </div> + + <!-- @header-click="headerClick" --> + <el-table + highlight-current-row + ref="data_table3" + v-loading="loading_table3" + size="small" + :data="tableData3" + :height="300" + :header-cell-style="{'width': '100%', 'text-align': 'center', 'background-color': 'rgb(247, 248, 249)'}" + :row-class-name="tableRowClassName"> + <el-table-column prop="orderNo" label="鏈熸" width="80" align="center"></el-table-column> + <el-table-column prop="billTime" label="寮�绁ㄦ棩鏈�" width="180" align="center"> + <template v-slot="{row}"> + <div> + <el-date-picker :disabled="row.checked" style="width: 160px;" size="mini" v-model="row.billTime" type="date" placeholder="閫夋嫨鏃ユ湡" @change="moneyChange(row)"> + </el-date-picker> + </div> + </template> + </el-table-column> + <el-table-column prop="money" label="寮�绁ㄩ噾棰�" width="160" align="center"> + <template v-slot="{row}"> + <div> + <el-input-number :disabled="row.checked" size="mini" v-model="row.money" @change="moneyChange(row)"></el-input-number> + </div> + </template> + </el-table-column> + <el-table-column prop="gatherTime" label="鏀舵鏃ユ湡" width="180" align="center"> + <template v-slot="{row}"> + <div> + <el-date-picker :disabled="row.checked" style="width: 160px;" size="mini" v-model="row.gatherTime" type="date" placeholder="閫夋嫨鏃ユ湡" @change="moneyChange(row)"> + </el-date-picker> + </div> + </template> + </el-table-column> + <el-table-column prop="checked" label="鏄惁鏀舵" align="center" :formatter="check_"></el-table-column> + <el-table-column prop="checkUserName" label="纭浜�" align="center"></el-table-column> + <el-table-column fixed="right" label="纭鏀舵" width="180" align="center"> + <template v-slot="{row}"> + <el-row> + <el-button :disabled="row.checked" type="primary" size="mini" @click="confirmPhase(row)">纭鏀舵</el-button> + <el-button :disabled="row.checked" type="danger" size="mini" @click="removePhase(row)">鍒犻櫎</el-button> + </el-row> + </template> + </el-table-column> + + </el-table> + + <!-- <div ref="z_dialog_buttonList" v-show="dialog_tree_node" + @mouseenter="NodePopover_isShow(true)" + @mouseleave="NodePopover_isShow(false)" + style="position: fixed; left:0px; top:0px; padding: 8px 12px; border: 1px solid rgb(233,233,233); background-color: #fff; z-index: 10;" + > + <el-row :gutter="20"> + <el-col :span="24"> + <el-button style="padding: 8px; border: 0px; width: 100%; text-align: left;" icon="el-icon-delete-solid" @click="removePhase"> + 鍒� 闄�</el-button> + </el-col> + </el-row> + </div> --> + </el-dialog> + + <el-dialog title="娣诲姞鍒嗘湡" v-if="dialog_1" @close="closeNewPhase" width="400px" :visible.sync="dialog_1" append-to-body> + <el-form ref="formPhase" :model="phaseForm" label-width="80px" size="mini"> + <el-form-item label="鏈熸"> + <el-input-number size="mini" v-model="phaseForm.orderNo" style="width: 240px;"></el-input-number> + </el-form-item> + <el-form-item label="寮�绁ㄦ椂闂�"> + <el-date-picker v-model="phaseForm.billTime" type="date" placeholder="閫夋嫨鏃ユ湡" style="width: 240px;"> + </el-date-picker> + </el-form-item> + <el-form-item label="寮�绁ㄩ噾棰�"> + <el-input-number size="mini" v-model="phaseForm.money" style="width: 240px;"></el-input-number> + </el-form-item> + <el-form-item label="鏀舵鏃堕棿"> + <el-date-picker v-model="phaseForm.gatherTime" type="date" placeholder="閫夋嫨鏃ユ湡" style="width: 240px;"> + </el-date-picker> + </el-form-item> + </el-form> + + <span slot="footer" class="dialog-footer"> + <el-button @click="closeNewPhase">鍙� 娑�</el-button> + <el-button :loading="loading_savePhase" type="primary" @click="savePhase">淇� 瀛�</el-button> + </span> </el-dialog> </div> </template> <script> - import substepReadOnly from './popup/substepReadOnly.vue'; export default { components: { - substepReadOnly, }, data() { return { @@ -98,6 +204,18 @@ upload_type: "", upload_headers: {}, upload_data: {}, + options_type:[ + "Health technology assessment (HTA)", + "Clinical practice guideline (CPG)", + "Evidence mapping", + "Overview of review", + "Scoping review", + "Rapid review", + "Systematic review", + "Rapid review", + "Randomised controlled trial (RCT)", + "Other" + ], pdfUrl: "", currentPage: 1, @@ -108,6 +226,11 @@ rowData:undefined, detailData:undefined, dialog_1: false, + phaseForm: {}, + loading_savePhase: false, + dialog_tree_node: false, + timer: null, + fieldObj: null, dialog_2: false, dialog_upload: false, dialog_pdf: false, @@ -117,7 +240,11 @@ selected: undefined, labelPosition: "left", tableData: [], + tableData2: [], + loading_table3: false, + tableData3: [], sum_budget: 0, + sum_payMoney: 0, userId:"", assign:undefined, formInline: { @@ -128,25 +255,61 @@ }, mounted() { //缁勪欢閰嶇疆鍚庯紝椤甸潰鏄剧ず鍓嶃�傜敤浜庡姞杞芥暟鎹� this.getData(); - this.userId = localStorage.getItem('userId'); - this.assign = localStorage.getItem('assign'); + //this.userId = localStorage.getItem('userId'); + //this.assign = localStorage.getItem('assign'); + + this.userId = this.$cookies.get('userId'); + this.assign = this.$cookies.get('assign'); }, methods: { + headerClick(column, event) { + this.$message({message:'鐐瑰嚮瀛楁', type: 'warning'}); + + clearInterval(this.timer); + this.enableTimer(); + this.clientHeight = document.documentElement.clientHeight; + let top_ = event.top; + let left_ = event.left; + + this.$refs.z_dialog_buttonList.style.top = top_ + "px"; //- el_h/2 + this.$refs.z_dialog_buttonList.style.left = left_ + 32 + "px"; + + this.dialog_tree_node= true; + this.fieldObj = column; + }, + + enableTimer() { + this.timer = setInterval(()=>{ + this.dialog_tree_node = false; + clearInterval(this.timer); + },1000); + }, + + NodePopover_isShow(isShow) { + if (isShow) { + clearInterval(this.timer); + this.dialog_tree_node = true; + } + else { + this.enableTimer(); + } + }, + Cancel2() { this.dialog_2 = false; - //this.closeDetail(); + this.query_(); }, - closeDetail() { - this.dialog_2 = false; - //this.detailData = undefined; - }, - showDetail() { - if(!this.selected || !this.selected.id){ + showDetail(row) { + if(!row.id){ this.$message({message:'璇烽�変腑涓�涓」鐩�', type: 'warning'}); return; } + this.tableData2 = []; + this.tableData2.push(row); + this.getPhase(); this.dialog_2 = true; }, + tableChange(val) { if (!val) { val = {}; @@ -181,7 +344,7 @@ pageSize: this.pagesize, isRun: true }; - if(this.assign) { + if(this.assign == "true") { params.userId = this.userId; } if(query){ @@ -195,7 +358,7 @@ .then(data_ => { window.console.log(data_); let clientHeight = document.documentElement.clientHeight; - let tableHeight_ = clientHeight - 60 - 20 - 60 - 62 - 48 - 48 - 20; + let tableHeight_ = clientHeight - 60 - 20 - 60 - 62 - 48 - 20; this.$refs.data_table.$el.getElementsByClassName('el-table__body-wrapper')[0].style['height'] = tableHeight_ - 10 + "px";// - header_height this.$refs.data_table.$el.getElementsByClassName('el-table__body-wrapper')[0].style['min-height'] = tableHeight_ - 10 + "px"; this.$refs.data_table.$el.getElementsByClassName('el-table__body-wrapper')[0].style['overflow'] = "overlay"; @@ -203,6 +366,8 @@ this.tableData = data_.data.data.datas.records; //缁檛ableData璧嬪�� this.total = data_.data.data.datas.total; this.sum_budget = data_.data.data.budget ? data_.data.data.budget : 0; + this.sum_payMoney = data_.data.data.payMoney ? data_.data.data.payMoney : 0; + this.loading_table = false; }).catch(error => { // console.log(error); @@ -218,18 +383,6 @@ }, onSubmit() { query_(); - }, - - moneyChange(row) { - let me = this; - let url = "/api/scheme/save/" + row.id; - let params = { - budget: row.budget, - } - - this.getUrl(url, params, function(data_) { - me.query_(); - }) }, getSummaries(param) { @@ -274,6 +427,15 @@ return "宸茬粨鏉�"; } }, + + check_(row, colum, val ,index){ + if (val) { + return "鏄�"; + } + else{ + return "鍚�"; + } + }, finishFotmat(row, colum, val ,index) { if(val) { return "宸茬粨鏉�"; @@ -281,32 +443,82 @@ return "杩涜涓�"; } }, - addProject() { - this.dialog_1 = true; - this.rowData = {}; - }, - editProject() { - if(!this.selected || this.selected.status == "finish"){ - - this.$message({message:'璇烽�変腑涓�鏉℃湭瀹屾垚鐨勯」鐩�', type: 'warning'}); - }else { - this.rowData = { - id:this.selected.id, - desp:this.selected.desp, - name: this.selected.name, - beginDate: this.selected.beginDate, - endDate: this.selected.endDate, - objective:this.selected.reseachType, - items:[this.$moment(this.selected.startTime).format('YYYY-MM-DD'),this.$moment(this.selected.endTime).format('YYYY-MM-DD')] + + getPhase() { + let me = this; + let url = "/api/scheme/bill/getByParent/" + me.tableData2[0].id; + me.loading_table3 = true; + me.tableData3 = []; + this.getUrl(url, null, function(data_) { + me.loading_table3 = false; + if (data_.data.data) { + me.tableData3 = data_.data.data; } - this.dialog_1 = true; - } - - + else { + me.tableData3 = []; + } + }) + me.$emit("refreshDrawer"); }, - closeNewProject() { + + confirmPhase(row) { + let me = this; + let url = "/api/scheme/bill/check/" + row.id; + + let params = { + user: this.userId + } + this.getUrl(url, params, function(data_) { + me.tableData2[0].payMoney = data_.data.data.payMoney; + row.checked = true; + me.$emit("refreshDrawer"); + }) + }, + + removePhase(row) { + let me = this; + let url = "/api/scheme/bill/delById/" + row.id; + + this.getUrl(url, null, function(data_) { + me.tableData2[0].budget = data_.data.data.budget; + me.getPhase(); + }) + }, + + moneyChange(row) { + let me = this; + let url = "/api/scheme/bill/addOrUpdate"; + + let params = {...row}; + params.parentId = me.tableData2[0].id; + this.postUrl(url, params, function(data_) { + me.tableData2[0].budget = data_.data.data.budget; + }) + }, + + addPhase(row) { + this.dialog_1 = true; + this.phaseForm = { + orderNo: this.tableData3.length + 1 + }; + }, + + savePhase() { + let me = this; + let url = "/api/scheme/bill/addOrUpdate"; + me.loading_savePhase = true; + let params = {...this.phaseForm}; + params.parentId = me.tableData2[0].id; + + this.postUrl(url, params, function(data_) { + me.tableData2[0].budget = data_.data.data.budget; + me.loading_savePhase = false; + me.dialog_1 = false; + me.getPhase(); + }) + }, + closeNewPhase() { this.dialog_1 = false; - query_(); }, getUrl(url, params, callback){ @@ -314,26 +526,26 @@ this.$axios.get(url,{ params: params }).then(data_ => { - console.log(data_); + //console.log(data_); if (callback) { callback(data_); } }) .catch(error =>{ - console.log(error); + //console.log(error); }) }, postUrl(url, params, callback){ let me = this; this.$axios.post(url,params) .then(data_ => { - console.log(data_); + //console.log(data_); if (callback) { callback(data_); } }) .catch(error =>{ - console.log(error); + //console.log(error); }) }, -- Gitblit v1.8.0