Browse Source

fix:1、信访投诉大屏中央数字跳转带时间2、修复初访重访&群众集访数据不准确&添加筛选条件(国家信访、公安部信访)3、信访投诉占比饼图4、追责问责情况占比饼图数据绑定

main
pengwei 9 months ago
parent
commit
63e1d07815
  1. 9
      src/api/screen/mail.ts
  2. 10
      src/utils/util.ts
  3. 18
      src/views/data/Gabxf.vue
  4. 18
      src/views/data/Gjxf.vue
  5. 15
      src/views/data/Mail12337.vue
  6. 14
      src/views/data/Mailbox.vue
  7. 61
      src/views/datav/MailVisits.vue
  8. 19
      src/views/work/Query.vue

9
src/api/screen/mail.ts

@ -33,3 +33,12 @@ export function getEntanglementAndMassMail(times) {
url: `/datav/mailVisits/getEntanglementAndMassMail?beginTime=${times[0]}&endTime=${times[1]}` url: `/datav/mailVisits/getEntanglementAndMassMail?beginTime=${times[0]}&endTime=${times[1]}`
}); });
} }
//追责问责情况
export function getResultCount(times){
return request.get({
url:`/datav/mailVisits/getResultCount?beginTime=${times[0]}&endTime=${times[1]}`
})
}

10
src/utils/util.ts

@ -124,6 +124,16 @@ export const timeFormat = (dateTime: number, fmt = 'yyyy-mm-dd') => {
return fmt return fmt
} }
/**
*
* */
export const getYearTime = ()=>{
const end = timeFormat(new Date(),'yyyy-mm-dd hh:MM:ss');
const currentYear = new Date().getFullYear();
const start = new Date(currentYear, 0, 1);
return [timeFormat(start,'yyyy-mm-dd hh:MM:ss'),end]
}
export const timeDiffSeconds = (dateStr1: string, dateStr2: string, fmt: string) => { export const timeDiffSeconds = (dateStr1: string, dateStr2: string, fmt: string) => {
return moment(dateStr1, fmt).diff(moment(dateStr2, fmt), 'seconds') return moment(dateStr1, fmt).diff(moment(dateStr2, fmt), 'seconds')
} }

18
src/views/data/Gabxf.vue

@ -359,7 +359,7 @@
</el-dialog> </el-dialog>
</template> </template>
<script setup> <script setup>
import { BASE_PATH } from "@/api/request";
import { import {
importPetitionComplaint, importPetitionComplaint,
listPetitionComplaint, listPetitionComplaint,
@ -368,16 +368,19 @@ import {
import { ProblemSources, DistributionState } from "@/enums/dictEnums"; import { ProblemSources, DistributionState } from "@/enums/dictEnums";
import feedback from "@/utils/feedback"; import feedback from "@/utils/feedback";
import { getDictLable } from "@/utils/util"; import { getDictLable,getYearTime } from "@/utils/util";
import useCatchStore from "@/stores/modules/catch"; import useCatchStore from "@/stores/modules/catch";
const route = useRoute()
const catchStore = useCatchStore(); const catchStore = useCatchStore();
const dict = catchStore.getDicts([ const dict = catchStore.getDicts([
"distributionState", "distributionState",
"initialPetition" "initialPetition"
]); ]);
const query = ref({ const query = ref({
size: 10, size: 10,
current: 1, current: 1,
@ -388,12 +391,23 @@ const query = ref({
const list = ref([]); const list = ref([]);
const total = ref(0); const total = ref(0);
function getList() { function getList() {
listPetitionComplaint(query.value).then((data) => { listPetitionComplaint(query.value).then((data) => {
list.value = data.records; list.value = data.records;
total.value = data.total; total.value = data.total;
}); });
} }
//
watch(()=>route.query.toString(),
()=>{
if(route.query.open){
query.value.createTime=getYearTime()
}
getList()
},{immediate:true,deep:true})
function reset() { function reset() {
query.value = { query.value = {
size: 10, size: 10,

18
src/views/data/Gjxf.vue

@ -358,12 +358,12 @@ import {
} from "@/api/data/petitionComplaint"; } from "@/api/data/petitionComplaint";
import { ProblemSources, DistributionState } from "@/enums/dictEnums"; import { ProblemSources, DistributionState } from "@/enums/dictEnums";
import feedback from "@/utils/feedback"; import feedback from "@/utils/feedback";
import { getDictLable } from "@/utils/util"; import { getDictLable ,getYearTime} from "@/utils/util";
import useCatchStore from "@/stores/modules/catch"; import useCatchStore from "@/stores/modules/catch";
const catchStore = useCatchStore(); const catchStore = useCatchStore();
const dict = catchStore.getDicts(["distributionState", "initialPetition"]); const dict = catchStore.getDicts(["distributionState", "initialPetition"]);
const route = useRoute()
const query = ref({ const query = ref({
size: 10, size: 10,
current: 1, current: 1,
@ -371,15 +371,29 @@ const query = ref({
problemSourcesCode: ProblemSources.GJXFPT, problemSourcesCode: ProblemSources.GJXFPT,
}); });
const list = ref([]); const list = ref([]);
const total = ref(0); const total = ref(0);
function getList() { function getList() {
listPetitionComplaint(query.value).then((data) => { listPetitionComplaint(query.value).then((data) => {
list.value = data.records; list.value = data.records;
total.value = data.total; total.value = data.total;
}); });
} }
//
watch(()=>route.query.toString(),
()=>{
if(route.query.open){
query.value.createTime=getYearTime()
}
getList()
},{immediate:true,deep:true})
function reset() { function reset() {
query.value = { query.value = {
size: 10, size: 10,

15
src/views/data/Mail12337.vue

@ -33,7 +33,7 @@
<el-col :span="6"> <el-col :span="6">
<el-form-item label="登记时间"> <el-form-item label="登记时间">
<date-time-range-picker-ext <date-time-range-picker-ext
v-model="query.discoverTime" v-model="query.discoveryTime"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -613,7 +613,7 @@ import { getIdByOriginId } from "@/api/work/negative";
import { ProblemSources, DistributionState } from "@/enums/dictEnums"; import { ProblemSources, DistributionState } from "@/enums/dictEnums";
import feedback from "@/utils/feedback"; import feedback from "@/utils/feedback";
import { getDictLable } from "@/utils/util"; import { getDictLable ,getYearTime} from "@/utils/util";
import useCatchStore from "@/stores/modules/catch"; import useCatchStore from "@/stores/modules/catch";
import { import {
@ -632,7 +632,7 @@ const dict = catchStore.getDicts([
"businessType", "businessType",
]); ]);
const router = useRouter(); const route = useRoute();
const query = ref({ const query = ref({
size: 10, size: 10,
@ -642,9 +642,18 @@ const query = ref({
const list = ref([]); const list = ref([]);
const total = ref(0); const total = ref(0);
//
watch(()=>route.query.toString(),
()=>{
if(route.query.open){
query.value.createTime=getYearTime()
}
getList()
},{immediate:true,deep:true})
function getList() { function getList() {
listPetitionComplaint12337(query.value).then((data) => { listPetitionComplaint12337(query.value).then((data) => {
list.value = data.records; list.value = data.records;
total.value = data.total; total.value = data.total;
}); });

14
src/views/data/Mailbox.vue

@ -151,9 +151,9 @@ import {
listMailbox listMailbox
} from "@/api/data/mailbox"; } from "@/api/data/mailbox";
import feedback from "@/utils/feedback"; import feedback from "@/utils/feedback";
import { getDictLable } from "@/utils/util"; import { getDictLable, getYearTime} from "@/utils/util";
import useCatchStore from "@/stores/modules/catch"; import useCatchStore from "@/stores/modules/catch";
const route = useRoute()
const catchStore = useCatchStore(); const catchStore = useCatchStore();
const dict = catchStore.getDicts(["distributionState"]); const dict = catchStore.getDicts(["distributionState"]);
@ -165,6 +165,16 @@ const query = ref({
const list = ref([]); const list = ref([]);
const total = ref(0); const total = ref(0);
//
// watch(()=>route.query.toString(),
// ()=>{
// if(route.query.open){
// query.value.createTime=getYearTime()
// }
// getList()
// },{immediate:true,deep:true})
function getList() { function getList() {
listMailbox(query.value).then((data) => { listMailbox(query.value).then((data) => {
list.value = data.records; list.value = data.records;

61
src/views/datav/MailVisits.vue

@ -77,7 +77,7 @@
</datav-tab-item> </datav-tab-item>
</datav-tabs> </datav-tabs>
</datav-tab-item> </datav-tab-item>
<datav-tab-item label="部委支队" name="2"> <datav-tab-item label="局属单位" name="2">
<datav-tabs <datav-tabs
v-model="bwzdActiveTab" v-model="bwzdActiveTab"
type="bottom-button" type="bottom-button"
@ -116,7 +116,7 @@
</datav-card> </datav-card>
<datav-card title="信访问题类型"> <datav-card title="信访投诉占比">
<v-charts <v-charts
style="height: 300px" style="height: 300px"
:option="option2" :option="option2"
@ -139,32 +139,32 @@
:value="overview.manageMail" :value="overview.manageMail"
title="局长信箱" title="局长信箱"
style="width: 20%" style="width: 20%"
@click="open('/data/Mailbox')" @click="open('/query?open=Mailbox')"
/> />
<datav-statistic <datav-statistic
:value="overview.totalMail" :value="overview.totalMail"
title="信访总数" title="信访总数"
style="width: 20%" style="width: 20%"
@click="open('/query')"
/> />
<datav-statistic <datav-statistic
:value="overview.countryMail" :value="overview.countryMail"
title="国家信访" title="国家信访"
style="width: 20%" style="width: 20%"
@click="open('/data/gjxf')" @click="open('/data/gjxf?open=view')"
/> />
<datav-statistic <datav-statistic
:value="overview.policeMail" :value="overview.policeMail"
title="公安部信访" title="公安部信访"
style="width: 20%" style="width: 20%"
@click="open('/data/gabxf')" @click="open('/data/gabxf?open=view')"
/> />
<datav-statistic <datav-statistic
:value="overview.numberMail" :value="overview.numberMail"
title="12337信访" title="12337信访"
style="width: 20%" style="width: 20%"
@click="open('/data/mail12337')" @click="open('/query?open=12337')"
/> />
</div> </div>
@ -277,7 +277,7 @@
</datav-tab-item> </datav-tab-item>
</datav-tabs> </datav-tabs>
</datav-tab-item> </datav-tab-item>
<datav-tab-item label="部委支队" name="2"> <datav-tab-item label="局属单位" name="2">
<datav-tabs <datav-tabs
type="bottom-button" type="bottom-button"
> >
@ -336,7 +336,8 @@ import {
getEntanglementAndMassMail, getEntanglementAndMassMail,
getFirstAndRepeatMail, getFirstAndRepeatMail,
getMailMapIcon, getMailMapIcon,
getMailTrend getMailTrend,
getResultCount
} from "@/api/screen/mail.ts"; } from "@/api/screen/mail.ts";
import {mapOrgNameMapping} from "@/enums/orgMapping.js"; import {mapOrgNameMapping} from "@/enums/orgMapping.js";
@ -788,7 +789,7 @@ const countryTrend = ref({
}, },
], ],
}); });
const option2 = { const option2 = ref({
series: [ series: [
{ {
type: "pie", type: "pie",
@ -796,23 +797,15 @@ const option2 = {
label: { label: {
color: "#fff", color: "#fff",
}, },
data: [ data: [],
{value: 1282, name: "不作为"},
{value: 426, name: "求助咨询"},
{value: 284, name: "乱作为"},
{value: 131, name: "其他"},
{value: 95, name: "违法违纪违规"},
{value: 72, name: "慢作为"},
{value: 24, name: "意见建议"},
{value: 5, name: "纪律作风"},
],
}, },
], ],
tooltip: { tooltip: {
trigger: "item", trigger: "item",
}, },
}; });
const option3 = {
const option3 =ref( {
tooltip: { tooltip: {
trigger: "item", trigger: "item",
}, },
@ -824,19 +817,27 @@ const option3 = {
color: "#fff", color: "#fff",
}, },
data: [ data: [
{value: 10, name: "通报批评"},
{value: 2, name: "责令检查"},
{value: 1, name: "诫勉谈话"},
{value: 1, name: "批评教育"},
], ],
}, },
], ],
}; });
// endregion // endregion
// region
//
const getResultCountData = async (timeValue = time.value)=>{
const res = await getResultCount(timeValue);
let resultCountArray = []
Object.keys(res).forEach(s=>{
resultCountArray.push({name:s,value:res[s]})
})
option3.value.series[0].data=resultCountArray;
}
getResultCountData();
// region
const getFirstAndRepeatMailData = async (timeValue = time.value) => { const getFirstAndRepeatMailData = async (timeValue = time.value) => {
const res = await getFirstAndRepeatMail(timeValue) const res = await getFirstAndRepeatMail(timeValue)
fxjsFirstAndRepeatOverview.value = res.fxjsFirstAndRepeatOverview; fxjsFirstAndRepeatOverview.value = res.fxjsFirstAndRepeatOverview;
@ -853,6 +854,10 @@ const getFirstAndRepeatMailData = async (timeValue = time.value) => {
const getAllMailCountData = async (timeValue = time.value) => { const getAllMailCountData = async (timeValue = time.value) => {
const res = await getAllMailCount(timeValue) const res = await getAllMailCount(timeValue)
overview.value = res.overview; overview.value = res.overview;
option2.value.series[0].data= [{value:overview.value.manageMail,name:"局长信箱"},
{value:overview.value.countryMail,name:"国家信访"},
{value:overview.value.policeMail,name:"公安部信访"},
{value:overview.value.numberMail,name:"12337信访"},]
} }

19
src/views/work/Query.vue

@ -818,7 +818,7 @@ import {
updateNegative, updateNegative,
transferTodo, transferTodo,
} from "@/api/work/negative"; } from "@/api/work/negative";
import { getDictLable, formatTimeText, getInvolveProblem } from "@/utils/util"; import { getDictLable, formatTimeText, getInvolveProblem ,getYearTime} from "@/utils/util";
import feedback from "@/utils/feedback"; import feedback from "@/utils/feedback";
import { ProcessingStatus } from "@/enums/flowEnums"; import { ProcessingStatus } from "@/enums/flowEnums";
@ -894,7 +894,7 @@ watch(
} }
); );
function updateQuery() { async function updateQuery() {
if (route.query.processingStatus) { if (route.query.processingStatus) {
query.value.processingStatus = [route.query.processingStatus]; query.value.processingStatus = [route.query.processingStatus];
} }
@ -904,6 +904,21 @@ function updateQuery() {
moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"), moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),
]; ];
} }
//12337
if(route.query.open && route.query.open === '12337'){
query.value.crtTime =getYearTime()
query.value.problemSourcesCode = ['24']
await nextTick()
}
//
if(route.query.open && route.query.open === 'Mailbox'){
query.value.crtTime =getYearTime()
query.value.problemSourcesCode = ['23']
await nextTick()
}
if (route.query.extensionFlag === "true") { if (route.query.extensionFlag === "true") {
query.value.extensionFlag = true; query.value.extensionFlag = true;
query.value.processingStatus = ['signing', 'processing', 'approval']; query.value.processingStatus = ['signing', 'processing', 'approval'];

Loading…
Cancel
Save