From 1f4e7d0f73a73e7350cf5a1df279d5f30904c5d5 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 06 十二月 2023 08:41:32 +0800 Subject: [PATCH] bug --- screen_standard/src/views/index.vue | 1788 +++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 1,601 insertions(+), 187 deletions(-) diff --git a/screen_standard/src/views/index.vue b/screen_standard/src/views/index.vue index 5b0d6f3..975400e 100644 --- a/screen_standard/src/views/index.vue +++ b/screen_standard/src/views/index.vue @@ -1,209 +1,1623 @@ <template> - <div class="content"> - <div class="content_left"> - <div class="content_left_item1"> - <div class="content_left_item1_head"> - <span>褰撴棩鍛樺伐浜ч噺TOP10</span> - </div> - <div class="content_left_item1_content"> - <div class="content_left_item1_content_row" v-for="(item, index) in 10" :key="index"> - <div class="content_left_item1_content_row_name"> - <div :class="index > 2 ? 'num bg1' : 'num bg2'">{{ index + 1 }}</div> - <span>璧电珛{{ index }}</span> - </div> - <div class="content_left_item1_content_row_line"> - <el-progress - :show-text="false" - :percentage="50"> - </el-progress> - </div> - <div class="content_left_item1_content_row_num">342</div> - </div> - </div> - </div> - <div class="content_left_item2"> - <div class="content_left_item2_head"> - <span>浠撳簱瀹炴椂浣欓噺缁熻</span> - </div> - <div class="content_left_item2_content"> - <div class="productProcess"> + <div class="content1"> + <!-- <div class="content_left"> - <!-- 濡傛灉椤甸潰鍒锋柊鏁版嵁姣旇緝棰戠箒锛屽彲浠ュ皢loading銆乻howFlag鐨勭浉鍏充唬鐮佸垹闄わ紝闃叉杩囦簬棰戠箒鐨勫嚭鐜板姞杞藉姩鐢� --> - <div class="loading_div" v-show="!showFlag"> - <div>Loading...</div> <!-- 杩欎釜loading鑷繁鍐欙紝浠g爜娌¤创鍑烘潵 --> - </div> - - <div class="success_info_body" v-show="showFlag"> - <!-- 鍙傛暟鍚嶇О銆佸垪鏁版牴鎹疄闄呮儏鍐佃皟鏁� --> - <div class="table_body"> - <div class="table_th"> - <div class="tr1 th_style">鎺掍骇缂栧彿</div> - <div class="tr2 th_style">绫诲瀷</div> - <div class="tr3 th_style">鏃ユ湡</div> - <div class="tr4 th_style">杩涘害</div> - </div> - <div class="table_main_body"> - <div class="table_inner_body" :style="{top: tableTop + 'px'}"> - <div class="table_tr" v-for="(item,index) in tableList" :key="index"> - <div class="tr1 tr">{{item.planNo}}</div> - <div class="tr2 tr">{{item.type}}</div> - <div class="tr3 tr" v-if="item.startDate!='-'">{{item.startDate}} ~ {{item.endDate}}</div> - <div class="tr3 tr" v-else>-</div> - <div class="tr4 tr" v-if="item.process!='-'">{{Number(item.process).toFixed(2)}} %</div> - <div class="tr4 tr" v-else>-</div> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - </div> + <div class="content_left_item2"> + <div class="content_left_item2_head"> + <span>浠撳簱瀹炴椂浣欓噺缁熻</span> </div> - <div class="content_center">2</div> - <div class="content_right">3</div> + <div class="content_left_item2_content"> + <div class="item2_content_head"> + <div class="item2_content_head_item">鐗╂枡鍚嶇О / 宸ュ簭</div> + <div class="item2_content_head_item">浠撳簱</div> + <div class="item2_content_head_item">璐ф灦</div> + <div class="item2_content_head_item">鏁伴噺</div> + </div> + <div @mouseenter="handleMouseEnter" @mouseleave="handleMouseLeave" class="main_container"> + <div ref="scrollContainer" class="scroll_container"> + <div v-for="(item, index) in data.marginStatistics" :key="index" + :class="index % 2 == 0 ? 'scroll_item scroll_item_bg1' : 'scroll_item scroll_item_bg2'"> + <div class="scroll_item_row">{{ item.materialName }} / {{ item.procedureName }}</div> + <div class="scroll_item_row">{{ item.warehouseName }}</div> + <div class="scroll_item_row">{{ item.location }}</div> + <div class="scroll_item_row">{{ item.num }}{{ item.unitName }}</div> + </div> + </div> + </div> + </div> + </div> + </div> --> + <div class="content_center"> + <!-- 鎴愬搧璁″垝杩涘害/宸ュ簭杩涘害 --> + <div class="content_center_top"> + <div class="content_center_top_list"> + <div @click="clickCate(index)" + :class="item.active ? 'content_center_top_list_item bg4' : 'content_center_top_list_item bg3'" + v-for="(item, index) in cate" :key="index"> + {{ item.name }} + </div> + </div> + <div class="content_center_top_form" v-if="cate[0].active"> + <div class="content_center_top_form_head"> + <div class="content_center_top_form_head_item">璁″垝缂栫爜</div> + <div class="content_center_top_form_head_item">鐗╂枡鍚嶇О</div> + <div class="content_center_top_form_head_item">鐗╂枡缂栫爜</div> + <div class="content_center_top_form_head_item">璁″垝鏁伴噺</div> + <div class="content_center_top_form_head_item">鍚勫伐搴忓畬鎴愭儏鍐�</div> + <div class="content_center_top_form_head_item">鑹搧鏁�/瀹屽伐鏁�</div> + </div> + <div @mouseenter="handleMouseEnter1" @mouseleave="handleMouseLeave1" class="main_container"> + <div ref="scrollContainer1" class="scroll_container"> + <div v-for="(item, index) in data.plannedProgress" :key="index" + :class="index % 2 == 0 ? 'scroll_item scroll_item_bg1' : 'scroll_item scroll_item_bg2'"> + <div class="scroll_item_row">{{ item.code }}</div> + <div class="scroll_item_row">{{ item.materialName }}</div> + <div class="scroll_item_row">{{ item.materialCode }}</div> + <div class="scroll_item_row">{{ item.num }}</div> + <div class="scroll_item_row" style="text-align: left;"> + <el-tooltip v-for="(child, i) in item.procedureList" :key="i" effect="dark" + :content="'宸叉姤宸ヨ壇鍝佹暟' + child.doneNum + '锛涘伐搴忚鍒掓暟' + child.planNum" placement="top"> + <div class="scroll_item_row_item" @click="jump(child.procedureId, child.procedureName)"> + <div class="scroll_item_row_item_x"></div> + <span v-if="child.rate < 100">{{ child.rate.toFixed(0) }}%</span> + <img v-else src="@/assets/img/ic_complete@2x.png" alt="" /> + <span class="scroll_item_row_item_wz">{{ child.procedureName }}</span> + </div> + </el-tooltip> + </div> + <div class="scroll_item_row">{{ item.qualifiedNum }}/{{ item.doneNum }}</div> + </div> + </div> + </div> + </div> + <div class="content_center_top_form1" v-if="cate[1].active"> + <div class="content_center_top_form_head"> + <div class="content_center_top_form_head_item">宸ュ簭鍚嶇О</div> + <div class="content_center_top_form_head_item">璁″垝涓暟</div> + <div class="content_center_top_form_head_item">璁″垝鏁伴噺</div> + <div class="content_center_top_form_head_item">鑹搧鏁�</div> + <div class="content_center_top_form_head_item">涓嶈壇鍝佹暟</div> + <div class="content_center_top_form_head_item">鏈畬宸ユ暟閲�</div> + <div class="content_center_top_form_head_item">涓嶈壇鐜�</div> + </div> + <div @mouseenter="handleMouseEnter2" @mouseleave="handleMouseLeave2" class="main_container"> + <div ref="scrollContainer2" class="scroll_container"> + <div v-for="(item, index) in data.processProgress" :key="index" + :class="index % 2 == 0 ? 'scroll_item scroll_item_bg1' : 'scroll_item scroll_item_bg2'"> + <div class="scroll_item_row">{{ item.procedureName }}</div> + <div class="scroll_item_row">{{ item.planCount }}</div> + <div class="scroll_item_row">{{ item.num }}</div> + <div class="scroll_item_row">{{ item.qualifiedNum }}</div> + <div class="scroll_item_row">{{ item.unqualifiedNum }}</div> + <div class="scroll_item_row">{{ item.undoneNum }}</div> + <div class="scroll_item_row">{{ (item.unqualifiedRate||0).toFixed(2) }}%</div> + </div> + </div> + </div> + </div> + </div> + <!-- 鎶ュ伐鏃ュ織 --> + <div style="display: flex;"> + <div class="content_left" style="flex: 1;"> + <div class="content_left_item1"> + <div class="content_left_item1_head"> + <span>褰撴棩鍛樺伐浜ч噺TOP10</span> + </div> + <div class="content_left_item1_content" ref="scrollContainer"> + <div class="content_left_item1_content_row" v-for="(item, index) in data.production" :key="index"> + <div class="content_left_item1_content_row_name"> + <div :class="index > 2 ? 'num bg1' : 'num bg2'">{{ index + 1 }}</div> + <span>{{ item.userName }}</span> + </div> + <div class="content_left_item1_content_row_line"> + <el-progress :show-text="false" :percentage="item.doneNum / baseNum * 100"> + </el-progress> + </div> + <div class="content_left_item1_content_row_num">{{ item.doneNum }}</div> + </div> + </div> + </div> + </div> + <div class="content_center_bottom"> + <div class="content_center_bottom_head"> + <span>鎶ュ伐鏃ュ織</span> + </div> + <div class="content_center_bottom_b"> + <div class="content_center_top_form_head"> + <div class="content_center_top_form_head_item">鍛樺伐鍚嶇О</div> + <div class="content_center_top_form_head_item">鐗╂枡鍚嶇О</div> + <div class="content_center_top_form_head_item">宸ュ簭</div> + <div class="content_center_top_form_head_item">鎶ュ伐鏃堕棿</div> + <div class="content_center_top_form_head_item">鑹搧鏁�</div> + <div class="content_center_top_form_head_item">涓嶈壇鍝佹暟</div> + <div class="content_center_top_form_head_item">涓嶈壇鐜�</div> + </div> + <div @mouseenter="handleMouseEnter3" @mouseleave="handleMouseLeave3" class="main_container"> + <div ref="scrollContainer3" class="scroll_container"> + <div v-for="(item, index) in data.log" :key="index" + :class="index % 2 == 0 ? 'scroll_item scroll_item_bg1' : 'scroll_item scroll_item_bg2'"> + <div class="scroll_item_row">{{ item.userName }}</div> + <div class="scroll_item_row">{{ item.materialName }}</div> + <div class="scroll_item_row">{{ item.procedureName }}</div> + <div class="scroll_item_row">{{ dateToSub(item.createTime) }}</div> + <div class="scroll_item_row">{{ item.qualifiedNum || 0 }}</div> + <div class="scroll_item_row">{{ item.unqualifiedNum || 0 }}</div> + <div class="scroll_item_row">{{ (item.unqualifiedRate || 0).toFixed(2) }}%</div> + </div> + </div> + </div> + </div> + </div> + </div> </div> + <div class="content_right"> + <!-- 杩�7澶╀笉鑹搧鍒嗗竷 --> + <div class="content_right_top"> + <div class="content_right_top_head"> + <span>杩�7澶╀笉鑹搧鍒嗗竷</span> + </div> + <div class="content_right_top_nr"> + + <div class="content_right_top_nr_top" id="lineChrat"></div> + <div class="content_right_top_nr_bottom"> + <div class="content_right_top_nr_bottom_yuan" v-if="data.typeDistribution.length > 0"> + <span>{{ data.num }}</span> + <span>涓嶈壇椤瑰垎甯�</span> + </div> + <div id="pieChart"></div> + </div> + + </div> + </div> + <!-- 璁惧宸℃璁板綍 --> + <div class="content_right_bottom" ref="bottom1"> + <div class="content_right_bottom_head"> + <span>璁惧宸℃璁板綍</span> + </div> + <div class="content_right_bottom_nr"> + <div class="item2_content_head"> + <div class="item2_content_head_item">宸℃鏃堕棿</div> + <div class="item2_content_head_item">宸℃璁惧</div> + <div class="item2_content_head_item">宸℃缁撴灉</div> + <div class="item2_content_head_item">宸℃浜哄憳</div> + </div> + <div @mouseenter="handleMouseEnter4" @mouseleave="handleMouseLeave4" class="main_container"> + <div ref="scrollContainer4" class="scroll_container"> + <div v-for="(item, index) in data.patrolInspection" :key="index" + :class="index % 2 == 0 ? 'scroll_item scroll_item_bg1' : 'scroll_item scroll_item_bg2'"> + <div class="scroll_item_row">{{ dateToSub(item.checkdate) }}</div> + <div class="scroll_item_row">{{ item.deviceName }}</div> + <div class="scroll_item_row"> + <span v-if="item.status == 0">姝e父</span> + <span v-else style="color: #F84F26">寮傚父</span> + </div> + <div class="scroll_item_row">{{ item.userName }}</div> + </div> + </div> + </div> + </div> + </div> + </div> + </div> </template> <script setup> +import { dateToSub } from '@/utils' +import { reactive, ref, onMounted, nextTick, onUnmounted, computed, watch, toRefs } from 'vue' +import { getPlanData, getTop, getStockList, getWorkPlansList, getProcedureProcessList, getRecordLogPage, getDeviceCheckPage, getUnqualified7DayData, getUnqualifiedCateData } from '@/utils/api.js' +import { useCounterStore } from '@/stores/counter.js' +import * as echarts from 'echarts' +import { useRouter } from 'vue-router' +const router = useRouter() + +let data = reactive({ + production: [], + marginStatistics: [], + plannedProgress: [], + processProgress: [], + log: [], + patrolInspection: [], + dayDistribution: [], + typeDistribution: [], + num: 0, + baseNum: 0, + bottomAuthHeight: 284 +}) + +let { baseNum, bottomAuthHeight } = toRefs(data) + +let timer = ref(null) +let timer1 = ref(null) +let timer2 = ref(null) +let timer3 = ref(null) +let timer4 = ref(null) +let timer5 = ref(null) +let scrollContainer = ref(null) +let scrollContainer1 = ref(null) +let scrollContainer2 = ref(null) +let scrollContainer3 = ref(null) +let scrollContainer4 = ref(null) +let bottom1 = ref(null) +let cate = ref([ + { + name: '鎴愬搧璁″垝杩涘害', + id: 1, + active: true, + background: 'tab_select_grey@2x.png', + activeBackground: 'tab_select@2x.png' + }, + { + name: '宸ュ簭杩涘害', + id: 2, + active: false, + background: 'tab_select_grey@2x.png', + activeBackground: 'tab_select@2x.png' + } +]) + +const enterprise = useCounterStore() + +const companyId = computed(() => { + return enterprise.companyId +}) +const departId = computed(() => { + return enterprise.departId +}) + +const jump = (procedureId, procedureName) => { + enterprise.setProcedureName(procedureName) + router.push({ name: 'process', query: { procedureId } }) +} + +watch(() => departId.value, (val) => { + if (val) { + init() + } +}) + +start1() + +const init = () => { + setBottomHeight(); + // 褰撴棩鍛樺伐浜ч噺TOP10 + getTop(companyId.value, departId.value) + .then(res => { + if (res.length > 0) { + data.baseNum = res[0].doneNum + } else { + data.baseNum = 0 + } + data.production = res + data.fifthScroll = true + }) + // 浠撳簱瀹炴椂浣欓噺缁熻 + // getStockList(companyId.value, departId.value) + // .then(res => { + // data.marginStatistics = res + // nextTick(() => { + // start() + // }) + // }) + cate.value.forEach((item, index) => { + if (item.active) { + if (index == 1) { + getProcedureProcessList(companyId.value, departId.value) + .then(res => { + data.processProgress = res + nextTick(() => { + start2() + }) + }) + } else { + // 鎴愬搧璁″垝杩涘害 + getWorkPlansList(companyId.value, departId.value) + .then(res => { + data.plannedProgress = res + nextTick(() => { + start1() + }) + }) + } + } + }) + + + // 鎶ュ伐鏃ュ織 + getRecordLogPage(companyId.value, departId.value, { + capacity: 20, + model: {}, + page: 1 + }).then(res => { + data.log = res.records + nextTick(() => { + start3() + }) + }) + // 璁惧宸℃璁板綍 + getDeviceCheckPage(companyId.value, departId.value, { + capacity: 9999, + model: {}, + page: 1 + }).then(res => { + data.patrolInspection = res.records + nextTick(() => { + start4() + }) + }) + // 杩戜竷澶╀笉鑹暟 + getUnqualified7DayData(companyId.value, departId.value, '') + .then(res => { + if (res && res.length > 0) { + data.dayDistribution = res.map(item => { + return { + date: item.createTime, + num: item.unqualifiedNum + } + }) + setDayChart() + } + }) + // 杩戜竷澶╀笉鑹」 + getUnqualifiedCateData(companyId.value, departId.value, '') + .then(res => { + if (res && res.length > 0) { + data.num = 0 + data.typeDistribution = res.map(item => { + data.num += item.unqualifiedNum + return { + name: item.categoryName, + num: item.unqualifiedNum + } + }) + setTypeChart() + } + }) + // getPlanData + getPlanData(companyId.value, departId.value) + .then(res => { + enterprise.setNum(res) + }) +} +function setBottomHeight(){ + const pageHeight = window.innerHeight; + bottomAuthHeight = pageHeight - 700; +} + +/** + * 涓冩棩鎶樼嚎鍥� + */ +function setDayChart() { + let dayChartDom = document.getElementById('lineChrat'); + let myChart = echarts.init(dayChartDom); + let dateList = [] + let numList = [] + let num = 0 + data.dayDistribution.forEach(item => { + dateList.push(item.date) + numList.push(item.num) + num += item.num + }) + let option; + option = { + title: { + text: `杩戜竷鏃ヤ笉鑹搧鎬绘暟锛�${num}`, + textStyle: { + color: '#fff', + fontSize: 12 + } + }, + grid: { + top: 40, + bottom: 30, + left: 60, + right: 10 + }, + xAxis: { + type: 'category', + boundaryGap: false, + splitLine: { + lineStyle: { + width: 0.5, + color: ['#fff'] + } + }, + axisLine: { + show: true, + onZero: true, + lineStyle: { + width: 0.5, + color: '#fff', + opacity: .5 + } + }, + axisLabel: { + textStyle: { + color: '#fff' + } + }, + data: dateList + }, + + yAxis: { + type: 'value', + splitLine: { + lineStyle: { + width: 0.5, + color: ['#fff'] + } + }, + axisLine: { + show: true, + onZero: true, + lineStyle: { + width: 1, + color: '#fff', + opacity: .5 + } + }, + axisLabel: { + textStyle: { + color: '#fff' + } + } + }, + series: [ + { + data: numList, + type: 'line', + lineStyle: { + color: '#03D2B5', + width: 1 + }, + areaStyle: { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: 'rgba(3, 210, 181, .9)', + }, + { + offset: 1, + color: 'rgba(3, 210, 181, 0)', + } + ]) + } + } + ], + + tooltip: { + trigger: 'axis' + }, + legend: { + name: '1adssad', + itemWidth: 10, + itemHeight: 10, + itemGap: 4, + textStyle: { + color: '#fff' + } + } + } + + option && myChart.setOption(option); +} + +/** + * 涓嶈壇绫诲瀷鍒嗗竷 + */ +function setTypeChart() { + let dayChartDom = document.getElementById('pieChart'); + let myChart = echarts.init(dayChartDom); + let legendData = [] + let seriesData = [] + data.typeDistribution.forEach(item => { + legendData.push(item.name) + seriesData.push({ name: item.name, value: item.num }) + }) + let option = { + legend: { + show: false, + type: 'scroll', + orient: 'vertical', + right: 10, + top: 20, + bottom: 20, + data: legendData + }, + series: [ + { + // name: '濮撳悕', + type: 'pie', + + radius: ['60%', '70%'], + // avoidLabelOverlap: false, + itemStyle: { + borderRadius: 4, + borderColor: 'rgba(52, 88, 159, 0.4)', + borderWidth: 4 + }, + center: ['50%', '50%'], + labelLine: { + show: false + }, + label: { + formatter: '{dot| } {title|{b} {c}}\n\n{per|{d}%}', + rich: { + title: { + color: '#fff' + }, + per: { + color: '#01D9FE' + }, + dot: { + backgroundColor: 'inherit', + width: 8, + height: 8, + borderRadius: 4 + } + } + }, + // labelLayout: { + // hideOverlap: true + // }, + endLabel: { + show: true, + distance: 5, + color: "red" + }, + data: seriesData, + emphasis: { + itemStyle: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 1)' + } + } + } + ] + } + option && myChart.setOption(option); +} +onUnmounted(() => { + clearTimeout(timer.value) + clearTimeout(timer1.value) + clearTimeout(timer2.value) + clearTimeout(timer3.value) + clearTimeout(timer4.value) + clearTimeout(timer5.value) +}) +const clickCate = (index) => { + clearTimeout(timer1.value) + clearTimeout(timer2.value) + cate.value.forEach((item, i) => { + if (i === index) { + // 鎴愬搧璁″垝杩涘害 + if (i == 0) { + getWorkPlansList(companyId.value, departId.value) + .then(res => { + data.plannedProgress = res + nextTick(() => { + start1() + }) + }) + } else { + getProcedureProcessList(companyId.value, departId.value) + .then(res => { + data.processProgress = res + nextTick(() => { + start2() + }) + }) + } + item.active = true + } else { + item.active = false + } + }) +} +function handleMouseEnter() { + clearTimeout(timer.value) +} +function handleMouseEnter1() { + clearTimeout(timer1.value) +} +function handleMouseEnter2() { + clearTimeout(timer2.value) +} +function handleMouseEnter3() { + clearTimeout(timer3.value) +} +function handleMouseEnter4() { + clearTimeout(timer4.value) +} +function handleMouseLeave() { + start() +} +function handleMouseLeave1() { + start1() +} +function handleMouseLeave2() { + start2() +} +function handleMouseLeave3() { + start3() +} +function handleMouseLeave4() { + start4() +} +// 寮�鍚畾鏃跺櫒 +function start() { + clearTimeout(timer.value) + // 瀹氭椂鍣ㄨЕ鍙戝懆鏈� + let speed = ref(100) + timer.value = setInterval(ListScroll, speed.value) +} +// 寮�鍚畾鏃跺櫒 +function start1() { + clearTimeout(timer1.value) + // 瀹氭椂鍣ㄨЕ鍙戝懆鏈� + let speed1 = ref(100) + timer1.value = setInterval(ListScroll1, speed1.value) +} +// 寮�鍚畾鏃跺櫒 +function start2() { + clearTimeout(timer2.value) + // 瀹氭椂鍣ㄨЕ鍙戝懆鏈� + let speed2 = ref(100) + timer2.value = setInterval(ListScroll2, speed2.value) +} +// 寮�鍚畾鏃跺櫒 +function start3() { + clearTimeout(timer3.value) + // 瀹氭椂鍣ㄨЕ鍙戝懆鏈� + let speed3 = ref(100) + timer3.value = setInterval(ListScroll3, speed3.value) +} +// 寮�鍚畾鏃跺櫒 +function start4() { + clearTimeout(timer4.value) + // 瀹氭椂鍣ㄨЕ鍙戝懆鏈� + let speed4 = ref(100) + timer4.value = setInterval(ListScroll4, speed4.value) +} +function ListScroll() { + let scrollDom = scrollContainer.value + if (!scrollDom) return + // 鍒よ缁勪欢鏄惁娓叉煋瀹屾垚 + if (scrollDom.offsetHeight == 0) { + scrollDom = scrollContainer.value + } else { + let maxLength = scrollDom.clientHeight/34 + // 濡傛灉鍒楄〃鏁伴噺杩囧皯涓嶈繘琛屾粴鍔� + if (scrollDom.children.length <= maxLength) { + clearTimeout(timer.value) + return + } + // 缁勪欢杩涜婊氬姩 + scrollDom.scrollTop += 2 + // 鍒ゆ柇鏄惁婊氬姩鍒板簳閮� + if (Math.floor(scrollDom.scrollTop) >= (scrollDom.scrollHeight - scrollDom.clientHeight)) { + // 鑾峰彇缁勪欢绗竴涓妭鐐� + let first = scrollDom.children[0] + // 鍒犻櫎鑺傜偣 + scrollDom.removeChild(first) + // 灏嗚鑺傜偣鎷兼帴鍒扮粍浠舵渶鍚� + scrollDom.append(first) + } + } +} +function ListScroll1() { + let scrollDom = scrollContainer1.value + // 鍒よ缁勪欢鏄惁娓叉煋瀹屾垚 + if (!scrollDom) return + if (scrollDom.offsetHeight == 0) { + scrollDom = scrollContainer1.value + } else { + // 濡傛灉鍒楄〃鏁伴噺杩囧皯涓嶈繘琛屾粴鍔� + if (scrollDom.children.length <= 6) { + clearTimeout(timer1.value) + return + } + // console.log(data.plannedProgress); + // 缁勪欢杩涜婊氬姩 + scrollDom.scrollTop += 2 + // scrollDom.scrollTo(0, scrollDom.scrollTop + 3) + // console.log('2-----',scrollDom.scrollTop, scrollDom.scrollHeight, scrollDom.clientHeight ); + // 鍒ゆ柇鏄惁婊氬姩鍒板簳閮� + if (scrollDom.scrollTop && scrollDom.scrollTop >= (scrollDom.scrollHeight - scrollDom.clientHeight)) { + // 鑾峰彇缁勪欢绗竴涓妭鐐� + let first = scrollDom.children[0] + // 鍒犻櫎鑺傜偣 + scrollDom.removeChild(first) + // 灏嗚鑺傜偣鎷兼帴鍒扮粍浠舵渶鍚� + scrollDom.append(first) + } + } +} +function ListScroll2() { + let scrollDom = scrollContainer2.value + if (!scrollDom) return + // 鍒よ缁勪欢鏄惁娓叉煋瀹屾垚 + if (scrollDom.offsetHeight == 0) { + scrollDom = scrollContainer2.value + } else { + // 濡傛灉鍒楄〃鏁伴噺杩囧皯涓嶈繘琛屾粴鍔� + if (scrollDom.children.length <= 10) { + clearTimeout(timer2.value) + return + } + // 缁勪欢杩涜婊氬姩 + scrollDom.scrollTo(0, scrollDom.scrollTop + 1) // += 1 + // scrollDom.scrollTop(scrollDom.scrollTop + 1) + // console.log('scrollDom.scrollTop', scrollDom.scrollTop); + // console.log('scrollDom.scrollHeight - scrollDom.clientHeight', scrollDom.scrollHeight - scrollDom.clientHeight); + // 鍒ゆ柇鏄惁婊氬姩鍒板簳閮� + if (scrollDom.scrollTop &&scrollDom.scrollTop >= (scrollDom.scrollHeight - scrollDom.clientHeight)) { + // 鑾峰彇缁勪欢绗竴涓妭鐐� + let first = scrollDom.children[0] + // 鍒犻櫎鑺傜偣 + scrollDom.removeChild(first) + // 灏嗚鑺傜偣鎷兼帴鍒扮粍浠舵渶鍚� + scrollDom.append(first) + } + } +} +function ListScroll3() { + let scrollDom = scrollContainer3.value + if (!scrollDom) return + // 鍒よ缁勪欢鏄惁娓叉煋瀹屾垚 + if (scrollDom.offsetHeight == 0) { + scrollDom = scrollContainer3.value + } else { + // 濡傛灉鍒楄〃鏁伴噺杩囧皯涓嶈繘琛屾粴鍔� + let num = scrollContainer3.value.offsetHeight / 35; + // alert(scrollDom.children.length +"---------------"+num) + // 濡傛灉鍒楄〃鏁伴噺杩囧皯涓嶈繘琛屾粴鍔� + if (scrollDom.children.length <= num) { + clearTimeout(timer3.value) + return + } + // 缁勪欢杩涜婊氬姩 + scrollDom.scrollTop = scrollDom.scrollTop+2 + // 鍒ゆ柇鏄惁婊氬姩鍒板簳閮� + if (scrollDom.scrollTop && scrollDom.scrollTop >= (scrollDom.scrollHeight - scrollDom.clientHeight)) { + // 鑾峰彇缁勪欢绗竴涓妭鐐� + let first = scrollDom.children[0] + // 鍒犻櫎鑺傜偣 + scrollDom.removeChild(first) + // 灏嗚鑺傜偣鎷兼帴鍒扮粍浠舵渶鍚� + scrollDom.append(first) + } + } +} +function ListScroll4() { + let scrollDom = scrollContainer4.value + if (!scrollDom) return + // 鍒よ缁勪欢鏄惁娓叉煋瀹屾垚 + if (scrollDom.scrollTop && scrollDom.offsetHeight == 0) { + scrollDom = scrollContainer4.value + } else { + // console.log(scrollDom.offsetHeight); + let num = scrollDom.offsetHeight / 35; + num = num + (scrollDom.offsetHeight % 35 > 0 ? 1 : 0) + if (scrollDom.children.length <= num) { + clearTimeout(timer4.value) + return + } + // 缁勪欢杩涜婊氬姩 + scrollDom.scrollTop += 1 + + // 鍒ゆ柇鏄惁婊氬姩鍒板簳閮� + if (scrollDom.scrollTop && scrollDom.scrollTop >= (scrollDom.scrollHeight - scrollDom.clientHeight)) { + // if (scrollDom.scrollTop >= 35) { + + // 鑾峰彇缁勪欢绗竴涓妭鐐� + let first = scrollDom.children[0] + // 鍒犻櫎鑺傜偣 + scrollDom.removeChild(first) + // 灏嗚鑺傜偣鎷兼帴鍒扮粍浠舵渶鍚� + scrollDom.append(first) + } + } +} + +// onUnmounted(() => { + +// }) + +onMounted(() => { + if (departId.value) { + console.log('onMounted'); + init() + timer5.value = setInterval(init, 60000) + // timer.value = setInterval(scrillAction, 100) + } + window.addEventListener('resize', () => { + setTypeChart() + setDayChart() + }) + +}) + +onUnmounted(() => { + clearTimeout(timer.value) + clearTimeout(timer5.value) + +}) </script> <style lang="scss" scoped> - .content { + +$fixed-height: 690px; +.content1 { + flex: 1; + width: 100%; + height: auto; + display: flex; + align-items: start; + justify-content: space-between; + + .content_left { + flex: 1; + margin-right: 20px; + .content_left_item1 { + width: 100%; + height: calc(100vh - 690px); + // height: 284px; + margin-bottom: 20px; + .content_left_item1_head { + background: url('@/assets/img/home_title_short@2x.png'); + background-repeat: no-repeat; + background-size: 100% 100%; width: 100%; - height: auto; + height: 38px; + line-height: 38px; + padding-left: 34px; + box-sizing: border-box; + + span { + font-size: 16px; + font-family: SourceHanSansSC-Bold, SourceHanSansSC; + font-weight: bold; + color: #FFFFFF; + line-height: 24px; + text-shadow: 0px 0px 10px rgba(0, 24, 72, 0.75); + } + } + + .content_left_item1_content { + width: 100%; + height: calc(100% - 36px); + padding: 20px; + overflow: hidden; + box-sizing: border-box; + background: linear-gradient(180deg, rgba(52, 88, 159, 0) 0%, rgba(0, 86, 255, 0.4) 100%); + + .content_left_item1_content_row { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + // margin-bottom: 13px; + padding: 7px 0; + + &:last-child { + margin: 0; + } + + .content_left_item1_content_row_name { + flex-shrink: 0; + width: 100px; + display: flex; + align-items: center; + + span { + font-size: 13px; + font-family: SourceHanSansSC-Regular, SourceHanSansSC; + font-weight: 400; + color: #D2E0FF; + margin-left: 9px; + } + + .num { + width: 20px; + height: 20px; + line-height: 20px; + text-align: center; + font-size: 12px; + font-family: SourceHanSansSC-Medium, SourceHanSansSC; + font-weight: 500; + color: #FFFFFF; + } + + .bg1 { + background: url('@/assets/img/rank_blue@2x.png'); + background-repeat: no-repeat; + background-size: 100% 100%; + } + + .bg2 { + background: url('@/assets/img/rank_yellow@2x.png'); + background-repeat: no-repeat; + background-size: 100% 100%; + } + } + + .content_left_item1_content_row_line { + flex: 1; + margin: 0 15px; + + &::v-deep(.el-progress-bar__outer) { + border-radius: 0%; + background: rgba(255, 255, 255, 0.13); + } + + &::v-deep(.el-progress-bar__inner) { + border-radius: 0%; + background: linear-gradient(270deg, #00B0FF 0%, #345BA3 100%); + } + } + + .content_left_item1_content_row_num { + font-size: 13px; + width: 60px; + font-family: SourceHanSansSC-Regular, SourceHanSansSC; + font-weight: 400; + color: #D2E0FF; + } + } + } + } + + .content_left_item2 { + width: 100%; + flex: 1; + .content_left_item2_head { + background: url('@/assets/img/home_title_short@2x.png'); + background-repeat: no-repeat; + background-size: 100% 100%; + width: 100%; + height: 38px; + line-height: 38px; + padding-left: 34px; + box-sizing: border-box; + + span { + font-size: 16px; + font-family: SourceHanSansSC-Bold, SourceHanSansSC; + font-weight: bold; + color: #FFFFFF; + line-height: 24px; + text-shadow: 0px 0px 10px rgba(0, 24, 72, 0.75); + } + } + + .content_left_item2_content { + width: 100%; + height: 361px; + padding: 20px; + box-sizing: border-box; + background: linear-gradient(180deg, rgba(52, 88, 159, 0) 0%, rgba(0, 86, 255, 0.4) 100%); + + .item2_content_head { + width: 100%; + height: 35px; + display: flex; + align-items: center; + background: rgba(52, 88, 159, 0.5); + + .item2_content_head_item { + flex: 1; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + font-size: 13px; + font-family: PingFangSC-Medium, PingFang SC; + font-weight: 500; + color: #01D9FE; + + &:first-child { + flex: 1.5; + } + } + } + + .main_container { + width: 100%; + height: calc(100% - 38px); + + .scroll_container { + width: 100%; + height: 100%; + overflow: hidden; + + .scroll_item_bg1 { + background: rgba(52, 88, 159, 0.2); + } + + .scroll_item_bg2 { + background: rgba(52, 88, 159, 0.5); + } + + .scroll_item { + width: 100%; + height: 35px; + display: flex; + align-items: center; + + .scroll_item_row { + flex: 1; + width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + color: #FFFFFF; + font-size: 13px; + + &:first-child { + flex: 1.5; + } + } + } + } + } + } + } + } + + .content_center { + flex: 3; + margin-right: 20px; + .content_center_top { + width: 100%; + height: 424px; + margin-bottom: 20px; + background: linear-gradient(180deg, rgba(52, 88, 159, 0) 0%, rgba(0, 86, 255, 0.4) 100%); + + .content_center_top_list { + width: 100%; + height: 35px; display: flex; align-items: center; - justify-content: space-between; - .content_left { + + .bg3 { + background: url('@/assets/img/tab_select_grey@2x.png'); + background-size: 100% 100%; + } + + .bg4 { + background: url('@/assets/img/tab_select@2x.png'); + background-size: 100% 100%; + } + .content_center_top_list_item { + width: 200px; + height: 35px; + cursor: pointer; + line-height: 35px; + padding-left: 34px; + box-sizing: border-box; + font-size: 16px; + font-family: SourceHanSansSC-Bold, SourceHanSansSC; + font-weight: bold; + color: #FFFFFF; + margin-right: 20px; + text-shadow: 0px 0px 10px rgba(0, 24, 72, 0.75); + + &:last-child { + margin-right: 0; + } + } + } + + .content_center_top_form { + width: 100%; + padding: 20px; + box-sizing: border-box; + height: calc(100% - 38px); + + .content_center_top_form_head { + width: 100%; + height: 34px; + background: rgba(52, 88, 159, 0.5); + display: flex; + align-items: center; + + .content_center_top_form_head_item { flex: 1; - .content_left_item1 { - width: 100%; - margin-bottom: 20px; - .content_left_item1_head { - background: url('@/assets/img/home_title_short@2x.png'); - background-repeat: no-repeat; - background-size: 100% 100%; - width: 100%; - height: 38px; - line-height: 38px; - padding-left: 34px; - box-sizing: border-box; - span { - font-size: 16px; - font-family: SourceHanSansSC-Bold, SourceHanSansSC; - font-weight: bold; - color: #FFFFFF; - line-height: 24px; - text-shadow: 0px 0px 10px rgba(0,24,72,0.75); - } - } - .content_left_item1_content { - width: 100%; - height: 360px; - padding: 20px; - box-sizing: border-box; - background: linear-gradient(180deg, rgba(52,88,159,0) 0%, rgba(0,86,255,0.4) 100%); - .content_left_item1_content_row { - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 13px; - &:last-child { - margin: 0; - } - .content_left_item1_content_row_name { - flex-shrink: 0; - display: flex; - align-items: center; - span { - font-size: 13px; - font-family: SourceHanSansSC-Regular, SourceHanSansSC; - font-weight: 400; - color: #D2E0FF; - margin-left: 9px; - } - .num { - width: 20px; - height: 20px; - line-height: 20px; - text-align: center; - font-size: 12px; - font-family: SourceHanSansSC-Medium, SourceHanSansSC; - font-weight: 500; - color: #FFFFFF; - } - .bg1 { - background: url('@/assets/img/rank_blue@2x.png'); - background-repeat: no-repeat; - background-size: 100% 100%; - } - .bg2 { - background: url('@/assets/img/rank_yellow@2x.png'); - background-repeat: no-repeat; - background-size: 100% 100%; - } - } - .content_left_item1_content_row_line { - flex: 1; - margin: 0 15px; - &::v-deep(.el-progress-bar__outer) { - border-radius: 0%; - background: rgba(255,255,255,0.13); - } - &::v-deep(.el-progress-bar__inner) { - border-radius: 0%; - background: linear-gradient(270deg, #00B0FF 0%, #345BA3 100%); - } - } - .content_left_item1_content_row_num { - font-size: 13px; - font-family: SourceHanSansSC-Regular, SourceHanSansSC; - font-weight: 400; - color: #D2E0FF; - } - } - } + height: 100%; + display: flex; + align-items: center; + justify-content: center; + font-size: 13px; + font-family: PingFangSC-Medium, PingFang SC; + font-weight: 500; + color: #01D9FE; + + &:nth-child(5) { + flex: 3; + } - .content_left_item2 { - width: 100%; - .content_left_item2_head { - background: url('@/assets/img/home_title_short@2x.png'); - background-repeat: no-repeat; - background-size: 100% 100%; - width: 100%; - height: 38px; - line-height: 38px; - padding-left: 34px; - box-sizing: border-box; - span { - font-size: 16px; - font-family: SourceHanSansSC-Bold, SourceHanSansSC; - font-weight: bold; - color: #FFFFFF; - line-height: 24px; - text-shadow: 0px 0px 10px rgba(0,24,72,0.75); - } - } - .content_left_item2_content { - width: 100%; - height: 361px; - background: linear-gradient(180deg, rgba(52,88,159,0) 0%, rgba(0,86,255,0.4) 100%); - - } + } + } + + .main_container { + width: 100%; + height: calc(100% - 34px); + .scroll_container { + width: 100%; + height: 100%; + overflow: hidden; + + .scroll_item_bg1 { + background: rgba(52, 88, 159, 0.2); } + + .scroll_item_bg2 { + background: rgba(52, 88, 159, 0.5); + } + + .scroll_item { + width: 100%; + height: 50px; + display: flex; + align-items: center; + .scroll_item_row { + flex: 1; + height: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: flex; + align-items: center; + justify-content: center; + color: #FFFFFF; + font-size: 13px; + + &:nth-child(5) { + flex: 3; + justify-content: start; + } + .scroll_item_row_item { + margin-top: -11px; + width: 29px; + height: 29px; + border-radius: 50%; + margin-right: 19px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + border: 2px solid #01D9FE; + cursor: pointer; + position: relative; + + &:last-child { + margin-right: 0; + + .scroll_item_row_item_x { + display: none; + } + } + + &:nth-child(1) { + border: 2px solid #03D2B5; + + .scroll_item_row_item_x { + background-color: #03D2B5; + } + } + + &:nth-child(2) { + border: 2px solid #03D2B5; + } + + img { + width: 17px; + height: 13px; + } + + span { + font-size: 12px; + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 400; + color: #01D9FE; + } + + .scroll_item_row_item_wz { + white-space: nowrap; + position: absolute; + bottom: -10px; + left: 50%; + transform: translate(-50%, 45%); + font-size: 12px; + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 400; + color: #FFFFFF; + } + + .scroll_item_row_item_x { + position: absolute; + right: -85%; + top: 50%; + transform: translate(0, -50%); + width: 19px; + height: 2px; + background-color: #01D9FE; + } + } + } + } + } } - .content_center { - flex: 2; - margin: 0 40px; - background-color: aquamarine; - } - .content_right { + } + + .content_center_top_form1 { + width: 100%; + padding: 20px; + box-sizing: border-box; + height: calc(100% - 38px); + + .content_center_top_form_head { + width: 100%; + height: 34px; + background: rgba(52, 88, 159, 0.5); + display: flex; + align-items: center; + + .content_center_top_form_head_item { flex: 1; - background-color: aquamarine; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + font-size: 13px; + font-family: PingFangSC-Medium, PingFang SC; + font-weight: 500; + color: #01D9FE; + } } + + .main_container { + width: 100%; + height: calc(100% - 34px); + + .scroll_container { + width: 100%; + height: 100%; + overflow: hidden; + + .scroll_item_bg1 { + background: rgba(52, 88, 159, 0.2); + } + + .scroll_item_bg2 { + background: rgba(52, 88, 159, 0.5); + } + + .scroll_item { + width: 100%; + height: 35px; + display: flex; + align-items: center; + + .scroll_item_row { + flex: 1; + height: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: flex; + align-items: center; + font-size: 13px; + justify-content: center; + color: #FFFFFF; + + .scroll_item_row_item { + width: 29px; + height: 29px; + border-radius: 50%; + margin-right: 19px; + display: flex; + align-items: center; + justify-content: center; + border: 2px solid #01D9FE; + } + } + } + } + } + } } -</style> + + .content_center_bottom { + width: 100%; + // height: 284px; + height: calc(100vh - 690px); + flex: 2; + .content_center_bottom_head { + width: 100%; + height: 38px; + line-height: 38px; + padding-left: 34px; + box-sizing: border-box; + background: linear-gradient(270deg, rgba(21, 103, 255, 0) 0%, rgba(21, 103, 255, 0.61) 100%); + border-radius: 10px 0px 0px 0px; + background: url('@/assets/img/gongxu_title@2x.png'); + background-repeat: no-repeat; + background-size: 100% 100%; + + span { + font-size: 16px; + font-family: SourceHanSansSC-Bold, SourceHanSansSC; + font-weight: bold; + color: #FFFFFF; + text-shadow: 0px 0px 10px rgba(0, 24, 72, 0.75); + } + } + + .content_center_bottom_b { + width: 100%; + height: calc(100% - 38px); + padding: 20px; + box-sizing: border-box; + background: linear-gradient(180deg, rgba(52, 88, 159, 0) 0%, rgba(0, 86, 255, 0.4) 100%); + + .content_center_top_form_head { + width: 100%; + height: 34px; + background: rgba(52, 88, 159, 0.5); + display: flex; + align-items: center; + + .content_center_top_form_head_item { + flex: 1; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + font-size: 13px; + font-family: PingFangSC-Medium, PingFang SC; + font-weight: 500; + color: #01D9FE; + + &:nth-child(4) { + flex: 2; + } + } + } + + .main_container { + width: 100%; + height: calc(100% - 33px); + + .scroll_container { + width: 100%; + height: 100%; + overflow: hidden; + + .scroll_item_bg1 { + background: rgba(52, 88, 159, 0.2); + } + + .scroll_item_bg2 { + background: rgba(52, 88, 159, 0.5); + } + + .scroll_item { + width: 100%; + height: 35px; + display: flex; + align-items: center; + + .scroll_item_row { + flex: 1; + height: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: flex; + font-size: 13px; + align-items: center; + justify-content: center; + color: #FFFFFF; + + &:nth-child(4) { + flex: 2; + } + } + } + } + } + } + } + } + + .content_right { + flex: 1; + .content_right_top { + width: 100%; + height: 425px; + margin-bottom: 20px; + + .content_right_top_head { + width: 100%; + height: 38px; + line-height: 38px; + padding-left: 34px; + box-sizing: border-box; + background: url('@/assets/img/home_title_short@2x.png'); + background-repeat: no-repeat; + background-size: 100% 100%; + + span { + font-size: 16px; + font-family: SourceHanSansSC-Bold, SourceHanSansSC; + font-weight: bold; + color: #FFFFFF; + text-shadow: 0px 0px 10px rgba(0, 24, 72, 0.75); + } + } + + .content_right_top_nr { + width: 100%; + height: calc(100% - 38px); + background: linear-gradient(180deg, rgba(52, 88, 159, 0) 0%, rgba(0, 86, 255, 0.4) 100%); + position: relative; + #pieChart { + width: 100%; + height: 100%; + } + .content_right_top_nr_bottom_yuan { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 999; + width: 100px; + height: 100px; + border-radius: 50%; + border: 2px dashed #01D9FE; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + span { + &:first-child { + font-size: 26px; + font-family: SourceHanSansSC-Medium, SourceHanSansSC; + font-weight: 500; + color: #FFFFFF; + } + + &:last-child { + font-size: 13px; + font-family: SourceHanSansSC-Regular, SourceHanSansSC; + font-weight: 400; + color: rgba(255, 255, 255, 0.8); + } + } + } + + .content_right_top_nr_top { + width: 100%; + height: 50%; + padding: 10px 0 0 10px; + box-sizing: border-box; + } + + .content_right_top_nr_bottom { + width: 100%; + height: 50%; + position: relative; + } + } + } + + .content_right_bottom { + width: 100%; + // height: 284px; + + height: calc(100vh - 690px); + .content_right_bottom_head { + width: 100%; + height: 38px; + line-height: 38px; + padding-left: 34px; + box-sizing: border-box; + background: url('@/assets/img/home_title_short@2x.png'); + background-repeat: no-repeat; + background-size: 100% 100%; + + span { + font-size: 16px; + font-family: SourceHanSansSC-Bold, SourceHanSansSC; + font-weight: bold; + color: #FFFFFF; + text-shadow: 0px 0px 10px rgba(0, 24, 72, 0.75); + } + } + + .content_right_bottom_nr { + width: 100%; + height: calc(100% - 38px); + padding: 20px; + box-sizing: border-box; + background: linear-gradient(180deg, rgba(52, 88, 159, 0) 0%, rgba(0, 86, 255, 0.4) 100%); + + .item2_content_head { + width: 100%; + height: 35px; + display: flex; + align-items: center; + background: rgba(52, 88, 159, 0.5); + + .item2_content_head_item { + flex: 1; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + font-size: 13px; + font-family: PingFangSC-Medium, PingFang SC; + font-weight: 500; + color: #01D9FE; + + &:first-child { + flex: 2; + } + } + } + + .main_container { + width: 100%; + height: calc(100% - 35px); + + .scroll_container { + width: 100%; + height: 100%; + overflow: hidden; + + .scroll_item_bg1 { + background: rgba(52, 88, 159, 0.2); + } + + .scroll_item_bg2 { + background: rgba(52, 88, 159, 0.5); + } + + .scroll_item { + width: 100%; + height: 35px; + display: flex; + align-items: center; + + .scroll_item_row { + flex: 1; + height: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 13px; + display: flex; + align-items: center; + justify-content: center; + color: #FFFFFF; + + &:first-child { + flex: 2; + } + } + } + } + } + } + } + } +}</style> \ No newline at end of file -- Gitblit v1.9.3