From 9e551347cd3b2382ae063b702d20ce4aa7db8505 Mon Sep 17 00:00:00 2001 From: cqf <2252655793@qq.com> Date: 星期一, 23 五月 2022 17:58:37 +0800 Subject: [PATCH] 饼图数据加载 --- src/views/chartAnalysis/index.vue | 940 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 737 insertions(+), 203 deletions(-) diff --git a/src/views/chartAnalysis/index.vue b/src/views/chartAnalysis/index.vue index fcec2d9..cd22bff 100644 --- a/src/views/chartAnalysis/index.vue +++ b/src/views/chartAnalysis/index.vue @@ -1,91 +1,78 @@ <template> <div> <div class="whole_top"> - <el-form ref="form" :inline="true" :model="form" label-width="100px"> + <el-form ref="form" :inline="true" :model="formData"> <div class="top"> - <div class="select"> - <el-form-item> - <el-select v-model="value1" multiple placeholder="请选择" style="color: red"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item> - <el-select v-model="value2" multiple placeholder="请选择" style="color: red"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item> - <el-select v-model="value3" multiple placeholder="请选择" style="color: red"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item> - <el-select v-model="value4" multiple placeholder="请选择" style="color: red"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item> - <el-select v-model="value5" multiple placeholder="请选择" style="color: red"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item> - <el-select v-model="value6" multiple placeholder="请选择" style="color: red"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - </div> - <el-form-item> - <el-radio-group v-model="radio" style="padding: 20px 0;"> - <el-radio :label="1">按隐患部门</el-radio> - <el-radio :label="2">按专业</el-radio> - <el-radio :label="3">按级别</el-radio> - <el-radio :label="4">按检查类别</el-radio> - <el-radio :label="5">按检查单位(上级单位)</el-radio> - <el-radio :label="6">按检查单位(本部单位)</el-radio> + <el-form-item label="类别:"> + <el-checkbox-group v-model="formData.ht_typesub"> + <el-checkbox v-for="item in YHLXList" :key="item.value" :value="item.value" + :label="item.value"></el-checkbox> + </el-checkbox-group> + </el-form-item> + <el-form-item label="级别:"> + <el-checkbox-group v-model="formData.level"> + <el-checkbox v-for="item in YHJBList" :key="item.value" :value="item.value" + :label="item.value"></el-checkbox> + </el-checkbox-group> + </el-form-item> + <el-form-item label="上级单位:"> + <el-checkbox-group v-model="formData.superior"> + <!-- <el-checkbox v-for="item in JCBMList" :label="item.value"></el-checkbox>--> + <el-checkbox v-for="item in JCBMList" :key="item.value" :value="item.value" + :label="item.value"></el-checkbox> + </el-checkbox-group> + </el-form-item> + <el-form-item label="检查类别:" class="checkbox"> + <el-checkbox-group v-model="formData.checktype"> + <el-checkbox v-for="item in JCLBList" :key="item.value" :value="item.value" + :label="item.value"></el-checkbox> + </el-checkbox-group> + </el-form-item> + <el-form-item label="当前警情:"> + <el-checkbox-group v-model="formData.curWarningLevel"> + <el-checkbox label="轻警"></el-checkbox> + <el-checkbox label="低警"></el-checkbox> + <el-checkbox label="中警"></el-checkbox> + <el-checkbox label="重警"></el-checkbox> + </el-checkbox-group> + </el-form-item> + <el-form-item style="margin-left: 30px;"> + <el-radio-group v-model="formData.model"> + <el-radio label="1">按隐患单位</el-radio> + <el-radio label="2">按类别</el-radio> + <el-radio label="3">按级别</el-radio> + <el-radio label="4">按检查单位</el-radio> + <el-radio label="5">按录入单位</el-radio> + <el-radio label="6">按检查类别</el-radio> + <el-radio label="7">按当前警情</el-radio> + </el-radio-group> + <el-radio-group v-model="chartType" style="margin-left: 50px;"> + <el-radio label="line">曲线图</el-radio> + <el-radio label="pie">饼状图</el-radio> + <el-radio label="column">柱形图</el-radio> </el-radio-group> </el-form-item> - <el-radio-group v-model="radio"> - <el-radio :label="1">按隐患部门</el-radio> - <el-radio :label="2">按专业</el-radio> - <el-radio :label="3">按级别</el-radio> - <el-radio :label="4">按检查类别</el-radio> - <el-radio :label="5">按检查单位(上级单位)</el-radio> - <el-radio :label="6">按检查单位(本部单位)</el-radio> - </el-radio-group> </div> - <div class="center" style="text-align: center;padding-top: 10px;"> - <el-form-item label="检查时间:"> + <div class="center"> + <el-form-item label="已选单位:"> + <el-input autosize v-model="form.name"></el-input> + </el-form-item> + <el-form-item autosize label="已选类别:"> + <el-input v-model="formData.ht_typesub.join(',')"></el-input> + </el-form-item> + <el-form-item label="已选级别:"> + <el-input v-model="formData.level.join(',')"></el-input> + </el-form-item> + <el-form-item label="已选上级单位:"> + <el-input v-model="formData.superior.join(',')"></el-input> + </el-form-item> + <el-form-item label="已选检查类别:"> + <el-input v-model="formData.checktype.join(',')"></el-input> + </el-form-item> + <el-form-item label="已选当前警情:"> + <el-input v-model="formData.curWarningLevel.join(',')"></el-input> + </el-form-item> + <el-form-item label="检查时间:" class="time"> <el-date-picker v-model="time" type="daterange" @@ -95,154 +82,701 @@ </el-date-picker> </el-form-item> <el-form-item> - <el-button class="btn" size="small" type="primary" @click="close()" - >汇总</el-button> - <el-button class="btn" size="small" type="primary" @click="close()" - >导出Excel</el-button> + <el-button class="btn" size="small" type="primary" @click="getData()" + >汇总 + </el-button> + <el-button class="btn" size="small" type="primary" @click="close()" + >同比环比 + </el-button> </el-form-item> </div> </el-form> - <el-table - :data="tableData" - style="width: 100%"> - <el-table-column align="center" label="众泰煤焦化-安全隐患台帐"> - <el-table-column - prop="name" - label="隐患部门\隐患专业" - align="center"> - </el-table-column> - <el-table-column - prop="province" - label="采掘" - align="center"> - </el-table-column> - <el-table-column - prop="city" - label="生产" - width="120" - align="center"> - </el-table-column> - <el-table-column - prop="address" - label="合计" - width="300" - align="center"> - </el-table-column> - </el-table-column> - </el-table> - <div style="color: #c5021a;margin-top: 20px;"> - <div>温馨提示:</div> - <div>点选可查询隐患详情。</div> - </div> + </div> + <div class="whole_bottom"> + <div v-if="chartType == 'pie'" id="pie" style="width: 100%;height: 550px;"></div> + <div v-if="chartType == 'line'" id="line" style="width: 100%;height: 550px;"></div> + <div v-if="chartType == 'column'" id="column" style="width: 100%;height: 650px;"></div> </div> </div> </template> - <script> +import {echarts} from "../../global"; +import {chart_analysis} from "@/api/sgyhpczl/chartAnalysis"; +import { + initJCBM, + initYHLX, + initBC, + initJCLB, + initYHBM, + initYHJB, + initLlr, + initReformStatus +} from "@/api/sgyhpczl/initSelect"; + +// 导入chart组件 +import Highcharts from "highcharts/highstock"; +import loadExporting from "highcharts/modules/exporting"; +import exportExcel from "highcharts/modules/export-data.src"; +import highcharts3d from 'highcharts/highcharts-3d' + +loadExporting(Highcharts); +exportExcel(Highcharts); +highcharts3d(Highcharts) + + export default { name: "index", data() { return { - options: [{ - value: '选项1', - label: '安全环保部' - }, { - value: '选项2', - label: '生产技术部' - }, { - value: '选项3', - label: '企管部' - }, { - value: '选项4', - label: '消防保卫部' - }, { - value: '选项5', - label: '质检中心' - }], - value1: [], - value2: [], - value3: [], - value4: [], - value5: [], - value6: [], - radio: 3, - time: '', - tableData: [{ - name: '财务部', - province: '1', - city: '4', - address: '1' - }, { - name: '党委副书记', - province: '0', - city: '2', - address: '0' - }, { + form: { name: '众泰煤焦化', - province: '2', - city: '3', - address: '1' - }, { - name: '王小虎', - province: '3', - city: '9', - address: '2' - }] + time: '', + category: '生产', + level: '一般隐患D', + superiorUnit: '新疆能源', + inspectionCategory: '日常检查', + policeSituation: '轻警', + chart: null, + }, + formData: { + "echart_type": "line", //line:折线图;column:柱状图;pie :饼状图 + "model": "1", //0: + "beginTime": "", //开始时间 + "endTime": "", //结束时间 + "ht_typesub": [], //隐患类别 + "level": [], //隐患级别 + "superior": [], //上级单位 + "checktype": [], //检查类别 + "curWarningLevel": [] //警情 + }, + categoryList: ['生产'], + levelList: ['一般隐患D'], + superiorUnitList: ['新疆能源'], + inspectionCategoryList: ['日常检查'], + policeSituationList: ['轻警'], + radio: 1, + chartType: "line", + columnChartData: {}, + lineChartData: {}, + time: [], + pieChartData: [], + JCBMList: [], + YHLXList: [], + BCList: [], + JCLBList: [], + YHBMList: [], + YHJBList: [], + YHZTList: [], } - } + }, + mounted() { + this.time.push(this.getCurrentMonthFirst(), this.getCurrentMonthLast()); + this.initYHLX() + this.initYHJB() + this.initBC() + this.initJCLB() + this.initLlr() + this.initYHBM() + this.initYHZT() + this.changeJCDW(0) + this.getData() + }, + watch: { + "chartType": function (newVal, oldVal) { + this.formData.echart_type = newVal; + console.log(this.formData.echart_type) + this.getData(); + } + }, + methods: { + initYHLX() { + initYHLX().then(res => { + if (res.data.ok == 1) { + this.YHLXList = res.data.data + } else { + this.$message({type: 'error', message: res.data.msg, duration: 3000}) + } + }) + }, + initYHJB() { + initYHJB().then(res => { + if (res.data.ok == 1) { + this.YHJBList = res.data.data + } else { + this.$message({type: 'error', message: res.data.msg, duration: 3000}) + } + }) + }, + initYHZT() { + initReformStatus().then(res => { + if (res.data.ok == 1) { + this.YHZTList = res.data.data + console.log(this.YHZTList) + } else { + this.$message({type: 'error', message: res.data.msg, duration: 3000}) + } + }) + }, + initBC() { + initBC().then(res => { + if (res.data.ok == 1) { + this.BCList = res.data.data + } else { + this.$message({type: 'error', message: res.data.msg, duration: 3000}) + } + }) + }, + initJCLB() { + initJCLB().then(res => { + if (res.data.ok == 1) { + this.JCLBList = res.data.data + } else { + this.$message({type: 'error', message: res.data.msg, duration: 3000}) + } + }) + }, + initLlr() { + initLlr().then(res => { + if (res.data.ok == 1) { + this.llrList = res.data.data + } else { + this.$message({type: 'error', message: res.data.msg, duration: 3000}) + } + }) + }, + initYHBM() { + initYHBM().then(res => { + if (res.data.ok == 1) { + this.YHBMList = res.data.data + } else { + this.$message({type: 'error', message: res.data.msg, duration: 3000}) + } + }) + }, + changeJCDW(val) { + initJCBM(val).then(res => { + if (res.data.ok == 1) { + this.JCBMList = res.data.data + } else { + this.$message({type: 'error', message: res.data.msg, duration: 3000}) + } + }) + }, + // 饼图 + initEacharts3() { + var option = { + chart: { + type: 'pie', + options3d: { + enabled: true, + alpha: 45, + beta: 0 + } + }, + title: { + text: '众泰煤焦化合隐患单位隐患比例分析', + style: { + fontWeight: "bold" + } + }, + tooltip: { + pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' + }, + plotOptions: { + pie: { + allowPointSelect: true, + cursor: 'pointer', + depth: 35, + dataLabels: { + enabled: true, + format: '{point.name}:' + ' {point.y}%' + } + } + }, + exporting: { + enabled: false //去掉右上角 + }, + credits: { + enabled: false //不显示LOGO + }, + series: [{ + type: 'pie', + name: '浏览器占比', + data: this.pieChartData + }] + } + Highcharts.chart("pie", option); + }, + getData() { + this.formData.beginTime = this.time[0] + this.formData.endTime = this.time[1] + let requestData = JSON.parse(JSON.stringify(this.formData)); + console.log(requestData) + requestData.ht_typesub = requestData.ht_typesub.join(",") + requestData.level = requestData.level.join(",") + requestData.superior = requestData.superior.join(",") + requestData.checktype = requestData.checktype.join(",") + requestData.curWarningLevel = requestData.curWarningLevel.join(",") + + chart_analysis(requestData).then(res => { + let data = res.data; + if (data.ok) { + console.log(this.formData.echart_type) + if (this.formData.echart_type == "column") { + this.columnChartData = {}; + let xList = []; + let dataList = []; + if (data.data != null && data.data.length > 0) { + data.data[0].forEach(n => { + xList.push(n.graph); + let singleData = { + "name": n.graph, + "type": 'bar', + "label": "labelOption", + "emphasis": { + focus: 'series' + }, + "data": [n.yAxes] + } + dataList.push(singleData); + }) + } + this.columnChartData.xList = xList; + this.columnChartData.dataList = dataList; + this.initCloumnChart() + } else if (this.formData.echart_type == "line") { + this.lineChartData = {} + let dataList = []; + let timeList = []; + if (data.data != null && data.data.length > 0) { + data.data[0].forEach(n => { + if (timeList.indexOf(n.days) == -1) { + timeList.push(n.days) + } + let obj = dataList.find(v => v.name == n.catalogy); + if (obj == null) { + // obj.data.push(n.counts); + obj = { + name: n.catalogy, + data: [], + type: 'line', + areaStyle: {} + } + dataList.push(obj) + } + }) + timeList.forEach(time => { + let singileData = data.data[0].filter(n => n.days == time) + dataList.forEach(n => { + let searchData = singileData.find(v => v.catalogy == n.name); + if (searchData != null) { + n.data.push(searchData.counts) + } else { + n.data.push(0) + } + }) + }) + } + this.lineChartData.timeList = timeList; + this.lineChartData.dataList = dataList; + console.log(this.lineChartData) + this.initLineChart() + } else { + this.pieChartData = [] + data.data[0].forEach(n => { + var datas = { + name: n.chartName, + y: parseInt(n.chartValue), + sliced: true, + selected: false + }; + this.pieChartData.push(datas); + }) + this.initEacharts3(); + } + } + + }) + }, + initChart() { + // 柱形图 + var chartDom = document.getElementById('column'); + // var chartDom = document.getElementById('myChart'); + var myChart = echarts.init(chartDom); + var option = { + title: { + text: '众泰煤焦化各隐患单位隐患走势分析', + left: 'center' + }, + legend: { + bottom: 0, + // textStyle: { + // color: '#ffffff' + // }, + }, + grid: { + left: '3%', + right: '4%', + bottom: '5%', + containLabel: true + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: this.lineChartData.timeList + }, + yAxis: { + type: 'value' + }, + color: ['#9a0202', '#02cccc', '#0202ff', '#ff9a02', '#02ff02', '#CC02CCFF', '#35FF02FF', '#CCFF67FF', '#35CC67FF', '#9A0202FF'], + series: this.lineChartData.dataList + } + // 使用刚指定的配置项和数据显示图表。 + myChart.setOption(option) + }, + initLineChart() { + // 折线图 + var chartDom = document.getElementById('line'); + // var chartDom = document.getElementById('myChart'); + var myChart = echarts.init(chartDom); + var option = { + title: { + text: '众泰煤焦化各隐患单位隐患走势分析', + left: 'center' + }, + legend: { + bottom: 0, + // textStyle: { + // color: '#ffffff' + // }, + }, + grid: { + left: '3%', + right: '4%', + bottom: '5%', + containLabel: true + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: this.lineChartData.timeList + // data: ['2022-05-01', '', '2022-05-03', '', '2022-05-05', '', '2022-05-07', '', '2022-05-09', '', '2022-05-11'] + }, + yAxis: { + type: 'value' + }, + color: ['#9a0202', '#02cccc', '#0202ff', '#ff9a02', '#02ff02', '#CC02CCFF', '#35FF02FF', '#CCFF67FF', '#35CC67FF', '#9A0202FF'], + series: this.lineChartData.dataList + // series: [ + // { + // name: '电仪车间', + // data: [50, 35, 63, 64, 79, 95, 104, 50, 35, 63, 64], + // type: 'line', + // areaStyle: {} + // } + // ] + } + // 使用刚指定的配置项和数据显示图表。 + myChart.setOption(option) + }, + initCloumnChart() { + // 柱形图 + var chartDom = document.getElementById('column'); + var myChart = echarts.init(chartDom); + var option; + const posList = [ + 'left', + 'right', + 'top', + 'bottom', + 'inside', + 'insideTop', + 'insideLeft', + 'insideRight', + 'insideBottom', + 'insideTopLeft', + 'insideTopRight', + 'insideBottomLeft', + 'insideBottomRight' + ]; + app.configParameters = { + rotate: { + min: -90, + max: 90 + }, + align: { + options: { + left: 'left', + center: 'center', + right: 'right' + } + }, + verticalAlign: { + options: { + top: 'top', + middle: 'middle', + bottom: 'bottom' + } + }, + position: { + options: posList.reduce(function (map, pos) { + map[pos] = pos; + return map; + }, {}) + }, + distance: { + min: 0, + max: 100 + } + }; + app.config = { + rotate: 90, + align: 'left', + verticalAlign: 'middle', + position: 'insideBottom', + distance: 15, + onChange: function () { + const labelOption = { + rotate: app.config.rotate, + align: app.config.align, + verticalAlign: app.config.verticalAlign, + position: app.config.position, + distance: app.config.distance + }; + myChart.setOption({ + series: [ + { + label: labelOption + }, + { + label: labelOption + }, + { + label: labelOption + }, + { + label: labelOption + } + ] + }); + } + }; + const labelOption = { + show: false, + position: app.config.position, + distance: app.config.distance, + align: app.config.align, + verticalAlign: app.config.verticalAlign, + rotate: app.config.rotate, + formatter: '{c} {name|{a}}', + fontSize: 16, + rich: { + name: {} + } + }; + console.log(this.columnChartData) + this.columnChartData.dataList.forEach(n => { + n.label = labelOption; + }) + option = { + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + } + }, + legend: { + bottom: 0, + data: this.columnChartData.xList + // data: ['安全环保部', '电仪车间', '干熄焦', '工程部','化产二车间', '化产一车间', '机电部', '炼焦二车间','炼焦一车间', '生产技术部', '消防保卫部', '选煤厂', '原料二车间', '原料一车间', '众和机电'] + }, + grid: { + left: '3%', + right: '4%', + containLabel: true + }, + // toolbox: { + // show: true, + // orient: 'vertical', + // left: 'right', + // top: 'center', + // feature: { + // mark: { show: true }, + // dataView: { show: true, readOnly: false }, + // magicType: { show: true, type: ['line', 'bar', 'stack'] }, + // restore: { show: true }, + // saveAsImage: { show: true } + // } + // }, + xAxis: [ + { + type: 'category', + axisTick: {show: false}, + data: this.columnChartData.xList + // data: ['2012', '2013', '2014', '2015', '2016'] + } + ], + yAxis: [ + { + type: 'value' + } + ], + series: this.columnChartData.dataList + // series: [ + // { + // name: '安全环保部', + // type: 'bar', + // label: labelOption, + // emphasis: { + // focus: 'series' + // }, + // data: [320] + // } + // ] + }; + // 使用刚指定的配置项和数据显示图表。 + myChart.setOption(option) + }, + getCurrentMonthFirst() { + var date = new Date(); + date.setDate(1); + var month = parseInt(date.getMonth() + 1); + var day = date.getDate(); + if (month < 10) { + month = '0' + month + } + if (day < 10) { + day = '0' + day + } + + return date.getFullYear() + '-' + month + '-' + day; + }, + getCurrentMonthLast() { + var date = new Date(); + var currentMonth = date.getMonth(); + var nextMonth = ++currentMonth; + var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1); + var oneDay = 1000 * 60 * 60 * 24; + var lastTime = new Date(nextMonthFirstDay - oneDay); + var month = parseInt(lastTime.getMonth() + 1); + var day = lastTime.getDate(); + if (month < 10) { + month = '0' + month + } + if (day < 10) { + day = '0' + day + } + return date.getFullYear() + '-' + month + '-' + day; + }, + }, + + } </script> <style scoped> -.top{ +.top { padding: 10px 5px; background: #e4edf4; + display: flex; + flex-direction: column; } -/*下拉框图标隐藏*/ -.whole_top .select /deep/ .el-input__suffix-inner .is-reverse{ - display: none; + +.top /deep/ .el-form-item__label { + width: 110px; } -.whole_top .select /deep/ .el-input__suffix-inner .el-icon-arrow-up{ - display: none; + +.top /deep/ .el-form-item { + margin-bottom: 5px; } -/*设下拉框颜色*/ -.select /deep/.el-input__inner { - border: 1px solid #c5dbec; - font-weight: bold; - background: #dfeffc; - /*.el-icon-circle-close*/ + +/*多选框间距*/ +.checkbox /deep/ .el-checkbox-group { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; } -.whole_top .select /deep/.el-select .el-input__inner:focus { - color: #e6860b; + +.center { + text-align: center; + padding: 10px; + background: #ffffff; + margin: 10px 0; } -.select /deep/ .is-focus .el-select__tags-text{ - color: #000000; -} -/*下拉框选值之后的样式*/ -.select /deep/ .el-tag.el-tag--info { - background-color: transparent;; - border-color: transparent; - font-weight: bold; - color: #e6860b; -} -/*placeholder颜色修改*/ -.whole_top ::-webkit-input-placeholder { - color: #000000; -} -.whole_top :-moz-placeholder { - color: #000000; -} -.whole_top ::-moz-placeholder{ - color: #000000; -} -.whole_top :-ms-input-placeholder { - color: #000000; -} -/*日期*/ -/deep/ .el-date-editor .el-range-separator{ + +.center /deep/ .el-form-item__label { width: auto; + padding-right: 0; } -.btn{ + +.checkbox { + display: flex; +} + +/deep/ .el-checkbox { + margin-right: 7px; +} + +.checkbox /deep/ .el-checkbox { + margin-right: 0px; +} + +/deep/ .el-checkbox__label { + padding-left: 3px; +} + +.checkbox /deep/ .el-checkbox__label { + padding-left: 3px; +} + +/deep/ .el-radio { + margin-right: 7px; +} + +.center { + display: flex; + align-items: center; + justify-content: start; +} + +.center /deep/ .el-form-item--medium { + margin-bottom: 0px; + display: flex; +} + +.center /deep/ .el-input__inner { + border: transparent; + width: 85px; + padding: 0 5px; +} + +.center .time /deep/ .el-form-item__content { + width: 70%; +} + +.center .time /deep/ .el-input__inner { + width: 218px; +} + +.center .time /deep/ .el-range-input { + width: 90px; + border: 1px solid #DCDFE6; + border-radius: 4px; + padding: 0 5px; +} + +/deep/ .el-icon-date { + display: none; +} + +/*日期*/ +/deep/ .el-date-editor .el-range-separator { + width: auto; + line-height: 36px; +} + +.btn { background-color: #034ea2; border: 1px solid #034ea2; } -- Gitblit v1.9.2