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 |  348 ++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 280 insertions(+), 68 deletions(-)

diff --git a/src/components/finance/collectionStatistics.vue b/src/components/finance/collectionStatistics.vue
index a41a9ec..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){

--
Gitblit v1.8.0