From ccf69ee82f77a2e67a565cec02f95e64324a283f Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 15 五月 2024 09:16:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 admin/src/views/index.vue |  428 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 359 insertions(+), 69 deletions(-)

diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index 5bb54a6..2d28484 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -1,33 +1,268 @@
 <template>
   <div class="home">
-    <div class="wrap">
-      <h2>娆㈣繋浣跨敤浼婂▋鏋侀�熷紑鍙戞鏋�</h2>
-      <p>鎮ㄤ娇鐢ㄧ殑姝ゅ寮�婧愭鏋舵病鏈変换浣曠増鏉冮棶棰橈紝鍙涔犲彲鍟嗙敤锛岃鏀惧績浣跨敤锛�</p>
-      <p>浼婂▋鑷村姏浜庢墦閫犵畝娲併�佸悎鐞嗐�侀珮鏁堢殑寮�鍙戜綋楠岋紝涓烘鎴戜滑灏嗕笉鏂崌绾э紝鎰熻阿鎮ㄧ殑鏀寔锛�</p>
-      <p style="margin-top: 12px;">
-        <a href="https://gitee.com/coderd-repos/eva" target="_blank">GITEE</a>
-        <a href="https://github.com/coderd-repos/eva" target="_blank">GITHUB</a>
-      </p>
-      <div class="guide">
-        <a href="http://eva.adjustrd.com" target="_blank">鍓嶅線瀹樼綉</a>
-        <a href="http://coderd.adjustrd.com/template/308/default" target="_blank">鍓嶅線CodeRd</a>
+    <div class="home_total">
+      <div class="home_total_head">鍦ㄥ巶浜哄憳鎬昏</div>
+      <div class="home_total_list">
+        <div class="home_total_list_item a">
+          <span>{{head && head.workerCount ? head.workerCount : 0}}</span>
+          <span>鍐呴儴鍛樺伐</span>
+        </div>
+        <div class="home_total_list_item b">
+          <span>{{head && head.visitorCount ? head.visitorCount : 0}}</span>
+          <span>璁垮</span>
+        </div>
+        <div class="home_total_list_item c">
+          <span>{{head && head.lwCount ? head.lwCount : 0}}</span>
+          <span>鍔冲姟浜哄憳</span>
+        </div>
+        <div class="home_total_list_item d">
+          <span>{{head && head.presenceCarCount ? head.presenceCarCount : 0}}</span>
+          <span>鍦ㄥ満杞﹁締</span>
+        </div>
+        <div class="home_total_list_item e">
+          <span>{{head && head.longCarCount ? head.longCarCount : 0}}</span>
+          <span>闀挎湡杞﹁締</span>
+        </div>
+        <div class="home_total_list_item f">
+          <span>{{head && head.visitorCarCount ? head.visitorCarCount : 0}}</span>
+          <span>棰勭害杞﹁締</span>
+        </div>
+        <div class="home_total_list_item g">
+          <span>{{head && head.supplierCount ? head.supplierCount : 0}}</span>
+          <span>渚涘簲鍟�</span>
+        </div>
       </div>
-      <img src="@/assets/images/qq.png">
-      <p>浣犲彲浠ユ壂鐮佸姞鍏ョ兢鑱婁互鑾峰緱鎶�鏈敮鎸�</p>
-      <div class="award">
-        <h4>婵�鍔变綔鑰呭仛寰楁洿濂�</h4>
-        <img src="@/assets/images/alipay.jpeg">
-        <img src="@/assets/images/wxpay.jpeg">
+    </div>
+    <div class="home_charts">
+      <div class="home_charts_item">
+        <div class="home_charts_item_label">鍦ㄥ巶浜哄憳鍗犳瘮</div>
+        <div class="home_charts_item_charts" id="chart1"></div>
+      </div>
+      <div class="home_charts_item">
+        <div class="home_charts_item_label">鍔冲姟浜哄憳鍒嗗竷鎬昏</div>
+        <div class="home_charts_item_charts" id="chart2"></div>
+      </div>
+    </div>
+    <div class="home_table">
+      <div class="home_table_head">瓒呮椂棰勮浜哄憳({{total}})</div>
+      <div class="home_table_box">
+        <el-table
+          :data="list"
+          :header-cell-style="{background: '#dcdde2', color: 'rgb(51, 51, 51)'}"
+          border
+          style="width: 100%">
+          <el-table-column
+            prop="name"
+            label="璁垮濮撳悕">
+          </el-table-column>
+          <el-table-column
+            prop="phone"
+            label="璁垮鐢佃瘽">
+          </el-table-column>
+          <el-table-column
+            prop="companyName"
+            label="璁垮鍏徃">
+          </el-table-column>
+          <el-table-column
+            label="浜哄憳绫诲瀷">
+            <template slot-scope="{row}">
+              <span v-if="row.type === 0">鍔冲姟璁垮</span>
+              <span v-if="row.type === 1">鏅�氳瀹�</span>
+              <span v-if="row.type === 2">鍐呴儴浜哄憳</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="outDate"
+            label="鎺堟潈鍒版湡鏃堕棿">
+          </el-table-column>
+          <el-table-column
+            label="鐘舵��">
+            <template slot-scope="{row}">
+              <span v-if="row.outStatus === 0">鏈秴鏃�</span>
+              <span style="color: red;" v-if="row.outStatus === 1">宸茶秴鏃�</span>
+              <span v-if="row.outStatus === 2">鍗冲皢瓒呮椂</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="address"
+            label="澶勭悊"
+            width="80">
+            <template slot-scope="scope">
+              <el-button type="text" @click="departure(scope.row.id)" v-if="scope.row.outStatus === 1">绂诲巶</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-pagination
+          style="margin-top: 20px;"
+          @current-change="handleCurrentChange"
+          :current-page="page"
+          :page-size="10"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+        </el-pagination>
       </div>
     </div>
   </div>
 </template>
 
 <script>
+import * as echarts from 'echarts'
+import { body, head, timeoutPage, level } from '@/api/business/staging'
 export default {
   name: 'Index',
   data () {
-    return {}
+    return {
+      head: null,
+      list: [],
+      total: 0,
+      data1: [],
+      data2: [[],[]],
+      page: 1
+    }
+  },
+  created () {
+    this.getHeader()
+    this.getData()
+  },
+  mounted () {
+    // this.getcharts2()
+  },
+  methods: {
+    departure(id) {
+      this.$confirm('纭畾绂诲満鍚�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        level(id)
+          .then(res => {
+            this.page = 1
+            this.getData()
+          })
+      }).catch(() => {
+
+      });
+    },
+    getData() {
+      timeoutPage({
+        capacity: 10,
+        page: this.page,
+        model: {}
+      }).then(res => {
+        this.list = res.records
+        this.total = res.total
+      })
+    },
+    getHeader() {
+      head().then(res => {
+        this.head = res
+      })
+      body().then(res => {
+        this.data1 = res.retentionUsers.map(item => {
+          let name = ''
+          if (item.memberType === 0) {
+            name = '鍔冲姟璁垮'
+          } else if (item.memberType === 1) {
+            name = '鏅�氳瀹�'
+          } else if (item.memberType === 2) {
+            name = '鍐呴儴鍛樺伐'
+          }
+          return {
+            value: item.memberCount,
+            name
+          }
+        })
+        let arr1 = res.companyUsers.map(item => item.companyName)
+        let arr2 = res.companyUsers.map(item => item.memberCount)
+        if (arr1.length > 0) {
+          this.data2 = [arr1, arr2]
+          this.getcharts2()
+        }
+        this.getcharts1()
+      })
+    },
+    handleCurrentChange (page) {
+      this.page = page
+      this.getData()
+    },
+    getcharts1 () {
+      const myChart = echarts.init(document.getElementById('chart1'))
+      // 缁樺埗鍥捐〃
+      myChart.setOption({
+        tooltip: {
+          trigger: 'item'
+        },
+        grid: {
+          bottom: '5%',
+          top: '5%'
+        },
+        legend: {
+          bottom: '0%',
+          left: 'center',
+          icon: 'circle'
+        },
+        series: [
+          {
+            type: 'pie',
+            radius: ['40%', '70%'],
+            label: {
+              formatter: '{b} {d}%'
+            },
+            data: this.data1,
+            itemStyle: {
+              normal: {
+                color: function (colors) {
+                  var colorList = [
+                    '#fc8251',
+                    '#5470c6',
+                    '#91cd77'
+                  ]
+                  return colorList[colors.dataIndex]
+                }
+              }
+            },
+            emphasis: {
+              itemStyle: {
+                shadowBlur: 10,
+                shadowOffsetX: 0,
+                shadowColor: 'rgba(0, 0, 0, 0.5)'
+              }
+            }
+          }
+        ]
+      })
+    },
+    getcharts2 () {
+      const myChart = echarts.init(document.getElementById('chart2'))
+      myChart.setOption({
+        tooltip: {
+          trigger: 'item'
+        },
+        grid: {
+          bottom: '5%',
+          top: '5%'
+        },
+        xAxis: {
+          max: 'dataMax'
+        },
+        yAxis: {
+          type: 'category',
+          data: this.data2[0]
+        },
+        series: [
+          {
+            realtimeSort: true,
+            type: 'bar',
+            data: this.data2[1],
+            itemStyle: {
+              normal: {
+                color: '#fc8251'
+              }
+            }
+          }
+        ]
+      })
+    }
   }
 }
 </script>
@@ -35,63 +270,118 @@
 <style scoped lang="scss">
 @import "@/assets/style/variables.scss";
 .home {
-  text-align: center;
-  color: #777;
-  .wrap {
-    margin-top: 80px;
-    img {
-      width: 240px;
+  width: 100%;
+  .home_table {
+    width: 100%;
+    padding: 20px;
+    box-sizing: border-box;
+    background: #ffffff;
+    margin-top: 20px;
+    .home_table_head {
+      font-size: 16px;
+      font-weight: 600;
+      color: black;
+    }
+    .home_table_box {
+      width: 100%;
+      margin-top: 15px;
     }
   }
-  h2 {
-    font-size: 32px;
-    color: #555;
-    margin-bottom: 20px;
-  }
-  p {
-    line-height: 24px;
-    margin: 0;
-  }
-  .start-up {
-    margin-top: 8px;
-  }
-  .guide {
-    margin: 30px 0 40px 0;
+  .home_charts {
+    width: 100%;
+    margin-top: 20px;
     display: flex;
-    justify-content: center;
-    a {
-      margin-right: 12px;
-      padding: 12px 40px;
-      border-radius: 30px;
-      background: $primary-color;
-      color: #fff;
-      text-decoration: none;
+    align-items: center;
+    justify-content: space-between;
+    .home_charts_item {
+      padding: 20px;
+      box-sizing: border-box;
+      flex: 1;
+      display: flex;
+      flex-direction: column;
+      margin-right: 20px;
+      background: #ffffff;
+      .home_charts_item_label {
+        font-size: 16px;
+        font-weight: 600;
+        color: black;
+      }
+      .home_charts_item_charts {
+        width: 100%;
+        height: 300px;
+      }
+      &:last-child {
+        margin: 0 !important;
+      }
     }
   }
-  em,a {
-    font-style: normal;
-    font-weight: bold;
-    margin: 0 3px;
-    color: $primary-color;
-  }
-  .award {
-    position: absolute;
-    right: 20px;
-    bottom: 60px;
-    display: flex;
-    flex-direction: column;
-    text-align: left;
-    padding: 12px;
-    border: 1px solid #eee;
-    box-shadow: -1px 1px 10px #ccc;
-    h4 {
-      font-weight: bold;
-      margin-bottom: 8px;
+  .home_total {
+    width: 100%;
+    background: #ffffff;
+    margin-top: 20px;
+    .home_total_head {
+      width: 100%;
+      font-size: 16px;
+      font-weight: 600;
+      color: black;
+      padding: 10px 20px;
+      box-sizing: border-box;
+      border-bottom: 1px solid #ececec;
     }
-    img {
-      width: 160px;
-      margin-bottom: 20px;
-      transition: opacity ease .3s;
+    .home_total_list {
+      width: 100%;
+      padding: 20px;
+      box-sizing: border-box;
+      display: flex;
+      align-items: center;
+      .a {
+        border-left: 5px solid rgba(129, 211, 248, 1) !important;
+      }
+      .b {
+        border-left: 5px solid rgba(236, 128, 141, 1) !important;
+      }
+      .c {
+        border-left: 5px solid rgba(250, 205, 145, 1) !important;
+      }
+      .d {
+        border-left: 5px solid rgba(245, 154, 35, 1) !important;
+      }
+      .e {
+        border-left: 5px solid rgba(128, 128, 255, 1) !important;
+      }
+      .f {
+        border-left: 5px solid rgba(202, 249, 130, 1) !important;
+      }
+      .g {
+        border-left: 5px solid rgba(194, 128, 255, 1) !important;
+      }
+      .home_total_list_item {
+        flex: 1;
+        display: flex;
+        align-items: center;
+        flex-direction: column;
+        justify-content: center;
+        height: 80px;
+        border-radius: 5px;
+        border: 1px solid #ececec;
+        margin-right: 15px;
+        &:last-child {
+          margin: 0 !important;
+        }
+        span {
+          &:first-child {
+            font-weight: 500;
+            font-size: 24px;
+            color: black;
+          }
+          &:last-child {
+            font-weight: 400;
+            font-size: 14px;
+            color: #666666;
+            margin-top: 2px;
+          }
+        }
+      }
     }
   }
 }

--
Gitblit v1.9.3