Browse Source

fix:维权督察、审计监督相关前端问题消费(1、维权督办:筛选案件类型,过滤无需使用的维权案件。

2、维权列表:新增维权导出功能。
                      3、左右拉动的滚动轴加宽;审计监督台账-台账与附件压缩包顺序无法对应。
                      4、移动督察:督察问题编辑:涉及单位、问题来源展示错误,附件无法修改。
                      5、人员抽检-补充抽检人员:补充1位人员后原名单20人员不展示。
                      6、抽检人员:无法导出,提示数据库异常。)
master
pengwei 3 weeks ago
parent
commit
5b8e82b835
  1. 7
      src/api/rightsComfort/rights.ts
  2. 48
      src/components/mobileSupervise/police-sampling.vue
  3. 6
      src/views/books/Audit.vue
  4. 163
      src/views/rightsComfort/Rights.vue

7
src/api/rightsComfort/rights.ts

@ -9,6 +9,13 @@ export function listRights(query) {
}
export function getInfringerData(id){
return request.get({
url:`/rights/getInfringerData/${id}`
})
}
export function delRights(id){
return request.del({
url:`/rights/${id}`

48
src/components/mobileSupervise/police-sampling.vue

@ -173,10 +173,7 @@ const query = ref({
departBranch: true
});
watch(() => props.departId, (val) => {
query.value.departId = val;
getList()
})
const total = ref(0);
const ableRef =ref(null)
const treeData = catchSotre.getDepartsAll();
@ -186,7 +183,6 @@ function getList() {
loading.value = true
listPolice(query.value).then((data) => {
polices.value = data.records;
console.log('polices',polices)
setCheckFun(data.records)
total.value = data.total;
loading.value = false
@ -195,11 +191,11 @@ function getList() {
const setCheckFun =(row)=>{
console.log('checkPolices.value',checkPolices.value)
row.forEach((s)=>{
let data =checkPolices.value.find(x=>
x.empNo === s.empNo
)
if(data){
nextTick(()=>{
ableRef.value.toggleRowSelection(s, true);
@ -212,7 +208,12 @@ const setCheckFun =(row)=>{
const checkPolices = ref([]);
const checkPolicesMap =ref([])
function selectionChange(selectionRows) {
if(checkPolicesMap.value['key-0']){
//dataselect
const {intersection, filteredSource} = processIntersection( checkPolicesMap.value['key-0'],selectionRows,'empNo')
checkPolicesMap.value['key-0']=filteredSource;
checkPolicesMap.value['key'+query.value.current] = intersection;
}
if( checkPolicesMap.value['key'+query.value.current]){
let data = checkPolicesMap.value['key'+query.value.current];
@ -227,6 +228,22 @@ function selectionChange(selectionRows) {
}
/**
* 获取两个对象数组的交集并从源数组中剔除交集数据
* @param {Array} sourceArr 源数组需要剔除交集的数组
* @param {Array} targetArr 目标数组
* @param {String} key 比较的键名默认'id'
* @returns {Object} { intersection: 交集数组, filteredSource: 剔除后的源数组 }
*/
const processIntersection = (sourceArr, targetArr, key = 'id') => {
//
const targetKeys = new Set(targetArr.map(item => item[key]));
const intersection = sourceArr.filter(item => targetKeys.has(item[key]));
//
const filteredSource = sourceArr.filter(item => !targetKeys.has(item[key]));
return { intersection, filteredSource };
}
const getCheckData = (data,selectionRows) =>{
selectionRows.forEach(item => {
@ -263,8 +280,23 @@ function submit() {
emit('update:modelValue', checkPolices.value)
show.value = false
}
watch(()=>props.modelValue,()=>{
watch(() => props.departId, (val) => {
query.value.departId = val;
getList()
})
watch(() => show.value, (val) => {
if(val){
setCheckFun(polices.value)
}
})
watch(()=>props.modelValue,(val)=>{
checkPolices.value=props.modelValue
if(val){
checkPolicesMap.value['key-0']=getCheckData(val,props.modelValue);
if(polices.value){
setCheckFun(polices.value)
}
}
},{deep:true,immediate:true})

6
src/views/books/Audit.vue

@ -329,6 +329,12 @@ function reset() {
getList();
function handleExport() {
if(query.value.discoveryTime == null){
delete query.value.discoveryTime;
}
if(query.value.crtTime== null){
delete query.value.crtTime;
}
window.open(
`${BASE_PATH}/negative/books/export/audit?` +
new URLSearchParams(query.value).toString()

163
src/views/rightsComfort/Rights.vue

@ -30,10 +30,25 @@
<depart-tree-select v-model="query.departId" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="案件类别">
<el-input v-model="query.caseCategory" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="侵权形式">
<el-select v-model="query.caseType" clearable >
<!-- row.caseType =='1'?'刑事案件':'民事案件'-->
<el-option label="刑事案件" value="1"></el-option>
<el-option label="民事案件" value="2"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="flex end">
<div>
<el-button type="primary" @click="handleExport">数据导出</el-button>
<el-button type="primary" @click="getList">
<template #icon>
<icon name="el-icon-Search" />
@ -45,7 +60,7 @@
</div>
</header>
<div class="table-container">
<el-table :data="list">
<el-table :data="list" v-loading="loading">
<el-table-column
label="申请人姓名"
prop="applicantEmpName"
@ -56,6 +71,25 @@
prop="applicantEmpNo"
width="100"
/>
<el-table-column
label="申请时间"
prop="applyDate"
width="160"
></el-table-column>
<el-table-column
label="侵权形式"
prop="caseType"
width="120"
>
<template #default="{row}">
{{row.caseType =='1'?'刑事案件':'民事案件'}}
</template>
</el-table-column>
<el-table-column
label="案件类别"
prop="caseCategory"
width="120"
></el-table-column>
<el-table-column
label="事发时间"
prop="happenTime"
@ -103,39 +137,77 @@
</div>
</div>
说明维权记录展示各单位申请的维权记录
<el-dialog title="维权详情" v-model="show" width="50vw">
<el-dialog title="维权详情" v-model="show" width="50vw" @close="closeDialog">
<div class="dialog-container">
<div class="row mt-10">
<div class="col col-12">
<label>申请人姓名</label>
<span>{{ activeRow.applicantEmpName }}</span>
</div>
<div class="col col-12">
<label>申请人警号</label>
<span>{{ activeRow.applicantEmpNo }}</span>
</div>
<div class="col col-12">
<label>事发时间</label>
<span>{{ activeRow.happenTime }}</span>
</div>
<div class="col col-12">
<label>案件编号</label>
<span>{{ activeRow.caseNumber || '/' }}</span>
</div>
<div class="col col-12">
<label>状态</label>
<span>{{
getDictLable(
<el-row>
<el-col :span="12">
<el-form-item label="申请人姓名">
{{ activeRow.applicantEmpName }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="申请人警号">
{{ activeRow.applicantEmpNo }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="事发时间">
{{ activeRow.happenTime }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="案件编号">
{{ activeRow.caseNumber || '/' }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="案件编号">
{{ getDictLable(
dict.comfortStatus,
activeRow.rpcStatus
)
}}</span>
) }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="案件经过">
{{ activeRow.factReason}}
</el-form-item>
</el-col>
</el-row>
<div v-if="activeRow.Infringers.length !== 0">
<hr color="#cccdd1" style="height: 1px;border: 0px"/>
<div class="flex v-center" style="height:20px;">
<h5>嫌疑人信息</h5>
</div>
<div v-for="(infringer,key) in activeRow.Infringers">
<div class="flex v-center" style="height:30px;">
<h5>嫌疑人{{key + 1}}</h5>
</div>
<div class="row mt-10" style="margin-bottom: 60px">
<div class="col col-24">
<label>案件经过</label>
<span>{{ activeRow.factReason }}</span>
<el-row>
<el-col :span="12">
<el-form-item label="姓名">
{{infringer.tortName}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证号">
{{infringer.idCode}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="性别">
{{infringer.gender}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="打击处理情况">
{{ infringer.defendHandleWayName}}
</el-form-item>
</el-col>
</el-row>
</div>
</div>
</div>
@ -144,17 +216,18 @@
</template>
<script setup>
import moment from "moment";
import { listRights,delRights } from "@/api/rightsComfort/rights";
import { listRights,delRights,getInfringerData } from "@/api/rightsComfort/rights";
import { delComfort } from "@/api/rightsComfort/comfort";
import { listPolice } from "@/api/system/police";
import { getDictLable } from "@/utils/util";
import feedback from "@/utils/feedback";
import {BASE_PATH} from "@/api/request";
import useCatchStore from "@/stores/modules/catch";
const catchStore = useCatchStore();
const dict = catchStore.getDicts([
"comfortStatus"
"comfortStatus","situation"
]);
const list = ref([]);
@ -164,11 +237,20 @@ const query = ref({
code:'2'
});
const total = ref(0);
const loading = ref(false);
function getList() {
try{
loading.value=true;
listRights(query.value).then((data) => {
list.value = data.records;
total.value = data.total;
});
}catch (e){
console.log('e',e)
}finally {
loading.value=false;
}
}
function reset() {
@ -198,10 +280,27 @@ const handleDelete = async (row) => {
getList();
};
const closeDialog=()=>{
show.value=false
}
/**
* 导出数据
* */
function handleExport() {
window.open(`${BASE_PATH}/rights/export/result?` + new URLSearchParams(query.value).toString())
}
const activeRow = ref({})
const show = ref(false)
const handleDetail = (row) => {
const handleDetail =async (row) => {
activeRow.value = row
const res = await getInfringerData(row.rpcId)
console.log('res',res)
if(res){
activeRow.value.Infringers= res;
}
show.value = true
};
</script>

Loading…
Cancel
Save