From 2235a2270096c377295826929ef1fcd90b1d0c46 Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期一, 13 一月 2025 09:27:40 +0800 Subject: [PATCH] 页面 --- admin/src/views/index.vue | 1195 ++++++++++------------------------------------------------ 1 files changed, 216 insertions(+), 979 deletions(-) diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue index 2ae93cc..0e87c1c 100644 --- a/admin/src/views/index.vue +++ b/admin/src/views/index.vue @@ -1,1021 +1,258 @@ <template> - <div class="main_home"> - <div class="home_header"> - <div class="mb10 fs17">涓嬪崍濂斤紝{{ userInfo.realname }}</div> - <div class="fs13"> - 浠婂ぉ鏄� {{ nowDate }} {{ nowWeek }}锛屾杩庤闂櫤鎱х墿娴佸洯鍖哄畨娑堜竴浣撳寲绯荤粺 + <div class="main"> + <div class="main_left"> + <div class="main_left_head"> + <div class="head_item"> + <div class="head_item_left"> + <span>寰呭姙宸ュ崟</span> + <span>12</span> + <span>鏌ョ湅鏇村</span> + </div> + <img class="head_item_icon" src="@/assets/indexIcon/ic_daibangongdan@2x.png" /> + </div> + <div class="head_item"> + <div class="head_item_left"> + <span>寰呭贰妫�</span> + <span>12</span> + <span>鏌ョ湅鏇村</span> + </div> + <img class="head_item_icon" src="@/assets/indexIcon/ic_daixuncha@2x.png" /> + </div> + <div class="head_item"> + <div class="head_item_left"> + <span>寰呯洏鐐�</span> + <span>12</span> + <span>鏌ョ湅鏇村</span> + </div> + <img class="head_item_icon" src="@/assets/indexIcon/ic_daipandian@2x.png" /> + </div> </div> - </div> - <div class="main"> - <div class="app_content"> - <div class="static_card"> - <div class="card"> - <div class="header"> - <div class="left"> - <div class="fs15">浠婃棩鍦ㄥ洯浜烘暟(浜�)</div> - <div class="num">{{ headerData.todayInParkUserNum }}</div> - </div> - <img src="@/assets/icons/home_icon1.png" alt="" /> - </div> - <div class="content"> - <div>鍏ュ洯浜烘(浜�)锛歿{ headerData.todayInUserNum }}</div> - <div>鍑哄洯浜烘(浜�)锛歿{ headerData.todayOutUserNum }}</div> - </div> - </div> - <div class="card"> - <div class="header"> - <div class="left"> - <div class="fs15">鍦ㄥ洯璁垮鏁�(浜�)</div> - <div class="num">{{ headerData.inParkVisitUserNum }}</div> - </div> - <img src="@/assets/icons/home_icon2.png" alt="" /> - </div> - <div class="content"> - <div>璁垮浜烘(浜�)锛歿{ headerData.visitUserNum }}</div> - <div>绛剧浜烘(浜�)锛歿{ headerData.signLevelNum }}</div> - </div> - </div> - <div class="card"> - <div class="header"> - <div class="left"> - <div class="fs15">鍦ㄥ洯闀挎湡鐩稿叧鏂规暟(浜�)</div> - <div class="num">{{ headerData.inParkLwUserNum }}</div> - </div> - <img src="@/assets/icons/home_icon3.png" alt="" /> - </div> - <div class="content"> - <div>鍏ュ洯浜烘(浜�)锛歿{ headerData.lwUserInNum }}</div> - <div>鍑哄洯浜烘(浜�)锛歿{ headerData.lwUserOutNum }}</div> - </div> - </div> - <div class="card"> - <div class="header"> - <div class="left"> - <div class="fs15">浠婃棩鍦ㄥ洯杞﹁締(杈�)</div> - <div class="num">{{ headerData.todayInParkCarNum }}</div> - </div> - <img src="@/assets/icons/home_icon4.png" alt="" /> - </div> - <div class="content"> - <div>鍏ュ洯杞︽(杈�)锛歿{ headerData.todayInCarNum }}</div> - <div>鍑哄洯杞︽(杈�)锛歿{ headerData.todayOutCarNum }}</div> - </div> + <div class="main_left_menu"> + <div class="main_left_menu_title"> + <span>甯哥敤鍔熻兘</span> + <div class="main_left_menu_title_edit"> + <img src="@/assets/indexIcon/ic_daibangongdan@2x.png" /> + <span>鑷畾涔夊姛鑳�</span> </div> </div> - <div class="funcs"> - <div class="home_title">甯哥敤鍔熻兘</div> - <div class="list"> - <div v-for="item in funcList" @click="funcClick(item)" :key="item.name" class="item"> - <img class="mb10" :src="item.url" alt="" /> - <div>{{ item.name }}</div> + <div class="main_left_menu_list"> + <div class="list_item" v-for="(item, index) in menu" :key="index"> + <div class="list_item_left"> + <img :src="item.icon" /> + <span>{{item.name}}</span> </div> - </div> - </div> - <div class="static_wrap"> - <div class="df mb10"> - <div class="wrap static1"> - <div class="header"> - <div class="home_title">鍦ㄥ満浜哄憳鍗犳瘮</div> - <!-- <div class="df_ac more"> - 鏇村<i class="el-icon-arrow-right"></i> - </div> --> - </div> - <div class="content"> - <div class="echart_wrap"> - <div class="pie_text"> - <div class="fs13">鎬绘暟</div> - <div class="fs15"><strong>{{ headerData.todayInParkUserNum }}</strong></div> - </div> - <div class="echart" id="echart1"></div> - </div> - <div class="list"> - <div class="item" v-for="item, i in manningRatio" :key="i"> - <div :style="{ background: colors[i] }" class="icon"></div> - <div class="text">{{ item.name }}</div> - <div class="num">{{ item.value }}</div> - </div> - </div> - </div> - </div> - <div class="wrap static2"> - <div class="header"> - <div class="home_title">闀挎湡鐩稿叧鏂瑰垎甯�</div> - <!-- <div class="df_ac more"> - 鏇村<i class="el-icon-arrow-right"></i> - </div> --> - </div> - <div class="echart" id="echart2"></div> - </div> - </div> - <div class="df"> - <div class="wrap static3"> - <div class="header"> - <div class="home_title">7鏃ヨ瀹㈢粺璁�</div> - <!-- <div class="df_ac more"> - 鏇村<i class="el-icon-arrow-right"></i> - </div> --> - </div> - <div class="echart" id="echart3"></div> - </div> - <div class="wrap static4"> - <div class="header"> - <div class="home_title">7鏃ヨ溅杈嗙粺璁�</div> - <!-- <div class="df_ac more"> - 鏇村<i class="el-icon-arrow-right"></i> - </div> --> - </div> - <div class="echart" id="echart4"></div> - </div> + <i class="el-icon-arrow-right"></i> </div> </div> </div> - <div class="app_side"> - <div class="task"> - <div class="header df_sb"> - <div class="home_title df"> - <span>寰呭姙浜嬮」</span> - <span class="num" v-if="taskTotal">{{ taskTotal }}</span> - </div> - <div class="df_ac more" @click="jumpPage('/task/index')"> - 鏇村<i class="el-icon-arrow-right"></i> - </div> - </div> - <div class="list"> - <div class="item" v-for="item in taskList" :key="item.id"> - <div class="content"> - <div class="title">{{ item.title }}</div> - <div class="time">{{ item.createDate }}</div> - </div> - <div class="btn" v-permissions="['business:staging:query']" @click="handleDetail(item)">澶勭悊</div> - </div> - <div v-if="taskList.length == 0" class="empty"> - <img src="@/assets/images/default_homeimg.png" alt=""> - </div> - </div> - </div> - <div class="warnning"> - <div class="header df_sb"> - <div class="home_title df"> - <span>瓒呮椂棰勮</span> - <span class="num" v-if="warningTotal">{{ warningTotal }}</span> - </div> - <div class="df_ac more" @click="jumpPage('/business/strandedPersonnel')"> - 鏇村<i class="el-icon-arrow-right"></i> - </div> - </div> - <div class="list"> - <div class="item" v-for="item in warningList" :key="item.id"> - <div class="name_wrap df_sb"> - <div class="name">{{ item.name }}</div> - <div class="identity">璁垮</div> - </div> - <div class="line">鑱旂郴鐢佃瘽锛歿{ item.phone }}</div> - <div class="line">璁垮鍏徃锛歿{ item.companyName }}</div> - <div class="auth df_sb"> - <div class="time">鎺堟潈鏈熼檺锛歿{ item.endtime }}</div> - <div class="btn" @click="departure(item.id)">绂诲満</div> - </div> - </div> - </div> - <div v-if="warningList.length == 0" class="empty"> - <img src="@/assets/images/default_homeimg.png" alt=""> - </div> - </div> + </div> + <div class="main_right"> + <div class="main_right_title">鏃ョ▼</div> + <div class="main_right_search"> + <el-select v-model="value" style="width: 150px; margin-right: 15px;" placeholder="璇烽�夋嫨"> + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + <el-select v-model="value" style="width: 150px;" placeholder="璇烽�夋嫨"> + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> </div> + </div> </div> </template> <script> -import dayjs from 'dayjs' -import * as echarts from 'echarts' -import { weeks } from '@/utils/config' -import { - getWorkbenchData, - getAppHeaderNav -} from '@/api' -import { level } from '@/api/business/visits' -const colors = ['#52a4f7', '#7678f7', '#5fc6d5'] export default { data() { return { - colors, - nowDate: '', - nowWeek: '', - headerData: {}, - staticData: {}, - manningRatio: [], - taskList: [], - taskTotal: 0, - warningList: [], - warningTotal: 0, - funcList: [ - { name: '璁垮鎶ュ', path: '', url: require('@/assets/icons/home_func1.png'), path: '/business/reportRecord' }, - { name: '闅愭偅闅忔墜鎷�', path: '', url: require('@/assets/icons/home_func2.png'), path: '/operation/danger/record' }, - { name: '棰勭害浼氳瀹�', path: '', url: require('@/assets/icons/home_func3.png'), path: '/meeting/bookings' }, - { name: '鑰冨嫟宸ヤ綔鍙�', path: '', url: require('@/assets/icons/home_func4.png') } + menu: [ + { name: '鎴挎�佺鐞�', icon: require('@/assets/indexIcon/ic_fangtaiguanli@2x.png') }, + { name: '宸ュ崟鍒楄〃', icon: require('@/assets/indexIcon/ic_gongdanliebiao@2x.png') }, + { name: '闂涓婃姤', icon: require('@/assets/indexIcon/ic_wentishangbao@2x.png') }, + { name: '鏂板缓宸ュ崟', icon: require('@/assets/indexIcon/ic_xinjiangongdan@2x.png') }, + { name: '璁惧绠$悊', icon: require('@/assets/indexIcon/ic_shebeiguanli@2x.png') }, + { name: '宸℃浠诲姟', icon: require('@/assets/indexIcon/ic_xunjianrenwu@2x.png') }, + { name: '鍚堝悓鍒楄〃', icon: require('@/assets/indexIcon/ic_hetongliebiao@2x.png') }, + { name: '搴撳瓨鏌ヨ', icon: require('@/assets/indexIcon/ic_kucunchaxun@2x.png') }, + { name: '璐﹀崟鍒楄〃', icon: require('@/assets/indexIcon/ic_zhangdanliebiao@2x.png') }, + { name: '鏂板鍏ュ簱鍗�', icon: require('@/assets/indexIcon/ic_xinzengruku@2x.png') }, + { name: '鏂板鍑哄簱鍗�', icon: require('@/assets/indexIcon/ic_xinzengchuku@2x.png') }, + { name: '璧勪骇娓呭崟', icon: require('@/assets/indexIcon/ic_zichan@2x.png') }, ], - isShowDetail: false, - isShowReport: false, - isShowDanger: false, - isShowDriver: false, + options: [], + value: '' } - }, - computed: { - userInfo() { - return this.$store.state.userInfo - } - }, - created() { - // this.updateDate() - // setInterval(() => { - // this.updateDate() - // }, 1000 * 60 * 60) - }, - mounted() { - // this.initData() }, methods: { - SubSuccess(str) { - this[str] = false - this.getTaskList() - }, - funcClick(item) { - if (item.name == '鑰冨嫟宸ヤ綔鍙�') { - getAppHeaderNav(4).then(res => { - window.open(res, "_blank") - return - }) - } - this.$router.push(item.path) - }, - updateDate() { - this.nowDate = dayjs().format('YYYY骞碝鏈圖鏃�') - this.nowWeek = weeks[new Date().getDay()] - }, - initData() { - this.getWorkHead() - this.getWorkBody() - this.getTaskList() - this.getWarningList() - }, - getWarningList() { - getWorkbenchData({ queryType: 4 }).then(res => { - this.warningList = res.timeOutVisitList || [] - this.warningTotal = res.timeOutVisitNum || 0 - }) - }, - getTaskList() { - getWorkbenchData({ queryType: 3 }).then(res => { - this.taskList = res.noticesList || [] - this.taskTotal = res.noticesNum || 0 - }) - }, - getWorkBody() { - getWorkbenchData({ queryType: 2 }).then(res => { - this.staticData = res || {} - this.initEchart2() - this.initEchart3() - this.initEchart4() - }) - }, - getWorkHead() { - getWorkbenchData({ queryType: 1 }).then(res => { - this.headerData = res || {} - let arr = [] - arr.push({ name: '璁垮', value: this.headerData.inParkVisitUserNum }) - arr.push({ name: '鍐呴儴鍛樺伐', value: this.headerData.todayInParkUserNum - this.headerData.inParkLwUserNum - this.headerData.inParkVisitUserNum }) - arr.push({ name: '闀挎湡鐩稿叧鏂�', value: this.headerData.inParkLwUserNum }) - arr.sort((a, b) => b.value - a.value) - this.manningRatio = arr - this.initEchart1() - }) - }, - jumpPage(page) { - this.$router.push(page) - }, - departure(id) { - this.$confirm('纭畾绂诲巶鍚�, 鏄惁缁х画?', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - type: 'warning' - }).then(() => { - level(id) - .then(res => { - this.getWarningList() - }) - }).catch(() => { - - }) - }, - handleDetail(row) { - if (row.objType === 2) { - this.$refs.OperaDetailsWindow.open('鍏姟杞︾敵璇疯鎯�', { ...row, id: row.objId }) - return - } - if (row.objType === 1) { - this.isShowReport = true - this.$nextTick(() => { - this.$refs.VisReportDetailRef.id = row.objId - this.$refs.VisReportDetailRef.type = row.objType - this.$refs.VisReportDetailRef.getDetail() - this.$refs.VisReportDetailRef.isShowModal = true - }) - return - } - if (row.objType === 3) { - const obj = { ...row, id: row.objId } - this.$refs.OperaHiddenDangerWindow.open('闅愭偅闅忔墜鎷嶈鎯�', obj) - return - } - if (row.objType === 6) { - const obj = { ...row, id: row.objId } - this.isShowDriver = true - this.$nextTick(() => { - this.$refs.DriverDetailRef.id = row.objId - this.$refs.DriverDetailRef.type = row.objType - this.$refs.DriverDetailRef.getDetail() - this.$refs.DriverDetailRef.isShowModal = true - }) - return - } - if (row.objType === 0) { - this.isShowDetail = true - this.$nextTick(() => { - this.$refs.DetailRef.id = row.objId - this.$refs.DetailRef.type = row.objType - this.$refs.DetailRef.getDetail() - this.$refs.DetailRef.isShowModal = true - }) - } - }, - initEchart1() { - const myChart = echarts.init(document.getElementById('echart1')) - let that = this - - const option = { - tooltip: { - trigger: 'item' - }, - series: [ - { - type: 'pie', - radius: ['42%', '90%'], - label: { - show: false, - position: 'center' - }, - color: colors, - labelLine: { - show: false - }, - data: that.manningRatio - // data: [ - // { value: that.headerData.inParkVisitUserNum, name: '璁垮' }, - // { value: that.headerData.todayInParkUserNum - that.headerData.inParkVisitUserNum - that.headerData.inParkLwUserNum, name: '鍐呴儴鍛樺伐' }, - // { value: that.headerData.inParkLwUserNum, name: '闀挎湡鐩稿叧鏂�' } - // ] - } - ] - } - myChart.setOption(option) - window.addEventListener('resize', function () { // 鎵ц - myChart.resize() - }) - }, - initEchart2() { - const myChart = echarts.init(document.getElementById('echart2')) - let that = this - myChart.setOption({ - grid: { - top: '4%', - left: '2%', - right: '6%', - bottom: '2%', - containLabel: true - }, - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'line' - } - }, - xAxis: { - type: 'value', - position: 'bottom', - splitLine: { - show: true, - lineStyle: { - // 杩欓噷杈撳叆绾挎潯鐨勬牱寮� - color: 'rgba(255,255,255,0.14)' - } - } - }, - yAxis: { - type: 'category', - data: that.staticData.lwList.map(i => i.name) - }, - series: [ - { - data: that.staticData.lwList.map(i => i.num), - type: 'bar', - barWidth: 10, - itemStyle: { - normal: { - color: new echarts.graphic.LinearGradient( - 1, 0, 0, 0, - [ - { offset: 0, color: '#56abf8' }, - { offset: 1, color: '#407ff0' } - ] - ), - // barBorderRadius: [0, 10, 10, 0] - } - } - } - ] - }) - window.addEventListener('resize', function () { // 鎵ц - myChart.resize() - }) - }, - initEchart3() { - const myChart = echarts.init(document.getElementById('echart3')) - let that = this - myChart.setOption({ - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'line' - }, - formatter: function (params) { - return ` - <div style="background-color: #15323f;margin: -12px;padding: 14px;border: 2px solid rgba(1,217,254,0.5);color: #fff;"> - <div>${params[0].name}</div> - <div style="display: flex;align-items: center;"> - <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #6feef0;"></div> - <span style="margin-left: 6px;">${params[0].value}</span> - <div>浜�</div> - </div> - </div> - ` - } - }, - xAxis: { - type: 'category', - boundaryGap: false, - data: that.staticData.weekVisitList.map(i => i.name) - }, - yAxis: { - type: 'value', - name: '浜烘暟', - nameTextStyle: { - padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� - }, - splitLine: { - show: true, - lineStyle: { - // 杩欓噷杈撳叆绾挎潯鐨勬牱寮� - color: 'rgba(255,255,255,0.14)' - } - } - }, - grid: { - top: '16%', - left: '2%', - right: '8%', - bottom: '2%', - containLabel: true - }, - series: [ - { - data: that.staticData.weekVisitList.map(i => i.num), - type: 'line', - areaStyle: { - normal: { - color: { - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, - color: '#207FF7' // 0% 澶勭殑棰滆壊 - }, { - offset: 1, - color: 'rgba(255,255,255,.2)' // 100% 澶勭殑棰滆壊 - }], - globalCoord: false // 缂虹渷涓� false - } - } - }, - lineStyle: { // 绾挎潯鏍峰紡 - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#207FF7' // 0% 澶勭殑棰滆壊 - }, { - offset: 1, color: '#207FF7' // 100% 澶勭殑棰滆壊 - }] - }, - width: 2 // 绾挎潯绮楃粏 - }, - symbol: 'circle', - symbolSize: 10, - itemStyle: { - borderWidth: 1, - borderColor: '#fff', - color: '#207FF7' - }, - smooth: false - } - ] - }) - window.addEventListener('resize', function () { // 鎵ц - myChart.resize() - }) - }, - initEchart4() { - const myChart = echarts.init(document.getElementById('echart4')) - let that = this - myChart.setOption({ - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'line' - }, - formatter: function (params) { - return ` - <div style="background-color: #15323f;margin: -12px;padding: 14px;border: 2px solid rgba(1,217,254,0.5);color: #fff;"> - <div>${params[0].name}</div> - <div style="display: flex;align-items: center;"> - <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #6feef0;"></div> - <span style="margin-left: 6px;">${params[0].value}</span> - <div>杈�</div> - </div> - </div> - ` - } - }, - xAxis: { - type: 'category', - boundaryGap: false, - data: that.staticData.weekCarList.map(i => i.name) - }, - yAxis: { - type: 'value', - name: '杞﹁締鏁�', - nameTextStyle: { - padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� - }, - splitLine: { - show: true, - lineStyle: { - // 杩欓噷杈撳叆绾挎潯鐨勬牱寮� - color: 'rgba(255,255,255,0.14)' - } - } - }, - grid: { - top: '16%', - left: '2%', - right: '8%', - bottom: '4%', - containLabel: true - }, - series: [ - { - data: that.staticData.weekCarList.map(i => i.num), - type: 'line', - areaStyle: { - normal: { - color: { - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, - color: '#42D49D' // 0% 澶勭殑棰滆壊 - }, { - offset: 1, - color: 'rgba(255,255,255,.5)' // 100% 澶勭殑棰滆壊 - }], - globalCoord: false // 缂虹渷涓� false - } - } - }, - lineStyle: { // 绾挎潯鏍峰紡 - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#42D49D' // 0% 澶勭殑棰滆壊 - }, { - offset: 1, color: '#42D49D' // 100% 澶勭殑棰滆壊 - }] - }, - width: 2 // 绾挎潯绮楃粏 - }, - symbol: 'circle', - symbolSize: 10, - itemStyle: { - borderWidth: 1, - borderColor: '#fff', - color: '#42D49D' // 鎶樼嚎鐐圭殑棰滆壊 - }, - smooth: false - } - ] - }) - window.addEventListener('resize', function () { // 鎵ц - myChart.resize() - }) - } + } } </script> <style lang="scss" scoped> -div { - box-sizing: border-box; -} - -.home_title { - font-weight: 600; - font-size: 16px; - color: #222222; - line-height: 22px; -} - -.main { - display: flex; - position: relative; - z-index: 99; - - .app_content { - flex: 1; - - .static_card { - height: 187px; - color: #fff; - display: flex; - justify-content: space-between; - - .card { - flex: 1; - height: 187px; - background: linear-gradient(270deg, #29aeff 0%, #207ff7 100%); - box-shadow: 0px 2px 10px 0px rgba(32, 127, 247, 0.4); - border-radius: 8px; - margin-right: 14px; - - &:nth-of-type(2) { - background: linear-gradient(270deg, #8383ff 0%, #6b6eff 100%); - } - - &:nth-of-type(3) { - background: linear-gradient(270deg, #42d49d 0%, #12bb8b 100%); - } - - &:nth-of-type(4) { - margin-right: 0; - background: linear-gradient(270deg, #30d3de 0%, #04b7cd 100%); - } - - .header { - height: 103px; - display: flex; - justify-content: space-between; - align-items: center; - padding: 20px 20px 12px; - border-bottom: 1px solid rgba(255, 255, 255, 0.2); - - img { - width: 40px; - height: 40px; - } - - .num { - font-weight: 600; - font-size: 30px; - margin-top: 12px; - } - } - - .content { - height: 82px; - display: flex; - flex-direction: column; - justify-content: space-between; - font-size: 13px; - padding: 15px 20px 20px; - } - } - } - - .funcs { - height: 149px; - padding: 20px; - background: #fff; - margin: 10px 0; - - .list { - display: flex; - padding-top: 20px; - - .item { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - margin-right: 24px; - cursor: pointer; - - img { - width: 44px; - height: 44px; - } - } - } - } - } - - .app_side { - width: 408px; - margin-left: 10px; - - .task { - background: #fff; - border-radius: 2px; - border: 1px solid #eeeeee; - padding: 20px; - height: 346px; - margin-bottom: 10px; - - .header { - .num { - position: relative; - top: 3px; - height: 16px; - line-height: 16px; - font-size: 12px; - color: #ffffff; - padding: 0 6px; - font-weight: 400; - background: red; - border-radius: 8px; - margin-left: 13px; - } - - .more { - font-size: 13px; - color: #999999; - } - } - - .list { - .item { - display: flex; - align-items: center; - margin-top: 15px; - - .content { - flex: 1; - - .title { - color: #222222; - margin-bottom: 5px; - } - - .time { - color: #999999; - font-size: 12px; - } - } - - .btn { - margin-left: 10px; - width: 58px; - text-align: center; - height: 30px; - line-height: 30px; - background: #ffffff; - border-radius: 2px; - border: 1px solid #207ff7; - font-size: 13px; - color: #207ff7; - cursor: pointer; - } - } - } - } - - .warnning { - background: #fff; - border-radius: 2px; - border: 1px solid #eeeeee; - padding: 20px; - height: 508px; - - .header { - .num { - position: relative; - top: 3px; - height: 16px; - line-height: 16px; - font-size: 12px; - color: #ffffff; - padding: 0 6px; - font-weight: 400; - background: red; - border-radius: 8px; - margin-left: 13px; - } - - .more { - font-size: 13px; - color: #999999; - } - } - - .list { - padding-top: 6px; - - .item { - margin-top: 10px; - padding: 15px; - width: 100%; - height: 140px; - background: rgba(32, 127, 247, 0.05); - border-radius: 4px; - - .name_wrap { - margin-bottom: 10px; - - .name { - font-weight: 600; - color: #222222; - } - - .identity { - font-size: 13px; - color: #207ff7; - } - } - - .line { - color: #666666; - margin-bottom: 8px; - font-size: 13px; - } - - .auth { - .time { - font-weight: 600; - font-size: 13px; - color: #ee3821; - } - - .btn { - margin-left: 10px; - width: 58px; - text-align: center; - height: 30px; - cursor: pointer; - line-height: 30px; - background: #ffffff; - border-radius: 2px; - border: 1px solid #207ff7; - font-size: 13px; - color: #207ff7; - } - } - } - } - } - - .more { - cursor: pointer; - } - - .empty { - height: 300px; - display: flex; - justify-content: center; - align-items: center; - - img { - width: 140px; - } - } - } - - .static_wrap { - .wrap { - background: #fff; - padding: 20px 20px 10px; - border-radius: 2px; - border: 1px solid #eeeeee; - height: 250px; + .main { + width: 100%; + height: calc(100vh - 48px - 56px - 35px); + padding: 15px; + box-sizing: border-box; + background: #F4F7FC; + display: flex; + align-items: center; + justify-content: space-between; + .main_left { flex: 1; - - &:nth-of-type(2n) { - margin-left: 10px; - } - - .echart { + height: 100%; + display: flex; + flex-direction: column; + .main_left_head { width: 100%; - height: 190px; - } - - .header { + height: 199px; + background: #FFFFFF; + border-radius: 8px; display: flex; - justify-content: space-between; align-items: center; - - .more { - font-size: 13px; - color: #999999; - } - } - } - - .static1 { - .content { - display: flex; - justify-content: center; - align-items: center; - height: 100%; - - .echart_wrap { - position: relative; - - .pie_text { - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - z-index: 999; + padding: 20px; + box-sizing: border-box; + .head_item { + flex: 1; + height: 100%; + display: flex; + align-items: center; + justify-content: space-between; + background: #F1F5FF; + border-radius: 8px; + margin-right: 15px; + padding: 28px 20px; + box-sizing: border-box; + &:last-child { + margin: 0 !important; + } + .head_item_left { + flex: 1; + display: flex; + flex-direction: column; + span { + &:nth-child(1) { + font-weight: 600; + font-size: 17px; + color: #222222; + } + &:nth-child(2) { + font-weight: 600; + font-size: 30px; + color: #111111; + margin-top: 6px; + margin-bottom: 14px; + } + &:nth-child(3) { + font-weight: 400; + font-size: 13px; + color: #999999; + } + } + } + .head_item_icon { + width: 60px; + height: 60px; } } - - .echart { - width: 150px; - height: 150px; - } - - .list { - margin-left: 36px; - - .item { + } + .main_left_menu { + width: 100%; + height: calc(100% - 214px); + background: #FFFFFF; + border-radius: 8px; + margin-top: 15px; + padding: 20px; + box-sizing: border-box; + .main_left_menu_title { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + span { + font-weight: 600; + font-size: 18px; + color: #222222; + } + .main_left_menu_title_edit { display: flex; align-items: center; - margin: 8px 0; - - .icon { - width: 16px; - height: 16px; - border-radius: 50%; - margin-right: 6px; - background: linear-gradient(270deg, #29aeff 0%, #207ff7 100%); + img { + width: 15px; + height: 15px; } - - .text { - margin-right: 6px; + span { + font-weight: 400; + font-size: 14px; + color: #3E80EF; + margin-left: 5px; + } + } + } + .main_left_menu_list { + width: 100%; + margin-top: 20px; + display: flex; + align-items: center; + flex-wrap: wrap; + justify-content: space-between; + .list_item { + cursor: pointer; + width: 24%; + height: 70px; + background: #FFFFFF; + border-radius: 8px; + border: 1px solid #EEEEEE; + padding: 0 16px; + box-sizing: border-box; + margin-bottom: 15px; + display: flex; + align-items: center; + justify-content: space-between; + .list_item_left { + display: flex; + align-items: center; + img { + width: 40px; + height: 40px; + margin-right: 5px; + } + span { + font-weight: 500; + font-size: 15px; + color: #222222; + } } } } } } + .main_right { + flex-shrink: 0; + width: 500px; + height: 100%; + margin-left: 15px; + background: #FEFEFF; + border-radius: 8px; + padding: 20px; + box-sizing: border-box; + .main_right_title { + font-weight: 600; + font-size: 18px; + color: #222222; + margin-bottom: 12px; + } + } } -} - -.main_home { - background: #f4f7fc; - position: relative; - width: 100%; - height: 100%; - overflow: auto; - padding: 20px; - padding-top: 92px; - - .home_header { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 200px; - padding: 20px; - color: #fff; - background: linear-gradient(180deg, #207ff7 0%, rgba(32, 127, 247, 0) 100%); - } -} </style> -- Gitblit v1.9.3