552 lines
16 KiB
Vue
552 lines
16 KiB
Vue
|
|
<template>
|
|||
|
|
<div class="containerCount">
|
|||
|
|
<div class="showEach">
|
|||
|
|
<ul v-loading="parameterLoading" class="ovfd">
|
|||
|
|
<li>
|
|||
|
|
<h5>发布数据集数量</h5>
|
|||
|
|
<h4>{{ countList.getDataSetNumber }}</h4>
|
|||
|
|
<p>今日新增:{{ countList.todayDataSetNumber }}</p>
|
|||
|
|
</li>
|
|||
|
|
<li>
|
|||
|
|
<h5>发布文件数量</h5>
|
|||
|
|
<h4>{{ countList.getFileInfoNumber }}</h4>
|
|||
|
|
<p>今日新增:{{ countList.todayFileInfoNumber }}</p>
|
|||
|
|
</li>
|
|||
|
|
<li>
|
|||
|
|
<h5>发布文件体量</h5>
|
|||
|
|
<h4>{{ formatFileSize(countList.getPublishDataVolume) }}</h4>
|
|||
|
|
<p>今日新增:{{ countList.todayPublishDataVolume }}</p>
|
|||
|
|
</li>
|
|||
|
|
<li>
|
|||
|
|
<h5>下载量</h5>
|
|||
|
|
<h4>{{ countList.getDownLoadCountOfDataSet }}</h4>
|
|||
|
|
<p>今日新增:{{ countList.todayDownLoadCountOfDataSet }}</p>
|
|||
|
|
</li>
|
|||
|
|
<li>
|
|||
|
|
<h5>访问量</h5>
|
|||
|
|
<h4>{{ countList.getVisitInfoNumber }}</h4>
|
|||
|
|
<p>今日新增:{{ countList.todayVisitInfoNumber }}</p>
|
|||
|
|
</li>
|
|||
|
|
</ul>
|
|||
|
|
</div>
|
|||
|
|
<div class="con-content ovfd">
|
|||
|
|
<div class="ovfd">
|
|||
|
|
<div class="tabTurn">
|
|||
|
|
<el-tabs v-model="activeName" @tab-click="handleClick">
|
|||
|
|
<el-tab-pane label="下载量" name="downloads" />
|
|||
|
|
<el-tab-pane label="访问量" name="views" />
|
|||
|
|
</el-tabs>
|
|||
|
|
<!-- <ul>
|
|||
|
|
<li>Downloads</li>
|
|||
|
|
<li>Views</li>
|
|||
|
|
</ul> -->
|
|||
|
|
</div>
|
|||
|
|
<div class="dateBox">
|
|||
|
|
<div class="block">
|
|||
|
|
<span class="demonstration" />
|
|||
|
|
<el-date-picker
|
|||
|
|
v-model="dateRange"
|
|||
|
|
type="daterange"
|
|||
|
|
range-separator="至"
|
|||
|
|
start-placeholder="StartDate"
|
|||
|
|
end-placeholder="EndDate"
|
|||
|
|
unlink-panels
|
|||
|
|
/>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div style="width:100%;height:aoto;">
|
|||
|
|
<div v-loading="topLoading" class="countRight">
|
|||
|
|
<div v-if="activeName=='downloads'">
|
|||
|
|
<p>下载总体量 {{ formatFileSize(downLoadSum) }} 下载总次数 {{ downloadCount }}</p>
|
|||
|
|
<!-- <p>下载排名(top 5)</p> -->
|
|||
|
|
</div>
|
|||
|
|
<div v-else>
|
|||
|
|
<p>访问总量 {{ visitCount }}</p>
|
|||
|
|
<!-- <p>访问排名(top 5)</p> -->
|
|||
|
|
</div>
|
|||
|
|
<!-- <ul>
|
|||
|
|
<li v-for="(item,index) in topList" :key="index" @click="handleDetail(item.datasetId)">
|
|||
|
|
<h3 class="turnLink">{{ item.dataNameCN }}</h3>
|
|||
|
|
<h4>{{ item.total }}</h4>
|
|||
|
|
</li>
|
|||
|
|
</ul> -->
|
|||
|
|
</div>
|
|||
|
|
<div class="countLeft">
|
|||
|
|
<div id="echartsDraw" style="width: 100%; height: 700px;" />
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
<script>
|
|||
|
|
import {
|
|||
|
|
countTotal,
|
|||
|
|
statisticsByMonth,
|
|||
|
|
getTopData
|
|||
|
|
} from '@/api/releaseCount'
|
|||
|
|
import {
|
|||
|
|
getToken,
|
|||
|
|
getUser,
|
|||
|
|
getUserID
|
|||
|
|
} from '@/utils/auth' // get token from cookie
|
|||
|
|
export default {
|
|||
|
|
name: 'ReleaseCount',
|
|||
|
|
components: {},
|
|||
|
|
props: {},
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
topLoading: false,
|
|||
|
|
activeName: 'downloads',
|
|||
|
|
dateRange: null,
|
|||
|
|
parameterLoading: false,
|
|||
|
|
loading: false,
|
|||
|
|
startDate: null,
|
|||
|
|
endDate: null,
|
|||
|
|
downLoadInfoList: [],
|
|||
|
|
topList: [],
|
|||
|
|
countList: {
|
|||
|
|
getBurstEventNumber: 0,
|
|||
|
|
getDataSetNumber: 0,
|
|||
|
|
getFileInfoNumber: 0,
|
|||
|
|
getPublishDataVolume: 0,
|
|||
|
|
getTrigEventNumber: 0,
|
|||
|
|
getVisitInfoNumber: 0,
|
|||
|
|
getdownLoadCountOfDataSet: 0,
|
|||
|
|
todayDataSetNumber: 0,
|
|||
|
|
todayDownLoadCountOfDataSet: 0,
|
|||
|
|
todayFileInfoNumber: 0,
|
|||
|
|
todayPublishDataVolume: 0,
|
|||
|
|
todayVisitInfoNumber: 0
|
|||
|
|
},
|
|||
|
|
pickerOptions: {
|
|||
|
|
shortcuts: [{
|
|||
|
|
text: '最近一周',
|
|||
|
|
onClick(picker) {
|
|||
|
|
const end = new Date()
|
|||
|
|
const start = new Date()
|
|||
|
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
|
|||
|
|
picker.$emit('pick', [start, end])
|
|||
|
|
}
|
|||
|
|
}, {
|
|||
|
|
text: '最近一个月',
|
|||
|
|
onClick(picker) {
|
|||
|
|
const end = new Date()
|
|||
|
|
const start = new Date()
|
|||
|
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
|
|||
|
|
picker.$emit('pick', [start, end])
|
|||
|
|
}
|
|||
|
|
}, {
|
|||
|
|
text: '最近三个月',
|
|||
|
|
onClick(picker) {
|
|||
|
|
const end = new Date()
|
|||
|
|
const start = new Date()
|
|||
|
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
|
|||
|
|
picker.$emit('pick', [start, end])
|
|||
|
|
}
|
|||
|
|
}]
|
|||
|
|
},
|
|||
|
|
downLoadMonth: [],
|
|||
|
|
viewMonth: [],
|
|||
|
|
sizeList: [],
|
|||
|
|
downLoadSum: 0,
|
|||
|
|
downloadCount: 0,
|
|||
|
|
visitCount: 0
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
watch: {
|
|||
|
|
dateRange(newValue) {
|
|||
|
|
if (newValue && newValue.length) {
|
|||
|
|
// debugger
|
|||
|
|
if (newValue[0] && typeof (newValue[0]) !== 'string') {
|
|||
|
|
this.startDate = this.time(newValue[0])
|
|||
|
|
}
|
|||
|
|
if (newValue[1] && typeof (newValue[1]) !== 'string') {
|
|||
|
|
this.endDate = this.time(newValue[1])
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
this.handleClick()
|
|||
|
|
} else {
|
|||
|
|
this.startDate = null
|
|||
|
|
this.endDate = null
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
created() {},
|
|||
|
|
mounted() {
|
|||
|
|
this.endDate = this.time(new Date(), 'lastMonth')
|
|||
|
|
this.startDate = this.time(new Date(), 'lastYear')
|
|||
|
|
this.dateRange = [this.startDate, this.endDate]
|
|||
|
|
console.log(this.startDate, this.endDate)
|
|||
|
|
this.handleClick()
|
|||
|
|
this.getCount()
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
formatFileSize(limit) {
|
|||
|
|
var size = ''
|
|||
|
|
if (!limit) {
|
|||
|
|
return '0B'
|
|||
|
|
}
|
|||
|
|
if (limit < 0.1 * 1024) { // 小于0.1KB,则转化成B
|
|||
|
|
size = limit.toFixed(2) + 'B'
|
|||
|
|
} else if (limit < 0.1 * 1024 * 1024) { // 小于0.1MB,则转化成KB
|
|||
|
|
size = (limit / 1024).toFixed(2) + 'KB'
|
|||
|
|
} else if (limit < 0.1 * 1024 * 1024 * 1024) { // 小于0.1GB,则转化成MB
|
|||
|
|
size = (limit / (1024 * 1024)).toFixed(2) + 'MB'
|
|||
|
|
} else { // 其他转化成GB
|
|||
|
|
size = (limit / (1024 * 1024 * 1024)).toFixed(2) + 'GB'
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
var sizeStr = size + '' // 转成字符串
|
|||
|
|
var index = sizeStr.indexOf('.') // 获取小数点处的索引
|
|||
|
|
var dou = sizeStr.substr(index + 1, 2) // 获取小数点后两位的值
|
|||
|
|
// eslint-disable-next-line eqeqeq
|
|||
|
|
if (dou == '00') { // 判断后两位是否为00,如果是则删除00
|
|||
|
|
return sizeStr.substring(0, index) + sizeStr.substr(index + 3, 2)
|
|||
|
|
}
|
|||
|
|
return size
|
|||
|
|
},
|
|||
|
|
// 获取统计列表
|
|||
|
|
async getCount() {
|
|||
|
|
const _this = this
|
|||
|
|
this.parameterLoading = true
|
|||
|
|
const data = {
|
|||
|
|
webInfo: window.sessionStorage.getItem('webInfo')
|
|||
|
|
}
|
|||
|
|
try {
|
|||
|
|
const res = await countTotal(data)
|
|||
|
|
if (res.data) {
|
|||
|
|
_this.countList = JSON.parse(JSON.stringify(res.data))
|
|||
|
|
console.log(_this.countList)
|
|||
|
|
// this.countList.getDownLoadCountOfDataSet=res.data.getDownLoadCountOfDataSet
|
|||
|
|
}
|
|||
|
|
} catch (error) {
|
|||
|
|
console.log(error)
|
|||
|
|
}
|
|||
|
|
this.parameterLoading = false
|
|||
|
|
},
|
|||
|
|
async init(data) {
|
|||
|
|
this.topLoading = true
|
|||
|
|
try {
|
|||
|
|
const res = await getTopData(data)
|
|||
|
|
if (res.downLoadInfoList) {
|
|||
|
|
this.topList = res.downLoadInfoList
|
|||
|
|
this.downLoadSum = res.downLoadSum
|
|||
|
|
this.downloadCount = res.downloadCount
|
|||
|
|
} else if (res.visitInfoList) {
|
|||
|
|
this.topList = res.visitInfoList
|
|||
|
|
this.visitCount = res.visitCount
|
|||
|
|
// this.topList = []
|
|||
|
|
// this.downLoadSum = 0
|
|||
|
|
// this.downloadCount = 0
|
|||
|
|
}
|
|||
|
|
this.topLoading = false
|
|||
|
|
} catch (error) {
|
|||
|
|
console.log(error)
|
|||
|
|
this.topLoading = false
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
handleDetail(datasetId) {
|
|||
|
|
const jsid = getToken()
|
|||
|
|
const cu = getUser()
|
|||
|
|
const userID = getUserID()
|
|||
|
|
// this.$router.push({name:"baseDetail",query:{dataSetName:row.dataSetName,userID:window.sessionStorage.getItem("userID")}})
|
|||
|
|
window.open(process.env.VUE_APP_BASE_API_FRONT + '?jsessionid=' + jsid + '&cu=' + cu + '&userId=' + userID + '#/container/dataSetDetail' + '?datasetId=' + datasetId)
|
|||
|
|
},
|
|||
|
|
// 传入一个需要排序的数组
|
|||
|
|
MsgSort(obj) {
|
|||
|
|
obj.sort((a, b) => {
|
|||
|
|
const t1 = new Date(Date.parse(a.date.replace(/-/g, '/')))
|
|||
|
|
const t2 = new Date(Date.parse(b.date.replace(/-/g, '/')))
|
|||
|
|
return t1.getTime() - t2.getTime()
|
|||
|
|
})
|
|||
|
|
return obj
|
|||
|
|
},
|
|||
|
|
async handleClick() {
|
|||
|
|
this.loading = true
|
|||
|
|
const countList = []; const sizeList = []; const downLoadMonth = []; const viewMonth = []
|
|||
|
|
if (this.activeName === 'downloads') {
|
|||
|
|
const data = {
|
|||
|
|
startTime: this.startDate,
|
|||
|
|
endTime: this.endDate,
|
|||
|
|
webInfo: window.sessionStorage.getItem('webInfo'),
|
|||
|
|
statisticsFlag: 'downLoad'
|
|||
|
|
}
|
|||
|
|
this.init(data)
|
|||
|
|
try {
|
|||
|
|
const res = await statisticsByMonth(data)
|
|||
|
|
if (res) {
|
|||
|
|
const array = []
|
|||
|
|
let obj = {}; let arrary1 = []
|
|||
|
|
for (const a in res) {
|
|||
|
|
obj = {}
|
|||
|
|
obj.date = a
|
|||
|
|
obj.downSum = res[a].downSum
|
|||
|
|
obj.downloadCount = res[a].downloadCount
|
|||
|
|
array.push(obj)
|
|||
|
|
}
|
|||
|
|
arrary1 = this.MsgSort(array)
|
|||
|
|
arrary1.map(item => {
|
|||
|
|
downLoadMonth.push(item.date)
|
|||
|
|
countList.push(item.downloadCount)
|
|||
|
|
sizeList.push(item.downSum)
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
// this.downLoadInfoList = res
|
|||
|
|
// res.data.map(item => {
|
|||
|
|
// downLoadMonth.push(item.time)
|
|||
|
|
// countList.push(item.count)
|
|||
|
|
// sizeList.push(item.size)
|
|||
|
|
// })
|
|||
|
|
|
|||
|
|
const myChart = this.$echarts.init(
|
|||
|
|
document.getElementById('echartsDraw')
|
|||
|
|
)
|
|||
|
|
const option = {
|
|||
|
|
tooltip: {
|
|||
|
|
trigger: 'axis',
|
|||
|
|
axisPointer: {
|
|||
|
|
type: 'cross',
|
|||
|
|
crossStyle: {
|
|||
|
|
color: '#999'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
toolbox: {
|
|||
|
|
feature: {
|
|||
|
|
// dataView: { show: true, readOnly: false },
|
|||
|
|
// magicType: { show: true, type: ["line", "bar"] },
|
|||
|
|
// restore: { show: true },
|
|||
|
|
// saveAsImage: { show: true },
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
// legend: {
|
|||
|
|
// data: ['蒸发量', '平均温度']
|
|||
|
|
// },
|
|||
|
|
xAxis: [
|
|||
|
|
{
|
|||
|
|
type: 'category',
|
|||
|
|
data: downLoadMonth,
|
|||
|
|
axisPointer: {
|
|||
|
|
type: 'shadow'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
yAxis: [
|
|||
|
|
{
|
|||
|
|
type: 'value',
|
|||
|
|
name: '下载趋势',
|
|||
|
|
min: 0,
|
|||
|
|
max: 250,
|
|||
|
|
interval: 50,
|
|||
|
|
axisLabel: {
|
|||
|
|
// formatter: "{value} ml",
|
|||
|
|
formatter: '{value}'
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
type: 'value',
|
|||
|
|
name: 'MB',
|
|||
|
|
min: 0,
|
|||
|
|
max: 25,
|
|||
|
|
interval: 5,
|
|||
|
|
axisLabel: {
|
|||
|
|
// formatter: "{value} °C",
|
|||
|
|
formatter: '{value}'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
dataZoom: [{
|
|||
|
|
show: true
|
|||
|
|
}],
|
|||
|
|
series: [
|
|||
|
|
{
|
|||
|
|
// name: "蒸发量",
|
|||
|
|
type: 'bar',
|
|||
|
|
data: countList
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
// name: "平均温度",
|
|||
|
|
type: 'line',
|
|||
|
|
yAxisIndex: 1,
|
|||
|
|
data: sizeList
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
myChart.setOption(option, true)
|
|||
|
|
}
|
|||
|
|
} catch (error) {
|
|||
|
|
console.log(error)
|
|||
|
|
}
|
|||
|
|
this.loading = false
|
|||
|
|
} else {
|
|||
|
|
const data = {
|
|||
|
|
startTime: this.startDate,
|
|||
|
|
endTime: this.endDate,
|
|||
|
|
webInfo: window.sessionStorage.getItem('webInfo'),
|
|||
|
|
statisticsFlag: 'visit'
|
|||
|
|
}
|
|||
|
|
this.init(data)
|
|||
|
|
try {
|
|||
|
|
const res = await statisticsByMonth(data)
|
|||
|
|
if (res) {
|
|||
|
|
const array = []
|
|||
|
|
let obj = {}; let arrary1 = []
|
|||
|
|
for (const a in res) {
|
|||
|
|
obj = {}
|
|||
|
|
obj.date = a
|
|||
|
|
obj.visitCount = res[a].visitCount
|
|||
|
|
array.push(obj)
|
|||
|
|
}
|
|||
|
|
arrary1 = this.MsgSort(array)
|
|||
|
|
arrary1.map(item => {
|
|||
|
|
viewMonth.push(item.date)
|
|||
|
|
countList.push(item.visitCount)
|
|||
|
|
})
|
|||
|
|
const myChart = this.$echarts.init(
|
|||
|
|
document.getElementById('echartsDraw')
|
|||
|
|
)
|
|||
|
|
const option = {
|
|||
|
|
tooltip: {
|
|||
|
|
trigger: 'axis',
|
|||
|
|
axisPointer: {
|
|||
|
|
type: 'cross',
|
|||
|
|
crossStyle: {
|
|||
|
|
color: '#999'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
xAxis: {
|
|||
|
|
type: 'category',
|
|||
|
|
data: viewMonth
|
|||
|
|
},
|
|||
|
|
yAxis:
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
type: 'value',
|
|||
|
|
name: '访问趋势',
|
|||
|
|
min: 0,
|
|||
|
|
max: 250,
|
|||
|
|
interval: 50,
|
|||
|
|
axisLabel: {
|
|||
|
|
// formatter: "{value} ml",
|
|||
|
|
formatter: '{value}'
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
dataZoom: [{
|
|||
|
|
show: true
|
|||
|
|
}],
|
|||
|
|
series: [
|
|||
|
|
{
|
|||
|
|
data: countList,
|
|||
|
|
type: 'line',
|
|||
|
|
smooth: true
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
myChart.setOption(option, true)
|
|||
|
|
}
|
|||
|
|
} catch (error) {
|
|||
|
|
console.log(error)
|
|||
|
|
}
|
|||
|
|
this.loading = false
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
time(date, value) {
|
|||
|
|
var y, m
|
|||
|
|
// if(value=='lastMonth'){
|
|||
|
|
// m = date.getMonth()
|
|||
|
|
// }else{
|
|||
|
|
// m = date.getMonth() + 1;
|
|||
|
|
// }
|
|||
|
|
m = date.getMonth() + 1
|
|||
|
|
if (value === 'lastYear') {
|
|||
|
|
y = date.getFullYear() - 1
|
|||
|
|
} else {
|
|||
|
|
y = date.getFullYear()
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m = m < 10 ? '0' + m : m
|
|||
|
|
var d = date.getDate()
|
|||
|
|
d = d < 10 ? '0' + d : d
|
|||
|
|
var h = date.getHours()
|
|||
|
|
h = h < 10 ? '0' + h : h
|
|||
|
|
var minute = date.getMinutes()
|
|||
|
|
minute = minute < 10 ? '0' + minute : minute
|
|||
|
|
var second = date.getSeconds()
|
|||
|
|
second = second < 10 ? '0' + second : second
|
|||
|
|
return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second
|
|||
|
|
},
|
|||
|
|
getLastYearYestdy(date) {
|
|||
|
|
let datastr = ''
|
|||
|
|
var strYear = date.getFullYear() - 1
|
|||
|
|
var strDay = date.getDate()
|
|||
|
|
var strMonth = date.getMonth() + 1
|
|||
|
|
if (strMonth < 10) {
|
|||
|
|
strMonth = '0' + strMonth
|
|||
|
|
}
|
|||
|
|
if (strDay < 10) {
|
|||
|
|
strDay = '0' + strDay
|
|||
|
|
}
|
|||
|
|
datastr = strYear + '-' + strMonth + '-' + strDay
|
|||
|
|
return datastr
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
<style scoped>
|
|||
|
|
.countLeft{
|
|||
|
|
/* float:left; */
|
|||
|
|
width:100%;
|
|||
|
|
overflow:hidden;
|
|||
|
|
}
|
|||
|
|
.countRight{
|
|||
|
|
/* float:right;
|
|||
|
|
width:30%; */
|
|||
|
|
width:100%;
|
|||
|
|
padding-right:5%;
|
|||
|
|
padding-top:2%;
|
|||
|
|
}
|
|||
|
|
.countRight p{
|
|||
|
|
/* padding-bottom:8%; */
|
|||
|
|
}
|
|||
|
|
.countRight li{
|
|||
|
|
height:40px;
|
|||
|
|
overflow: hidden;
|
|||
|
|
width:100%;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
.countRight h3{
|
|||
|
|
overflow: hidden;
|
|||
|
|
text-overflow:ellipsis;
|
|||
|
|
white-space: nowrap;
|
|||
|
|
float:left;
|
|||
|
|
width:70%;
|
|||
|
|
font-size:16px;
|
|||
|
|
font-weight: normal;
|
|||
|
|
}
|
|||
|
|
.countRight h4{
|
|||
|
|
float:right;
|
|||
|
|
font-size:16px;
|
|||
|
|
font-weight: normal;
|
|||
|
|
}
|
|||
|
|
.con-content .tabTurn {
|
|||
|
|
float: left;
|
|||
|
|
width: 60%;
|
|||
|
|
padding-right: 5%;
|
|||
|
|
margin-top: 12px;
|
|||
|
|
}
|
|||
|
|
.con-content .dateBox {
|
|||
|
|
float: left;
|
|||
|
|
width: 32%;
|
|||
|
|
padding-top: 10px;
|
|||
|
|
}
|
|||
|
|
.con-content {
|
|||
|
|
background: #fff;
|
|||
|
|
}
|
|||
|
|
</style>>
|
|||
|
|
|