From 355d7d39a67bc1fc27ed1e391799ff7fcc3b2aa7 Mon Sep 17 00:00:00 2001
From: zhangyanpeng <bob.zhang@highdatas.com>
Date: 星期二, 11 二月 2020 14:23:42 +0800
Subject: [PATCH] Merge branch 'master' of http://highdatas.com:9000/r/~kimi/srs

---
 src/components/popup/portion/substepReadOnly.vue |   19 
 vue.config.js                                    |    1 
 package-lock.json                                |   45 ++
 src/views/Overview.vue                           |  426 ++++++++++++++++-----
 src/views/DataEdit(1).vue                        |   14 
 shims-echart.d.ts                                |    7 
 src/components/popup/prodetail.vue               |   98 ++++
 src/components/popup/newProject.vue              |   25 
 src/views/list.vue                               |   54 ++
 src/main.ts                                      |   20 
 src/components/square.vue                        |  121 +++++
 src/components/popup/portion/substep.vue         |    7 
 src/views/login.vue                              |    4 
 package.json                                     |    4 
 src/views/Mine.vue                               |  244 +++++++++---
 src/views/Home.vue                               |    8 
 src/views/calendarTask.vue                       |   22 
 src/App.vue                                      |   24 +
 18 files changed, 907 insertions(+), 236 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index e02ca7a..ca33bc1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1065,6 +1065,14 @@
       "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=",
       "dev": true
     },
+    "@types/echarts": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npm.taobao.org/@types/echarts/download/@types/echarts-4.4.2.tgz",
+      "integrity": "sha1-iL5gubh7xlQU8i1BUINFONYqxgI=",
+      "requires": {
+        "@types/zrender": "*"
+      }
+    },
     "@types/eslint-visitor-keys": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/@types/eslint-visitor-keys/download/@types/eslint-visitor-keys-1.0.0.tgz?cache=0&sync_timestamp=1572470950582&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Feslint-visitor-keys%2Fdownload%2F%40types%2Feslint-visitor-keys-1.0.0.tgz",
@@ -1123,6 +1131,11 @@
       "resolved": "https://registry.npm.taobao.org/@types/webpack-env/download/@types/webpack-env-1.15.0.tgz",
       "integrity": "sha1-vZlW1QRLH7Q+hpqbqRSIYv+Y2f0=",
       "dev": true
+    },
+    "@types/zrender": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/@types/zrender/download/@types/zrender-4.0.0.tgz",
+      "integrity": "sha1-poBvEuxOzKrr2bDYFvBJrKYYj70="
     },
     "@typescript-eslint/eslint-plugin": {
       "version": "1.13.0",
@@ -4415,6 +4428,14 @@
       "requires": {
         "jsbn": "~0.1.0",
         "safer-buffer": "^2.1.0"
+      }
+    },
+    "echarts": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npm.taobao.org/echarts/download/echarts-4.6.0.tgz?cache=0&sync_timestamp=1577438297540&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fecharts%2Fdownload%2Fecharts-4.6.0.tgz",
+      "integrity": "sha1-taR6EEbOyTzu75VPnuVHUTQFWOw=",
+      "requires": {
+        "zrender": "4.2.0"
       }
     },
     "ee-first": {
@@ -10023,6 +10044,11 @@
       "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
       "dev": true
     },
+    "resize-detector": {
+      "version": "0.1.10",
+      "resolved": "https://registry.npm.taobao.org/resize-detector/download/resize-detector-0.1.10.tgz",
+      "integrity": "sha1-HaP5YapfkUzLz9N1LVL9Rb7raSw="
+    },
     "resize-observer-polyfill": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
@@ -12020,6 +12046,15 @@
       "resolved": "https://registry.npm.taobao.org/vue-class-component/download/vue-class-component-7.2.1.tgz",
       "integrity": "sha1-WqDWrvTEKuyAHFP+spN6Mi0ycPk="
     },
+    "vue-echarts": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npm.taobao.org/vue-echarts/download/vue-echarts-4.1.0.tgz",
+      "integrity": "sha1-/0goqqWZ56qqyV41KX2WQZKjrw0=",
+      "requires": {
+        "lodash": "^4.17.15",
+        "resize-detector": "^0.1.10"
+      }
+    },
     "vue-eslint-parser": {
       "version": "5.0.0",
       "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-5.0.0.tgz?cache=0&sync_timestamp=1573306349811&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-eslint-parser%2Fdownload%2Fvue-eslint-parser-5.0.0.tgz",
@@ -12104,6 +12139,11 @@
       "resolved": "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz",
       "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=",
       "dev": true
+    },
+    "vuescroll": {
+      "version": "4.15.0-beta.1",
+      "resolved": "https://registry.npm.taobao.org/vuescroll/download/vuescroll-4.15.0-beta.1.tgz",
+      "integrity": "sha1-MAZYsFkKaV7LoPu7X6vk7g2RqH8="
     },
     "vuex": {
       "version": "3.1.2",
@@ -12952,6 +12992,11 @@
           "dev": true
         }
       }
+    },
+    "zrender": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npm.taobao.org/zrender/download/zrender-4.2.0.tgz?cache=0&sync_timestamp=1576159866096&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fzrender%2Fdownload%2Fzrender-4.2.0.tgz",
+      "integrity": "sha1-0AEwLhVfKN4fn8f81cJUutKEcc8="
     }
   }
 }
diff --git a/package.json b/package.json
index d852710..8aa2ef1 100644
--- a/package.json
+++ b/package.json
@@ -8,16 +8,20 @@
     "lint": "vue-cli-service lint"
   },
   "dependencies": {
+    "@types/echarts": "^4.4.2",
     "axios": "^0.19.1",
     "core-js": "^3.4.4",
+    "echarts": "^4.6.0",
     "ele-calendar": "^1.2.0",
     "element-ui": "^2.13.0",
     "moment": "^2.24.0",
     "register-service-worker": "^1.6.2",
     "vue": "^2.6.10",
     "vue-class-component": "^7.0.2",
+    "vue-echarts": "^4.1.0",
     "vue-property-decorator": "^8.3.0",
     "vue-router": "^3.1.3",
+    "vuescroll": "^4.15.0-beta.1",
     "vuex": "^3.1.2"
   },
   "devDependencies": {
diff --git a/shims-echart.d.ts b/shims-echart.d.ts
new file mode 100644
index 0000000..373b715
--- /dev/null
+++ b/shims-echart.d.ts
@@ -0,0 +1,7 @@
+import Vue from 'vue';
+
+declare module 'vue/types/vue' {
+interface Vue {
+$echarts: any
+}
+}
\ No newline at end of file
diff --git a/src/App.vue b/src/App.vue
index 66f7f9a..daa2bf1 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -20,7 +20,29 @@
   -moz-osx-font-smoothing grayscale
   text-align center
   color #2c3e50
- 
+ ::-webkit-scrollbar-track-piece {
+ 	background-color:#f8f8f8;
+ 	-webkit-border-radius: 2em;
+ 	-moz-border-radius: 2em;
+ 	border-radius: 2em;
+ }
+ /*婊氬姩鏉$殑瀹藉害*/
+ ::-webkit-scrollbar {
+ 	width:6px;
+ }
+ /*婊氬姩鏉$殑璁剧疆*/
+ ::-webkit-scrollbar-thumb {
+ 	background-color:#ababab;
+ 	background-clip:padding-box;
+ 	-webkit-border-radius: 2em;
+ 	-moz-border-radius: 2em;
+ 	border-radius: 2em;
+ }
+ /*婊氬姩鏉¢紶鏍囩Щ涓婂幓*/
+ ::-webkit-scrollbar-thumb:hover {
+ 	background-color:#9a9a9a;
+ }
+
  .z_shadow {
 	 border-radius: 10px;
 	 box-shadow: 0px 0px 10px 5px #D0E2E9;
diff --git a/src/components/popup/newProject.vue b/src/components/popup/newProject.vue
index d93a4e0..395d8e0 100644
--- a/src/components/popup/newProject.vue
+++ b/src/components/popup/newProject.vue
@@ -5,7 +5,7 @@
        <el-step title="鏂规璁捐" description="纭珛鏂规"></el-step>
        <el-step title="棰勮" description=""></el-step>
      </el-steps>
-     <div style="height: 55vh; padding:0px; box-sizing:boder-box; overflow: auto;">
+     <div style="height: 45vh; padding:0px; box-sizing:boder-box; overflow: auto;">
        <div v-if="add_Step == 0" style="width: 100%; height: 100%;" align="center">
         <div style="padding-top: 5%; box-sizing:boder-box">
 					<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
@@ -75,7 +75,9 @@
 	},
   data () {
     return {
-      add_Step: 0,
+		userId: undefined,
+		assign: undefined,
+		add_Step: 0,
 			loading_nextStep: false,
 			nextStepName: "涓嬩竴姝�",
 			loading_cancel: false,
@@ -136,6 +138,8 @@
 		this.ruleForm = this.rowData;
 		this.xmId = this.rowData.id;
 	}
+	this.userId = localStorage.getItem('userId');
+	this.assign = localStorage.getItem('assign');
 },
   methods:{
 		Cancel() {
@@ -164,7 +168,6 @@
 				  if (valid) {
 				    is_null1 = true;
 				  } else {
-				    console.log('error submit!!');
 				    return false;
 				  }
 				});
@@ -194,22 +197,22 @@
 		//	let items2 = new Date(ruleForm_.items[1]).Format("yyyy-MM-dd").toLocaleString();
 			
 			let url = "/api/scheme/addOrUpdate";
+			let me = this;
 			this.$axios.get(url,{
 			  params: {
 			    reseachType: ruleForm_.objective,
 			    name: ruleForm_.name,
 					startTime: items1,
 					endTime: items2,
-					id: this.xmId,
-					desp:ruleForm_.desp
+					id: me.xmId,
+					desp:ruleForm_.desp,
+					userId: me.userId
 			  }
 			}).then(data_ => {
-			  console.log(data_);
-				this.xmId = data_.data.data;
+				me.xmId = data_.data.data;
 				
-				this.add_Step = 1;
+				me.add_Step = 1;
 			}).catch(error =>{
-			    console.log(error);
 			})
 		},
 		
@@ -268,8 +271,8 @@
 			}
 		},
 		saveStep3() {
-			let url = "/api/scheme/working/" + this.ruleForm.id;
-			this.$axios.get(url + datas).then(data_ => {
+			let url = "/api/scheme/working/" + this.xmId;
+			this.$axios.get(url).then(data_ => {
 				if(data_.data.success) {
 					this.$message('椤圭洰鍚姩鎴愬姛');
 					this.Cancel();
diff --git a/src/components/popup/portion/substep.vue b/src/components/popup/portion/substep.vue
index 2d90b4a..847d34a 100644
--- a/src/components/popup/portion/substep.vue
+++ b/src/components/popup/portion/substep.vue
@@ -1199,6 +1199,7 @@
     data() {
       return {
 				showData: {},
+				finish: false,
 				hideData: {
 					'title': false,
 					'scheme': false,
@@ -1450,7 +1451,6 @@
 			  let url = "/api/sysRoleMapping/detail";
 			  this.$axios.get(url)
 			  .then(data_ => {
-			    console.log(data_);
 			    let list = data_.data.data;
 			    let parId = "";
 			    let obj = {};
@@ -1478,17 +1478,16 @@
 			            obj[id].children = [list[i]];
 			        }
 			    }
+				
 			    me.options_users = result;
 			
 			  }).catch(error =>{
-			      console.log(error);
 			  })
 			},
 			
 			getDetailed() {
 				let url = "/api/detail/parent/" + this.xmId;
 				this.$axios.get(url).then(data_ => {
-				  console.log(data_);
 					this.defaultCheckedKeys = [];
 					this.showData = {};
 					let details_ = data_.data.data;
@@ -1509,8 +1508,8 @@
 						}
 						
 					}
+					this.finish = true;
 				}).catch(error =>{
-				    console.log(error);
 				})
 				
 			},
diff --git a/src/components/popup/portion/substepReadOnly.vue b/src/components/popup/portion/substepReadOnly.vue
index 34ffde1..d9bb894 100644
--- a/src/components/popup/portion/substepReadOnly.vue
+++ b/src/components/popup/portion/substepReadOnly.vue
@@ -1,6 +1,9 @@
 <template>
-  <div class="class_substep">
-		<div style="width: 79%; height: 100%; overflow: auto; padding-top: 0px; box-sizing: border-box;">
+  <div class="class_substep" >
+		<div style="width: 79%;text-align: center; margin: 0 10px;">
+			<h2 style="margin: 10px;">椤圭洰鎬婚噾棰�:<span style="font-weight: bold;">{{money}}</span></h2>
+		</div>
+		<div style="width: 79%; height: 88%; overflow: auto; padding-top: 0px; box-sizing: border-box;">
 			<transition name="el-zoom-in-top">
 				<div v-show="showData['title']" class="transition-box" style="text-align: center; margin: 0 10px;">
 					<h3 style="margin: 10px;">绔嬮鏈嶅姟</h3>
@@ -1190,7 +1193,9 @@
     data() {
       return {
 				showData: {},
+				money:0,
 				hideData: {
+					
 					'title': false,
 					'scheme': false,
 					'search': false,
@@ -1441,7 +1446,6 @@
 			  let url = "/api/sysRoleMapping/detail";
 			  this.$axios.get(url)
 			  .then(data_ => {
-			    console.log(data_);
 			    let list = data_.data.data;
 			    let parId = "";
 			    let obj = {};
@@ -1472,13 +1476,19 @@
 			    me.options_users = result;
 			
 			  }).catch(error =>{
-			      console.log(error);
 			  })
 			},
 			
 			getDetailed() {
 				this.showData = this.showData_;
 				this.form_= this.form_objs;
+				this.money = 0;
+				for (let itm_k in this.showData_) {
+					
+					let form_obj = {};
+					form_obj = this.form_objs[itm_k];
+					this.money += form_obj.budget; 
+				}
 			},
 			
 			//鍗曚竴浜嬩欢
@@ -1500,6 +1510,7 @@
 <style>
 	.class_substep {
 		height: 100%;
+		overflow: hidden;
 	}
 	
 	.class_substep .el-divider--horizontal {
diff --git a/src/components/popup/prodetail.vue b/src/components/popup/prodetail.vue
new file mode 100644
index 0000000..f918156
--- /dev/null
+++ b/src/components/popup/prodetail.vue
@@ -0,0 +1,98 @@
+<template>
+  <div class="class_dataImport">
+   
+     <div style="height: 55vh; padding:0px; box-sizing:boder-box;">
+       <div style="width: 1px; height: 1px;" align="center">
+       				<substep  v-if="isShow1" ref="substep_zj" v-bind:xmId="xmId"></substep>
+       </div>
+      <div style="width: 100%; height: 100%;" align="center">
+        <substepReadOnly v-if="isShow" v-bind:form_objs="form_objs" v-bind:showData_="showData_"></substepReadOnly>
+      </div>
+    </div>
+		 
+  </div>
+</template>
+
+<script>
+import substep from './portion/substep.vue'
+import substepReadOnly from './portion/substepReadOnly.vue'
+export default {
+  name: 'dataImport',
+ props:{
+ 	  rowData:{
+ 		  type: Object,
+ 		  required: true
+ 	  }
+ },
+	components: {
+		substepReadOnly,
+		substep
+	},
+  data () {
+    return {
+		userId: undefined,
+		assign: undefined,
+			loading_nextStep: false,
+			isShow1: false,
+			isShow: false,
+			loading_cancel: false,
+			
+			ruleForm: {},
+			xmId: null,
+			showData_: {},
+			form_objs: {},
+		
+		}
+  },
+mounted() {
+	
+	this.userId = localStorage.getItem('userId');
+	this.assign = localStorage.getItem('assign');
+	this.loadData();
+},
+  methods:{
+		loadData() {
+			
+			this.xmId = this.rowData.id;
+			this.isShow1 = true;
+			let me = this;
+			
+			let interval = setInterval(function(){
+				let isFinish = me.$refs.substep_zj.finish;
+				if(isFinish) {
+					me.showData_ = me.$refs.substep_zj.showData;
+					me.form_objs = me.$refs.substep_zj.form_;
+					me.isShow = true;
+					clearInterval(interval);
+				}
+				
+			},1000);
+			
+		},
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style>
+  .class_dataImport .el-tabs__content{
+    position: inherit;
+  }
+
+  .class_dataImport .grid-content {
+    border-radius: 4px;
+    height: 60px;
+    min-height: 26px; 
+  }
+  .class_dataImport .main-row .grid-content {
+    line-height: 60px;
+  }
+
+  .class_dataImport .z_grid-content2{
+    display:table-cell;
+    vertical-align:bottom;
+    color: #2c3e50;
+    height: 50px;
+  }
+
+</style>
\ No newline at end of file
diff --git a/src/components/square.vue b/src/components/square.vue
index 373a174..48b7dde 100644
--- a/src/components/square.vue
+++ b/src/components/square.vue
@@ -17,7 +17,10 @@
 					</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>
 		
 
@@ -26,8 +29,9 @@
 		<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>
+				  <el-col :span="18"><div class="grid-content z_grid-content1 grid-content_text">{{one.title}}</div></el-col>
+				  <el-col :span="3"><div class="grid-content z_grid-content1 grid-content_exam">{{formatter(one.examine)}}</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>
@@ -51,11 +55,13 @@
 	 </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(selectOne)">鐢熸垚椤圭洰</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.title" autocomplete="off"></el-input>
@@ -73,6 +79,7 @@
 		  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>
@@ -83,14 +90,29 @@
 	    <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;"></iframe>
+	</div>
+	<el-dialog @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 @close="Cancel1"  width="70%" top="50px" :visible.sync="dialog_2" append-to-body>
+	  <newProject ref="newProject1_"></newProject>
+	</el-dialog>
 		</div>
 </template>
 
 <script>
+	import newProject from '../components/popup/newProject.vue'
 	export default {
+		components: {
+		  newProject
+		},
 		data() {
 			return {
+				rowData:undefined,
+				dialog_1: false,
 				uploadUrl:"/api/api/file/topicUpload",
 				form:{},
 				pageno:1,
@@ -106,6 +128,7 @@
 					desp:"miaoshu",
 					attachment:"222"
 				},
+				formLabelWidth:"40%",
 				dataList: [
 				// 	{id:1,attachment:"222",title:"鏍囬", desp:"鎻忚堪鏃跺彂鐢熺籂绾峰徃绗﹀悎鍙屾柟閰掑彑鍙戝姩鏈烘椂浠e嘲宄婚厤鐢甸棿 鍒�鐗囨満姘寸數璐规悳璞嗚厫鐨悳鐨勭湅娉曟垜閮藉彨鎵撶牬鏄寰楁壒鍙戝晢闄勫姞璐圭涓夊搴︾牬鍙戞帴鏀跺埌鍙戝湴鏂瑰氨鎼滃埌鍒板洓鐐瑰垎鍙戝伓璇诲洤", time:"12鍒嗛挓鍓�"},
 				// 	{id:1,attachment:"222",title:"11", desp:"111", time:"11111"},
@@ -122,6 +145,7 @@
 			}
 		},
 		computed: {
+			
 			noMore() {
 				return this.maxPage == this.pageno 
 			},
@@ -133,10 +157,55 @@
 			this.getData();
 		},
 		methods: {
+			Cancel() {
+				this.$refs.newProject_.Cancel();
+				this.dialogFormVisible = false;
+			},
+			addProject(selected) {
+				let url = "/api/topic/exam/" + selected.id;
+				this.$axios.get(url)
+					.then(data_ => {
+						if(data_.data.success) {
+							this.rowData = {
+								id:selected.id,
+								desp:selected.desp,
+								name:selected.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.dialogFormVisible = false;
+							this.dialog_1 = true;
+						}else {
+							this.$message({message:'鍒涘缓椤圭洰澶辫触', type: 'warning'});
+						}
+					}).catch(error => {
+					})
+				
+				
+			},
+			closeNewProject() {
+				this.dialog_1 = false;
+				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');
@@ -156,21 +225,19 @@
 							if(data_.data.success) {
 								this.$message('鍒涘缓鎴愬姛');
 								me.dialogFormVisible = false;
+								me.getData();
 							}else {
 								this.$message({message:'璇濋鍒涘缓澶辫触', type: 'warning'});
 							}
 						}).catch(error => {
-							console.log(error);
 						})
 				}else {
 					this.$refs.upload.submit();
 				}
 			},
 			 handleRemove(file, fileList) {
-			        console.log(file, fileList);
 			      },
 			      handlePreview(file) {
-			        console.log(file);
 			      },
 			      handleExceed(files, fileList) {
 			        this.$message.warning(`褰撳墠闄愬埗閫夋嫨 1 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${files.length + fileList.length} 涓枃浠禶);
@@ -194,14 +261,38 @@
 			createNew() {
 				this.dialogFormVisible = true;
 			},
+			formatter(exam){
+				if(exam){
+					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();
+			},
+			getData(query,empty) {
+				if(empty) {
+					this.dataList = [];
+				}
 				let me = this;
 				this.loading = true
 				this.loading_table = true;
@@ -216,10 +307,10 @@
 						params
 					})
 					.then(data_ => {
-						console.log(data_);
 						if(data_.data.success) {
 							me.dataList.push.apply(me.dataList, data_.data.data.records)
-							me.total = data_.data.data.total;
+							me.t
+							otal = data_.data.data.total;
 							me.pageno = data_.data.data.pageno;
 							me.maxPage = data_.data.data.maxPage;
 							
@@ -227,7 +318,6 @@
 						}
 							me.loading = false
 					}).catch(error => {
-						console.log(error);
 							me.loading = false
 					})
 			},
@@ -248,9 +338,12 @@
 	}
 	.grid-content_time {
 		font-weight: bold;
-		font-style: italic;
 		color: #909399;
 	}
+	.grid-content_exam {
+		color: #00aaff;
+		font-size: 14px;
+	}
 	.z_grid-content1{
 	  display:table-cell;
 	  vertical-align:bottom;
diff --git a/src/main.ts b/src/main.ts
index 87d49de..a8dce39 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -8,8 +8,11 @@
 import "element-ui/lib/theme-chalk/index.css";
 import Axios from 'axios';
 //npm i moment --save
-import moment from 'moment'
+import moment from 'moment';
+import echarts from 'echarts'
 
+
+Vue.prototype.$echarts = echarts
 Vue.use(ElementUI);
 Vue.prototype.$moment = moment;//璧嬪�间娇鐢�
  
@@ -18,6 +21,21 @@
 Axios.defaults.baseURL = '/api';
 Axios.defaults.headers.post['Content-Type'] = 'application/json';
 
+Axios.interceptors.request.use(
+    config => {
+		let userId_ = localStorage.getItem('userId');
+        if (!userId_) {  //
+             router.replace({
+				path: 'login',
+			   
+			})
+        }
+        return config;
+    },
+    err => {
+        return Promise.reject(err);
+    });
+	
 
 new Vue({
   router,
diff --git "a/src/views/DataEdit\0501\051.vue" "b/src/views/DataEdit\0501\051.vue"
index cb56aa5..8529061 100644
--- "a/src/views/DataEdit\0501\051.vue"
+++ "b/src/views/DataEdit\0501\051.vue"
@@ -273,7 +273,6 @@
        // let url = "/api/master/" + this.menuObj.tableName + "/all/1"
         let url = "/api/field/" + this.menuObj.tableName;
           this.$axios.get(url).then(data_ => {
-            console.log(data_);
             me.tableFields = data_.data.data;
            /* var fields_ = [];
             var result = data_.data.data;
@@ -287,7 +286,6 @@
             me.getData_edit();
           })
           .catch(error =>{
-              console.log(error);
           })
       },
 
@@ -330,7 +328,6 @@
           }
         }
         ).then(data_ => {
-          console.log(data_);
           let header_height = me.$refs.dataEdit_table.$el.getElementsByClassName('el-table__header-wrapper')[0].offsetHeight;
           me.$refs.dataEdit_table.$el.getElementsByClassName('el-table__body-wrapper')[0].style['height'] = me.tableHeight - header_height + "px";
           me.$refs.dataEdit_table.$el.getElementsByClassName('el-table__body-wrapper')[0].style['min-height'] = me.tableHeight - header_height + "px";
@@ -342,7 +339,6 @@
           me.loading_edit = false;
         })
         .catch(error =>{
-            console.log(error);
         })
       },
 
@@ -375,11 +371,9 @@
             desp: this.desp
           }
         }).then(data_ => {
-          console.log(data_);
           this.alert2_("褰撳墠娴佺▼姝e湪瀹℃壒");
         })
         .catch(error =>{
-            console.log(error);
         });
       },
 
@@ -402,7 +396,6 @@
             },
           }
         ).then(data_ => {
-            console.log(data_);
             if (!data_.data.data.grid || !data_.data.data) {
               this.tableData_edit = [];
               this.currentPage_edit = 1;
@@ -416,7 +409,6 @@
             this.loading_edit = false;
           })
           .catch(error =>{
-              console.log(error);
               this.loading_edit = false;
               this.tableData_edit = [];
               this.currentPage_edit = 1;
@@ -454,12 +446,10 @@
         let datas = "?datas=" + encodeURI(table_data.id);
         this.$axios.post(url + datas
         ).then(data_ => {
-          console.log(data_);
 
           this.query_edit();
         })
         .catch(error =>{
-            console.log(error);
         });
 
       },
@@ -506,14 +496,12 @@
         let datas = "?datas=" + encodeURI(JSON.stringify(table_data)) + "&fields=" + fields_;
         this.$axios.post(url + datas
         ).then(data_ => {
-          console.log(data_);
 
           this.loading_button_add = false;
           this.dialog_4_1_1 = false;
           this.query_edit();
         })
         .catch(error =>{
-            console.log(error);
         });
       },
 
@@ -560,13 +548,11 @@
 
        this.$axios.post(url + datas
         ).then(data_ => {
-          console.log(data_);
           me.loading_button_update = false;
           me.dialog_4_2 = false;
           me.query_edit();
         })
         .catch(error =>{
-            console.log(error);
         });
       },
 
diff --git a/src/views/Home.vue b/src/views/Home.vue
index 53f7e01..19185fa 100644
--- a/src/views/Home.vue
+++ b/src/views/Home.vue
@@ -42,7 +42,7 @@
 		  <el-container>
 		    <el-header style="text-align: right; font-size: 15px;padding-right: 40px;">
 					<i class="el-icon-user-solid"></i>
-					<span>admin</span>
+					<span>{{userName}}</span>
 					<el-button size="small" type="primary" @click="Cancel">閫� 鍑�</el-button>
 		    </el-header>
 		    
@@ -70,6 +70,7 @@
   },
 	created() {
 		let userId_ = localStorage.getItem('userId');
+		this.userName = localStorage.getItem('userName');
 		let departId = localStorage.getItem('departId');
 		if (!userId_ || !departId) {
 			this.$router.push('/login');
@@ -80,8 +81,10 @@
 			let type;
 			if(departId == "100" || departId == "500") {
 				type = departId;
+				 localStorage.setItem('assign', false);
 			}else {
 				type = "all";
+				localStorage.setItem('assign', true);
 			}
 			
 			this.getMenu(type);
@@ -98,7 +101,7 @@
 					{'id': "111_1", 'title': "淇℃伅骞垮満", 'path': 'square', 'parentId': "111"}, //
 					{'id': "111_2", 'title': "椤圭洰鎬昏", 'path': 'list', 'parentId': "111"}, //
 					{'id': "111_3", 'title': "椤圭洰鍒嗘瀽", 'path': 'Overview', 'parentId': "111"}, //
-					{'id': "111_4", 'title': "褰掓。鎶ュ憡", 'path': 'project4', 'parentId': "111"}, //
+					// {'id': "111_4", 'title': "褰掓。鎶ュ憡", 'path': 'project4', 'parentId': "111"}, //
 					{'id': "112_1", 'title': "浠诲姟鍒楄〃", 'path': 'calendarTask', 'parentId': "112"}, //
 				],
 				100: [
@@ -150,6 +153,7 @@
 		
 		Cancel() {
 			this.$router.push('/login');
+			localStorage.setItem('userId', undefined);
 		},
 		menuSelect(index, a){
 		 let isPage = index.substring(0,2);
diff --git a/src/views/Mine.vue b/src/views/Mine.vue
index 28e48f0..90e8120 100644
--- a/src/views/Mine.vue
+++ b/src/views/Mine.vue
@@ -2,7 +2,7 @@
 	<div class="class_mine">
 		<el-row :gutter="12">
 		  <el-col :span="15">
-		    <el-card class="box-card" shadow="hover" style="width: 100%; height: 30vh;">
+		    <el-card class="box-card" shadow="hover" style="width: 100%; height: 32vh;">
 		    	<div slot="header" class="clearfix">
 		    		<span>姒傝</span>
 		    	</div>
@@ -12,6 +12,7 @@
 		    		  <el-col :span="12"><div class="grid-content" style="font-size: 14px;">浠婂ぉ鍓╀綑宸ヤ綔鎬昏</div></el-col>
 		    		</el-row>
 						<div style="width: 100%; height: 110px; overflow: auto;">
+							
 							<div class="card1_div" v-for="(card1_itm, k) in overview1" :key="k">
 								<div class="card1_header">{{card1_itm.name}}</div>
 								<div class="card1_body">{{card1_itm.count}}</div>
@@ -23,7 +24,7 @@
 		    </el-card>
 		  </el-col>
 		  <el-col :span="9">
-		    <el-card class="box-card"  shadow="hover" style="width: 100%; height: 30vh;">
+		    <el-card class="box-card"  shadow="hover" style="width: 100%; height: 32vh;">
 		    	<div slot="header" class="clearfix">
 		    		<span>椤圭洰鎬昏</span>
 		    	</div>
@@ -33,8 +34,8 @@
 							<div class="card2_body">{{sum_count}}</div>
 							<el-button size="mini" type="primary" round @click="see_click">鏌ョ湅鎵�鏈�</el-button>
 						</div>
-						<div class="card2_div" style="width: 80%;">
-							
+						<div class="card2_div" style="margin-left:10%;width: 70%;">
+							<div id="typeChart"  :style="{width: '100%', height: '100%'}"></div>
 						</div>	
 						
 		    	</div>
@@ -50,28 +51,29 @@
 		    	<div class="card3">
 		    		<div class="card3_div" style="width: 40%; height: 34vh; overflow-y: auto;  border-right: 1px solid #333333;">
 		    			<el-table
-								:data="tableData"
-								height="200"
-								highlight-current-row
-								@row-click="setActiveTableData"
-								style="width: 100%">
-								<el-table-column
-									prop="name"
-									label="椤圭洰鍚嶇О"
-								>
-								</el-table-column>
-							</el-table>
+		    					:data="tableData"
+		    					height="200"
+		    					highlight-current-row
+		    					@row-click="setActiveTableData"
+		    					style="width: 100%">
+		    					<el-table-column
+		    						prop="name"
+		    						label="椤圭洰鍚嶇О"
+		    					>
+		    					</el-table-column>
+		    				</el-table>
+							
 		    		</div>
 		    		<div class="card3_div" style="width: 58%;">
 							<el-row :gutter="12" style="margin-top: 10px;">
 							  <el-col :span="8" style="text-align: center;">
 									<el-progress type="circle" :percentage="card3Count.rate"></el-progress>
 								</el-col>
-								<el-col :span="10">
-									<div style="height: 14vh;">
+								<el-col :span="10" style="font-size: 14px;">
+									<div style="height: 14vh; ">
 										<div>
 											<i class="el-icon-success" style="color: #40FF9E;"></i>
-											<span>鏄ㄦ棩瀹屾垚浠诲姟鏁帮細{{card3Count.complete1}}</span>
+											<span>鏄ㄦ棩瀹屾垚浠诲姟鏁帮細{{card3Count.yesDeal}}</span>
 										</div>
 										<div>
 											<el-progress :percentage="card3Count.rate1" style="margin: 5px;"></el-progress>
@@ -81,7 +83,7 @@
 									<div>
 										<div>
 											<i class="el-icon-success" style="color: #40FF9E;"></i>
-											<span>浠婃棩瀹屾垚浠诲姟鏁帮細{{card3Count.complete2}}</span>
+											<span>浠婃棩瀹屾垚浠诲姟鏁帮細{{card3Count.nowDeal}}</span>
 										</div>
 										<div>
 											<el-progress :percentage="card3Count.rate2" style="margin: 5px;"></el-progress>
@@ -91,13 +93,13 @@
 								
 								<el-col :span="6">
 									<div style="height: 14vh;">
-										<div><span>鎬讳换鍔★細{{card3Count.sum1}}</span></div>
-										<div><span>鏈畬鎴愶細{{card3Count.unfinished1}}</span></div>
+										<div><span>鎬讳换鍔★細{{card3Count.yesTotal}}</span></div>
+										<div><span>宸插畬鎴愶細{{card3Count.yesDeal}}</span></div>
 									</div>
 									
 									<div>
-										<div><span>鎬讳换鍔★細{{card3Count.sum2}}</span></div>
-										<div><span>鏈畬鎴愶細{{card3Count.unfinished2}}</span></div>
+										<div><span>鎬讳换鍔★細{{card3Count.nowTotal}}</span></div>
+										<div><span>宸插畬鎴愶細{{card3Count.nowDeal}}</span></div>
 									</div>
 								</el-col>
 							</el-row>
@@ -126,54 +128,82 @@
 				overview1: [],
 				tableData: [],
 				activeTableData: {},
-				
-				card3Count: {}
+				sum_count:0,
+				card3Count: {},
+				typeChart:undefined,
 			}
 		},
 		created() {
 			this.init();
 		},
+		mounted(){
+			this.typeChart = this.$echarts.init(document.getElementById('typeChart'));
+		},
 		methods: {
 			init() {
+				
+				this.$axios.get("/api/scheme/all")
+					.then(data_ => {
+						console.log(data_);
+						if (data_.data.success) {
+							var datas = data_.data.data;
+							this.tableData = datas;
+						}
+					}).catch(error => {
+						console.log(error);
+					});
+				this.$axios.get("/api/scheme/typesCnt")
+					.then(data_ => {
+						console.log(data_);
+						if (data_.data.success) {
+							var datas = data_.data.data;
+							
+							this.sum_count = datas.total;
+							this.initChart(datas.typeCnt);
+						}
+					}).catch(error => {
+						console.log(error);
+					});
 				this.date_ = this.$moment(new Date).format('YYYY骞碝M鏈圖D鏃�');
-				this.overview1 = [
-					{name: "鎴戠殑浠诲姟", count: 15, warning: "宸查�炬湡11"},
-					{name: "绔嬫涓庢柟妗堝紑鍙�", count: 15, warning: "宸查�炬湡11"},
-					{name: "鏂囩尞妫�绱笌绛涢��", count: 15, warning: "宸查�炬湡11"},
-					{name: "鏁版嵁鎻愬彇", count: 15, warning: "宸查�炬湡11"},
-					{name: "鏁版嵁鍒嗘瀽", count: 15, warning: "宸查�炬湡11"},
-					{name: "鏂囩鎾板啓", count: 15, warning: "宸查�炬湡11"},
-				];
+				this.$axios.get("/api/detail/dayTask")
+					.then(data_ => {
+						console.log(data_);
+						if (data_.data.success) {
+							var datas = data_.data.data;
+							datas.map(el => {
+							if(el.delay > 0) {
+								el.warning="宸查�炬湡" + ell.delay;
+							}else {
+								el.warning = undefined;
+							}
+							el.count = el.total;
+							el.name = el.type;
+							return el;
+						});
+						this.overview1 = datas;
+						}
+					}).catch(error => {
+						console.log(error);
+					})
+				// this.overview1 = [
+				// 	{name: "鎴戠殑浠诲姟", count: 15, warning: "宸查�炬湡11"},
+				// 	{name: "绔嬫涓庢柟妗堝紑鍙�", count: 15, warning: "宸查�炬湡11"},
+				// 	{name: "鏂囩尞妫�绱笌绛涢��", count: 15, warning: "宸查�炬湡11"},
+				// 	{name: "鏁版嵁鎻愬彇", count: 15, warning: "宸查�炬湡11"},
+				// 	{name: "鏁版嵁鍒嗘瀽", count: 15, warning: "宸查�炬湡11"},
+				// 	{name: "鏂囩鎾板啓", count: 15, warning: "宸查�炬湡11"},
+				// ];
 				
-				this.sum_count = 345;
-				
-				this.tableData = [
-					{id: "1111111", name: "妫�鏌ユ悳绱㈣偗寰峰熀浼犻��"},
-					{id: "1111111", name: "妫�鏌ユ悳绱㈣偗寰峰熀浼犻��"},
-					{id: "1111111", name: "妫�鏌ユ悳绱㈣偗寰峰熀浼犻��"},
-					{id: "1111111", name: "妫�鏌ユ悳绱㈣偗寰峰熀浼犻��"},
-					{id: "1111111", name: "妫�鏌ユ悳绱㈣偗寰峰熀浼犻��"},
-					{id: "1111111", name: "妫�鏌ユ悳绱㈣偗寰峰熀浼犻��"},
-					{id: "1111111", name: "妫�鏌ユ悳绱㈣偗寰峰熀浼犻��"},
-					{id: "1111111", name: "妫�鏌ユ悳绱㈣偗寰峰熀浼犻��"},
-					{id: "1111111", name: "妫�鏌ユ悳绱㈣偗寰峰熀浼犻��"},
-					{id: "1111111", name: "妫�鏌ユ悳绱㈣偗寰峰熀浼犻��"},
-				];
-				
-				
-				this.card3Count = {
-					sum: 345, //鎬讳换鍔�
-					complete: 200, //宸插畬鎴�
-					sum1: 20,  //鏄ㄦ棩鎬讳换鍔�
-					sum2: 16,
-					unfinished1: 10,  //鏄ㄦ棩鏈畬鎴�
-					unfinished2: 6,
-					complete1: 10,  //鏄ㄦ棩宸插畬鎴�
-					complete2: 10
-				};
-				this.card3Count.rate =  Math.round(this.card3Count.complete/this.card3Count.sum * 100);
-				this.card3Count.rate1 = Math.round(this.card3Count.complete1/this.card3Count.sum1 * 100);
-				this.card3Count.rate2 = Math.round(this.card3Count.complete2/this.card3Count.sum2 * 100);
+				// this.card3Count = {
+				// 	total: 345, //鎬讳换鍔�
+				// 	deal: 200, //宸插畬鎴�
+				// 	yesTotal: 20,  //鏄ㄦ棩鎬讳换鍔�
+				// 	nowTotal: 16,
+				// 	unfinished1: 10,  //鏄ㄦ棩鏈畬鎴�
+				// 	unfinished2: 6,
+				// 	yesDeal: 10,  //鏄ㄦ棩宸插畬鎴�
+				// 	nowDeal: 10
+				// };
 				
 		},
 		
@@ -183,8 +213,96 @@
 		
 		setActiveTableData(currentRow, oldCurrentRow) {
 		    this.activeTableData = currentRow;
+			this.$axios.get("/api/scheme/daywork/" + currentRow.id)
+				.then(data_ => {
+					console.log(data_);
+					if (data_.data.success) {
+						var datas = data_.data.data;
+						this.card3Count = datas;
+						
+						this.card3Count.rate =  Math.round(this.card3Count.deal/(this.card3Count.total == 0 ? 1: this.card3Count.total) * 100);
+						this.card3Count.rate1 = Math.round(this.card3Count.yesDeal/(this.card3Count.yesTotal == 0 ? 1: this.card3Count.yesTotal) * 100);
+						this.card3Count.rate2 = Math.round(this.card3Count.nowDeal/(this.card3Count.nowTotal == 0 ? 1: this.card3Count.nowTotal) * 100);
+						
+					}
+				}).catch(error => {
+					console.log(error);
+				})
 		},
-		
+		initChart(val) {
+			if(!val){
+				return;
+			}
+			this.typeChart.setOption({
+				
+				    backgroundColor: '#fff',
+				    grid: {
+				        top: '22%',
+				        right: '2%',
+				        left: '2%',
+				        bottom: '18%'
+				    },
+				    xAxis: [{
+				        type: 'category',
+				        color: '#59588D',
+				        data: ["鏈紑濮�","杩涜涓�","宸插欢鏈�","宸茬粨鏉�"],
+				        axisLabel: {
+				            margin: 8,
+				            color: '#000',
+				            textStyle: {
+				                fontSize: 12
+				            },
+				        },
+				        axisLine: {
+				            show:false,
+				            
+				        },
+				        axisTick: {
+				            show: false
+				        },
+				    }],
+				    yAxis: [{
+				        
+				        axisLabel: {
+				            show:false,
+				        
+				        },
+				        axisLine: {
+				            show:false,
+				            
+				        },
+				        axisTick: {
+				            show: false
+				        },
+				        splitLine: {
+				            show:false,
+				            
+				        }
+				    }],
+				    series: [{
+				        type: 'bar',
+				        data: val,
+				        barWidth: '20px',
+				        itemStyle: {
+				            normal: {
+				                color: "#409EFF",
+				                barBorderRadius: [30, 30, 0, 0],
+				            }
+				        },
+				        label: {
+				            normal: {
+				                show: true,
+				                fontSize: 18,
+				                fontWeight: 'bold',
+				                color: '#333',
+				                position: 'top',
+				            }
+				        }
+				    }
+				]
+
+			});
+		}
 	},
 	}
 </script>
diff --git a/src/views/Overview.vue b/src/views/Overview.vue
index 7119948..ab7a7cd 100644
--- a/src/views/Overview.vue
+++ b/src/views/Overview.vue
@@ -3,35 +3,46 @@
 		<div style="float: left; width: 100%; height: 50px;">
 			<span>璇烽�夋嫨椤圭洰锛�</span>
 			<el-select @change="selectChange_" filterable v-model="value" placeholder="璇烽�夋嫨" size="small">
-				<el-option
-					v-for="item in options"
-					:key="item.value"
-					:label="item.label"
-					:value="item.value">
+				<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
 				</el-option>
 			</el-select>
-			
-			
+
+
 		</div>
 		<div style="float: left; margin-left: 1%; width: 69%; height: 70vh; ">
-			<div class="z_shadow" style="float: left; margin: 10px; margin-top: 0px; width: 46%; height: 43%; border: 1px solid #e4eef9;"></div>
-			<div class="z_shadow" style="float: left; margin: 10px; margin-top: 0px; width: 46%; height: 43%; border: 1px solid #e4eef9;"></div>
-			<div class="z_shadow" style="float: left; margin: 10px; width: 46%; height: 43%; border: 1px solid #e4eef9;"></div>
+			<div class="z_shadow" style="float: left; margin: 10px; margin-top: 0px; width: 46%; height: 43%; border: 1px solid #e4eef9;">
+				<div id="myChart" :style="{width: '100%', height: '100%'}"></div>
+			</div>
+			<div class="z_shadow" style="float: left; margin: 10px; margin-top: 0px; width: 46%; height: 43%; border: 1px solid #e4eef9;overflow: auto;padding: 5px;">
+				<el-timeline :reverse="reverse">
+					<el-timeline-item v-for="(deal, index) in deals" :key="index" :timestamp="deal.createTime">
+						{{deal.desp}}
+					</el-timeline-item>
+				</el-timeline>
+
+			</div>
+			<div class="z_shadow" style="float: left; margin: 10px; width: 46%; height: 43%; border: 1px solid #e4eef9;">
+				<el-row :gutter="20">
+				  <el-col :span="6"  v-for="(oneUser, index) in userList" :key="index"><div class="grid-content bg-purple">
+				  <i class="el-icon-user-solid"></i>
+				  <span>{{oneUser.name}}</span></div></el-col>
+				</el-row>
+			</div>
 			<div class="z_shadow" style="float: left; margin: 10px; padding: 10px; box-sizing: border-box; width: 46%; height: 43%; border: 1px solid #e4eef9;">
 				<h3 style="margin: 0px;">鏂囨。搴�</h3>
 				<div class="files_div">
 					<div style="width: 0px; height: 0px;">
-					  <iframe ref="frame_export" style="width: 0px; height: 0px;"></iframe>
+						<iframe ref="frame_export" style="width: 0px; height: 0px;"></iframe>
 					</div>
 					<div v-if="fileLevel > 0">
-						<el-button  type="text" size="mini" @click="upFile_click">涓婁竴绾�</el-button>
+						<el-button type="text" size="mini" @click="upFile_click">涓婁竴绾�</el-button>
 					</div>
 					<div v-for="(file, k) in fileList" :key="k" @click="file_click(file)" class="file_div">
 						<i v-if="file.type==='isfiles'" class="el-icon-folder"></i>
 						<i v-else-if="file.type==='isfile'" class="el-icon-tickets"></i>
 						<span>{{file.name}}</span>
 					</div>
-					
+
 				</div>
 			</div>
 		</div>
@@ -45,83 +56,66 @@
 			</div>
 		</div>
 		
-		
-		
-		
 	</div>
 </template>
 
 <script>
-	
-	
 	export default {
-		
+
 		data() {
 			return {
-				options: [
-					{
-						value: '閫夐」1',
-						label: '椤圭洰1'
-					}, {
-						value: '閫夐」2',
-						label: '椤圭洰2'
-					}, {
-						value: '閫夐」3',
-						label: '椤圭洰3'
-					}, {
-						value: '閫夐」4',
-						label: '椤圭洰4'
-					}, {
-						value: '閫夐」5',
-						label: '椤圭洰5'
-					}
-				],
+				options: [],
+				deals: [],
 				value: '',
 				dialog_1: false,
 				fileLevel: 0,
 				fileList: [],
-				
+	
 				task_itm: [
-				 	{'id': "111_1", 'name': "绔嬮鏈嶅姟", desp: "鎻忚堪鐪嬪埌闈欏畨瀵�", 'state': "杩涜涓�"}, //
-				 	{'id': "111_2", 'name': "鏂规寮�鍙戞湇鍔�", desp: "鎻忚堪鐪嬪埌闈欏畨瀵�", 'state': "杩涜涓�"}, 
-				 	{'id': "111_2", 'name': "鏂规寮�鍙戞湇鍔�", desp: "鎻忚堪鐪嬪埌闈欏畨瀵�", 'state': "杩涜涓�"}, 
-				 	{'id': "111_2", 'name': "鏂规寮�鍙戞湇鍔�", desp: "鎻忚堪鐪嬪埌闈欏畨瀵�", 'state': "杩涜涓�"}, 
-				 	{'id': "111_2", 'name': "鏂规寮�鍙戞湇鍔�", desp: "鎻忚堪鐪嬪埌闈欏畨瀵�", 'state': "杩涜涓�"}, 
-				 	{'id': "111_2", 'name': "鏂规寮�鍙戞湇鍔�", desp: "鎻忚堪鐪嬪埌闈欏畨瀵�", 'state': "杩涜涓�"}, 
-				 	{'id': "111_2", 'name': "鏂规寮�鍙戞湇鍔�", desp: "鎻忚堪鐪嬪埌闈欏畨瀵�", 'state': "杩涜涓�"}, 
-				 	{'id': "111_2", 'name': "鏂规寮�鍙戞湇鍔�", desp: "鎻忚堪鐪嬪埌闈欏畨瀵�", 'state': "杩涜涓�"}, 
-				 	{'id': "111_2", 'name': "鏂规寮�鍙戞湇鍔�", desp: "鎻忚堪鐪嬪埌闈欏畨瀵�", 'state': "杩涜涓�"}, 
-				 	{'id': "111_2", 'name': "鏂规寮�鍙戞湇鍔�", desp: "鎻忚堪鐪嬪埌闈欏畨瀵�", 'state': "杩涜涓�"}, 
-				 	{'id': "111_2", 'name': "鏂规寮�鍙戞湇鍔�", desp: "鎻忚堪鐪嬪埌闈欏畨瀵�", 'state': "杩涜涓�"}, 
-					
-				]
+				 	
+				],
+				myChart: undefined,
+				userList: [],
+				grandPa:"",
 			}
 		},
 		mounted() {
 			this.initSelect();
-			
-			let fileList1 = [
-					{name: "鏂囦欢鍚嶇О1", type: "isfile", path: ""},
-					{name: "鏂囦欢鍚嶇О2", type: "isfile", path: ""},
-					{name: "鏂囦欢澶瑰悕绉�", type: "isfiles", path: ""},
-				];
+			this.myChart = this.$echarts.init(document.getElementById('myChart'))
+			let fileList1 = [{
+					name: "鏂囦欢鍚嶇О1",
+					type: "isfile",
+					path: ""
+				},
+				{
+					name: "鏂囦欢鍚嶇О2",
+					type: "isfile",
+					path: ""
+				},
+				{
+					name: "鏂囦欢澶瑰悕绉�",
+					type: "isfiles",
+					path: ""
+				},
+			];
 			this.fileList = fileList1;
+			this.initChart();
 		},
-		
+
 		methods: {
 			initSelect() {
 				var me = this;
 				this.$axios.get("/api/scheme/all")
 					.then(data_ => {
 						console.log(data_);
-						if(data_.data.success){
+						if (data_.data.success) {
 							me.options = [];
 							var datas = data_.data.data;
-							datas.forEach(function(one){
+							datas.forEach(function(one) {
 								var item = {
-									value:one.id,
-									label:one.name
-								} 
+									value: one.id,
+									label: one.name
+								}
 								me.options.push(item);
 							});
 						}
@@ -130,53 +124,283 @@
 					})
 			},
 			file_click(file) {
-				if (file.type == 'isfiles') {
-					let fileList2 = [
-						{name: "瀛愭枃浠跺悕绉�1", type: "isfile", path: ""},
-						{name: "瀛愭枃浠跺悕绉�2", type: "isfile", path: ""},
-						{name: "瀛愭枃浠跺す鍚嶇О", type: "isfiles", path: ""},
-					];
-					this.fileList = fileList2;
-					this.fileLevel ++;
-				}
-				else {
+				if (!file.file) {
+
+					let url = "/api/file/child" ;
+					this.$axios.get(url,{
+						params:{
+							path:encodeURI(file.path)
+						}
+					})
+						.then(data_ => {
+							console.log(data_);
+							if (data_.data.success) {
+								
+								var datas = data_.data.data;
+								this.fileList = datas;
+								if(datas.length > 0) {
+									this.grandPa = datas[0].grandPa;
+								}
+								
+								this.fileLevel++;
+							}
+						}).catch(error => {
+							console.log(error);
+						})
+
+				} else {
 					//涓嬭浇
-					this.$refs.frame_export.src = "";
+					if (file.path) {
+						let url = "/api/api/file/downloadPath?path=" + encodeURI(file.path);
+						this.$refs.frame_export.src = url;
+					}
+
 				}
 			},
 			upFile_click() {
-				this.fileLevel --;
+				if(!this.grandPa) {
+					this.$message({message:'璇峰埛鏂扮晫闈㈠悗閲嶈瘯', type: 'warning'});
+					return;
+				}
+				let url = "/api/file/child" ;
+				this.$axios.get(url,{
+					params:{
+						path:encodeURI(this.grandPa)
+					}
+				})
+					.then(data_ => {
+						console.log(data_);
+						if (data_.data.success) {
+							
+							var datas = data_.data.data;
+							this.fileList = datas;
+							this.fileLevel--;
+						}
+					}).catch(error => {
+						console.log(error);
+					})
 				
-				let fileList2 = [
-					{name: "鏂囦欢鍚嶇О1", type: "isfile", path: ""},
-					{name: "鏂囦欢鍚嶇О2", type: "isfile", path: ""},
-					{name: "鏂囦欢澶瑰悕绉�", type: "isfiles", path: ""},
-				];
-				this.fileList = fileList2;
 			},
-			
+
 			Cancel() {
-				
+
 			},
 			selectChange_(val) {
+				let me = this;
 				let url = "/api/scheme/getSchemeInfo/" + this.value;
-				this.$axios.get(url,{
-				  
+				this.$axios.get(url, {
+
 				}).then(data_ => {
-				  console.log(data_);
-					// 鍥�
-					// 璁板綍
-					// 浜哄憳
-					// 璇︽儏
-					//鐩綍
-				}).catch(error =>{
-				    console.log(error);
+					console.log(data_);
+					if (data_.data.success) {
+						let result = data_.data.data;
+						me.initChart(result.option);
+						me.userList = result.users;
+						result.paths = result.paths.map(el => {
+							el.path = decodeURI(el.path);
+							return el;
+						});
+						result.record = result.record.map(el => {
+							var imoment = this.$moment(el.createTime);
+							// 鏍煎紡鍖栨垚锛屽勾鏈堟棩
+							let iformat = imoment.format('YYYY-MM-DD HH:mm:ss');
+							el.createTime = iformat;
+							if(!el.desp) {
+								el.desp = "鏆傛棤鎻忚堪";
+							}
+							return el;
+						});
+						result.scheme = result.scheme.map(el => {
+							if(el.finish) {
+								el.state="宸茬粨鏉�";
+							}else if(el.delay) {
+								el.state="宸插欢鏈�";
+							}else if(el.edit) {
+								el.state="寰呭惎鍔�";
+							}else {
+								el.state="杩涜涓�";
+							}
+							return el;
+						});
+						
+						me.fileList = result.paths;
+						me.task_itm = result.scheme;
+						me.deals = result.record;
+					}
+				}).catch(error => {
+					console.log(error);
 				})
-				
-			}
-			
-		}
-		
+
+			},
+			initChart(datas) {
+				this.myChart.setOption({
+					backgroundColor: '#FFF',
+					grid: {
+						top: '12%',
+						bottom: '19%',
+						left: '8%',
+						right: '8%'
+					},
+					tooltip: {
+						trigger: 'axis',
+						label: {
+							show: false
+						}
+					},
+					legend: {
+						data: ["鍙傝��", "瀹為檯"],
+					},
+					xAxis: {
+						boundaryGap: false, //榛樿锛屽潗鏍囪酱鐣欑櫧绛栫暐
+						axisLine: {
+							show: false
+						},
+						splitLine: {
+							show: false
+						},
+						axisLabel: {
+							interval: 0, //闅斿嚑涓樉绀�
+							rotate: 30,
+							showMinLabel: true,
+							color: "#393C40"
+						},
+						axisTick: {
+							show: false,
+							alignWithLabel: true
+						},
+						data: [
+							'12-3', '12-4', '12-5', '12-6', '12-7', '12-8', '12-9', '12-10', '12-11'
+						]
+					},
+					yAxis: {
+						axisLine: {
+							show: false
+						},
+						splitLine: {
+							show: true,
+							lineStyle: {
+								type: 'dashed',
+								color: 'rgba(33,148,246,0.2)'
+							}
+						},
+						axisTick: {
+							show: false
+						},
+						splitArea: {
+							show: true,
+							areaStyle: {
+								color: 'rgb(245,250,254)'
+							}
+						}
+					},
+					series: [{
+							name: "瀹為檯",
+							type: 'line',
+							symbol: 'circle',
+							symbolSize: 7,
+							lineStyle: {
+								color: '#0c64eb',
+								shadowBlur: 12,
+								shadowColor: '#0c64eb',
+								shadowOffsetX: 1,
+								shadowOffsetY: 1
+							},
+							itemStyle: {
+								color: '#0c64eb',
+								borderWidth: 1,
+								borderColor: '#FFF'
+							},
+							label: {
+								show: false,
+								distance: 1,
+								emphasis: {
+									show: true,
+									offset: [25, -2],
+									//borderWidth:1,
+									// borderColor:'rgb(33,148,246)',
+									//formatter:'{bg|{b}\n鏁版嵁閲�:{c}}',
+
+									color: '#FFF',
+									padding: [8, 20, 8, 6],
+									//width:60,
+									height: 36,
+									formatter: function(params) {
+										var name = params.name;
+										var value = params.data;
+										var str = name + '\n瀹為檯锛�' + value;
+										return str;
+									},
+									rich: {
+										bg: {
+
+											width: 78,
+											//height:42,
+											color: '#FFF',
+											padding: [20, 0, 20, 10]
+										},
+										br: {
+											width: '100%',
+											height: '100%'
+										}
+
+									}
+								}
+							},
+							data: [
+								20, 18, 17, 10, 7, 4,
+							]
+						},
+						{
+							name: "鍙傝��",
+							type: 'line',
+							symbol: 'circle',
+							symbolSize: 7,
+							lineStyle: {
+								color: '#a6a8b6',
+								shadowBlur: 12,
+								shadowColor: '#a6a8b6',
+								shadowOffsetX: 1,
+								shadowOffsetY: 1
+							},
+							itemStyle: {
+								color: '#a6a8b6',
+								borderWidth: 1,
+								borderColor: '#FFF'
+							},
+							label: {
+								show: false,
+								distance: 1,
+								emphasis: {
+									show: true,
+									offset: [25, -2],
+									//borderWidth:1,
+									// borderColor:'rgb(33,148,246)',
+									//formatter:'{bg|{b}\n鏁版嵁閲�:{c}}',
+
+									color: '#FFF',
+									padding: [8, 20, 8, 6],
+									//width:60,
+									height: 36,
+									formatter: function(params) {
+										var name = params.name;
+										var value = params.data;
+										var str = name + '\n鍙傝�冿細' + value;
+										return str;
+									},
+
+								}
+							},
+							data: [
+								20, 17.5, 15, 12.5, 10,
+								7.5, 5, 2.5, 0
+							]
+						}
+					]
+				});
+			},
+
+		},
+
 	}
 </script>
 
@@ -185,16 +409,18 @@
 		text-align: left;
 		background-color: #dee0e2;
 	}
-	
-	.files_div{
+
+	.files_div {
 		height: 90%;
 		overflow: auto;
 	}
+
 	.file_div {
 		width: 30%;
 		height: 20px;
 		float: left;
 	}
+
 	.file_div :hover {
 		cursor: pointer;
 		font-weight: bold;
diff --git a/src/views/calendarTask.vue b/src/views/calendarTask.vue
index 2250ad6..f65229a 100644
--- a/src/views/calendarTask.vue
+++ b/src/views/calendarTask.vue
@@ -16,7 +16,7 @@
 				<span>{{task_itm.desp}}</span>
 				<div v-for="(type_itm, k_) in task_itm.children" :key="k_" class="right_row_">
 					<span>{{k_+1}}銆亄{type_itm.typeStr}}</span>
-					<el-button size="mini" type="primary" style="float: right; margin-top: 10px;" @click="handleTask(type_itm.id, type_itm.mustAttach, type_itm)">澶勭悊浠诲姟</el-button>
+					<el-button size="mini" type="primary" v-if="userId === task_itm.userId" style="float: right; margin-top: 10px;" @click="handleTask(type_itm.id, type_itm.mustAttach, type_itm)">澶勭悊浠诲姟</el-button>
 				</div>
 			</div>
 		</div>
@@ -77,7 +77,7 @@
 						],
 						prop:'date' ,//瀵瑰簲鏃ユ湡瀛楁鍚�
 						DayDataTree: [],
-						
+						userId:undefined,
 						dialog_1: false,
 						handleTaskType: {},
 						upload_url: "",
@@ -97,7 +97,7 @@
 					let iformat = imoment.format('YYYY-MM');
 					let systemDate = iformat + '-01 00:00:00';
 					this.getDatedef(systemDate);
-					
+					this.userId = localStorage.getItem('userId');
 				},
 				
         methods: {
@@ -141,6 +141,7 @@
 							this.$refs.upload.submit();//寮�濮嬩笂浼�
 						}
 						else {
+							var me = this;
 							let params = this.upData
 							let url = "/api/detail/deal/" + id;
 							this.$axios.get(url, {
@@ -148,15 +149,12 @@
 								})
 								.then(data_ => {
 									console.log(data_);
-									let datas= data_.data.data;
-									datas = datas.map(el => {
-										var imoment = this.$moment(el.date);
-										// 鏍煎紡鍖栨垚锛屽勾鏈堟棩
-										let iformat = imoment.format('YYYY-MM-DD');
-									    el.date = iformat;
-										return el;
-									})
-									this.datedef = datas;
+									if(data_.data.success) {
+										this.$message('澶勭悊鎴愬姛');
+										me.Cancel();
+									}else {
+										this.$message({message:'澶勭悊浠诲姟澶辫触', type: 'warning'});
+									}
 								}).catch(error => {
 									console.log(error);
 								});
diff --git a/src/views/list.vue b/src/views/list.vue
index 3c89d4c..78e85d3 100644
--- a/src/views/list.vue
+++ b/src/views/list.vue
@@ -4,8 +4,8 @@
 
 			<div class="btn-line">
 				<el-button type="primary" @click="addProject">鏂板缓椤圭洰</el-button>
-				<el-button type="primary" @click="editProject">缂栬緫椤圭洰</el-button>
-				<el-button type="primary" @click="onSubmit">鏌ョ湅璇︽儏</el-button>
+				<el-button type="primary" v-if="editShow" @click="editProject">缂栬緫椤圭洰</el-button>
+				<el-button type="primary" @click="showDetail">鏌ョ湅璇︽儏</el-button>
 
 			</div>
 
@@ -78,28 +78,39 @@
 		<el-dialog @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="Cancel2"  width="70%" top="50px" :visible.sync="dialog_2" append-to-body>
+		  <prodetail @closeNewProject="closeDetail" v-bind:rowData="detailData" 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
+		  newProject,
+		  prodetail
 		},
 		data() {
 			return {
-				rowData:undefined,
+				editShow: true,
+				
 				loading_table: false,
 				query: "",
+				rowData:undefined,
+				detailData:undefined,
 				dialog_1: false,
+				dialog_2: false,
 				pagenum: 1,
 				pagesize: 15,
 				total: 0,
 				selected: undefined,
 				labelPosition: "left",
 				tableData: [],
+				userId:"",
+				assign:undefined,
 				formInline: {
 					user: '',
 					region: ''
@@ -108,13 +119,37 @@
 		},
 		mounted() { //缁勪欢閰嶇疆鍚庯紝椤甸潰鏄剧ず鍓嶃�傜敤浜庡姞杞芥暟鎹�
 			this.getData();
+			this.userId = localStorage.getItem('userId');
+			this.assign = localStorage.getItem('assign');
 		},
 		methods: {
 			Cancel() {
-				this.$refs.newProject_.Cancel();
+				this.dialog_1 = false;
+			},
+			Cancel2() {
+				this.dialog_2 = false;
+				this.closeDetail();
+			},
+			closeDetail() {
+				this.detailData = undefined;
+			},
+			showDetail() {
+				if(!this.selected){
+					
+					this.$message({message:'璇烽�変腑涓�鏉℃湭鍚姩鐨勯」鐩�', type: 'warning'});
+					return;
+				}
+				this.dialog_2 = true;
 			},
 			tableChange(val) {
 				this.selected = val;
+				this.detailData = val;
+				if (this.selected.userId == this.userId) {
+					this.editShow = true;
+				}else {
+					this.editShow = false;
+				}
+				
 			},
 			handleCurrentChange(pageno) {
 				this.pagenum = pageno;
@@ -131,10 +166,13 @@
 				this.loading_table = true;
 				let pageno = this.pagenum;
 				let url = "/api/scheme/page/" + pageno;
+				
 				let params =  {
 					pageSize: this.pagesize
 				};
-				
+				if(this.assign) {
+					params.userId = this.userId;
+				}
 				if(query){
 					params.name = query.name;
 					params.status = query.status;
@@ -165,6 +203,7 @@
 			},
 			dateFormat_(row, colum, val ,index) {
 				return this.$moment(val).format('YYYY-MM-DD');
+			
 			},
 			status_(row, colum, val ,index) {
 				if(val == "working") {
@@ -205,7 +244,8 @@
 				
 				
 			},closeNewProject() {
-				this.dialog_1 = false
+				this.dialog_1 = false;
+				query_();
 			},
 			
 		}
diff --git a/src/views/login.vue b/src/views/login.vue
index 06a8a29..816158a 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -107,10 +107,9 @@
 			this.$axios.get(url,{
 			     params
 			   }).then(data_ => {
-			     console.log(data_);
 			   if(data_.data.success) {
 				   localStorage.setItem('userId',data_.data.data.id);
-				   localStorage.setItem('userName',data_.data.data.id);
+				   localStorage.setItem('userName',data_.data.data.name);
 				   localStorage.setItem('roleId',data_.data.data.roleCode);
 				   localStorage.setItem('roleName',data_.data.data.roleName);
 				   localStorage.setItem('departId',data_.data.data.departCode);
@@ -121,7 +120,6 @@
 			   }
 			    
 			   }).catch(error =>{
-			       console.log(error);
 			   })
 			
 		
diff --git a/vue.config.js b/vue.config.js
index b48bf31..8c3779d 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -2,6 +2,7 @@
     // 淇敼鐨勯厤缃�
     // 灏哹aseUrl: '/api',鏀逛负baseUrl: '/',
     publicPath: '/',
+	 outputDir: 'dist',
     devServer: {
         proxy: {
             '/api/api': {

--
Gitblit v1.8.0