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