Commit b3ae6dad authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents 020cb085 11f0aef7
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
"date-fns": "^2.14.0", "date-fns": "^2.14.0",
"echarts": "^5.2.2", "echarts": "^5.2.2",
"element-china-area-data": "^5.0.2", "element-china-area-data": "^5.0.2",
"element-ui": "^2.15.13",
"enquire.js": "^2.1.6", "enquire.js": "^2.1.6",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"highlight.js": "^10.2.1", "highlight.js": "^10.2.1",
......
...@@ -20,7 +20,10 @@ import VueQuillEditor from "vue-quill-editor"; ...@@ -20,7 +20,10 @@ import VueQuillEditor from "vue-quill-editor";
import "quill/dist/quill.core.css"; import "quill/dist/quill.core.css";
import "quill/dist/quill.snow.css"; import "quill/dist/quill.snow.css";
import "quill/dist/quill.bubble.css"; import "quill/dist/quill.bubble.css";
// 引入element 取色器组件
import { ColorPicker } from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
Vue.use(ColorPicker);
import { VueJsonp } from "vue-jsonp"; import { VueJsonp } from "vue-jsonp";
Vue.use(VueJsonp); Vue.use(VueJsonp);
// 公共样式 // 公共样式
......
...@@ -148,7 +148,7 @@ export default { ...@@ -148,7 +148,7 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
.right-preview { .right-preview {
height: 100%; height: 80vh;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.preview-seach { .preview-seach {
...@@ -160,12 +160,7 @@ export default { ...@@ -160,12 +160,7 @@ export default {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
overflow-y: scroll; overflow-y: auto;
scrollbar-width: none; /* firefox */
-ms-overflow-style: none; /* IE 10+ */
&::-webkit-scrollbar {
display: none;
}
.preview-item { .preview-item {
margin-bottom: 6px; margin-bottom: 6px;
height: 120px; height: 120px;
......
...@@ -135,6 +135,7 @@ ...@@ -135,6 +135,7 @@
<span class="color-show">{{ <span class="color-show">{{
v.fieldValue ? v.fieldValue : "--" v.fieldValue ? v.fieldValue : "--"
}}</span> }}</span>
<a-button <a-button
type="primary" type="primary"
:class="{ 'select-color-btn': v.fieldValue }" :class="{ 'select-color-btn': v.fieldValue }"
...@@ -145,6 +146,10 @@ ...@@ -145,6 +146,10 @@
class="color-ipt" class="color-ipt"
v-model="v.fieldValue" v-model="v.fieldValue"
/> />
<el-color-picker
class="color-ipt"
v-model="v.fieldValue"
></el-color-picker>
</a-button> </a-button>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
...@@ -536,6 +541,10 @@ export default { ...@@ -536,6 +541,10 @@ export default {
position: absolute; position: absolute;
left: 0px; left: 0px;
top: 0px; top: 0px;
/deep/.el-color-picker__trigger {
width: 100%;
height: 100%;
}
} }
.btn-box { .btn-box {
height: 50px; height: 50px;
......
...@@ -2502,6 +2502,13 @@ async-validator@^3.0.3: ...@@ -2502,6 +2502,13 @@ async-validator@^3.0.3:
resolved "https://registry.npm.taobao.org/async-validator/download/async-validator-3.3.0.tgz" resolved "https://registry.npm.taobao.org/async-validator/download/async-validator-3.3.0.tgz"
integrity sha1-HZIZO75g1tbIskZpLHAF6e0UqO4= integrity sha1-HZIZO75g1tbIskZpLHAF6e0UqO4=
async-validator@~1.8.1:
version "1.8.5"
resolved "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz#dc3e08ec1fd0dddb67e60842f02c0cd1cec6d7f0"
integrity sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==
dependencies:
babel-runtime "6.x"
async@^2.6.1, async@^2.6.2: async@^2.6.1, async@^2.6.2:
version "2.6.3" version "2.6.3"
resolved "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz" resolved "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz"
...@@ -2573,7 +2580,7 @@ babel-eslint@^10.1.0: ...@@ -2573,7 +2580,7 @@ babel-eslint@^10.1.0:
eslint-visitor-keys "^1.0.0" eslint-visitor-keys "^1.0.0"
resolve "^1.12.0" resolve "^1.12.0"
babel-helper-vue-jsx-merge-props@^2.0.3: babel-helper-vue-jsx-merge-props@^2.0.0, babel-helper-vue-jsx-merge-props@^2.0.3:
version "2.0.3" version "2.0.3"
resolved "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz" resolved "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz"
integrity sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY= integrity sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY=
...@@ -4302,7 +4309,7 @@ deep-is@~0.1.3: ...@@ -4302,7 +4309,7 @@ deep-is@~0.1.3:
resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz" resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
deepmerge@^1.5.2: deepmerge@^1.2.0, deepmerge@^1.5.2:
version "1.5.2" version "1.5.2"
resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz" resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz"
integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==
...@@ -4682,6 +4689,18 @@ element-china-area-data@^5.0.2: ...@@ -4682,6 +4689,18 @@ element-china-area-data@^5.0.2:
china-area-data "^5.0.1" china-area-data "^5.0.1"
lodash-es "^4.17.15" lodash-es "^4.17.15"
element-ui@^2.15.13:
version "2.15.13"
resolved "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.13.tgz#380f019ee7d15b181105587b41fd5914c308a143"
integrity sha512-LJoatEYX6WV74FqXBss8Xfho9fh9rjDSzrDrTyREdGb1h1R3uRvmLh5jqp2JU137aj4/BgqA3K06RQpQBX33Bg==
dependencies:
async-validator "~1.8.1"
babel-helper-vue-jsx-merge-props "^2.0.0"
deepmerge "^1.2.0"
normalize-wheel "^1.0.1"
resize-observer-polyfill "^1.5.0"
throttle-debounce "^1.0.1"
elliptic@^6.0.0, elliptic@^6.5.2: elliptic@^6.0.0, elliptic@^6.5.2:
version "6.5.3" version "6.5.3"
resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz" resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz"
...@@ -8194,6 +8213,11 @@ normalize-url@^6.0.1: ...@@ -8194,6 +8213,11 @@ normalize-url@^6.0.1:
resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz"
integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
normalize-wheel@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz#aec886affdb045070d856447df62ecf86146ec45"
integrity sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==
npm-run-path@^2.0.0: npm-run-path@^2.0.0:
version "2.0.2" version "2.0.2"
resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz" resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz"
...@@ -9709,7 +9733,7 @@ requires-port@^1.0.0: ...@@ -9709,7 +9733,7 @@ requires-port@^1.0.0:
resolved "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz" resolved "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz"
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
resize-observer-polyfill@^1.5.1: resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1:
version "1.5.1" version "1.5.1"
resolved "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz" resolved "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz"
integrity sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ= integrity sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=
...@@ -10879,6 +10903,11 @@ thread-loader@^2.1.3: ...@@ -10879,6 +10903,11 @@ thread-loader@^2.1.3:
loader-utils "^1.1.0" loader-utils "^1.1.0"
neo-async "^2.6.0" neo-async "^2.6.0"
throttle-debounce@^1.0.1:
version "1.1.0"
resolved "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz#51853da37be68a155cb6e827b3514a3c422e89cd"
integrity sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==
throttle-debounce@^2.0.1: throttle-debounce@^2.0.1:
version "2.3.0" version "2.3.0"
resolved "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz" resolved "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz"
......
...@@ -26,4 +26,8 @@ export function getUsageCensus(params) { ...@@ -26,4 +26,8 @@ export function getUsageCensus(params) {
//信息流分析 //信息流分析
export function getInformationFlow(params) { export function getInformationFlow(params) {
return http.post(`${baseURL}/zwfw/act/analyse/informationFlow`, params); return http.post(`${baseURL}/zwfw/act/analyse/informationFlow`, params);
}
//产品接口
export function productLlist(params) {
return http.post(`${baseURL}/zwfw/page/info/product/list`, params);
} }
\ No newline at end of file
...@@ -49,7 +49,9 @@ ...@@ -49,7 +49,9 @@
<script> <script>
import { getEventCensus } from "@/api/dataActuary.js"; import { getEventCensus } from "@/api/dataActuary.js";
import moment from "moment"; import moment from "moment";
import product from "../mixins/product"
export default { export default {
mixins:[product],
data() { data() {
return { return {
queryform: { queryform: {
......
<template> <template>
<!-- 信息流分析 --> <!-- 信息流分析 -->
<div class="page"> <div class="page">
<a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline"> <a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline">
<a-form-model-item> <a-form-model-item>
<a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品"> <a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品">
<a-select-option :value="item.id" v-for="(item,index) in product" :key="index"> <a-select-option :value="item.id" v-for="(item,index) in product" :key="index">
{{item.title}} {{item.title}}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-date-picker valueFormat="yyyy-MM-DD" v-model="time" style="width: 200px" :allowClear="false"/> <a-date-picker valueFormat="yyyy-MM-DD" v-model="time" style="width: 200px" :allowClear="false"/>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-select v-model="queryform.particleType" style="width: 200px" placeholder="选择时间粒度"> <a-select v-model="queryform.particleType" style="width: 200px" placeholder="选择时间粒度">
...@@ -18,42 +18,42 @@ ...@@ -18,42 +18,42 @@
<a-select-option value="2">30分钟</a-select-option> <a-select-option value="2">30分钟</a-select-option>
<a-select-option value="3">1小时</a-select-option> <a-select-option value="3">1小时</a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-select v-model="queryform.value" style="width: 200px" placeholder="选择一级场景"> <a-select v-model="queryform.value" style="width: 200px" placeholder="选择一级场景">
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-select v-model="queryform.value" style="width: 200px" placeholder="选择二级场景"> <a-select v-model="queryform.value" style="width: 200px" placeholder="选择二级场景">
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-select v-model="queryform.value" style="width: 200px" placeholder="选择三级场景"> <a-select v-model="queryform.value" style="width: 200px" placeholder="选择三级场景">
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-button type="primary" @click="getData"> <a-button type="primary" @click="getData">
开始分析 开始分析
</a-button> </a-button>
</a-form-model-item> </a-form-model-item>
</a-form-model> </a-form-model>
<div class="table-box"> <div class="table-box">
<div class="mb"> <div class="mb">
<span style="margin-right: 30px;">指标筛选</span> <span style="margin-right: 30px;">指标筛选</span>
<a-checkbox-group @change="changeIndex" v-model="indexList"> <a-checkbox-group @change="changeIndex" v-model="indexList">
<a-checkbox value="accessCount">访问人数</a-checkbox> <a-checkbox value="accessCount">访问人数</a-checkbox>
<a-checkbox value="accessCount1">打开次数</a-checkbox> <a-checkbox value="accessCount1">打开次数</a-checkbox>
<a-checkbox value="pageDepth">访问页面数</a-checkbox> <a-checkbox value="pageDepth">访问页面数</a-checkbox>
</a-checkbox-group> </a-checkbox-group>
</div> </div>
<div class="mb"> <div class="mb">
<span style="margin-right: 30px;">对比筛选</span> <span style="margin-right: 30px;">对比筛选</span>
<a-checkbox @change="onChange"> <a-checkbox @change="onChange">
日对比 日对比
</a-checkbox> </a-checkbox>
</div> </div>
<a-table :columns="columns" :data-source="data" :scroll="{ y: 590 }" :pagination="false"> <a-table :columns="columns" :data-source="data" :scroll="{ y: 590 }" :pagination="false">
<template slot="访问人数" slot-scope="text, record, index"> <template slot="访问人数" slot-scope="text, record, index">
...@@ -68,18 +68,20 @@ ...@@ -68,18 +68,20 @@
<div>{{record.pageDepth}}</div> <div>{{record.pageDepth}}</div>
<div v-show="queryform.isRatio == 1">日对比:{{(record.depthRatio * 100).toFixed(2)}}%</div> <div v-show="queryform.isRatio == 1">日对比:{{(record.depthRatio * 100).toFixed(2)}}%</div>
</template> </template>
</a-table> </a-table>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import {getInformationFlow} from '@/api/dataActuary.js' import {getInformationFlow} from '@/api/dataActuary.js'
import moment from 'moment'; import moment from 'moment';
export default { import product from "../mixins/product"
data() { export default {
return { mixins:[product],
data() {
return {
queryform: { queryform: {
productId: 1, productId: 1,
dateTimeStart:moment().format('yyyy-MM-DD'), dateTimeStart:moment().format('yyyy-MM-DD'),
...@@ -92,12 +94,12 @@ ...@@ -92,12 +94,12 @@
title:'排队机', title:'排队机',
id:1 id:1
}], }],
indexList:['accessCount','accessCount1','pageDepth'], indexList:['accessCount','accessCount1','pageDepth'],
labelCol: { labelCol: {
span: 1 span: 1
}, },
wrapperCol: { wrapperCol: {
span: 14 span: 14
}, },
columns: [{ columns: [{
title: "序号", title: "序号",
...@@ -161,8 +163,8 @@ ...@@ -161,8 +163,8 @@
pageSizeOptions: ["10", "20", "50", "100"], //每页中显示的数据 pageSizeOptions: ["10", "20", "50", "100"], //每页中显示的数据
showTotal: total => `共有 ${total} 条数据`, //分页中显示总的数据 showTotal: total => `共有 ${total} 条数据`, //分页中显示总的数据
}, },
filterColumns:[] filterColumns:[]
} }
}, },
mounted() { mounted() {
this.filterColumns = this.columns this.filterColumns = this.columns
...@@ -185,25 +187,25 @@ ...@@ -185,25 +187,25 @@
this.data = res.data this.data = res.data
}) })
}, },
} }
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.page { .page {
height: calc(100% - 50px); height: calc(100% - 50px);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
/deep/.ant-form { /deep/.ant-form {
padding: 15px; padding: 15px;
} }
.table-box { .table-box {
padding: 0 15px; padding: 0 15px;
.mb{ .mb{
margin-bottom: 20px; margin-bottom: 20px;
} }
} }
} }
</style> </style>
\ No newline at end of file
import { productLlist } from "@/api/dataActuary.js";
export default {
data() {
return {
ProductLlist:[]
}
},
created() {
this.getProductLlist()
},
methods: {
getProductLlist(){
productLlist({"size":-1}).then(res=>{
this.ProductLlist = res.data.data
let arr = []
try {
res.data.data.forEach(element => {
arr.push({title:element.productName,id:element.id})
});
this.product = arr
} catch (error) {}
})
},
},
}
\ No newline at end of file
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
<div class="page"> <div class="page">
<a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline"> <a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline">
<a-form-model-item> <a-form-model-item>
<a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品"> <a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品">
<a-select-option :value="item.id" v-for="(item,index) in product" :key="index"> <a-select-option :value="item.id" v-for="(item,index) in product" :key="index">
{{item.title}} {{item.title}}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
...@@ -54,65 +54,67 @@ ...@@ -54,65 +54,67 @@
</template> </template>
<script> <script>
import * as echarts from 'echarts' import product from "../mixins/product"
import {getAccessAnalyse} from '@/api/dataActuary.js' import * as echarts from 'echarts'
import {getAccessAnalyse} from '@/api/dataActuary.js'
import moment from 'moment'; import moment from 'moment';
export default { export default {
mixins:[product],
data() { data() {
return { return {
queryform: { queryform: {
productId: 1, productId: 1,
dateTimeStart:moment().format('yyyy-MM-DD'), dateTimeStart:moment().format('yyyy-MM-DD'),
dateTimeEnd:moment().format('yyyy-MM-DD') dateTimeEnd:moment().format('yyyy-MM-DD')
}, },
time:[moment().format('yyyy-MM-DD'),moment().format('yyyy-MM-DD')], time:[moment().format('yyyy-MM-DD'),moment().format('yyyy-MM-DD')],
product:[{ product:[{
title:'排队机', title:'排队机',
id:1 id:1
}], }],
labelCol: { labelCol: {
span: 1 span: 1
}, },
wrapperCol: { wrapperCol: {
span: 14 span: 14
}, },
data:null data:null
} }
}, },
mounted() { mounted() {
this.getData() this.getData()
}, },
methods: { methods: {
getData() { getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null this.queryform.dateTimeStart = this.time ? this.time[0] : null
this.queryform.dateTimeStart = this.time ? this.time[1] : null this.queryform.dateTimeStart = this.time ? this.time[1] : null
getAccessAnalyse(this.queryform).then(res=>{ getAccessAnalyse(this.queryform).then(res=>{
this.data = res.data this.data = res.data
let lineX = res.data.accessTrend.map(item=>item.accessDay) let lineX = res.data.accessTrend.map(item=>item.accessDay)
let lineY = res.data.accessTrend.map(item=>item.accessCount) let lineY = res.data.accessTrend.map(item=>item.accessCount)
let barX = res.data.pageAccessTop.map(item=>item.accessCount) let barX = res.data.pageAccessTop.map(item=>item.accessCount)
let barY = res.data.pageAccessTop.map(item=>item.pageName) let barY = res.data.pageAccessTop.map(item=>item.pageName)
this.initLine(lineX,lineY) this.initLine(lineX,lineY)
this.initBar(barX,barY) this.initBar(barX,barY)
}) })
}, },
initBar(barX,barY) { initBar(barX,barY) {
let chartDom = document.getElementById('pages') let chartDom = document.getElementById('pages')
let myChart = echarts.init(chartDom); let myChart = echarts.init(chartDom);
myChart.setOption({ myChart.setOption({
legend: { legend: {
bottom: 0, bottom: 0,
itemWidth:10, itemWidth:10,
itemHeight:10 itemHeight:10
}, },
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
axisPointer: { axisPointer: {
type: 'shadow' type: 'shadow'
} }
}, },
color:['#29D090'], color:['#29D090'],
grid: { grid: {
top:'3%', top:'3%',
left: '3%', left: '3%',
right: '3%', right: '3%',
...@@ -125,15 +127,15 @@ ...@@ -125,15 +127,15 @@
}, },
yAxis: { yAxis: {
type: 'category', type: 'category',
data: barY, data: barY,
axisTick: { axisTick: {
show: false show: false
} }
}, },
series: [{ series: [{
name: '访问次数', name: '访问次数',
type: 'bar', type: 'bar',
data: barX, data: barX,
barWidth:10 barWidth:10
} }
] ]
......
<template> <template>
<!-- 路径分析 --> <!-- 路径分析 -->
<div class="page"> <div class="page">
<a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline"> <a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline">
<a-form-model-item> <a-form-model-item>
...@@ -17,18 +17,20 @@ ...@@ -17,18 +17,20 @@
开始分析 开始分析
</a-button> </a-button>
</a-form-model-item> </a-form-model-item>
</a-form-model> </a-form-model>
<div id="path"></div> <div id="path"></div>
</div> </div>
</template> </template>
<script> <script>
import * as echarts from 'echarts' import * as echarts from 'echarts'
import product from "../mixins/product"
import {getWayAccessAnalyse} from '@/api/dataActuary.js' import {getWayAccessAnalyse} from '@/api/dataActuary.js'
import moment from 'moment'; import moment from 'moment';
export default { export default {
data() { mixins:[product],
return { data() {
return {
queryform: { queryform: {
productId: 1, productId: 1,
dateTimeStart:moment().format('yyyy-MM-DD'), dateTimeStart:moment().format('yyyy-MM-DD'),
...@@ -44,12 +46,12 @@ ...@@ -44,12 +46,12 @@
}, },
wrapperCol: { wrapperCol: {
span: 14 span: 14
}, },
} }
}, },
mounted() { mounted() {
this.getData() this.getData()
}, },
methods: { methods: {
getData() { getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null this.queryform.dateTimeStart = this.time ? this.time[0] : null
...@@ -70,28 +72,28 @@ ...@@ -70,28 +72,28 @@
uniqueFunc(arr, uniId){ uniqueFunc(arr, uniId){
const res = new Map(); const res = new Map();
return arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1)); return arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1));
}, },
init(data,links) { init(data,links) {
let chartDom = document.getElementById('path') let chartDom = document.getElementById('path')
let myChart = echarts.init(chartDom); let myChart = echarts.init(chartDom);
myChart.setOption({ myChart.setOption({
series: { series: {
type: 'sankey', type: 'sankey',
layout: 'none', layout: 'none',
emphasis: { emphasis: {
focus: 'adjacency' focus: 'adjacency'
}, },
color:['#FFCAC4','#6D86DE','#409AFE','#4DB3EA','#07CF8C'], color:['#FFCAC4','#6D86DE','#409AFE','#4DB3EA','#07CF8C'],
nodeWidth:10, nodeWidth:10,
data: data, data: data,
links: links links: links
} }
}) })
} }
} }
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.page{ .page{
height: calc(100% - 50px); height: calc(100% - 50px);
...@@ -105,5 +107,5 @@ ...@@ -105,5 +107,5 @@
width: 70%; width: 70%;
margin: 0 auto; margin: 0 auto;
} }
} }
</style> </style>
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<!-- 产品分析 --> <!-- 产品分析 -->
<div class="page"> <div class="page">
<div class="img-dv"> <div class="img-dv">
<img :src="BASE_URL + img" ref="img"> <img :src="img" ref="img">
<div id="queuing"></div> <div id="queuing"></div>
</div> </div>
<div class="list-dv"> <div class="list-dv">
...@@ -44,12 +44,14 @@ ...@@ -44,12 +44,14 @@
</template> </template>
<script> <script>
import product from "../mixins/product"
import Heatmap from 'heatmap.js'; import Heatmap from 'heatmap.js';
import moment from 'moment'; import moment from 'moment';
import { import {
getProductHotCensus getProductHotCensus
} from '@/api/dataActuary.js' } from '@/api/dataActuary.js'
export default { export default {
mixins:[product],
data() { data() {
return { return {
queryform: { queryform: {
......
<template> <template>
<!-- 使用习惯分析 --> <!-- 使用习惯分析 -->
<div class="page"> <div class="page">
<a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline"> <a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline">
<a-form-model-item> <a-form-model-item>
<a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品"> <a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品">
<a-select-option :value="item.id" v-for="(item,index) in product" :key="index"> <a-select-option :value="item.id" v-for="(item,index) in product" :key="index">
{{item.title}} {{item.title}}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-range-picker valueFormat="yyyy-MM-DD" v-model="time" style="width: 300px" :allowClear="false"/> <a-range-picker valueFormat="yyyy-MM-DD" v-model="time" style="width: 300px" :allowClear="false"/>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-button type="primary" @click="getData"> <a-button type="primary" @click="getData">
开始分析 开始分析
</a-button> </a-button>
</a-form-model-item> </a-form-model-item>
</a-form-model> </a-form-model>
<div class="charts-box"> <div class="charts-box">
<!-- <div id="canal"></div> --> <!-- <div id="canal"></div> -->
...@@ -27,22 +27,24 @@ ...@@ -27,22 +27,24 @@
</template> </template>
<script> <script>
import * as echarts from 'echarts' import * as echarts from 'echarts'
import moment from 'moment'; import moment from 'moment';
import {getUsageCensus} from '@/api/dataActuary.js' import {getUsageCensus} from '@/api/dataActuary.js'
import product from "../mixins/product"
export default { export default {
mixins:[product],
data() { data() {
return { return {
queryform: { queryform: {
productId: 1, productId: 1,
dateTimeStart: moment().format('yyyy-MM-DD'), dateTimeStart: moment().format('yyyy-MM-DD'),
dateTimeEnd: moment().format('yyyy-MM-DD'), dateTimeEnd: moment().format('yyyy-MM-DD'),
pageCode: '/' pageCode: '/'
}, },
time: [moment().format('yyyy-MM-DD'), moment().format('yyyy-MM-DD')], time: [moment().format('yyyy-MM-DD'), moment().format('yyyy-MM-DD')],
product: [{ product: [{
title: '排队机', title: '排队机',
id: 1 id: 1
}], }],
labelCol: { labelCol: {
span: 1 span: 1
...@@ -52,75 +54,75 @@ ...@@ -52,75 +54,75 @@
}, },
} }
}, },
mounted() { mounted() {
this.getData() this.getData()
}, },
methods: { methods: {
getData() { getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null this.queryform.dateTimeStart = this.time ? this.time[0] : null
this.queryform.dateTimeStart = this.time ? this.time[1] : null this.queryform.dateTimeStart = this.time ? this.time[1] : null
getUsageCensus(this.queryform).then(res=>{ getUsageCensus(this.queryform).then(res=>{
let data = res.data.map(({businessName,propValue})=>({name:businessName,value:propValue * 100})) let data = res.data.map(({businessName,propValue})=>({name:businessName,value:propValue * 100}))
this.initType(data) this.initType(data)
}) })
}, },
initWay(){ initWay(){
let chartDom = document.getElementById('way') let chartDom = document.getElementById('way')
let myChart = echarts.init(chartDom); let myChart = echarts.init(chartDom);
myChart.setOption({ myChart.setOption({
title: { title: {
text: '取号方式分析', text: '取号方式分析',
left: 'center' left: 'center'
}, },
tooltip: { tooltip: {
trigger: 'item', trigger: 'item',
}, },
legend: { legend: {
bottom: 0, bottom: 0,
left: 'center', left: 'center',
itemWidth: 10, itemWidth: 10,
itemHeight: 10 itemHeight: 10
}, },
color: ['#6395F9', '#64DAAB', '#647798', '#F6C02D', '#7567FA', '#75CBED'], color: ['#6395F9', '#64DAAB', '#647798', '#F6C02D', '#7567FA', '#75CBED'],
series: [{ series: [{
name: 'Access From', name: 'Access From',
type: 'pie', type: 'pie',
radius: '65%', radius: '65%',
label: { label: {
normal: { normal: {
formatter: '{d}%' //自定义显示格式(b:name, c:value, d:百分比) formatter: '{d}%' //自定义显示格式(b:name, c:value, d:百分比)
} }
}, },
labelLine: { labelLine: {
normal: { normal: {
length: 1 length: 1
} }
}, },
data: [{ data: [{
value: 1048, value: 1048,
name: 'Search Engine' name: 'Search Engine'
}, },
{ {
value: 735, value: 735,
name: 'Direct' name: 'Direct'
}, },
{ {
value: 580, value: 580,
name: 'Email' name: 'Email'
}, },
{ {
value: 484, value: 484,
name: 'Union Ads' name: 'Union Ads'
}, },
{ {
value: 300, value: 300,
name: 'Video Ads' name: 'Video Ads'
} }
], ],
}] }]
}) })
}, },
initType(data) { initType(data) {
console.log(data) console.log(data)
let chartDom = document.getElementById('type') let chartDom = document.getElementById('type')
let myChart = echarts.init(chartDom); let myChart = echarts.init(chartDom);
......
...@@ -233,7 +233,6 @@ ...@@ -233,7 +233,6 @@
}, },
{ {
title: "操作", title: "操作",
dataIndex: "操作",
scopedSlots: { scopedSlots: {
customRender: "操作", customRender: "操作",
}, },
...@@ -314,14 +313,17 @@ ...@@ -314,14 +313,17 @@
item.type = obj[keys]; item.type = obj[keys];
} }
}); });
item.status == 1?item.status= '':item.status= ''
}); });
} else { } else {
let datas = this.$_.cloneDeep( let datas = this.$_.cloneDeep(
await getImpossible({ await getImpossible({
...this.queryform,
page: 1, page: 1,
size: -1 size: -1
}) })
); );
this.btnLoading = false
data = datas.data.data data = datas.data.data
if (!data.length) return; if (!data.length) return;
for (let item of data) { for (let item of data) {
...@@ -330,11 +332,21 @@ ...@@ -330,11 +332,21 @@
item.type = obj[key]; item.type = obj[key];
} }
}); });
item.status == 1?item.status= '':item.status= ''
} }
} }
const tHeader = []
const filterVal = []
this.tablecolumns.forEach(v=>{
if(v.dataIndex){
tHeader.push(v.title)
filterVal.push(v.dataIndex)
}
})
export2Excel( export2Excel(
this.tHeader, tHeader,
this.filterVal, filterVal,
data, data,
"办不成事报表" + this.$moment().format("YYYYMMDDHHmmss") "办不成事报表" + this.$moment().format("YYYYMMDDHHmmss")
); );
......
...@@ -183,7 +183,13 @@ export default { ...@@ -183,7 +183,13 @@ export default {
}, },
// 查看数据 // 查看数据
handleCkeck(path) { handleCkeck(path) {
this.$router.push(path); if(path.indexOf('http')>-1){
alert(path)
window.open(path)
}else{
this.$router.push(path);
}
}, },
// pushRouter1() { // pushRouter1() {
// // 易政秀报表 // // 易政秀报表
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<a-layout class="Container"> <a-layout class="Container">
<a-layout-header class="header_box"> <a-layout-header class="header_box">
<div class="logo"> <div class="logo">
<i class="title">智慧大厅综合管理系统</i> <i class="title">智慧大厅集成化综合管理平台</i>
<!-- <i class="title">智慧政务一体化综合管理平台4.0</i> --> <!-- <i class="title">智慧政务一体化综合管理平台4.0</i> -->
<div class="selectOnptions"> <div class="selectOnptions">
<a-select v-model="siteInfo" labelInValue @change="handleChange"> <a-select v-model="siteInfo" labelInValue @change="handleChange">
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="login_form"> <div class="login_form">
<div> <div>
<!-- <img src="./img/title.png" alt /> --> <!-- <img src="./img/title.png" alt /> -->
<h1 class="title">智慧大厅综合管理系统</h1> <h1 class="title">智慧大厅集成化综合管理平台</h1>
</div> </div>
<div class="formes"> <div class="formes">
<a-form-model <a-form-model
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment