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