This commit is contained in:
2025-07-06 17:23:11 +08:00
parent f2eb08b935
commit 4fa85505cf
4 changed files with 173 additions and 120 deletions

View File

@ -3,7 +3,7 @@
<!-- 左侧树形菜单 -->
<div class="left-menu">
<!-- 这个部分用的是组件-后期替换 -->
<MOSTY.DepartmentTree width="310px" placeholder="管理部门ID" clearable filterable :isBmId="true" v-model="obj.listQuery.deptId" />
<MOSTY.DepartmentTree width="310px" placeholder="管理部门" clearable filterable :isBmId="true" v-model="obj.listQuery.deptId" />
</div>
<!-- 右侧内容区 -->

View File

@ -3,22 +3,15 @@
<!-- 左侧树形菜单 -->
<div class="left-menu">
<!-- 这个部分用的是组件-后期替换 -->
<el-tree
:data="treeData"
:props="defaultProps"
@node-click="handleNodeClick"
default-expand-all
/>
<MOSTY.DepartmentTree width="310px" @change="init" placeholder="管理部门" clearable filterable :isBmId="true" v-model="listQuery.ssbmdm" />
</div>
<!-- 右侧内容区 -->
<div class="right-content">
<!-- 顶部筛选 -->
<div class="filter-section">
<el-radio-group v-model="radio">
<el-radio :label="it.value" v-for="it in timeList" :key="it.value">{{
it.label
}}</el-radio>
<el-radio-group v-model="radio" @change="changeRadio">
<el-radio v-for="(it,idx) in timeList" :key="idx" :label="it.num" >{{ it.label }}</el-radio>
</el-radio-group>
<el-date-picker
v-model="dateRange"
@ -30,8 +23,8 @@
value-format="YYYY-MM-DD"
@change="handleDateChange"
/>
<el-button type="primary" @click="handleExport">查询</el-button>
<el-button type="primary" @click="handleExport">重置</el-button>
<el-button type="primary" @click="init">查询</el-button>
<el-button type="primary" @click="handleRest">重置</el-button>
</div>
<!-- 统计图表区域 -->
@ -42,42 +35,28 @@
<el-button type="primary">导出统计表</el-button>
</div>
<div class="chart">
<PieEcharts
echartsId="pieChart"
color="#333"
:data="obj.cjList"
></PieEcharts>
<PieEcharts echartsId="pieChart" color="#333" :data="obj.cjList" />
</div>
</div>
<div class="chart-item">
<div class="chart-title">
<span>指令统计</span>
<span>线索来源统计</span>
<el-button type="primary">导出统计表</el-button>
</div>
<div class="chart">
<DbarEcharts
echartsId="bar3DChart"
:data="obj.zlList"
></DbarEcharts>
<DbarEcharts echartsId="bar3DChart" :data="obj.xslyList" />
</div>
</div>
<div class="chart-item">
<div class="chart-title">
<span>线索类型统计</span>
<span>线索专题统计</span>
<el-button type="primary">导出统计表</el-button>
</div>
<ul class="chart mt8">
<li v-for="(it, idx) in obj.jjList" :key="idx" class="mb6">
<li v-for="(it, idx) in obj.xxztList" :key="idx" class="mb6">
<div style="color: #333">{{ it.label }}</div>
<el-progress
:text-inside="true"
:stroke-width="20"
:percentage="50"
status="exception"
>
<span
><span style="color: #e37233">{{ it.value }}</span> </span
>
<el-progress :text-inside="true" :stroke-width="20" :percentage="50" status="exception">
<span><span style="color: #e37233">{{ it.value }}</span> </span>
</el-progress>
</li>
</ul>
@ -87,11 +66,7 @@
<span>线索类型统计</span>
<el-button type="primary">导出统计表</el-button>
</div>
<lineEcharts
color="#333"
echartsId="areaChart"
:data="obj.bkgzList"
></lineEcharts>
<lineEcharts color="#333" echartsId="areaChart" :data="obj.xxlxList" />
</div>
</div>
</div>
@ -99,92 +74,140 @@
</template>
<script setup>
import { timeValidate, timeSlotChange } from "@/utils/tools.js";
import * as MOSTY from "@/components/MyComponents/index";
import lineEcharts from "@/views/home/echarts/lineEcharts.vue";
import PieEcharts from "@/views/home/echarts/pieEcharts.vue";
import DbarEcharts from "@/views/home/echarts/3DbarEcharts.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import * as echarts from "echarts";
const radio = ref("日");
import { qcckPost } from "@/api/qcckApi.js";
import { reactive, ref, onMounted } from "vue";
const dateRange = ref([timeValidate(),timeValidate()]);// 日期范围
const radio = ref(0); //当天
const timeList = ref([
{ label: "日", value: "0" },
{ label: "月", value: "1" },
{ label: "季", value: "2" },
{ label: "年", value: "3" }
{ label: "日", num: 0 },
{ label: "月", num: 1 },
{ label: "季", num: 2 },
{ label: "年", num: 3 }
]);
const listQuery = ref({})
const obj = reactive({
listQuery: {},
cjList: [
{ label: "采纳数", value: 18 },
{ label: "编刊数", value: 20 },
{ label: "退回数", value: 50 },
{ label: "合并数", value: 40 },
{ label: "其他", value: 30 }
],
// 布控工作统计
bkgzList: [
{ label: "发起总数", value: 10 },
{ label: "审核总数", value: 20 },
{ label: "审批总数", value: 50 },
{ label: "处置总数", value: 40 },
{ label: "其他", value: 30 }
],
jjList: [
{ label: "涉稳", value: 10 },
{ label: "涉毒", value: 20 },
{ label: "行政", value: 50 },
{ label: "群体", value: 40 },
{ label: "灾害", value: 40 }
],
zlList: {
list: [
{ label: "下发数", val: 50 },
{ label: "未签收", val: 40 },
{ label: "已签收", val: 10 },
{ label: "超时签收", val: 30 },
{ label: "未反馈", val: 40 },
{ label: "已反馈", val: 40 }
],
cjList: [],// 线索采集统计
xxztList: [],// 线索专题统计
xxlxList: [],//线索类型统计
xslyList: {
list: [],//线索来源统计
topColor:'#1bd6c2',
colors: ["#28EEBF","#0DBAC5"],
}
});
// 树形菜单数据
const treeData = ref([
{
label: "林芝市公安局200",
children: [
{ label: "工布江达县公安局100" },
{ label: "工布江达城区派出所10" },
{ label: "某某某派出所10" },
{ label: "某某某公安局100" }
]
onMounted(() => {
init() //初始化数据
});
const init = () =>{
get_xscj_list();
get_xsly_list();
get_xslx_list();
get_xszt_list();
}
// 线索采集统计
const get_xscj_list = () =>{
let data = {
ssbmdm:listQuery.value.ssbmdm,
kssj:dateRange.value[0]+' 00:00:00',
jssj:dateRange.value[1]+' 23:59:59',
}
]);
qcckPost(data,'/mosty-gsxt/qbcj/getXscjTjByQbly').then(res=>{
let arr = res || [];
obj.cjList = arr.map(v=>{
return { label:v.zdmc,value:v.count }
})
})
}
const defaultProps = {
children: "children",
label: "label"
// 线索类型统计
const get_xslx_list = () =>{
let data = {
ssbmdm:listQuery.value.ssbmdm,
kssj:dateRange.value[0]+' 00:00:00',
jssj:dateRange.value[1]+' 23:59:59',
}
qcckPost(data,'/mosty-gsxt/qbcj/getXscjTjByXslx').then(res=>{
let arr = res || [];
obj.xxlxList = arr.map(v=>{
return { label:v.zdmc,value:v.count }
})
})
}
// 线索专题统计
const get_xszt_list = () =>{
let data = {
ssbmdm:listQuery.value.ssbmdm,
kssj:dateRange.value[0]+' 00:00:00',
jssj:dateRange.value[1]+' 23:59:59',
}
qcckPost(data,'/mosty-gsxt/qbcj/getXscjTjBySszt').then(res=>{
let arr = res || [];
obj.xxztList = arr.map(v=>{
return { label:v.zdmc,value:v.count }
})
})
}
// 线索来源统计
const get_xsly_list = () =>{
let data = {
ssbmdm:listQuery.value.ssbmdm,
kssj:dateRange.value[0]+' 00:00:00',
jssj:dateRange.value[1]+' 23:59:59',
}
qcckPost(data,'/mosty-gsxt/qbcj/getXscjTjByQbly').then(res=>{
let arr = res || [];
obj.xslyList.list = arr.map(v=>{
return { label:v.zdmc,value:v.count }
})
})
}
const changeRadio = (val) =>{
switch(val){
case 0: //日
dateRange.value = [timeValidate(),timeValidate()]
break;
case 1: //月
dateRange.value = timeSlotChange('本月')
break;
case 2: //季度
dateRange.value = timeSlotChange('本季度')
break;
case 3: //年
dateRange.value = timeSlotChange('本年')
break;
}
}
const handleDateChange = (val) => {
radio.value = '';
if(val[0] == timeSlotChange('天')[0] && val[1] == timeSlotChange('天')[1]) radio.value = 0;
if(val[0] == timeSlotChange('本月')[0] && val[1] == timeSlotChange('本月')[1]) radio.value = 1;
if(val[0] == timeSlotChange('本季度')[0] && val[1] == timeSlotChange('本季度')[1]) radio.value = 2;
if(val[0] == timeSlotChange('本年')[0] && val[1] == timeSlotChange('本年')[1]) radio.value = 3;
};
// 日期范围
const dateRange = ref([]);
// 事件处理函数
const handleNodeClick = (data) => {
console.log(data);
// 重置
const handleRest = () => {
radio.value = 0;
dateRange.value = [timeValidate(),timeValidate()];
init();
};
const handleDateChange = () => {
// 处理日期变化
};
const handleExport = () => {
// 处理导出
};
onMounted(() => {});
</script>
<style lang="scss" scoped>
@ -193,7 +216,7 @@ onMounted(() => {});
height: 100%;
.left-menu {
width: 280px;
width: 350px;
padding: 20px;
margin-top: 20px;
border-radius: 4px;