wangmengwei il y a 2 ans
Parent
commit
188a52a4b0

BIN
dist.zip


+ 5 - 5
package.json

@@ -1,7 +1,7 @@
 {
   "name": "ruoyi",
   "version": "2.5.0",
-  "description": "潜山市防疫数据平台",
+  "description": "潜山市人口信息平台",
   "author": "若依",
   "license": "MIT",
   "scripts": {
@@ -53,8 +53,8 @@
     "js-beautify": "1.13.0",
     "js-cookie": "2.2.1",
     "jsencrypt": "3.0.0-rc.1",
-    "less": "^4.1.1",
-    "less-loader": "^4.1.0",
+    "less": "^3.9.0",
+    "less-loader": "^5.0.0",
     "nprogress": "0.2.0",
     "qrcodejs2": "^0.0.2",
     "quill": "1.3.7",
@@ -77,8 +77,8 @@
     "connect": "3.6.6",
     "eslint": "7.15.0",
     "eslint-plugin-vue": "7.2.0",
-    "less": "^4.1.1",
-    "less-loader": "^4.1.0",
+    "less": "^3.9.0",
+    "less-loader": "^5.0.0",
     "lint-staged": "10.5.3",
     "runjs": "4.4.2",
     "sass": "1.32.0",

+ 8 - 7
public/index.html

@@ -50,7 +50,7 @@
       z-index: 1001;
     }
 
-    #loader:before {
+    /* #loader:before {
       content: "";
       position: absolute;
       top: 5px;
@@ -65,9 +65,9 @@
       -o-animation: spin 3s linear infinite;
       -ms-animation: spin 3s linear infinite;
       animation: spin 3s linear infinite;
-    }
+    } */
 
-    #loader:after {
+   /* #loader:after {
       content: "";
       position: absolute;
       top: 15px;
@@ -82,7 +82,7 @@
       -ms-animation: spin 1.5s linear infinite;
       -webkit-animation: spin 1.5s linear infinite;
       animation: spin 1.5s linear infinite;
-    }
+    } */
 
 
     @-webkit-keyframes spin {
@@ -117,7 +117,8 @@
       top: 0;
       width: 51%;
       height: 100%;
-      background: #7171C6;
+      /* background: #7171C6; */;
+	    background-image: linear-gradient(#056185, #3e0c84);
       z-index: 1000;
       -webkit-transform: translateX(0);
       -ms-transform: translateX(0);
@@ -174,7 +175,7 @@
 
     #loader-wrapper .load_title {
       font-family: 'Open Sans';
-      color: #FFF;
+      color: #90ccea;
       font-size: 19px;
       width: 100%;
       text-align: center;
@@ -200,7 +201,7 @@
 		    <div id="loader"></div>
 		    <div class="loader-section section-left"></div>
 		    <div class="loader-section section-right"></div>
-		    <div class="load_title">正在加载系统资源,请耐心等待</div>
+		    <div class="load_title">正在加载,请耐心等待</div>
         </div>
 	</div>
   </body>

+ 33 - 0
src/api/system/config.js

@@ -9,6 +9,39 @@ export function listConfig(query) {
   })
 }
 
+export function listInfotj(query) {
+  return request({
+    url: '/boman-web-core/core/czrk/stsByCzrkHomePage',
+    method: 'get',
+    params: query
+  })
+}
+export function delInfohy(query) {
+  return request({
+    url: '/boman-web-core/core/czrk/reduction/' + query,
+    method: 'get'
+  })
+}
+
+
+// 新增人员列表
+export function listInfotjxz(query) {
+  return request({
+    url: '/boman-web-core/core/czrk/listByXz',
+    method: 'get',
+    params: query
+  })
+}
+
+// 减少人员列表
+export function listInfotjjs(query) {
+  return request({
+    url: '/boman-web-core/core/czrk/listByJs',
+    method: 'get',
+    params: query
+  })
+}
+
 export function listIndextwo(query) {
   return request({
     url: '/system/dict/data/type/' + query,

+ 9 - 0
src/api/system/dept.js

@@ -8,6 +8,15 @@ export function listDept(query) {
     params: query
   })
 }
+// 行政区域
+export function listRoleergth(data) {
+  return request({
+    url: '/boman-system/chinaArea/treeSelect',
+    method: 'post',
+    data: data
+  })
+}
+
 
 
 // 查询部门列表

+ 31 - 0
src/api/system/user.js

@@ -10,6 +10,37 @@ export function listUser(query) {
   })
 }
 
+export function listRoleergth(data) {
+  return request({
+    url: '/boman-web-core/core/fxry/getSysRegion',
+    method: 'post',
+    data: data
+  })
+}
+
+
+export function rensh(query) {
+  return request({
+    url: '/system/online/onlineNum',
+    method: 'get',
+    params: query
+  })
+}
+
+
+
+
+
+
+// 网格
+export function listRoleergthwg(data) {
+  return request({
+    url: '/boman-web-core/gridInfo/treeSelect',
+    method: 'post',
+    data: data
+  })
+}
+
 // 查询用户详细
 export function getUser(id) {
   return request({

BIN
src/assets/images/login-background.jpg


BIN
src/assets/images/profile.jpg


+ 33 - 5
src/layout/components/Navbar.vue

@@ -46,9 +46,16 @@
           <el-dropdown-item @click.native="setting = true">
             <span>布局设置</span>
           </el-dropdown-item>
+          <el-dropdown-item >系统人数:<span style="color: #00a8ec;">{{users.allCount}}</span>
+            </el-dropdown-item>
+
+
+            <el-dropdown-item @click.native="nhyel" >在线人数:<span style="color: #00a8ec;">{{users.onlineNum}}</span></el-dropdown-item>
+
           <el-dropdown-item divided @click.native="logout">
             <span>退出登录</span>
           </el-dropdown-item>
+
         </el-dropdown-menu>
       </el-dropdown>
     </div>
@@ -66,12 +73,14 @@ import Search from '@/components/HeaderSearch'
 import RuoYiGit from '@/components/RuoYi/Git'
 import RuoYiDoc from '@/components/RuoYi/Doc'
 import Item from '@/layout/components/Sidebar/Item'
+import { rensh } from "@/api/system/user";
 export default {
 	data() {
 	  return {
 	    indexs: 1,
 	    newArr: [],
-      showde:true
+      showde:true,
+      users:{}
 	  }
 	},
   components: {
@@ -86,6 +95,7 @@ export default {
   },
   mounted() {
 	   this.init()
+     this.getUserre()
   },
   computed: {
     ...mapGetters([
@@ -111,6 +121,18 @@ export default {
     }
   },
   methods: {
+    nhyel(){
+
+      // console.log(235)name:'Profiles', params: {id:1}
+      if(this.users.roles[0] == 'region'){
+        this.$router.push({name:'Profiles'})
+      }else if(this.users.roles[0] == 'admin') {
+        this.$router.push({name:'Profiles'})
+      }else{
+         return false
+      }
+
+    },
     toggleSideBar(index) {
       this.$store.dispatch('app/toggleSideBar')
        // console.log( this.$store.dispatch('app/toggleSideBar'))
@@ -122,7 +144,7 @@ export default {
         type: 'warning'
       }).then(() => {
         this.$store.dispatch('LogOut').then(() => {
-          location.href = '/index';   
+          location.href = '/index';
         })
       })
     },
@@ -152,12 +174,18 @@ export default {
 	    path
 	  } = route;
 	  // if set path, the sidebar will highlight the path you set
-	  console.log(route)
+	  console.log(route,13)
 	  if (meta.activeMenu) {
 	    this.$store.dispatch('TabFn', meta.activeMenu)
 	  }
 	  this.$store.dispatch('TabFn', path)
-	}
+	},
+  getUserre() {
+    rensh().then(response => {
+      this.users = response.data;
+      console.log(this.users.roles[0] == 'admin')
+    });
+  }
   }
 }
 </script>
@@ -167,7 +195,7 @@ export default {
   height: 50px;
   overflow: hidden;
   position: relative;
-  background-color: #1890ff ; 
+  background-color: #1890ff ;
   box-shadow: 0 1px 4px rgba(0,21,41,.08);
 
   .SignNumArr{

+ 1 - 1
src/layout/components/Sidebar/Logo.vue

@@ -36,7 +36,7 @@ export default {
   },
   data() {
     return {
-      title: '潜山市防疫数据平台',
+      title: '潜山市人口信息平台',
       logo: logoImg
     }
   }

+ 2 - 1
src/main.js

@@ -31,7 +31,7 @@ import './assets/icons' // icon
 import './permission' // permission control
 import { getDicts } from "@/api/system/dict/data";
 import { getConfigKey } from "@/api/system/config";
-import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
+import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, selectDictLabelss, handleTree } from "@/utils/ruoyi";
 import Pagination from "@/components/Pagination";
 // 自定义表格工具扩展
 import RightToolbar from "@/components/RightToolbar"
@@ -53,6 +53,7 @@ Vue.prototype.resetForm = resetForm
 Vue.prototype.addDateRange = addDateRange
 Vue.prototype.selectDictLabel = selectDictLabel
 Vue.prototype.selectDictLabels = selectDictLabels
+Vue.prototype.selectDictLabelss = selectDictLabelss
 Vue.prototype.download = download
 Vue.prototype.getDyn = getDyn
 Vue.prototype.handleTree = handleTree

+ 8 - 1
src/router/index.js

@@ -131,7 +131,14 @@ export const constantRoutes = [
         component: (resolve) => require(['@/views/system/user/profile/index'], resolve),
         name: 'Profile',
         meta: { title: '个人中心', icon: 'user' }
-      }
+      },
+       {
+         path: 'profiles',
+         component: (resolve) => require(['@/views/system/user/profiles/index'], resolve),
+         name: 'Profiles',
+         meta: { title: '在线人数', icon: 'user' }
+       }
+
     ]
   },
   {

+ 4 - 3
src/settings.js

@@ -1,7 +1,8 @@
 module.exports = {
-  title: '潜山市防疫数据平台',
-  // urls: `http://118.178.139.79:7090`,
-  urls: `http://192.168.101.110:8090`,
+  title: '潜山市人口信息平台',
+  // urls: `http://192.168.101.110:8090`,
+  // urls: `http://192.168.101.11:8090`,
+  urls: `http://192.168.101.168:8090`,
    // urls: `https://qsfy.qs163.cn`,
 
   /**

+ 68 - 20
src/utils/request.js

@@ -8,19 +8,27 @@ import { tansParams } from "@/utils/ruoyi";
 axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
 //
 
+
+
+
 axios.defaults.headers['accountName'] = 'guest'
 // 创建axios实例
 const service = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分
   baseURL: process.env.VUE_APP_BASE_API,
   // 超时
-  timeout: 10000
+  timeout: 50000
 })
 
 // request拦截器
 service.interceptors.request.use(config => {
   // 是否需要设置 token
   const isToken = (config.headers || {}).isToken === false
+  // console.log(config,14)
+  // if(config.url == '/sendSms/list'){
+  //   config.baseURL = ""
+  // }
+  // console.log(config,15)
   if (getToken() && !isToken) {
     config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
   }
@@ -46,7 +54,8 @@ service.interceptors.request.use(config => {
     config.params = {};
     config.url = url;
   }
-  return config
+  // console.log(config,456)
+  return  config
 }, error => {
     console.log(error)
     Promise.reject(error)
@@ -70,16 +79,31 @@ service.interceptors.response.use(res => {
         })
       })
     } else if (code === 500) {
+      // Message({
+      //   message: msg,
+      //   type: 'error'
+      // })
+      if(res.data.msg == '当前填写的户籍地址和居住地址均不属于对应辖区'){
+        return res.data
+      }else{
+       Message({
+         message: msg,
+         type: 'error'
+       })
+        return Promise.reject(new Error(msg))
+      }
+    } else if (code !== 200) {
+      if(res.data.msg == '当前填写的户籍地址和居住地址均不属于对应辖区'){
+       return res.data
+      }else{
+         // return res.data
       Message({
         message: msg,
         type: 'error'
       })
-      return Promise.reject(new Error(msg))
-    } else if (code !== 200) {
-      Notification.error({
-        title: msg
-      })
-      return Promise.reject('error')
+       return Promise.reject('error')
+      }
+    // return res.data
     } else {
       return res.data
     }
@@ -96,6 +120,9 @@ service.interceptors.response.use(res => {
     else if (message.includes("Request failed with status code")) {
       message = "系统接口" + message.substr(message.length - 3) + "异常";
     }
+    else{
+      error  = message
+    }
     Message({
       message: message,
       type: 'error',
@@ -117,20 +144,41 @@ export function download(url, params, filename) {
     },
     responseType: 'blob'
   }).then((data) => {
+    let reader = new FileReader()
     const content = data
     const blob = new Blob([content])
-    if ('download' in document.createElement('a')) {
-      const elink = document.createElement('a')
-      elink.download = filename
-      elink.style.display = 'none'
-      elink.href = URL.createObjectURL(blob)
-      document.body.appendChild(elink)
-      elink.click()
-      URL.revokeObjectURL(elink.href)
-      document.body.removeChild(elink)
-    } else {
-      navigator.msSaveBlob(blob, filename)
-    }
+    reader.addEventListener("loadend", () => {
+        // 将会打印json格式
+        if(data.type=='application/json'){
+          var res=JSON.parse(reader.result)
+          if(res.code===500){
+            Message({
+              message: res.msg,
+              type: 'error'
+            })
+          }
+        }else{
+
+          if ('download' in document.createElement('a')) {
+            const elink = document.createElement('a')
+            elink.download = filename
+            elink.style.display = 'none'
+            elink.href = URL.createObjectURL(blob)
+            document.body.appendChild(elink)
+            elink.click()
+            URL.revokeObjectURL(elink.href)
+            document.body.removeChild(elink)
+          } else {
+            navigator.msSaveBlob(blob, filename)
+          }
+        }
+    })
+     reader.readAsText(data, "utf-8")
+
+
+
+
+
   }).catch((r) => {
     console.error(r)
   })

+ 21 - 0
src/utils/ruoyi.js

@@ -80,6 +80,26 @@ export function selectDictLabel(datas, value) {
 	})
 	return actions.join('');
 }
+// 回显数据字典s
+export function selectDictLabelss(datas, value) {
+	var actions = [];
+  var njue  = []
+  njue = value.split(',')
+
+	Object.keys(datas).some((key) => {
+ // console.log(njue,34)
+    njue.filter(rou =>{
+      // console.log(rou,283)
+      // console.log(datas[key].value,28)
+      if (datas[key].value == rou) {
+      	actions.push(datas[key].label);
+      	return true;
+      }
+    })
+
+	})
+	return actions.join(',');
+}
 
 // 回显数据字典(字符串数组)
 export function selectDictLabels(datas, value, separator) {
@@ -96,6 +116,7 @@ export function selectDictLabels(datas, value, separator) {
 	return actions.join('').substring(0, actions.join('').length - 1);
 }
 
+
 // 通用下载方法
 export function download(fileName) {
 	window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true;

+ 109 - 52
src/views/dashboard/BarChart.vue

@@ -23,6 +23,18 @@ export default {
     height: {
       type: String,
       default: '300px'
+    },
+    chartData: {
+      type: Object,
+      required: true
+    }
+  },
+  watch: {
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.setOptions(val)
+      }
     }
   },
   data() {
@@ -44,59 +56,104 @@ export default {
   },
   methods: {
     initChart() {
+      this.chart = echarts.init(this.$el, 'macarons');
       this.chart = echarts.init(this.$el, 'macarons')
-
-      this.chart.setOption({
-        tooltip: {
-          trigger: 'axis',
-          axisPointer: { // 坐标轴指示器,坐标轴触发有效
-            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
-          }
-        },
-        grid: {
-          top: 10,
-          left: '2%',
-          right: '2%',
-          bottom: '3%',
-          containLabel: true
-        },
-        xAxis: [{
-          type: 'category',
-          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
-          axisTick: {
-            alignWithLabel: true
-          }
-        }],
-        yAxis: [{
-          type: 'value',
-          axisTick: {
-            show: false
-          }
-        }],
-        series: [{
-          name: 'pageA',
-          type: 'bar',
-          stack: 'vistors',
-          barWidth: '60%',
-          data: [79, 52, 200, 334, 390, 330, 220],
-          animationDuration
-        }, {
-          name: 'pageB',
-          type: 'bar',
-          stack: 'vistors',
-          barWidth: '60%',
-          data: [80, 52, 200, 334, 390, 330, 220],
-          animationDuration
-        }, {
-          name: 'pageC',
-          type: 'bar',
-          stack: 'vistors',
-          barWidth: '60%',
-          data: [30, 52, 200, 334, 390, 330, 220],
-          animationDuration
-        }]
-      })
-    }
+      this.setOptions(this.chartData)
+    },
+      setOptions({ y, x ,data } = {}) {
+        console.log(y,x,data,56)
+       this.chart.setOption({
+         tooltip: {
+           trigger: 'axis',
+           axisPointer: { // 坐标轴指示器,坐标轴触发有效
+             type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
+           }
+         },
+         grid: {
+           top: 10,
+           left: '2%',
+           right: '2%',
+           bottom: '3%',
+           containLabel: true
+         },
+         xAxis: [{
+           type: 'category',
+           data: y,
+           axisTick: {
+             alignWithLabel: true
+           },
+           axisLine: {   //  控制x轴线的样式
+                              lineStyle: {
+                                   type: 'solid',
+                                  color: '#CECECE',
+                                   width:'1' }
+                                }
+         }],
+         yAxis: [{
+           type: 'value',
+           axisTick: {
+             show: false
+           },
+            axisLine: {
+                               lineStyle: {
+                                    type: 'solid',
+                                     color: '#CECECE',
+                                   width:'1'
+                               }
+                              }
+         }],
+         series: [{
+           name: '绿码',
+           type: 'bar',
+           stack: 'vistors',
+           barWidth: '40%',
+           itemStyle: {
+           normal: {
+           color: '#8ecd72',
+           }
+           },
+           data: x[0].data,
+           animationDuration
+         }, {
+           name: '灰码',
+           type: 'bar',
+           stack: 'vistors',
+           barWidth: '40%',
+           data: x[2].data,
+           itemStyle: {
+           normal: {
+           color: '#536fcd',
+           }
+           },
+           animationDuration
+         }, {
+           name: '未申领',
+           type: 'bar',
+           stack: 'vistors',
+           barWidth: '40%',
+           data: x[3].data,
+           itemStyle: {
+           normal: {
+           color: '#f1c250',
+           }
+           },
+           animationDuration
+         },
+         {
+           name: '红码',
+           type: 'bar',
+           stack: 'vistors',
+           barWidth: '40%',
+           data: x[1].data,
+           itemStyle: {
+           normal: {
+           color: '#e96a62',
+           }
+           },
+           animationDuration
+         }]
+       })
+      }
   }
 }
 </script>

+ 51 - 8
src/views/dashboard/LineChart.vue

@@ -60,11 +60,13 @@ export default {
     initChart() {
       this.chart = echarts.init(this.$el, 'macarons')
       this.setOptions(this.chartData)
+
     },
-    setOptions({ expectedData, actualData } = {}) {
+    setOptions({ czjs, czxz,hjjs,hjxz,time } = {}) {
+      // console.log(x,y[0].data,45)
       this.chart.setOption({
         xAxis: {
-          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
+          data: time,
           boundaryGap: false,
           axisTick: {
             show: false
@@ -90,10 +92,10 @@ export default {
           }
         },
         legend: {
-          data: ['expected', 'actual']
+          data: ''
         },
         series: [{
-          name: 'expected', itemStyle: {
+          name: '常住人口减少', itemStyle: {
             normal: {
               color: '#FF005A',
               lineStyle: {
@@ -104,12 +106,12 @@ export default {
           },
           smooth: true,
           type: 'line',
-          data: expectedData,
+          data: czjs,
           animationDuration: 2800,
           animationEasing: 'cubicInOut'
         },
         {
-          name: 'actual',
+          name: '常住人口增加',
           smooth: true,
           type: 'line',
           itemStyle: {
@@ -124,10 +126,51 @@ export default {
               }
             }
           },
-          data: actualData,
+          data:czxz,
+          animationDuration: 2800,
+          animationEasing: 'quadraticOut'
+        },
+        {
+          name: '户籍人口增加',
+          smooth: true,
+          type: 'line',
+          itemStyle: {
+            normal: {
+              color: '#47d737',
+              lineStyle: {
+                color: '#47d737',
+                width: 2
+              },
+              areaStyle: {
+                color: '#f3f8ff'
+              }
+            }
+          },
+          data:hjxz,
           animationDuration: 2800,
           animationEasing: 'quadraticOut'
-        }]
+        },
+        {
+          name: '户籍人口减少',
+          smooth: true,
+          type: 'line',
+          itemStyle: {
+            normal: {
+              color: '#fe4809',
+              lineStyle: {
+                color: '#fe4809',
+                width: 2
+              },
+              areaStyle: {
+                color: '#f3f8ff'
+              }
+            }
+          },
+          data:hjjs,
+          animationDuration: 2800,
+          animationEasing: 'quadraticOut'
+        },
+        ]
       })
     }
   }

+ 127 - 102
src/views/dashboard/PanelGroup.vue

@@ -3,52 +3,57 @@
     <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
       <div class="card-panel" @click="handleSetLineChartData('newVisitis')">
         <div class="card-panel-icon-wrapper icon-people">
-          <svg-icon icon-class="peoples" class-name="card-panel-icon" />
+          <!-- <svg-icon icon-class="peoples" class-name="card-panel-icon" /> -->
         </div>
         <div class="card-panel-description">
           <div class="card-panel-text">
-            访客
+            总扫码人次数
           </div>
-          <count-to :start-val="0" :end-val="102400" :duration="2600" class="card-panel-num" />
+          <count-to :start-val="0" :end-val="total" :duration="2600" class="card-panel-num" />
         </div>
       </div>
     </el-col>
     <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
       <div class="card-panel" @click="handleSetLineChartData('messages')">
         <div class="card-panel-icon-wrapper icon-message">
-          <svg-icon icon-class="message" class-name="card-panel-icon" />
+          <!-- <svg-icon icon-class="message" class-name="card-panel-icon" /> -->
         </div>
         <div class="card-panel-description">
           <div class="card-panel-text">
-            消息
+            绿码
           </div>
-          <count-to :start-val="0" :end-val="81212" :duration="3000" class="card-panel-num" />
+          <count-to :start-val="0" :end-val="greenCode" :duration="3000" class="card-panel-num" />
         </div>
       </div>
     </el-col>
     <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
       <div class="card-panel" @click="handleSetLineChartData('purchases')">
         <div class="card-panel-icon-wrapper icon-money">
-          <svg-icon icon-class="money" class-name="card-panel-icon" />
+          <!-- <svg-icon icon-class="money" class-name="card-panel-icon" /> -->
         </div>
         <div class="card-panel-description">
           <div class="card-panel-text">
-            金额
+            红码:
+            <count-to :start-val="0" :end-val="redCode" :duration="3200" class="card-panel-num" /> <br>
+            灰码:
+            <count-to :start-val="0" :end-val="gaeyCode" :duration="3200" class="card-panel-num" /> <br>
+            未申请:
+            <count-to :start-val="0" :end-val="notapplied" :duration="3200" class="card-panel-num" />
           </div>
-          <count-to :start-val="0" :end-val="9280" :duration="3200" class="card-panel-num" />
+
         </div>
       </div>
     </el-col>
     <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
       <div class="card-panel" @click="handleSetLineChartData('shoppings')">
         <div class="card-panel-icon-wrapper icon-shopping">
-          <svg-icon icon-class="shopping" class-name="card-panel-icon" />
+          <!-- <svg-icon icon-class="shopping" class-name="card-panel-icon" /> -->
         </div>
         <div class="card-panel-description">
           <div class="card-panel-text">
-            订单
+            体温异常
           </div>
-          <count-to :start-val="0" :end-val="13600" :duration="3600" class="card-panel-num" />
+          <count-to :start-val="0" :end-val="emperature" :duration="3600" class="card-panel-num" />
         </div>
       </div>
     </el-col>
@@ -56,126 +61,146 @@
 </template>
 
 <script>
-import CountTo from 'vue-count-to'
-
-export default {
-  components: {
-    CountTo
-  },
-  methods: {
-    handleSetLineChartData(type) {
-      this.$emit('handleSetLineChartData', type)
+  import CountTo from 'vue-count-to'
+
+  export default {
+    components: {
+      CountTo
+    },
+    data(){
+      return{
+        total:102405,
+        greenCode:81258,
+        redCode:25,
+        gaeyCode:39,
+        notapplied:83,
+        emperature:36974
+      }
+    },
+    methods: {
+      handleSetLineChartData(type) {
+        this.$emit('handleSetLineChartData', type)
+      }
     }
   }
-}
 </script>
 
 <style lang="scss" scoped>
-.panel-group {
-  margin-top: 18px;
+  .panel-group {
+    margin-top: 18px;
 
-  .card-panel-col {
-    margin-bottom: 32px;
-  }
+    .card-panel-col {
+      margin-bottom: 32px;
+    }
 
-  .card-panel {
-    height: 108px;
-    cursor: pointer;
-    font-size: 12px;
-    position: relative;
-    overflow: hidden;
-    color: #666;
-    background: #fff;
-    box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
-    border-color: rgba(0, 0, 0, .05);
-
-    &:hover {
-      .card-panel-icon-wrapper {
-        color: #fff;
+    .card-panel {
+      height: 108px;
+      cursor: pointer;
+      font-size: 12px;
+      position: relative;
+      overflow: hidden;
+      color: #666;
+      background: #fff;
+      box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
+      border-color: rgba(0, 0, 0, .05);
+
+      &:hover {
+        .card-panel-icon-wrapper {
+          color: #fff;
+        }
+
+        .icon-people {
+          background: url('../../assets/images/icon_htgl_smrs_selected.png') no-repeat;
+          background-size: 100% 100%;
+        }
+
+        .icon-message {
+          background: url('../../assets/images/icon_htgl_mzc_selected.png') no-repeat;
+          background-size: 100% 100%;
+        }
+
+        .icon-money {
+          background: url('../../assets/images/icon_htgl_myc_selected.png') no-repeat;
+          background-size: 100% 100%;
+        }
+
+        .icon-shopping {
+          background: url('../../assets/images/icon_htgl_wdyc_selected.png') no-repeat;
+          background-size: 100% 100%;
+        }
       }
 
       .icon-people {
-        background: #40c9c6;
+        background: url('../../assets/images/icon_htgl_smrs_normal.png') no-repeat;
+        background-size: 100% 100%;
       }
 
       .icon-message {
-        background: #36a3f7;
+        background: url('../../assets/images/icon_htgl_mzc_normal.png') no-repeat;
+        background-size: 100% 100%;
       }
 
       .icon-money {
-        background: #f4516c;
+        background: url('../../assets/images/icon_htgl_myc_normal.png') no-repeat;
+        background-size: 100% 100%;
       }
 
       .icon-shopping {
-        background: #34bfa3
+        background: url('../../assets/images/icon_htgl_wdyc_normal.png') no-repeat;
+        background-size: 100% 100%;
       }
-    }
-
-    .icon-people {
-      color: #40c9c6;
-    }
-
-    .icon-message {
-      color: #36a3f7;
-    }
-
-    .icon-money {
-      color: #f4516c;
-    }
-
-    .icon-shopping {
-      color: #34bfa3
-    }
-
-    .card-panel-icon-wrapper {
-      float: left;
-      margin: 14px 0 0 14px;
-      padding: 16px;
-      transition: all 0.38s ease-out;
-      border-radius: 6px;
-    }
 
-    .card-panel-icon {
-      float: left;
-      font-size: 48px;
-    }
+      .card-panel-icon-wrapper {
+        float: left;
+        margin: 14px 0 0 14px;
+        width: 80px;
+        height: 80px;
+        transition: all 0.38s ease-out;
+        border-radius: 6px;
+      }
 
-    .card-panel-description {
-      float: right;
-      font-weight: bold;
-      margin: 26px;
-      margin-left: 0px;
-
-      .card-panel-text {
-        line-height: 18px;
-        color: rgba(0, 0, 0, 0.45);
-        font-size: 16px;
-        margin-bottom: 12px;
+      .card-panel-icon {
+        float: left;
+        font-size: 48px;
       }
 
-      .card-panel-num {
-        font-size: 20px;
+      .card-panel-description {
+        float: right;
+        font-weight: bold;
+        margin: 26px;
+        margin-left: 0px;
+
+        .card-panel-text {
+          line-height: 18px;
+          color: rgba(0, 0, 0, 0.45);
+          font-size: 16px;
+          margin-bottom: 12px;
+        }
+
+        .card-panel-num {
+          font-size: 20px;
+          color: #000;
+        }
       }
     }
   }
-}
-
-@media (max-width:550px) {
-  .card-panel-description {
-    display: none;
-  }
 
-  .card-panel-icon-wrapper {
-    float: none !important;
-    width: 100%;
-    height: 100%;
-    margin: 0 !important;
+  @media (max-width:550px) {
+    .card-panel-description {
+      display: none;
+    }
 
-    .svg-icon {
-      display: block;
-      margin: 14px auto !important;
+    .card-panel-icon-wrapper {
       float: none !important;
+      width: 100%;
+      height: 100%;
+      margin: 0 !important;
+
+      .svg-icon {
+        display: block;
+        margin: 14px auto !important;
+        float: none !important;
+      }
     }
   }
-}
 </style>

+ 93 - 28
src/views/dashboard/PieChart.vue

@@ -21,6 +21,18 @@ export default {
     height: {
       type: String,
       default: '300px'
+    },
+    chartData: {
+      type: Array,
+      required: true
+    }
+  },
+  watch: {
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.setOptions(val)
+      }
     }
   },
   data() {
@@ -42,38 +54,91 @@ export default {
   },
   methods: {
     initChart() {
+      this.chart = echarts.init(this.$el, 'macarons');
       this.chart = echarts.init(this.$el, 'macarons')
-
+      this.setOptions(this.chartData)
+    },
+    setOptions(data) {
       this.chart.setOption({
-        tooltip: {
-          trigger: 'item',
-          formatter: '{a} <br/>{b} : {c} ({d}%)'
-        },
-        legend: {
-          left: 'center',
-          bottom: '10',
-          data: ['Industries', 'Technology', 'Forex', 'Gold', 'Forecasts']
-        },
-        series: [
-          {
-            name: 'WEEKLY WRITE ARTICLES',
-            type: 'pie',
-            roseType: 'radius',
-            radius: [15, 95],
-            center: ['50%', '38%'],
-            data: [
-              { value: 320, name: 'Industries' },
-              { value: 240, name: 'Technology' },
-              { value: 149, name: 'Forex' },
-              { value: 100, name: 'Gold' },
-              { value: 59, name: 'Forecasts' }
-            ],
-            animationEasing: 'cubicInOut',
-            animationDuration: 2600
-          }
-        ]
+        // tooltip: {
+        //   trigger: 'item',
+        //   formatter: '{a} <br/>{b} : {c} ({d}%)'
+        // },
+        // legend: {
+        //   left: 'center',
+        //   bottom: '10',
+        //   data: ['Industries', 'Technology', 'Forex', 'Gold', 'Forecasts']
+        // },
+        // series: [
+        //   {
+        //     name: 'WEEKLY WRITE ARTICLES',
+        //     type: 'pie',
+        //     roseType: 'radius',
+        //     radius: ["40", "70%"],
+        //     avoidLabelOverlap: false,
+        //     center: ['50%', '38%'],
+        //     data: [
+        //       { value: 320, name: 'Industries' },
+        //       { value: 240, name: 'Technology' },
+        //       { value: 149, name: 'Forex' },
+        //       { value: 100, name: 'Gold' },
+        //       { value: 59, name: 'Forecasts' }
+        //     ],
+        //     // animationEasing: 'cubicInOut',
+        //     animationDuration: 2600
+        //   }
+        // ]
+
+         tooltip: {
+            trigger: 'item'
+          },
+          color:['#3ba372', 'red','#d5d9e2','#fa8555','#546eca'],
+          legend: {
+            bottom: 10,
+            left: 'center',
+
+          },
+          series: [
+            {
+              name: 'Access From',
+              type: 'pie',
+              radius: ['40%', '70%'],
+              avoidLabelOverlap: false,
+               center: ['50%', '38%'],
+              itemStyle: {
+                  borderRadius: 10,
+                  borderColor: '#fff',
+                  borderWidth: 2
+
+              },
+              label: {
+                show: false,
+                position: 'center'
+              },
+              emphasis: {
+                label: {
+                  show: true,
+                  fontSize: '18',
+                  fontWeight: '400',
+                  color:"#333"
+                }
+              },
+              labelLine: {
+                show: true
+              },
+              data:data,
+              // data: [
+              //   { value: 8000, name: '绿码' },
+              //   { value: 250, name: '红码' },
+              //   { value: 390, name: '灰码' },
+              //   { value: 830, name: '未申请' },
+              //   { value: 10000, name: '总人数' }
+              // ]
+            }
+          ]
       })
     }
+
   }
 }
 </script>

+ 235 - 63
src/views/dashboard/RaddarChart.vue

@@ -23,6 +23,18 @@ export default {
     height: {
       type: String,
       default: '300px'
+    },
+    chartData: {
+      type: Object,
+      required: true
+    }
+  },
+  watch: {
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.setOptions(val)
+      }
     }
   },
   data() {
@@ -43,74 +55,234 @@ export default {
     this.chart = null
   },
   methods: {
-    initChart() {
-      this.chart = echarts.init(this.$el, 'macarons')
+    listy(){
 
-      this.chart.setOption({
-        tooltip: {
-          trigger: 'axis',
-          axisPointer: { // 坐标轴指示器,坐标轴触发有效
-            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
-          }
-        },
-        radar: {
-          radius: '66%',
-          center: ['50%', '42%'],
-          splitNumber: 8,
-          splitArea: {
-            areaStyle: {
-              color: 'rgba(127,95,132,.3)',
-              opacity: 1,
-              shadowBlur: 45,
-              shadowColor: 'rgba(0,0,0,.5)',
-              shadowOffsetX: 0,
-              shadowOffsetY: 15
-            }
-          },
-          indicator: [
-            { name: 'Sales', max: 10000 },
-            { name: 'Administration', max: 20000 },
-            { name: 'Information Techology', max: 20000 },
-            { name: 'Customer Support', max: 20000 },
-            { name: 'Development', max: 20000 },
-            { name: 'Marketing', max: 20000 }
-          ]
-        },
-        legend: {
-          left: 'center',
-          bottom: '10',
-          data: ['Allocated Budget', 'Expected Spending', 'Actual Spending']
-        },
-        series: [{
-          type: 'radar',
-          symbolSize: 0,
-          areaStyle: {
-            normal: {
-              shadowBlur: 13,
-              shadowColor: 'rgba(0,0,0,.2)',
-              shadowOffsetX: 0,
-              shadowOffsetY: 10,
-              opacity: 1
+    },
+      initChart() {
+        this.chart = echarts.init(this.$el, 'macarons');
+        this.setOptions(this.chartData)
+      },
+      setOptions({ x,y } = {}) {
+        console.log(x,y,98)
+        const dats = y
+        this.chart.setOption({
+          color: ['#4163d1', '#6be442', '#fbbc29', '#e32b3b','#1898d3'],
+            title: {
+              text: ''
+            },
+          tooltip: {
+            trigger: 'axis',
+            axisPointer: { // 坐标轴指示器,坐标轴触发有效
+              type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
             }
           },
-          data: [
-            {
-              value: [5000, 7000, 12000, 11000, 15000, 14000],
-              name: 'Allocated Budget'
+          radar: {
+            name:{
+               formatter:'{value}',
+                              // 字体样式
+                // 字体样式
+                textStyle:{
+                    fontSize:12,
+                    color:'#333'
+                }
             },
-            {
-              value: [4000, 9000, 15000, 15000, 13000, 11000],
-              name: 'Expected Spending'
+            radius: "66%",
+            //图外名称
+
+            center: ['50%', '42%'],
+            splitNumber: 4,
+            shape: 'circle',
+            splitArea: {
+              // areaStyle: {
+              //   color: 'rgba(127,95,132,.3)',
+              //   opacity: 1,
+              //   shadowBlur: 45,
+              //   shadowColor: 'rgba(0,0,0,.5)',
+              //   shadowOffsetX: 0,
+              //   shadowOffsetY: 15
+              // }
+              areaStyle: {
+                        color: ['#94aadc', '#a9b9df', '#d5d9e2', '#eaecf0'],
+                        shadowColor: 'rgba(0, 0, 0, 0)',
+                        shadowBlur: 45
+                      },
+
+
             },
-            {
-              value: [5500, 11000, 12000, 15000, 12000, 12000],
-              name: 'Actual Spending'
-            }
-          ],
-          animationDuration: animationDuration
-        }]
-      })
-    }
+            axisLine: {
+              show: true,
+                  lineStyle: {
+                    color: '#fff'
+                  }
+                },
+            indicator: [
+              { name: '总人数', max: 2500 },
+              { name: "绿码人数", max: 2500 },
+              { name: '红码人数', max: 2500 },
+              { name: '灰码人数', max: 2500 },
+              { name: '未申请', max: 2500 }
+              // { name: 'Marketing', max: 20000 }
+            ]
+          },
+          legend: {
+            left: 'center',
+            bottom: '10',
+            // data: ['周一', '周二', '周三','周四','周五'],
+
+          },
+          series: [{
+            type: 'radar',
+            symbolSize: 3,
+
+            // data: [
+            //   {
+            //     value: y[0].value,
+            //     name: '周一',
+            //   },
+            //   {
+            //     value: y[1].value,
+            //     name: '周二',
+            //   },
+            //   {
+            //     value: y[2].value,
+            //     name: '周三',
+            //   },
+            //   {
+            //     value: y[3].value,
+            //     name: '周四',
+            //   },
+            //   {
+            //     value: [960, 120, 186, 189, 852, 357],
+            //     name: '周五',
+            //   }
+            // ],
+            data:dats,
+            animationDuration: animationDuration
+          }]
+        })
+      }
+      // this.chart.setOption({
+      //   color: ['#67F9D8', '#FFE434', '#56A3F1', '#FF917C'],
+      //     title: {
+      //       text: 'Customized Radar Chart'
+      //     },
+      //     legend: {},
+      //     radar: [
+      //       {
+      //         indicator: [
+      //           { text: 'Indicator1' },
+      //           { text: 'Indicator2' },
+      //           { text: 'Indicator3' },
+      //           { text: 'Indicator4' },
+      //           { text: 'Indicator5' }
+      //         ],
+      //         center: ['50%', '50%'],
+      //         radius: 120,
+      //         startAngle: 90,
+      //         splitNumber: 4,
+      //         shape: 'circle',
+      //         axisName: {
+      //           formatter: '【{value}】',
+      //           color: '#428BD4'
+      //         },
+      //         splitArea: {
+      //           areaStyle: {
+      //             color: ['#77EADF', '#26C3BE', '#d5d9b2', '#eaecf0'],
+      //             shadowColor: 'rgba(0, 0, 0, 0.2)',
+      //             shadowBlur: 10
+      //           }
+      //         },
+      //         axisLine: {
+      //           lineStyle: {
+      //             color: 'rgba(211, 253, 250, 0.8)'
+      //           }
+      //         },
+      //         splitLine: {
+      //           lineStyle: {
+      //             color: 'rgba(211, 253, 250, 0.8)'
+      //           }
+      //         }
+      //       },
+      //       // {
+      //       //   indicator: [
+      //       //     { text: 'Indicator1', max: 150 },
+      //       //     { text: 'Indicator2', max: 150 },
+      //       //     { text: 'Indicator3', max: 150 },
+      //       //     { text: 'Indicator4', max: 120 },
+      //       //     { text: 'Indicator5', max: 108 },
+      //       //     { text: 'Indicator6', max: 72 }
+      //       //   ],
+      //       //   center: ['75%', '50%'],
+      //       //   radius: 120,
+      //       //   axisName: {
+      //       //     color: '#fff',
+      //       //     backgroundColor: '#666',
+      //       //     borderRadius: 3,
+      //       //     padding: [3, 5]
+      //       //   }
+      //       // }
+      //     ],
+      //     series: [
+      //       {
+      //         type: 'radar',
+      //         emphasis: {
+      //           lineStyle: {
+      //             width: 4
+      //           }
+      //         },
+      //         data: [
+      //           {
+      //             value: [100, 8, 0.4, -80, 2000],
+      //             name: 'Data A'
+      //           },
+      //           {
+      //             value: [60, 5, 0.3, -100, 1500],
+      //             name: 'Data B',
+      //             areaStyle: {
+      //               color: 'rgba(255, 228, 52, 0.6)'
+      //             }
+      //           }
+      //         ]
+      //       },
+      //       // {
+      //       //   type: 'radar',
+      //       //   radarIndex: 1,
+      //       //   data: [
+      //       //     {
+      //       //       value: [120, 118, 130, 100, 99, 70],
+      //       //       name: 'Data C',
+      //       //       symbol: 'rect',
+      //       //       symbolSize: 12,
+      //       //       lineStyle: {
+      //       //         type: 'dashed'
+      //       //       },
+      //       //       label: {
+      //       //         show: true,
+      //       //         formatter: function (params) {
+      //       //           return params.value;
+      //       //         }
+      //       //       }
+      //       //     },
+      //       //     {
+      //       //       value: [100, 93, 50, 90, 70, 60],
+      //       //       name: 'Data D',
+      //       //       areaStyle: {
+      //       //         color: new echarts.graphic.RadialGradient(0.1, 0.6, 1, [
+      //       //           {
+      //       //             color: 'rgba(255, 145, 124, 0.1)',
+      //       //             offset: 0
+      //       //           },
+      //       //           {
+      //       //             color: 'rgba(255, 145, 124, 0.9)',
+      //       //             offset: 1
+      //       //           }
+      //       //         ])
+      //       //       }
+      //       //     }
+      //       //   ]
+      //       // }
+      //     ]
+      // })
   }
 }
 </script>

+ 489 - 1365
src/views/index.vue

@@ -1,1392 +1,516 @@
 <template>
-	<div class="app-container home">
-		<el-row :gutter="5">
-			<el-col :sm="24" :lg="17">
-				<div class="index_heade index_headeNav" >
-					<div  style="padding-top: 20px;">
-						<el-table height="500" max-height="500" :data="tjsli" style="width: 100%;margin-top: 10px;" :stripe="true">
-							<el-table-column  fixed prop="xz" label="乡镇" align="center" ></el-table-column>
-							<el-table-column   label="18岁以上第一针完成情况" align="center">
-								<el-table-column fixed  prop="zrws" label="总任务数"  align="center"></el-table-column>
-								<!-- <el-table-column label="地址"> -->
-									<el-table-column  prop="zjzs" label="总接种数" align="center"></el-table-column>
-									<el-table-column  prop="wcl1" label="完成率" align="center"></el-table-column>
-									<el-table-column  prop="wwcs" label="未完成数 " align="center"></el-table-column>
-									<el-table-column  prop="drjzs" label="当日接种数" align="center"></el-table-column>
-									
-								<!-- </el-table-column> -->
-							</el-table-column>
-							<el-table-column label="第二针当日完成情况" align="center">
-								<el-table-column  prop="drrws" label="当日任务数" align="center"></el-table-column>
-								<el-table-column label="接种数" align="center">
-									<el-table-column  prop="dez" label="第二针" align="center" ></el-table-column>
-									<el-table-column  prop="dsz" label="第三针" align="center" ></el-table-column>
-									<el-table-column  prop="hj" label="合计" align="center" ></el-table-column>
-									
-								
-								</el-table-column>
-								<el-table-column  prop="wcl2" label="完成率" align="center" ></el-table-column>
-							</el-table-column>
-						</el-table>
-						<div class="index_haderPagin">
-							<!-- <el-pagination
-								@size-change="handleSizeChange"
-								@current-change="handleCurrentChange"
-								:current-page.sync="currentPage3"
-								:page-size="pageSize"
-								layout="prev, pager, next, jumper"
-								:total="1000"
-							></el-pagination>
-							<span>共 85 条 每页显示 5 条 当前 1/17 页</span> -->
-						</div>
-					</div>
-				</div>
-				<!-- 列表 -->
-				<el-col :sm="24" :lg="24" style="margin-top: 20px; ">
-					<div class="index_heade">
-						<img src="../assets/images/icon_more.png" alt="" class="index_headerImg" />
-						<p class="index_headetab">
-							<span :class="[num == index ? ' spanto' : '']" v-for="(item, index) in editableTabs" :key="index" @click="tabSbu(item.dictValue)">
-								{{ item.dictLabel }}
-							</span>
-						</p>
-						<div style="height: 87%;">
-							<ul class="index_headerUl">
-								<li v-for="(item, index) in configList" :key="index" @click="headerCld(item)">
-									<img src="../assets/images/icon_list_sj.png" alt="" />
-									<p>{{ item.notice_title }}</p>
-									<span>{{ item.create_time }}</span>
-								</li>
-							</ul>
-							<div class="index_haderPagin">
-								<el-pagination
-									v-show="total > 0"
-									@size-change="handleSizeChange"
-									@current-change="handleCurrentChange"
-									:current-page.sync="currentPage3"
-									:page-size="queryParams.pageSize"
-									layout="prev, pager, next, jumper"
-									:total="total"
-								></el-pagination>
-								<span>共 {{ total }} 条 每页显示 10 条</span>
-							</div>
-						</div>
-					</div>
-					
-				</el-col>
-				<!-- </el-row> -->
-				<!-- 公司概况 -->
-				<!-- <el-col :sm="24" :lg="24">
-           <div class="index_heade  index_headeProfile">
-             <img src="../assets/images/icon_tjbj.png" alt="" class="index_headerImg">
-            <p class="index_headetab">
-              <span :class="[numprofile == index ? ' spanto' : '']" v-for="(item,index) in editableTabsteo" :key="index" @click="tabSbuprofile(item.dictValue)">{{item.dictLabel}} </span>
-            </p>
-                   <div style="height: 84%;">
-                        <div style="height: 85%;">
-                          <h3 style="text-align: center; margin: 35px 0; margin-bottom: 0;" v-html="tieku"></h3>
-                          <pre>
-                            <div class="index_profilep" v-html="comg"></div>
-                          </pre>
-                        </div>
-                                      <div class="index_haderPagin">
-                                        <el-pagination
-                                             @size-change="handleSizeChangeprofile"
-                                             @current-change="handleCurrentChangeprofile"
-                                             :current-page.sync="currentPage3"
-                                             :page-size="queryParamstabprofile.pageSize"
-                                             layout="prev, pager, next, jumper"
-                                             :total="totalprofile">
-                                        </el-pagination>
-                                        <span>共 {{totalprofile}} 条  每页显示 1条  </span>
-                                      </div>
-                   </div>
-           </div>
-        </el-col> -->
-			</el-col>
+  <div class="dashboard-editor-container">
+    <!-- <div class="header">
+      <p @click="day(1)" :class="[dayList == 1 ? 'heade_cod' : '']">天</p>
+      <p>{{ '\xa0\xa0' }}|{{ '\xa0\xa0' }}</p>
+      <p @click="day(2)" :class="[dayList == 2 ? 'heade_cod' : '']">周</p>
+      <p>{{ '\xa0\xa0' }}|{{ '\xa0\xa0' }}</p>
+      <p @click="day(3)" :class="[dayList == 3 ? 'heade_cod' : '']">月</p>
+    </div> -->
+    <el-row style="background-color: #fff; margin-top: 20px;">
+      <el-col :xs="24" :sm="24">
+        <el-row>
+          <el-col :xs="12" :sm="6" style="display: flex;  height: 120px;">
+            <div style=" text-align: center; margin-right: 20px;" class="hedse_radt">
+              <div class="hedse_radtone">
+                <p>当前单位</p>
+                <p>{{panelChartDatas.dqdw}}</p>
+              </div>
+              <div class="hedse_radttwo">
+                <div>
+                  <p>乡镇</p>
+                  <p>{{panelChartDatas.zhen}}</p>
+                </div>
+                <div>
+                  <p>村</p>
+                  <p>{{panelChartDatas.cun}}</p>
+                </div>
+              </div>
+              <p class="p"></p>
+            </div>
+          </el-col>
+          <el-col :xs="12" :sm="9" style="display: flex; align-items: center;position: relative; justify-content: space-between; height: 120px;">
+            <div class="nav_raet" style="width: 30%;">
+              <p >常住人口</p>
+              <p style=" color: #F69F24;">{{panelChartDatas.czzrs}}</p>
+            </div>
+            <panel-groupfour :chart-data="panelChartDatas" />
 
-			<el-col :sm="24" :lg="7" style="padding-left: 15px">
-				<div class="index_nav">
-					<div class="index_navTime">
-						<p class="index_navTimep" @click="handleAdd">
-							<span>日程</span>
-							<span>
-								<i class="el-icon-date"></i>
-								创建日程
-							</span>
-						</p>
-						<el-calendar id="calendar">
-							<!-- 这里使用的是 2.5 slot 语法,对于新项目请使用 2.6 slot 语法-->
-							<template slot="dateCell" slot-scope="{ date, data }">
-								<!--自定义内容-->
-								<div>
-									<div class="calendar-day" style="text-align: center">
-										<el-tooltip v-if="brightDate.indexOf(data.day) != -1" class="item" effect="dark" :content="content(data.day)" placement="right">
-											<span class="everyDay">
-												{{
-													data.day
-														.split('-')
-														.slice(2)
-														.join('-')
-												}}
-											</span>
-										</el-tooltip>
-										<span v-else>
-											{{
-												data.day
-													.split('-')
-													.slice(2)
-													.join('-')
-											}}
-										</span>
-										<!-- <p :class="data.isSelected ? 'is-selected' : ''">
-                            {{ data.day.split('-').slice(1).join('-') }} {{ data.isSelected ? '✔️' : ''}}
-                      </p> -->
-									</div>
-								</div>
-							</template>
-						</el-calendar>
-						<img src="../assets/images/pic_kpbg.png" alt="" class="index_navTimeimg" />
-					</div>
-				</div>
-				<!-- 备忘录 -->
-				<el-col :sm="24" :lg="24">
-					<div class="index_nav index_memoranduNnavTime">
-						<div class="index_navTime ">
-							<p class="index_navTimep">
-								<span>备忘录</span>
-								<span @click="memoere">
-									<i class="el-icon-date"></i>
-									创建备忘录
-								</span>
-							</p>
-							<ul>
-								<li v-for="(item, index) in getmemorandum" :key="index">
-									<p>{{ item.memorandum_title }}</p>
-									<div class="index_navspande">
-										<span>{{ item.remind_time }}</span>
-										<img src="../assets/images/deletety.png" alt="" v-if="shower" @click="index_deledetfe(item.id)" />
-									</div>
-								</li>
-							</ul>
-							<img src="../assets/images/icon_more.png" alt="" class="imjud" />
-							<!--              <el-calendar v-model="value">
-              </el-calendar> -->
+            <div class="nav_raetone"  style="width: 50%;">
+              <div class="nav_raetones" style="width: 60%;">
+                <p style="text-align: center;">新增</p>
+                <p style=" color: #46D871; text-align: center;">{{panelChartDatas.czxz}}</p>
+              </div>
+              <div class="nav_raetoness" style="width: 40%;">
+                <p style="text-align: center;">减少</p>
+                <p style=" color: #F52F2F; text-align: center;">{{panelChartDatas.czjs}}</p>
+              </div>
+            </div>
+            <p class="p"></p>
 
-							<img src="../assets/images/pic_kpbg.png" alt="" class="index_navTimeimg" />
-						</div>
-					</div>
-				</el-col>
-				<!-- 通讯录 -->
-				<el-col :sm="24" :lg="24">
-					<div class="index_nav index_memoranduMail">
-						<div class="index_navTime ">
-							<p class="index_navTimep">
-								<span>通讯录</span>
-								<img src="../assets/images/icon_more.png" alt="" class="index_navTimeimgtwo" />
-								<!-- <span><i class="el-icon-date"></i>创建日程</span> -->
-							</p>
-							<div class="index_memoranduMailnav">
-								<div class="tab_tol">
-									<el-form class="iejgu" :model="queryParamsail" ref="queryForm" :inline="true">
-										<dynamic-forms
-											:type="0"
-											:ref="item.columnName"
-											:config="queryParamsail"
-											@inputs="changeFn"
-											:formConfig="item"
-											v-for="(item, index) in queryDataali.queryList"
-											:key="index"
-										/>
-										<el-form-item style="width: 20%; text-align: right;">
-											<el-button type="primary" size="mini" @click="handleQuerygty">搜索</el-button>
-										</el-form-item>
-									</el-form>
-									<el-table stripe v-loading="loading" :data="postList.rows" @selection-change="handleSelectionChange">
-										<el-table-column
-											:width="item.columnComment == 'id' ? '40' : item.columnComment == '姓名' ? '60' : '110'"
-											:label="item.columnComment"
-											align="left"
-											:prop="item.columnName"
-											v-for="(item, index) in postList.tableHeadList"
-											:key="index"
-										/>
-									</el-table>
-								</div>
-								<div class="index_haderPagin index_haderPaginfoiu">
-									<!-- getLisail -->
-									<el-pagination
-										@size-change="handleSizeChangeali"
-										@current-change="handleCurrentChangeali"
-										:current-page.sync="currentPage3"
-										:page-size="queryParamsail.pageSize"
-										:small="true"
-										layout="prev, pager, next, jumper"
-										:total="totalali"
-									></el-pagination>
-								</div>
-							</div>
-							<img src="../assets/images/pic_kpbg.png" alt="" class="index_navTimeimg" />
-						</div>
-					</div>
-				</el-col>
-			</el-col>
-		</el-row>
-		<!-- <el-divider /> -->
-		<!-- 添加或修改公告对话框 -->
-		<el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="980px" append-to-body>
-			<el-form ref="form" :model="form" :rules="queryData.rules" label-width="160px" class="from_index">
-				<el-row>
-					<el-col :span="24">
-						<dynamic-forms
-							@modelFn="modelFn"
-							:ref="item.columnName"
-							:config="form.fixedData"
-							@inputs="changeFn"
-							:formConfig="item"
-							v-for="(item, index) in queryData.showData"
-							:key="index"
-						/>
-					</el-col>
-				</el-row>
-			</el-form>
-			<div slot="footer" class="dialog-footer">
-				<el-button type="primary" @click="handleQuery">确 定</el-button>
-				<el-button @click="cancel">取 消</el-button>
-			</div>
-		</el-dialog>
-		<!-- 通知公告弹窗 -->
-		<el-dialog class="index_ese" :close-on-click-modal="false" :title="title" :visible.sync="openety" width="980px" append-to-body>
-			<div class="index_headertan">
-				<p v-html="actingk.notice_title == undefined ? '暂无数据' : actingk.notice_title"></p>
-				<p>{{ actingk.create_time == undefined ? '暂无数据' : actingk.create_time }} 发布人:{{ actingk.create_by }}</p>
-				<pre>
-                 <div v-html="actingk.notice_content"></div>
-               </pre>
-			</div>
-		</el-dialog>
-	</div>
+          </el-col>
+          <el-col :xs="12" :sm="9" style="display: flex; align-items: center;position: relative; justify-content: space-between; height: 120px;">
+            <div class="nav_raet" style="width: 25%;">
+              <p>户籍人口</p>
+              <p style=" color: #9836C1;">{{panelChartDatas.hjzrs}}</p>
+            </div>
+            <panel-groupther :chart-data="panelChartDatas"  />
+            <div class="nav_raetone"  style="width: 50%;">
+              <div class="nav_raetones" style="width: 60%;">
+                <p style="text-align: center;">新增</p>
+                <p style=" color: #46D871; text-align: center; ">{{panelChartDatas.hjxz}}</p>
+              </div>
+              <div class="nav_raetoness" style="width: 40%;">
+                <p style="text-align: center;">减少</p>
+                <p style=" color: #F52F2F; text-align: center;">{{panelChartDatas.hjjs}}</p>
+              </div>
+            </div>
+
+          </el-col>
+
+        </el-row>
+      </el-col>
+    </el-row>
+
+    <!-- 列表 -->
+
+    <div class="tabsty" v-if="panelChartDatas.dqdw == '潜山市'">
+      <div class="tabbuut">
+        <p>各乡镇人口信息表</p>
+        <!-- <el-button  size="small" @click="handleExport" type="primary">导出</el-button> -->
+      </div>
+      <el-table v-loading="loading" :data="panelChartDatas.townDatas"
+        style="width: 100%;"  stripe border height="280" :show-overflow-tooltip="true">
+        <el-table-column prop="zhen" label="乡镇"  align="center"/>
+        <el-table-column prop="cun" label="村"  align="center" width="180"/>
+        <el-table-column prop="zu" label="组"  align="center"/>
+        <el-table-column prop="czzrs" label="常住人口"  align="center"/>
+        <el-table-column prop="hjzrs" label="户籍人口"  align="center"/>
+
+
+      </el-table>
+<!--
+      <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> -->
+    </div>
+
+    <!-- <panel-group @handleSetLineChartData="handleSetLineChartData" /> -->
+
+    <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
+      <line-chart :chart-data="lineChartData"  v-if="nhye"/></el-row>
+
+    <!-- <el-row :gutter="32">
+      <el-col :xs="24" :sm="24" :lg="8">
+        <div class="chart-wrapper"><raddar-chart :chart-data="panelChartDataleid"/></div>
+      </el-col>
+      <el-col :xs="24" :sm="24" :lg="8">
+        <div class="chart-wrapper"><pie-chart :chart-data="panelChartDatayuanh" /></div>
+      </el-col>
+      <el-col :xs="24" :sm="24" :lg="8">
+        <div class="chart-wrapper" ><bar-chart :chart-data="panelChartDatazhuzh" /></div>
+      </el-col>
+    </el-row> -->
+  </div>
 </template>
 
 <script>
-import {
-	listIndex,
-	getUserProfile,
-	listIndextwo,
-	listIndextherr,
-	listIndexfou,
-	listIndextanl,
-	getConfig,
-	delConfig,
-	addConfig,
-	addConfigindex,
-	updateConfig,
-	clearCache,
-	delIndexnabd,
-	listIndexber,
-	getTableQuery,
-	tjList
-} from '@/api/system/config';
-import Editor from '@/components/Editor';
+import {treeselect,listDevice, exportPost,listzhex,listleida,listdbyh, listzhuzh,listTsde} from "@/api/index";
+import PanelGroup from './dashboard/PanelGroup';
+import PanelGroups from './dashboard/PanelGroups';
+import PanelGroupone from './dashboard/PanelGroupone';
+import PanelGrouptwo from './dashboard/PanelGrouptwo';
+import PanelGroupther from './dashboard/PanelGroupther';
+import PanelGroupfour from './dashboard/PanelGroupfour';
+import LineChart from './dashboard/LineChart';
+import RaddarChart from './dashboard/RaddarChart';
+import PieChart from './dashboard/PieChart';
+import BarChart from './dashboard/BarChart';
+const lineChartData = {
+  newVisitis: {
+    expectedData: [80, 120, 111, 104, 105, 100, 105],
+    actualData: [120, 140, 130, 110, 162, 140, 145]
+  },
+  messages: {
+    expectedData: [200, 192, 120, 144, 160, 130, 140],
+    actualData: [180, 160, 151, 106, 145, 150, 130]
+  },
+  purchases: {
+    expectedData: [80, 100, 121, 104, 105, 90, 100],
+    actualData: [120, 90, 100, 138, 142, 130, 130]
+  },
+  shoppings: {
+    expectedData: [130, 140, 141, 142, 145, 150, 160],
+    actualData: [120, 82, 91, 154, 162, 140, 130]
+  }
+};
+
 export default {
-	name: 'index',
-	components: {
-		Editor
-	},
-	data() {
-		return {
-			// 版本号
-			version: '2.5.0',
-			currentPage3: 1,
-			total: 0,
-			totalprofile: 0,
-			totalali: 0,
-			pageSize: 6,
-			activeName: 'second',
-			// 是否显示弹出层
-			open: false,
-			// 弹出层标题
-			title: '',
-			value: new Date(),
-			editableTabs: [],
-			attendance: ['待我审批', '已办理', '我的流程', '驳回审批'],
-			editableTabsteo: [],
-			configList: [],
-			queryParams: {
-				table: 'sys_notice',
-				orderBy: 'create_time desc',
-				pageNo: 1,
-				pageSize: 10,
-				fixedData: {
-					condition: {
-						notice_type: 1,
-						status: 0
-					}
-				}
-			},
-			queryParamstab: {
-				table: 'sys_notice',
-				orderBy: 'create_time desc',
-				pageNo: 1,
-				pageSize: 6,
-				condition: {
-					notice_type: 1
-				}
-			},
-			// 公司概况
-			queryParamstabprofile: {
-				table: 'sys_info',
-				orderBy: 'create_time desc',
-				pageNo: 1,
-				pageSize: 1,
-				fixedData: {
-					condition: {
-						info_type: 1
-					}
-				}
-			},
-			// 日历
-			queryParamscalendar: {
-				table: 'sys_schedule',
-				orderBy: 'create_time desc',
-				pageNo: 1,
-				pageSize: 10,
-				fixedData: {
-					condition: {
-						create_by: ''
-					}
-				}
-			},
-			// 备忘录
-			queryParamstabmemorandum: {
-				table: 'sys_memorandum',
-				orderBy: 'create_time desc',
-				pageNo: 1,
-				pageSize: 6,
-				fixedData: {
-					condition: {
-						create_by: ''
-					}
-				}
-			},
-			// 通讯录
-			queryParamsail: {
-				table: 'sys_contacts',
-				orderBy: 'create_time desc',
-				pageNo: 1,
-				pageSize: 3,
-				fixedData: {
-					condition: {}
-				}
-			},
-			// 通讯录搜索
-			queryParamsailss: {
-				table: '',
-				pageNo: 1,
-				isUi: false,
-				pageSize: 10,
-				orderBy: 'create_time desc',
-				fixedData: {
-					condition: {}
-				}
-			},
-			queryParamsijeu: {
-				table: 'sys_contacts'
-			},
-			num: 0,
-			numlist: 0,
-			numprofile: 0,
-			dictType: 'sys_notice_type',
-			// 公司概况
-			dictTypetwo: 'sys_describe_type',
-			gettabList: [],
-			getLisprofileone: [],
-			// 备忘录
-			getmemorandum: [],
-			//通讯录参数
-			aliemg: {
-				table: 'sys_contacts',
-				orderBy: 'create_time desc',
-				pageNo: 1,
-				pageSize: 4
-			},
-			tableDataalid: [],
-			getLisaillie: [],
-			alendarList: [],
-			calendarData: [],
-			tjsli:[],
-			ary: [],
-			tieku: '',
-			comg: '',
-			aekti: '',
-			// 弹框数据
-			form: {},
-			// 表单校验
-			rules: {},
-			//日历弹框
-			calendaradd: {
-				table: 'sys_schedule',
-				isUi: false,
-				fixedData: {
-					id: -1
-				}
-			},
-			//备忘录弹框
-			calendaraddmer: {
-				table: 'sys_memorandum',
-				isUi: false,
-				fixedData: {
-					id: -1
-				}
-			},
-			// input
-			inputList: [],
-			// 时间
-			dataList: [],
-			//单选框
-			radiolist: [],
-			// 复选框
-			chekbosList: [],
-			//下拉框
-			selectList: [],
-			editorList: [],
-			queryData: {},
-			queryDatatwo: {},
-			queryDatathre: {},
-			queryDataali: {},
-			nummer: 0, //0 是日历  1 是备忘录
-			forme: {
-				table: '',
-				objId: -1,
-				fixedData: {}
-			},
-			rjtu: [],
-			truew: [],
-			fales: [],
-			postList: {},
-			arr: '2,2,3,3,4,4',
-			// 删除参数
-			deledlid: {
-				table: 'sys_memorandum',
-				idList: [],
-				user: {
-					oldPassword: undefined,
-					newPassword: undefined,
-					confirmPassword: undefined
-				},
-				shower: true //判断删除图标是否显示
-			},
-			titlees: '通知公告', //通知公告弹框
-			openety: false,
-			actingk: {}
-		};
-	},
+  name: 'Index',
+  components: {
+    PanelGroup,
+    PanelGroups,
+    LineChart,
+    RaddarChart,
+    PieChart,
+    BarChart,
+    PanelGroupone,
+    PanelGrouptwo,
+    PanelGroupther,
+    PanelGroupfour
+  },
+  data() {
+    return {
+      lineChartData: {},
+      dayList: 1, //判断天周月
+      taye: 'newVisitis', //根据点击天周月变换,折线图数据变换
+      panelChartData: {},
+      panelChartDatas:{},
+      panelChartDataleid:{},
+      panelChartDatayuanh:[],
+      tableData: [
+      ], //表格数据
+      // 总条数
+      total: 10,
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10
+      },
+      // 遮罩层
+      loading: false,
+      deviceIpOptions:{},
+      panelChartDatazhuzh:{},
+      nhye:false
+    };
+  },
+  mounted(){
+   // this.yuanhaun(1)
+   // this.tableList()
+
 
-	created() {
-		// console.log(this.user)
-		this.unique(this.arr);
-		this.getList();
-		this.getListtab();
-		this.getLiser();
-		this.getLisprofile();
-		// 用户信息
-		this.getUser();
-		// this.getLismemorandum()  //备忘录
-		this.getLisail(); //通讯录
-		this.getLisailtwo();
-		this.init();
-		// 统计列表
-		this.tiheyu()
-	},
-	computed: {
-		// 时间高亮的数组
-		brightDate() {
-			// let ary = []
-			var that = this;
-			if (that.calendarData.length !== null) {
-				for (var i = 0; i < that.calendarData.length; i++) {
-					that.calendarData[i].love = 'yu';
-					if (that.calendarData[i].remind_time !== undefined) {
-						that.ary.push(that.calendarData[i].remind_time);
-					}
-				}
-			}
-			return that.ary;
-		}
-	},
-	methods: {
-		// 通讯录搜索
-		init() {
-			console.log(1243);
-			getTableQuery({
-				table: this.queryParamsijeu.table
-			}).then(res => {
-				let data = res.data;
-				this.queryDataali = data;
-			});
-		},
-		// Tooltip 文字提示
-		content(date) {
-			let data = date;
-			let datase = date;
-			let content = '';
-			let conert = '';
-			let conertre = '';
-			let nujue = 0;
-			for (var i = 0; i < this.calendarData.length; i++) {
-				if (this.calendarData[i].schedule_content !== undefined) {
-					this.calendarData[i].schedule_content = this.calendarData[i].schedule_content.replace(/<\/?[^>]*>/g, '');
-				}
-				if (data == this.calendarData[i].remind_time) {
-					if (content == this.calendarData[i].schedule_content + '、') {
-						content = content;
-					} else {
-						content = content + this.calendarData[i].schedule_content + '、';
-					}
-				}
-			}
-			return content;
-		},
-		modelFn(obj, cont) {
-			this.$set(this.form, obj, cont);
-		},
-		//数据  第一部分列表
-		getList() {
-			this.loading = true;
-			this.configList = [];
-			listIndex(this.queryParams).then(response => {
-				if (response.data.rows !== null) {
-					this.configList = response.data.rows;
-				} else {
-					this.configList.push({ notice_title: '暂无数据' });
-				}
-				this.total = response.data.total;
-				this.loading = false;
-			});
-		},
-		//数据  第二部分列表
-		getListtabone() {
-			this.loading = true;
-			listIndex(this.queryParams).then(response => {
-				this.configList = response.data.rows;
-				this.total = response.data.total;
-				this.loading = false;
-			});
-		},
-		//数据  第三部分列表
-		getLisprofile() {
-			// this.loading = true;
-			listIndexber(this.queryParamstabprofile).then(response => {
-				if (response.data !== undefined) {
-					this.getLisprofileone = response.data.rows;
-					if (response.data.rows !== null) {
-						this.tieku = this.getLisprofileone[0].info_title;
-						this.comg = this.getLisprofileone[0].info_content;
-					} else {
-						this.tieku = '暂无数据';
-						this.comg = '暂无数据';
-					}
-					this.totalprofile = response.data.total;
-				}
-				this.loading = false;
-			});
-		},
-		//数据  日历数据列表
-		getLisalendar() {
-			this.loading = true;
-			this.queryParamscalendar.fixedData.condition.create_by = this.user.userName;
-			listIndex(this.queryParamscalendar).then(response => {
-				if (response.data !== undefined) {
-					this.calendarData = response.data.rows;
-				}
-				this.loading = false;
-			});
-		},
-		//数据  备忘录数据列表
-		getLismemorandum() {
-			this.loading = true;
-			this.getmemorandum = [];
-			this.queryParamstabmemorandum.fixedData.condition.create_by = this.user.userName;
-			listIndex(this.queryParamstabmemorandum).then(response => {
-				if (response.data !== undefined) {
-					if (response.data.rows !== null) {
-						this.shower = true;
-						this.getmemorandum = response.data.rows;
-					} else {
-						this.shower = false;
-						this.getmemorandum.push({ memorandum_title: '暂无数据', shower: false });
-					}
-				}
-				this.loading = false;
-			});
-		},
-		// 数据列表   通讯录数据
-		getLisailtwo() {
-			this.loading = true;
-			listIndex(this.queryParamsail).then(response => {
-				if (response.data !== undefined) {
-					this.getLisaillie = response.data.rows;
-				}
-				this.totalali = response.data.total;
-				this.loading = false;
-			});
-		},
-		//tab 公告 栏数据
-		getListtab() {
-			this.loading = true;
-			listIndextwo(this.dictType).then(response => {
-				this.editableTabs = response.data;
-				this.queryParams.dictType = response.data[1].dictType;
-				// this.total = response.total;
-				this.loading = false;
-			});
-		},
-		// 公司概况  tab
-		getLiser() {
-			this.loading = true;
-			listIndextherr(this.dictTypetwo).then(response => {
-				this.editableTabsteo = response.data;
-				// this.total = response.total;
-				this.loading = false;
-			});
-		},
-		// 通讯录表头
-		getLisail() {
-			this.loading = true;
-			listIndexfou(this.queryParamsail).then(response => {
-				if (response.data !== undefined) {
-					this.tableDataalid = response.data.tableHeadList;
-					this.postList = response.data;
-					if (this.postList.rows !== null) {
-						this.postList.rows.filter(route => {
-							// route.dept_id = route.dept_id.value
-							for (var item in route) {
-								if (typeof route[item] == 'object') {
-									route[item] = route[item].value;
-								}
-							}
-						});
-					}
 
-					this.totalali = response.data.total;
-				}
-				this.loading = false;
-			});
-		},
-		//日历新增弹框数据
-		getLisalendaraddd() {
-			this.loading = true;
-			this.queryData = [];
-			listIndextanl(this.calendaradd).then(response => {
-				if (response.data !== undefined) {
-					this.queryData = response.data;
-				}
-				this.loading = false;
-			});
-		},
-		//备忘录新增弹框数据
-		getLisalendaradddmer() {
-			this.loading = true;
-			this.queryData = [];
-			listIndextanl(this.calendaraddmer).then(response => {
-				if (response.data !== undefined) {
-					this.queryData = response.data;
-				}
-				this.loading = false;
-			});
-		},
-		goTarget(href) {
-			window.open(href, '_blank');
-		},
-		handleSizeChange(val) {},
-		handleCurrentChange(val) {
-			this.queryParams.pageNo = val;
-			this.getList();
-		},
-		// 公司概况
-		handleSizeChangeprofile(val) {},
-		handleCurrentChangeprofile(val) {
-			this.queryParamstabprofile.pageNo = val;
-			this.getLisprofile();
-		},
-		// 通讯录
-		handleSizeChangeali(val) {},
-		handleCurrentChangeali(val) {
-			this.queryParamsail.pageNo = val;
-			this.getLisail();
-		},
-		handleClick(tab, event) {},
-		// 第一部分tab点击
-		tabSbu(index) {
-			this.num = index - 1;
-			this.queryParams.fixedData.condition.notice_type = index;
-			this.getList();
-		},
-		// 第二部分tab点击numlist
-		tabList(index) {
-			this.numlist = index;
-		},
-		// 第三部分tab点击
-		tabSbuprofile(index) {
-			this.numprofile = index - 1;
-			this.queryParamstabprofile.fixedData.condition.info_type = index;
-			this.getLisprofile();
-		},
-		// 表单重置
-		reset() {
-			(this.form = {}), this.resetForm('form');
-		},
-		// 取消按钮
-		cancel() {
-			this.open = false;
-			this.openety = false;
-			this.reset();
-		},
-		/** 新增按钮操作 */
-		handleAdd() {
-			this.nummer = 0;
-			this.reset();
-			this.form = {};
-			this.getLisalendaraddd();
-			this.open = true;
-			this.title = '添加日程';
-		},
-		/** 提交按钮操作 */
-		handleQuery() {
-			for (let item of this.queryData.showData) {
-				if (item.htmlType == 'checkbox' || item.htmlType == 'imageUpload' || item.htmlType == 'fileUpload') {
-					this.form[item.columnName] = this.$refs[item.columnName][0].config;
-				} else {
-					this.form[item.columnName] = this.$refs[item.columnName][0].config[item.columnName];
-				}
-			}
-			// this.forme = this.form
-			if (this.nummer == 0) {
-				this.forme.table = 'sys_schedule';
-				this.forme.objId = -1;
-				this.forme.fixedData = this.form;
-				// if(this.forme.fixedData.remind_type !== undefined){
-				//   this.forme.fixedData.remind_type = this.forme.fixedData.remind_type.join(',');
-				// }
-				//日历
-				addConfigindex(this.forme).then(response => {
-					this.msgSuccess('新增成功');
-					// this.open = false;
-					this.getLisalendar();
-					this.cancel();
-				});
-			} else if (this.nummer == 1) {
-				// this.form.table = 'sys_memorandum'
-				this.forme.table = 'sys_memorandum';
-				this.forme.objId = -1;
-				this.forme.fixedData = this.form;
+   // 折线
+   this.zhexianList()
 
-				//备忘录
-				addConfigindex(this.forme).then(response => {
-					this.msgSuccess('新增成功');
-					// this.open = false;
-					this.getLismemorandum();
-					this.cancel();
-				});
-			}
-			// this.getList();
-		},
-		// 弹框
-		changeFn(obj) {
-			console.log(obj);
-			for (let key in obj) {
-				this.form.fixedData[key] = obj[key];
-			}
-		},
-		// 新增备忘录
-		memoere() {
-			this.nummer = 1;
-			this.open = true;
-			this.title = '添加备忘录';
-			this.getLisalendaradddmer();
-		},
-		// 备忘录删除
-		index_deledetfe(id) {
-			var that = this;
-			that.deledlid.idList = [];
-			that.deledlid.idList.push(id);
 
-			this.$confirm('是否确认删除', '警告', {
-				confirmButtonText: '确定',
-				cancelButtonText: '取消',
-				type: 'warning'
-			})
-				.then(function() {
-					return delIndexnabd(that.deledlid);
-				})
-				.then(() => {
-					this.getLismemorandum();
-					this.msgSuccess('删除成功');
-					// this.$router.go(-1)
-				});
-		},
+   // 雷达
+   // this.leidaList()
+   // 底部圆环
+   // this.dbyhList()
+   // 柱状图
+   // this.zhuzhList()
 
-		handleSelectionChange() {},
-		// 字符串去重
-		unique(arr) {
-			let arfe = [];
-			let serfgt = [];
-			arfe = arr.split(',');
-			for (var i = 0; i < arfe.length; i++) {
-				if (serfgt.indexOf(arfe[i]) === -1) {
-					serfgt.push(arfe[i]);
-				}
-			}
-			// const res = new Map();
-			// return arr.filter((arr) => !res.has(arr.id) && res.set(arr.id, 1));
-		},
-		getUser() {
-			getUserProfile().then(response => {
-				this.user = response.data;
-				this.getLisalendar();
-				this.getLismemorandum();
-			});
-		},
-		// 通知公告弹窗
-		headerCld(index) {
-			this.title = '通知公告';
-			(this.openety = true), (this.actingk = index);
-		},
-		// 搜索
-		handleQuerygty() {
-			this.queryParams.pageNo = 1;
-			this.grabFn(this.queryDataali.queryList, this.queryParamsail.fixedData.condition);
-			this.getLisail();
-		},
-		// 抓取参数
-		grabFn(arr, parForm) {
-			for (let item of arr) {
-				if (item.htmlType == 'checkbox' || item.htmlType == 'imageUpload' || item.htmlType == 'fileUpload') {
-					if (this.$refs[item.columnName][0].config.length) {
-						parForm[item.columnName] = this.$refs[item.columnName][0].config;
-					}
-				} else {
-					parForm[item.columnName] = this.$refs[item.columnName][0].config[item.columnName];
-				}
-			}
-		},
-		// 搜索重置  通讯录
-		resetQuery() {
-			console.log(12436);
-			this.queryParamsail.fixedData.condition = {};
-			this.queryParamsail.pageNo = 1;
-			// this.resetForm("queryParamsail");
-			console.log(this.queryParamsail);
-			this.getLisail();
-		},
-		// 统计列表
-		tiheyu(){
-			tjList().then(response => {
-				this.tjsli = response.data;
-			});
-		}
-	}
+   //户籍列表
+   this.lisdtwe()
+  },
+  methods: {
+    handleSetLineChartData(type) {
+      this.lineChartData = lineChartData[type];
+    },
+    // 月 周 天 点击
+    day(index) {
+      this.dayList = index;
+      this.yuanhaun(index)
+      if (index == 1) {
+        // 天
+        this.taye = 'newVisitis';
+        this.lineChartData = lineChartData[this.taye];
+      } else if (index == 2) {
+        // 周
+        this.taye = 'messages';
+        this.lineChartData = lineChartData[this.taye];
+      } else {
+        // 月
+        this.taye = 'purchases';
+        this.lineChartData = lineChartData[this.taye];
+      }
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      // this.ids = selection.map(item => item.id)
+      // this.single = selection.length !== 1
+      // this.multiple = !selection.length
+    },
+    // 表格点击事件
+    tabclick(val){
+      console.log(val)
+      this.$router.push({
+        path:'./school/temperatures',
+        query:{
+          val:val,
+        }
+      })
+      },
+    // 圆环数据
+    yuanhaun(val){
+      treeselect(val).then(response => {
+        this.deviceIpOptions = response.data;
+        this.panelChartDatas = this.deviceIpOptions
+      });
+    },
+    // 列表数据
+   tableList(){
+     listDevice().then(response => {
+       this.tableData = response.data;
+       // this.panelChartDatas = this.deviceIpOptions
+
+     });
+   },
+   // 户籍列表
+   lisdtwe(){
+      listTsde().then(response => {
+        this.deviceIpOptions = response.data;
+        this.panelChartDatas = this.deviceIpOptions
+      });
+   },
+   // 折线图数据
+   zhexianList(){
+     listzhex().then(response => {
+       this.lineChartData = response.data;
+       this.nhye = true
+       // this.panelChartDatas = this.deviceIpOptions
+     });
+   },
+   // 雷达图
+   leidaList(){
+     listleida().then(response => {
+       this.panelChartDataleid = response.data;
+       // this.panelChartDatas = this.deviceIpOptions
+     });
+   },
+   // 底部圆环数据
+   dbyhList(){
+     listdbyh().then(response => {
+       this.panelChartDatayuanh = response.data;
+       // this.panelChartDatas = this.deviceIpOptions
+     });
+   },
+   // 柱状图数据
+   zhuzhList(){
+     listzhuzh().then(response => {
+       this.panelChartDatazhuzh = response.data;
+       // this.panelChartDatas = this.deviceIpOptions
+     });
+   },
+
+   /** 导出按钮操作 */
+   handleExport() {
+     const queryParams = this.queryParams;
+     this.$confirm('是否确认导出?', "警告", {
+         confirmButtonText: "确定",
+         cancelButtonText: "取消",
+         type: "warning"
+       }).then(function() {
+         return exportPost();
+       }).then(response => {
+         this.download(response.msg);
+       })
+   }
+
+  }
 };
 </script>
 
 <style lang="scss">
-.iejgu {
-	.el-form-item__label {
-		width: 40px !important;
-		.el-input__inner {
-			width: 60%;
-		}
-	}
-	.el-form-item {
-		width: 71%;
-	}
-	.el-form--inline .el-form-item {
-	}
-	.el-form--inline .el-form-item__content {
-		width: 76%;
-	}
-	.el-form-item__content {
-		width: 75%;
-	}
+.tabsty {
+  .el-table .el-table__header-wrapper th {
+    background-color: #7bcbff;
+    color: #fff;
+    border:0 !important;
+  }
+  .el-table--striped .el-table__body tr.el-table__row--striped td {
+    background-color: #e9f1f7;
+  }
+  .el-table--group,
+  .el-table--border {
+    // border-color: #0CA0FF;
+    border: 1px solid #0CA0FF;
+  }
 }
-.index_ese {
-	.el-dialog__body {
-		padding-top: 10px !important;
-	}
+</style>
+
+<style lang="scss" scoped>
+.header {
+  display: flex;
+  text-align: left;
+  justify-content: flex-end;
+  margin-bottom: 12px;
+  p {
+    font-size: 18px;
+    font-family: PingFang SC;
+    font-weight: 700;
+    color: #666666;
+    cursor: pointer;
+  }
+  p:nth-child(1)::before {
+    width: 1px;
+    background-color: #666;
+  }
+  .heade_cod {
+    color: #00a8ec;
+  }
+  .el-table--border {
+    border: 1px solid #0ca0ff !important;
+  }
 }
-.home {
-	.el-tabs__header {
-		margin-bottom: 5px !important;
-	}
-	.el-calendar-table tr td:first-child {
-		border: 0 !important;
-	}
-	.el-calendar-table tr:first-child td {
-		border: 0 !important;
-	}
-	.el-calendar-table td {
-		border: 0 !important;
-	}
-	.el-calendar-table .el-calendar-day {
-		height: 30px;
-		text-align: center;
-		line-height: 30px;
-		border-radius: 30px;
-		padding: 0;
-		// background-color: #0B18E8;
-	}
-	.el-calendar-table td.is-selected {
-		// background-color: #0B18E8;
-		border-radius: 30px;
-	}
-	.el-calendar__header {
-		border: 0;
-		padding: 0 20px;
-	}
-	.el-calendar__body {
-		padding-top: 0;
-		padding-bottom: 0;
-	}
-	.el-pagination {
-		padding-left: 0;
-	}
-	.index_headeNav {
-		.el-tabs__item {
-			position: relative;
-		}
-	}
-	.el-table th.is-leaf,
-	.el-table td {
-		// border: 0 !important;
-	}
-	.el-table thead.is-group th{
-		background-color: #f8f8f8 !important;
-	}
-	.el-table--medium td{
-		padding: 12px 0 !important;
-	}
-	.el-calendar__title {
-		font-size: 12px;
-	}
-	.el-table td {
-		padding: 6px 0;
-	}
-	.index_haderPaginfoiu {
-		.el-pagination__jump {
-			display: block !important;
-			text-align: center;
-			margin-left: 0;
-		}
-	}
-	.everyDay {
-		display: inline-block;
-		width: 20px;
-		height: 20px;
-		line-height: 20px;
-		background-color: #409eff;
-		color: #fff;
-		border-radius: 50%;
-		margin-top: 5px;
-	}
+p {
+  margin: 0;
 }
-</style>
+.hedse_radt {
+  height: 100%;
+  padding-top: 24px;
+  position: relative;
+  display: flex;
+  justify-content: space-between;
+  align-content: center;
+  width: 100%;
+  padding-left: 26px;
+  padding-bottom: 24px;
+  .p {
+    position: absolute;
+    right: -28px;
+    width: 1px;
+    height: 70px;
+    background-color: #c7cbd7;
+    top: 22%;
+  }
+  .hedse_radtone {
+    // margin-bottom: 30px;
+    // padding:  0 26px;
+    text-align: left;
+    width: 33.33%;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    p:nth-child(1) {
+      font-size: 15px;
+      font-family: PingFang SC;
+      font-weight: bold;
+      color: #343434;
+    }
+    p:nth-child(2) {
+      font-size: 20px;
+      font-family: PingFang SC;
+      font-weight: bold;
+      color: #00a8ec;
+    }
 
-<style scoped lang="scss">
-.home {
-	// tab
-	.index_headetab {
-		display: flex;
-		border-bottom: 1px solid #e5e5e5;
-		height: 65px;
-		padding-top: 10px;
-		padding-bottom: 10px;
-		span {
-			cursor: pointer;
-			width: 80px;
-			// flex: 1;
-			text-align: center;
-			line-height: 55px;
-			height: 55px;
-			font-size: 15px;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #666;
-			position: relative;
-			overflow: hidden;
-			white-space: nowrap;
-			text-overflow: ellipsis;
-			// flex: 1;
-			// border-bottom: ;
-		}
-		.span {
-			content: '';
-			display: block;
-			width: 18px;
-			height: 8px;
-			border-radius: 3px;
-			background-color: #3c8dbc;
-			color: #3c8dbc !important;
-			// position: absolute;
-			// border-bottom: ;
-		}
-		.spanto {
-			color: #3c8dbc;
-			border-bottom: 3px solid #3c8dbc;
-		}
-	}
-	p {
-		margin: 0;
-	}
-	ul {
-		margin: 0;
-		padding: 0;
-	}
-	background-color: #eef0ff;
-	blockquote {
-		padding: 10px 20px;
-		margin: 0 0 20px;
-		font-size: 17.5px;
-		border-left: 5px solid #eee;
-	}
-	.index_heade {
-		// border: 1px solid #eee;
-		// width: 100%;
-		padding: 0 20px;
-		height: 570px;
-		background-color: #fff;
-		position: relative;
-		border-radius: 6px;
-		.index_headerImg {
-			width: 23px;
-			height: 6px;
-			position: absolute;
-			right: 20px;
-			top: 32px;
-		}
-		.index_headerUl {
-			width: 100%;
-			padding: 0;
-			margin: 0;
-			height: 85%;
-			li {
-				margin: 0;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				height: 43px;
-				cursor: pointer;
-				img {
-					width: 11px;
-					height: 13px;
-				}
-				p {
-					font-size: 14px;
-					font-family: PingFang SC;
-					font-weight: 400;
-					color: #343434;
-					line-height: 36px;
-					margin: 0;
-					text-align: left;
-					flex: 1;
-					padding: 0 18px;
-					overflow: hidden;
-					text-overflow: ellipsis;
-					white-space: nowrap;
-				}
-				span {
-					font-size: 14px;
-					font-family: PingFang SC;
-					font-weight: 400;
-					color: #343434;
-					line-height: 36px;
-				}
-			}
-		}
-		.index_haderPagin {
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-			margin-top: 30px;
-			span {
-				flex: 1;
-				font-size: 12px;
-				font-family: PingFang SC;
-				font-weight: 400;
-				color: #343434;
-				text-align: right;
-				// line-height: 36px;
-			}
-		}
-	}
-	//表格样式
-	.index_headeNav {
-		padding: 0 20px;
-		height: 550px;
-		background-color: #fff;
-		position: relative;
-		border-radius: 6px;
-		.tab_i {
-			position: absolute;
-			right: 1px;
-			top: 5px;
-			border-radius: 50%;
-			// display: block;
-			width: 15px;
-			height: 15px;
-			line-height: 15px;
-			text-align: center;
-			color: #fff;
-			background-color: red;
-			overflow: hidden; //超出的文本隐藏
-			text-overflow: ellipsis; //溢出用省略号显示
-			white-space: nowrap; //溢出不换行
-			font-size: 11px;
-			font-family: PingFang SC;
-			font-weight: bold;
-		}
-	}
-	.index_nav {
-		// border: 1px solid #eee;
-		background-color: #fff;
-		height: 315px;
-		box-shadow: 0px 4px 4px 0px rgba(130, 150, 162, 0.64);
-		border-radius: 6px;
-		.index_navTime {
-			height: 270px;
-			position: relative;
-		}
-		.index_navTimeimg {
-			height: 47px;
-			width: 100%;
-			position: absolute;
-			bottom: -76px;
-			left: 0;
-		}
-		.index_navTimep {
-			padding: 10px 0;
-			margin: 0 20px;
-			margin-bottom: 10px;
-			border-bottom: 1px solid #e5e5e5;
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-			span:nth-child(1) {
-				font-size: 15px;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #3c8dbc;
-			}
-			span:nth-child(1)::before {
-				content: '';
-				display: block;
-				width: 18px;
-				height: 8px;
-				background: #3c8dbc;
-				border-radius: 3px;
-			}
-			span:nth-child(2) {
-				font-size: 12px;
-				font-family: PingFang SC;
-				font-weight: 400;
-				color: #3c8dbc;
-				cursor: pointer;
-			}
-		}
-	}
-	// 公司概况样式
-	.index_headeProfile {
-		margin-top: 40px;
-		margin-bottom: 20px;
-		height: 590px;
-		.index_profilep {
-			font-size: 12px;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #343434;
-			line-height: 27px;
-			text-indent: 2em;
-			height: 368px;
-			overflow-y: hidden;
-			// p{
+  }
+  .hedse_radttwo {
+    display: flex;
+    // padding: 0 26px;
+    // justify-content: space-between;
+    justify-content: space-around;
+    flex: 1;
+    div{
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+    }
+    p:nth-child(1) {
+      font-size: 15px;
+      font-family: PingFang SC;
+      font-weight: bold;
+      color: #343434;
+    }
+    p:nth-child(2) {
+      font-size: 20px;
+      font-family: PingFang SC;
+      font-weight: bold;
+      color: #546fc6;
+    }
+  }
+}
+.nav_raet {
+  // padding-top: 24px;
+  margin-left: 60px;
+  p:nth-child(1) {
+    font-size: 15px;
+    font-family: PingFang SC;
+    font-weight: bold;
+    color: #343434;
+  }
+  p:nth-child(2) {
+    font-size: 20px;
+    font-family: PingFang SC;
+    font-weight: bold;
+    color: #50bd04;
+  }
+}
+.dashboard-editor-container {
+  padding: 32px;
+  padding-top: 12px;
+  background-color: rgb(240, 242, 245);
+  position: relative;
+
+  .chart-wrapper {
+    background: #fff;
+    padding: 16px 16px 0;
+    margin-bottom: 32px;
+  }
+}
 
-			// }
-		}
-		.index_haderPagin {
-			margin-top: 25px;
-		}
-		.index_headerImg {
-			width: 21px;
-			height: 21px;
-			top: 19px;
-		}
-	}
-	// 备忘录样式
-	.index_memoranduNnavTime {
-		height: 335px;
-		margin-top: 90px;
-		position: relative;
-		.index_navTimep {
-			padding: 20px 0;
-			// margin-bottom: 20px;
-		}
-		.index_navTimeimg {
-			height: 47px;
-			width: 100%;
-			position: absolute;
-			bottom: -76px;
-			left: 0;
-			bottom: -96px;
-		}
-		.imjud {
-			width: 23px;
-			height: 6px;
-			position: absolute;
-			right: 20px;
-			bottom: -50px;
-		}
-		ul {
-			padding: 0 20px;
-			li {
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				border-bottom: 1px dashed #e5e5e5;
-				p {
-					font-size: 12px;
-					font-family: PingFang SC;
-					font-weight: 400;
-					color: #343434;
-					line-height: 36px;
-					flex: 1;
-				}
-				.index_navspande {
-					display: flex;
-					justify-content: space-between;
-					align-items: center;
-					span {
-						font-size: 12px;
-						font-family: PingFang SC;
-						font-weight: 400;
-						color: #343434;
-						line-height: 36px;
-						flex: 1;
-						white-space: nowrap;
-						overflow: hidden;
-						text-overflow: ellipsis;
-						// width: 20%;
-					}
-					img {
-						width: 16px;
-						height: 16px;
-						margin-left: 5px;
-						cursor: pointer;
-					}
-				}
-			}
-		}
-	}
-	//通讯录样式
-	.index_memoranduMail {
-		height: 363px;
-		margin-top: 100px;
-		.index_navTimeimgtwo {
-			width: 23px;
-			height: 6px;
-		}
-		.index_navTimep {
-			padding: 20px 0;
-		}
-		.index_memoranduMailnav {
-			padding: 0 20px;
-			height: 90%;
-		}
-		.index_navTimeimg {
-			height: 47px;
-			width: 100%;
-			position: absolute;
-			bottom: -76px;
-			left: 0;
-			bottom: -126px;
-		}
-		.index_haderPagin {
-			margin-top: 10px;
-		}
-	}
+@media (max-width: 1024px) {
+  .chart-wrapper {
+    padding: 8px;
+  }
 }
 
-// table
-.tab_tol {
-	// display: flex;
-	height: 80%;
-	.tr_one {
-		display: flex;
-		justify-content: space-around;
-		width: 100%;
-		th {
-			flex: 1;
-			font-size: 12px;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #343434;
-			line-height: 36px;
-			overflow: hidden;
-			text-overflow: ellipsis;
-			white-space: nowrap;
-		}
-	}
-	.two_tr {
-		display: flex;
-		justify-content: space-around;
-		font-size: 12px;
-		font-family: PingFang SC;
-		font-weight: bold;
-		color: #343434;
-		line-height: 36px;
-		td {
-			flex: 1;
-			overflow: hidden;
-			text-overflow: ellipsis;
-			white-space: nowrap;
-		}
-	}
-	.two_trtwo {
-		background-color: #f2f2f2;
-	}
+// 表格央视
+.tabsty {
+  background-color: #fff;
+  width: 100%;
+  margin-top: 16px;
+  padding: 0 30px;
+  padding-top: 23px;
+  padding-bottom: 40px;
+  margin-bottom: 36px;
 }
-// 通知公告弹窗
-.index_headertan {
-	margin: 0 30px;
-	p {
-		margin: 0;
-	}
-	p:nth-child(1) {
-		font-size: 24px;
-		font-family: PingFang SC;
-		font-weight: bold;
-		color: #343434;
-		line-height: 42px;
-		text-align: center;
-		margin-bottom: 10px;
-		text-indent: 0em;
-	}
-	p:nth-child(2) {
-		font-size: 16px;
-		font-family: PingFang SC;
-		font-weight: 400;
-		color: #666666;
-		line-height: 24px;
-		text-align: center;
-		margin-bottom: 20px;
-		text-indent: 0em;
-	}
-	pre {
-		font-size: 16px;
-		font-family: PingFang SC;
-		font-weight: 400;
-		color: #343434;
-	}
+.tabbuut {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 15px;
+  p:nth-child(1) {
+    font-size: 16px;
+    font-family: PingFang SC;
+    font-weight: bold;
+    color: #343434;
+  }
 }
-pre {
-	white-space: pre-wrap;
+.nav_raetone{
+  // flex: 1;
+  display: flex ;
+  // flex-direction: column;
+  justify-content: space-between;
+  align-content: center;
+  // height: 100%;
+  text-align: right;
+  // padding-top: 18px;
+  margin-right: 30px;
+  box-sizing:border-box;
+  -moz-box-sizing:border-box; /* Firefox */
+  -webkit-box-sizing:border-box;
+  padding-left: 20px;
+
+  p:nth-child(1) {
+    font-size: 15px;
+    font-family: PingFang SC;
+    font-weight: bold;
+    color: #343434;
+  }
+  p:nth-child(2) {
+    font-size: 20px;
+    font-family: PingFang SC;
+    font-weight: bold;
+    color: #50bd04;
+  }
 }
+
+.p {
+      position: absolute;
+      right: -18px;
+      width: 1px;
+      height: 70px;
+      background-color: #c7cbd7;
+      top: 22%;
+    }
 </style>

+ 13 - 5
src/views/login.vue

@@ -2,8 +2,8 @@
   <div class="login">
     <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
       <img src="../assets/images/icon_dl_ewm@2x.png" v-if="stageType==1" @click="dhiwyrei" alt="" class="icon_rw">
-      <img src="../assets/images/icon_dl_madl@2x.png" v-if="stageType==2" alt="" @click="stageType=1" class="icon_mim">
-      <h3 class="title"> 潜山市防疫数据平台</h3>
+      <img src="../assets/images/icon_dl_madl@2x.png" v-if="stageType==2" alt="" @click="bkue" class="icon_mim">
+      <h3 class="title"> 潜山市人口信息平台</h3>
       <!-- <div v-if="statusFlag==2">
         <div class="erw_img">
           <img src="" alt="" class="imgs">
@@ -14,14 +14,16 @@
         </div>
       </div> -->
 	  <!-- 2 -->
+
 	  <div v-show="stageType==2" class="login-erw">
-      <h2 class="logerw_tit">
-        二维码快速登录
+      <h2 v-if="stageType==2" class="logerw_tit">
+        请搜索<pan style="color: red;">潜山数据资源小程序</pan>使用<span style="color: red;">小程序中扫码登录功能</span>,扫码快速登录
       </h2>
       <p>请扫描下方的二维码</p>
       <p>安全登录,防止盗号</p>
       <div class="logerw_img" ref="qrCodeUrl">
       </div>
+
       <div class="ts_p" v-if="isInvalid">
         二维码已过期,请点击<span @click="getQecode">刷新</span>重试
       </div>
@@ -75,6 +77,7 @@
          <div class="medTitle">
            快捷登录
          </div>
+         <div style="text-align: center; font-size: 12px;"><span style="color: red;">建议使用潜山数据资源小程序扫描右上角二维码登录</span></div>
          <div class="med_icons">
            <div class="med_icons_item" @click="btns">
              <img src="@/assets/images/icon_kjdl_wz@2x.png" alt="" class="icon">
@@ -334,7 +337,12 @@
             });
           }
         });
-      }
+      },
+	  bkue(){
+		  this.stageType =1
+      clearInterval(this.setInStatus)
+	  }
+
     }
   };
 </script>

+ 208 - 8
src/views/system/dept/index.vue

@@ -95,6 +95,46 @@
               <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" placeholder="选择上级部门" />
             </el-form-item>
           </el-col>
+          <!-- v-if="c !== 0" -->
+          <el-col :span="24" >
+            <!-- <el-cascader
+             v-if="nhyesfx"
+            	:placeholder="nhdyesfgh"
+            	:options="optionsLists"
+            	separator="/"
+              v-model="nhyeswdga.nhus"
+            	@change="chahe"
+            	:props="optionPropsss"
+            	style="width: 100%;"
+            	ref="myCascader"
+              @click.native="clicks"
+              :popper-class="'cascader' + id"
+              :class="[nhdyesfgh == '点击选择户籍地址' ? '' : 'placf']"
+              @active-item-change="handleItemChanges"
+            ></el-cascader> -->
+            <el-form-item label="行政区域" prop="areaId">
+              <!-- <treeselect v-model="form.areaId" :options="" :normalizer="normalizer" placeholder="选择行政区域" /> -->
+              <el-input
+                v-model="form.areaName"
+                placeholder="部门名称"
+                clearable
+                size="small"
+                disabled
+                style="margin-bottom: 20px"
+              />
+              <el-tree
+                :data="deptOptionsxz"
+                :props="defaultProps"
+                :expand-on-click-node="false"
+                :filter-node-method="filterNode"
+                node-key="areaId"
+                ref="tree"
+                :load="loadNode"
+                lazy
+                @node-click="handleNodeClick"
+                />
+            </el-form-item>
+          </el-col>
           <el-col :span="12">
             <el-form-item label="部门名称" prop="deptName">
               <el-input v-model="form.deptName" placeholder="请输入部门名称" />
@@ -142,7 +182,7 @@
 </template>
 
 <script>
-import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild, listDeptri,listDeptrity } from "@/api/system/dept";
+import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild, listDeptri,listDeptrity,listDeptxz,listRoleergth } from "@/api/system/dept";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
@@ -159,6 +199,12 @@ export default {
       deptList: [],
       // 部门树选项
       deptOptions: [],
+      defaultProps: {
+        children: "children",
+        label: "name"
+      },
+      // 行政区域
+      deptOptionsxz:undefined,
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -183,6 +229,9 @@ export default {
         orderNum: [
           { required: true, message: "菜单顺序不能为空", trigger: "blur" }
         ],
+        areaId:[
+          { required: true, message: "行政区域不能为空", trigger: "blur" }
+        ],
         email: [
           {
             type: "email",
@@ -197,7 +246,10 @@ export default {
             trigger: "blur"
           }
         ]
-      }
+      },
+      nhyesfx:false,
+      nhdyesfgh:'点击选择行政区域',
+      optionsLists:[],
     };
   },
   created() {
@@ -208,6 +260,7 @@ export default {
 	listDeptrity().then(response => {
 	      this.deptOptions = this.handleTree(response.data, "id");
 	});
+  this.getListxz()
   },
   methods: {
     /** 查询部门列表 */
@@ -218,6 +271,11 @@ export default {
         this.loading = false;
       });
     },
+    // 查询行政区域
+    getListxz(){
+
+    },
+
 	// 列表懒加载
 	load(row, treeNode, resolve){
 		console.log(row, treeNode, resolve)
@@ -228,9 +286,9 @@ export default {
 		  resolve(response.data)
 		  this.loading = false;
 		});
-		 
+
 	},
-		
+
     /** 转换部门数据结构 */
     normalizer(node) {
       if (node.children && !node.children.length) {
@@ -261,7 +319,9 @@ export default {
         leader: undefined,
         phone: undefined,
         email: undefined,
-        status: "0"
+        status: "0",
+        areaId:null,
+        areaName:null
       };
       this.resetForm("form");
     },
@@ -273,7 +333,7 @@ export default {
     /** 重置按钮操作 */
     resetQuery() {
       this.resetForm("queryForm");
-	  
+
       this.handleQuery();
     },
     /** 新增按钮操作 */
@@ -282,9 +342,10 @@ export default {
       if (row != undefined) {
         this.form.parentId = row.id;
       }
+      this.nhdyesfgh = '点击选择行政区域'
       this.open = true;
       this.title = "添加部门";
-      
+
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -335,7 +396,146 @@ export default {
           this.getList();
           this.msgSuccess("删除成功");
         })
-    }
+    },
+    // 行政区域
+    mnyesfjers(index){
+      this.loading = true;
+      let pids = {}
+      pids.pid = index
+      listRoleergth(pids).then(response => {
+        // this.cascaderKey = this.cascaderKey + 1
+        if(response.data.length == 0){
+          return
+        }
+      	this.optionsLists = this.handleData(response.data);
+      	this.loading = false;
+        // console.log(this.cascaderKey,8765)
+      });
+    },
+    handleItemChanges(val) {
+      console.log(val,235)
+       let code = val ? val[val.length - 1] : '';  //需请求数据的上级地址的code值
+       let level = val.length + 1;  //需请求第几级地址
+       this.optionsLists = this.handleData(this.optionsLists, code, level);
+       // this.cascaderKey = this.cascaderKey + 1
+    	},
+    handleData(data, val, level) {
+       console.log(data,val,level,7536)
+       for (let i = 0; i < data.length; i++) {
+         if(!data[i].children) {
+           this.$set(data[i], 'children', []);
+         }
+         if(data[i].areaId === val){
+           let vfer = {}
+           vfer.pid = val
+           listRoleergth(vfer).then(res => {
+             // this.cascaderKey = this.cascaderKey + 1
+             if(res.data.length) {
+               console.log(data[i].children,4567)
+               // data[i].children = res.data;
+               this.$set(data[i], 'children', res.data)
+               console.log(data[i].children,45678)
+                // this.nhdyesku = true
+               data[i].children.forEach(ele => {
+                 this.$set(ele, 'children', [])
+               });
+             }else {
+               data[i].children = undefined;
+             }
+           }).catch(err => {
+           });
+         }else {
+           if(data[i].children.length){
+             this.handleData(data[i].children,val,level)
+           }
+         }
+       }
+
+        return data;
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    // 懒加载事件
+    loadNode(node, resolve){
+    	console.log(node)
+    	 if (node.level === 0) {
+         let heyt = {}
+         heyt.pid = 0
+         let pids = {}
+         pids.pid = 0
+    		 listRoleergth(pids).then(response => {
+    		   // this.deptOptions = response.data;
+    		   return resolve(
+    		    // this.handleDatawgs()
+            response.data
+    		   );
+    		   // resolve();
+    		 });
+
+    	}
+    	if (node.level >= 1) { // 点击之后触发
+      console.log(node.key)
+      let pids = {}
+      pids.pid = 0
+    	listRoleergth({pid:node.key}).then(response => {
+    	  // this.deptOptions = response.data;
+    	  return resolve(response.data);
+    	  // resolve(response.data);
+    	});
+
+
+      // for (let i = 0; i < data.length; i++) {
+      //   if(!data[i].children) {
+      //     this.$set(data[i], 'children', []);
+      //   }
+      //   if(data[i].id === val){
+      //     let vfer = {}
+      //     vfer.pid = val
+      //     listRoleergthwg(vfer).then(res => {
+      //       // this.cascaderKey = this.cascaderKey + 1
+      //       if(res.data.length) {
+      //         console.log(data[i].children,4567)
+      //         // data[i].children = res.data;
+      //         this.$set(data[i], 'children', res.data)
+      //         console.log(data[i].children,45678)
+      //          this.nhdyesku = true
+      //         data[i].children.forEach(ele => {
+      //           this.$set(ele, 'children', [])
+      //         });
+      //       }else {
+      //         data[i].children = undefined;
+      //       }
+      //     }).catch(err => {
+      //     });
+      //   }else {
+      //     if(data[i].children.length){
+      //       this.handleDatawgs(data[i].children,val,level)
+      //     }
+      //   }
+      // }
+
+    	                }
+    	  //       if (node.level > 1) return resolve([]);
+    			// if(node.level == 1){
+
+    			// }
+    	// treeselect(node.id).then(response => {
+    	//   // this.deptOptions = response.data;
+    	//   resolve(response.data);
+    	// });
+
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      this.form.areaId = data.areaId
+      this.form.areaName = data.name
+      console.log(data)
+      // this.queryParams.deptId = data.id;
+      // this.getList();
+    },
   }
 };
 </script>

+ 25 - 14
src/views/system/role/index.vue

@@ -12,14 +12,10 @@
         />
       </el-form-item>
       <el-form-item label="权限字符" prop="roleKey">
-        <el-input
-          v-model="queryParams.roleKey"
-          placeholder="请输入权限字符"
-          clearable
-          size="small"
-          style="width: 240px"
-          @keyup.enter.native="handleQuery"
-        />
+        <el-select v-model="queryParams.roleKey" placeholder="请选择权限字符" clearable size="small"style="width: 240px">
+        	<el-option v-for="dict in typeOptions" :key="dict.dictValue" :label="dict.dictLabel" :value="dict.dictValue" />
+        </el-select>
+        <!-- <el-input v-model="form.roleKey" placeholder="请输入权限字符" /> -->
       </el-form-item>
       <el-form-item label="状态" prop="status">
         <el-select
@@ -136,7 +132,7 @@
             type="text"
             icon="el-icon-circle-check"
             @click="handleDataScope(scope.row)"
-            
+
           >数据权限</el-button>
 		  <!-- v-hasPermi="['system:role:edit']" -->
           <el-button
@@ -165,7 +161,10 @@
           <el-input v-model="form.roleName" placeholder="请输入角色名称" />
         </el-form-item>
         <el-form-item label="权限字符" prop="roleKey">
-          <el-input v-model="form.roleKey" placeholder="请输入权限字符" />
+          <el-select v-model="form.roleKey" placeholder="请选择权限字符" clearable style="width: 100%;">
+          	<el-option v-for="dict in typeOptions" :key="dict.dictValue" :label="dict.dictLabel" :value="dict.dictValue" />
+          </el-select>
+          <!-- <el-input v-model="form.roleKey" placeholder="请输入权限字符" /> -->
         </el-form-item>
         <el-form-item label="角色顺序" prop="roleSort">
           <el-input-number v-model="form.roleSort" controls-position="right" :min="0" />
@@ -210,9 +209,16 @@
         <el-form-item label="角色名称">
           <el-input v-model="form.roleName" :disabled="true" />
         </el-form-item>
-        <el-form-item label="权限字符">
-          <el-input v-model="form.roleKey" :disabled="true" />
+
+        <el-form-item label="权限字符" prop="roleKey">
+          <el-select v-model="form.roleKey" placeholder="请选择权限字符" clearable style="width: 100%;">
+          	<el-option v-for="dict in typeOptions" :key="dict.dictValue" :label="dict.dictLabel" :value="dict.dictValue" />
+          </el-select>
+          <!-- <el-input v-model="form.roleKey" placeholder="请输入权限字符" /> -->
         </el-form-item>
+       <!-- <el-form-item label="权限字符">
+          <el-input v-model="form.roleKey" :disabled="true" />
+        </el-form-item> -->
         <el-form-item label="权限范围">
           <el-select v-model="form.dataScope" @change="dataScopeSelectChange">
             <el-option
@@ -249,7 +255,7 @@
 </template>
 
 <script>
-import { listRole, getRole, delRole, addRole, updateRole, exportRole, dataScope, changeRoleStatus } from "@/api/system/role";
+import { listRole, getRole, delRole, addRole, updateRole, exportRole, dataScope, changeRoleStatus,menuTreeselectwc } from "@/api/system/role";
 import { treeselect as menuTreeselect, roleMenuTreeselect } from "@/api/system/menu";
 import { treeselect as deptTreeselect, roleDeptTreeselect } from "@/api/system/dept";
 
@@ -285,6 +291,7 @@ export default {
       dateRange: [],
       // 状态数据字典
       statusOptions: [],
+      typeOptions:[],
       // 数据范围选项
       dataScopeOptions: [
         {
@@ -345,6 +352,9 @@ export default {
     this.getDicts("sys_normal_disable").then(response => {
       this.statusOptions = response.data;
     });
+    this.getDicts('role_key').then(response => {
+    	this.typeOptions = response.data;
+    });
   },
   methods: {
     /** 查询角色列表 */
@@ -358,6 +368,7 @@ export default {
         }
       );
     },
+
     /** 查询菜单树结构 */
     getMenuTreeselect() {
       menuTreeselect().then(response => {
@@ -492,7 +503,7 @@ export default {
     },
     // 树权限(父子联动)
     handleCheckedTreeConnect(value, type) {
-		
+
       if (type == 'menu') {
         this.form.menuCheckStrictly = value ? true: false;
 		console.log(value,this.form.menuCheckStrictly)

+ 372 - 27
src/views/system/user/index.vue

@@ -19,10 +19,10 @@
             :props="defaultProps"
             :expand-on-click-node="false"
             :filter-node-method="filterNode"
-			 node-key="id"
-            ref="tree"
-			:load="loadNode"
-			lazy
+			      node-key="id"
+             ref="tree"
+			      :load="loadNode"
+			      lazy
             @node-click="handleNodeClick"
           />
         </div>
@@ -30,10 +30,10 @@
       <!--用户数据-->
       <el-col :span="20" :xs="24">
         <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-          <el-form-item label="用户名称" prop="userName">
+          <el-form-item label="用户账号" prop="userName">
             <el-input
               v-model="queryParams.userName"
-              placeholder="请输入用户名称"
+              placeholder="请输入用户账号"
               clearable
               size="small"
               style="width: 240px"
@@ -143,8 +143,11 @@
         <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
           <el-table-column type="selection" width="50" align="center" />
           <el-table-column label="用户编号" align="center" key="id" prop="id" v-if="columns[0].visible" />
-          <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
-          <el-table-column label="账号" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
+
+
+          <el-table-column label="用户账号" align="center" key="userName " prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
+          <el-table-column label="用户名称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
+
           <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
           <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
           <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
@@ -157,11 +160,11 @@
               ></el-switch>
             </template>
           </el-table-column>
-          <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
+          <!-- <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
             <template slot-scope="scope">
               <span>{{ parseTime(scope.row.createTime) }}</span>
             </template>
-          </el-table-column>
+          </el-table-column> -->
           <el-table-column
             label="操作"
             align="center"
@@ -209,14 +212,48 @@
     <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="600px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
+
           <el-col :span="12">
-            <el-form-item label="账号" prop="nickName">
-              <el-input v-model="form.nickName" placeholder="请输入账号" />
+            <el-form-item label="用户名称" prop="nickName">
+              <el-input v-model="form.nickName" placeholder="请输入用户名称" />
             </el-form-item>
           </el-col>
+
           <el-col :span="12">
             <el-form-item label="归属部门" prop="deptId">
               <treeselect v-model="form.deptId" :options="deptOptionsyu" :show-count="true" placeholder="请选择归属部门" />
+
+
+              <!-- <el-form-item label="归属部门" prop="deptId"> -->
+              	<!-- <el-input v-model="form.villageTowns" type="textarea" placeholder="请输入内容" /> -->
+              	<!-- <treeselect v-model="form.parentId" :options="deptOptionstwo" :normalizer="normalizer" :flat="true" :maxHeight="150" @select="djieskle" :multiple=true placeholder="点击选择户籍地" /> -->
+              	<!-- <el-cascader
+              		:placeholder="nhdyesfgh"
+              		:options="optionsLists"
+              		separator="/"
+                  v-model="nhyeswdga"
+              		@change="chahe"
+              		:props="optionPropsss"
+              		style="width: 100%;"
+              		ref="myCascader"
+                  @active-item-change="handleItemChanges"
+                  :class="[nhdyesfgh == '点击选择归属部门' ? '' : 'placf']"
+              	></el-cascader> -->
+                <!-- <el-cascader
+                	:placeholder="nhdyesfgh"
+                	:options="optionsList"
+                	:filterable="true"
+                	separator="/"
+                	@change="chahe(index)"
+                	v-model="selected"
+                	:props="optionPropsss"
+                	style="width: 100%;"
+                	ref="myCascader"
+                  @active-item-change="handleItemChange"
+                  :class="[nhdyesfgh == '点击选择居住地址' ? '' : 'placf']"
+                ></el-cascader> -->
+              <!-- </el-form-item> -->
+
             </el-form-item>
           </el-col>
         </el-row>
@@ -233,11 +270,19 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="12">
-            <el-form-item v-if="form.id == undefined" label="用户名称" prop="userName">
-              <el-input v-model="form.userName" placeholder="请输入用户名称" />
+
+          <el-col :span="12" >
+            <el-form-item v-if="form.id == undefined" label="用户账号" prop="userName ">
+              <el-input v-model="form.userName" placeholder="请输入用户账号" />
             </el-form-item>
           </el-col>
+
+         <!-- <el-col :span="12">
+            <el-form-item label="账号" prop="nickName">
+              <el-input v-model="form.nickName" placeholder="请输入账号" />
+            </el-form-item>
+          </el-col> -->
+
           <el-col :span="12">
             <el-form-item v-if="form.id == undefined" label="用户密码" prop="password">
               <el-input v-model="form.password" placeholder="请输入用户密码" type="password" />
@@ -298,7 +343,23 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="24">
+          <el-col :span="12">
+            <el-form-item label="网格">
+             <el-cascader
+             :placeholder="ndhesdweaf"
+             :options="optionsListwg"
+             filterable
+             @change="chahetwoswge"
+             :props="optionPropsssdwg"
+             style="width: 100%;"
+             ref = "cddfr"
+             :key="nhyes"
+             @active-item-change="handleItemChangefrwg"
+             :class="[ndhesdweaf == '点击选择网格' ? '' : 'placf']"
+             ></el-cascader>
+            </el-form-item>
+          </el-col> 
+          <el-col :span="12">
             <el-form-item label="备注">
               <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
             </el-form-item>
@@ -345,7 +406,7 @@
 </template>
 
 <script>
-import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus } from "@/api/system/user";
+import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus,listRoleergthwg,listRoleergth } from "@/api/system/user";
 import { getToken } from "@/utils/auth";
 import { treeselect,treeselectdepts } from "@/api/system/dept";
 import Treeselect from "@riophae/vue-treeselect";
@@ -383,12 +444,14 @@ export default {
       initPassword: undefined,
       // 日期范围
       dateRange: [],
+      nhyes:0,
       // 状态数据字典
       statusOptions: [],
       // 性别状态字典
       sexOptions: [],
       // 岗位选项
       postOptions: [],
+      nhdyesfgh:'点击选择归属部门',
       // 角色选项
       roleOptions: [],
       // 表单参数
@@ -397,6 +460,14 @@ export default {
         children: "children",
         label: "label"
       },
+      ndhesdweaf :'点击选择网格',
+      optionsLists:[],
+      nhyeswdga:[],
+      optionPropsss:{
+        value: 'areaId',
+        label: 'name',
+        checkStrictly: true,
+      },
       // 用户导入参数
       upload: {
         // 是否显示弹出层(用户导入)
@@ -412,6 +483,12 @@ export default {
         // 上传的地址
         url: process.env.VUE_APP_BASE_API + "/system/user/importData"
       },
+      optionsListwg:[],
+      optionPropsssdwg:{
+        value: 'id',
+        label: 'areaName',
+        checkStrictly: true,
+      },
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -436,9 +513,9 @@ export default {
         userName: [
           { required: true, message: "用户名称不能为空", trigger: "blur" }
         ],
-        nickName: [
-          { required: true, message: "账号不能为空", trigger: "blur" }
-        ],
+        // nickName: [
+        //   { required: true, message: "账号不能为空", trigger: "blur" }
+        // ],
         password: [
           { required: true, message: "用户密码不能为空", trigger: "blur" }
         ],
@@ -468,6 +545,8 @@ export default {
   created() {
     this.getList();
     this.getTreeselect();
+    this.mnyesfjeropwg(0)
+    // this.mnyesfjers(0)
     this.getDicts("sys_normal_disable").then(response => {
       this.statusOptions = response.data;
     });
@@ -489,6 +568,16 @@ export default {
         }
       );
     },
+
+    mnyesfjeropwg(index){
+      this.loading = true;
+      let pids = {}
+      pids.pid= index
+      listRoleergthwg(pids).then(response => {
+      	this.optionsListwg = this.handleDatawg(response.data);
+      	this.loading = false;
+      });
+    },
     /** 查询部门下拉树结构 */
     getTreeselect() {
       treeselectdepts().then(response => {
@@ -509,33 +598,192 @@ export default {
 	loadNode(node, resolve){
 		console.log(node.key)
 		 if (node.level === 0) {
+       let heyt = {}
+       heyt.pid = 0
 			 treeselect().then(response => {
 			   // this.deptOptions = response.data;
 			   return resolve(
-			   response.data
+			    // this.handleDatawgs()
+          response.data
 			   );
 			   // resolve();
 			 });
-		          
+
 		}
 		if (node.level >= 1) { // 点击之后触发
+    console.log(node)
 		treeselect({id:node.key}).then(response => {
 		  // this.deptOptions = response.data;
 		  return resolve(response.data);
 		  // resolve(response.data);
 		});
-		                    
+
+
+    // for (let i = 0; i < data.length; i++) {
+    //   if(!data[i].children) {
+    //     this.$set(data[i], 'children', []);
+    //   }
+    //   if(data[i].id === val){
+    //     let vfer = {}
+    //     vfer.pid = val
+    //     listRoleergthwg(vfer).then(res => {
+    //       // this.cascaderKey = this.cascaderKey + 1
+    //       if(res.data.length) {
+    //         console.log(data[i].children,4567)
+    //         // data[i].children = res.data;
+    //         this.$set(data[i], 'children', res.data)
+    //         console.log(data[i].children,45678)
+    //          this.nhdyesku = true
+    //         data[i].children.forEach(ele => {
+    //           this.$set(ele, 'children', [])
+    //         });
+    //       }else {
+    //         data[i].children = undefined;
+    //       }
+    //     }).catch(err => {
+    //     });
+    //   }else {
+    //     if(data[i].children.length){
+    //       this.handleDatawgs(data[i].children,val,level)
+    //     }
+    //   }
+    // }
+
 		                }
 		  //       if (node.level > 1) return resolve([]);
 				// if(node.level == 1){
-					
+
 				// }
 		// treeselect(node.id).then(response => {
 		//   // this.deptOptions = response.data;
 		//   resolve(response.data);
 		// });
-		 
+
 	},
+  chahe(data) {
+  			console.log(data);
+  			// let labelValue = this.$refs['myCascader'].inputValue
+  			// console.log(labelValue)
+  			console.log(this.$refs['myCascader'])
+  			// this.form.provinceId = data[1];
+  			// this.form.cityId = data[2];
+  			// this.form.regionId = data[3];
+  //    this.form.villageTownsId = data[3];
+  //    this.form.villageId = data[3];
+  let nhdye = []
+  nhdye = this.$refs['myCascader'].getCheckedNodes()[0].pathLabels
+     if(data.length == 1){
+       this.form.provinceId = data[ data.length - 1];
+       this.form.province = nhdye[ data.length - 1];
+     }else if(data.length == 2){
+       this.form.cityId = data[ data.length - 1];
+       this.form.city = nhdye[ data.length - 1];
+     }else if(data.length == 3){
+       this.form.regionId = data[ data.length - 1];
+       this.form.region = nhdye[ data.length - 1];
+     }else if(data.length == 4){
+       this.form.villageTownsId = data[ data.length - 1];
+       this.form.villageTowns = nhdye[ data.length - 1];
+     }else if(data.length == 5){
+       this.form.villageId = data[ data.length - 1];
+       this.form.village = nhdye[ data.length - 1];
+     }
+     this.form.deptId = data[ data.length - 1];
+
+  			// if (this.form.villageTowns !== undefined) {
+  			// 	this.hsuej = this.form.villageTowns;
+  			// 	if (this.form.village !== undefined) {
+  			// 		this.hsuej = this.form.villageTowns + this.form.village;
+  			// 		if (this.form.villagerGroup !== undefined) {
+  			// 			this.hsuej = this.form.villageTowns + this.form.village + this.form.villagerGroup;
+  			// 		}
+  			// 	}
+  			// }
+  			this.form.domicile = '';
+     console.log(this.form)
+
+     // if(this.jdourdjoaj == true){
+     //   //新增
+     //   this.form.nowIn =  this.hsuej
+
+     // }else{
+     //    this.form.nowIn !=  this.hsuej
+     // }
+  		},
+
+      handleItemChange(val) {
+        console.log(val,235)
+         let code = val ? val[val.length - 1] : '';  //需请求数据的上级地址的code值
+         let level = val.length + 1;  //需请求第几级地址
+         console.log(this.nameutaiL,2345)
+         console.log(this.form.czrkJzdzList,12365)
+         this.$set(this.form.czrkJzdzList[this.nameutaiL],'optiodne',this.handleData(this.form.czrkJzdzList[this.nameutaiL].optiodne, code, level))
+       },
+
+
+       handleItemChangefr(val) {
+         console.log(val,235)
+          let code = val ? val[val.length - 1] : '';  //需请求数据的上级地址的code值
+          let level = val.length + 1;  //需请求第几级地址
+          this.optionsList = this.handleData(this.optionsList, code, level);
+       	},
+        mnyesfjers(index){
+          this.loading = true;
+          let pids = {}
+          pids.pid = index
+          listRoleergth(pids).then(response => {
+            // this.cascaderKey = this.cascaderKey + 1
+            if(response.data.length == 0){
+              return
+            }
+          	this.optionsLists = this.handleData(response.data);
+          	this.loading = false;
+            console.log(this.cascaderKey,8765)
+          });
+        },
+
+       handleItemChanges(val) {
+         console.log(val,235)
+          let code = val ? val[val.length - 1] : '';  //需请求数据的上级地址的code值
+          let level = val.length + 1;  //需请求第几级地址
+          this.optionsLists = this.handleData(this.optionsLists, code, level);
+          // this.cascaderKey = this.cascaderKey + 1
+       	},
+
+      	handleData(data, val, level) {
+         console.log(data,val,level,7536)
+         for (let i = 0; i < data.length; i++) {
+           if(!data[i].children) {
+             this.$set(data[i], 'children', []);
+           }
+           if(data[i].areaId === val){
+             let vfer = {}
+             vfer.pid = val
+             listRoleergth(vfer).then(res => {
+               // this.cascaderKey = this.cascaderKey + 1
+               if(res.data.length) {
+                 console.log(data[i].children,4567)
+                 // data[i].children = res.data;
+                 this.$set(data[i], 'children', res.data)
+                 console.log(data[i].children,45678)
+                  // this.nhdyesku = true
+                 data[i].children.forEach(ele => {
+                   this.$set(ele, 'children', [])
+                 });
+               }else {
+                 data[i].children = undefined;
+               }
+             }).catch(err => {
+             });
+           }else {
+             if(data[i].children.length){
+               this.handleData(data[i].children,val,level)
+             }
+           }
+         }
+
+          return data;
+      },
     // 用户状态修改
     handleStatusChange(row) {
       let text = row.status === "0" ? "启用" : "停用";
@@ -567,10 +815,13 @@ export default {
         phonenumber: undefined,
         email: undefined,
         sex: undefined,
+        gridId:null,
         status: "0",
+        gridId:null,
         remark: undefined,
         postIds: [],
-        roleIds: []
+        roleIds: [],
+        gridId:null
       };
       this.resetForm("form");
     },
@@ -601,7 +852,9 @@ export default {
         this.postOptions = response.posts;
         this.roleOptions = response.roles;
         this.open = true;
+        this.nhyes = this.nhyes + 1
         this.title = "添加用户";
+        this.ndhesdweaf = '点击选择网格'
         this.form.password = this.initPassword;
       });
     },
@@ -616,6 +869,11 @@ export default {
         this.roleOptions = response.roles;
         this.form.postIds = response.postIds;
         this.form.roleIds = response.roleIds;
+        if(response.data.gridName !==null){
+          this.ndhesdweaf = response.data.gridName
+        }else{
+          this.ndhesdweaf = '点击选择网格'
+        }
         this.open = true;
         this.title = "修改用户";
         this.form.password = "";
@@ -698,7 +956,94 @@ export default {
     // 提交上传文件
     submitFileForm() {
       this.$refs.upload.submit();
-    }
+    },
+    chahetwoswge(data){
+      console.log(data)
+      this.form.gridId = data[data.length - 1]
+      console.log(this.form.gridId)
+
+    },
+
+    handleDatawgs(data, val, level) {
+       console.log(data,val,level,7536)
+       for (let i = 0; i < data.length; i++) {
+         if(!data[i].children) {
+           this.$set(data[i], 'children', []);
+         }
+         if(data[i].id === val){
+           let vfer = {}
+           vfer.pid = val
+           listRoleergthwg(vfer).then(res => {
+             // this.cascaderKey = this.cascaderKey + 1
+             if(res.data.length) {
+               console.log(data[i].children,4567)
+               // data[i].children = res.data;
+               this.$set(data[i], 'children', res.data)
+               console.log(data[i].children,45678)
+                this.nhdyesku = true
+               data[i].children.forEach(ele => {
+                 this.$set(ele, 'children', [])
+               });
+             }else {
+               data[i].children = undefined;
+             }
+           }).catch(err => {
+           });
+         }else {
+           if(data[i].children.length){
+             this.handleDatawgs(data[i].children,val,level)
+           }
+         }
+       }
+
+        return data;
+    },
+
+
+
+
+    handleItemChangefrwg(val) {
+      console.log(val,235)
+       let code = val ? val[val.length - 1] : '';  //需请求数据的上级地址的code值
+       let level = val.length + 1;  //需请求第几级地址
+       this.optionsListwg = this.handleDatawg(this.optionsListwg, code, level);
+       this.cascaderKey = this.cascaderKey + 1
+    	},
+
+    handleDatawg(data, val, level) {
+       console.log(data,val,level,7536)
+       for (let i = 0; i < data.length; i++) {
+         if(!data[i].children) {
+           this.$set(data[i], 'children', []);
+         }
+         if(data[i].id === val){
+           let vfer = {}
+           vfer.pid = val
+           listRoleergthwg(vfer).then(res => {
+             // this.cascaderKey = this.cascaderKey + 1
+             if(res.data.length) {
+               console.log(data[i].children,4567)
+               // data[i].children = res.data;
+               this.$set(data[i], 'children', res.data)
+               console.log(data[i].children,45678)
+                this.nhdyesku = true
+               data[i].children.forEach(ele => {
+                 this.$set(ele, 'children', [])
+               });
+             }else {
+               data[i].children = undefined;
+             }
+           }).catch(err => {
+           });
+         }else {
+           if(data[i].children.length){
+             this.handleDatawg(data[i].children,val,level)
+           }
+         }
+       }
+
+        return data;
+    },
   }
 };
 </script>

+ 1 - 0
src/views/system/user/profile/index.vue

@@ -77,6 +77,7 @@ export default {
   },
   created() {
     this.getUser();
+    console.log(this.$route.params.id,85)
   },
   methods: {
     getUser() {

+ 1 - 1
vue.config.js

@@ -6,7 +6,7 @@ function resolve(dir) {
   return path.join(__dirname, dir)
 }
 
-const name = defaultSettings.title || '潜山市防疫数据平台' // 标题
+const name = defaultSettings.title || '潜山市人口信息平台' // 标题
 
 const port = process.env.port || process.env.npm_config_port || 80 // 端口