优化案件判读和案件列表

ly
刘妍 2 years ago
parent 041729bd1e
commit 6aa52ce102

@ -6,6 +6,8 @@ import {
droneCaseDealModel,
droneCaseDealParams,
picListTaskParams,
caseInfoParams,
caseInfoModel,
} from './model/index';
enum Api {
@ -52,8 +54,8 @@ export function getCaseInfo(params?: caseFlowLogParams) {
/**
* @description: getCaseFlowLog
*/
export function getCaseInfoList(params?: caseFlowLogParams) {
return defHttp.get<flowLogModel>({ url: Api.LoadCaseInfoList, params });
export function getCaseInfoList(params?: caseInfoParams) {
return defHttp.get<caseInfoModel>({ url: Api.LoadCaseInfoList, params });
}
/**
* @description: getCaseFlowLog

@ -37,3 +37,18 @@ export interface picListTaskParams {
beginDate?: string;
endDate?: string;
}
export interface caseInfoParams {
page?: number;
limit?: number;
is_intact?: number;
handle_status_id?: string;
identification_user?: string;
identification_time?: string;
key?: string;
orgId?: string;
}
export type caseInfoModel = {
items: any[];
total: number;
};

@ -55,9 +55,9 @@
showTableSetting: true,
bordered: true,
showIndexColumn: false,
rowSelection: {
type: 'checkbox',
},
// rowSelection: {
// type: 'checkbox',
// },
handleSearchInfoFn(info) {
return info;
},

@ -94,6 +94,17 @@ export const columns: BasicColumn[] = [
},
];
export const searchFormSchema: FormSchema[] = [
{
defaultValue: 1,
field: 'is_dealer',
component: 'Input',
label: '案件编号',
colProps: { span: 4 },
componentProps: {
placeholder: '案件编号',
},
ifShow: false,
},
{
field: 'is_drawback',
component: 'Select',

@ -34,6 +34,7 @@
<source :src="item.sources[0].src" type="video/mp4" />
</video>
</div>
<div v-else></div>
</a-descriptions-item>
</a-descriptions>
</template>

@ -15,14 +15,16 @@
</a-descriptions-item>
<a-descriptions-item label="合法举证材料">
<div>
<div v-if="evidenceFile.length > 0">
<ImagePreview :imageList="evidenceFile" />
</div>
<div v-else></div>
</a-descriptions-item>
<a-descriptions-item label="勘测定界图">
<div>
<div v-if="boundaryImage.length > 0">
<ImagePreview :imageList="boundaryImage" />
</div>
<div v-else></div>
</a-descriptions-item>
</a-descriptions>
</template>

@ -167,9 +167,10 @@
</a-descriptions-item>
<a-descriptions-item label="现场照片">
<div>
<div v-if="threadImage.length > 0">
<ImagePreview :imageList="threadImage" />
</div>
<div v-else></div>
</a-descriptions-item>
<a-descriptions-item label="现场视频">
<div v-if="playerOptions.length > 0">
@ -196,6 +197,7 @@
<source :src="item.sources[0].src" type="video/mp4" />
</video>
</div>
<div v-else></div>
</a-descriptions-item>
</a-descriptions>
</template>

@ -18,14 +18,16 @@
</a-descriptions-item>
<a-descriptions-item label="处罚通知书">
<div>
<div v-if="punishImage.length > 0">
<ImagePreview :imageList="punishImage" />
</div>
<div v-else></div>
</a-descriptions-item>
<a-descriptions-item label="交款通知单">
<div>
<div v-if="paymentImage.length > 0">
<ImagePreview :imageList="paymentImage" />
</div>
<div v-else></div>
</a-descriptions-item>
</a-descriptions>
</template>
@ -67,7 +69,7 @@
caseHandleInfo.value = props.data;
caseConductInfo.value = props.data.info;
paymentImage.value = props.paymentImageList;
punishImage.value = props.paymentImageList;
punishImage.value = props.punishImageList;
watch(
() => props.data,
@ -75,7 +77,7 @@
caseHandleInfo.value = newVal;
caseConductInfo.value = newVal.info;
paymentImage.value = props.paymentImageList;
punishImage.value = props.paymentImageList;
punishImage.value = props.punishImageList;
},
);
</script>

@ -31,9 +31,10 @@
<a-descriptions-item label="案件描述">{{ caseDetail.case_description }}</a-descriptions-item>
<a-descriptions-item label="案件图片">
<div>
<div v-if="imgList.length > 0">
<ImagePreview :imageList="imgList" />
</div>
<div v-else></div>
</a-descriptions-item>
</a-descriptions>
</template>

@ -6,14 +6,16 @@
</a-descriptions-item>
<a-descriptions-item label="政府统一完善手续证明">
<div>
<div v-if="agreeImage.length > 0">
<ImagePreview :imageList="agreeImage" />
</div>
<div v-else></div>
</a-descriptions-item>
<a-descriptions-item label="办理手续照片">
<div>
<div v-if="checkoutImage.length > 0">
<ImagePreview :imageList="checkoutImage" />
</div>
<div v-else></div>
</a-descriptions-item>
<a-descriptions-item label="手续有效期">
@ -27,9 +29,10 @@
</a-descriptions-item>
<a-descriptions-item label="勘测定界图">
<div>
<div v-if="boundaryImage.length > 0">
<ImagePreview :imageList="boundaryImage" />
</div>
<div v-else></div>
</a-descriptions-item>
</a-descriptions>
</template>

@ -1,46 +1,50 @@
<template>
<div class="interpretation-box">
<InterpretMap :interpretData="interpretData" @setArea="setArea"></InterpretMap>
<InterpretMap :interpretData="interpretData" @setArea="setArea" />
<div :class="prefixCls" v-if="disabledType">
<div :class="`${prefixCls}__top`">
<a-form ref="formRef" :model="listQuery" labelAlign="left">
<a-form-item placeholder="状态">
<a-form-item label="案件状态" placeholder="状态">
<a-select
v-model:value="listQuery.is_intact"
placeholder="请选择"
:options="data.intactDatas"
:field-names="{ label: 'name', value: 'id' }"
>
</a-select>
:allow-clear="true"
/>
</a-form-item>
<a-form-item placeholder="办理状态">
<a-form-item label="办理状态">
<a-select
v-model:value="listQuery.handle_status_id"
placeholder="请选择"
:options="data.handleDealOptions"
:field-names="{ label: 'name', value: 'id' }"
>
</a-select>
:allow-clear="true"
/>
</a-form-item>
<a-form-item placeholder="办理状态">
<a-form-item label="查询地区">
<a-tree-select
v-model:value="value"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
v-model:value="listQuery.orgId"
:dropdown-style="{ maxHeight: '400px', width: '600px', overflow: 'auto' }"
:tree-data="data.OrgList"
:field-names="{ label: 'name', value: 'id' }"
placeholder="查询地区"
:allow-clear="true"
/>
</a-form-item>
<a-form-item>
<a-input v-model:value="listQuery.key" placeholder="请输入关键字" />
<a-form-item label="关 键 字 ">
<a-input v-model:value="listQuery.key" placeholder="请输入关键字" :allow-clear="true" />
</a-form-item>
<a-form-item>
<a-input v-model:value="listQuery.identification_user" placeholder="判读人姓名" />
<a-form-item label="姓名">
<a-input
v-model:value="listQuery.identification_user"
placeholder="判读人姓名"
:allow-clear="true"
/>
</a-form-item>
<a-form-item class="btn_item">
<a-button @click="getList">
<template #icon><SearchOutlined /></template>
</a-button>
<a-button type="primary" @click="getList"></a-button>
<a-button>
<template #icon><VerticalAlignBottomOutlined /></template>
</a-button>
@ -55,7 +59,11 @@
<List.Item class="list">
<List.Item.Meta>
<template #avatar>
<a-image :width="60" :src="uploadUrl + '/' + item.case_pic_list[0]" />
<a-image
:width="60"
:height="80"
:src="uploadUrl + '/' + item.case_pic_list[0]"
/>
</template>
<template #title>
<span>{{ item.case_description }}</span>
@ -90,14 +98,10 @@
</template>
<a-tabs v-model:activeKey="activeKey">
<a-tab-pane key="1" tab="案件判读">
<Interpret
ref="interpretRef"
:interpretData="interpretData"
@close="changeType"
></Interpret>
<Interpret ref="interpretRef" :interpretData="interpretData" @close="changeType" />
</a-tab-pane>
<a-tab-pane key="2" tab="案件处理">
<Dispose :id="interpretData.id"></Dispose>
<Dispose :id="interpretData.id" />
</a-tab-pane>
</a-tabs>
</CollapseContainer>
@ -106,23 +110,40 @@
</template>
<script setup lang="ts">
import { ref, reactive, onMounted } from 'vue';
import { Progress, Row, Col, List, Tag, Tabs } from 'ant-design-vue';
import Icon from '@/components/Icon/Icon.vue';
import { List } from 'ant-design-vue';
import { CollapseContainer } from '@/components/Container';
import { SearchOutlined } from '@ant-design/icons-vue';
import { VerticalAlignBottomOutlined, CloseOutlined } from '@ant-design/icons-vue';
import { BasicForm } from '@/components/Form';
import MapboxMaps from '@/components/MapboxMaps/index.vue';
import {
VerticalAlignBottomOutlined,
CloseOutlined,
SearchOutlined,
} from '@ant-design/icons-vue';
import { getCaseInfoList } from '@/api/monitor/index';
import { Interpret, Dispose, InterpretMap } from '../index';
import { getDeptList } from '@/api/demo/system';
import { useGlobSetting } from '@/hooks/setting';
const { uploadUrl } = useGlobSetting();
const disabledType = ref(true);
const prefixCls = 'list-basic';
const activeKey = ref('1');
const interpretData = ref({});
const interpretRef = ref();
interface listParam {
page?: number;
limit?: number;
is_intact?: number;
handle_status_id?: string;
identification_user?: string;
identification_time?: string;
key?: string;
orgId?: string;
}
type dataModel = {
dataList: any;
OrgList: any[];
handleDealOptions: any[];
intactDatas: any[];
};
const pagination = ref({
onChange: (page: number) => {
console.log(page);
@ -132,12 +153,12 @@
pageSize: 5,
total: 0,
});
const listQuery = ref({
const listQuery = ref<listParam>({
page: 1,
limit: 5,
is_intact: 0,
});
const data = reactive({
const data = reactive<dataModel>({
OrgList: [],
handleDealOptions: [
{ id: 0, name: '未办理' },
@ -156,24 +177,6 @@
const obj = await getDeptList();
data.OrgList = obj;
}
const mapOptions = {
center: [117.84714891969796, 35.22152309532066],
zoom: 10,
};
const detailMap = ref();
const mapBox = ref();
const mapOnLoad = (map) => {
mapBox.value = map;
//
const testSource =
'http://123.132.248.154:9205/geoserver/gwc/service/tms/1.0.0/TEST_WORK_SPACE%3Alindi@EPSG:900913@pbf/{z}/{x}/{y}.pbf';
map.U.addVector('name', testSource);
map.U.addLineLayer('ffff', {
source: 'name',
'source-layer': 'lindi',
});
detailMap.value = map;
};
async function getList() {
const obj = await getCaseInfoList(listQuery.value);
console.log(obj);
@ -220,20 +223,20 @@
position: absolute;
top: 12px;
left: 25px;
width: 30%;
height: 90vh;
width: 34%;
height: 70vh;
&__top {
padding: 10px;
background-color: @component-background;
text-align: center;
height: 10vh;
height: 16vh;
.clear {
clear: both;
}
}
&__content {
height: 76vh;
height: 68vh;
overflow: auto;
margin-top: 12px;
padding: 10px 0;
@ -255,17 +258,29 @@
display: flex;
flex-direction: column;
}
.ant-list {
height: 100%;
}
::v-deep .ant-spin-nested-loading {
height: 90%;
}
}
}
::v-deep .ant-form {
.ant-form-item {
float: left;
margin-bottom: 4px;
margin-bottom: 6px;
margin-left: 4px;
width: 30%;
width: 48%;
button {
margin-right: 10px;
}
.ant-form-item-label {
width: 70px;
}
.ant-select-selector {
text-align: left;
}
}
}
</style>

@ -322,7 +322,7 @@
padding: 10px 10%;
display: flex;
align-items: center;
justify-content: space-around;
justify-content: center;
position: absolute;
bottom: 0px;
left: 0;

@ -51,6 +51,7 @@
type: 'radio',
},
useSearchForm: true,
showIndexColumn: false,
showTableSetting: true,
bordered: true,
handleSearchInfoFn(info) {

@ -49,6 +49,7 @@
type: 'radio',
},
useSearchForm: true,
showIndexColumn: false,
showTableSetting: true,
bordered: true,
handleSearchInfoFn(info) {

@ -4,6 +4,7 @@
"compilerOptions": {
"baseUrl": ".",
"declaration": false,
"noUnusedLocals":false,
"types": ["vite/client","node"],
"paths": {
"@/*": ["src/*"],

Loading…
Cancel
Save