Commit ad19301f authored by “yiyousong”'s avatar “yiyousong”

perf: 优化排号报表

parent 7b0f0f59
import request from "@/utils/request";
// 获取排队系统数据
export const getQueueSystemList = (data) => {
return request({
url: `/bill/ph/queue/stat/list`,
method: "post",
data,
});
};
// 获取评价系统数据
export const getEvaSystemList = (data) => {
return request({
url: `/bill/pj/evaluate/stat/list`,
method: "post",
data,
});
};
// 系统api
import request from "@/utils/request";
/**
* 排队数据报表
......
......@@ -2,7 +2,7 @@
<div class="pagination" v-if="total">
<el-pagination
background
layout="total,prev,pager,next,sizes,jumper"
:layout="layout"
:pager-count="5"
:total="total"
:current-page="page"
......
......@@ -20,21 +20,17 @@
<div class="text-[14px] text-[#395EBF]">
统计时段:{{ time[0] }}~{{ time[1] }}
</div>
<el-date-picker
size="small"
<y-date-picker
v-model="time"
value-format="yyyy-MM-dd"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"
:clearable="false"
>
</el-date-picker>
<el-button size="small" type="primary">搜索</el-button>
</y-date-picker>
<el-button size="small" type="primary" @click="handleDate"
>搜索</el-button
>
</div>
<div
class="engine-btn top-radius"
......@@ -46,7 +42,7 @@
</div>
</div>
<div class="main w-full flex-1 overflow-auto">
<router-view></router-view>
<router-view ref="Page"></router-view>
</div>
</div>
</template>
......@@ -55,43 +51,17 @@
export default {
data() {
return {
pickerOptions: {
shortcuts: [
{
text: "最近一周",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近一个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近三个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit("pick", [start, end]);
},
},
],
},
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
],
};
},
methods: {
handleDate() {
this.$refs.Page.getDate(this.time);
},
},
};
</script>
......
<template>
<div class="grid h-full w-full grid-cols-2 gap-[20px]">
<div class="table-item">
<div>
<DoubleTable
title="大厅取号量统计"
border
:column="column"
:column="hallColumn"
:data="tableData"
></DoubleTable>
</div>
<Pagination
:total="hallSearch.total"
:current.sync="hallSearch.current"
:size.sync="hallSearch.size"
layout="total,prev,pager,next,jumper"
></Pagination>
</div>
<div class="table-item">
<DoubleTable
title="业务取号量统计"
border
:column="column"
:column="businessColumn"
:data="tableData"
></DoubleTable>
</div>
......@@ -20,7 +28,7 @@
<DoubleTable
title="部门取号量统计"
border
:column="column"
:column="deptColumn"
:data="tableData"
></DoubleTable>
</div>
......@@ -28,7 +36,7 @@
<DoubleTable
title="个人取号量统计"
border
:column="column"
:column="peopleColumn"
:data="tableData"
></DoubleTable>
</div>
......@@ -37,13 +45,53 @@
<script>
import DoubleTable from "./components/DoubleTable.vue";
import { getQueueSystemList } from "@/api/engine";
import storage from "@/utils/storage";
export default {
components: {
DoubleTable,
},
data() {
return {
column: [
dateForm: {
timeStart: this.$moment().format("YYYY-MM-DD"),
timeEnd: this.$moment().format("YYYY-MM-DD"),
},
siteId: storage.get(2, "siteId"),
hallSearch: {
total: 100,
current: 1,
size: 10,
keyword: "",
},
hallColumn: [
{
label: "排序",
type: "index",
align: "center",
},
{
label: "大厅名称",
prop: "hallName",
align: "center",
formatter: (row, column, cellValue) => {
if (cellValue) {
return <span>{cellValue}</span>;
}
},
},
{
label: "排队数量",
prop: "total",
align: "center",
formatter: (row, column, cellValue) => {
if (cellValue) {
return <span class="table-num">{cellValue}</span>;
}
},
},
],
businessColumn: [
{
label: "排序",
type: "index",
......@@ -51,7 +99,7 @@ export default {
},
{
label: "业务名称",
prop: "yewu",
prop: "business",
align: "center",
formatter: (row, column, cellValue) => {
if (cellValue) {
......@@ -70,6 +118,61 @@ export default {
},
},
],
deptColumn: [
{
label: "排序",
type: "index",
align: "center",
},
{
label: "部门名称",
prop: "sectionName",
align: "center",
formatter: (row, column, cellValue) => {
if (cellValue) {
return <span>{cellValue}</span>;
}
},
},
{
label: "排队数量",
prop: "total",
align: "center",
formatter: (row, column, cellValue) => {
if (cellValue) {
return <span class="table-num">{cellValue}</span>;
}
},
},
],
peopleColumn: [
{
label: "排序",
type: "index",
align: "center",
},
{
label: "个人姓名",
prop: "peopleName",
align: "center",
formatter: (row, column, cellValue) => {
if (cellValue) {
return <span>{cellValue}</span>;
}
},
},
{
label: "排队数量",
prop: "total",
align: "center",
formatter: (row, column, cellValue) => {
if (cellValue) {
return <span class="table-num">{cellValue}</span>;
}
},
},
],
tableData: [
{
yewu: "排队系统",
......@@ -102,6 +205,28 @@ export default {
],
};
},
created() {
this.getQueueSystemList();
},
methods: {
// 获取日期
getDate(dateArr) {
this.dateForm.timeStart = dateArr[0];
this.dateForm.timeEnd = dateArr[1];
this.getQueueSystemList();
},
// 获取数据
async getQueueSystemList() {
const res = await getQueueSystemList({
siteId: this.siteId,
...this.hallSearch,
...this.dateForm,
hallNameList: ["不动产登记中心"],
});
console.log(res.data);
// this.hallSearch.total = res.data.total
},
},
};
</script>
......
......@@ -31,15 +31,6 @@
:data="rightTableData"
></y-table>
</div>
<div class="flex justify-end">
<el-pagination
:pager-count="5"
background
layout="total,prev, pager, next"
:total="1000"
>
</el-pagination>
</div>
</div>
</template>
......
......@@ -67,9 +67,9 @@
placeholder="请选择评价选项"
>
<el-option
v-for="(v, i) in pjOption"
:key="i"
:label="v"
v-for="(v, key) in dict.pjOption"
:key="key"
:label="key"
:value="v"
></el-option>
</el-select>
......@@ -106,6 +106,36 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select
style="width: 150px"
v-model="searchForm2.pjSource"
clearable
placeholder="请选择评价来源"
>
<el-option
v-for="(v, key) in dict.pjSource"
:key="key"
:label="key"
:value="v"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select
style="width: 150px"
v-model="searchForm2.pjType"
clearable
placeholder="请选择评价指向"
>
<el-option
v-for="(v, key) in dict.pjType"
:key="key"
:label="key"
:value="v"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch">搜索</el-button>
......@@ -156,7 +186,6 @@ let searchType = {
2: "按群众姓名",
3: "按群众手机号",
};
let pjOption = ["非常满意", "满意", "基本满意", "不满意", "非常不满意"];
export default {
components: {
EvaluateDetails,
......@@ -167,7 +196,6 @@ export default {
loading: false,
exportLoading: false,
searchType,
pjOption,
size: 10,
current: 1,
total: 0,
......@@ -184,12 +212,11 @@ export default {
pjOption: "", // 评价选项
sectionName: "", // 部门名称
hallName: "", // 大厅名称
pjSource: "", // 评价来源
pjType: "", // 评价指向
},
tableData: [
{
name: "测试",
},
],
tableData: [],
dict: {},
selectionRows: [],
detailsInfo: {},
deptList: [], // 部门列表
......@@ -413,12 +440,13 @@ export default {
// 获取表格数据
async getEvaluateList(form = {}) {
this.loading = true;
let { data, total } = await this.getData(form);
let { data, total, dict } = await this.getData(form);
data.forEach((v) => {
v.pjTime = this.$moment(v.pjTime).format("YYYY-MM-DD HH:mm:ss");
});
this.tableData = data;
this.total = total;
this.dict = dict;
this.loading = false;
},
......
......@@ -427,8 +427,8 @@ export default {
v.endtime && this.$moment(v.endtime).format("YYYY-MM-DD HH:mm:ss");
v.calltime =
v.calltime && this.$moment(v.calltime).format("YYYY-MM-DD HH:mm:ss");
v.waitTime = v.waitTime && formatSeconds(v.waitTime);
v.handleTime = v.handleTime && formatSeconds(v.handleTime);
v.waitTime = v.waitTime ? formatSeconds(v.waitTime) : "";
v.handleTime = v.handleTime ? formatSeconds(v.handleTime) : "";
});
this.tableData = data;
this.total = total;
......@@ -504,8 +504,8 @@ export default {
v.calltime =
v.calltime &&
this.$moment(v.calltime).format("YYYY-MM-DD HH:mm:ss");
v.waitTime = v.waitTime && formatSeconds(v.waitTime);
v.handleTime = v.handleTime && formatSeconds(v.handleTime);
v.waitTime = v.waitTime ? formatSeconds(v.waitTime) : "";
v.handleTime = v.handleTime ? formatSeconds(v.handleTime) : "";
});
export2Excel(
tHeader,
......
......@@ -20,11 +20,12 @@
:key="i"
:label="v.title"
>
<img
class="w-[50px] cursor-pointer"
<el-image
style="width: 50px"
:src="v.content"
@click="handlePreview(v.content)"
/>
:preview-src-list="[v.content]"
>
</el-image>
</el-descriptions-item>
<el-descriptions-item v-else :key="i" :label="v.title">
{{ v.content }}
......@@ -32,17 +33,6 @@
</template>
</el-descriptions>
</div>
<!-- 图片查看 -->
<el-image-viewer
v-if="preview"
:appendToBody="false"
:on-close="
() => {
(preview = false), (filepaths = []);
}
"
:url-list="filepaths"
/>
</el-drawer>
</template>
......@@ -61,8 +51,6 @@ export default {
},
data() {
return {
preview: false,
filepaths: [],
detailsList: [
{
title: "身份证号",
......@@ -233,12 +221,7 @@ export default {
return this.detailsList;
},
},
methods: {
handlePreview(url) {
this.filepaths = [url];
this.preview = true;
},
},
methods: {},
};
</script>
......
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