Commit 8b66b21f authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents a17b6cb5 9bcfc757
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
color:#1BBC9B; color:#1BBC9B;
} }
.edit{ .edit{
color:#03d76f; color:#03d76f !important;
} }
.clofff{ .clofff{
color:#fff; color:#fff;
......
<template> <template>
<div class="business flex flexc"> <div class="business flex flexc">
<a-tabs :activeKey="active" @change="changeRouter"> <a-tabs :activeKey="active" @change="changeRouter">
<a-tab-pane key="/business/businessmanage" tab="业务管理"> <a-tab-pane key="/business/businessmanage" tab="业务管理"> </a-tab-pane>
<!-- <BusinessTabs2 v-if="active === 1" ref="BusinessTabs2" /> -->
</a-tab-pane>
<a-tab-pane key="/business/mattermanage" tab="事项管理"> <a-tab-pane key="/business/mattermanage" tab="事项管理"> </a-tab-pane>
<!-- <BusinessTabs1 v-if="active === 2" ref="BusinessTabs1" /> -->
</a-tab-pane>
<a-tab-pane key="/business/businessinmanage" tab="业务事项关联"> <a-tab-pane key="/business/businessinmanage" tab="业务事项关联">
<!-- <BusinessTabs3 v-if="active === 3" ref="BusinessTabs3" /> --> </a-tab-pane>
<a-tab-pane key="/business/workguide" tab="办事指南数据管理">
</a-tab-pane> </a-tab-pane>
</a-tabs> </a-tabs>
<div class="business-out-box flex1"> <div class="business-out-box flex1">
...@@ -20,21 +17,12 @@ ...@@ -20,21 +17,12 @@
</template> </template>
<script> <script>
// import BusinessTabs1 from "./components/businessTabs1.vue";
// import BusinessTabs2 from "./components/businessTabs2.vue";
// import BusinessTabs3 from "./components/businessTabs3.vue";
export default { export default {
components: { components: {},
// BusinessTabs1,
// BusinessTabs2,
// BusinessTabs3,
},
data() { data() {
return { return {
siteId: "", // 站点id siteId: "", // 站点id
// active: 1,
}; };
}, },
computed: { computed: {
...@@ -60,15 +48,7 @@ export default { ...@@ -60,15 +48,7 @@ export default {
/deep/.ant-tabs-nav-container { /deep/.ant-tabs-nav-container {
border-bottom: 1px solid rgb(224, 224, 224) !important; border-bottom: 1px solid rgb(224, 224, 224) !important;
} }
&::after {
content: "";
width: 1px;
height: 82vh;
position: absolute;
background-color: #eeeeee;
top: 44px;
left: 50%;
}
.business-out-box { .business-out-box {
overflow-y: auto; overflow-y: auto;
} }
......
...@@ -354,17 +354,18 @@ export default { ...@@ -354,17 +354,18 @@ export default {
onSelectLeftRow(record, selected) { onSelectLeftRow(record, selected) {
if (selected && record.children && record.children.length) { if (selected && record.children && record.children.length) {
record.children.forEach((v) => { record.children.forEach((v) => {
this.selectedLeftRowKeys= [...new Set([...this.selectedLeftRowKeys,v.id])] this.selectedLeftRowKeys = [
this.deleteData=[...new Set([...this.deleteData,v])]; ...new Set([...this.selectedLeftRowKeys, v.id]),
];
this.deleteData = [...new Set([...this.deleteData, v])];
}); });
} else if (!selected) { } else if (!selected) {
this.selectedLeftRowKeys = this.selectedLeftRowKeys.filter( this.selectedLeftRowKeys = this.selectedLeftRowKeys.filter(
(v) => v != record.id (v) => v != record.id
); );
this.deleteData = this.deleteData.filter((v) => { this.deleteData = this.deleteData.filter((v) => {
return v.id !=record.id return v.id != record.id;
}); });
} }
}, },
// 批量删除 // 批量删除
...@@ -525,6 +526,15 @@ export default { ...@@ -525,6 +526,15 @@ export default {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
&::after {
content: "";
width: 1px;
height: 82vh;
position: absolute;
background-color: #eeeeee;
top: 44px;
left: 50%;
}
.left, .left,
.right { .right {
width: 50%; width: 50%;
......
...@@ -586,6 +586,15 @@ export default { ...@@ -586,6 +586,15 @@ export default {
.basicset-tab2 { .basicset-tab2 {
width: 100%; width: 100%;
display: flex; display: flex;
&::after {
content: "";
width: 1px;
height: 82vh;
position: absolute;
background-color: #eeeeee;
top: 44px;
left: 50%;
}
.left, .left,
.right { .right {
width: 50%; width: 50%;
......
...@@ -666,6 +666,15 @@ export default { ...@@ -666,6 +666,15 @@ export default {
.basicset-tab3 { .basicset-tab3 {
width: 100%; width: 100%;
display: flex; display: flex;
&::after {
content: "";
width: 1px;
height: 82vh;
position: absolute;
background-color: #eeeeee;
top: 44px;
left: 50%;
}
.left, .left,
.right { .right {
width: 50%; width: 50%;
......
rrent" <template>
<div class="basicset-tab4">
<div class="left">
<div class="header">
<h3 class="titel">站点事项列表</h3>
<div class="header-bottom flex aic jcb">
<div class="left-btn"></div>
<div>
<a-space>
<a-select
style="min-width: 120px"
allowClear
v-model="dept"
class="select-department"
placeholder="部门搜索"
>
<a-select-option
v-for="v in deptList"
:key="v.id"
:value="v.deptNumber"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select
style="width: 120px"
allowClear
v-model="source"
class="select-department"
placeholder="事项来源"
>
<a-select-option :value="0"> 一体化添加 </a-select-option>
<a-select-option :value="1"> 手动添加 </a-select-option>
</a-select>
<a-input-search
v-model="searchVal"
placeholder="请输入事项名称搜索"
enter-button="搜索"
@search="onSearch"
allowClear
/>
</a-space>
</div>
</div>
</div>
<div class="table-content">
<!-- 表格 -->
<a-table
bordered
size="middle"
:loading="loading"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
total: total,
pageSize: size,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: changePage,
onShowSizeChange: showSizeChange,
}"
:scroll="{ y: 550 }"
:columns="columns"
:data-source="matterSiteData"
:rowKey="(record) => record.id"
>
<template slot="index" slot-scope="text, record, index">
<span>
{{ (current - 1) * size + index + 1 }}
</span>
</template>
<!-- 部门 -->
<template slot="deptName" slot-scope="text">
{{ text.deptName ? text.deptName : "--" }}
</template>
<!-- 事项名称 -->
<template slot="matterName" slot-scope="text">
<a-tooltip placement="topLeft">
<template slot="title">
{{ text.matterName }}
</template>
<div class="matter-name">{{ text.matterName }}</div>
</a-tooltip>
</template>
<!-- 事项来源 -->
<template slot="source" slot-scope="text">
<a-tag v-if="text.source == 0" color="green"> 一体化添加 </a-tag>
<a-tag v-else color="blue"> 手动添加 </a-tag>
</template>
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<div
class="workguide_btn"
:style="{ color: text.hot == 1 ? '#03d76f' : '#1890FF' }"
@click="handleSiteEdit(text, 'hot')"
>
{{ text.hot == 1 ? "取消热门" : "设置热门" }}
</div>
<div
class="workguide_btn"
style="width: 60px"
@click="handleSiteEdit(text, 'display')"
>
{{ text.display == 1 ? "取消展示" : "展示" }}
</div>
</a-space>
</template>
</a-table>
</div>
</div>
</div>
</template>
<script>
import { getSiteMatterList, addSitematter } from "@/services/matter";
import { getDeptList } from "@/services/dept";
import local from "@/utils/local";
const columns = [
{
title: "序号",
width: "50px",
scopedSlots: { customRender: "index" },
},
{
title: "部门",
width: "20%",
scopedSlots: {
customRender: "deptName",
},
},
{
title: "事项名称",
// ellipsis: true,
align: "left",
scopedSlots: {
customRender: "matterName",
},
},
{
title: "事项来源",
scopedSlots: {
customRender: "source",
},
},
{
title: "操作",
width: "200px",
scopedSlots: {
customRender: "action",
},
},
];
export default {
components: {},
data() {
return {
columns,
loading: false,
source: undefined, // 左边来源
selectedRowKeys: [],
matterSiteData: [], // 站点事项
matterDataList: [], //事项列表数据
current: 1,
total: 0,
size: 10,
pageSizeOptions: ["10", "30", "50", "100"],
siteId: local.getLocal("siteId"), // 站点id
deptList: [], // 站点部门
searchVal: "", // 站点事项搜索
dept: undefined, // 部门搜索
};
},
created() {
this.getDeptListData();
this.getMatterSiteData();
},
methods: {
// 获取部门列表
async getDeptListData(obj = {}) {
this.deptLoading = true;
let res = await getDeptList({
siteId: this.siteId,
page: 1,
size: -1,
...obj,
});
this.deptLoading = false;
let { code, data } = res.data;
if (code === 1) {
this.deptList = data.data;
}
},
// 获取站点事项
async getMatterSiteData(search = {}) {
this.loading = true;
let res = await getSiteMatterList({
page: this.current,
size: this.size,
siteId: this.siteId,
source: this.source,
matterName: `%${this.searchVal}%`,
deptCode: this.dept,
...search,
});
let { pageInfo, data } = res.data.data;
this.total = pageInfo.totalResult;
this.matterSiteData = data;
this.loading = false;
},
// 搜索
onSearch() {
this.current = 1;
this.getMatterSiteData();
},
// 左翻页
changePage(num) {
this.current = num;
this.getMatterSiteData();
},
// 左边改变每页显示数量
showSizeChange(current, size) {
this.current = current;
this.size = size;
this.getMatterSiteData();
},
// 设置热门、展示
async handleSiteEdit(row, type) {
let hot;
let display;
if (type === "hot") {
if (row.hot == 1) {
hot = 0;
} else {
hot = 1;
}
} else {
if (row.display == 1) {
display = 0;
} else {
display = 1;
}
}
let obj = {
id: row.id,
};
if (hot != "undefined") obj.hot = hot;
if (display != "undefined") obj.display = display;
let res = await addSitematter(obj);
if (res.data.code == 1) {
this.$message.success("设置成功");
this.getMatterSiteData();
this.$forceUpdate();
}
},
},
};
</script>
<style lang="less" scoped>
/deep/.business {
&::after {
content: "";
width: 1px;
height: 82vh;
position: absolute;
background-color: red;
top: 44px;
left: 50%;
}
}
.basicset-tab4 {
width: 100%;
height: 100%;
padding: 0px 20px;
.header {
margin-bottom: 15px;
}
.workguide_btn {
cursor: pointer;
width: 60px;
color: #1890ff;
}
.matter-name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
</style>
...@@ -76,6 +76,7 @@ const options = { ...@@ -76,6 +76,7 @@ const options = {
"@/pages/basicset/business/components/businessTabs1" "@/pages/basicset/business/components/businessTabs1"
), ),
}, },
// 事项管理
{ {
path: "mattermanage", path: "mattermanage",
meta: { meta: {
...@@ -86,6 +87,7 @@ const options = { ...@@ -86,6 +87,7 @@ const options = {
"@/pages/basicset/business/components/businessTabs2" "@/pages/basicset/business/components/businessTabs2"
), ),
}, },
// 业务事项关联
{ {
path: "businessinmanage", path: "businessinmanage",
meta: { meta: {
...@@ -96,6 +98,17 @@ const options = { ...@@ -96,6 +98,17 @@ const options = {
"@/pages/basicset/business/components/businessTabs3" "@/pages/basicset/business/components/businessTabs3"
), ),
}, },
// 办事指南事项管理
{
path: "workguide",
meta: {
invisible: true,
},
component: () =>
import(
"@/pages/basicset/business/components/businessTabs4"
),
},
], ],
}, },
{ {
......
This diff is collapsed.
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
}, },
"dependencies": { "dependencies": {
"@babel/polyfill": "^7.12.1", "@babel/polyfill": "^7.12.1",
"@jiaminghi/data-view": "^2.10.0",
"ant-design-vue": "^1.7.8", "ant-design-vue": "^1.7.8",
"axios": "^0.27.2", "axios": "^0.27.2",
"babel-polyfill": "^6.26.0", "babel-polyfill": "^6.26.0",
......
import http from "../request/http";
let baseURL = process.env.VUE_APP_API_BASE_URL;
let BASEURL = process.env.VUE_APP_API_PHP_URL;
/* 使用行为分析 */
//事件分析
export function getEventCensus(params) {
return http.post(`${baseURL}/zwfw/act/analyse/pageEventCensus`, params);
}
//产品热力图
export function getProductHotCensus(params) {
return http.post(`${baseURL}/zwfw/act/analyse/productHotCensus`, params);
}
//页面访问分析
export function getAccessAnalyse(params) {
return http.post(`${baseURL}/zwfw/act/analyse/accessAnalyse`, params);
}
//路径分析
export function getWayAccessAnalyse(params) {
return http.post(`${baseURL}/zwfw/act/analyse/wayAccessAnalyse`, params);
}
\ No newline at end of file
...@@ -66,6 +66,10 @@ export function getWLLZCount(params) { ...@@ -66,6 +66,10 @@ export function getWLLZCount(params) {
export function getWLLZInfo(params) { export function getWLLZInfo(params) {
return http.get(`${BASEURL}/wllz/index/complainInfo`, params); return http.get(`${BASEURL}/wllz/index/complainInfo`, params);
} }
// 12345报表
export function getSys12345(params) {
return http.get(`${BASEURL}/wllz/complainapi/sys12345`, params);
}
// 样表列表 // 样表列表
export function getBillList(params) { export function getBillList(params) {
...@@ -137,3 +141,47 @@ export function getOtherList(params) { ...@@ -137,3 +141,47 @@ export function getOtherList(params) {
export function getRigusersList(params) { export function getRigusersList(params) {
return http.get(`${BASEURL}/admin/reportforms/rigusers`, params); return http.get(`${BASEURL}/admin/reportforms/rigusers`, params);
} }
/**
* 服务类型数据分析
*/
// 预约趋势
export function getTrend(params) {
return http.get(`${BASEURL}/admin/order/getTrend`, params);
}
// 预约热度排名
export function getOrderRanking(params) {
return http.get(`${BASEURL}/admin/order/getOrderRanking`, params);
}
// 预约人群画像-地域分布
export function getStatisticArea(params) {
return http.get(`${BASEURL}/admin/statistic/area`, params);
}
// 预约人群画像-年龄分布
export function getStatisticAges(params) {
return http.get(`${BASEURL}/admin/statistic/ages`, params);
}
// 预约人群画像-签到准确率
export function getStatisticSignin(params) {
return http.get(`${BASEURL}/admin/statistic/signin`, params);
}
// 预约人群画像-性别分布
export function getStatisticSexual(params) {
return http.get(`${BASEURL}/admin/statistic/sexual`, params);
}
/**
* 办不成事报表
*/
// 办不成事列表
export function getImpossible(params) {
return http.get(`${BASEURL}/admin/impossible/index`, params);
}
// 统计办不成事和已回复
export function getCountImpossible(params) {
return http.get(`${BASEURL}/admin/impossible/countImpossible`, params);
}
// 办不成事详情
export function getImpossibleInfo(params) {
return http.get(`${BASEURL}/admin/impossible/impossibleInfo`, params);
}
\ No newline at end of file
This diff is collapsed.
<template>
<img :src="imgsrc">
</template>
<script>
export default {
props:['src'],
computed:{
imgsrc:function(){
return this.src?`${process.env.VUE_APP_API_BASE_URL}/${this.src}`:require('./thumb.jpg')
}
}
}
</script>
\ No newline at end of file
<template>
<div class="thumb" >
<div v-if="fileType == 'img'">
<img :src="images[index]" v-if="src" @click="show">
<img src="./thumb.jpg" v-else>
</div>
<div v-else>
<a-icon type="play-circle" style="font-size:20px" @click="visible = true"/>
<a-modal
title="详情"
:visible="visible"
:footer="null"
@cancel="visible=false"
>
<video :src="images[0]" style="width:100%;height:100%" controls autoplay v-if="visible"></video>
</a-modal>
</div>
</div>
</template>
<script>
export default {
props:{
src:[String,Array],
index:{
type:Number,
default:0
}
},
data(){
return{
images:[],
fileType:"img",
visible:false
}
},
watch:{
src:{
handler:function(v){
if(v){
if(typeof v == 'string'){
this.images = v.split(",").map(v=>{
return this.publicSrc(v)
})
}else{
this.images = v.map(v=>{
return this.publicSrc(v)
})
}
// 判断视频格式
if(v.search(/mp4/ig)>=0){
this.fileType = 'mp4'
}else{
this.fileType = 'img'
}
}
},
immediate:true
}
},
methods:{
publicSrc(src){
if(src.search(/http/ig)>-1){
return `${src}`
}else{
return `${process.env.VUE_APP_API_BASE_URL}/${src}`
}
},
show(){
this.$viewerApi({
images: this.images,
options: {
initialViewIndex: this.index
},
})
}
}
}
</script>
<style lang="less" scoped>
.thumb{
width: 50px;
// height: 60px;
margin: 0 auto;
cursor: pointer;
img{
display: inline-block;
width: 100%;
height: 100%;
}
}
</style>
\ No newline at end of file
...@@ -20,6 +20,9 @@ import * as directives from "@/directive"; ...@@ -20,6 +20,9 @@ import * as directives from "@/directive";
Object.keys(directives).forEach((name) => Object.keys(directives).forEach((name) =>
Vue.directive(name, directives[name]) Vue.directive(name, directives[name])
); );
// datav
import dataV from '@jiaminghi/data-view'
Vue.use(dataV)
// 引入lodash // 引入lodash
import lodash from "lodash"; import lodash from "lodash";
Vue.prototype.$_ = lodash; Vue.prototype.$_ = lodash;
......
...@@ -232,6 +232,27 @@ const routes = [ ...@@ -232,6 +232,27 @@ const routes = [
}, },
], ],
}, },
{
path: "Impossible",
name: "Impossible",
redirect: "/home/dataManagement/Impossible/ImpossibleForm",
component: () =>
import(
/* webpackChunkName: "oneYardPass" */ "@/views/dataAdmin/components/Impossible/module.vue"
),
meta: { title: "办不成事报表" },
children: [
{
path: "ImpossibleForm",
name: "ImpossibleForm",
component: () =>
import(
/* webpackChunkName: "reportForm" */ "@/views/dataAdmin/components/Impossible/index.vue"
),
meta: { title: "办不成事报表" },
},
],
},
{ {
path: "AIEfficiency", path: "AIEfficiency",
name: "AIEfficiency", name: "AIEfficiency",
......
...@@ -3,23 +3,23 @@ ...@@ -3,23 +3,23 @@
<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.value" style="width: 200px" placeholder="选择产品"> <a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品">
<a-select-option value="jack"> <a-select-option :value="item.id" v-for="(item,index) in product" :key="index">
Jack {{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="queryform.value" style="width: 300px" /> <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"> <a-button type="primary" @click="getList">
开始分析 开始分析
</a-button> </a-button>
</a-form-model-item> </a-form-model-item>
</a-form-model> </a-form-model>
<div class="main"> <div class="mt20">
<a-table :columns="columns" :data-source="data" :scroll="{ y: 590 }"> <a-table :columns="columns" :data-source="data" :scroll="{ y: 590 }" :pagination="false">
</a-table> </a-table>
</div> </div>
...@@ -27,18 +27,27 @@ ...@@ -27,18 +27,27 @@
</template> </template>
<script> <script>
import {getEventCensus} from '@/api/dataActuary.js'
import moment from 'moment';
export default { export default {
data() { data() {
return { return {
queryform: { queryform: {
value: null productId: 1,
dateTimeStart:moment().format('yyyy-MM-DD'),
dateTimeEnd:moment().format('yyyy-MM-DD')
}, },
time:[moment().format('yyyy-MM-DD'),moment().format('yyyy-MM-DD')],
labelCol: { labelCol: {
span: 1 span: 1
}, },
wrapperCol: { wrapperCol: {
span: 14 span: 14
}, },
product:[{
title:'排队机',
id:1
}],
columns: [{ columns: [{
title: "序号", title: "序号",
width: "70px", width: "70px",
...@@ -47,26 +56,38 @@ ...@@ -47,26 +56,38 @@
}, },
{ {
title: "事件", title: "事件",
dataIndex: "title", dataIndex: "eventName",
align: "center", align: "center",
}, },
{ {
title: '事件ID', title: '事件ID',
dataIndex: 'address', dataIndex: 'eventCode',
align: "center", align: "center",
}, },
{ {
title: '事件数量(日均)', title: '事件数量(日均)',
dataIndex: 'address1', dataIndex: 'dayAvg',
align: "center", align: "center",
}, },
{ {
title: '事件平均使用时长(单次)', title: '事件平均使用时长(单次)',
dataIndex: 'address2', dataIndex: 'takeTimeAvg',
align: "center", align: "center",
} }
], ],
data: [] data: [],
}
},
mounted() {
this.getList()
},
methods:{
getList() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null
this.queryform.dateTimeStart = this.time ? this.time[1] : null
getEventCensus(this.queryform).then(res=>{
this.data = res.data.data
})
} }
} }
}; };
......
...@@ -3,17 +3,17 @@ ...@@ -3,17 +3,17 @@
<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.value" style="width: 200px" placeholder="选择产品"> <a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品">
<a-select-option value="jack"> <a-select-option :value="item.id" v-for="(item,index) in product" :key="index">
Jack {{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="queryform.value" style="width: 300px" /> <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"> <a-button type="primary" @click="getData">
开始分析 开始分析
</a-button> </a-button>
</a-form-model-item> </a-form-model-item>
...@@ -23,11 +23,11 @@ ...@@ -23,11 +23,11 @@
<div>页面访问指标趋势</div> <div>页面访问指标趋势</div>
<div class="txt-dv"> <div class="txt-dv">
<div> <div>
<div class="num">4058</div> <div class="num">{{data ? data.accessSum : 0}}</div>
<div>页面累计访问次数</div> <div>页面累计访问次数</div>
</div> </div>
<div> <div>
<div class="num">4058</div> <div class="num">{{data ? data.dayAccessAvg : 0}}</div>
<div>日均访问次数</div> <div>日均访问次数</div>
</div> </div>
</div> </div>
...@@ -37,11 +37,11 @@ ...@@ -37,11 +37,11 @@
<div class="page-box"> <div class="page-box">
<div class="page-dv"> <div class="page-dv">
<div>人均访问深度</div> <div>人均访问深度</div>
<div class="page-num">4.00</div> <div class="page-num">{{data ? data.depthAvg : 0}}</div>
</div> </div>
<div class="page-dv"> <div class="page-dv">
<div>次均访问深度</div> <div>次均访问深度</div>
<div class="page-num">4.00</div> <div class="page-num">{{data ? data.singleDepth : 0}}</div>
</div> </div>
</div> </div>
<div class="chatrs-dv"> <div class="chatrs-dv">
...@@ -55,26 +55,48 @@ ...@@ -55,26 +55,48 @@
<script> <script>
import * as echarts from 'echarts' import * as echarts from 'echarts'
import {getAccessAnalyse} from '@/api/dataActuary.js'
import moment from 'moment';
export default { export default {
data() { data() {
return { return {
queryform: { queryform: {
value: null productId: 1,
dateTimeStart:moment().format('yyyy-MM-DD'),
dateTimeEnd:moment().format('yyyy-MM-DD')
}, },
time:[moment().format('yyyy-MM-DD'),moment().format('yyyy-MM-DD')],
product:[{
title:'排队机',
id:1
}],
labelCol: { labelCol: {
span: 1 span: 1
}, },
wrapperCol: { wrapperCol: {
span: 14 span: 14
}, },
data:null
} }
}, },
mounted() { mounted() {
this.initLine() this.getData()
this.initBar()
}, },
methods: { methods: {
initBar() { getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null
this.queryform.dateTimeStart = this.time ? this.time[1] : null
getAccessAnalyse(this.queryform).then(res=>{
this.data = res.data
let lineX = res.data.accessTrend.map(item=>item.accessDay)
let lineY = res.data.accessTrend.map(item=>item.accessCount)
let barX = res.data.pageAccessTop.map(item=>item.accessCount)
let barY = res.data.pageAccessTop.map(item=>item.pageName)
this.initLine(lineX,lineY)
this.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({
...@@ -103,7 +125,7 @@ ...@@ -103,7 +125,7 @@
}, },
yAxis: { yAxis: {
type: 'category', type: 'category',
data: ['Brazil', 'Indonesia', 'USA', 'India', 'China', 'World'], data: barY,
axisTick: { axisTick: {
show: false show: false
} }
...@@ -111,13 +133,13 @@ ...@@ -111,13 +133,13 @@
series: [{ series: [{
name: '访问次数', name: '访问次数',
type: 'bar', type: 'bar',
data: [18203, 23489, 29034, 104970, 131744, 630230], data: barX,
barWidth:10 barWidth:10
} }
] ]
}) })
}, },
initLine() { initLine(lineX,lineY) {
let chartDom = document.getElementById('number') let chartDom = document.getElementById('number')
let myChart = echarts.init(chartDom); let myChart = echarts.init(chartDom);
myChart.setOption({ myChart.setOption({
...@@ -132,7 +154,7 @@ ...@@ -132,7 +154,7 @@
}, },
xAxis: { xAxis: {
type: 'category', type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], data: lineX,
axisTick: { axisTick: {
show: false show: false
} }
...@@ -142,7 +164,7 @@ ...@@ -142,7 +164,7 @@
}, },
series: [{ series: [{
name: '页面访问次数', name: '页面访问次数',
data: [150, 230, 224, 218, 135, 147, 260], data: lineY,
type: 'line', type: 'line',
markLine: { markLine: {
data: [{ data: [{
......
...@@ -3,17 +3,17 @@ ...@@ -3,17 +3,17 @@
<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.value" style="width: 200px" placeholder="选择产品"> <a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品">
<a-select-option value="jack"> <a-select-option :value="item.id" v-for="(item,index) in product" :key="index">
Jack {{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="queryform.value" style="width: 300px" /> <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"> <a-button type="primary" @click="getData">
开始分析 开始分析
</a-button> </a-button>
</a-form-model-item> </a-form-model-item>
...@@ -24,12 +24,21 @@ ...@@ -24,12 +24,21 @@
<script> <script>
import * as echarts from 'echarts' import * as echarts from 'echarts'
import {getWayAccessAnalyse} from '@/api/dataActuary.js'
import moment from 'moment';
export default { export default {
data() { data() {
return { return {
queryform: { queryform: {
value: null productId: 1,
}, dateTimeStart:moment().format('yyyy-MM-DD'),
dateTimeEnd:moment().format('yyyy-MM-DD')
},
time:[moment().format('yyyy-MM-DD'),moment().format('yyyy-MM-DD')],
product:[{
title:'排队机',
id:1
}],
labelCol: { labelCol: {
span: 1 span: 1
}, },
...@@ -39,10 +48,30 @@ ...@@ -39,10 +48,30 @@
} }
}, },
mounted() { mounted() {
this.init() this.getData()
}, },
methods: { methods: {
init() { getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null
this.queryform.dateTimeStart = this.time ? this.time[1] : null
getWayAccessAnalyse(this.queryform).then(res=>{
let data = res.data.data.map(item=>({name:item.name}))
let links = res.data.links.map(item=>({
source:item.sourceName,
target:item.targetName,
value:item.value,
lineStyle:{
color:'source'
}
}))
this.init(data,links)
})
},
uniqueFunc(arr, uniId){
const res = new Map();
return arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1));
},
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({
...@@ -54,74 +83,8 @@ ...@@ -54,74 +83,8 @@
}, },
color:['#FFCAC4','#6D86DE','#409AFE','#4DB3EA','#07CF8C'], color:['#FFCAC4','#6D86DE','#409AFE','#4DB3EA','#07CF8C'],
nodeWidth:10, nodeWidth:10,
data: [{ data: data,
name: 'a' links: links
},
{
name: 'b'
},
{
name: 'a1'
},
{
name: 'a2'
},
{
name: 'b1'
},
{
name: 'c'
}
],
links: [{
source: 'a',
target: 'a1',
value: 5,
lineStyle:{
color:'source'
}
},
{
source: 'a',
target: 'a2',
value: 3,
lineStyle:{
color:'source'
}
},
{
source: 'b',
target: 'b1',
value: 8,
lineStyle:{
color:'source'
}
},
{
source: 'a',
target: 'b1',
value: 3,
lineStyle:{
color:'source'
}
},
{
source: 'b1',
target: 'a1',
value: 1,
lineStyle:{
color:'source'
}
},
{
source: 'b1',
target: 'c',
value: 2,
lineStyle:{
color:'source'
}
}
]
} }
}) })
} }
......
...@@ -2,29 +2,30 @@ ...@@ -2,29 +2,30 @@
<!-- 产品分析 --> <!-- 产品分析 -->
<div class="page"> <div class="page">
<div class="img-dv"> <div class="img-dv">
<div id="queuing" @click="clickEvent"></div> <img :src="BASE_URL + img" ref="img">
<div id="queuing"></div>
</div> </div>
<div class="list-dv"> <div class="list-dv">
<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.value" style="width: 180px" placeholder="选择产品"> <a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品">
<a-select-option value="jack"> <a-select-option :value="item.id" v-for="(item,index) in product" :key="index">
Jack {{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="queryform.value" style="width: 300px" /> <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-select v-model="queryform.value" style="width: 390px" placeholder="选择产品"> <a-select v-model="queryform.pageCode" style="width: 410px">
<a-select-option value="jack"> <a-select-option :value="item.id" v-for="(item,index) in page" :key="index">
Jack {{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-button type="primary"> <a-button type="primary" @click="getList">
开始分析 开始分析
</a-button> </a-button>
</a-form-model-item> </a-form-model-item>
...@@ -35,7 +36,7 @@ ...@@ -35,7 +36,7 @@
<div>312321</div> <div>312321</div>
</div> </div>
<div style="margin-bottom: 20px;">事件排名Top10</div> <div style="margin-bottom: 20px;">事件排名Top10</div>
<a-table :columns="columns" :data-source="data" :scroll="{ y: 590 }"> <a-table :columns="columns" :data-source="data" :scroll="{ y: 590 }" :pagination="false">
</a-table> </a-table>
</div> </div>
</div> </div>
...@@ -44,12 +45,28 @@ ...@@ -44,12 +45,28 @@
<script> <script>
import Heatmap from 'heatmap.js'; import Heatmap from 'heatmap.js';
import moment from 'moment';
import {
getProductHotCensus
} from '@/api/dataActuary.js'
export default { export default {
data() { data() {
return { return {
queryform: { queryform: {
value: null productId: 1,
dateTimeStart: moment().format('yyyy-MM-DD'),
dateTimeEnd: moment().format('yyyy-MM-DD'),
pageCode: '/'
}, },
time: [moment().format('yyyy-MM-DD'), moment().format('yyyy-MM-DD')],
product: [{
title: '排队机',
id: 1
}],
page: [{
title: '首页',
id: '/'
}],
labelCol: { labelCol: {
span: 1 span: 1
}, },
...@@ -64,43 +81,61 @@ ...@@ -64,43 +81,61 @@
}, },
{ {
title: "事件", title: "事件",
dataIndex: "title", dataIndex: "businessName",
align: "center", align: "center",
}, },
{ {
title: '点击次数', title: '点击次数',
dataIndex: 'address', dataIndex: 'value',
align: "center", align: "center",
}, },
{ {
title: '事件数量(日均)', title: '事件数量(日均)',
dataIndex: 'address1', dataIndex: 'proportion',
align: "center", align: "center",
} }
], ],
data: [], data: [],
heatmapInstance: null, heatmapInstance: null,
dataPoint: [] dataPoint: [],
img: '',
BASE_URL: process.env.VUE_APP_API_BASE_URL + '/'
} }
}, },
mounted() { mounted() {
this.init('queuing') this.init('queuing')
}, },
methods: { methods: {
clickEvent(e) { getList() {
this.dataPoint.push({ this.queryform.dateTimeStart = this.time ? this.time[0] : null
x: e.layerX, this.queryform.dateTimeStart = this.time ? this.time[1] : null
y: e.layerY, getProductHotCensus(this.queryform).then(res => {
value: 20 this.data = res.data.data
}) this.img = res.data.screenUrl
let imgSize = new Image();
imgSize.src = this.BASE_URL + this.img;
imgSize.onload = () => {
let w = this.$refs.img.width / imgSize.width
let h = this.$refs.img.height / imgSize.height
this.dataPoint = res.data.data.map(({
x,
y,
value
}) => ({
x: parseInt(x * w),
y: parseInt(y * h),
value
}))
let data = { let data = {
max: 100, max: 10,
min: 0, min: 0,
data: this.dataPoint data: this.dataPoint
}; };
this.heatmapInstance.setData(data); this.heatmapInstance.setData(data);
}
})
}, },
init(el, dataPoint) { init(el) {
let config = { let config = {
container: document.getElementById(el), container: document.getElementById(el),
radius: 30, radius: 30,
...@@ -109,6 +144,7 @@ ...@@ -109,6 +144,7 @@
blur: .5 blur: .5
}; };
this.heatmapInstance = Heatmap.create(config); this.heatmapInstance = Heatmap.create(config);
this.getList()
} }
} }
}; };
...@@ -122,16 +158,20 @@ ...@@ -122,16 +158,20 @@
.img-dv { .img-dv {
width: 60%; width: 60%;
min-height: 100%; margin: 100px;
display: flex; position: relative;
justify-content: center;
align-items: center; img {
width: 100%;
}
#queuing { #queuing {
width: 740px; width: 100%;
height: 370px; height: 100%;
background-image: url('https://cdn.pixabay.com/photo/2023/03/22/20/16/muffin-7870491_640.jpg'); position: absolute !important;
background-size: 100% 100%; top: 0;
left: 0;
z-index: 999;
} }
} }
......
import { deepClone } from "@/utils/js/common.js";
export default {
data() {
return {
defaultInfoForm: {},
modalInfo: {
confirmLoading: false,
visible: false,
title: '用户信息',
width: '30%',
},
}
},
props: {
sourceInfoForm: {
type: Object,
default: () => {
return {
// --------------申报人信息-----------------------
name: "张三",
Gender: "",
Age: "56",
Phone: "13080888888",
yuyuecishu: "12",
paiduicishu: "6",
guanlianyewu: "12",
haxizhi: "3sad54a5f4sda4da4sd4adasdqa1sda1g1d1ada4d4f1fgweqqwq01f4sa4dgds1eqw5e1c2c2vx",
qukuaigaodu: "24292496",
chuangjianshijian: "2022-04-25 18:22",
// --------------业务分析-----------------------
yewuming: '公安户籍类',
guanlianshixiang: [
{
shixiangmingcheng: '事项名称事项名称事项名称事项名称事项名称事项名称',
},
{
shixiangmingcheng: '事项名称事项名称事项名称事项名称事项名称事项名称',
},
{
shixiangmingcheng: '事项名称事项名称事项名称事项名称事项名称事项名称',
},
],
shoulicishu: "12546",
banjiecishu: "12348",
haopinglv: "99.99%",
// --------------工作人员-----------------------
workImgUrl: require('../../../../../assets/images/logo.png'),
workpeople: "刘明洋",
JobNo: "01",
department: '税务局',
PoliticalOutlook: '党员',
workPhone: '13080888888',
Starlevel: '5',
souliyewu: '12247877',
pingjiacishu: '1225454',
};
},
},
},
watch: {
sourceInfoForm: {
handler(newValue, oldValue) {
// console.log(newValue);
// console.log(oldValue);
this.defaultInfoForm = Object.assign({}, deepClone(newValue));
},
deep: true,
},
},
computed: {
},
created() {
setTimeout(() => {
this.defaultInfoForm = Object.assign({}, deepClone(this.sourceInfoForm));
// console.log(this.defaultInfoForm);
}, 0);
},
methods: {
modalClose() {
this.modalInfo.visible = false;
}
},
}
\ No newline at end of file
<template>
<div class="Container">
<div class="main">
<a-tabs v-model="tabsActive" @change="tabsChange" :forceRender="false">
<a-tab-pane
:key="item.path"
v-for="(item, index) of tabsList['children']"
:tab="item['meta']['title']"
>
</a-tab-pane>
</a-tabs>
<router-view style="padding: 0 1rem" />
</div>
</div>
</template>
<script>
import { getItemData } from "@/utils/js/common.js";
import common from "@/mixins/common";
export default {
name: "ImpossibleModule",
mixins: [common],
data() {
return {
tabsActive: undefined,
};
},
computed: {
tabsList() {
return getItemData(this.$router.options.routes, "name", "Impossible");
},
},
mounted() {
this.$nextTick(() => {
this.tabsActive = this.$route.path.substr(
this.$route.path.lastIndexOf("/") + 1
);
});
},
methods: {
tabsChange(val) {
this.$router.push({
path: `/home/dataManagement/Impossible/${val}`,
// query: { testoption: "test001" },
});
},
},
};
</script>
<style lang="less" scoped>
@headerH: 4.5rem;
.Container {
height: 100% !important;
// background: #fac;
background: #f5f5f5;
display: flex;
flex-direction: column;
.main {
// background: #afc;
background: #ffffff;
border-radius: 6px;
flex: 1;
overflow-y: auto;
overflow-x: hidden;
margin: 1.2rem 2rem;
}
&::before {
content: "";
display: block;
width: 100%;
height: @headerH;
background: rgb(59, 135, 255);
background: -moz-linear-gradient(
174deg,
rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85%
);
background: -webkit-linear-gradient(
174deg,
rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85%
);
background: linear-gradient(
174deg,
rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85%
);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#3b87ff",endColorstr="#6c35f7",GradientType=1);
}
/deep/.ant-tabs-nav {
.ant-tabs-tab {
margin: 0 !important;
}
}
/deep/.ant-tabs-tab {
font-size: 1rem !important;
& + .ant-tabs-tab {
margin: 0 !important;
margin-left: 0.7rem !important;
}
}
}
</style>
...@@ -2,16 +2,16 @@ ...@@ -2,16 +2,16 @@
<div class="callRecord-Container"> <div class="callRecord-Container">
<div class="header_box"> <div class="header_box">
<div> <div>
<a-button type="success" @click="exportTable"> <a-button :loading="btnLoading" type="success" @click="handleExportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span> <span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button> </a-button>
<b>拨打次数:<i>233</i></b> <b>拨打次数:<i>{{total}}</i></b>
</div> </div>
<span> <span>
<a-input style="width:250px;" v-model="searchName" placeholder="请输入标题或姓名关键字搜索"> <a-input style="width:250px;" v-model="searchName" placeholder="请输入标题或姓名关键字搜索">
<a-icon slot="prefix" type="search" /> <a-icon slot="prefix" type="search" />
</a-input> </a-input>
<a-button type="primary">搜索</a-button> <a-button type="primary" @click="getList">搜索</a-button>
</span> </span>
</div> </div>
<div class="main"> <div class="main">
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
selectedRowKeys: tableSelectedKeys, selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange, onChange: onSelectChange,
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="pagTableChange" :loading="tableLoading" }" :scroll="{ y: 590 }" :pagination="tablePagination" @change="pagTableChange" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableSourceData"> :columns="tableHeaders" :dataSource="tableSourceData" >
</a-table> </a-table>
</div> </div>
</div> </div>
...@@ -27,7 +27,10 @@ ...@@ -27,7 +27,10 @@
<script> <script>
import table from "@/mixins/table"; import table from "@/mixins/table";
import {getSys12345} from "@/api/dataAdmin"
import {
export2Excel
} from "@/utils/js/exportExcel";
export default { export default {
mixins: [table], mixins: [table],
name: "callRecordForm", name: "callRecordForm",
...@@ -45,49 +48,55 @@ export default { ...@@ -45,49 +48,55 @@ export default {
{ {
title: "微信号", title: "微信号",
align: "center", align: "center",
dataIndex: "微信号", dataIndex: "nickname",
customRender: (text, record, index) => `${record.nickname || '--'}`
}, },
{ {
title: "电话号码", title: "电话号码",
align: "center", align: "center",
dataIndex: "电话号码", dataIndex: "phone",
customRender: (text, record, index) => `${record.phone || '--'}`
}, },
{ {
title: "拨打位置", title: "拨打位置",
align: "center", align: "center",
dataIndex: "拨打位置", dataIndex: "address",
customRender: (text, record, index) => `${record.address || '--'}`
}, },
{ {
title: "拨打时间", title: "拨打时间",
align: "center", align: "center",
dataIndex: "拨打时间", dataIndex: "create_time",
customRender: (text, record, index) => `${record.create_time || '--'}`
}, },
], ],
btnLoading: false,
tableSelectedKeys: [],
tableSelectedRows: [],
BegindAndEndTime: [], BegindAndEndTime: [],
searchName: undefined, searchName: undefined,
visible: false, visible: false,
total:0
}; };
}, },
components: { components: {
}, },
mounted() { mounted() {
this.setMoment(); this.getList();
for (let key = 0; key < 20; key++) {
this.tableSourceData.push({
id: `00${key + 1}`,
微信号: `liudefa${key + 1}`,
电话号码: `1388888888888`,
拨打位置: `四川省成都市武侯区天益街1号理想中心3栋170${key + 1}号`,
拨打时间: `2022-09-26 13:30:00`
});
}
}, },
methods: { methods: {
getList(){
getSys12345({
phone:this.searchName
}).then(res=>{
this.tableSourceData = res.data.data
this.total = res.data.total
})
},
rangePickerChange(val) { rangePickerChange(val) {
console.log(val); console.log(val);
}, },
QueueState(type) { QueueState(type) {
switch (type) { switch (type) {
case 0: case 0:
...@@ -98,7 +107,61 @@ export default { ...@@ -98,7 +107,61 @@ export default {
return "type0"; return "type0";
} }
}, },
// 选中
onSelectChange(keys, rows) {
this.tableSelectedKeys = keys;
const res = new Map();
this.tableSelectedRows = [...this.tableSelectedRows, ...rows]
.filter((v) => {
return !res.has(v.id) && res.set(v.id, 1);
})
.filter((v) => {
return this.tableSelectedKeys.some((val) => v.id == val);
});
},
// 导出
async handleExportTable() {
this.btnLoading = true;
let obj = {
1: "本地打印",
2: "在线提交",
};
let data = [];
if (this.tableSelectedKeys.length && this.tableSelectedRows.length) {
// 深度克隆避免影响页面表格展示
data = this.$_.cloneDeep(this.tableSelectedRows);
data.forEach((item) => {
Object.keys(obj).forEach((keys) => {
if (item.type == keys) {
item.type = obj[keys];
}
});
});
} else {
let datas = this.$_.cloneDeep(
await getSys12345({
page: 1,
size: -1
})
);
data = datas.data.data
if (!data.length) return;
for (let item of data) {
Object.keys(obj).forEach((key) => {
if (item.type == key) {
item.type = obj[key];
}
});
}
}
export2Excel(
this.tHeader,
this.filterVal,
data,
"填单记录报表" + this.$moment().format("YYYYMMDDHHmmss")
);
this.btnLoading = false;
},
showDrawer() { showDrawer() {
this.visible = true; this.visible = true;
}, },
......
...@@ -11,31 +11,32 @@ ...@@ -11,31 +11,32 @@
</div> </div>
<span> <span>
<a-space> <a-space>
<a-checkbox @change="changeReply"> <a-checkbox @change="changeReply" v-model="isReply">
只看未回复 只看未回复
</a-checkbox> </a-checkbox>
<a-select placeholder="全部类型" @change="changeType"> <a-select placeholder="全部类型" v-model="nowType" @change="changeType">
<a-select-option value="1"> 部门建议 </a-select-option> <a-select-option value="1"> 部门建议 </a-select-option>
<a-select-option value="2"> 办事建议 </a-select-option> <a-select-option value="2"> 办事建议 </a-select-option>
<a-select-option value="3"> 网站建议 </a-select-option> <a-select-option value="3"> 网站建议 </a-select-option>
<a-select-option value="4"> 我要就错 </a-select-option> <a-select-option value="4"> 我要就错 </a-select-option>
<a-select-option value="5"> 我要投诉 </a-select-option> <a-select-option value="5"> 我要投诉 </a-select-option>
</a-select> </a-select>
<a-select placeholder="全部来源" @change="changeDevice"> <a-select placeholder="全部来源" v-model="nowDevice" @change="changeDevice">
<a-select-option value="1"> 评价系统 </a-select-option> <a-select-option value="1"> 评价系统 </a-select-option>
<a-select-option value="2"> 导视系统 </a-select-option> <a-select-option value="2"> 导视系统 </a-select-option>
<a-select-option value="3"> 自助服务系统 </a-select-option> <a-select-option value="3"> 自助服务系统 </a-select-option>
<a-select-option value="4"> 微官网 </a-select-option> <a-select-option value="4"> 微官网 </a-select-option>
<a-select-option value="5"> 数字填单系统 </a-select-option> <a-select-option value="5"> 数字填单系统 </a-select-option>
</a-select> </a-select>
<a-range-picker style="width:250px;" format="YYYY年MM月DD日" class="range_picker_style" <a-range-picker style="width:250px;" format="YYYY-MM-DD" class="range_picker_style"
@change="rangePickerChange"> @change="rangePickerChange" v-model="timeList">
</a-range-picker> </a-range-picker>
<a-input style="width:250px;" v-model="searchName" placeholder="请输入标题或姓名关键字搜索"> <a-input style="width:250px;" v-model="searchName" placeholder="请输入标题或姓名关键字搜索">
<a-icon slot="prefix" type="search" /> <a-icon slot="prefix" type="search" />
</a-input> </a-input>
<a-button type="primary" @click="togetWLLZCount">搜索</a-button> <a-button type="primary" @click="togetWLLZCount">搜索</a-button>
<a-button @click="resetting">重置</a-button>
</a-space> </a-space>
</span> </span>
</div> </div>
...@@ -153,8 +154,8 @@ export default { ...@@ -153,8 +154,8 @@ export default {
visible: false, visible: false,
nowSite:null,//当前站点 nowSite:null,//当前站点
isReply:false,//是否回复 isReply:false,//是否回复
nowType:null,//当前类型 nowType:undefined,//当前类型
nowDevice:null,// 来源 nowDevice:undefined,// 来源
timeList:[],// 时间 timeList:[],// 时间
JYCount:0,//建议次数 JYCount:0,//建议次数
HFCount:0,//回复次数 HFCount:0,//回复次数
...@@ -166,7 +167,7 @@ export default { ...@@ -166,7 +167,7 @@ export default {
mounted() { mounted() {
this.setMoment(); this.setMoment();
// 设置默认时间为今天 // 设置默认时间为今天
this.timeList=[this.$moment(new Date()).format("YYYY-MM-DD"),this.$moment(new Date()).format("YYYY-MM-DD")] this.timeList=[this.$moment().format("YYYY-MM-DD"),this.$moment().format("YYYY-MM-DD")]
this.nowSite = localStorage.getItem('siteId'); this.nowSite = localStorage.getItem('siteId');
this.togetWLLZCount() this.togetWLLZCount()
}, },
...@@ -176,6 +177,15 @@ export default { ...@@ -176,6 +177,15 @@ export default {
} }
}, },
methods: { methods: {
//重置
resetting() {
this.timeList=[this.$moment().format("YYYY-MM-DD"),this.$moment().format("YYYY-MM-DD")]
this.nowType = undefined
this.nowDevice = undefined
this.searchName = undefined
this.isReply = false
this.togetWLLZCount()
},
// 重写导出 // 重写导出
toexportTable() { toexportTable() {
let tableData = []; let tableData = [];
......
...@@ -353,7 +353,7 @@ export default { ...@@ -353,7 +353,7 @@ export default {
}, },
// 获取列表数据 // 获取列表数据
async getCallQueListArr(search = {}) { async getCallQueListArr(search = {}) {
let res = getCallQueList({ let res = await getCallQueList({
page: this.tablePagination.current, page: this.tablePagination.current,
size: this.tablePagination.pageSize, size: this.tablePagination.pageSize,
...this.searchForm, ...this.searchForm,
...@@ -363,6 +363,7 @@ export default { ...@@ -363,6 +363,7 @@ export default {
let { data, total } = res.data; let { data, total } = res.data;
this.tableList = data; this.tableList = data;
this.tablePagination.total = total; this.tablePagination.total = total;
console.log(this.tableList)
return data; return data;
} }
}, },
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
<script> <script>
import { deepClone } from "@/utils/js/common.js"; import { deepClone } from "@/utils/js/common.js";
import lodash from "lodash"; import lodash from "lodash";
import{getStatisticAges} from '@/api/dataAdmin.js'
export default { export default {
props: { props: {
info: { info: {
...@@ -40,19 +41,16 @@ export default { ...@@ -40,19 +41,16 @@ export default {
default: () => {}, default: () => {},
}, },
}, },
mounted() { async mounted() {
this._initEcharts(); let {data} = await getStatisticAges()
let label = data.map(item=> item.age_area)
let value = data.map(item=> item.nums)
this._initEcharts(label,value);
}, },
methods: { methods: {
_initEcharts() { _initEcharts(label,value) {
const NAME = [];
const VALUE = [];
const myChart = this.$echarts.init(this.$el); const myChart = this.$echarts.init(this.$el);
const echarts = this.$echarts; const echarts = this.$echarts;
this.info.forEach((item) => {
NAME.push(item.name);
VALUE.push(item.value);
});
let option = { let option = {
legend: { legend: {
data: ["预约次数"], data: ["预约次数"],
...@@ -72,7 +70,10 @@ export default { ...@@ -72,7 +70,10 @@ export default {
}, },
xAxis: { xAxis: {
type: "category", type: "category",
data: NAME, data: label,
axisTick:{
show:false
}
}, },
yAxis: { yAxis: {
type: "value", type: "value",
...@@ -85,7 +86,7 @@ export default { ...@@ -85,7 +86,7 @@ export default {
}, },
series: [ series: [
{ {
data: VALUE, data: value,
name: "预约次数", name: "预约次数",
barWidth: "50%", barWidth: "50%",
type: "bar", type: "bar",
......
...@@ -8,58 +8,18 @@ export default { ...@@ -8,58 +8,18 @@ export default {
props: { props: {
info: { info: {
type: Array, type: Array,
default: () => [ default: () => [],
{
value: 140,
name: "08:00~09:00",
},
{
value: 150,
name: "09:00~10:00",
},
{
value: 160,
name: "10:00~11:00",
},
{
value: 170,
name: "11:00~12:00",
},
{
value: 180,
name: "12:00~13:00",
},
{
value: 190,
name: "13:00~14:00",
},
{
value: 200,
name: "14:00~15:00",
},
{
value: 210,
name: "15:00~16:00",
},
{
value: 220,
name: "16:00~17:00",
},
{
value: 230,
name: "18:00~19:00",
},
{
value: 240,
name: "19:00~20:00",
},
],
}, },
option: { option: {
type: Object, type: Object,
default: () => {}, default: () => {},
}, },
}, },
watch:{
info(){
this._initEcharts();
}
},
mounted() { mounted() {
this._initEcharts(); this._initEcharts();
}, },
...@@ -70,8 +30,8 @@ export default { ...@@ -70,8 +30,8 @@ export default {
const myChart = this.$echarts.init(this.$el); const myChart = this.$echarts.init(this.$el);
const echarts = this.$echarts; const echarts = this.$echarts;
this.info.forEach((item) => { this.info.forEach((item) => {
NAME.push(item.name); NAME.push(item.datetime);
VALUE.push(item.value); VALUE.push(item.count);
}); });
let option = { let option = {
legend: { legend: {
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
<script> <script>
import { deepClone } from "@/utils/js/common.js"; import { deepClone } from "@/utils/js/common.js";
import lodash from "lodash"; import lodash from "lodash";
import{getStatisticSexual} from '@/api/dataAdmin.js'
export default { export default {
props: { props: {
info: { info: {
...@@ -24,11 +25,13 @@ export default { ...@@ -24,11 +25,13 @@ export default {
default: () => {}, default: () => {},
}, },
}, },
mounted() { async mounted() {
this._initEcharts(); let {data} = await getStatisticSexual()
let value = data.map(({idcard_Sex,nums})=>({name:idcard_Sex,value:nums}))
this._initEcharts(value);
}, },
methods: { methods: {
_initEcharts() { _initEcharts(value) {
const myChart = this.$echarts.init(this.$el); const myChart = this.$echarts.init(this.$el);
const echarts = this.$echarts; const echarts = this.$echarts;
...@@ -43,7 +46,6 @@ export default { ...@@ -43,7 +46,6 @@ export default {
}, },
legend: { legend: {
data: this.info.map((item) => item.name),
bottom: "5%", bottom: "5%",
right: "center", right: "center",
itemWidth: 13, itemWidth: 13,
...@@ -84,18 +86,12 @@ export default { ...@@ -84,18 +86,12 @@ export default {
rich_green: { rich_green: {
color: "#50CCCB", color: "#50CCCB",
}, },
},
formatter: function (params) {
if (params.name === "女士") {
return (
params.name + "\n\n" + `{rich_blue|${params.percent}%}`
);
} else if (params.name === "男士") {
return (
params.name + "\n\n" + `{rich_green|${params.percent}%}`
);
} }
}, },
label: {
normal: {
formatter: '{d}%' //自定义显示格式(b:name, c:value, d:百分比)
}
}, },
labelLine: { labelLine: {
length: 10, length: 10,
...@@ -110,7 +106,7 @@ export default { ...@@ -110,7 +106,7 @@ export default {
}, },
}, },
}, },
data: this.info, data: value,
}, },
], ],
}; };
......
...@@ -29,7 +29,7 @@ export default { ...@@ -29,7 +29,7 @@ export default {
const echarts = this.$echarts; const echarts = this.$echarts;
let option = { let option = {
title: { title: {
text: `{c|${this.info.name}} \n{a|` + this.info.value + "%" + "}", text: `{c|${this.info.starttime}~${this.info.endtime}} \n{a|` + this.info.success_rate * 100 + "%" + "}",
x: "center", x: "center",
y: "center", y: "center",
textStyle: { textStyle: {
...@@ -62,7 +62,7 @@ export default { ...@@ -62,7 +62,7 @@ export default {
}, },
data: [ data: [
{ {
value: this.info.value, value: this.info.success_rate * 100,
name: "", name: "",
itemStyle: { itemStyle: {
normal: { normal: {
...@@ -82,7 +82,7 @@ export default { ...@@ -82,7 +82,7 @@ export default {
}, },
}, },
{ {
value: 100 - this.info.value, value: 100 - (this.info.success_rate * 100),
name: "", name: "",
label: { label: {
normal: { normal: {
......
...@@ -4,54 +4,51 @@ ...@@ -4,54 +4,51 @@
<Head :title="'预约热度排名'"> <Head :title="'预约热度排名'">
<template slot="operation"> <template slot="operation">
<a-range-picker <a-range-picker
format="YYYY年MM月DD日" valueFormat="YYYY-MM-DD"
class="range_picker_style" class="range_picker_style"
@change="rangePickerChange" @change="rangePickerChange"
v-model="BegindAndEndTime" v-model="BegindAndEndTime"
v-if="day == 5"
> >
</a-range-picker> </a-range-picker>
<a-select default-value="001"> <a-select v-model="day">
<!-- <a-select-option <a-select-option value="0"> 今天 </a-select-option>
v-for="(item, index) of selectOptions" <a-select-option value="1"> 近7天 </a-select-option>
:key="index" <a-select-option value="2"> 近30天 </a-select-option>
:value="item.value" <a-select-option value="3"> 近90天 </a-select-option>
> <a-select-option value="4"> 近180天 </a-select-option>
{{ item.label }} <a-select-option value="5"> 自定义 </a-select-option>
</a-select-option> -->
<a-select-option value="001"> 近3天 </a-select-option>
<a-select-option value="002"> 近7天 </a-select-option>
</a-select> </a-select>
<a-button type="primary">搜索</a-button> <a-button type="primary" @click="getData">搜索</a-button>
</template> </template>
</Head> </Head>
<div class="heat_box"> <div class="heat_box" v-if="data">
<ul class="heat_left"> <ul class="heat_left">
<li class="list"> <li class="list">
<span>排名</span> <span>排名</span>
<i>部门名称</i> <i>部门名称</i>
<b>预约热度</b> <b>预约热度</b>
</li> </li>
<li class="list" v-for="item of 5"> <li class="list" v-for="item,index in data.section" :key="index">
<span>NO.{{ item }}</span> <span>NO.{{ index+1 }}</span>
<i>区发改局</i> <i>{{item.deptname}}</i>
<b> <b>
<a-progress :percent="90" :show-info="false" status="active" <a-progress :percent="item.count" :show-info="false" status="active"
/></b> /></b>
</li> </li>
</ul> </ul>
<ul class="heat_right"> <ul class="heat_right">
<li class="list"> <li class="list">
<span>排名</span> <span>排名</span>
<i>部门名称</i> <i>事项名称</i>
<b>预约热度</b> <b>预约热度</b>
</li> </li>
<li class="list" v-for="item of 5"> <li class="list" v-for="item,index in data.matter" :key="index">
<span>NO.{{ item }}</span> <span>NO.{{ index+1 }}</span>
<i>区发改局</i> <i>{{item.mattername}}</i>
<b> <b>
<a-progress :percent="90" :show-info="false" status="active" <a-progress :percent="item.count" :show-info="false" status="active"
/></b> /></b>
</li> </li>
</ul> </ul>
...@@ -62,20 +59,37 @@ ...@@ -62,20 +59,37 @@
<script> <script>
import Head from "./components/header.vue"; import Head from "./components/header.vue";
import {getOrderRanking} from '@/api/dataAdmin.js'
export default { export default {
name: "PortalAdminVueHeatRanking", name: "PortalAdminVueHeatRanking",
data() { data() {
return { return {
day:'0',
BegindAndEndTime: [], BegindAndEndTime: [],
data:null
}; };
}, },
components: { components: {
Head, Head,
}, },
mounted() {}, watch:{
day(val){
if (val != 5) this.BegindAndEndTime = []
}
},
mounted() {
this.getData()
},
methods: { methods: {
getData(){
getOrderRanking({
selected:this.day == 5 ? null : this.day,
time:this.BegindAndEndTime
}).then(res=>{
this.data = res.data
})
},
rangePickerChange(val) { rangePickerChange(val) {
console.log(val); console.log(val);
}, },
......
...@@ -4,30 +4,27 @@ ...@@ -4,30 +4,27 @@
<Head :title="'预约趋势研究'"> <Head :title="'预约趋势研究'">
<template slot="operation"> <template slot="operation">
<a-range-picker <a-range-picker
format="YYYY年MM月DD日" valueFormat="YYYY-MM-DD"
class="range_picker_style" class="range_picker_style"
@change="rangePickerChange" @change="rangePickerChange"
v-model="BegindAndEndTime" v-model="BegindAndEndTime"
v-if="day == 5"
> >
</a-range-picker> </a-range-picker>
<a-select default-value="001"> <a-select v-model="day">
<!-- <a-select-option <a-select-option value="0"> 今天 </a-select-option>
v-for="(item, index) of selectOptions" <a-select-option value="1"> 近7天 </a-select-option>
:key="index" <a-select-option value="2"> 近30天 </a-select-option>
:value="item.value" <a-select-option value="3"> 近90天 </a-select-option>
> <a-select-option value="4"> 近180天 </a-select-option>
{{ item.label }} <a-select-option value="5"> 自定义 </a-select-option>
</a-select-option> -->
<a-select-option value="001"> 近3天 </a-select-option>
<a-select-option value="002"> 近7天 </a-select-option>
</a-select> </a-select>
<a-button type="primary">搜索</a-button> <a-button type="primary" @click="getData">搜索</a-button>
</template> </template>
</Head> </Head>
<div class="echarts"> <div class="echarts">
<Brokenline /> <Brokenline :info="chartsData" v-if="chartsData"/>
</div> </div>
</div> </div>
<div class="fx"> <div class="fx">
...@@ -39,11 +36,11 @@ ...@@ -39,11 +36,11 @@
:pagination="false" :pagination="false"
:columns="tableHeaders" :columns="tableHeaders"
:dataSource="tableSourceData" :dataSource="tableSourceData"
:scroll="{ y: 590 }"
> >
</a-table> </a-table>
<p class="updateTime"> <p class="updateTime">
<i class="fa fa-info-circle"></i>数据更新时间:2021-07-12 <i class="fa fa-info-circle"></i>数据更新时间:{{date}},受数据波动影响,可能会有延迟。
18:00:00,受数据波动影响,可能会有延迟。
</p> </p>
</div> </div>
</div> </div>
...@@ -53,22 +50,18 @@ ...@@ -53,22 +50,18 @@
<script> <script>
import Head from "./components/header.vue"; import Head from "./components/header.vue";
import Brokenline from "./components/line.vue"; import Brokenline from "./components/line.vue";
import {getTrend} from '@/api/dataAdmin.js'
import moment from 'moment'
export default { export default {
name: "PortalAdminVueMakeDataAnalyse", name: "PortalAdminVueMakeDataAnalyse",
data() { data() {
return { return {
day:'0',
date:'',
BegindAndEndTime: [], BegindAndEndTime: [],
chartsData:null,
tableSourceData: [], tableSourceData: [],
tableHeaders: [ tableHeaders: [
{
title: "序号",
dataIndex: "index",
width: "60px",
key: "index",
align: "center",
customRender: (text, record, index) => `${index + 1}`,
},
{ {
title: "研究对象", title: "研究对象",
align: "center", align: "center",
...@@ -106,22 +99,33 @@ export default { ...@@ -106,22 +99,33 @@ export default {
Head, Head,
Brokenline, Brokenline,
}, },
watch:{
mounted() { day(val){
for (let key = 0; key < 2; key++) { if (val != 5) this.BegindAndEndTime = []
this.tableSourceData.push({
id: `00${key + 1}`,
研究对象: `预约次数${key + 1}`,
预约总量: `56 ${key + 1}`,
开放预约天数: `1 ${key + 1}`,
预约日均值: `56 ${key + 1}`,
整体同比: `23% ${key + 1}`,
整体环比: `18% ${key + 1}`,
});
} }
}, },
mounted() {
this.date = moment().format('yyyy-MM-DD hh:mm:ss')
this.getData()
},
methods: { methods: {
getData(){
getTrend({
selected:this.day == 5 ? null : this.day,
time:this.BegindAndEndTime
}).then(res=>{
this.chartsData = res.data.list
this.tableSourceData.push({
研究对象: `预约次数`,
预约总量: res.data.orderAll,
开放预约天数: res.data.openday,
预约日均值: res.data.prev_num,
整体同比: res.data.tbi,
整体环比: res.data.hbi,
});
})
},
rangePickerChange(val) { rangePickerChange(val) {
console.log(val); console.log(val);
}, },
...@@ -141,7 +145,7 @@ export default { ...@@ -141,7 +145,7 @@ export default {
.table_box { .table_box {
padding: 15px; padding: 15px;
.updateTime { .updateTime {
margin: 10px 0; margin: 15px 0;
i { i {
margin: 0 5px; margin: 0 5px;
-webkit-transform: rotate(180deg); -webkit-transform: rotate(180deg);
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
</li> </li>
</template> </template>
</ul> </ul>
<p class="bottom">服务类数据分析<a-icon type="swap-right" /></p> <p class="bottom" @click="handleCkeck('/home/dataManagement/serviceDataAnalyse/makeTrendResearch')">服务类数据分析<a-icon type="swap-right" /></p>
</li> </li>
</ul> </ul>
......
...@@ -937,7 +937,7 @@ ...@@ -937,7 +937,7 @@
"@babel/types" "^7.4.4" "@babel/types" "^7.4.4"
"esutils" "^2.0.2" "esutils" "^2.0.2"
"@babel/runtime@^7.12.13", "@babel/runtime@^7.8.4": "@babel/runtime@^7.12.13", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
"integrity" "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==" "integrity" "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ=="
"resolved" "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.7.tgz" "resolved" "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.7.tgz"
"version" "7.20.7" "version" "7.20.7"
...@@ -990,6 +990,51 @@ ...@@ -990,6 +990,51 @@
dependencies: dependencies:
"@hapi/hoek" "^9.0.0" "@hapi/hoek" "^9.0.0"
"@jiaminghi/bezier-curve@*":
"integrity" "sha512-u9xJPOEl6Dri2E9FfmJoGxYQY7vYJkURNX04Vj64tdi535tPrpkuf9Sm0lNr3QTKdHQh0DdNRsaa62FLQNQEEw=="
"resolved" "https://registry.npmjs.org/@jiaminghi/bezier-curve/-/bezier-curve-0.0.9.tgz"
"version" "0.0.9"
dependencies:
"@babel/runtime" "^7.5.5"
"@jiaminghi/c-render@^0.4.3":
"integrity" "sha512-FJfzj5hGj7MLqqqI2D7vEzHKbQ1Ynnn7PJKgzsjXaZpJzTqs2Yw5OSeZnm6l7Qj7jyPAP53lFvEQNH4o4j6s+Q=="
"resolved" "https://registry.npmjs.org/@jiaminghi/c-render/-/c-render-0.4.3.tgz"
"version" "0.4.3"
dependencies:
"@babel/runtime" "^7.5.5"
"@jiaminghi/bezier-curve" "*"
"@jiaminghi/color" "*"
"@jiaminghi/transition" "*"
"@jiaminghi/charts@*":
"integrity" "sha512-K+HXaOOeWG9OOY1VG6M4mBreeeIAPhb9X+khG651AbnwEwL6G2UtcAQ8GWCq6GzhczcLwwhIhuaHqRygwHC0sA=="
"resolved" "https://registry.npmjs.org/@jiaminghi/charts/-/charts-0.2.18.tgz"
"version" "0.2.18"
dependencies:
"@babel/runtime" "^7.5.5"
"@jiaminghi/c-render" "^0.4.3"
"@jiaminghi/color@*":
"integrity" "sha512-ZY3hdorgODk4OSTbxyXBPxAxHPIVf9rPlKJyK1C1db46a50J0reFKpAvfZG8zMG3lvM60IR7Qawgcu4ZDO3+Hg=="
"resolved" "https://registry.npmjs.org/@jiaminghi/color/-/color-1.1.3.tgz"
"version" "1.1.3"
"@jiaminghi/data-view@^2.10.0":
"integrity" "sha512-Cud2MTiMcqc5k2KWabR/svuVQmXHANqURo+yj40370/LdI/gyUJ6LG203hWXEnT1nMCeiv/SLVmxv3PXLScCeA=="
"resolved" "https://registry.npmjs.org/@jiaminghi/data-view/-/data-view-2.10.0.tgz"
"version" "2.10.0"
dependencies:
"@babel/runtime" "^7.5.5"
"@jiaminghi/charts" "*"
"@jiaminghi/transition@*":
"integrity" "sha512-owBggipoHMikDHHDW5Gc7RZYlVuvxHADiU4bxfjBVkHDAmmck+fCkm46n2JzC3j33hWvP9nSCAeh37t6stgWeg=="
"resolved" "https://registry.npmjs.org/@jiaminghi/transition/-/transition-1.1.11.tgz"
"version" "1.1.11"
dependencies:
"@babel/runtime" "^7.5.5"
"@jridgewell/gen-mapping@^0.1.0": "@jridgewell/gen-mapping@^0.1.0":
"integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w=="
"resolved" "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" "resolved" "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz"
......
-- ----------------------------
-- 页面事件记录表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_page_event`;
CREATE TABLE mortals_xhx_page_event(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`deviceNum` varchar(256) COMMENT '设备编码',
`productId` bigint(20) COMMENT '产品id',
`productName` varchar(256) COMMENT '产品名称',
`businessCode` varchar(256) COMMENT '业务场景编码',
`businessName` varchar(256) COMMENT '业务场景名称',
`eventCode` varchar(256) COMMENT '事件编码',
`eventName` varchar(256) COMMENT '事件名称',
`takeTime` int(8) COMMENT '事件耗时(单位毫秒)',
`pageCode` varchar(256) COMMENT '页面编码(页面路由)',
`pageName` varchar(256) COMMENT '页面名称',
`coordinate` varchar(128) COMMENT '事件坐标(x,y)',
`createUserId` bigint(20) COMMENT '创建用户',
`createTime` datetime COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='页面事件记录';
-- ----------------------------
-- 页面路径记录表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_page_route`;
CREATE TABLE mortals_xhx_page_route(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`deviceNum` varchar(256) COMMENT '设备编码',
`productId` bigint(20) COMMENT '产品id',
`productName` varchar(256) COMMENT '产品名称',
`sourceCode` varchar(256) COMMENT '开始页面编码(路由)',
`sourceName` varchar(256) COMMENT '开始页面名称',
`targetCode` varchar(256) COMMENT '目标页面编码(路由)',
`targetName` varchar(256) COMMENT '目标页面名称',
`createUserId` bigint(20) COMMENT '创建用户',
`createTime` datetime COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='页面路径记录';
-- ----------------------------
-- 产品页面配置表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_page_info`;
CREATE TABLE mortals_xhx_page_info(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`deviceNum` varchar(256) COMMENT '设备编码',
`productId` bigint(20) COMMENT '产品id',
`productName` varchar(256) COMMENT '产品名称',
`pageCode` varchar(256) COMMENT '页面编码(页面路由)',
`pageName` varchar(256) COMMENT '页面名称',
`screenUrl` varchar(256) COMMENT '页面截图地址',
`createUserId` bigint(20) COMMENT '创建用户',
`createTime` datetime COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='产品页面配置';
-- ----------------------------
-- 产品页面访问记录表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_page_access`;
CREATE TABLE mortals_xhx_page_access(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`deviceNum` varchar(256) COMMENT '设备编码',
`productId` bigint(20) COMMENT '产品id',
`productName` varchar(256) COMMENT '产品名称',
`firstCode` varchar(256) COMMENT '页面编码(页面路由)',
`firstName` varchar(256) COMMENT '页面名称',
`secondCode` varchar(256) COMMENT '页面编码(页面路由)',
`secondName` varchar(256) COMMENT '页面名称',
`thirdCode` varchar(256) COMMENT '页面编码(页面路由)',
`thirdName` varchar(256) COMMENT '页面名称',
`fourthCode` varchar(256) COMMENT '页面编码(页面路由)',
`fourthName` varchar(256) COMMENT '页面名称',
`accessContent` text COMMENT '完整路径',
`pageDepth` int(8) DEFAULT '0' COMMENT '页面深度',
`createUserId` bigint(20) COMMENT '创建用户',
`createTime` datetime COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='产品页面访问记录';
-- ----------------------------
-- 产品页面配置表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_page_access_depth`;
CREATE TABLE mortals_xhx_page_access_depth(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`deviceNum` varchar(256) COMMENT '设备编码',
`productId` bigint(20) COMMENT '产品id',
`productName` varchar(256) COMMENT '产品名称',
`pageCode` varchar(256) COMMENT '页面编码(页面路由)',
`pageName` varchar(256) COMMENT '页面名称',
`depthValue` int(8) COMMENT '本次访问深度',
`createUserId` bigint(20) COMMENT '创建用户',
`createTime` datetime COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='产品页面配置';
This diff is collapsed.
...@@ -2,6 +2,8 @@ package com.mortals.xhx.module.page.dao; ...@@ -2,6 +2,8 @@ package com.mortals.xhx.module.page.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.page.model.PageAccessEntity; import com.mortals.xhx.module.page.model.PageAccessEntity;
import com.mortals.xhx.module.page.model.pdu.PageCensusPdu;
import java.util.List; import java.util.List;
/** /**
* 产品页面配置Dao * 产品页面配置Dao
...@@ -13,5 +15,10 @@ import java.util.List; ...@@ -13,5 +15,10 @@ import java.util.List;
public interface PageAccessDao extends ICRUDDao<PageAccessEntity,Long>{ public interface PageAccessDao extends ICRUDDao<PageAccessEntity,Long>{
/**
* 信息流分析
* @param pdu
* @return
*/
List<PageAccessEntity> getInformationFlow(PageCensusPdu pdu);
} }
...@@ -2,6 +2,9 @@ package com.mortals.xhx.module.page.dao; ...@@ -2,6 +2,9 @@ package com.mortals.xhx.module.page.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.page.model.PageAccessDepthEntity; import com.mortals.xhx.module.page.model.PageAccessDepthEntity;
import com.mortals.xhx.module.page.model.pdu.PageCensusPdu;
import com.mortals.xhx.module.page.model.vo.AccessTrendCensusVo;
import java.util.List; import java.util.List;
/** /**
* 产品页面配置Dao * 产品页面配置Dao
...@@ -13,5 +16,10 @@ import java.util.List; ...@@ -13,5 +16,10 @@ import java.util.List;
public interface PageAccessDepthDao extends ICRUDDao<PageAccessDepthEntity,Long>{ public interface PageAccessDepthDao extends ICRUDDao<PageAccessDepthEntity,Long>{
/**
* 人均访问深度
* @param pdu
* @return
*/
List<AccessTrendCensusVo> getDepthAvg(PageCensusPdu pdu);
} }
...@@ -2,6 +2,12 @@ package com.mortals.xhx.module.page.dao; ...@@ -2,6 +2,12 @@ package com.mortals.xhx.module.page.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.page.model.PageEventEntity; import com.mortals.xhx.module.page.model.PageEventEntity;
import com.mortals.xhx.module.page.model.pdu.PageCensusPdu;
import com.mortals.xhx.module.page.model.vo.AccessTrendCensusVo;
import com.mortals.xhx.module.page.model.vo.PageEventCensusVo;
import com.mortals.xhx.module.page.model.vo.ProductHotCensusVo;
import com.mortals.xhx.module.page.model.vo.UsageCensusVo;
import java.util.List; import java.util.List;
/** /**
* 页面事件记录Dao * 页面事件记录Dao
...@@ -13,5 +19,39 @@ import java.util.List; ...@@ -13,5 +19,39 @@ import java.util.List;
public interface PageEventDao extends ICRUDDao<PageEventEntity,Long>{ public interface PageEventDao extends ICRUDDao<PageEventEntity,Long>{
/**
* 事件分析
* @param pdu
* @return
*/
List<PageEventCensusVo> getPageEventCensus(PageCensusPdu pdu);
/**
* 产品热力图
* @param pdu
* @return
*/
List<ProductHotCensusVo> getProductHotCensus(PageCensusPdu pdu);
/**
* 页面访问指标趋势
* @param pdu
* @return
*/
List<AccessTrendCensusVo> getPageAccessTrend(PageCensusPdu pdu);
/**
* 页面访问次数TOP10
* @param pdu
* @return
*/
List<AccessTrendCensusVo> getPageAccessTop(PageCensusPdu pdu);
/**
* 使用习惯
* @param pdu
* @return
*/
List<UsageCensusVo> getUsageCensus(PageCensusPdu pdu);
} }
...@@ -2,7 +2,12 @@ package com.mortals.xhx.module.page.dao; ...@@ -2,7 +2,12 @@ package com.mortals.xhx.module.page.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.page.model.PageRouteEntity; import com.mortals.xhx.module.page.model.PageRouteEntity;
import com.mortals.xhx.module.page.model.pdu.PageCensusPdu;
import com.mortals.xhx.module.page.model.vo.PageWayCensusVo;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 页面路径记录Dao * 页面路径记录Dao
* 页面路径记录 DAO接口 * 页面路径记录 DAO接口
...@@ -13,5 +18,17 @@ import java.util.List; ...@@ -13,5 +18,17 @@ import java.util.List;
public interface PageRouteDao extends ICRUDDao<PageRouteEntity,Long>{ public interface PageRouteDao extends ICRUDDao<PageRouteEntity,Long>{
/**
* 路径图
* @param pdu
* @return
*/
List<PageWayCensusVo> getPageWayCensus(PageCensusPdu pdu);
/**
* 获取路径图页面名称
* @param pdu
* @return
*/
List<Map<String,Object>> getPageWayCode(PageCensusPdu pdu);
} }
package com.mortals.xhx.module.page.dao.ibatis; package com.mortals.xhx.module.page.dao.ibatis;
import com.mortals.xhx.module.page.model.pdu.PageCensusPdu;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.page.dao.PageAccessDao; import com.mortals.xhx.module.page.dao.PageAccessDao;
import com.mortals.xhx.module.page.model.PageAccessEntity; import com.mortals.xhx.module.page.model.PageAccessEntity;
...@@ -17,5 +18,8 @@ import java.util.List; ...@@ -17,5 +18,8 @@ import java.util.List;
public class PageAccessDaoImpl extends BaseCRUDDaoMybatis<PageAccessEntity,Long> implements PageAccessDao { public class PageAccessDaoImpl extends BaseCRUDDaoMybatis<PageAccessEntity,Long> implements PageAccessDao {
@Override
public List<PageAccessEntity> getInformationFlow(PageCensusPdu pdu) {
return this.getSqlSession().selectList(this.getSqlId("getInformationFlow"), pdu);
}
} }
package com.mortals.xhx.module.page.dao.ibatis; package com.mortals.xhx.module.page.dao.ibatis;
import com.mortals.xhx.module.page.model.pdu.PageCensusPdu;
import com.mortals.xhx.module.page.model.vo.AccessTrendCensusVo;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.page.dao.PageAccessDepthDao; import com.mortals.xhx.module.page.dao.PageAccessDepthDao;
import com.mortals.xhx.module.page.model.PageAccessDepthEntity; import com.mortals.xhx.module.page.model.PageAccessDepthEntity;
...@@ -16,6 +18,9 @@ import java.util.List; ...@@ -16,6 +18,9 @@ import java.util.List;
@Repository("pageAccessDepthDao") @Repository("pageAccessDepthDao")
public class PageAccessDepthDaoImpl extends BaseCRUDDaoMybatis<PageAccessDepthEntity,Long> implements PageAccessDepthDao { public class PageAccessDepthDaoImpl extends BaseCRUDDaoMybatis<PageAccessDepthEntity,Long> implements PageAccessDepthDao {
@Override
public List<AccessTrendCensusVo> getDepthAvg(PageCensusPdu pdu) {
return this.getSqlSession().selectList(this.getSqlId("getDepthAvg"), pdu);
}
} }
package com.mortals.xhx.module.page.dao.ibatis; package com.mortals.xhx.module.page.dao.ibatis;
import com.mortals.xhx.module.page.model.pdu.PageCensusPdu;
import com.mortals.xhx.module.page.model.vo.AccessTrendCensusVo;
import com.mortals.xhx.module.page.model.vo.PageEventCensusVo;
import com.mortals.xhx.module.page.model.vo.ProductHotCensusVo;
import com.mortals.xhx.module.page.model.vo.UsageCensusVo;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.page.dao.PageEventDao; import com.mortals.xhx.module.page.dao.PageEventDao;
import com.mortals.xhx.module.page.model.PageEventEntity; import com.mortals.xhx.module.page.model.PageEventEntity;
...@@ -17,5 +22,30 @@ import java.util.List; ...@@ -17,5 +22,30 @@ import java.util.List;
public class PageEventDaoImpl extends BaseCRUDDaoMybatis<PageEventEntity,Long> implements PageEventDao { public class PageEventDaoImpl extends BaseCRUDDaoMybatis<PageEventEntity,Long> implements PageEventDao {
@Override
public List<PageEventCensusVo> getPageEventCensus(PageCensusPdu pdu) {
return this.getSqlSession().selectList(this.getSqlId("getPageEventCensus"), pdu);
}
@Override
public List<ProductHotCensusVo> getProductHotCensus(PageCensusPdu pdu) {
return this.getSqlSession().selectList(this.getSqlId("getProductHotCensus"), pdu);
}
@Override
public List<AccessTrendCensusVo> getPageAccessTrend(PageCensusPdu pdu) {
return this.getSqlSession().selectList(this.getSqlId("getPageAccessTrend"), pdu);
}
@Override
public List<AccessTrendCensusVo> getPageAccessTop(PageCensusPdu pdu) {
return this.getSqlSession().selectList(this.getSqlId("getPageAccessTop"), pdu);
}
@Override
public List<UsageCensusVo> getUsageCensus(PageCensusPdu pdu) {
return this.getSqlSession().selectList(this.getSqlId("getUsageCensus"), pdu);
}
} }
package com.mortals.xhx.module.page.dao.ibatis; package com.mortals.xhx.module.page.dao.ibatis;
import com.mortals.xhx.module.page.model.pdu.PageCensusPdu;
import com.mortals.xhx.module.page.model.vo.PageWayCensusVo;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.page.dao.PageRouteDao; import com.mortals.xhx.module.page.dao.PageRouteDao;
import com.mortals.xhx.module.page.model.PageRouteEntity; import com.mortals.xhx.module.page.model.PageRouteEntity;
import java.util.Date; import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 页面路径记录DaoImpl DAO接口 * 页面路径记录DaoImpl DAO接口
* *
...@@ -17,5 +21,13 @@ import java.util.List; ...@@ -17,5 +21,13 @@ import java.util.List;
public class PageRouteDaoImpl extends BaseCRUDDaoMybatis<PageRouteEntity,Long> implements PageRouteDao { public class PageRouteDaoImpl extends BaseCRUDDaoMybatis<PageRouteEntity,Long> implements PageRouteDao {
@Override
public List<PageWayCensusVo> getPageWayCensus(PageCensusPdu pdu) {
return this.getSqlSession().selectList(this.getSqlId("getPageWayCensus"), pdu);
}
@Override
public List<Map<String, Object>> getPageWayCode(PageCensusPdu pdu) {
return this.getSqlSession().selectList(this.getSqlId("getPageWayCode"), pdu);
}
} }
...@@ -10,12 +10,16 @@ import com.mortals.xhx.module.page.model.vo.PageAccessDepthVo; ...@@ -10,12 +10,16 @@ import com.mortals.xhx.module.page.model.vo.PageAccessDepthVo;
* 产品页面配置实体对象 * 产品页面配置实体对象
* *
* @author zxfei * @author zxfei
* @date 2023-04-10 * @date 2023-04-12
*/ */
public class PageAccessDepthEntity extends PageAccessDepthVo { public class PageAccessDepthEntity extends PageAccessDepthVo {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 设备编码
*/
private String deviceNum;
/** /**
* 产品id * 产品id
*/ */
...@@ -41,6 +45,20 @@ public class PageAccessDepthEntity extends PageAccessDepthVo { ...@@ -41,6 +45,20 @@ public class PageAccessDepthEntity extends PageAccessDepthVo {
public PageAccessDepthEntity(){} public PageAccessDepthEntity(){}
/** /**
* 获取 设备编码
* @return String
*/
public String getDeviceNum(){
return deviceNum;
}
/**
* 设置 设备编码
* @param deviceNum
*/
public void setDeviceNum(String deviceNum){
this.deviceNum = deviceNum;
}
/**
* 获取 产品id * 获取 产品id
* @return Long * @return Long
*/ */
...@@ -98,7 +116,7 @@ public class PageAccessDepthEntity extends PageAccessDepthVo { ...@@ -98,7 +116,7 @@ public class PageAccessDepthEntity extends PageAccessDepthVo {
} }
/** /**
* 获取 本次访问深度 * 获取 本次访问深度
* @return String * @return Integer
*/ */
public Integer getDepthValue(){ public Integer getDepthValue(){
return depthValue; return depthValue;
...@@ -132,6 +150,7 @@ public class PageAccessDepthEntity extends PageAccessDepthVo { ...@@ -132,6 +150,7 @@ public class PageAccessDepthEntity extends PageAccessDepthVo {
public String toString(){ public String toString(){
StringBuilder sb = new StringBuilder(""); StringBuilder sb = new StringBuilder("");
sb.append(",deviceNum:").append(getDeviceNum());
sb.append(",productId:").append(getProductId()); sb.append(",productId:").append(getProductId());
sb.append(",productName:").append(getProductName()); sb.append(",productName:").append(getProductName());
sb.append(",pageCode:").append(getPageCode()); sb.append(",pageCode:").append(getPageCode());
...@@ -142,6 +161,8 @@ public class PageAccessDepthEntity extends PageAccessDepthVo { ...@@ -142,6 +161,8 @@ public class PageAccessDepthEntity extends PageAccessDepthVo {
public void initAttrValue(){ public void initAttrValue(){
this.deviceNum = "";
this.productId = null; this.productId = null;
this.productName = ""; this.productName = "";
......
...@@ -6,7 +6,7 @@ import com.mortals.xhx.module.page.model.PageAccessDepthEntity; ...@@ -6,7 +6,7 @@ import com.mortals.xhx.module.page.model.PageAccessDepthEntity;
* 产品页面配置查询对象 * 产品页面配置查询对象
* *
* @author zxfei * @author zxfei
* @date 2023-04-10 * @date 2023-04-12
*/ */
public class PageAccessDepthQuery extends PageAccessDepthEntity { public class PageAccessDepthQuery extends PageAccessDepthEntity {
/** 开始 序号,主键,自增长 */ /** 开始 序号,主键,自增长 */
...@@ -24,6 +24,11 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity { ...@@ -24,6 +24,11 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity {
/** 序号,主键,自增长排除列表 */ /** 序号,主键,自增长排除列表 */
private List <Long> idNotList; private List <Long> idNotList;
/** 设备编码 */
private List<String> deviceNumList;
/** 设备编码排除列表 */
private List <String> deviceNumNotList;
/** 开始 产品id */ /** 开始 产品id */
private Long productIdStart; private Long productIdStart;
...@@ -54,11 +59,21 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity { ...@@ -54,11 +59,21 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity {
/** 页面名称排除列表 */ /** 页面名称排除列表 */
private List <String> pageNameNotList; private List <String> pageNameNotList;
/** 本次访问深度 */ /** 开始 本次访问深度 */
private List<Integer> depthValueList; private Integer depthValueStart;
/** 结束 本次访问深度 */
private Integer depthValueEnd;
/** 增加 本次访问深度 */
private Integer depthValueIncrement;
/** 本次访问深度列表 */
private List <Integer> depthValueList;
/** 本次访问深度排除列表 */ /** 本次访问深度排除列表 */
private List <String> depthValueNotList; private List <Integer> depthValueNotList;
/** 开始 创建用户 */ /** 开始 创建用户 */
private Long createUserIdStart; private Long createUserIdStart;
...@@ -190,6 +205,38 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity { ...@@ -190,6 +205,38 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity {
} }
/**
* 获取 设备编码
* @return deviceNumList
*/
public List<String> getDeviceNumList(){
return this.deviceNumList;
}
/**
* 设置 设备编码
* @param deviceNumList
*/
public void setDeviceNumList(List<String> deviceNumList){
this.deviceNumList = deviceNumList;
}
/**
* 获取 设备编码
* @return deviceNumNotList
*/
public List<String> getDeviceNumNotList(){
return this.deviceNumNotList;
}
/**
* 设置 设备编码
* @param deviceNumNotList
*/
public void setDeviceNumNotList(List<String> deviceNumNotList){
this.deviceNumNotList = deviceNumNotList;
}
/** /**
* 获取 开始 产品id * 获取 开始 产品id
* @return productIdStart * @return productIdStart
...@@ -367,6 +414,54 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity { ...@@ -367,6 +414,54 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity {
this.pageNameNotList = pageNameNotList; this.pageNameNotList = pageNameNotList;
} }
/**
* 获取 开始 本次访问深度
* @return depthValueStart
*/
public Integer getDepthValueStart(){
return this.depthValueStart;
}
/**
* 设置 开始 本次访问深度
* @param depthValueStart
*/
public void setDepthValueStart(Integer depthValueStart){
this.depthValueStart = depthValueStart;
}
/**
* 获取 结束 本次访问深度
* @return $depthValueEnd
*/
public Integer getDepthValueEnd(){
return this.depthValueEnd;
}
/**
* 设置 结束 本次访问深度
* @param depthValueEnd
*/
public void setDepthValueEnd(Integer depthValueEnd){
this.depthValueEnd = depthValueEnd;
}
/**
* 获取 增加 本次访问深度
* @return depthValueIncrement
*/
public Integer getDepthValueIncrement(){
return this.depthValueIncrement;
}
/**
* 设置 增加 本次访问深度
* @param depthValueIncrement
*/
public void setDepthValueIncrement(Integer depthValueIncrement){
this.depthValueIncrement = depthValueIncrement;
}
/** /**
* 获取 本次访问深度 * 获取 本次访问深度
* @return depthValueList * @return depthValueList
...@@ -387,7 +482,7 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity { ...@@ -387,7 +482,7 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity {
* 获取 本次访问深度 * 获取 本次访问深度
* @return depthValueNotList * @return depthValueNotList
*/ */
public List<String> getDepthValueNotList(){ public List<Integer> getDepthValueNotList(){
return this.depthValueNotList; return this.depthValueNotList;
} }
...@@ -395,10 +490,11 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity { ...@@ -395,10 +490,11 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity {
* 设置 本次访问深度 * 设置 本次访问深度
* @param depthValueNotList * @param depthValueNotList
*/ */
public void setDepthValueNotList(List<String> depthValueNotList){ public void setDepthValueNotList(List<Integer> depthValueNotList){
this.depthValueNotList = depthValueNotList; this.depthValueNotList = depthValueNotList;
} }
/** /**
* 获取 开始 创建用户 * 获取 开始 创建用户
* @return createUserIdStart * @return createUserIdStart
...@@ -679,6 +775,25 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity { ...@@ -679,6 +775,25 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity {
return this; return this;
} }
/**
* 设置 设备编码
* @param deviceNum
*/
public PageAccessDepthQuery deviceNum(String deviceNum){
setDeviceNum(deviceNum);
return this;
}
/**
* 设置 设备编码
* @param deviceNumList
*/
public PageAccessDepthQuery deviceNumList(List<String> deviceNumList){
this.deviceNumList = deviceNumList;
return this;
}
/** /**
* 设置 产品id * 设置 产品id
* @param productId * @param productId
...@@ -790,7 +905,6 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity { ...@@ -790,7 +905,6 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity {
return this; return this;
} }
/** /**
* 设置 本次访问深度 * 设置 本次访问深度
* @param depthValue * @param depthValue
...@@ -800,6 +914,33 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity { ...@@ -800,6 +914,33 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity {
return this; return this;
} }
/**
* 设置 开始 本次访问深度
* @param depthValueStart
*/
public PageAccessDepthQuery depthValueStart(Integer depthValueStart){
this.depthValueStart = depthValueStart;
return this;
}
/**
* 设置 结束 本次访问深度
* @param depthValueEnd
*/
public PageAccessDepthQuery depthValueEnd(Integer depthValueEnd){
this.depthValueEnd = depthValueEnd;
return this;
}
/**
* 设置 增加 本次访问深度
* @param depthValueIncrement
*/
public PageAccessDepthQuery depthValueIncrement(Integer depthValueIncrement){
this.depthValueIncrement = depthValueIncrement;
return this;
}
/** /**
* 设置 本次访问深度 * 设置 本次访问深度
* @param depthValueList * @param depthValueList
...@@ -809,6 +950,15 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity { ...@@ -809,6 +950,15 @@ public class PageAccessDepthQuery extends PageAccessDepthEntity {
return this; return this;
} }
/**
* 设置 本次访问深度
* @param depthValueNotList
*/
public PageAccessDepthQuery depthValueNotList(List<Integer> depthValueNotList){
this.depthValueNotList = depthValueNotList;
return this;
}
/** /**
* 设置 创建用户 * 设置 创建用户
* @param createUserId * @param createUserId
......
package com.mortals.xhx.module.page.model.pdu;
import lombok.Data;
@Data
public class AccessPdu {
/*** 页面编码(页面路由) */
private String pageCode;
/** 页面名称 */
private String pageName;
}
package com.mortals.xhx.module.page.model.vo;
import lombok.Data;
@Data
public class UsageCensusVo {
/*** 业务场景编码 */
private String businessCode;
/*** 业务场景名称 */
private String businessName;
/** 点击次数 */
private Integer accessCount;
/** 点击占比 */
private String proportion;
/** 点击占比 */
private float propValue;
}
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