|
@@ -48,6 +48,7 @@
|
|
|
max-height="60vh"
|
|
|
:toolButton="['refresh', 'setting', 'exportAll']"
|
|
|
@export-all="exportTable($event, true)"
|
|
|
+ :key="Math.random()"
|
|
|
>
|
|
|
</ProTable>
|
|
|
</el-col>
|
|
@@ -60,120 +61,13 @@ import { onMounted, reactive, ref } from 'vue';
|
|
|
import { FormInstance } from 'element-plus';
|
|
|
import { defaultDate, shortcuts } from '@/utils/constants';
|
|
|
import Other from '@/utils/other';
|
|
|
-import {orderSource, orderSourceExport, orderSourceTime} from '@/api/statistics/order';
|
|
|
+import {orderSourceExport, orderSourceTime, orderSourceTimeExport, orderSourceTimeHeader} from '@/api/statistics/order';
|
|
|
import { downloadFileByStream } from '@/utils/tools';
|
|
|
import { useRouter } from 'vue-router';
|
|
|
|
|
|
const proTableRef = ref<RefType>(); // 表格ref
|
|
|
// 表格配置项
|
|
|
-const columns = ref<any[]>([
|
|
|
- { prop: 'time', label: '时间段', align: 'center', minWidth: 100, fixed: 'left' },
|
|
|
- {
|
|
|
- prop: 'subtotal',
|
|
|
- label: '小计',
|
|
|
- align: 'center',
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'phone',
|
|
|
- label: '电话',
|
|
|
- align: 'center',
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'web',
|
|
|
- label: '因特网',
|
|
|
- align: 'center',
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'rests',
|
|
|
- label: '其他',
|
|
|
- align: 'center',
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'created',
|
|
|
- label: '自建',
|
|
|
- align: 'center',
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'weChat',
|
|
|
- label: '微信',
|
|
|
- align: 'center',
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'app',
|
|
|
- label: 'APP',
|
|
|
- align: 'center',
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'wisdomYB',
|
|
|
- label: '智慧宜宾',
|
|
|
- align: 'center',
|
|
|
- minWidth: 120,
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'platform',
|
|
|
- label: '综治平台',
|
|
|
- align: 'center',
|
|
|
- minWidth: 120,
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'platform12328',
|
|
|
- label: '省12328平台',
|
|
|
- align: 'center',
|
|
|
- minWidth: 120,
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'mayorAndNetizens',
|
|
|
- label: '市长和网民',
|
|
|
- align: 'center',
|
|
|
- minWidth: 120,
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'mediaYB',
|
|
|
- label: '宜宾融媒体',
|
|
|
- align: 'center',
|
|
|
- minWidth: 120,
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'platform12345',
|
|
|
- label: '省12345平台',
|
|
|
- align: 'center',
|
|
|
- minWidth: 120,
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'interaction',
|
|
|
- label: '省政民互动',
|
|
|
- minWidth: 120,
|
|
|
- align: 'center',
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'serviceYB',
|
|
|
- label: '宜办事',
|
|
|
- align: 'center',
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'cityTransfer',
|
|
|
- label: '市州互转',
|
|
|
- align: 'center',
|
|
|
- minWidth: 120,
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'platform110',
|
|
|
- label: '宜宾110平台',
|
|
|
- align: 'center',
|
|
|
- minWidth: 120,
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'noService',
|
|
|
- label: '办不成事反映窗口',
|
|
|
- align: 'center',
|
|
|
- minWidth: 150,
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'iyb',
|
|
|
- label: 'i宜宾',
|
|
|
- align: 'center',
|
|
|
- },
|
|
|
-]);
|
|
|
+const columns = ref<any[]>([]);
|
|
|
// 定义变量内容
|
|
|
const ruleFormRef = ref<RefType>(); // 表单ref
|
|
|
const state = reactive<any>({
|
|
@@ -199,21 +93,78 @@ const handleQuery = () => {
|
|
|
queryList();
|
|
|
};
|
|
|
/** 获取列表 */
|
|
|
-const queryList = () => {
|
|
|
- state.loading = true;
|
|
|
- let request = Other.deepClone(state.queryParams);
|
|
|
- request.StartTime = state.queryParams.crTime === null ? null : state.queryParams.crTime[0];
|
|
|
- request.EndTime = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
|
|
|
- Reflect.deleteProperty(request, 'crTime');
|
|
|
- orderSourceTime(request)
|
|
|
- .then((res: any) => {
|
|
|
- console.log(res)
|
|
|
- setOption([], []);
|
|
|
- state.loading = false;
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- state.loading = false;
|
|
|
- });
|
|
|
+const queryList = async () => {
|
|
|
+ state.loading = true;
|
|
|
+ try {
|
|
|
+ let request = Other.deepClone(state.queryParams);
|
|
|
+ request.StartTime = state.queryParams.crTime === null ? null : state.queryParams.crTime[0];
|
|
|
+ request.EndTime = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
|
|
|
+ Reflect.deleteProperty(request, 'crTime');
|
|
|
+ const dataRes = await orderSourceTime(request);
|
|
|
+ const headerRes = await orderSourceTimeHeader();
|
|
|
+ console.log(dataRes,headerRes)
|
|
|
+ columns.value = headerRes.result.map((item: any) => {
|
|
|
+ return {
|
|
|
+ prop: item.value.replace(item.value[0],item.value[0].toLowerCase()),
|
|
|
+ label: item.key,
|
|
|
+ align: 'center',
|
|
|
+ minWidth: 120,
|
|
|
+ };
|
|
|
+ });
|
|
|
+ columns.value.unshift({
|
|
|
+ prop: 'time',
|
|
|
+ label: '时间段',
|
|
|
+ align: 'center',
|
|
|
+ minWidth: 120,
|
|
|
+ fixed: 'left',
|
|
|
+ },{
|
|
|
+ prop: 'subtotal',
|
|
|
+ label: '小计',
|
|
|
+ align: 'center',
|
|
|
+ minWidth: 100,
|
|
|
+ })
|
|
|
+ state.tableData = dataRes.result;
|
|
|
+ const legendData = headerRes.result.map((item: any) => {
|
|
|
+ return item.key;
|
|
|
+ });
|
|
|
+ const xData = dataRes.result.map((item: any) => {
|
|
|
+ return item.time;
|
|
|
+ })
|
|
|
+ const seriesHeader = headerRes.result.map((item: any) => {
|
|
|
+ return {
|
|
|
+ prop: item.value.replace(item.value[0],item.value[0].toLowerCase()),
|
|
|
+ label: item.key,
|
|
|
+ };
|
|
|
+ });
|
|
|
+ // for(let i of seriesHeader){
|
|
|
+ // const item = dataRes.result.filter((j: any) =>j.time === i.prop);
|
|
|
+ // for(let j of dataRes.result){
|
|
|
+ // if(j.time === i.prop)
|
|
|
+ // }
|
|
|
+ // console.log(item,'11')
|
|
|
+ // }
|
|
|
+ const seriesData = dataRes.result.map((item: any) => {
|
|
|
+ for(let i of headerRes.result){
|
|
|
+
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ name:'' ,
|
|
|
+ type: 'bar',
|
|
|
+ stack: 'total',
|
|
|
+
|
|
|
+ animationDelay: function (idx) {
|
|
|
+ return idx * 50 + 1000;
|
|
|
+ },
|
|
|
+ data: item.data,
|
|
|
+ }
|
|
|
+ })
|
|
|
+ console.log(seriesHeader)
|
|
|
+ setOption(legendData,xData,[])
|
|
|
+ state.loading = false;
|
|
|
+ }catch (e){
|
|
|
+ state.loading = false;
|
|
|
+ console.log(e)
|
|
|
+ }
|
|
|
};
|
|
|
/** 重置按钮操作 */
|
|
|
const resetQuery = (formEl: FormInstance | undefined) => {
|
|
@@ -223,7 +174,7 @@ const resetQuery = (formEl: FormInstance | undefined) => {
|
|
|
};
|
|
|
const option = ref<any>({});
|
|
|
// 信件来源统计
|
|
|
-const setOption = (legendData: string[], data: any) => {
|
|
|
+const setOption = (legendData: string[],xData:any, seriesData: any) => {
|
|
|
option.value = {
|
|
|
title: {
|
|
|
text: '信件来源分时统计',
|
|
@@ -239,27 +190,7 @@ const setOption = (legendData: string[], data: any) => {
|
|
|
},
|
|
|
legend: {
|
|
|
top: '7%',
|
|
|
- data: [
|
|
|
- '自建',
|
|
|
- 'string',
|
|
|
- '市长与网民',
|
|
|
- '宜宾110平台',
|
|
|
- '智慧宜宾',
|
|
|
- '微信',
|
|
|
- '小程序',
|
|
|
- '网站',
|
|
|
- '其他',
|
|
|
- 'App',
|
|
|
- '因特网',
|
|
|
- '综治平台',
|
|
|
- '省政民互动',
|
|
|
- '市州互转',
|
|
|
- '微博',
|
|
|
- '电话',
|
|
|
- 'i宜宾',
|
|
|
- '省12345平台',
|
|
|
- '宜宾融媒体',
|
|
|
- ],
|
|
|
+ data: legendData,
|
|
|
},
|
|
|
grid: {
|
|
|
left: '0',
|
|
@@ -272,32 +203,7 @@ const setOption = (legendData: string[], data: any) => {
|
|
|
axisLabel: {
|
|
|
rotate:45 //设置的值大于0向右倾斜,小于0向左
|
|
|
},
|
|
|
- data: [
|
|
|
- '00:00~00:59',
|
|
|
- '01:00~01:59',
|
|
|
- '02:00~02:59',
|
|
|
- '03:00~03:59',
|
|
|
- '04:00~04:59',
|
|
|
- '05:00~05:59',
|
|
|
- '06:00~06:59',
|
|
|
- '07:00~07:59',
|
|
|
- '08:00~08:59',
|
|
|
- '09:00~09:59',
|
|
|
- '10:00~10:59',
|
|
|
- '11:00~11:59',
|
|
|
- '12:00~12:59',
|
|
|
- '13:00~13:59',
|
|
|
- '14:00~14:59',
|
|
|
- '15:00~15:59',
|
|
|
- '16:00~16:59',
|
|
|
- '17:00~17:59',
|
|
|
- '18:00~18:59',
|
|
|
- '19:00~19:59',
|
|
|
- '20:00~20:59',
|
|
|
- '21:00~21:59',
|
|
|
- '22:00~22:59',
|
|
|
- '23:00~23:59',
|
|
|
- ],
|
|
|
+ data: xData,
|
|
|
},
|
|
|
yAxis: {
|
|
|
type: 'value',
|
|
@@ -515,7 +421,7 @@ const exportTable = (columnInfos: any, isExportAll = false) => {
|
|
|
isExportAll,
|
|
|
};
|
|
|
state.loading = true;
|
|
|
- orderSourceExport(req)
|
|
|
+ orderSourceTimeExport(req)
|
|
|
.then((res: any) => {
|
|
|
state.loading = false;
|
|
|
downloadFileByStream(res);
|