Browse Source

fit:重点人员督察详情

main
pengwei 5 months ago
parent
commit
dfbd98b1bb
  1. 11
      src/api/mobileSupervision/supRiskPerson.ts
  2. 15
      src/api/superviseReport/superviseReport.ts
  3. 4
      src/views/books/Audit.vue
  4. 6
      src/views/datav/RightsComfort.vue
  5. 479
      src/views/mobileSupervise/Inspection.vue
  6. 242
      src/views/superviseReport/superviseReport.vue
  7. 1
      src/views/work/Query.vue

11
src/api/mobileSupervision/supRiskPerson.ts

@ -0,0 +1,11 @@
import request from "@/api/request";
/**
*
* */
export const getTaskSuprt = (query)=>{
return request.get({
url:'/task/supRisk/recordPage',
query
})
}

15
src/api/superviseReport/superviseReport.ts

@ -38,9 +38,22 @@ export function removeByIdFun(id){
}) })
} }
/**
*
* */
export function getReportDetailFun(id){ export function getReportDetailFun(id){
return request.get({ return request.get({
url:`/supervise/report/getReportDetail/${id}` url:`/supervise/report/getReportDetail/${id}`
}) })
} }
/**
*
* */
export function getNegativePageByQuery(query){
return request.get({
url:'/supervise/report/negativePage',
query
})
}

4
src/views/books/Audit.vue

@ -333,6 +333,10 @@ function handleExport() {
`${BASE_PATH}/negative/books/export/audit?` + `${BASE_PATH}/negative/books/export/audit?` +
new URLSearchParams(query.value).toString() new URLSearchParams(query.value).toString()
); );
window.open(
`${BASE_PATH}/negative/books/export/auditFile?`+
new URLSearchParams(query.value).toString()
)
} }
const show = ref(false); const show = ref(false);

6
src/views/datav/RightsComfort.vue

@ -419,7 +419,6 @@ let globalTempMapVoList = ref([]);
// //
const getMapData = async (timeValue) => { const getMapData = async (timeValue) => {
const res = await getComfortMapIcon(timeValue); const res = await getComfortMapIcon(timeValue);
console.log('res',res)
const mappedData = res.comfortMapVoList?.map(item => { const mappedData = res.comfortMapVoList?.map(item => {
let name; let name;
switch (item.name) { switch (item.name) {
@ -465,8 +464,10 @@ const getMapData = async (timeValue) => {
}; };
}); });
globalTempMapVoList.value = mappedData globalTempMapVoList.value = mappedData
const total = mappedData.reduce((sum, item) => sum + Number(item.value), 0);
const total = mappedData.reduce((sum, item) => sum + (Number(item.rightsNumber) || 0), 0);
const avg = total / mappedData.length; // const avg = total / mappedData.length; //
console.log('mappedData',mappedData)
const range30Percent = avg * 0.3 // const range30Percent = avg * 0.3 //
option.value.series[0].data = mappedData; option.value.series[0].data = mappedData;
@ -509,7 +510,6 @@ const option = ref({
tooltip: { tooltip: {
trigger: 'item', trigger: 'item',
formatter: function (params) { formatter: function (params) {
console.log('---------123e123------',params)
const dataItem = globalTempMapVoList.value.find(item => item.name.includes(params.name.substring(0, 2))); const dataItem = globalTempMapVoList.value.find(item => item.name.includes(params.name.substring(0, 2)));
if (dataItem) { if (dataItem) {
return ` return `

479
src/views/mobileSupervise/Inspection.vue

@ -114,6 +114,10 @@
> >
自查情况 自查情况
</el-button> </el-button>
<el-button v-if="row.taskType === 'risk_personal'"
type="primary" link @click="showSupervise(row)"
>督察情况
</el-button>
<el-button <el-button
type="danger" type="danger"
link link
@ -423,7 +427,7 @@
</div> </div>
<div id="zdrygk" v-if="form.specialType === '重点人员管控'"> <div id="zdrygk" v-if="form.specialType === '重点人员管控'">
<el-form-item label="管控对象导入"> <el-form-item label="管控对象导入">
<div > <div>
<a <a
class="link" class="link"
:href="`${BASE_PATH}/templates/重点人员管控导入模板.xlsx`" :href="`${BASE_PATH}/templates/重点人员管控导入模板.xlsx`"
@ -465,15 +469,16 @@
</template> </template>
</el-upload> </el-upload>
</div> </div>
<div v-show="uploadShow" style="width: 100%;margin: 5px 0;display: flex;justify-content: space-between;background-color: #F8F9FE"> <div v-show="uploadShow"
style="width: 100%;margin: 5px 0;display: flex;justify-content: space-between;background-color: #F8F9FE">
<div> <div>
{{fileData[fileData.length - 1]?.name}} {{ fileData[fileData.length - 1]?.name }}
</div> </div>
<div > <div>
<el-button type="primary" link @click="showUploadFun" >重新上传</el-button> <el-button type="primary" link @click="showUploadFun">重新上传</el-button>
</div> </div>
</div> </div>
<div style="width: 100%" v-if="showRiskDataTable" > <div style="width: 100%" v-if="showRiskDataTable">
<el-row style="width: 100%" :gutter="20"> <el-row style="width: 100%" :gutter="20">
<el-col :span="4"> <el-col :span="4">
<el-select placeholder="管控级别" v-model="riskDataQuery.controlLevel"> <el-select placeholder="管控级别" v-model="riskDataQuery.controlLevel">
@ -513,18 +518,18 @@
highlight-current-row highlight-current-row
style="width: 100%;margin-top: 10px" style="width: 100%;margin-top: 10px"
> >
<el-table-column type="index" width="50" label="序号" /> <el-table-column type="index" width="50" label="序号"/>
<el-table-column property="name" label="项目" width="60" /> <el-table-column property="name" label="项目" width="60"/>
<el-table-column property="gender" label="性别" width="60" /> <el-table-column property="gender" label="性别" width="60"/>
<el-table-column property="idCode" label="身份证号" width="100" /> <el-table-column property="idCode" label="身份证号" width="100"/>
<el-table-column property="mobile" label="联系方式" width="100" /> <el-table-column property="mobile" label="联系方式" width="100"/>
<el-table-column property="personalType" label="人员类别" width="80" /> <el-table-column property="personalType" label="人员类别" width="80"/>
<el-table-column property="controlLevel" label="管控级别" width="80" /> <el-table-column property="controlLevel" label="管控级别" width="80"/>
<el-table-column property="controlTimeInterval" label="管控间隔" width="60" /> <el-table-column property="controlTimeInterval" label="管控间隔" width="60"/>
<el-table-column property="responsibleDepartName" label="责任单位" width="70" /> <el-table-column property="responsibleDepartName" label="责任单位" width="70"/>
<el-table-column property="responsibleName" label="责任民警" width="60" /> <el-table-column property="responsibleName" label="责任民警" width="60"/>
<el-table-column property="controlEmpNo" label="包保督察人员警号" width="120" /> <el-table-column property="controlEmpNo" label="包保督察人员警号" width="120"/>
<el-table-column property="controlName" label="包保督察人员姓名" width="120" /> <el-table-column property="controlName" label="包保督察人员姓名" width="120"/>
<el-table-column fixed="right" label="操作" min-width="120"> <el-table-column fixed="right" label="操作" min-width="120">
<template #default="{row}"> <template #default="{row}">
<el-button link type="danger" size="small" @click="delriskData(row)">删除</el-button> <el-button link type="danger" size="small" @click="delriskData(row)">删除</el-button>
@ -594,7 +599,7 @@
</footer> </footer>
</el-dialog> </el-dialog>
<!--任务发布详情--> <!--任务发布详情-->
<el-dialog v-model="detailShow" title="发布任务详情" width="1076px" <el-dialog v-model="detailShow" title="发布任务详情" width="1076px" v-loading="detailLoading"
top="5vh" top="5vh"
style="margin-bottom: 0"> style="margin-bottom: 0">
<el-scrollbar max-height="76vh"> <el-scrollbar max-height="76vh">
@ -647,9 +652,11 @@
message: '请选择', message: '请选择',
}" }"
> >
<div style="width: 800px"> <div style="width: 800px" v-if="activeRow.times">
{{ `${timeFormat(activeRow.times[0])} - ${timeFormat(activeRow.times[1])}` }} {{ `${timeFormat(activeRow.times[0])} - ${timeFormat(activeRow.times[1])}` }}
</div> </div>
<div v-else>
</div>
</el-form-item> </el-form-item>
<!--专项督察展示--> <!--专项督察展示-->
@ -767,7 +774,7 @@
</div> </div>
<div id="zdrygk" v-if="activeRow.specialType === '重点人员管控'"> <div id="zdrygk" v-if="activeRow.specialType === '重点人员管控'">
<el-form-item label="管控对象"> <el-form-item label="管控对象">
<div style="width: 100%" > <div style="width: 100%">
<el-row style="width: 100%" :gutter="20"> <el-row style="width: 100%" :gutter="20">
<el-col :span="4"> <el-col :span="4">
<el-select placeholder="管控级别" v-model="riskDataQuery.controlLevel"> <el-select placeholder="管控级别" v-model="riskDataQuery.controlLevel">
@ -807,18 +814,18 @@
highlight-current-row highlight-current-row
style="width: 100%;margin-top: 10px" style="width: 100%;margin-top: 10px"
> >
<el-table-column type="index" width="50" label="序号" /> <el-table-column type="index" width="50" label="序号"/>
<el-table-column property="name" label="项目" width="60" /> <el-table-column property="name" label="项目" width="60"/>
<el-table-column property="gender" label="性别" width="60" /> <el-table-column property="gender" label="性别" width="60"/>
<el-table-column property="idCode" label="身份证号" width="100" /> <el-table-column property="idCode" label="身份证号" width="100"/>
<el-table-column property="mobile" label="联系方式" width="100" /> <el-table-column property="mobile" label="联系方式" width="100"/>
<el-table-column property="personalType" label="人员类别" width="80" /> <el-table-column property="personalType" label="人员类别" width="80"/>
<el-table-column property="controlLevel" label="管控级别" width="80" /> <el-table-column property="controlLevel" label="管控级别" width="80"/>
<el-table-column property="controlTimeInterval" label="管控间隔" width="60" /> <el-table-column property="controlTimeInterval" label="管控间隔" width="60"/>
<el-table-column property="responsibleDepartName" label="责任单位" width="70" /> <el-table-column property="responsibleDepartName" label="责任单位" width="70"/>
<el-table-column property="responsibleName" label="责任民警" width="60" /> <el-table-column property="responsibleName" label="责任民警" width="60"/>
<el-table-column property="controlEmpNo" label="包保督察人员警号" width="70" /> <el-table-column property="controlEmpNo" label="包保督察人员警号" width="70"/>
<el-table-column property="controlName" label="包保督察人员姓名" width="70" /> <el-table-column property="controlName" label="包保督察人员姓名" width="70"/>
</el-table> </el-table>
<div class="flex end mt-8"> <div class="flex end mt-8">
@ -1457,6 +1464,81 @@
</div> </div>
</el-dialog> </el-dialog>
<el-dialog title="重点人员督察情况" v-model="superviseRiskShow" width="80vw" style="height:80vh">
<div class="superviseRiskCards">
<div class="risk_left">
<div class="user_cards">
<div class="user_card" v-for="(item,index) in riskDataCards" @click="handSupRiskCard(item,index)" :class="changeCardIndex == index?`user_card_change`:''">
<div class="user_card_img">
<el-avatar style="height: 100% " shape="square" :size="100" :fit="`fit`"
:src="item.imgBase64"/>
</div>
<div class="user_card_info">
<div>
<el-row style="margin-bottom: 2px">
<el-col :span="12">姓名<span class="user_card_info_text">{{ item.name }}</span></el-col>
<el-col :span="12">管控级别<span class="user_card_info_text">{{ item.controlLevel }}</span></el-col>
</el-row>
<el-row style="margin-bottom: 2px">
<el-col :span="12">人员类别<span class="user_card_info_text">{{ item.personalType }}</span></el-col>
<el-col :span="12">性别<span class="user_card_info_text">{{ item.gender }}</span></el-col>
</el-row>
<el-row style="margin-bottom: 2px">
身份证<span class="user_card_info_text">{{ item.idCode }}</span>
</el-row>
<el-row style="margin-bottom: 2px">
联系电话<span class="user_card_info_text">{{ item.mobile }}</span>
</el-row>
<el-row style="margin-bottom: 2px">
<el-col :span="12">责任单位<span class="user_card_info_text">{{ item.responsibleDepartName }}</span>
</el-col>
<el-col :span="12">责任民警<span class="user_card_info_text">{{ item.responsibleName }}</span>
</el-col>
</el-row>
<el-row style="margin-bottom: 2px">
<el-col :span="12">管控间隔<span class="user_card_info_text">{{ item.controlTimeInterval }}</span>
</el-col>
<el-col :span="12">督察状态<span class="user_card_info_text">{{ item.supStatus }}</span></el-col>
</el-row>
</div>
</div>
</div>
</div>
</div>
<div class="risk_right">
<el-table ref="taskSupDataTable" :preserve-expanded-content="preserveExpanded" :data="taskSupData" v-loading="taskLoading">
<el-table-column type="expand">
<template #default="props">
<div >
<p >督察时间: {{ props.row.supTime }}</p>
<p>督察状态: {{ props.row.supStatus }}</p>
<p >督察方式: {{ props.row.supType }}</p>
<p>督察情况: {{props.row.supDesc}}</p>
<p>附件</p>
<file-list v-model:files="props.row.fileVoList" :removeEnable="false" />
</div>
</template>
</el-table-column>
<el-table-column label="督察时间" prop="supTime"></el-table-column>
<el-table-column label="督察状态" prop="supStatus"></el-table-column>
<el-table-column label="督察方式" prop="supType"></el-table-column>
<el-table-column label="督察情况" prop="supDesc"></el-table-column>
</el-table>
<div class="flex end mt-8">
<el-pagination
@size-change="getTaskSupDataFun"
@current-change="getTaskSupDataFun"
:page-sizes="[10, 20, 50]"
v-model:page-size="taskSupQuery.size"
v-model:current-page="taskSupQuery.current"
layout="total, sizes, prev, pager, next"
:total="taskSupTotal"
>
</el-pagination>
</div>
</div>
</div>
</el-dialog>
</template> </template>
<script setup> <script setup>
@ -1472,6 +1554,7 @@ import {getDictLable, timeFormat} from "@/utils/util";
import {getDepartProfile} from "@/api/sensitivePerception/profileDepart"; import {getDepartProfile} from "@/api/sensitivePerception/profileDepart";
import {ROOT_DEPART_ID} from '@/enums/appEnums'; import {ROOT_DEPART_ID} from '@/enums/appEnums';
import {BASE_PATH} from "@/api/request"; import {BASE_PATH} from "@/api/request";
import {getTaskSuprt} from '@/api/mobileSupervision/supRiskPerson';
import { import {
addTaskManagement, addTaskManagement,
getTaskManagementDetail, getTaskManagementDetail,
@ -1484,10 +1567,11 @@ import {
import {listTestingAlcoholPeoples, TestingAlcoholDetail} from "@/api/mobileSupervision/testingAlcohol"; import {listTestingAlcoholPeoples, TestingAlcoholDetail} from "@/api/mobileSupervision/testingAlcohol";
import {getSelfexaminationProblem} from "@/api/mobileSupervision/selfexamination"; import {getSelfexaminationProblem} from "@/api/mobileSupervision/selfexamination";
import {getTaskProblem} from "@/api/mobileSupervision/taskProblem"; import {getTaskProblem} from "@/api/mobileSupervision/taskProblem";
import { getToken } from "@/utils/token"; import {getToken} from "@/utils/token";
let cardContent = ref() let cardContent = ref()
const catchStore = useCatchStore(); const catchStore = useCatchStore();
const dict = catchStore.getDicts(["supervisionType", "personnelTypeArray", "inspectorType", "personType","controlLevel","controlType"]); const dict = catchStore.getDicts(["supervisionType", "personnelTypeArray", "inspectorType", "personType", "controlLevel", "controlType"]);
const fileListData = ref([]); const fileListData = ref([]);
const list = ref([]); const list = ref([]);
@ -1584,7 +1668,7 @@ getList();
const form = ref({ const form = ref({
files: [], files: [],
supRiskDtoList:[] supRiskDtoList: []
}); });
const formRef = ref(null); const formRef = ref(null);
@ -1603,8 +1687,8 @@ async function submit() {
getList(); getList();
form.value = { form.value = {
files: [], files: [],
supervisionType :'日常督察', supervisionType: '日常督察',
supRiskDtoList:[] supRiskDtoList: []
}; };
} }
@ -1614,9 +1698,9 @@ const getTaskType = (val) => {
return "日常督察"; return "日常督察";
} else if (val === 'testing_alcohol') { } else if (val === 'testing_alcohol') {
return "禁酒督察"; return "禁酒督察";
} else if(val === 'selfexamination') { } else if (val === 'selfexamination') {
return "所队自查"; return "所队自查";
}else{ } else {
return "重点人员督察" return "重点人员督察"
} }
} }
@ -1626,21 +1710,25 @@ function handleShowAdd() {
show.value = true; show.value = true;
form.value = { form.value = {
files: [], files: [],
supervisionType :'日常督察', supervisionType: '日常督察',
supRiskDtoList:[] supRiskDtoList: []
}; };
} }
const detailShow = ref(false); const detailShow = ref(false);
const detailLoading = ref(false);
const activeRow = ref({ const activeRow = ref({
supRiskDtoList:[] supRiskDtoList: []
}); });
/** /**
* 显示督察任务详情 * 显示督察任务详情
* */ * */
function handleShowDetail(row) { async function handleShowDetail(row) {
getTaskManagementDetail(row.id).then((res) => { detailShow.value = true;
detailLoading.value = true;
try {
const res = await getTaskManagementDetail(row.id);
activeRow.value = res; activeRow.value = res;
if (res.samplingTarget == '自定义人员') { if (res.samplingTarget == '自定义人员') {
samplingQuery.value.ids = res.samplingIds; samplingQuery.value.ids = res.samplingIds;
@ -1652,8 +1740,11 @@ function handleShowDetail(row) {
} else { } else {
slofOrgList.value = [] slofOrgList.value = []
} }
detailShow.value = true; detailLoading.value = false;
}) } catch (e) {
detailLoading.value = false;
}
} }
@ -1678,22 +1769,124 @@ async function showDeatil(row) {
problemShow.value = true problemShow.value = true
activeRowData.value = await getTaskProblem(row.id) activeRowData.value = await getTaskProblem(row.id)
} }
const preserveExpanded = ref(false)
// //
const fileData=ref([]) const fileData = ref([])
const fileDataLoading = ref(false) const fileDataLoading = ref(false)
const showRiskDataTable =ref(false); const showRiskDataTable = ref(false);
async function SupRiskSuccess (val){ /*
form.value.supRiskDtoList=val.data *获取重点督察人员
fileDataLoading.value=false; * **/
showRiskDataTable.value=true; async function SupRiskSuccess(val) {
form.value.supRiskDtoList = val.data
fileDataLoading.value = false;
showRiskDataTable.value = true;
showUploadFun(); showUploadFun();
} }
const SupRiskProgress= ()=>{
fileDataLoading.value=true; const SupRiskProgress = () => {
fileDataLoading.value = true;
} }
const superviseRiskShow = ref(false);
const taskSupQuery = ref({
current: 1,
size: 10,
})
const taskSupTotal = ref(0)
const taskSupData = ref([])
const taskLoading = ref(false)
const riskDataCards = ref(null)
const showSupervise = async (row) => {
const res = await getTaskManagementDetail(row.id);
//
const riskData = res.supRiskDtoList;
riskDataCards.value = riskData;
if (res.supRiskDtoList?.length > 0) {
taskSupQuery.value.idCode = riskData[0].idCode;
taskSupQuery.value.taskId = row.id;
//
changeCardIndex.value=0;
const taskSupert = await getTaskSuprt(taskSupQuery.value);
taskSupTotal.value = taskSupert.total;
taskSupData.value = taskSupert.records;
console.log('taskSupData',taskSupData.value)
}
superviseRiskShow.value = true;
}
/**
* 获取重点人员督察记录列表
* */
const getTaskSupDataFun = async () => {
taskLoading.value = true;
try {
const taskSupert = await getTaskSuprt(taskSupQuery.value);
taskSupTotal.value = taskSupert.total;
taskSupData.value = taskSupert.records;
taskLoading.value = false;
} catch (e) {
taskLoading.value = false;
}
}
const changeCardIndex = ref(0)
/**
* 点击重点人员
* */
const handSupRiskCard = async (row,index)=>{
changeCardIndex.value=index
taskLoading.value = true;
try {
taskSupQuery.value.idCode = row.idCode;
const taskSupert = await getTaskSuprt(taskSupQuery.value);
taskSupTotal.value = taskSupert.total;
taskSupData.value = taskSupert.records;
taskLoading.value = false;
} catch (e) {
taskLoading.value = false;
}
}
/**
* 重点督察人员前端列表
* */
const getRiskDataTableSubmit = () => {
filterDataTable.value = form.value.supRiskDtoList.length > 0 ? form.value.supRiskDtoList : activeRow.value.supRiskDtoList
//
if (riskDataQuery.value.controlLevel) {
filterDataTable.value = filterDataTable.value.filter(s => s.controlLevel.includes(riskDataQuery.value.controlLevel));
console.log('filterDataTable', filterDataTable.value)
}
if (riskDataQuery.value.keyword) {
filterDataTable.value = filterDataTable.value.filter(s => s.name.includes(riskDataQuery.value.keyword) || s.idCode.includes(riskDataQuery.value.keyword) || s.mobile.includes(riskDataQuery.value.keyword));
}
if (riskDataQuery.value.personalType) {
filterDataTable.value = filterDataTable.value.filter(s => s.personalType.includes(riskDataQuery.value.personalType));
}
if (riskDataQuery.value.responsibleName) {
filterDataTable.value = filterDataTable.value.filter(s => s.responsibleName.includes(riskDataQuery.value.responsibleName));
}
if (riskDataQuery.value.controlName) {
filterDataTable.value = filterDataTable.value.filter(s => s.controlName.includes(riskDataQuery.value.controlName));
}
riskDataTotal.value = filterDataTable.value.length;
riskDataTable.value = filterDataTable.value.slice(startValue.value, endValue.value);
}
/**
* 删除重点督察人员数据
* */
const delriskData = (row) => {
nextTick(() => {
form.value.supRiskDtoList = form.value.supRiskDtoList.filter(s => s.idCode !== row.idCode);
console.log('form.value.supRiskDtoList', form.value.supRiskDtoList)
})
}
//--------- //---------
const testingDetailShow = ref(false); const testingDetailShow = ref(false);
@ -1706,19 +1899,19 @@ const peopleQuery = ref({
/** /**
* 数据导出 * 数据导出
* */ * */
const handleExport = async ()=>{ const handleExport = async () => {
let data = Object.assign({},editData.value) let data = Object.assign({}, editData.value)
delete data.samplingPolices delete data.samplingPolices
delete data.startTime delete data.startTime
delete data.endTime delete data.endTime
if(!data.samplingTime){ if (!data.samplingTime) {
delete data.samplingTime delete data.samplingTime
} }
if(data.samplingObjectList){ if (data.samplingObjectList) {
data.orgStr = data.orgStr =
data.samplingObjectList.map(s=>s.deptId).join(",") data.samplingObjectList.map(s => s.deptId).join(",")
delete data.samplingObjectList delete data.samplingObjectList
}else{ } else {
} }
window.open(`${BASE_PATH}/sampling/export/samplingPoling?` + new URLSearchParams(data).toString()) window.open(`${BASE_PATH}/sampling/export/samplingPoling?` + new URLSearchParams(data).toString())
@ -1727,21 +1920,23 @@ const handleExport = async ()=>{
// //
async function handleTestingDetailShow(row) { async function handleTestingDetailShow(row) {
testingDetailShow.value = true; testingDetailShow.value = true;
activeRow.value =await TestingAlcoholDetail(row.id) activeRow.value = await TestingAlcoholDetail(row.id)
await getTestingAlcoholPeople() await getTestingAlcoholPeople()
} }
// //
async function getTestingAlcoholPeople() { async function getTestingAlcoholPeople() {
testingLoading.value = true; testingLoading.value = true;
try{ try {
const data = await listTestingAlcoholPeoples(activeRow.value.id, peopleQuery.value) const data = await listTestingAlcoholPeoples(activeRow.value.id, peopleQuery.value)
peoples.value = data.records; peoples.value = data.records;
peopleTotal.value = data.total; peopleTotal.value = data.total;
}catch(e){ } catch (e) {
testingLoading.value = false; testingLoading.value = false;
} }
testingLoading.value = false; testingLoading.value = false;
} }
// //
function peopleReset() { function peopleReset() {
peopleQuery.value = { peopleQuery.value = {
@ -1749,6 +1944,7 @@ function peopleReset() {
current: 1, current: 1,
}; };
} }
// //
function handleShowPeople(row) { function handleShowPeople(row) {
activePeople.value = row; activePeople.value = row;
@ -1771,11 +1967,11 @@ const handleSelfProblemShow = (row) => {
//- //-
async function getSelfexaminationProblemFun(row) { async function getSelfexaminationProblemFun(row) {
problemLoading.value = true; problemLoading.value = true;
try{ try {
const res =await getSelfexaminationProblem(row.id, selfPeopleQuery.value); const res = await getSelfexaminationProblem(row.id, selfPeopleQuery.value);
selfProblemList.value = res.records; selfProblemList.value = res.records;
selfProblemTotal.value = res.total; selfProblemTotal.value = res.total;
}catch (e){ } catch (e) {
problemLoading.value = false; problemLoading.value = false;
} }
problemLoading.value = false; problemLoading.value = false;
@ -1796,11 +1992,11 @@ async function handleProblemsShow(row) {
activeRow.value = row; activeRow.value = row;
problemsLoading.value = true problemsLoading.value = true
problemsShow.value = true; problemsShow.value = true;
try{ try {
const res = await listInspectionProblems(activeRow.value.id); const res = await listInspectionProblems(activeRow.value.id);
problems.value = data.records; problems.value = data.records;
peopleTotal.value = data.total; peopleTotal.value = data.total;
}catch (e){ } catch (e) {
problemsLoading.value = false; problemsLoading.value = false;
} }
problemsLoading.value = false; problemsLoading.value = false;
@ -1899,14 +2095,14 @@ const addSelfArray = () => {
} }
const temperancLoading =ref(false); const temperancLoading = ref(false);
const managementSuccess = async (val)=>{ const managementSuccess = async (val) => {
form.value.userList = val.data; form.value.userList = val.data;
temperancLoading.value=false; temperancLoading.value = false;
} }
const managementProgress = async (val)=>{ const managementProgress = async (val) => {
temperancLoading.value=true; temperancLoading.value = true;
} }
//getDeparts //getDeparts
@ -1926,81 +2122,46 @@ onMounted(() => {
}) })
const riskDataTable = ref([]); const riskDataTable = ref([]);
const riskDataQuery=ref({}) const riskDataQuery = ref({})
const riskDataTotal = ref(0); const riskDataTotal = ref(0);
const filterDataTable = ref([]) const filterDataTable = ref([])
const uploadShow =ref(false) const uploadShow = ref(false)
/**
* 获取重点督察人员表单
* */
watch(()=>form.value.supRiskDtoList,(newVal)=>{
if(form.value.supRiskDtoList.length > 0){
getRiskDataTableSubmit();
}
},{immediate:true,deep:true})
/**
* 获取重点督察人员表单
* */
watch(()=>activeRow.value.supRiskDtoList,(newVal)=>{
if(activeRow.value.supRiskDtoList && activeRow.value.supRiskDtoList.length > 0){
getRiskDataTableSubmit();
}
},{immediate:true,deep:true})
const showUploadFun = () => {
const showUploadFun = ()=>{
uploadShow.value = !uploadShow.value uploadShow.value = !uploadShow.value
} }
const startValue = ref(0);
const endValue = ref(11);
/** /**
* 获取表单数据 * 获取表单数据
* */ * */
const getRiskDataTableList = (val)=>{ const getRiskDataTableList = (val) => {
let end =(10 * val) + 1; endValue.value = (10 * val) + 1;
let start =(10 * (val -1)); startValue.value = (10 * (val - 1));
if(riskDataTotal.value < (10 * val )){ if (riskDataTotal.value < (10 * val)) {
end=riskDataTotal.value; endValue.value = riskDataTotal.value;
} }
riskDataTable.value = filterDataTable.value.slice(start,end); riskDataTable.value = filterDataTable.value.slice(startValue.value, endValue.value);
} }
/** /**
* 删除数据 * 获取重点督察人员表单
* */ * */
const delriskData =(row)=>{ watch(() => form.value.supRiskDtoList, (newVal) => {
form.value.supRiskDtoList = form.value.supRiskDtoList.filter(s=>s.idCode !== row.idCode); if (form.value.supRiskDtoList.length > 0) {
} getRiskDataTableSubmit();
// controlLevel
// keyword
// personalType
// responsibleName
// controlName
const getRiskDataTableSubmit =()=>{
filterDataTable.value = form.value.supRiskDtoList.length > 0?form.value.supRiskDtoList:activeRow.value.supRiskDtoList
//
if(riskDataQuery.value.controlLevel){
filterDataTable.value = filterDataTable.value.filter(s=>s.controlLevel.includes(riskDataQuery.value.controlLevel));
console.log('filterDataTable',filterDataTable.value)
}
if(riskDataQuery.value.keyword){
filterDataTable.value = filterDataTable.value.filter(s=>s.name.includes(riskDataQuery.value.keyword) || s.idCode.includes(riskDataQuery.value.keyword)||s.mobile.includes(riskDataQuery.value.keyword));
}
if(riskDataQuery.value.personalType){
filterDataTable.value = filterDataTable.value.filter(s=>s.personalType.includes(riskDataQuery.value.personalType));
}
if(riskDataQuery.value.responsibleName){
filterDataTable.value = filterDataTable.value.filter(s=>s.responsibleName.includes(riskDataQuery.value.responsibleName));
} }
if(riskDataQuery.value.controlName){ }, {immediate: true, deep: true})
filterDataTable.value = filterDataTable.value.filter(s=>s.controlName.includes(riskDataQuery.value.controlName));
/**
* 获取重点督察人员表单
* */
watch(() => activeRow.value.supRiskDtoList, (newVal) => {
if (activeRow.value.supRiskDtoList && activeRow.value.supRiskDtoList.length > 0) {
getRiskDataTableSubmit();
} }
riskDataTotal.value=filterDataTable.value.length; }, {immediate: true, deep: true})
riskDataTable.value=filterDataTable.value.slice(0,11);
}
watch(departs, () => { watch(departs, () => {
@ -2030,7 +2191,6 @@ watch(() => form.value.supervisionType, (newVal) => {
}, {immediate: true}) }, {immediate: true})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
h5 { h5 {
@ -2064,4 +2224,53 @@ h5 {
margin-bottom: 10px margin-bottom: 10px
} }
.superviseRiskCards {
width: 100%;
height: 70vh;
display: flex;
justify-content: space-around;
}
.risk_left {
width: 30%;
height: 70vh;
overflow-x: visible;
overflow-y: auto;
margin-right:10px;
}
.risk_right {
width: 70%;
height: 70vh;
overflow: auto;
}
.user_card {
width: 99%;
display: flex;
justify-content: space-around;
border: 1px solid #ECEEFB;
border-radius: 10px;
margin-top: 5px;
margin-bottom: 10px;
overflow: hidden;
}
.user_card_change{
background-color: #eaeaf1;
}
.user_card_img {
width: 40%;
}
.user_card_info {
width: 60%;
color: #afaeae;
padding: 10px;
.user_card_info_text {
color: #0d0e1b;
}
}
</style> </style>

242
src/views/superviseReport/superviseReport.vue

@ -1,8 +1,19 @@
<script setup> <script setup>
import {getListData,addOrUpDataFun,removeByIdFun} from "@/api/superviseReport/superviseReport"; import {getListData,addOrUpDataFun,removeByIdFun,getNegativePageByQuery} from "@/api/superviseReport/superviseReport";
import {timeFormat} from "@/utils/util"; import {timeFormat,getDictLable,formatTimeText, getInvolveProblem ,getYearTime} from "@/utils/util";
import { ProcessingStatus } from "@/enums/flowEnums";
import useCatchStore from "@/stores/modules/catch";
const catchStore = useCatchStore();
const dict = catchStore.getDicts([
"businessType",
"inspectCase",
"isRectify",
"processingStatus",
"suspectProblem",
"policeType",
"specialSupervision"
]);
const tableRef = ref(null) const tableRef = ref(null)
const query = ref({ const query = ref({
current: 1, current: 1,
@ -75,7 +86,37 @@ const delReportData = async (row)=>{
await getList(); await getList();
} }
// //
const negativeShow = ref(false)
const negativeTable = ref();
const negativeQuery = ref({
current: 1,
size: 10,
departBranch:false
})
const negativeTotal = ref(0);
const negativeLoging = ref(false);
const handleNegativeTable =async (row)=>{
if(row.superviseNumber > 0){
try{
negativeLoging.value=true;
await getNegativePageFun(row);
negativeShow.value = true;
}catch (e){
console.log("督察问题获取失败")
negativeLoging.value=false;
}
}
}
const getNegativePageFun = async (row)=>{
negativeQuery.value.id =row.id;
const res = await getNegativePageByQuery(row);
negativeTable.value =res.records;
negativeTotal.value = res.total;
negativeLoging.value=false;
}
</script> </script>
@ -131,6 +172,11 @@ const delReportData = async (row)=>{
<el-table-column prop="crtDepart" label="创建单位名称" ></el-table-column> <el-table-column prop="crtDepart" label="创建单位名称" ></el-table-column>
<el-table-column prop="crtEmpNo" label="创建警号"></el-table-column> <el-table-column prop="crtEmpNo" label="创建警号"></el-table-column>
<el-table-column prop="crtUser" label="创建警员" ></el-table-column> <el-table-column prop="crtUser" label="创建警员" ></el-table-column>
<el-table-column prop="superviseNumber" label="督察问题数">
<template #default="{row}">
<el-button type="primary" link @click="handleNegativeTable(row)">{{row.superviseNumber}}</el-button>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right"> <el-table-column label="操作" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<div class="flex v-center"> <div class="flex v-center">
@ -185,7 +231,7 @@ const delReportData = async (row)=>{
> >
</footer> </footer>
</el-dialog> </el-dialog>
<!--督察报告详情-->
<el-dialog :title="`督察报告详情`" v-model="detailShow"> <el-dialog :title="`督察报告详情`" v-model="detailShow">
<el-row> <el-row>
<el-col > <el-col >
@ -216,6 +262,192 @@ const delReportData = async (row)=>{
</el-form-item> </el-form-item>
</el-row> </el-row>
</el-dialog> </el-dialog>
<!-- 督察报告关联问题-->
<el-dialog :title="`督察报告关联问题`" v-model="negativeShow" width="70vw" >
<el-table :data="negativeTable" v-loading="loading">
<el-table-column type="expand">
<template #default="{ row }">
<div class="row mt-10">
<div class="col col-6">
<label>样本源头编号</label>
<span>{{ row.originId }}</span>
</div>
<div class="col col-6">
<label>问题发现时间</label>
<span>{{ row.discoveryTime }}</span>
</div>
<div class="col col-6">
<label>问题发生时间</label>
<span>{{ row.happenTime || "/" }}</span>
</div>
</div>
<div class="row mt-10">
<div class="col col-6">
<label>问题来源</label>
<span>{{ row.problemSources }}</span>
</div>
<div class="col col-6">
<label>业务类别</label>
<span>{{ row.businessTypeName }}</span>
</div>
<div class="col col-12">
<label>涉嫌问题</label>
<span>{{
getInvolveProblem(
row.involveProblem,
dict.suspectProblem
) || "/"
}}</span>
</div>
</div>
<div class="row mt-10">
<div class="col col-6" v-if="row.responderName">
<label>投诉反映人</label>
<span>{{ row.responderName }}</span>
</div>
<div class="col col-6" v-if="row.contactPhone">
<label>联系电话</label>
<span>{{ row.contactPhone }}</span>
</div>
</div>
<div class="row mt-10">
<div class="col col-6">
<label>涉及警种</label>
<span>{{ row.policeTypeName }}</span>
</div>
<div class="col col-6">
<label>涉及单位</label>
<span>{{
row.involveDepartName || "/"
}}</span>
</div>
</div>
<div class="row mt-10">
<div class="col col-24">
<label>事情简要描述</label>
<span>{{ row.thingDesc }}</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column
label="问题录入时间"
prop="crtTime"
width="150"
sortable="custom"
/>
<el-table-column
label="问题发现时间"
prop="discoveryTime"
width="150"
sortable="custom"
/>
<el-table-column
label="问题来源"
prop="problemSources"
width="110"
show-overflow-tooltip
/>
<el-table-column
label="业务类别"
prop="businessTypeName"
width="110"
/>
<el-table-column
label="问题内容"
prop="thingDesc"
show-overflow-tooltip
/>
<el-table-column label="办理单位" show-overflow-tooltip>
<template #default="{ row }">
<span
>{{ row.handleSecondDepartName
}}{{ row.handleThreeDepartName }}</span
>
</template>
</el-table-column>
<el-table-column
label="是否属实"
prop="checkStatusName"
width="100"
align="center"
/>
<el-table-column
label="流程限时"
width="150"
align="center"
v-if="remainingTimeFlag"
>
<template #default="{ row }">
<countdown
:time="row.remainingDuration"
v-if="
row.remainingDuration &&
row.processingStatus !==
ProcessingStatus.COMPLETED
"
/>
<el-tag
v-else-if="row.handleTimeout"
type="danger"
effect="dark"
>办结超时
{{ formatTimeText(row.handleTimeout) }}</el-tag
>
</template>
</el-table-column>
<el-table-column label="办理状态" width="110">
<template #default="{ row }">
<el-tag
:type="
row.processingStatus ===
ProcessingStatus.COMPLETED
? 'success'
: 'primary'
"
v-if="row.processingStatus"
>{{
getDictLable(
dict.processingStatus,
row.processingStatus
)
}}</el-tag
>
</template>
</el-table-column>
<el-table-column
label="当前处理对象"
prop="currentProcessingObject"
show-overflow-tooltip
>
<template #default="{ row }">
<span
v-if="
row.processingStatus ===
ProcessingStatus.COMPLETED
"
></span
>
<span v-else>{{
row.currentProcessingObject
}}</span>
</template>
</el-table-column>
</el-table>
<div class="flex end mt-8">
<el-pagination
@size-change="getNegativePageFun"
@current-change="getNegativePageFun"
:page-sizes="[10, 20, 50, 100]"
v-model:page-size="negativeQuery.size"
v-model:current-page="negativeQuery.current"
layout="total, sizes, prev, pager, next"
:total="negativeTotal"
>
</el-pagination>
</div>
</el-dialog>
</div> </div>
</template> </template>

1
src/views/work/Query.vue

@ -356,7 +356,6 @@
prop="thingDesc" prop="thingDesc"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column label="办理单位" show-overflow-tooltip> <el-table-column label="办理单位" show-overflow-tooltip>
<template #default="{ row }"> <template #default="{ row }">
<span <span

Loading…
Cancel
Save