Commit 88e156d1 authored by “yiyousong”'s avatar “yiyousong”

fix:修复页面

parent 0bc6ad56
...@@ -56,7 +56,7 @@ export default { ...@@ -56,7 +56,7 @@ export default {
} }
menuList(obj).then((res) => { menuList(obj).then((res) => {
// console.log(res); // console.log(res);
let { code, data, dict } = res.data; let { code, data, dict } = res;
if (code == 1) { if (code == 1) {
data.data = data.data.map((item) => { data.data = data.data.map((item) => {
this.menuRouterList.forEach((v) => { this.menuRouterList.forEach((v) => {
......
...@@ -31,13 +31,16 @@ ...@@ -31,13 +31,16 @@
/> />
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-button type="primary" class="addclass" @click="getList"> 开始分析 </a-button> <a-button type="primary" class="addclass" @click="getList">
开始分析
</a-button>
</a-form-model-item> </a-form-model-item>
</a-form-model> </a-form-model>
<div class="mt20"> <div class="mt20">
<a-table <a-table
:columns="columns" :columns="columns"
:data-source="data" :data-source="data"
:loading="loading"
:scroll="{ y: 590 }" :scroll="{ y: 590 }"
:pagination="false" :pagination="false"
> >
...@@ -49,9 +52,9 @@ ...@@ -49,9 +52,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" import product from "../mixins/product";
export default { export default {
mixins:[product], mixins: [product],
data() { data() {
return { return {
queryform: { queryform: {
...@@ -101,6 +104,7 @@ export default { ...@@ -101,6 +104,7 @@ export default {
}, },
], ],
data: [], data: [],
loading: false,
}; };
}, },
mounted() { mounted() {
...@@ -108,10 +112,12 @@ export default { ...@@ -108,10 +112,12 @@ export default {
}, },
methods: { methods: {
getList() { getList() {
this.loading = true;
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;
getEventCensus(this.queryform).then((res) => { getEventCensus(this.queryform).then((res) => {
this.data = res.data.data; this.data = res.data.data;
this.loading = false;
}); });
}, },
}, },
......
<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
<a-select-option :value="item.id" v-for="(item,index) in product" :key="index"> v-model="queryform.productId"
{{item.title}} style="width: 200px"
placeholder="选择产品"
>
<a-select-option
:value="item.id"
v-for="(item, index) in product"
:key="index"
>
{{ 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="选择时间粒度"
>
<a-select-option value="1">10分钟</a-select-option> <a-select-option value="1">10分钟</a-select-option>
<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>
...@@ -42,7 +73,7 @@ ...@@ -42,7 +73,7 @@
</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>
...@@ -50,62 +81,74 @@ ...@@ -50,62 +81,74 @@
</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"
:loading="loading"
>
<template slot="访问人数" slot-scope="text, record, index"> <template slot="访问人数" slot-scope="text, record, index">
<div>{{record.accessCount}}</div> <div>{{ record.accessCount }}</div>
<div v-show="queryform.isRatio == 1">日对比:{{(record.accessRatio * 100).toFixed(2)}}%</div> <div v-show="queryform.isRatio == 1">
日对比:{{ (record.accessRatio * 100).toFixed(2) }}%
</div>
</template> </template>
<template slot="打开次数" slot-scope="text, record, index"> <template slot="打开次数" slot-scope="text, record, index">
<div>{{record.accessCount}}</div> <div>{{ record.accessCount }}</div>
<div v-show="queryform.isRatio == 1">日对比:{{(record.accessRatio * 100).toFixed(2)}}%</div> <div v-show="queryform.isRatio == 1">
日对比:{{ (record.accessRatio * 100).toFixed(2) }}%
</div>
</template> </template>
<template slot="访问页面数" slot-scope="text, record, index"> <template slot="访问页面数" slot-scope="text, record, index">
<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";
import product from "../mixins/product" import product from "../mixins/product";
export default { export default {
mixins:[product], 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"),
particleType:'1', particleType: "1",
isRatio:0 isRatio: 0,
}, },
time:moment().format('yyyy-MM-DD'), time: moment().format("yyyy-MM-DD"),
product:[{ product: [
title:'排队机', {
id:1 title: "排队机",
}], 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: "序号",
width: "70px", width: "70px",
dataIndex: 'index', dataIndex: "index",
customRender: (text, record, index) => `${index+1}`, customRender: (text, record, index) => `${index + 1}`,
align: "center", align: "center",
}, },
{ {
...@@ -114,46 +157,49 @@ ...@@ -114,46 +157,49 @@
align: "center", align: "center",
}, },
{ {
title: '产品名称', title: "产品名称",
dataIndex: 'productName', dataIndex: "productName",
align: "center", align: "center",
}, },
{ {
title: '一级场景', title: "一级场景",
dataIndex: 'firstName', dataIndex: "firstName",
align: "center", align: "center",
}, },
{ {
title: '二级场景', title: "二级场景",
dataIndex: 'secondName', dataIndex: "secondName",
align: "center", align: "center",
}, },
{ {
title: '三级场景', title: "三级场景",
dataIndex: 'thirdName', dataIndex: "thirdName",
align: "center", align: "center",
},{ },
title: '访问人数', {
dataIndex: 'accessCount', title: "访问人数",
dataIndex: "accessCount",
align: "center", align: "center",
scopedSlots: { scopedSlots: {
customRender: "访问人数", customRender: "访问人数",
}, },
},{ },
title: '打开次数', {
dataIndex: 'accessCount1', title: "打开次数",
dataIndex: "accessCount1",
align: "center", align: "center",
scopedSlots: { scopedSlots: {
customRender: "打开次数", customRender: "打开次数",
}, },
},{ },
title: '访问页面数', {
dataIndex: 'pageDepth', title: "访问页面数",
dataIndex: "pageDepth",
align: "center", align: "center",
scopedSlots: { scopedSlots: {
customRender: "访问页面数", customRender: "访问页面数",
}, },
} },
], ],
data: [], data: [],
pagination: { pagination: {
...@@ -161,38 +207,50 @@ ...@@ -161,38 +207,50 @@
pageSize: 10, //每页中显示10条数据 pageSize: 10, //每页中显示10条数据
showSizeChanger: true, showSizeChanger: true,
pageSizeOptions: ["10", "20", "50", "100"], //每页中显示的数据 pageSizeOptions: ["10", "20", "50", "100"], //每页中显示的数据
showTotal: total => `共有 ${total} 条数据`, //分页中显示总的数据 showTotal: (total) => `共有 ${total} 条数据`, //分页中显示总的数据
}, },
filterColumns:[] filterColumns: [],
} loading: false,
};
}, },
mounted() { mounted() {
this.filterColumns = this.columns this.filterColumns = this.columns;
this.getData() this.getData();
}, },
methods:{ methods: {
onChange(e){ onChange(e) {
this.queryform.isRatio = e.target.checked ? 1 : 0 this.queryform.isRatio = e.target.checked ? 1 : 0;
this.getData() this.getData();
}, },
changeIndex(e) { changeIndex(e) {
e = e.concat(['index','dateStr','productName','firstName','secondName','thirdName']) e = e.concat([
let columns = JSON.parse(JSON.stringify(this.filterColumns)) "index",
this.columns = columns.filter(item=> e.some(items=> item.dataIndex == items)) "dateStr",
"productName",
"firstName",
"secondName",
"thirdName",
]);
let columns = JSON.parse(JSON.stringify(this.filterColumns));
this.columns = columns.filter((item) =>
e.some((items) => item.dataIndex == items)
);
}, },
getData() { getData() {
this.queryform.dateTimeStart = this.time ? this.time : null this.loading = true;
this.queryform.dateTimeStart = this.time ? this.time : null this.queryform.dateTimeStart = this.time ? this.time : null;
getInformationFlow(this.queryform).then(res=>{ this.queryform.dateTimeStart = this.time ? this.time : null;
this.data = res.data getInformationFlow(this.queryform).then((res) => {
}) this.data = res.data;
this.loading = false;
});
}, },
} },
}; };
</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;
...@@ -203,9 +261,9 @@ ...@@ -203,9 +261,9 @@
.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
...@@ -53,7 +53,8 @@ export default { ...@@ -53,7 +53,8 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
@headerH: 4.5rem; @headerH: 4.5rem;
.Container { .Container {
height: 100% !important; width: 100%;
height: auto !important;
// background: #fac; // background: #fac;
background: #f5f5f5; background: #f5f5f5;
display: flex; display: flex;
...@@ -103,7 +104,7 @@ export default { ...@@ -103,7 +104,7 @@ export default {
margin-left: 0.7rem !important; margin-left: 0.7rem !important;
} }
} }
/deep/.ant-tabs-bar{ /deep/.ant-tabs-bar {
margin: 0; margin: 0;
} }
} }
......
...@@ -167,11 +167,9 @@ export default { ...@@ -167,11 +167,9 @@ export default {
}); });
}, },
getList() { getList() {
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;
getProductHotCensus(this.queryform).then((res) => { getProductHotCensus(this.queryform).then((res) => {
console.log(res);
this.clickSum = res.data.clickSum; this.clickSum = res.data.clickSum;
this.data = res.data.top10List; this.data = res.data.top10List;
this.img = this.img =
......
...@@ -15,14 +15,16 @@ ...@@ -15,14 +15,16 @@
<a-col :span="8"> <a-col :span="8">
<a-row type="flex" align="middle"> <a-row type="flex" align="middle">
<a-col :span="12"> <a-col :span="12">
<div class="f_40 f_center success">{{ situation.lev1_not_child_nums }}</div> <div class="f_40 f_center success">
{{ situation.lev1_not_child_nums }}
</div>
<div class="f_center">一级业务(无子业务)</div> <div class="f_center">一级业务(无子业务)</div>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<Pie <Pie
:id="`one_pie`" :id="`one_pie`"
:height=200 :height="200"
:width=200 :width="200"
:datas="firstPie" :datas="firstPie"
/> />
</a-col> </a-col>
...@@ -31,18 +33,20 @@ ...@@ -31,18 +33,20 @@
<a-col :span="12"> <a-col :span="12">
<a-row type="flex" align="middle"> <a-row type="flex" align="middle">
<a-col :span="8"> <a-col :span="8">
<div class="f_40 f_center prima">{{ situation.lev1_has_child_nums }}</div> <div class="f_40 f_center prima">
<div class=" f_center">一级业务(有子业务)</div> {{ situation.lev1_has_child_nums }}
</div>
<div class="f_center">一级业务(有子业务)</div>
</a-col> </a-col>
<a-col :span="8"> <a-col :span="8">
<div class="f_40 f_center prima">{{ situation.child_nums }}</div> <div class="f_40 f_center prima">{{ situation.child_nums }}</div>
<div class=" f_center">子级业务</div> <div class="f_center">子级业务</div>
</a-col> </a-col>
<a-col :span="8"> <a-col :span="8">
<Pie <Pie
:id="`two_pie`" :id="`two_pie`"
:height=200 :height="200"
:width=200 :width="200"
:datas="secondPie" :datas="secondPie"
/> />
</a-col> </a-col>
...@@ -69,16 +73,17 @@ ...@@ -69,16 +73,17 @@
<div class="f_center">未排队业务</div> <div class="f_center">未排队业务</div>
</a-col> </a-col>
</a-row> </a-row>
<Pie <Pie :id="`three_pie`" :height="200" :width="280" :datas="thirdPie" />
:id="`three_pie`"
:height="200"
:width="280"
:datas="thirdPie"
/>
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<div class="table_title">排队业务分布情况</div> <div class="table_title">排队业务分布情况</div>
<a-table :row-key="(record,index) => index" :dataSource="lineUp" :columns="lineUpColumns" :pagination="false" :scroll="{ x: 1400, y: 0 }"/> <a-table
:row-key="(record, index) => index"
:dataSource="lineUp"
:columns="lineUpColumns"
:pagination="false"
:scroll="{ x: 1400, y: 0 }"
/>
</a-col> </a-col>
</a-row> </a-row>
</a-card> </a-card>
...@@ -101,22 +106,27 @@ ...@@ -101,22 +106,27 @@
<div class="f_center">未预约业务</div> <div class="f_center">未预约业务</div>
</a-col> </a-col>
</a-row> </a-row>
<Pie <Pie :id="`four_pie`" :height="200" :width="280" :datas="fourthPie" />
:id="`four_pie`"
:height="200"
:width="280"
:datas="fourthPie"
/>
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<div>预约业务分布情况</div> <div>预约业务分布情况</div>
<a-table :row-key="(record,index) => index" :dataSource="appointment" :columns="appointmentColumns" :pagination="false" :scroll="{ x: 1400, y: 0 }"/> <a-table
:row-key="(record, index) => index"
:dataSource="appointment"
:columns="appointmentColumns"
:pagination="false"
:scroll="{ x: 1400, y: 0 }"
/>
</a-col> </a-col>
</a-row> </a-row>
</a-card> </a-card>
<a-row> <a-row>
<a-col :span="12"> <a-col :span="12">
<a-card :bordered="false" class="mb_15" style="margin-right: .625rem; min-height: 44.125rem"> <a-card
:bordered="false"
class="mb_15"
style="margin-right: 0.625rem; min-height: 44.125rem"
>
<template slot="title"> <template slot="title">
<div class="head"> <div class="head">
<div class="head_title">取号最多业务Top10</div> <div class="head_title">取号最多业务Top10</div>
...@@ -132,19 +142,38 @@ ...@@ -132,19 +142,38 @@
> >
</a-select> </a-select>
</template> </template>
<a-table :row-key="(record,index) => index" :dataSource="takeNumberTop" :columns="takeNumberTopColumns" :pagination="false"> <a-table
:row-key="(record, index) => index"
:dataSource="takeNumberTop"
:columns="takeNumberTopColumns"
:pagination="false"
>
<span slot="index" slot-scope="text, record, index"> <span slot="index" slot-scope="text, record, index">
{{ index + 1 }} {{ index + 1 }}
</span> </span>
<span slot="nums" slot-scope="text, record, index" style="display: flex;"> <span
<a-progress :percent="text" :showInfo="false" strokeColor="#87d068"/> slot="nums"
<div style="min-width: 3.125rem;text-align: right;">{{ text }}件</div> slot-scope="text, record, index"
style="display: flex"
>
<a-progress
:percent="text"
:showInfo="false"
strokeColor="#87d068"
/>
<div style="min-width: 3.125rem; text-align: right">
{{ text }}件
</div>
</span> </span>
</a-table> </a-table>
</a-card> </a-card>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-card :bordered="false" class="mb_15" style="margin-left: .625rem; min-height: 44.125rem"> <a-card
:bordered="false"
class="mb_15"
style="margin-left: 0.625rem; min-height: 44.125rem"
>
<template slot="title"> <template slot="title">
<div class="head"> <div class="head">
<div class="head_title">预约最多业务Top10</div> <div class="head_title">预约最多业务Top10</div>
...@@ -160,13 +189,28 @@ ...@@ -160,13 +189,28 @@
> >
</a-select> </a-select>
</template> </template>
<a-table :row-key="(record,index) => index" :dataSource="appointmentTop" :columns="appointmentTopColumns" :pagination="false"> <a-table
:row-key="(record, index) => index"
:dataSource="appointmentTop"
:columns="appointmentTopColumns"
:pagination="false"
>
<span slot="index" slot-scope="text, record, index"> <span slot="index" slot-scope="text, record, index">
{{ index + 1 }} {{ index + 1 }}
</span> </span>
<span slot="nums" slot-scope="text, record, index" style="display: flex;"> <span
<a-progress :percent="text" :showInfo="false" strokeColor="#87d068"/> slot="nums"
<div style="min-width: 3.125rem;text-align: right;">{{ text }}件</div> slot-scope="text, record, index"
style="display: flex"
>
<a-progress
:percent="text"
:showInfo="false"
strokeColor="#87d068"
/>
<div style="min-width: 3.125rem; text-align: right">
{{ text }}件
</div>
</span> </span>
</a-table> </a-table>
</a-card> </a-card>
...@@ -174,7 +218,11 @@ ...@@ -174,7 +218,11 @@
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="12"> <a-col :span="12">
<a-card :bordered="false" class="mb_15" style="margin-right: .625rem; min-height: 44.125rem"> <a-card
:bordered="false"
class="mb_15"
style="margin-right: 0.625rem; min-height: 44.125rem"
>
<template slot="title"> <template slot="title">
<div class="head"> <div class="head">
<div class="head_title">取号最少业务Top10</div> <div class="head_title">取号最少业务Top10</div>
...@@ -190,19 +238,38 @@ ...@@ -190,19 +238,38 @@
> >
</a-select> </a-select>
</template> </template>
<a-table :row-key="(record,index) => index" :dataSource="takeNumberLess" :columns="takeNumberLessColumns" :pagination="false"> <a-table
:row-key="(record, index) => index"
:dataSource="takeNumberLess"
:columns="takeNumberLessColumns"
:pagination="false"
>
<span slot="index" slot-scope="text, record, index"> <span slot="index" slot-scope="text, record, index">
{{ index + 1 }} {{ index + 1 }}
</span> </span>
<span slot="nums" slot-scope="text, record, index" style="display: flex;"> <span
<a-progress :percent="text" :showInfo="false" strokeColor="#87d068"/> slot="nums"
<div style="min-width: 3.125rem;text-align: right;">{{ text }}件</div> slot-scope="text, record, index"
style="display: flex"
>
<a-progress
:percent="text"
:showInfo="false"
strokeColor="#87d068"
/>
<div style="min-width: 3.125rem; text-align: right">
{{ text }}件
</div>
</span> </span>
</a-table> </a-table>
</a-card> </a-card>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-card :bordered="false" class="mb_15" style="margin-left: .625rem; min-height: 44.125rem"> <a-card
:bordered="false"
class="mb_15"
style="margin-left: 0.625rem; min-height: 44.125rem"
>
<template slot="title"> <template slot="title">
<div class="head"> <div class="head">
<div class="head_title">预约最少业务Top10</div> <div class="head_title">预约最少业务Top10</div>
...@@ -218,13 +285,28 @@ ...@@ -218,13 +285,28 @@
> >
</a-select> </a-select>
</template> </template>
<a-table :row-key="(record,index) => index" :dataSource="appointmentLess" :columns="appointmentLessColumns" :pagination="false"> <a-table
:row-key="(record, index) => index"
:dataSource="appointmentLess"
:columns="appointmentLessColumns"
:pagination="false"
>
<span slot="index" slot-scope="text, record, index"> <span slot="index" slot-scope="text, record, index">
{{ index + 1 }} {{ index + 1 }}
</span> </span>
<span slot="nums" slot-scope="text, record, index" style="display: flex;"> <span
<a-progress :percent="text" :showInfo="false" strokeColor="#87d068"/> slot="nums"
<div style="min-width: 3.125rem;text-align: right;">{{ text }}件</div> slot-scope="text, record, index"
style="display: flex"
>
<a-progress
:percent="text"
:showInfo="false"
strokeColor="#87d068"
/>
<div style="min-width: 3.125rem; text-align: right">
{{ text }}件
</div>
</span> </span>
</a-table> </a-table>
</a-card> </a-card>
...@@ -234,17 +316,23 @@ ...@@ -234,17 +316,23 @@
</template> </template>
<script > <script >
import Pie from "../Component/emptyPie/index.vue" import Pie from "../Component/emptyPie/index.vue";
import axios from 'axios' import axios from "axios";
import {getAllInfo,getBusinessInfo,getWyInfo,getTopBusiness,getTopWy} from '@/api/dataActuary.js' import {
import moment from "moment" getAllInfo,
export default { getBusinessInfo,
components:{ getWyInfo,
Pie getTopBusiness,
}, getTopWy,
data(){ } from "@/api/dataActuary.js";
return{ import moment from "moment";
nowDate: '', export default {
components: {
Pie,
},
data() {
return {
nowDate: "",
// 基本情况 // 基本情况
situation: {}, situation: {},
// 第一个饼状图 // 第一个饼状图
...@@ -255,404 +343,422 @@ import moment from "moment" ...@@ -255,404 +343,422 @@ import moment from "moment"
thirdPie: {}, thirdPie: {},
// 第四个饼状图 // 第四个饼状图
fourthPie: {}, fourthPie: {},
takeLineTotal: '', // 排队业务总数 takeLineTotal: "", // 排队业务总数
noTakeLine: '', // 未排队业务 noTakeLine: "", // 未排队业务
appointmentTotal: '', // 预约业务总数 appointmentTotal: "", // 预约业务总数
noAppointment: '', // 未预约业务 noAppointment: "", // 未预约业务
// 下拉框选项 // 下拉框选项
options:[ options: [
{ {
value: '0', value: "0",
label: '今天', label: "今天",
}, },
{ {
value: '1', value: "1",
label: '近7日', label: "近7日",
}, },
{ {
value: '2', value: "2",
label: '近30日', label: "近30日",
}, },
{ {
value: '3', value: "3",
label: '近3个月', label: "近3个月",
}, },
{ {
value: '4', value: "4",
label: '本年度', label: "本年度",
}, },
], ],
// 排队表格数据 // 排队表格数据
lineUp:[ lineUp: [
{ {
key: '1', key: "1",
info: '绑定一级业务数量', info: "绑定一级业务数量",
title: '排队机名称', title: "排队机名称",
}, },
{ {
key: '2', key: "2",
info: '占比', info: "占比",
title: '排队机名称', title: "排队机名称",
}, },
{ {
key: '3', key: "3",
info: '绑定二级业务数量', info: "绑定二级业务数量",
title: '排队机名称', title: "排队机名称",
}, },
{ {
key: '4', key: "4",
info: '占比', info: "占比",
title: '排队机名称', title: "排队机名称",
}, },
], ],
// 排队表格列 // 排队表格列
lineUpColumns:[ lineUpColumns: [
{ {
key: 'key', key: "key",
title: '排队机名称', title: "排队机名称",
width: 200, width: 200,
dataIndex: 'info', dataIndex: "info",
fixed: 'left' fixed: "left",
}, },
], ],
// 预约表格数据 // 预约表格数据
appointment:[ appointment: [
{ {
key: '1', key: "1",
info: '预约一级业务数量', info: "预约一级业务数量",
title: '排队机名称', title: "排队机名称",
}, },
{ {
key: '2', key: "2",
info: '占比', info: "占比",
title: '排队机名称', title: "排队机名称",
}, },
{ {
key: '3', key: "3",
info: '预约二级业务数量', info: "预约二级业务数量",
title: '排队机名称', title: "排队机名称",
}, },
{ {
key: '4', key: "4",
info: '占比', info: "占比",
title: '排队机名称', title: "排队机名称",
}, },
], ],
// 预约表格列 // 预约表格列
appointmentColumns:[ appointmentColumns: [
{ {
key: 'key', key: "key",
title: '排队机名称', title: "排队机名称",
width: 200, width: 200,
dataIndex: 'info', dataIndex: "info",
fixed: 'left' fixed: "left",
}, },
], ],
// 排队TOP // 排队TOP
takeNumberTop:[], takeNumberTop: [],
// 排队TOP列 // 排队TOP列
takeNumberTopColumns: [ takeNumberTopColumns: [
{ {
key:'index', key: "index",
title: '排名', title: "排名",
dataIndex: 'index', dataIndex: "index",
scopedSlots: { customRender: 'index' }, scopedSlots: { customRender: "index" },
}, },
{ {
key:'businessName', key: "businessName",
title: '业务名称', title: "业务名称",
dataIndex: 'name', dataIndex: "name",
}, },
{ {
key:'number', key: "number",
title: '办理数量', title: "办理数量",
dataIndex: 'nums', dataIndex: "nums",
scopedSlots: { customRender: 'nums' }, scopedSlots: { customRender: "nums" },
}, },
], ],
// 预约TOP数据 // 预约TOP数据
appointmentTop:[], appointmentTop: [],
// 预约TOP列 // 预约TOP列
appointmentTopColumns: [ appointmentTopColumns: [
{ {
key:'index', key: "index",
title: '排名', title: "排名",
dataIndex: 'index', dataIndex: "index",
scopedSlots: { customRender: 'index' }, scopedSlots: { customRender: "index" },
}, },
{ {
key:'businessName', key: "businessName",
title: '业务名称', title: "业务名称",
dataIndex: 'name', dataIndex: "name",
}, },
{ {
key:'number', key: "number",
title: '办理数量', title: "办理数量",
dataIndex: 'nums', dataIndex: "nums",
scopedSlots: { customRender: 'nums' }, scopedSlots: { customRender: "nums" },
}, },
], ],
// 排队Less // 排队Less
takeNumberLess:[], takeNumberLess: [],
// 排队Less列 // 排队Less列
takeNumberLessColumns: [ takeNumberLessColumns: [
{ {
key:'index', key: "index",
title: '排名', title: "排名",
dataIndex: 'index', dataIndex: "index",
scopedSlots: { customRender: 'index' }, scopedSlots: { customRender: "index" },
}, },
{ {
key:'businessName', key: "businessName",
title: '业务名称', title: "业务名称",
dataIndex: 'name', dataIndex: "name",
}, },
{ {
key:'number', key: "number",
title: '办理数量', title: "办理数量",
dataIndex: 'nums', dataIndex: "nums",
scopedSlots: { customRender: 'nums' }, scopedSlots: { customRender: "nums" },
}, },
], ],
// 预约Less数据 // 预约Less数据
appointmentLess:[], appointmentLess: [],
// 预约Less列 // 预约Less列
appointmentLessColumns: [ appointmentLessColumns: [
{ {
key:'index', key: "index",
title: '排名', title: "排名",
dataIndex: 'index', dataIndex: "index",
// scopedSlots: { customRender: 'index' }, // scopedSlots: { customRender: 'index' },
}, },
{ {
key:'businessName', key: "businessName",
title: '业务名称', title: "业务名称",
dataIndex: 'name', dataIndex: "name",
}, },
{ {
key:'number', key: "number",
title: '办理数量', title: "办理数量",
dataIndex: 'nums', dataIndex: "nums",
// scopedSlots: { customRender: 'nums' }, // scopedSlots: { customRender: 'nums' },
}, },
], ],
takeNumberTopDate: '0', takeNumberTopDate: "0",
appointmentTopDate: '0', appointmentTopDate: "0",
takeNumberLessDate: '0', takeNumberLessDate: "0",
appointmentLessDate: '0', appointmentLessDate: "0",
siteid:localStorage.getItem("siteId") siteid: localStorage.getItem("siteId"),
} };
}, },
mounted(){ mounted() {
this.$bus.$on("changeSite", () => { this.$bus.$on("changeSite", () => {
this.siteid = localStorage.getItem("siteId") this.siteid = localStorage.getItem("siteId");
}); });
this.getAllData() this.getAllData();
this.getTakeLineData() this.getTakeLineData();
this.getAppointmentData() this.getAppointmentData();
this.getTakeNumberTop() this.getTakeNumberTop();
this.getAppointmentTop() this.getAppointmentTop();
this.getTakeNumberLess() this.getTakeNumberLess();
this.getAppointmentLess() this.getAppointmentLess();
}, },
watch:{ watch: {
siteid(){ siteid() {
this.getAllData() this.getAllData();
this.getTakeLineData() this.getTakeLineData();
this.getAppointmentData() this.getAppointmentData();
this.getTakeNumberTop() this.getTakeNumberTop();
this.getAppointmentTop() this.getAppointmentTop();
this.getTakeNumberLess() this.getTakeNumberLess();
this.getAppointmentLess() this.getAppointmentLess();
} },
}, },
methods:{ methods: {
//获取全部基本数据 //获取全部基本数据
async getAllData() { async getAllData() {
this.nowDate= moment(new Date()).format('YYYY-MM-DD h:mm:ss') this.nowDate = moment(new Date()).format("YYYY-MM-DD h:mm:ss");
const res = await getAllInfo({siteid:this.siteid}) const res = await getAllInfo({ siteid: this.siteid });
if(res.code == 1){ if (res.code == 1) {
this.situation= res.data this.situation = res.data;
this.firstPie= { this.firstPie = {
name: '占比', name: "占比",
val: res.data.lev1_nums, val: res.data.lev1_nums,
total: res.data.lev1_not_child_nums, total: res.data.lev1_not_child_nums,
color: '#04CA8F' color: "#04CA8F",
} };
this.secondPie= { this.secondPie = {
name: '占比', name: "占比",
val: res.data.lev1_has_child_nums, val: res.data.lev1_has_child_nums,
total: res.data.child_nums, total: res.data.child_nums,
color: '#6394f9' color: "#6394f9",
} };
} }
}, },
// 排队取号 // 排队取号
async getTakeLineData() { async getTakeLineData() {
const res = await getBusinessInfo({siteid:this.siteid}) const res = await getBusinessInfo({ siteid: this.siteid });
if(res.code == 1){ if (res.code == 1) {
let arr= res.data.info let arr = res.data.info;
let newArr= [] let newArr = [];
arr.forEach((item ,index)=>{ arr.forEach((item, index) => {
let obj={ let obj = {
id: item.id, id: item.id,
dataIndex: item.id, dataIndex: item.id,
title: item.name, title: item.name,
} };
newArr.push(obj) newArr.push(obj);
this.lineUp[0][item.id]= item.lev1_nums this.lineUp[0][item.id] = item.lev1_nums;
this.lineUp[1][item.id]= (item.lev1_rate * 100).toFixed(2) + '%' this.lineUp[1][item.id] = (item.lev1_rate * 100).toFixed(2) + "%";
this.lineUp[2][item.id]= item.lev2_nums this.lineUp[2][item.id] = item.lev2_nums;
this.lineUp[3][item.id]= (item.lev2_rate * 100).toFixed(2) + '%' this.lineUp[3][item.id] = (item.lev2_rate * 100).toFixed(2) + "%";
}) });
this.lineUpColumns= [...this.lineUpColumns, ...newArr] this.lineUpColumns = [...this.lineUpColumns, ...newArr];
this.takeLineTotal=res.data.use_bus_nums this.takeLineTotal = res.data.use_bus_nums;
this.noTakeLine=res.data.not_use_bus_nums this.noTakeLine = res.data.not_use_bus_nums;
this.thirdPie= { this.thirdPie = {
name: '占比', name: "占比",
val: res.data.not_use_bus_nums, val: res.data.not_use_bus_nums,
total: res.data.use_bus_nums, total: res.data.use_bus_nums,
color: '#04CA8F' color: "#04CA8F",
} };
} }
}, },
// 预约情况 // 预约情况
async getAppointmentData() { async getAppointmentData() {
const res = await getWyInfo({siteid:this.siteid}) const res = await getWyInfo({ siteid: this.siteid });
if(res.code == 1){ if (res.code == 1) {
let arr= res.data.info let arr = res.data.info;
let newArr= [] let newArr = [];
arr.forEach((item ,index)=>{ arr.forEach((item, index) => {
let obj={ let obj = {
id: item.id, id: item.id,
dataIndex: item.id, dataIndex: item.id,
title: item.name, title: item.name,
} };
newArr.push(obj) newArr.push(obj);
this.appointment[0][item.id]= item.lev1_nums this.appointment[0][item.id] = item.lev1_nums;
this.appointment[1][item.id]= (item.lev1_rate * 100).toFixed(2) + '%' this.appointment[1][item.id] =
this.appointment[2][item.id]= item.lev2_nums (item.lev1_rate * 100).toFixed(2) + "%";
this.appointment[3][item.id]= (item.lev2_rate * 100).toFixed(2) + '%' this.appointment[2][item.id] = item.lev2_nums;
}) this.appointment[3][item.id] =
this.appointmentColumns= [...this.appointmentColumns, ...newArr] (item.lev2_rate * 100).toFixed(2) + "%";
this.appointmentTotal=res.data.use_bus_nums });
this.noAppointment=res.data.not_use_bus_nums this.appointmentColumns = [...this.appointmentColumns, ...newArr];
this.fourthPie= { this.appointmentTotal = res.data.use_bus_nums;
name: '占比', this.noAppointment = res.data.not_use_bus_nums;
this.fourthPie = {
name: "占比",
val: res.data.not_use_bus_nums, val: res.data.not_use_bus_nums,
total: res.data.use_bus_nums, total: res.data.use_bus_nums,
color: '#04CA8F' color: "#04CA8F",
} };
} }
}, },
// 取号TOP // 取号TOP
async getTakeNumberTop(val){ async getTakeNumberTop(val) {
if(val== undefined){ if (val == undefined) {
val = 0 val = 0;
} }
const res = await getTopBusiness({selected: val,sort: 'DESC',siteid:this.siteid}) const res = await getTopBusiness({
if(res.code == 1) { selected: val,
this.takeNumberTop= res.data sort: "DESC",
siteid: this.siteid,
});
if (res.code == 1) {
this.takeNumberTop = res.data;
} }
}, },
// 取号Less // 取号Less
async getTakeNumberLess(val){ async getTakeNumberLess(val) {
if(val== undefined){ if (val == undefined) {
val = 0 val = 0;
} }
const res = await getTopBusiness({selected: val,sort: 'ASC',siteid:this.siteid}) const res = await getTopBusiness({
if(res.code == 1) { selected: val,
this.takeNumberLess= res.data sort: "ASC",
siteid: this.siteid,
});
if (res.code == 1) {
this.takeNumberLess = res.data;
} }
}, },
// 预约TOP // 预约TOP
async getAppointmentTop(val){ async getAppointmentTop(val) {
if(val== undefined){ if (val == undefined) {
val = 0 val = 0;
} }
const res = await getTopWy({selected: val,sort: 'DESC',siteid:this.siteid}) const res = await getTopWy({
if(res.code == 1) { selected: val,
this.appointmentTop= res.data sort: "DESC",
siteid: this.siteid,
});
if (res.code == 1) {
this.appointmentTop = res.data;
} }
}, },
// 预约LESS // 预约LESS
async getAppointmentLess(val){ async getAppointmentLess(val) {
if(val== undefined){ if (val == undefined) {
val = 0 val = 0;
} }
const res = await getTopWy({selected: val,sort: 'ASC',siteid:this.siteid}) const res = await getTopWy({
if(res.code == 1) { selected: val,
this.appointmentLess= res.data sort: "ASC",
siteid: this.siteid,
});
if (res.code == 1) {
this.appointmentLess = res.data;
} }
}, },
changeTakeNumberTopDate(val){ changeTakeNumberTopDate(val) {
this.getTakeNumberTop(val) this.getTakeNumberTop(val);
}, },
changeAppointmentTopDate(val){ changeAppointmentTopDate(val) {
this.getAppointmentTop(val) this.getAppointmentTop(val);
}, },
changeTakeNumberLessDate(val){ changeTakeNumberLessDate(val) {
this.getTakeNumberLess(val) this.getTakeNumberLess(val);
}, },
changeAppointmentLessDate(val){ changeAppointmentLessDate(val) {
this.getAppointmentLess(val) this.getAppointmentLess(val);
}, },
} },
} };
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.head{ .head {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
.head_title{ .head_title {
font-weight: bold; font-weight: bold;
font-style: normal; font-style: normal;
font-size: 16px; font-size: 16px;
color: #333; color: #333;
margin-right: 1.25rem; margin-right: 1.25rem;
} }
.head_desc{ .head_desc {
font-weight: 400; font-weight: 400;
font-style: normal; font-style: normal;
font-size: 14px; font-size: 14px;
color: #888888; color: #888888;
} }
} }
/deep/ .ant-table{ /deep/ .ant-table {
width: 100% !important; width: 100% !important;
} }
.table_title{ .table_title {
color: #333; color: #333;
font-weight: 700; font-weight: 700;
font-style: normal; font-style: normal;
font-size: .875rem; font-size: 0.875rem;
margin-bottom: .625rem; margin-bottom: 0.625rem;
} }
.f_20{ .f_20 {
font-size: 1.25rem; font-size: 1.25rem;
} }
.f_40{ .f_40 {
font-size: 2.5rem; font-size: 2.5rem;
} }
.f_center{ .f_center {
text-align: center; text-align: center;
} }
.warning{ .warning {
color: #FD6805 color: #fd6805;
} }
.primary{ .primary {
color: #0595FD color: #0595fd;
} }
.success{ .success {
color: #04CA8F color: #04ca8f;
} }
.h_200{ .h_200 {
height: 12.5rem; height: 12.5rem;
} }
.mb_15{ .mb_15 {
margin-bottom: .9375rem; margin-bottom: 0.9375rem;
} }
</style> </style>
\ No newline at end of file
...@@ -3,9 +3,10 @@ ...@@ -3,9 +3,10 @@
<div class="main"> <div class="main">
<div class="first_card"> <div class="first_card">
<div class="breadMenu"> <div class="breadMenu">
<Breadcrumb/> <Breadcrumb />
</div> </div>
<div class="searchBox"> <div class="searchBox">
<a-space>
<a-auto-complete <a-auto-complete
v-model="businessName" v-model="businessName"
:data-source="dataSource" :data-source="dataSource"
...@@ -15,59 +16,70 @@ ...@@ -15,59 +16,70 @@
@select="onSelect" @select="onSelect"
@search="onSearch" @search="onSearch"
/> />
<a-button type="primary" class="addclass" v-if="!btnShow" @click="startAnalysis">开始分析</a-button> <a-button
<a-button type="primary" class="addclass" v-else @click="backBase">返回</a-button> type="primary"
class="addclass"
v-if="!btnShow"
@click="startAnalysis"
>开始分析</a-button
>
<a-button type="primary" class="addclass" v-else @click="backBase"
>返回</a-button
>
</a-space>
</div> </div>
</div> </div>
<div class="content_view"> <div class="content_view">
<router-view keep-alive/> <router-view keep-alive />
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import _ from 'lodash'; import _ from "lodash";
import axios from 'axios'; import axios from "axios";
import Breadcrumb from "./breadcrumb/index.vue"; import Breadcrumb from "./breadcrumb/index.vue";
import {userSiteBus} from '@/api/dataActuary' import { userSiteBus } from "@/api/dataActuary";
export default { export default {
components:{ components: {
Breadcrumb Breadcrumb,
}, },
data() { data() {
return { return {
// 搜索框 // 搜索框
businessName: '', businessName: "",
dataSource: [], dataSource: [],
sourceList:[], sourceList: [],
// dataList: [], // dataList: [],
btnShow: false, btnShow: false,
} };
}, },
mounted() { mounted() {
// this.getList() // this.getList()
}, },
created(){ created() {},
}, computed: {},
computed:{ methods: {
},
methods:{
startAnalysis() { startAnalysis() {
if(!this.businessName){ if (!this.businessName) {
this.$message.error('请输入业务名称搜索') this.$message.error("请输入业务名称搜索");
}else{ } else {
let item = this.sourceList.filter(i=>{return i.name == this.businessName})[0] let item = this.sourceList.filter((i) => {
if(item){ return i.name == this.businessName;
this.$router.push({ path: 'analysiscontent', query:{id:item.id}}) })[0];
this.btnShow= true if (item) {
this.$router.push({
path: "analysiscontent",
query: { id: item.id },
});
this.btnShow = true;
} }
} }
}, },
backBase() { backBase() {
this.$router.push({ path: 'basecontent'}) this.$router.push({ path: "basecontent" });
this.btnShow= false this.btnShow = false;
this.businessName= '' this.businessName = "";
}, },
// async getList(){ // async getList(){
// await axios.get('http://192.168.0.98:8090/inter/statistic/busList',{params: {siteid: 1}}).then((res)=>{ // await axios.get('http://192.168.0.98:8090/inter/statistic/busList',{params: {siteid: 1}}).then((res)=>{
...@@ -78,28 +90,29 @@ export default { ...@@ -78,28 +90,29 @@ export default {
// } // }
// }) // })
// }, // },
onSearch: _.debounce(function(val){ onSearch: _.debounce(function (val) {
this.dataSource= [] this.dataSource = [];
userSiteBus({siteid: localStorage.getItem('siteId'),bus_name:val}).then(res => { userSiteBus({
siteid: localStorage.getItem("siteId"),
bus_name: val,
}).then((res) => {
if (res.code == 1) { if (res.code == 1) {
this.sourceList = res.data; this.sourceList = res.data;
res.data.forEach(r => { res.data.forEach((r) => {
this.dataSource.push( this.dataSource.push(r.name);
r.name
);
}); });
} }
}) });
},0), }, 0),
onSelect(val){ onSelect(val) {
this.businessName= val this.businessName = val;
}
}, },
} },
};
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@headerH: 4.5rem; @headerH: 4.5rem;
.Container { .Container {
height: 100% !important; height: 100% !important;
// background: #fac; // background: #fac;
background: #f5f5f5; background: #f5f5f5;
...@@ -148,27 +161,27 @@ export default { ...@@ -148,27 +161,27 @@ export default {
margin-left: 0.7rem !important; margin-left: 0.7rem !important;
} }
} }
/deep/.ant-tabs-bar{ /deep/.ant-tabs-bar {
margin: 0; margin: 0;
} }
} }
.first_card{ .first_card {
background: #FFF; background: #fff;
margin-bottom: .9375rem; margin-bottom: 0.9375rem;
} }
.breadMenu{ .breadMenu {
height: 2.8125rem; height: 2.8125rem;
line-height: 2.8125rem; line-height: 2.8125rem;
padding: 0 5rem; padding: 0 5rem;
border-bottom: 1px solid rgba(226, 226, 226, 1); border-bottom: 1px solid rgba(226, 226, 226, 1);
} }
.searchBox{ .searchBox {
height: 6.25rem; height: 6.25rem;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.content_view{ .content_view {
padding: 0 5rem; padding: 0 5rem;
} }
</style> </style>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="main"> <div class="main">
<div class="first_card"> <div class="first_card">
<div class="breadMenu"> <div class="breadMenu">
<Breadcrumb/> <Breadcrumb />
</div> </div>
<div class="searchBox"> <div class="searchBox">
<!-- <a-auto-complete <!-- <a-auto-complete
...@@ -20,79 +20,93 @@ ...@@ -20,79 +20,93 @@
:not-found-content="null" :options="peopleArr" @search="peopelListFn" :not-found-content="null" :options="peopleArr" @search="peopelListFn"
@change="handleChange"> @change="handleChange">
</a-select> --> </a-select> -->
<a-button type="primary" class="addclass" v-if="!btnShow" @click="startAnalysis">开始分析</a-button> <a-button
<a-button type="primary" class="addclass" v-else @click="backBase">返回</a-button> type="primary"
class="addclass"
v-if="!btnShow"
@click="startAnalysis"
>开始分析</a-button
>
<a-button type="primary" class="addclass" v-else @click="backBase"
>返回</a-button
>
</div> </div>
</div> </div>
<div class="content_view"> <div class="content_view">
<router-view keep-alive/> <router-view keep-alive />
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import _ from 'lodash'; import _ from "lodash";
import axios from 'axios'; import axios from "axios";
import Breadcrumb from "./breadcrumb/index.vue"; import Breadcrumb from "./breadcrumb/index.vue";
export default { export default {
components:{ components: {
Breadcrumb Breadcrumb,
}, },
data() { data() {
return { return {
// 搜索框 // 搜索框
businessName: '', businessName: "",
dataSource: [], dataSource: [],
dataList: [], dataList: [],
btnShow: false, btnShow: false,
} };
}, },
mounted() { mounted() {
this.getList() this.getList();
}, },
methods:{ methods: {
startAnalysis() { startAnalysis() {
if(!this.businessName){ if (!this.businessName) {
this.$message.error('请输入业务名称搜索') this.$message.error("请输入业务名称搜索");
}else{ } else {
this.$router.push({ path: 'analysiscontent', query:{name: this.businessName}}) this.$router.push({
this.btnShow= true path: "analysiscontent",
query: { name: this.businessName },
});
this.btnShow = true;
} }
}, },
backBase() { backBase() {
this.$router.push({ path: 'basecontent'}) this.$router.push({ path: "basecontent" });
this.btnShow= false this.btnShow = false;
this.businessName= '' this.businessName = "";
}, },
async getList(){ async getList() {
await axios.get('http://192.168.0.98:8090/inter/statistic/busList',{params: {siteid: 1}}).then((res)=>{ await axios
if(res && res.status==200){ .get("http://192.168.0.98:8090/inter/statistic/busList", {
res.data.data.forEach(item=>{ params: { siteid: 1 },
this.dataList.push(item.name)
}) })
.then((res) => {
if (res && res.status == 200) {
res.data.data.forEach((item) => {
this.dataList.push(item.name);
});
} }
}) });
}, },
onSearch: _.debounce(function(val){ onSearch: _.debounce(function (val) {
this.dataSource= [] this.dataSource = [];
this.dataList.forEach(item=>{ this.dataList.forEach((item) => {
if(item.indexOf(val) !== -1){ if (item.indexOf(val) !== -1) {
this.dataSource.push(item) this.dataSource.push(item);
} }
}) });
}, 1000), }, 1000),
onSelect(val){ onSelect(val) {
this.businessName= val this.businessName = val;
} },
} },
} };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@headerH: 4.5rem; @headerH: 4.5rem;
.Container { .Container {
height: 100% !important; height: 100% !important;
// background: #fac; // background: #fac;
background: #f5f5f5; background: #f5f5f5;
...@@ -141,29 +155,29 @@ ...@@ -141,29 +155,29 @@
margin-left: 0.7rem !important; margin-left: 0.7rem !important;
} }
} }
/deep/.ant-tabs-bar{ /deep/.ant-tabs-bar {
margin: 0; margin: 0;
} }
} }
.first_card{ .first_card {
background: #FFF; background: #fff;
margin-bottom: .9375rem; margin-bottom: 0.9375rem;
} }
.breadMenu{ .breadMenu {
height: 2.8125rem; height: 2.8125rem;
line-height: 2.8125rem; line-height: 2.8125rem;
padding: 0 5rem; padding: 0 5rem;
border-bottom: 1px solid rgba(226, 226, 226, 1); border-bottom: 1px solid rgba(226, 226, 226, 1);
} }
.searchBox{ .searchBox {
height: 6.25rem; height: 6.25rem;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.content_view{ .content_view {
padding: 0 5rem; padding: 0 5rem;
} }
</style> </style>
\ No newline at end of file
...@@ -6,14 +6,33 @@ ...@@ -6,14 +6,33 @@
<Breadcrumb /> <Breadcrumb />
</div> </div>
<div class="searchBox"> <div class="searchBox">
<a-select show-search placeholder="请输入群众名称搜索" style="width: 35.625rem" <a-space>
:default-active-first-option="false" :show-arrow="false" :filter-option="false" allowClear <a-select
:not-found-content="null" :options="peopleArr" @search="peopelListFn" show-search
@change="handleChange"></a-select> placeholder="请输入群众名称搜索"
style="width: 35.625rem"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
allowClear
:not-found-content="null"
:options="peopleArr"
@search="peopelListFn"
@change="handleChange"
></a-select>
<!-- <a-input v-model="peopleName" placeholder="请输入群众名称搜索" style="width: 35.625rem"></a-input> --> <!-- <a-input v-model="peopleName" placeholder="请输入群众名称搜索" style="width: 35.625rem"></a-input> -->
<a-button type="primary" class="addclass" v-if="!btnShow" @click="startAnalysis()">开始分析</a-button> <a-button
<a-button type="primary" class="addclass" v-else @click="backBase()">返回</a-button> type="primary"
class="addclass"
v-if="!btnShow"
@click="startAnalysis()"
>开始分析</a-button
>
<a-button type="primary" class="addclass" v-else @click="backBase()"
>返回</a-button
>
</a-space>
</div> </div>
</div> </div>
<div class="content_view"> <div class="content_view">
...@@ -25,54 +44,57 @@ ...@@ -25,54 +44,57 @@
<script> <script>
import Breadcrumb from "./breadcrumb/index.vue"; import Breadcrumb from "./breadcrumb/index.vue";
import { peopelList } from '@/api/userPortrait' import { peopelList } from "@/api/userPortrait";
export default { export default {
components: { components: {
Breadcrumb Breadcrumb,
}, },
data() { data() {
return { return {
// 搜索框 // 搜索框
peopleId: '', peopleId: "",
peopleArr: [], peopleArr: [],
btnShow: false, btnShow: false,
} };
}, },
methods: { methods: {
//输入框回显 //输入框回显
peopelListFn(val) { peopelListFn(val) {
this.peopleArr = [] this.peopleArr = [];
peopelList({ siteid: localStorage.getItem('siteId'), name: val }).then(res => { peopelList({ siteid: localStorage.getItem("siteId"), name: val }).then(
(res) => {
if (res.code == 1) { if (res.code == 1) {
res.data.forEach(r => { res.data.forEach((r) => {
this.peopleArr.push({ this.peopleArr.push({
value: r.id, value: r.id,
label: r.idcard_Name + '    ' + r.idcard_IDCardNo, label: r.idcard_Name + "    " + r.idcard_IDCardNo,
}); });
}); });
} }
}) }
);
}, },
handleChange(val) { handleChange(val) {
this.peopleId = val; this.peopleId = val;
}, },
startAnalysis() { startAnalysis() {
if (this.peopleId) { if (this.peopleId) {
this.$router.push({ path: 'portrayalAnalysis', query: { peopleid: this.peopleId } }) this.$router.push({
this.btnShow = true path: "portrayalAnalysis",
query: { peopleid: this.peopleId },
});
this.btnShow = true;
} else { } else {
this.$message.warning('请选择群众后搜索') this.$message.warning("请选择群众后搜索");
} }
}, },
backBase() { backBase() {
this.peopleArr = [] this.peopleArr = [];
this.$router.push({ path: 'portrayalBase' }) this.$router.push({ path: "portrayalBase" });
this.btnShow = false this.btnShow = false;
}, },
} },
} };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
...@@ -99,15 +121,21 @@ export default { ...@@ -99,15 +121,21 @@ export default {
width: 100%; width: 100%;
height: @headerH; height: @headerH;
background: rgb(59, 135, 255); background: rgb(59, 135, 255);
background: -moz-linear-gradient(174deg, background: -moz-linear-gradient(
174deg,
rgba(59, 135, 255, 1) 24%, rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85%); rgba(108, 53, 247, 1) 85%
background: -webkit-linear-gradient(174deg, );
background: -webkit-linear-gradient(
174deg,
rgba(59, 135, 255, 1) 24%, rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85%); rgba(108, 53, 247, 1) 85%
background: linear-gradient(174deg, );
background: linear-gradient(
174deg,
rgba(59, 135, 255, 1) 24%, rgba(59, 135, 255, 1) 24%,
rgba(108, 53, 247, 1) 85%); rgba(108, 53, 247, 1) 85%
);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#3b87ff", endColorstr="#6c35f7", GradientType=1); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#3b87ff", endColorstr="#6c35f7", GradientType=1);
} }
...@@ -120,7 +148,7 @@ export default { ...@@ -120,7 +148,7 @@ export default {
/deep/.ant-tabs-tab { /deep/.ant-tabs-tab {
font-size: 14px !important; font-size: 14px !important;
&+.ant-tabs-tab { & + .ant-tabs-tab {
margin: 0 !important; margin: 0 !important;
margin-left: 0.7rem !important; margin-left: 0.7rem !important;
} }
...@@ -132,8 +160,8 @@ export default { ...@@ -132,8 +160,8 @@ export default {
} }
.first_card { .first_card {
background: #FFF; background: #fff;
margin-bottom: .9375rem; margin-bottom: 0.9375rem;
} }
.breadMenu { .breadMenu {
......
...@@ -20,7 +20,9 @@ ...@@ -20,7 +20,9 @@
<!-- <a-select-option value="5"> 自定义 </a-select-option> --> <!-- <a-select-option value="5"> 自定义 </a-select-option> -->
</a-select> </a-select>
<a-button type="primary" class="addclass" @click="getData">搜索</a-button> <a-button type="primary" class="addclass" @click="getData"
>搜索</a-button
>
</template> </template>
</Head> </Head>
<div class="heat_box" v-if="data"> <div class="heat_box" v-if="data">
...@@ -30,11 +32,14 @@ ...@@ -30,11 +32,14 @@
<i>部门名称</i> <i>部门名称</i>
<b>预约热度</b> <b>预约热度</b>
</li> </li>
<li class="list" v-for="item,index in data.section" :key="index"> <li class="list" v-for="(item, index) in data.section" :key="index">
<span>NO.{{ index+1 }}</span> <span>NO.{{ index + 1 }}</span>
<i>{{item.deptname}}</i> <i>{{ item.deptname }}</i>
<b> <b>
<a-progress :percent="item.count" :show-info="false" status="active" <a-progress
:percent="item.count"
:show-info="false"
status="active"
/></b> /></b>
</li> </li>
</ul> </ul>
...@@ -44,11 +49,14 @@ ...@@ -44,11 +49,14 @@
<i>事项名称</i> <i>事项名称</i>
<b>预约热度</b> <b>预约热度</b>
</li> </li>
<li class="list" v-for="item,index in data.matter" :key="index"> <li class="list" v-for="(item, index) in data.matter" :key="index">
<span>NO.{{ index+1 }}</span> <span>NO.{{ index + 1 }}</span>
<i>{{item.mattername}}</i> <i>{{ item.mattername }}</i>
<b> <b>
<a-progress :percent="item.count" :show-info="false" status="active" <a-progress
:percent="item.count"
:show-info="false"
status="active"
/></b> /></b>
</li> </li>
</ul> </ul>
...@@ -59,36 +67,36 @@ ...@@ -59,36 +67,36 @@
<script> <script>
import Head from "./components/header.vue"; import Head from "./components/header.vue";
import {getOrderRanking} from '@/api/dataAdmin.js' import { getOrderRanking } from "@/api/dataAdmin.js";
export default { export default {
name: "PortalAdminVueHeatRanking", name: "PortalAdminVueHeatRanking",
data() { data() {
return { return {
day:'0', day: "0",
BegindAndEndTime: [], BegindAndEndTime: [],
data:null data: null,
}; };
}, },
components: { components: {
Head, Head,
}, },
watch:{ watch: {
day(val){ day(val) {
if (val != 5) this.BegindAndEndTime = [] if (val != 5) this.BegindAndEndTime = [];
} },
}, },
mounted() { mounted() {
this.getData() this.getData();
}, },
methods: { methods: {
getData(){ getData() {
getOrderRanking({ getOrderRanking({
selected:this.day == 5 ? null : this.day, selected: this.day == 5 ? null : this.day,
time:this.BegindAndEndTime time: this.BegindAndEndTime,
}).then(res=>{ }).then((res) => {
this.data = res.data this.data = res.data;
}) });
}, },
rangePickerChange(val) { rangePickerChange(val) {
console.log(val); console.log(val);
...@@ -99,6 +107,7 @@ export default { ...@@ -99,6 +107,7 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
.HeatRanking-Container { .HeatRanking-Container {
width: 100%;
& > .pm { & > .pm {
.heat_box { .heat_box {
display: flex; display: flex;
......
...@@ -94,6 +94,7 @@ export default { ...@@ -94,6 +94,7 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
@headerH: 4.5rem; @headerH: 4.5rem;
#dataAnalyse-Container { #dataAnalyse-Container {
width: 100%;
height: 100% !important; height: 100% !important;
background: #eee; background: #eee;
display: flex; display: flex;
......
...@@ -149,15 +149,15 @@ export default { ...@@ -149,15 +149,15 @@ export default {
// 获取用户常用站点列表 // 获取用户常用站点列表
async getCollect() { async getCollect() {
let res = await getCollect(); let res = await getCollect();
if (res.data.code == 1) { if (res.code == 1) {
this.collectList = res.data.data; this.collectList = res.data;
} }
}, },
// 获取站点分类列表 // 获取站点分类列表
async appsListInterface() { async appsListInterface() {
let res = await appsListInterface({ siteId: this.siteId }); let res = await appsListInterface({ siteId: this.siteId });
if (res.data.code == 1) { if (res.code == 1) {
let { data } = res.data.data; let { data } = res.data;
this.siteModelList = data; this.siteModelList = data;
} }
}, },
...@@ -208,7 +208,7 @@ export default { ...@@ -208,7 +208,7 @@ export default {
// this.$message.success("设置成功"); // this.$message.success("设置成功");
// this.getCollect(); // this.getCollect();
// } // }
if (res.data.code != 1) { if (res.code != 1) {
this.getCollect(); this.getCollect();
} }
}, },
......
...@@ -38,13 +38,13 @@ ...@@ -38,13 +38,13 @@
listArr[active] ? listArr[active].productName : "--" listArr[active] ? listArr[active].productName : "--"
}}</span> }}</span>
<span class="count primary">{{ <span class="count primary">{{
listArr[active].curInfo.length listArr[active]?.curInfo.length
}}</span> }}</span>
</div> </div>
<div v-if="listArr[active].curInfo.length > 0"> <div v-if="listArr[active]?.curInfo.length > 0">
<div <div
class="list flex aic jcb" class="list flex aic jcb"
v-for="(i, j) in listArr[active].curInfo" v-for="(i, j) in listArr[active]?.curInfo"
:key="j" :key="j"
> >
<div class="app-name">{{ i.appName }}</div> <div class="app-name">{{ i.appName }}</div>
......
...@@ -207,6 +207,7 @@ export default { ...@@ -207,6 +207,7 @@ export default {
}, },
// 获取菜单列表 // 获取菜单列表
async getMenuList() { async getMenuList() {
this.tableLoading = true;
let res = await menuList({ let res = await menuList({
page: this.tablePagination.current, page: this.tablePagination.current,
size: -1, size: -1,
...@@ -218,10 +219,12 @@ export default { ...@@ -218,10 +219,12 @@ export default {
this.firstStair = data.filter((v) => v.parentId === -1); this.firstStair = data.filter((v) => v.parentId === -1);
let childrens = data.filter((v) => v.parentId !== -1); let childrens = data.filter((v) => v.parentId !== -1);
this.menusTreeData = this.fliterEvent(this.firstStair, childrens); this.menusTreeData = this.fliterEvent(this.firstStair, childrens);
this.tableLoading = false;
}, },
// 搜索 // 搜索
async searchData() { async searchData() {
if (this.searchForm.parentId || this.searchForm.name) { if (this.searchForm.parentId || this.searchForm.name) {
this.tableLoading = true;
let obj = { ...this.searchForm }; let obj = { ...this.searchForm };
obj.name = "%" + this.searchForm.name + "%"; obj.name = "%" + this.searchForm.name + "%";
let res = await menuList({ let res = await menuList({
...@@ -232,6 +235,7 @@ export default { ...@@ -232,6 +235,7 @@ export default {
let { data, total } = res.data; let { data, total } = res.data;
this.tablePagination.total = total; this.tablePagination.total = total;
this.menusTreeData = data; this.menusTreeData = data;
this.tableLoading = false;
} else { } else {
this.getMenuList(); this.getMenuList();
} }
......
...@@ -139,6 +139,7 @@ export default { ...@@ -139,6 +139,7 @@ export default {
}, },
methods: { methods: {
async getRoleList() { async getRoleList() {
this.tableLoading = true;
let res = await roleList({ let res = await roleList({
page: this.tablePagination.current, //当前页 page: this.tablePagination.current, //当前页
size: this.tablePagination.pageSize, //每页条数 size: this.tablePagination.pageSize, //每页条数
...@@ -155,6 +156,7 @@ export default { ...@@ -155,6 +156,7 @@ export default {
this.tableSourceData = data.data; this.tableSourceData = data.data;
this.roleDict = dict; this.roleDict = dict;
} }
this.tableLoading = false;
}, },
pagTableChange(pag) { pagTableChange(pag) {
this.tablePagination.current = pag.current; this.tablePagination.current = pag.current;
......
...@@ -197,6 +197,7 @@ export default { ...@@ -197,6 +197,7 @@ export default {
// 获取用户列表 // 获取用户列表
async getUserList() { async getUserList() {
this.tableLoading = true;
let realName = ""; let realName = "";
let mobile = ""; let mobile = "";
if (this.userform.searchVal) { if (this.userform.searchVal) {
...@@ -227,6 +228,7 @@ export default { ...@@ -227,6 +228,7 @@ export default {
this.tablePagination.total = total; this.tablePagination.total = total;
this.userDict = this.transverter(roleId); this.userDict = this.transverter(roleId);
this.tableSourceData = data; this.tableSourceData = data;
this.tableLoading = false;
}, },
// 添加用户 // 添加用户
......
...@@ -174,6 +174,7 @@ export default { ...@@ -174,6 +174,7 @@ export default {
}, },
dict: {}, dict: {},
total: 0, total: 0,
tableLoading: false,
}; };
}, },
components: { components: {
...@@ -184,6 +185,7 @@ export default { ...@@ -184,6 +185,7 @@ export default {
}, },
methods: { methods: {
getList() { getList() {
this.tableLoading = true;
getInterfaceList({ getInterfaceList({
page: this.tablePagination.current, page: this.tablePagination.current,
size: this.tablePagination.pageSize, size: this.tablePagination.pageSize,
...@@ -195,8 +197,8 @@ export default { ...@@ -195,8 +197,8 @@ export default {
this.dict = dict; this.dict = dict;
this.tableSourceData = data; this.tableSourceData = data;
this.tablePagination.total = total; this.tablePagination.total = total;
return data;
} }
this.tableLoading = false;
}); });
}, },
QueueState(type) { QueueState(type) {
......
...@@ -142,6 +142,7 @@ export default { ...@@ -142,6 +142,7 @@ export default {
deveLanguage: {}, deveLanguage: {},
isEnable: {}, isEnable: {},
}, },
tableLoading: false,
}; };
}, },
components: { components: {
...@@ -153,6 +154,7 @@ export default { ...@@ -153,6 +154,7 @@ export default {
}, },
methods: { methods: {
getList(search) { getList(search) {
this.tableLoading = true;
getApps({ getApps({
page: this.tablePagination.current, page: this.tablePagination.current,
size: this.tablePagination.pageSize, size: this.tablePagination.pageSize,
...@@ -164,6 +166,7 @@ export default { ...@@ -164,6 +166,7 @@ export default {
this.dict = dict; this.dict = dict;
this.tableSourceData = data; this.tableSourceData = data;
this.tablePagination.total = total; this.tablePagination.total = total;
this.tableLoading = false;
return data; return data;
} }
}); });
......
...@@ -113,6 +113,7 @@ export default { ...@@ -113,6 +113,7 @@ export default {
current: 1, current: 1,
pageSize: 10, pageSize: 10,
}, },
tableLoading: false,
}; };
}, },
components: { components: {
...@@ -124,6 +125,7 @@ export default { ...@@ -124,6 +125,7 @@ export default {
}, },
methods: { methods: {
getList(search) { getList(search) {
this.tableLoading = true;
getDocument({ getDocument({
page: this.tablePagination.current, page: this.tablePagination.current,
size: this.tablePagination.pageSize, size: this.tablePagination.pageSize,
...@@ -136,6 +138,7 @@ export default { ...@@ -136,6 +138,7 @@ export default {
this.dict = dict; this.dict = dict;
this.tableSourceData = data; this.tableSourceData = data;
this.tablePagination.total = total; this.tablePagination.total = total;
this.tableLoading = false;
return data; return data;
} }
}); });
......
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