From d7e4b63134fbb434ef382453ed8d3ef4cf378808 Mon Sep 17 00:00:00 2001
From: zhangyanpeng <bob.zhang@highdatas.com>
Date: 星期三, 22 四月 2020 19:19:42 +0800
Subject: [PATCH] 界面调整

---
 src/components/square.vue |  324 +++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 246 insertions(+), 78 deletions(-)

diff --git a/src/components/square.vue b/src/components/square.vue
index 4c833af..d85423e 100644
--- a/src/components/square.vue
+++ b/src/components/square.vue
@@ -17,20 +17,23 @@
 					</el-form-item>
 				</el-form>
 			</el-col>
-		  <el-col :span="4" ><el-button type="primary" @click="createNew">鍒涘缓</el-button></el-col>
+		  <el-col :span="4" >
+			  <el-button type="primary" @click="createNew">鍒涘缓</el-button>
+			 
+			 </el-col>
 		</el-row>
 		
 
-	<div class="infinite-list-wrapper" style="overflow:auto; height: 70vh; border-top: 1px solid #c3c5c7;">
-		
-		<div class="list" v-infinite-scroll="load" infinite-scroll-disabled="disabled">
-			<div v-for="one in dataList" :key="one.id" class="list-item" @click="showItem(one)">
-				<el-row >
-				  <el-col :span="20"><div class="grid-content z_grid-content1 grid-content_text">{{one.title}}</div></el-col>
-				  <el-col :span="4"><div class="grid-content z_grid-content1 grid-content_time">{{one.time}}</div></el-col>
+	<div ref="list_div" class="infinite-list-wrapper" style="overflow:auto; border-top: 1px solid #c3c5c7;">
+		<div v-if="isRefresh" class="list" v-infinite-scroll="load" infinite-scroll-disabled="disabled">
+			<div v-for="one in dataList" :key="one.id" class="list-item">
+				<el-row>
+				  <el-col :span="18"><div class="grid-content z_grid-content1 grid-content_text" @click="showItem(one)">{{one.title}}</div></el-col>
+				  <el-col :span="3"><div class="grid-content z_grid-content1 grid-content_exam" @click="showLinkItem(one)">{{formatter(one)}}</div></el-col>
+				  <el-col :span="3"><div class="grid-content z_grid-content1 grid-content_time">{{one.time}}</div></el-col>
 				</el-row>
 				
-				<el-row>
+				<el-row style="padding-left: 16px;">
 				  <el-col :span="20"><div class="grid-content z_grid-content2">{{one.desp}}</div></el-col>
 				</el-row>
 			</div>
@@ -39,6 +42,7 @@
 		<p v-if="noMore">娌℃湁鏇村浜�</p>
 	</div>
 	<el-dialog
+	v-if="dialogVisible"
 	  title="璇︽儏"
 	  :visible.sync="dialogVisible"
 	  width="40%"
@@ -51,48 +55,83 @@
 	 </div>
 	 
 	  <span slot="footer" class="dialog-footer">
-	    <el-button v-if="selectOne.attachment && selectOne.attachment != ''" type="primary" @click="download">涓� 杞�</el-button>
+		   <el-button v-if="canEdit" type="primary" @click="edit">淇敼</el-button>
+		   <el-button v-if="!selectOne.examine" type="primary" @click="addProject">鐢熸垚椤圭洰</el-button>
+	    <el-button v-if="selectOne.attachment && selectOne.attachment != ''" type="primary" @click="download(selectOne)">涓� 杞�</el-button>
 	  </span>
 	</el-dialog>
 	
-	<el-dialog title="鍒涘缓璇濋" :visible.sync="dialogFormVisible">
+	<el-dialog title="鍒涘缓璇濋" :visible.sync="dialogFormVisible"  @close="closeCreate" >
 	  <el-form :model="form">
 	    <el-form-item label="璇濋鍚嶇О" :label-width="formLabelWidth">
-	      <el-input v-model="form.name" autocomplete="off"></el-input>
+	      <el-input v-model="form.title" autocomplete="off"></el-input>
 	    </el-form-item>
 	    <el-form-item label="璇濋鍐呭" :label-width="formLabelWidth">
 	        <el-input type="textarea"  v-model="form.desp" autocomplete="off"></el-input>
 	    </el-form-item>
-		<el-upload
-		  class="upload-demo"
-		  :on-preview="handlePreview"
-		  :on-remove="handleRemove"
-		  :before-remove="beforeRemove"
-		  :limit="1"
-		  :auto-upload='false'
-		  :on-exceed="handleExceed"
-		  :file-list="fileList">
-		  <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
-		  <div slot="tip" class="el-upload__tip">涓嶈秴杩�50M</div>
-		</el-upload>
+	    <el-form-item>
+				<el-upload
+					class="upload-demo"
+					:action="uploadUrl"
+					:on-preview="handlePreview"
+					:data="form"
+					:limit="3"
+					:auto-upload='false'
+					ref="upload"
+					:on-change="onChange"
+					:on-exceed="handleExceed"
+					:on-success="uploadSuccess"
+					>
+					<el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
+					<div slot="tip" class="el-upload__tip">涓嶈秴杩�50M</div>
+				</el-upload>
+			</el-form-item>
 	  </el-form>
 	  <div slot="footer" class="dialog-footer">
 	    <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
-	    <el-button type="primary" @click="dialogFormVisible = false">纭� 瀹�</el-button>
+	    <el-button type="primary" @click="createTopic">纭� 瀹�</el-button>
 	  </div>
 	</el-dialog>
+	<div style="width: 0px; height: 0px;">
+	  <iframe ref="frame_export" style="width: 0px; height: 0px; border: 0px;"></iframe>
+	</div>
+	<el-dialog v-if="dialog_1" @close="Cancel"  width="70%" top="50px" :visible.sync="dialog_1" append-to-body>
+	  <newProject @closeNewProject="closeNewProject" v-bind:rowData="rowData" ref="newProject_"></newProject>
+	</el-dialog>
 	
+	<el-dialog  v-if="dialog_2" @close="Cancel1"  width="70%" top="50px" :visible.sync="dialog_2" append-to-body>
+	  <newProject ref="newProject1_"></newProject>
+	</el-dialog>
+	
+	<el-dialog v-if="dialogProdetail"  width="70%" top="50px" :visible.sync="dialogProdetail" append-to-body>
+	  <prodetail v-bind:rowData="rowData" ref="newProject2_"></prodetail>
+	</el-dialog>
 		</div>
 </template>
 
 <script>
+	import newProject from '../components/popup/newProject.vue'
+	import prodetail from '../components/popup/prodetail.vue'
 	export default {
+		components: {
+		  newProject,
+			prodetail
+		},
 		data() {
 			return {
+				isRefresh: true,
+				rowData: {},
+				dialog_1: false,
+				dialog_2: false,
+				uploadUrl:"/api/api/file/topicUpload",
 				form:{},
-				 fileList: [],
-				 dialogVisible: false,
-				 dialogFormVisible: false,
+				pageno:1,
+				total:0,
+				maxPage:0,
+				fileList: [],
+				dialogVisible: false,
+				dialogProdetail: false,
+				dialogFormVisible: false,
 				labelPosition: "right",
 				formInline:{},
 				selectOne:{
@@ -100,85 +139,198 @@
 					desp:"miaoshu",
 					attachment:"222"
 				},
+				formLabelWidth:"100px",
 				dataList: [
-					{id:1,attachment:"222",title:"鏍囬", desp:"鎻忚堪鏃跺彂鐢熺籂绾峰徃绗﹀悎鍙屾柟閰掑彑鍙戝姩鏈烘椂浠e嘲宄婚厤鐢甸棿 鍒�鐗囨満姘寸數璐规悳璞嗚厫鐨悳鐨勭湅娉曟垜閮藉彨鎵撶牬鏄寰楁壒鍙戝晢闄勫姞璐圭涓夊搴︾牬鍙戞帴鏀跺埌鍙戝湴鏂瑰氨鎼滃埌鍒板洓鐐瑰垎鍙戝伓璇诲洤", time:"12鍒嗛挓鍓�"},
-					{id:1,attachment:"222",title:"11", desp:"111", time:"11111"},
-					{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-					{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-					{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-					{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-					{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-					{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-					{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-				],
-				loading: false
+				// 	{id:1,attachment:"222",title:"鏍囬", desp:"鎻忚堪鏃跺彂鐢熺籂绾峰徃绗﹀悎鍙屾柟閰掑彑鍙戝姩鏈烘椂浠e嘲宄婚厤鐢甸棿 鍒�鐗囨満姘寸數璐规悳璞嗚厫鐨悳鐨勭湅娉曟垜閮藉彨鎵撶牬鏄寰楁壒鍙戝晢闄勫姞璐圭涓夊搴︾牬鍙戞帴鏀跺埌鍙戝湴鏂瑰氨鎼滃埌鍒板洓鐐瑰垎鍙戝伓璇诲洤", time:"12鍒嗛挓鍓�"},
+				// 	{id:1,attachment:"222",title:"11", desp:"111", time:"11111"},
+				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
+				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
+				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
+				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
+				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
+				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
+				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
+				 ],
+				loading: false,
+				
 			}
 		},
 		computed: {
+			
 			noMore() {
-				return this.count >= 20
+				return this.maxPage == this.pageno 
 			},
 			disabled() {
 				return this.loading || this.noMore
 			}
 		},
+		mounted() {
+			this.getData();
+			let clientHeight = document.documentElement.clientHeight;
+			let tableHeight_ = clientHeight - 60 - 45 - 62;
+			this.$refs.list_div.style['height'] = tableHeight_ + "px";
+		},
 		methods: {
-			 handleRemove(file, fileList) {
-			        console.log(file, fileList);
-			      },
-			      handlePreview(file) {
-			        console.log(file);
-			      },
-			      handleExceed(files, fileList) {
-			        this.$message.warning(`褰撳墠闄愬埗閫夋嫨 3 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${files.length + fileList.length} 涓枃浠禶);
-			      },
-			      beforeRemove(file, fileList) {
-			        return this.$confirm(`纭畾绉婚櫎 ${ file.name }锛焋);
-			      },
+			Cancel() {
+				this.$refs.newProject_.Cancel();
+				this.dialogFormVisible = false;
+			},
+			Cancel1() {
+				
+			},
+			addProject() {
+				this.rowData = {
+					parentid: this.selectOne.id,
+					desp: this.selectOne.desp,
+					name: this.selectOne.title,
+					//objective:this.selected.reseachType,
+					//items:[this.$moment(this.selected.startTime).format('YYYY-MM-DD'),this.$moment(this.selected.endTime).format('YYYY-MM-DD')]
+				}
+				
+				this.dialog_1 = true;
+				this.dialogVisible = false;
+			},
+			closeNewProject() {
+				this.dialog_1 = false;
+				this.getData();
+			},
+			download(val) {
+				if(val) {
+					this.$refs.frame_export.src = "/api/api/file/download/" + val.id;
+				}else {
+						this.$message({message:'鑾峰彇鍦板潃澶辫触', type: 'warning'});
+				}
+				
+			},
+			uploadSuccess() {
+				this.dialogFormVisible = false;
+			},
+			onChange(file, fileList) {
+				this.fileList = [];
+				this.fileList = fileList;
+			},
+			canExam() {
+				return true;
+			},
+			
+			createTopic() {
+				let me = this;
+				var userId = localStorage.getItem('userId');
+				if(!userId) {
+					this.$router.push('/login');
+				}
+				this.form.userId = userId;
+				let params = this.form;
+				
+				if(this.fileList.length == 0) {
+					//涓嶅甫闄勪欢
+					let url = "/api/topic/add";
+					this.$axios.get(url, {
+							params
+						})
+						.then(data_ => {
+							if(data_.data.success) {
+								this.$message('鍒涘缓鎴愬姛');
+								me.dialogFormVisible = false;
+							}else {
+								this.$message({message:'璇濋鍒涘缓澶辫触', type: 'warning'});
+							}
+						}).catch(error => {
+						})
+				}else {
+					this.$refs.upload.submit();
+				}
+			},
+			handleRemove(file, fileList) {
+			},
+			handlePreview(file) {
+			},
+			handleExceed(files, fileList) {
+				this.$message.warning(`褰撳墠闄愬埗閫夋嫨 1 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${files.length + fileList.length} 涓枃浠禶);
+			},
+			beforeRemove(file, fileList) {
+				return this.$confirm(`纭畾绉婚櫎 ${ file.name }锛焋);
+			},
 			load() {
-				// this.loading = true
-				// setTimeout(() => {
-				// 	this.count += 2
-				// 	this.loading = false
-				// }, 2000)
+				let me = this;
+				if(me.pageno < me.maxPage) {
+					me.pageno++;
+				}
+				this.query_();
 			},
 			showItem(one) {
 				this.dialogVisible = true;
 				this.selectOne = one;
 			},
+			showLinkItem(one) {
+				this.rowData = {
+					id: one.linkId,
+				}
+				this.dialogProdetail = true;
+			},
 			createNew() {
+				this.form = {};
 				this.dialogFormVisible = true;
+			},
+			formatter(one){
+				if(one.examine && one.linkId){
+					return "宸插叧鑱旈」鐩�";
+				}
 			},
 			empty_() {
 				this.formInline = {};
 				this.query_();
 			},
 			query_() {
-				this.getData(this.formInline);
+				this.getData(this.formInline, true);
 			},
-			getData(query) {
+			canEdit() {
+				return this.selectOne.userId == this.userId;
+			},
+			edit(){
+				this.form = {
+					title: this.selectOne.title,
+					desp: this.selectOne.desp,
+					id: this.selectOne.id
+				};
+				this.dialogFormVisible = true;
+				this.dialogVisible = false;
+			},
+			closeCreate() {
+				this.dialogFormVisible = false;
+				this.getData();
+			},
+			
+			setRefresh() {
+				this.isRefresh = false;
+				this.isRefresh = true;
+			},
+			getData(query,empty) {
+				this.setRefresh();
+			//	this.dataList = [];
+				let me = this;
+				this.loading = true
 				this.loading_table = true;
 				let pageno = this.pagenum;
-				let url = "/api/scheme/page/" + pageno;
-				let params =  {
-					pageSize: this.pagesize
-				};
-				if(query){
-					params.name = query.name;
-					params.delay = query.delay;
-					params.finish = query.fiish;
-					params.type = query.type;
+				let url = "/api/topic/page/" + this.pageno;
+				let params =  {};
+				if(query && query != {}){
+					params.title = query.title;
+					params.desp = query.desp;
 				}
 				this.$axios.get(url, {
 						params
 					})
 					.then(data_ => {
-						console.log(data_);
-						this.tableData = data_.data.data.records; //缁檛ableData璧嬪��
-						this.total = data_.data.data.total;
-						this.loading_table = false;
+						if(data_.data.success) {
+							me.dataList.push.apply(me.dataList, data_.data.data.records)
+							me.total = data_.data.data.total;
+							me.pageno = data_.data.data.pageno;
+							me.maxPage = data_.data.data.maxPage;
+						}
+							me.loading = false
 					}).catch(error => {
-						console.log(error);
+							me.loading = false
 					})
 			},
 		}
@@ -193,24 +345,39 @@
 	
 	.grid-content_text {
 		font-weight: bold;
+		font-size: 14px;
 		font-style: italic;
 		color: #000;
 	}
+	.grid-content_text:hover {
+		color: #409EFF;
+		cursor:pointer;
+	}
 	.grid-content_time {
 		font-weight: bold;
-		font-style: italic;
 		color: #909399;
 	}
+	.grid-content_exam {
+		color: #00aaff;
+		font-size: 14px;
+	}
+	.grid-content_exam:hover {
+		font-weight: bold;
+		cursor:pointer;
+	}
+	
 	.z_grid-content1{
 	  display:table-cell;
 	  vertical-align:bottom;
-		height: 50px;
+		height: 30px;
 	}
 	.z_grid-content2{
 	  color: #83878a;
+		font-size: 14px;
 		padding: 0px;
-	  height: 40px;
-		line-height: 40px;
+		min-height: 24px;
+	  height: 24px;
+		line-height: 24px;
 		overflow: hidden;
 		text-overflow: ellipsis;
 		white-space: nowrap;
@@ -227,7 +394,7 @@
 		
 	}
 	.list-item {
-		margin-top: 20px;
+		margin-top: 0px;
 		padding-bottom: 5px;
 		border-bottom: 1px solid #c3c5c7;
 	}
@@ -235,6 +402,7 @@
 	.handleClose {
 		margin: 10px;
 		text-align: left;
+		margin-left: 30%;
 	}
 	.handleClose .el-dialog__body {
 		padding: 10px 20px;

--
Gitblit v1.8.0