Commit 6294bedf authored by xj's avatar xj

接口对接

parent cf54ed04
......@@ -2,6 +2,32 @@ 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 getAllInfo(params) {
return http.get(`${BASEURL}/inter/statistic/allInfo`, params);
}
//排队取号
export function getBusinessInfo(params) {
return http.get(`${BASEURL}/inter/statistic/businessInfo`, params);
}
//预约情况
export function getWyInfo(params) {
return http.get(`${BASEURL}/inter/statistic/wyInfo`, params);
}
//取号Top
export function getTopBusiness(params) {
return http.get(`${BASEURL}/inter/statistic/topBusiness`, params);
}
//预约Top
export function getTopWy(params) {
return http.get(`${BASEURL}/inter/statistic/topWy`, params);
}
//业务分析
export function getBusInfoById(params) {
return http.get(`${BASEURL}/inter/statistic/busInfoById`, params);
}
/* 使用行为分析 */
//事件分析
export function getEventCensus(params) {
......
......@@ -6,7 +6,7 @@
<div class="head_title">分析结果</div>
</div>
</template>
<a-row type="flex" align="middle">
<a-row type="flex" align="middle" v-if="formState">
<a-col :span="4">
<div class="f_40 f_center">{{ formState.name }}</div>
<div class="f_center">业务名称</div>
......@@ -24,13 +24,13 @@
</a-col>
<a-col :span="10">
<a-form layout="horizontal" :model="formState" :label-col="{span: 4}" :wrapper-col="{span: 20}">
<a-form-item label="业务级别:">{{ formState.level }}</a-form-item>
<a-form-item label="业务级别:">{{ formState.level ? '二级业务' : '一级业务' }}</a-form-item>
<a-form-item label="父级业务:">{{ formState.parent_name }}</a-form-item>
<a-form-item label="关联事项:">
<a-tag v-for="(item, index) in formState.matter" :key="index">{{ item.matterName }}</a-tag>
</a-form-item>
<a-form-item label="是否预约:">{{ formState.canorder ? '允许' : '不允许'}}</a-form-item>
<a-form-item label="验证方式:">{{ }}</a-form-item>
<a-form-item label="验证方式:">{{testWay.join(',')}}</a-form-item>
</a-form>
</a-col>
</a-row>
......@@ -64,6 +64,7 @@
<script >
import axios from 'axios'
import LineChart from "../Component/line/index.vue";
import {getBusInfoById} from '@/api/dataActuary.js'
export default {
components:{
LineChart
......@@ -98,7 +99,8 @@ import LineChart from "../Component/line/index.vue";
lineData: {},
useNumber: '0',
checkName: '',
formState: {}
formState: {},
testWay:[]
}
},
mounted(){
......@@ -108,25 +110,32 @@ import LineChart from "../Component/line/index.vue";
'$route.query': {
immediate: true,
handler(newVal, oldVal){
this.checkName= newVal
this.getAnalysisData(newVal.name)
this.checkName= newVal.name
this.getAnalysisData()
}
}
},
methods: {
async getAnalysisData(name, val) {
if(val == undefined) {
val= 0
}
await axios.get('http://192.168.0.98:8090/inter/statistic/busInfoById',{ params: {bus_name: name, selected: val }}).then((res)=>{
if(res && res.status == 200){
this.formState= res.data.data
console.log(this.formState)
async getAnalysisData() {
const res = await getBusInfoById({bus_name: this.checkName, selected: this.useNumber || 0 })
if(res.code == 1){
if (res.data.phone) this.testWay.push('手机号')
if (res.data.idcardtake) this.testWay.push('身份证')
if (res.data.face) this.testWay.push('人脸')
this.formState= res.data
this.lineData= {
title: '',
legend: ['排队次数','预约次数'],
xData: res.data.qh_list.length > 0 ? res.data.qh_list.map(item=>item.datetime) : res.data.wy_list.map(item=>item.datetime),
dataList: [
{name: '排队次数', data: res.data.qh_list.map(item=>item.nums)},
{name: '预约次数', data: res.data.wy_list.map(item=>item.nums)},
]
}
})
}
},
handleChange(val){
this.getAnalysisData(this.checkName, val)
handleChange(){
this.getAnalysisData()
}
},
}
......
......@@ -236,6 +236,7 @@
<script >
import Pie from "../Component/emptyPie/index.vue"
import axios from 'axios'
import {getAllInfo,getBusinessInfo,getWyInfo,getTopBusiness,getTopWy} from '@/api/dataActuary.js'
import moment from "moment"
export default {
components:{
......@@ -454,127 +455,120 @@ import moment from "moment"
//获取全部基本数据
async getAllData() {
this.nowDate= moment(new Date()).format('YYYY-MM-DD h:mm:ss')
await axios.get('http://192.168.0.98:8090/inter/statistic/allInfo',{ params: { siteid: '1' }}).then((res)=>{
if(res && res.status == 200){
this.situation= res.data.data
this.firstPie= {
name: '占比',
val: res.data.data.lev1_nums,
total: res.data.data.lev1_not_child_nums,
color: '#04CA8F'
}
this.secondPie= {
name: '占比',
val: res.data.data.lev1_has_child_nums,
total: res.data.data.child_nums,
color: '#6394f9'
}
const res = await getAllInfo()
if(res.code == 1){
this.situation= res.data
this.firstPie= {
name: '占比',
val: res.data.lev1_nums,
total: res.data.lev1_not_child_nums,
color: '#04CA8F'
}
})
this.secondPie= {
name: '占比',
val: res.data.lev1_has_child_nums,
total: res.data.child_nums,
color: '#6394f9'
}
}
},
// 排队取号
async getTakeLineData() {
await axios.get('http://192.168.0.98:8090/inter/statistic/businessInfo',{ params: { siteid: '1' }}).then((res)=>{
if(res && res.status == 200){
let arr= res.data.data.info
let newArr= []
arr.forEach((item ,index)=>{
let obj={
id: item.id,
dataIndex: item.id,
title: item.name,
}
newArr.push(obj)
this.lineUp[0][item.id]= item.lev1_nums
this.lineUp[1][item.id]= (item.lev1_rate * 100).toFixed(2) + '%'
this.lineUp[2][item.id]= item.lev2_nums
this.lineUp[3][item.id]= (item.lev2_rate * 100).toFixed(2) + '%'
})
this.lineUpColumns= [...this.lineUpColumns, ...newArr]
this.takeLineTotal=res.data.data.use_bus_nums
this.noTakeLine=res.data.data.not_use_bus_nums
this.thirdPie= {
name: '占比',
val: res.data.data.not_use_bus_nums,
total: res.data.data.use_bus_nums,
color: '#04CA8F'
const res = await getBusinessInfo()
if(res.code == 1){
let arr= res.data.info
let newArr= []
arr.forEach((item ,index)=>{
let obj={
id: item.id,
dataIndex: item.id,
title: item.name,
}
newArr.push(obj)
this.lineUp[0][item.id]= item.lev1_nums
this.lineUp[1][item.id]= (item.lev1_rate * 100).toFixed(2) + '%'
this.lineUp[2][item.id]= item.lev2_nums
this.lineUp[3][item.id]= (item.lev2_rate * 100).toFixed(2) + '%'
})
this.lineUpColumns= [...this.lineUpColumns, ...newArr]
this.takeLineTotal=res.data.use_bus_nums
this.noTakeLine=res.data.not_use_bus_nums
this.thirdPie= {
name: '占比',
val: res.data.not_use_bus_nums,
total: res.data.use_bus_nums,
color: '#04CA8F'
}
})
}
},
// 预约情况
async getAppointmentData() {
await axios.get('http://192.168.0.98:8090/inter/statistic/wyInfo',{ params: { siteid: '1' }}).then((res)=>{
if(res && res.status == 200){
let arr= res.data.data.info
let newArr= []
arr.forEach((item ,index)=>{
let obj={
id: item.id,
dataIndex: item.id,
title: item.name,
}
newArr.push(obj)
this.appointment[0][item.id]= item.lev1_nums
this.appointment[1][item.id]= (item.lev1_rate * 100).toFixed(2) + '%'
this.appointment[2][item.id]= item.lev2_nums
this.appointment[3][item.id]= (item.lev2_rate * 100).toFixed(2) + '%'
})
this.appointmentColumns= [...this.appointmentColumns, ...newArr]
this.appointmentTotal=res.data.data.use_bus_nums
this.noAppointment=res.data.data.not_use_bus_nums
this.fourthPie= {
name: '占比',
val: res.data.data.not_use_bus_nums,
total: res.data.data.use_bus_nums,
color: '#04CA8F'
const res = await getWyInfo()
if(res.code == 1){
let arr= res.data.info
let newArr= []
arr.forEach((item ,index)=>{
let obj={
id: item.id,
dataIndex: item.id,
title: item.name,
}
newArr.push(obj)
this.appointment[0][item.id]= item.lev1_nums
this.appointment[1][item.id]= (item.lev1_rate * 100).toFixed(2) + '%'
this.appointment[2][item.id]= item.lev2_nums
this.appointment[3][item.id]= (item.lev2_rate * 100).toFixed(2) + '%'
})
this.appointmentColumns= [...this.appointmentColumns, ...newArr]
this.appointmentTotal=res.data.use_bus_nums
this.noAppointment=res.data.not_use_bus_nums
this.fourthPie= {
name: '占比',
val: res.data.not_use_bus_nums,
total: res.data.use_bus_nums,
color: '#04CA8F'
}
})
}
},
// 取号TOP
async getTakeNumberTop(val){
if(val== undefined){
val = 0
}
await axios.get('http://192.168.0.98:8090/inter/statistic/topBusiness',{ params: { siteid: '1', selected: val, sort: 'DESC' }}).then((res)=>{
if(res && res.status == 200) {
this.takeNumberTop= res.data.data
}
})
const res = getTopBusiness({selected: val,sort: 'DESC'})
if(res.code == 1) {
this.takeNumberTop= res.data
}
},
// 取号Less
async getTakeNumberLess(val){
if(val== undefined){
val = 0
}
await axios.get('http://192.168.0.98:8090/inter/statistic/topBusiness',{ params: { siteid: '1', selected: val, sort: 'ASC' }}).then((res)=>{
if(res && res.status == 200) {
this.takeNumberLess= res.data.data
}
})
const res = getTopBusiness({selected: val,sort: 'ASC'})
if(res.code == 1) {
this.takeNumberLess= res.data
}
},
// 预约TOP
async getAppointmentTop(val){
if(val== undefined){
val = 0
}
await axios.get('http://192.168.0.98:8090/inter/statistic/topWy',{ params: { siteid: '1', selected: val, sort: 'DESC' }}).then((res)=>{
if(res && res.status == 200) {
this.appointmentTop= res.data.data
}
})
const res = getTopWy({selected: val,sort: 'DESC'})
if(res.code == 1) {
this.appointmentTop= res.data
}
},
// 预约LESS
async getAppointmentLess(val){
if(val== undefined){
val = 0
}
await axios.get('http://192.168.0.98:8090/inter/statistic/topWy',{ params: { siteid: '1', selected: val, sort: 'ASC' }}).then((res)=>{
if(res && res.status == 200) {
this.appointmentLess= res.data.data
}
})
const res = getTopWy({selected: val,sort: 'ASC'})
if(res.code == 1) {
this.appointmentLess= res.data
}
},
changeTakeNumberTopDate(val){
this.getTakeNumberTop(val)
......
......@@ -257,7 +257,7 @@
}
/deep/.ant-checkbox-group {
width: 220px;
width: 250px;
}
.range_picker_style {
......
......@@ -2,15 +2,19 @@
<div class="PoliticsShow-Container">
<div class="header_box">
<div>
<a-button type="success" @click="exportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
<a-button
:loading="btnLoading"
type="success"
@click="handleExportTable"
>
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<b>用户总数:<i>3</i></b>
<b>试用客户:<i>2</i></b>
<b>VIP:<i>1</i></b>
<b>设计师:<i>0</i></b>
<b>图片作品数:<i>36</i></b>
<b>视频作品数:<i>0</i></b>
<b>用户总数:<i>{{tableData.total}}</i></b>
<b>试用客户:<i>{{tableData.trial}}</i></b>
<b>VIP:<i>{{tableData.vip}}</i></b>
<b>设计师:<i>{{tableData.designer}}</i></b>
<b>图片作品数:<i>{{tableData.picturesCount}}</i></b>
<b>视频作品数:<i>{{tableData.videosCount}}</i></b>
</div>
<span class="topBoxFlex">
<a-input allowClear v-model="searchForm.query" placeholder="请输入用户姓名/手机号搜索">
......@@ -22,7 +26,7 @@
{{ item }}
</a-select-option>
</a-select>
<a-button type="primary">搜索</a-button>
<a-button type="primary" @click="getList">搜索</a-button>
</span>
</div>
<div class="main">
......@@ -48,6 +52,7 @@
import table from "@/mixins/table";
import UserDetails from "./components/UserDetails.vue";
import PicWorks from "./components/PicWorks.vue";
import { export2Excel } from "@/utils/js/exportExcel";
import {
getCustomer
} from "@/api/customer";
......@@ -62,8 +67,10 @@ export default {
name: "PortalAdminVuePoliticsShow",
data() {
return {
btnLoading: false,
levelList: levelList,
tableList: [],
tableData:{},
searchForm: {
query: "",//姓名手机号查询条件
memberLevel: "",//会员等级查询条件
......@@ -121,6 +128,34 @@ export default {
},
],
searchName: undefined,
tablePagination:{
current:1,
pageSize:10
},
tableSelectedKeys:[],
tableSelectedRows:[],
tHeader: [
// 导出的表头名信息
"真实姓名",
"联系电话",
"单位名称",
"图片作品数量",
"视频作品数量",
"会员等级",
"最近登录时间",
"使用状态",
],
filterVal: [
// 导出的表头字段名,需要导出表格字段名
"custName",
"contactTelphone",
"organization",
"customerDesignPictures",
"customerDesignVideos",
"memberLevel",
"lastLoginTime",
"status"
],
};
},
components: {
......@@ -145,18 +180,79 @@ export default {
if (res.code == 1) {
let {
data,
total
total,
pageInfo
} = res.data;
this.tableList = data;
this.tableData = res.data
this.tablePagination.total = total;
return data
}
},
//分页
changeTablePage(page) {
this.pagTableChange(page);
pagTableChange(page) {
this.tablePagination.current = page.current
this.tablePagination.pageSize = page.pageSize
this.getList();
},
// 选中
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.status == keys) {
item.status = obj[keys];
}
});
});
export2Excel(
this.tHeader,
this.filterVal,
data,
"易政秀报表" + this.$moment().format("YYYYMMDDHHmmss")
);
} else {
data = this.$_.cloneDeep(
await this.getList({ page: 1, size: -1 })
);
if (!data.length) return;
for (let item of data) {
Object.keys(obj).forEach((key) => {
if (item.status == key) {
item.status = obj[key];
}
});
}
export2Excel(
this.tHeader,
this.filterVal,
data,
"易政秀报表" + this.$moment().format("YYYYMMDDHHmmss")
);
}
this.btnLoading = false;
},
QueueState(type) {
switch (type) {
case 0:
......
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