merge
parent
773f26f239
commit
7a6d421fa5
|
|
@ -107,4 +107,27 @@ export interface NoticeListItem {
|
|||
case_no:string;
|
||||
caseid:string;
|
||||
is_read:number;
|
||||
}
|
||||
}
|
||||
|
||||
export interface UserListParams{
|
||||
key:string;
|
||||
page:number;
|
||||
limit:number;
|
||||
}
|
||||
export interface UserListItem{
|
||||
account:string;
|
||||
name:string;
|
||||
id:string;
|
||||
}
|
||||
|
||||
export type UserListGetResultModel = BasicFetchResult<UserListItem>;
|
||||
|
||||
export interface StatisticalListItem{
|
||||
account:string;
|
||||
name:string;
|
||||
id:string;
|
||||
}
|
||||
|
||||
export type StatisticalListGetResultModel = BasicFetchResult<StatisticalListItem>;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,10 @@ import {
|
|||
addDept,
|
||||
ReportParams,
|
||||
ReportListGetResultModel,
|
||||
NoticeListGetResultModel
|
||||
NoticeListGetResultModel,
|
||||
UserListParams,
|
||||
UserListGetResultModel,
|
||||
StatisticalListGetResultModel,
|
||||
} from './model/systemModel';
|
||||
import { defHttp } from '@/utils/http/axios';
|
||||
|
||||
|
|
@ -60,6 +63,11 @@ enum Api {
|
|||
UpdatePosition = '/api/SysPosition/Update',
|
||||
ReportList = '/api/DroneCaseinfo/LoadCaseInfoList',
|
||||
NoticeList = '/api/DroneCaseinfo/LoadMessageList',
|
||||
AddNotice = '/api/DroneCaseinfo/AddMessage',
|
||||
UpdateNotice = '/api/DroneCaseinfo/UpdateMessage',
|
||||
DeleteNotice = '/api/DroneCaseinfo/UpdateDelMessage',
|
||||
UserList = '/api/users/load',
|
||||
StatisticalList='/api/DroneCaseinfo/CaseSynthesisCensus',
|
||||
}
|
||||
|
||||
export const getPositionsTree = (params?: AccountParams) =>
|
||||
|
|
@ -302,6 +310,40 @@ export const getReportList = (params: ReportParams)=>
|
|||
defHttp.get<ReportListGetResultModel>({ url: Api.ReportList, params });
|
||||
|
||||
|
||||
export const getStatisticalList = (params: ReportParams)=>
|
||||
defHttp.get<StatisticalListGetResultModel>({ url: Api.StatisticalList, params });
|
||||
|
||||
export const getNoticeList = (params?:Object) =>
|
||||
defHttp.get<NoticeListGetResultModel>({url:Api.NoticeList,params})
|
||||
|
||||
export function addNotice(params) {
|
||||
return defHttp.post(
|
||||
{
|
||||
url: Api.AddNotice,
|
||||
params,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
export function updateNotice(params) {
|
||||
return defHttp.post(
|
||||
{
|
||||
url: Api.UpdateNotice,
|
||||
params,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
export function deleteNotice(params) {
|
||||
return defHttp.post(
|
||||
{
|
||||
url: Api.DeleteNotice,
|
||||
params,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
export const getUserList = (params: UserListParams)=>
|
||||
defHttp.get<UserListGetResultModel>({ url: Api.UserList, params });
|
||||
|
|
|
|||
|
|
@ -1,19 +1,23 @@
|
|||
<template>
|
||||
<BasicModal v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit">
|
||||
<BasicForm @register="registerForm" />
|
||||
|
||||
<BasicForm @register="registerForm" >
|
||||
|
||||
</BasicForm>
|
||||
</BasicModal>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { ref, computed, unref } from 'vue';
|
||||
import { ref, computed, unref, reactive } from 'vue';
|
||||
import { BasicModal, useModalInner } from '@/components/Modal';
|
||||
import { BasicForm, useForm } from '@/components/Form';
|
||||
import { formSchema } from './dept.data';
|
||||
|
||||
import { getDeptList, addDept, updateDept } from '@/api/demo/system';
|
||||
import { formSchema,UserListParams } from './dept.data';
|
||||
|
||||
import { getDeptList, addNotice, updateNotice,getUserList, getRoleListByPage } from '@/api/demo/system';
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
const { createMessage } = useMessage();
|
||||
defineOptions({ name: 'DeptModal' });
|
||||
|
||||
|
||||
const emit = defineEmits(['success', 'register']);
|
||||
|
||||
const isUpdate = ref(true);
|
||||
|
|
@ -34,11 +38,32 @@
|
|||
...data.record,
|
||||
});
|
||||
}
|
||||
const treeData = await getDeptList();
|
||||
|
||||
|
||||
const roleList = await getRoleListByPage()
|
||||
updateSchema({
|
||||
field: 'parentId',
|
||||
field: 'roles',
|
||||
componentProps: {
|
||||
options:roleList.items
|
||||
},
|
||||
});
|
||||
|
||||
const query:UserListParams = {key:"",page:1,limit:999};
|
||||
const userList = await getUserList(query);
|
||||
updateSchema({
|
||||
field: 'recipientUserId',
|
||||
componentProps: {
|
||||
options:userList.items
|
||||
},
|
||||
});
|
||||
|
||||
const treeData = await getDeptList();
|
||||
|
||||
updateSchema({
|
||||
field: 'orgs',
|
||||
componentProps: { treeData },
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
const getTitle = computed(() => (!unref(isUpdate) ? '新增通知' : '编辑通知'));
|
||||
|
|
@ -49,7 +74,7 @@
|
|||
let query = values;
|
||||
// 调用接口
|
||||
if (!unref(isUpdate)) {
|
||||
const data = await addDept(query);
|
||||
const data = await addNotice(query);
|
||||
if (data) {
|
||||
setModalProps({ confirmLoading: true });
|
||||
closeModal();
|
||||
|
|
@ -59,7 +84,7 @@
|
|||
return createMessage.error('新增失败');
|
||||
}
|
||||
} else {
|
||||
const data = await updateDept(query);
|
||||
const data = await updateNotice(query);
|
||||
if (data) {
|
||||
setModalProps({ confirmLoading: true });
|
||||
closeModal();
|
||||
|
|
@ -73,4 +98,8 @@
|
|||
setModalProps({ confirmLoading: false });
|
||||
}
|
||||
}
|
||||
|
||||
// function handleRoleOptions(){
|
||||
|
||||
// }
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -22,8 +22,7 @@ export const columns: BasicColumn[] = [
|
|||
},
|
||||
// {
|
||||
// title: '操作',
|
||||
// dataIndex: 'createTime',
|
||||
// width: 180,
|
||||
// dataIndex: 'operate',
|
||||
// },
|
||||
// {
|
||||
// title: '备注',
|
||||
|
|
@ -59,6 +58,11 @@ export const searchFormSchema: FormSchema[] = [
|
|||
},
|
||||
}
|
||||
];
|
||||
export interface UserListParams{
|
||||
key:string;
|
||||
page:number;
|
||||
limit:number;
|
||||
}
|
||||
export const formGroupSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'posGroupId',
|
||||
|
|
@ -79,13 +83,13 @@ export const formGroupSchema: FormSchema[] = [
|
|||
|
||||
export const formSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'id',
|
||||
field: 'Id',
|
||||
label: '名称',
|
||||
component: 'Input',
|
||||
ifShow:false
|
||||
},
|
||||
{
|
||||
field: 'name',
|
||||
field: 'msg_title',
|
||||
label: '通知标题',
|
||||
component: 'Input',
|
||||
required: true,
|
||||
|
|
@ -120,15 +124,61 @@ export const formSchema: FormSchema[] = [
|
|||
],
|
||||
},
|
||||
required: true,
|
||||
},{
|
||||
field: 'is_all',
|
||||
label: '是否全选',
|
||||
component: 'RadioButtonGroup',
|
||||
defaultValue: 0,
|
||||
componentProps: {
|
||||
options: [
|
||||
{ label: '否', value: 0 },
|
||||
{ label: '是', value: 1 },
|
||||
],
|
||||
},
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
field: 'parentId',
|
||||
field: 'roles',
|
||||
component: 'Select',
|
||||
label: '选择角色',
|
||||
colProps: {
|
||||
span: 24,
|
||||
},
|
||||
componentProps: {
|
||||
mode:"multiple",
|
||||
fieldNames: {
|
||||
label: 'name',
|
||||
value: 'id',
|
||||
},
|
||||
options: [], // defalut []
|
||||
placeholder: '请选择角色',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'recipientUserId',
|
||||
component: 'Select',
|
||||
label: '选择用户',
|
||||
colProps: {
|
||||
span: 24,
|
||||
},
|
||||
componentProps: {
|
||||
mode:"multiple",
|
||||
fieldNames: {
|
||||
label: 'name',
|
||||
value: 'id',
|
||||
},
|
||||
options: [], // defalut []
|
||||
placeholder: '请选择用户',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'orgs',
|
||||
label: '选择部门',
|
||||
component: 'TreeSelect',
|
||||
componentProps: {
|
||||
treeCheckable:true,
|
||||
fieldNames: {
|
||||
label: 'name',
|
||||
key: 'id',
|
||||
value: 'id',
|
||||
},
|
||||
onChange:(value)=>{
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
import { reactive, ref } from 'vue';
|
||||
|
||||
import { BasicTable, useTable } from '@/components/Table';
|
||||
import { getNoticeList, deleteDept } from '@/api/demo/system';
|
||||
import { getNoticeList, deleteNotice } from '@/api/demo/system';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import { useModal } from '@/components/Modal';
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
|
|
@ -67,6 +67,9 @@
|
|||
}
|
||||
const childRef = ref<any>();
|
||||
|
||||
function handlePreViewData(){
|
||||
|
||||
}
|
||||
function handleCreate() {
|
||||
openDeptModal(true, {
|
||||
isUpdate: false,
|
||||
|
|
@ -87,16 +90,21 @@
|
|||
|
||||
async function handleDelete() {
|
||||
let rows = getSelectRows();
|
||||
|
||||
if (rows.length == 0) {
|
||||
return createMessage.warn('请选择一个部门进行删除');
|
||||
return createMessage.warn('请选择一条通知进行删除');
|
||||
}
|
||||
const query = [rows[0].id];
|
||||
const query = [];
|
||||
rows.forEach((item,index)=>{
|
||||
query.push(item.Id);
|
||||
})
|
||||
|
||||
createConfirm({
|
||||
iconType: 'info',
|
||||
title: '删除',
|
||||
content: '确定要删除当前部门吗',
|
||||
content: '确定要删除当前通知吗',
|
||||
onOk: async () => {
|
||||
const data = await deleteDept(query);
|
||||
const data = await deleteNotice(query);
|
||||
if (data) {
|
||||
handleSuccess();
|
||||
return createMessage.success('删除成功');
|
||||
|
|
@ -130,7 +138,7 @@
|
|||
}
|
||||
function handleSuccess() {
|
||||
clearSelectedRowKeys();
|
||||
childRef.value.fetch();
|
||||
// childRef.value.fetch();
|
||||
reload();
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,440 @@
|
|||
<template>
|
||||
<div class="case-view">
|
||||
<div class="case-view_step">
|
||||
<a-steps
|
||||
v-model:current="current"
|
||||
type="navigation"
|
||||
size="small"
|
||||
:style="stepStyle"
|
||||
>
|
||||
<a-step
|
||||
v-for="(item, index) in flowLog"
|
||||
:key="index"
|
||||
:title="item.name"
|
||||
:status="item.state"
|
||||
:disabled="item.status == 0 ? true : false"
|
||||
/>
|
||||
</a-steps>
|
||||
</div>
|
||||
<div class="case-view_content">
|
||||
<div class="file-box w-1/2 xl:w-1/2" v-if="caseHandleInfo">
|
||||
<CollapseContainer
|
||||
title="【案件下发信息】"
|
||||
:canExpan="false"
|
||||
v-if="current == 0 || current == 4"
|
||||
>
|
||||
<Issue :data="detailData"></Issue>
|
||||
</CollapseContainer>
|
||||
|
||||
<CollapseContainer
|
||||
title="【案件核查信息】"
|
||||
:canExpan="false"
|
||||
v-if="current == 1 || current == 4"
|
||||
>
|
||||
<Inspect
|
||||
:data="caseHandleInfo"
|
||||
:playerOptions="playerOptions"
|
||||
:threadImageList="threadImageList"
|
||||
></Inspect>
|
||||
</CollapseContainer>
|
||||
|
||||
<CollapseContainer
|
||||
title="【案件办理信息-合法举证】"
|
||||
:canExpan="false"
|
||||
v-if="
|
||||
(caseHandleInfo.is_illegal == '合法' && current == 2) ||
|
||||
(caseHandleInfo.is_illegal == '合法' && current == 4)
|
||||
"
|
||||
>
|
||||
<Evidence
|
||||
:data="caseHandleInfo"
|
||||
:evidenceFileList="evidenceFileList"
|
||||
:boundaryImageList="boundaryImageList"
|
||||
></Evidence>
|
||||
</CollapseContainer>
|
||||
|
||||
<CollapseContainer
|
||||
title="【案件办理信息-伪变化】"
|
||||
:canExpan="false"
|
||||
v-if="
|
||||
(caseHandleInfo.is_illegal == '伪变化' && current == 2) ||
|
||||
(caseHandleInfo.is_illegal == '伪变化' && current == 4)
|
||||
"
|
||||
>
|
||||
<div> 伪变化没有案件办理信息 </div>
|
||||
</CollapseContainer>
|
||||
|
||||
<CollapseContainer
|
||||
title="【案件办理信息-违法-拟拆除】"
|
||||
:canExpan="false"
|
||||
v-if="
|
||||
(caseHandleInfo.is_illegal == '违法' &&
|
||||
caseHandleInfo.info.measure_name == '拟拆除' &&
|
||||
current == 2) ||
|
||||
(caseHandleInfo.is_illegal == '违法' &&
|
||||
caseHandleInfo.info.measure_name == '拟拆除' &&
|
||||
current == 4)
|
||||
"
|
||||
>
|
||||
<Dismantle :data="caseHandleInfo" :videoOptions="videoOptions"></Dismantle>
|
||||
</CollapseContainer>
|
||||
|
||||
<CollapseContainer
|
||||
title="【案件办理信息-违法-查处】"
|
||||
:canExpan="false"
|
||||
v-if="
|
||||
(caseHandleInfo.is_illegal == '违法' &&
|
||||
caseHandleInfo.info.measure_name == '查处' &&
|
||||
current == 2) ||
|
||||
(caseHandleInfo.is_illegal == '违法' &&
|
||||
caseHandleInfo.info.measure_name == '查处' &&
|
||||
current == 4)
|
||||
"
|
||||
>
|
||||
<Investigate
|
||||
:data="caseHandleInfo"
|
||||
:paymentImageList="paymentImageList"
|
||||
:punishImageList="punishImageList"
|
||||
></Investigate>
|
||||
</CollapseContainer>
|
||||
|
||||
<CollapseContainer
|
||||
title="【案件办理信息-违法-拟完善手续】"
|
||||
:canExpan="false"
|
||||
v-if="
|
||||
(caseHandleInfo.is_illegal == '违法' &&
|
||||
caseHandleInfo.info.measure_name == '拟完善手续' &&
|
||||
current == 2) ||
|
||||
(caseHandleInfo.is_illegal == '违法' &&
|
||||
caseHandleInfo.info.measure_name == '拟完善手续' &&
|
||||
current == 4)
|
||||
"
|
||||
>
|
||||
<Procedure
|
||||
:data="caseHandleInfo"
|
||||
:agreeImageList="agreeImageList"
|
||||
:checkoutImageList="checkoutImageList"
|
||||
:boundaryImageList="boundaryImageList"
|
||||
></Procedure>
|
||||
</CollapseContainer>
|
||||
|
||||
<CollapseContainer
|
||||
title="【案件审核信息】"
|
||||
:canExpan="false"
|
||||
v-if="current == 3 || current == 4"
|
||||
>
|
||||
<Audit :data="flowLog[3]"></Audit>
|
||||
</CollapseContainer>
|
||||
|
||||
<CollapseContainer
|
||||
title="【案件退回描述】"
|
||||
:canExpan="false"
|
||||
v-if="detailData.is_drawback == 1"
|
||||
>
|
||||
<a-descriptions bordered :column="2" size="small" :labelStyle="labelStyle">
|
||||
<a-descriptions-item label="退回描述">
|
||||
{{ detailData.drawback_description }}
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</CollapseContainer>
|
||||
</div>
|
||||
<CollapseContainer title="地图位置" :canExpan="false" class="map-box ml-1 w-1/2 xl:w-1/2">
|
||||
<MapDetail :ruleForm="detailData" :isOnce="true"></MapDetail>
|
||||
</CollapseContainer>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
// 已归档 202205020912205393
|
||||
// 拟拆除 202404181541067344
|
||||
import { ref, onMounted, reactive, watch } from 'vue';
|
||||
import { getCaseFlowLog, getCaseInfo, getDroneCaseDeal } from '@/api/monitor/index';
|
||||
import { fileListModel, fileList } from '@/api/monitor/model/index';
|
||||
import { CollapseContainer } from '@/components/Container';
|
||||
import {
|
||||
Issue,
|
||||
Inspect,
|
||||
Audit,
|
||||
Dismantle,
|
||||
MapDetail,
|
||||
Evidence,
|
||||
Investigate,
|
||||
Procedure,
|
||||
} from '../index';
|
||||
const BASE_IMAGE_URL = ref('http://192.168.104:9011');
|
||||
const current = ref<number>(0);
|
||||
const stepStyle = ref({
|
||||
marginBottom: '60px',
|
||||
boxShadow: '0px -1px 0 0 #e8e8e8 inset',
|
||||
});
|
||||
const labelStyle = ref({
|
||||
width: '100px',
|
||||
});
|
||||
const props = defineProps({
|
||||
caseId: String,
|
||||
});
|
||||
console.log(props);
|
||||
watch(
|
||||
() => props.caseId,
|
||||
(newVal, oldVal) => {
|
||||
console.log(newVal);
|
||||
getCaseFlowLogData();
|
||||
loadDetailCaseInfo();
|
||||
getCaseHandleInfo();
|
||||
},
|
||||
);
|
||||
const detailData = ref();
|
||||
const caseHandleInfo = ref();
|
||||
const playerOptions = ref();
|
||||
//现场照片
|
||||
const threadImageList = ref<fileListModel>([]);
|
||||
// 整改后、处理后照片
|
||||
const threadAfterImageList = ref<any>([]);
|
||||
// 视频
|
||||
const videoOptions = ref();
|
||||
//合法举证材料列表
|
||||
const evidenceFileList = ref<fileListModel>([]);
|
||||
// 勘测定界图
|
||||
const boundaryImageList = ref<fileListModel>([]);
|
||||
//处罚通知书照片
|
||||
const punishImageList = ref<fileListModel>([]);
|
||||
//交罚款通知书照片
|
||||
const paymentImageList = ref<fileListModel>([]);
|
||||
//政府同意完善手续证明照片
|
||||
const agreeImageList = ref<fileListModel>([]);
|
||||
//办理手续证明照片
|
||||
const checkoutImageList = ref<fileListModel>([]);
|
||||
|
||||
const flowLog = ref();
|
||||
// 获取步骤条数据
|
||||
async function getCaseFlowLogData() {
|
||||
current.value = 0;
|
||||
const data = await getCaseFlowLog({ id: props.caseId });
|
||||
flowLog.value = data;
|
||||
if (flowLog.value.length == 4 && flowLog.value[1].status == 1) {
|
||||
let obj = {
|
||||
name: '伪变化',
|
||||
status: 1,
|
||||
time: '',
|
||||
state: 'finish',
|
||||
user_name: '',
|
||||
};
|
||||
flowLog.value.splice(2, 0, obj);
|
||||
}
|
||||
current.value = 0;
|
||||
flowLog.value.forEach((item, index) => {
|
||||
current.value = current.value + item.status;
|
||||
if (flowLog.value[index].status == 1) {
|
||||
flowLog.value[index].state = 'finish';
|
||||
} else {
|
||||
flowLog.value[index].state = 'wait';
|
||||
}
|
||||
});
|
||||
if (current.value != 0) {
|
||||
current.value--;
|
||||
}
|
||||
}
|
||||
// 获取详情
|
||||
async function loadDetailCaseInfo() {
|
||||
const data = await getCaseInfo({ id: props.caseId });
|
||||
console.log(data);
|
||||
detailData.value = data;
|
||||
}
|
||||
// 获取处理详情
|
||||
async function getCaseHandleInfo() {
|
||||
const data = await getDroneCaseDeal({ caseid: props.caseId });
|
||||
console.log(data);
|
||||
caseHandleInfo.value = data;
|
||||
if (caseHandleInfo.value.is_illegal == 0) {
|
||||
caseHandleInfo.value.is_illegal = '合法';
|
||||
} else if (caseHandleInfo.value.is_illegal == 1) {
|
||||
caseHandleInfo.value.is_illegal = '违法';
|
||||
} else if (caseHandleInfo.value.is_illegal == 2) {
|
||||
caseHandleInfo.value.is_illegal = '伪变化';
|
||||
}
|
||||
// 视频
|
||||
playerOptions.value = [];
|
||||
if (data.video_list.length > 0) {
|
||||
data.video_list.forEach((item, index) => {
|
||||
let options = {
|
||||
playbackRates: [0.5, 1.0, 1.5, 2.0], //可选择的播放速度
|
||||
autoplay: false, //如果true,浏览器准备好时开始回放。
|
||||
muted: false, // 默认情况下将会消除任何音频。
|
||||
loop: false, // 视频一结束就重新开始。
|
||||
preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
|
||||
language: 'zh-CN',
|
||||
aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
|
||||
fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
|
||||
sources: [
|
||||
{
|
||||
type: '',
|
||||
src: BASE_IMAGE_URL + '/' + item, //url地址
|
||||
},
|
||||
],
|
||||
poster: '', //你的封面地址
|
||||
// width: document.documentElement.clientWidth,
|
||||
notSupportedMessage: '此视频暂无法播放,请稍后再试', //允许覆盖Video.js无法播放媒体源时显示的默认信息。
|
||||
controlBar: {
|
||||
timeDivider: true, //当前时间和持续时间的分隔符
|
||||
durationDisplay: true, //显示持续时间
|
||||
remainingTimeDisplay: false, //是否显示剩余时间功能
|
||||
fullscreenToggle: true, //全屏按钮
|
||||
},
|
||||
};
|
||||
playerOptions.value.push(options);
|
||||
});
|
||||
}
|
||||
// 现场照片
|
||||
if (data.pic_info_list.length > 0) {
|
||||
data.pic_info_list.forEach((item) => {
|
||||
threadImageList.value.push(item.filePath);
|
||||
});
|
||||
for (let i = 0; i < threadImageList.value.length; i++) {
|
||||
let obj = {
|
||||
filePath: BASE_IMAGE_URL + '/' + threadImageList.value[i],
|
||||
s_filePath: BASE_IMAGE_URL + '/S_' + threadImageList.value[i],
|
||||
};
|
||||
threadImageList.value[i] = obj;
|
||||
}
|
||||
}
|
||||
|
||||
// 处理后照片 整改后照片 恢复后照片
|
||||
if (data.after_pic_list.length > 0) {
|
||||
threadAfterImageList.value = [];
|
||||
data.after_pic_list.forEach((item: fileList) => {
|
||||
threadAfterImageList.value.push(BASE_IMAGE_URL + '/S_' + item.filePath);
|
||||
});
|
||||
}
|
||||
|
||||
// 处理后视频
|
||||
videoOptions.value = [];
|
||||
if (data.remove_video_list.length > 0) {
|
||||
videoOptions.value = [];
|
||||
data.remove_video_list.forEach((item, index) => {
|
||||
let options = {
|
||||
playbackRates: [0.5, 1.0, 1.5, 2.0], //可选择的播放速度
|
||||
autoplay: false, //如果true,浏览器准备好时开始回放。
|
||||
muted: false, // 默认情况下将会消除任何音频。
|
||||
loop: false, // 视频一结束就重新开始。
|
||||
preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
|
||||
language: 'zh-CN',
|
||||
aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
|
||||
fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
|
||||
sources: [
|
||||
{
|
||||
type: '',
|
||||
src: BASE_IMAGE_URL + '/' + item, //url地址
|
||||
},
|
||||
],
|
||||
poster: '', //你的封面地址
|
||||
// width: document.documentElement.clientWidth,
|
||||
notSupportedMessage: '此视频暂无法播放,请稍后再试', //允许覆盖Video.js无法播放媒体源时显示的默认信息。
|
||||
controlBar: {
|
||||
timeDivider: true, //当前时间和持续时间的分隔符
|
||||
durationDisplay: true, //显示持续时间
|
||||
remainingTimeDisplay: false, //是否显示剩余时间功能
|
||||
fullscreenToggle: true, //全屏按钮
|
||||
},
|
||||
};
|
||||
videoOptions.value.push(options);
|
||||
});
|
||||
}
|
||||
// 合法 - 举证材料合法文件 evidence_file_list
|
||||
if (data.evidence_file_list.length > 0) {
|
||||
evidenceFileList.value = [];
|
||||
data.evidence_file_list.forEach((item: fileList) => {
|
||||
let obj = {
|
||||
filePath: BASE_IMAGE_URL + '/' + item.filePath,
|
||||
s_filePath: BASE_IMAGE_URL + '/' + item.filePath,
|
||||
};
|
||||
evidenceFileList.value.push(obj);
|
||||
});
|
||||
}
|
||||
|
||||
if (data.boundary_pic_list.length > 0) {
|
||||
boundaryImageList.value = [];
|
||||
data.boundary_pic_list.forEach((item) => {
|
||||
let obj = {
|
||||
filePath: BASE_IMAGE_URL + '/' + item,
|
||||
s_filePath: BASE_IMAGE_URL + '/' + item,
|
||||
};
|
||||
boundaryImageList.value.push(obj);
|
||||
});
|
||||
}
|
||||
|
||||
// 违法 查处 - 处罚通知书 punish_pic_list
|
||||
if (data.punish_pic_list.length > 0) {
|
||||
punishImageList.value = [];
|
||||
data.punish_pic_list.forEach((item) => {
|
||||
let obj = {
|
||||
filePath: BASE_IMAGE_URL + '/' + item,
|
||||
s_filePath: BASE_IMAGE_URL + '/S_' + item,
|
||||
};
|
||||
punishImageList.value.push(obj);
|
||||
});
|
||||
}
|
||||
|
||||
// 违法 查处 - 交款通知书 payment_pic_list
|
||||
if (data.payment_pic_list.length > 0) {
|
||||
paymentImageList.value = [];
|
||||
data.payment_pic_list.forEach((item) => {
|
||||
let obj = {
|
||||
filePath: BASE_IMAGE_URL + '/' + item,
|
||||
s_filePath: BASE_IMAGE_URL + '/S_' + item,
|
||||
};
|
||||
paymentImageList.value.push(obj);
|
||||
});
|
||||
}
|
||||
|
||||
// 违法 完善手续 - 政府同意完善手续证明 agree_checkout_pic_list
|
||||
if (data.agree_checkout_pic_list.length > 0) {
|
||||
agreeImageList.value = [];
|
||||
data.agree_checkout_pic_list.forEach((item) => {
|
||||
let obj = {
|
||||
filePath: BASE_IMAGE_URL + '/' + item,
|
||||
s_filePath: BASE_IMAGE_URL + '/S_' + item,
|
||||
};
|
||||
agreeImageList.value.push(obj);
|
||||
});
|
||||
}
|
||||
|
||||
// 违法 完善手续 - 办理手续 checkout_pic_list
|
||||
if (data.checkout_pic_list.length > 0) {
|
||||
checkoutImageList.value = [];
|
||||
data.checkout_pic_list.forEach((item) => {
|
||||
let obj = {
|
||||
filePath: BASE_IMAGE_URL + '/' + item,
|
||||
s_filePath: BASE_IMAGE_URL + '/S_' + item,
|
||||
};
|
||||
checkoutImageList.value.push(obj);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getCaseFlowLogData();
|
||||
loadDetailCaseInfo();
|
||||
getCaseHandleInfo();
|
||||
});
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.case-view {
|
||||
padding: 20px 32px;
|
||||
background-color: @component-background;
|
||||
|
||||
&__step {
|
||||
padding: 24px 40px;
|
||||
background-color: @app-content-background;
|
||||
}
|
||||
&_content {
|
||||
display: flex;
|
||||
height: 65vh;
|
||||
.file-box {
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
.map-box {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
export interface caseDetailObj {
|
||||
case_no?: string;
|
||||
identification_user?: string;
|
||||
identification_time?: string;
|
||||
handle_status_id?: number;
|
||||
handle_status_name?: string;
|
||||
countyname?: string;
|
||||
streetname?: string;
|
||||
communityname?: string;
|
||||
address?: string;
|
||||
lng?: number;
|
||||
lat?: number;
|
||||
area?: number;
|
||||
typename?: string;
|
||||
remark?: string;
|
||||
case_description?: string;
|
||||
}
|
||||
export interface infoObj{
|
||||
createusername?: string;
|
||||
createtime?:string;
|
||||
verifystatusname?:string;
|
||||
measure_name?:string;
|
||||
result_name?: string;
|
||||
contacts_people?: string;
|
||||
contacts_phone?: string;
|
||||
actual_scene_case?: string;
|
||||
actual_use_to?: string;
|
||||
pseudo_change_reason?: string;
|
||||
actual_area?: string;
|
||||
is_have_build?: number;
|
||||
is_forever_build?: number;
|
||||
illegal_contact?: string;
|
||||
is_build_complete?: number;
|
||||
is_have_checkout_condition?: number;
|
||||
illegal_contact_phone?: string;
|
||||
build_structure?: string;
|
||||
illegal_type?: string;
|
||||
remark?: string;
|
||||
transactor_name?: string;
|
||||
transact_time?: string;
|
||||
evidence_file_name?: string;
|
||||
evidence_file_number?: string;
|
||||
evidence_file_indate?: string;
|
||||
illegal_contact_idcard?: string;
|
||||
registr_number?: string;
|
||||
procedure_indate?:string;
|
||||
}
|
||||
export interface caseHandleInfoObj {
|
||||
info:infoObj
|
||||
is_illegal?: string;
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
<template>
|
||||
<a-descriptions bordered :column="2" size="small" :labelStyle="labelStyle">
|
||||
<a-descriptions-item label="审核人">
|
||||
{{ auditData.user_name }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="审核时间">
|
||||
{{ auditData.time }}
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { ref, watch } from 'vue';
|
||||
const labelStyle = ref({
|
||||
width: '100px',
|
||||
});
|
||||
const auditData: any = ref({});
|
||||
const props = defineProps({
|
||||
data: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
});
|
||||
console.log(props.data);
|
||||
auditData.value = props.data;
|
||||
watch(
|
||||
() => props.data,
|
||||
(newVal, oldVal) => {
|
||||
auditData.value = newVal;
|
||||
},
|
||||
);
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .ant-image .ant-image-img {
|
||||
width: 85px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
<template>
|
||||
<a-descriptions bordered :column="2" size="small" :labelStyle="labelStyle">
|
||||
<a-descriptions-item label="办理人">{{
|
||||
caseHandleInfo.info.transactor_name
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="办理时间">
|
||||
{{ caseHandleInfo.info.transact_time }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="拟拆除后照片">
|
||||
<div>
|
||||
<ImagePreview :imageList="imgList" />
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="视频">
|
||||
<div v-if="videoOptions.length > 0">
|
||||
<video-player
|
||||
class="video-player vjs-custom-skin"
|
||||
v-for="(item, index) in videoOptions"
|
||||
:key="index"
|
||||
ref="videoPlayer"
|
||||
:playsinline="true"
|
||||
:options="item"
|
||||
style="width: 200px"
|
||||
></video-player>
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { reactive, watch, ref } from 'vue';
|
||||
import { ImagePreview } from '@/components/Preview';
|
||||
import { caseHandleInfoObj } from '../model';
|
||||
const labelStyle = ref({
|
||||
width: '100px',
|
||||
});
|
||||
const caseHandleInfo = ref<caseHandleInfoObj>({
|
||||
info: {},
|
||||
});
|
||||
const videoOptions: any = ref([]);
|
||||
const threadAfterImageList: any = ref([]);
|
||||
const props = defineProps({
|
||||
data: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
videoOptions: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
threadAfterImageList: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
});
|
||||
caseHandleInfo.value = props.data;
|
||||
videoOptions.value = props.videoOptions;
|
||||
threadAfterImageList.value = props.threadImageList;
|
||||
const imgList = ref([
|
||||
'https://picsum.photos/id/66/346/216',
|
||||
'https://picsum.photos/id/67/346/216',
|
||||
'https://picsum.photos/id/68/346/216',
|
||||
]);
|
||||
|
||||
|
||||
watch(
|
||||
() => props.data,
|
||||
(newVal, oldVal) => {
|
||||
caseHandleInfo.value = newVal;
|
||||
videoOptions.value = props.videoOptions;
|
||||
threadImageList.value = props.threadImageList;
|
||||
},
|
||||
);
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .ant-image .ant-image-img {
|
||||
width: 85px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
<template>
|
||||
<a-descriptions bordered :column="2" size="small" :labelStyle="labelStyle">
|
||||
<a-descriptions-item label="办理人">{{
|
||||
caseHandleInfo.info.transactor_name
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="办理时间">
|
||||
{{ caseHandleInfo.info.transact_time }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="批准文件名称">
|
||||
{{ caseHandleInfo.info.evidence_file_name }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="批准文件编号">
|
||||
{{ caseHandleInfo.info.evidence_file_number }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="批文有效日期">
|
||||
{{ caseHandleInfo.info.evidence_file_indate }}
|
||||
</a-descriptions-item>
|
||||
|
||||
<a-descriptions-item label="合法举证材料">
|
||||
<div>
|
||||
<ImagePreview :imageList="evidenceFileList" />
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="勘测定界图">
|
||||
<div>
|
||||
<ImagePreview :imageList="boundaryImageList" />
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { watch, ref } from 'vue';
|
||||
import { ImagePreview } from '@/components/Preview';
|
||||
import { caseHandleInfoObj } from '../model';
|
||||
const labelStyle = ref({
|
||||
width: '100px',
|
||||
});
|
||||
const caseHandleInfo = ref<caseHandleInfoObj>({
|
||||
info: {},
|
||||
});
|
||||
const playerOptions: any = ref([]);
|
||||
const boundaryImageList: any = ref([]);
|
||||
const evidenceFileList: any = ref([]);
|
||||
const props = defineProps({
|
||||
data: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
playerOptions: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
boundaryImageList: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
evidenceFileList: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
});
|
||||
caseHandleInfo.value = props.data;
|
||||
playerOptions.value = props.playerOptions;
|
||||
boundaryImageList.value = props.boundaryImageList;
|
||||
evidenceFileList.value = props.boundaryImageList;
|
||||
const imgList = ref([
|
||||
'https://picsum.photos/id/66/346/216',
|
||||
'https://picsum.photos/id/67/346/216',
|
||||
'https://picsum.photos/id/68/346/216',
|
||||
]);
|
||||
|
||||
|
||||
watch(
|
||||
() => props.data,
|
||||
(newVal, oldVal) => {
|
||||
caseHandleInfo.value = newVal;
|
||||
playerOptions.value = props.playerOptions;
|
||||
boundaryImageList.value = props.boundaryImageList;
|
||||
evidenceFileList.value = props.boundaryImageList;
|
||||
},
|
||||
);
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .ant-image .ant-image-img {
|
||||
width: 85px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
|
@ -0,0 +1,247 @@
|
|||
<template>
|
||||
<a-descriptions bordered :column="2" size="small" :labelStyle="labelStyle">
|
||||
<a-descriptions-item label="核查人">{{
|
||||
caseHandleInfo.info.createusername
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="核查时间">
|
||||
{{ caseHandleInfo.info.createtime }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="处理进度">
|
||||
{{ caseHandleInfo.info.verifystatusname }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="是否违法">
|
||||
{{ caseHandleInfo.is_illegal }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="处理措施" v-if="caseHandleInfo.is_illegal == '是'">
|
||||
{{ caseHandleInfo.info.measure_name }}
|
||||
</a-descriptions-item>
|
||||
|
||||
<!-- 合法 -->
|
||||
<a-descriptions-item label="项目名称" v-if="caseHandleInfo.is_illegal == '合法'">
|
||||
{{ caseHandleInfo.info.result_name }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="当事人" v-if="caseHandleInfo.is_illegal == '合法'">
|
||||
{{ caseHandleInfo.info.contacts_people }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="联系电话" v-if="caseHandleInfo.is_illegal == '合法'">
|
||||
{{ caseHandleInfo.info.contacts_phone }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="建设情况" v-if="caseHandleInfo.is_illegal == '合法'">
|
||||
{{ caseHandleInfo.info.actual_scene_case }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="实际用途" v-if="caseHandleInfo.is_illegal == '合法'">
|
||||
{{ caseHandleInfo.info.actual_use_to }}
|
||||
</a-descriptions-item>
|
||||
|
||||
<!-- 伪变化 -->
|
||||
<a-descriptions-item label="伪变化原因" v-if="caseHandleInfo.is_illegal == '伪变化'">
|
||||
{{ caseHandleInfo.info.pseudo_change_reason }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="实际用途" v-if="caseHandleInfo.is_illegal == '伪变化'">
|
||||
{{ caseHandleInfo.info.actual_use_to }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="实际面积" v-if="caseHandleInfo.is_illegal == '伪变化'">
|
||||
{{ caseHandleInfo.info.actual_area }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="是否有建筑物" v-if="caseHandleInfo.is_illegal == '伪变化'">
|
||||
{{ caseHandleInfo.info.is_have_build == 1 ? '是' : '否' }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="是否永久性建筑" v-if="caseHandleInfo.is_illegal == '伪变化'">
|
||||
{{ caseHandleInfo.info.is_forever_build == 1 ? '是' : '否' }}
|
||||
</a-descriptions-item>
|
||||
|
||||
<!-- 案件违法 - 拆除 -->
|
||||
<a-descriptions-item
|
||||
label="处理办法"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟拆除'"
|
||||
>
|
||||
{{ caseHandleInfo.info.measure_name }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="实际用途"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟拆除'"
|
||||
>
|
||||
{{ caseHandleInfo.info.actual_use_to }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="当事人"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟拆除'"
|
||||
>
|
||||
{{ caseHandleInfo.info.illegal_contact }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="联系电话"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟拆除'"
|
||||
>
|
||||
{{ caseHandleInfo.info.illegal_contact_phone }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="建设情况"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟拆除'"
|
||||
>
|
||||
{{ caseHandleInfo.info.is_build_complete == 1 ? '已建成' : '建设中' }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="建筑结构"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟拆除'"
|
||||
>
|
||||
{{ caseHandleInfo.info.build_structure }}
|
||||
</a-descriptions-item>
|
||||
|
||||
<!-- 案件违法 查处 -->
|
||||
<a-descriptions-item
|
||||
label="处理办法"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '查处'"
|
||||
>
|
||||
{{ caseHandleInfo.info.measure_name }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="实际用途"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '查处'"
|
||||
>
|
||||
{{ caseHandleInfo.info.actual_use_to }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="当事人"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '查处'"
|
||||
>
|
||||
{{ caseHandleInfo.info.illegal_contact }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="联系电话"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '查处'"
|
||||
>
|
||||
{{ caseHandleInfo.info.illegal_contact_phone }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="建筑结构"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '查处'"
|
||||
>
|
||||
{{ caseHandleInfo.info.build_structure }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="违法类型"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '查处'"
|
||||
>
|
||||
{{ caseHandleInfo.info.illegal_type }}
|
||||
</a-descriptions-item>
|
||||
|
||||
<!-- 案件违法 完善手续 -->
|
||||
<a-descriptions-item
|
||||
label="处理办法"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟完善手续'"
|
||||
>
|
||||
{{ caseHandleInfo.info.measure_name }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="实际用途"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟完善手续'"
|
||||
>
|
||||
{{ caseHandleInfo.info.actual_use_to }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="当事人"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟完善手续'"
|
||||
>
|
||||
{{ caseHandleInfo.info.illegal_contact }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="联系电话"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟完善手续'"
|
||||
>
|
||||
{{ caseHandleInfo.info.illegal_contact_phone }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="拟完善手续名称"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟完善手续'"
|
||||
>
|
||||
{{ caseHandleInfo.info.result_name }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item
|
||||
label="是否具备完善手续条件"
|
||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟完善手续'"
|
||||
>
|
||||
{{ caseHandleInfo.info.is_have_checkout_condition == 1 ? '是' : '否' }}
|
||||
</a-descriptions-item>
|
||||
|
||||
<a-descriptions-item label="备注">
|
||||
{{ caseHandleInfo.info.remark }}
|
||||
</a-descriptions-item>
|
||||
|
||||
<a-descriptions-item label="现场照片">
|
||||
<div>
|
||||
<ImagePreview :imageList="imgList" />
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="现场视频">
|
||||
<div v-if="playerOptions.length > 0">
|
||||
<video-player
|
||||
class="video-player vjs-custom-skin"
|
||||
v-for="(item, index) in playerOptions"
|
||||
:key="index"
|
||||
ref="videoPlayer"
|
||||
:playsinline="true"
|
||||
:options="item"
|
||||
style="width: 200px"
|
||||
></video-player>
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { reactive, watch, ref } from 'vue';
|
||||
import { ImagePreview } from '@/components/Preview';
|
||||
import { caseHandleInfoObj } from '../model';
|
||||
const labelStyle = ref({
|
||||
width: '100px',
|
||||
});
|
||||
const caseHandleInfo = ref<caseHandleInfoObj>({
|
||||
info: {},
|
||||
});
|
||||
const playerOptions: any = ref([]);
|
||||
const threadImageList: any = ref([]);
|
||||
const props = defineProps({
|
||||
data: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
playerOptions: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
threadImageList: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
});
|
||||
console.log(props)
|
||||
caseHandleInfo.value = props.data;
|
||||
playerOptions.value = props.playerOptions;
|
||||
threadImageList.value = props.threadImageList;
|
||||
const imgList = ref([
|
||||
'https://picsum.photos/id/66/346/216',
|
||||
'https://picsum.photos/id/67/346/216',
|
||||
'https://picsum.photos/id/68/346/216',
|
||||
]);
|
||||
|
||||
watch(
|
||||
() => props.data,
|
||||
(newVal, oldVal) => {
|
||||
caseHandleInfo.value = newVal;
|
||||
playerOptions.value = props.playerOptions;
|
||||
threadImageList.value = props.threadImageList;
|
||||
},
|
||||
);
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .ant-image .ant-image-img {
|
||||
width: 85px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
<template>
|
||||
<a-descriptions bordered :column="2" size="small" :labelStyle="labelStyle">
|
||||
<a-descriptions-item label="办理人">{{
|
||||
caseHandleInfo.info.transactor_name
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="办理时间">
|
||||
{{ caseHandleInfo.info.transact_time }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="立案号">
|
||||
{{ caseHandleInfo.info.registr_number }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="当事人姓名">
|
||||
{{ caseHandleInfo.info.illegal_contact }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="身份证号码">
|
||||
{{ caseHandleInfo.info.illegal_contact_idcard }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="违法类型">
|
||||
{{ caseHandleInfo.info.illegal_type }}
|
||||
</a-descriptions-item>
|
||||
|
||||
<a-descriptions-item label="处罚通知书">
|
||||
<div>
|
||||
<ImagePreview :imageList="punishImageList" />
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="交款通知单">
|
||||
<div>
|
||||
<ImagePreview :imageList="paymentImageList" />
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { watch, ref } from 'vue';
|
||||
import { ImagePreview } from '@/components/Preview';
|
||||
import { caseHandleInfoObj } from '../model';
|
||||
const labelStyle = ref({
|
||||
width: '100px',
|
||||
});
|
||||
const caseHandleInfo = ref<caseHandleInfoObj>({
|
||||
info: {},
|
||||
});
|
||||
const playerOptions: any = ref([]);
|
||||
const paymentImageList: any = ref([]);
|
||||
const punishImageList: any = ref([]);
|
||||
const props = defineProps({
|
||||
data: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
playerOptions: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
paymentImageList: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
punishImageList: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
});
|
||||
caseHandleInfo.value = props.data;
|
||||
playerOptions.value = props.playerOptions;
|
||||
paymentImageList.value = props.paymentImageList;
|
||||
punishImageList.value = props.paymentImageList;
|
||||
const imgList = ref([
|
||||
'https://picsum.photos/id/66/346/216',
|
||||
'https://picsum.photos/id/67/346/216',
|
||||
'https://picsum.photos/id/68/346/216',
|
||||
]);
|
||||
|
||||
|
||||
watch(
|
||||
() => props.data,
|
||||
(newVal, oldVal) => {
|
||||
caseHandleInfo.value = newVal;
|
||||
playerOptions.value = props.playerOptions;
|
||||
paymentImageList.value = props.paymentImageList;
|
||||
punishImageList.value = props.paymentImageList;
|
||||
},
|
||||
);
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .ant-image .ant-image-img {
|
||||
width: 85px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
<template>
|
||||
<a-descriptions bordered :column="2" size="small" :labelStyle="labelStyle">
|
||||
<a-descriptions-item label="案件编号">{{ caseDetail.case_no }}</a-descriptions-item>
|
||||
<a-descriptions-item label="上报人">
|
||||
{{ caseDetail.identification_user }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="上报时间">
|
||||
{{ caseDetail.identification_time }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="案件状态">
|
||||
<a-tag color="warning" v-if="caseDetail.handle_status_id == 0">
|
||||
{{ caseDetail.handle_status_name }}
|
||||
</a-tag>
|
||||
<a-tag color="processing" v-else-if="caseDetail.handle_status_id == 1">
|
||||
{{ caseDetail.handle_status_name }}
|
||||
</a-tag>
|
||||
<a-tag color="success" v-else>{{ caseDetail.handle_status_name }}</a-tag>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="行政区划">
|
||||
/ {{ caseDetail.countyname }} / {{ caseDetail.streetname }} / {{
|
||||
caseDetail.communityname
|
||||
}}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="案件地址">{{ caseDetail.address }}</a-descriptions-item>
|
||||
<a-descriptions-item label="经纬度"
|
||||
>{{ caseDetail.lng }} , {{ caseDetail.lat }}</a-descriptions-item
|
||||
>
|
||||
<a-descriptions-item label="案件地址">{{ caseDetail.area }} (m²)</a-descriptions-item>
|
||||
<a-descriptions-item label="案件类型">{{ caseDetail.typename }}</a-descriptions-item>
|
||||
<a-descriptions-item label="案件备注">{{ caseDetail.remark }}</a-descriptions-item>
|
||||
<a-descriptions-item label="案件描述">{{ caseDetail.case_description }}</a-descriptions-item>
|
||||
|
||||
<a-descriptions-item label="案件图片">
|
||||
<div>
|
||||
<ImagePreview :imageList="imgList" />
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { reactive, watch, ref } from 'vue';
|
||||
import { ImagePreview } from '@/components/Preview';
|
||||
import { DetailModel, caseDetailObj } from '../model';
|
||||
const labelStyle = ref({
|
||||
width: '100px',
|
||||
});
|
||||
const caseDetail = ref<caseDetailObj>({});
|
||||
const props = defineProps({
|
||||
data: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
});
|
||||
if(Object.keys(props.data).length != 0){
|
||||
caseDetail.value = props.data.info;
|
||||
}
|
||||
const imgList = ref([
|
||||
'https://picsum.photos/id/66/346/216',
|
||||
'https://picsum.photos/id/67/346/216',
|
||||
'https://picsum.photos/id/68/346/216',
|
||||
]);
|
||||
|
||||
watch(
|
||||
() => props.data,
|
||||
(newVal, oldVal) => {
|
||||
caseDetail.value = newVal.info;
|
||||
},
|
||||
);
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .ant-image .ant-image-img {
|
||||
width: 85px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,205 @@
|
|||
<template>
|
||||
<div class="w-full">
|
||||
<MapboxMaps :mapOptions="mapOptions" @map-on-load="mapOnLoad" />
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import rodeImg from '@/assets/images/icon_fly2.png';
|
||||
import { ref, watch } from 'vue';
|
||||
import MapboxMaps from '@/components/MapboxMaps/index.vue';
|
||||
import { getDroneGeoJson } from '@/api/monitor/index';
|
||||
const detailMap = ref();
|
||||
const props = defineProps({
|
||||
ruleForm: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
});
|
||||
const geojson = ref();
|
||||
const droneMarker = ref();
|
||||
const mapBox = ref();
|
||||
|
||||
const mapOptions = {
|
||||
center: [117.84714891969796, 35.22152309532066],
|
||||
zoom: 10,
|
||||
};
|
||||
watch(
|
||||
() => props.ruleForm,
|
||||
(newVal, oldVal) => {
|
||||
console.log(newVal);
|
||||
loadCaseGeoJson();
|
||||
detailMap.value.flyTo({
|
||||
center: [newVal.lng, newVal.lat], // 中心点
|
||||
zoom: 18, // 缩放比例
|
||||
pitch: 0, // 倾斜度
|
||||
});
|
||||
loadDroneMarker(newVal.lng, newVal.lat);
|
||||
},
|
||||
);
|
||||
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;
|
||||
loadImageLayer();
|
||||
loadStreetBorderLayer();
|
||||
loadCaseGeoJson();
|
||||
};
|
||||
// 费县图斑
|
||||
function loadImageLayer() {
|
||||
detailMap.value.addLayer({
|
||||
id: 'wms-test-layer',
|
||||
type: 'raster',
|
||||
source: {
|
||||
type: 'raster',
|
||||
tiles: [
|
||||
'http://175.27.168.120:8080/geoserver/feixian/wms?service=WMS&version=1.1.0&request=GetMap&layers=feixian:yingxiang&styles=&bbox={bbox-epsg-3857}&width=256&height=256&srs=EPSG:3857&format=image/png&TRANSPARENT=TRUE',
|
||||
],
|
||||
tileSize: 256,
|
||||
},
|
||||
paint: {},
|
||||
});
|
||||
}
|
||||
// 费县镇界
|
||||
function loadStreetBorderLayer() {
|
||||
detailMap.value.addLayer({
|
||||
id: 'street-border',
|
||||
type: 'raster',
|
||||
source: {
|
||||
type: 'raster',
|
||||
tiles: [
|
||||
'http://175.27.168.120:8080/geoserver/feixian/wms?service=WMS&version=1.1.0&request=GetMap&layers=feixian:zhenjie&styles=&bbox={bbox-epsg-3857}&width=256&height=256&srs=EPSG:3857&format=image/png&TRANSPARENT=TRUE',
|
||||
],
|
||||
tileSize: 256,
|
||||
},
|
||||
paint: {},
|
||||
layout: {
|
||||
visibility: 'visible',
|
||||
},
|
||||
});
|
||||
detailMap.value.resize();
|
||||
}
|
||||
// 获取GeoJSON图层
|
||||
async function loadCaseGeoJson() {
|
||||
const data = await getDroneGeoJson({ id: props.ruleForm.info.id });
|
||||
console.log(data);
|
||||
geojson.value = data;
|
||||
if (geojson.value.features.length == 0) {
|
||||
detailMap.value.addLayer({
|
||||
id: 'points',
|
||||
type: 'symbol',
|
||||
source: {
|
||||
type: 'geojson',
|
||||
data: {
|
||||
type: 'FeatureCollection',
|
||||
features: [
|
||||
{
|
||||
type: 'Feature',
|
||||
geometry: {
|
||||
type: 'Point',
|
||||
coordinates: [props.ruleForm.info.lng, props.ruleForm.info.lng],
|
||||
},
|
||||
properties: {
|
||||
title: 'Mapbox DC',
|
||||
icon: 'monument',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
layout: {},
|
||||
});
|
||||
}
|
||||
// 报错的修改方法There is already a source with ID "geojsonfill"
|
||||
if (detailMap.value.getLayer('geojsonfill')) {
|
||||
detailMap.value.removeLayer('geojsonfill');
|
||||
detailMap.value.removeSource('geojsonfill');
|
||||
}
|
||||
if (detailMap.value.getLayer('geojsonline')) {
|
||||
detailMap.value.removeLayer('geojsonline');
|
||||
detailMap.value.removeSource('geojsonline');
|
||||
}
|
||||
|
||||
detailMap.value.addLayer({
|
||||
id: 'geojsonfill',
|
||||
type: 'fill',
|
||||
source: {
|
||||
type: 'geojson',
|
||||
data: geojson.value,
|
||||
},
|
||||
paint: {
|
||||
'fill-color': '#FE9003',
|
||||
'fill-opacity': 0.2,
|
||||
'fill-outline-color': '#FE9003',
|
||||
},
|
||||
});
|
||||
|
||||
detailMap.value.addLayer({
|
||||
id: 'geojsonline',
|
||||
type: 'line',
|
||||
source: {
|
||||
type: 'geojson',
|
||||
data: geojson.value,
|
||||
},
|
||||
layout: {
|
||||
'line-join': 'round',
|
||||
'line-cap': 'round',
|
||||
},
|
||||
paint: {
|
||||
'line-color': '#FE9003',
|
||||
'line-width': 4,
|
||||
},
|
||||
});
|
||||
}
|
||||
// 案件位置显示无人机图标
|
||||
function loadDroneMarker(lng, lat) {
|
||||
if (detailMap.value.getLayer('cat-on-building')) {
|
||||
detailMap.value.removeLayer('cat-on-building');
|
||||
detailMap.value.removeSource('cat-on-building');
|
||||
detailMap.value.removeImage('cat');
|
||||
}
|
||||
detailMap.value.loadImage(rodeImg, (error, image) => {
|
||||
detailMap.value.addImage('cat', image);
|
||||
detailMap.value.addLayer({
|
||||
id: 'cat-on-building',
|
||||
source: {
|
||||
type: 'geojson',
|
||||
data: {
|
||||
type: 'FeatureCollection',
|
||||
features: [
|
||||
{
|
||||
type: 'Feature',
|
||||
geometry: {
|
||||
type: 'Point',
|
||||
coordinates: [lng, lat],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
slot: 'top',
|
||||
type: 'symbol',
|
||||
layout: {
|
||||
'icon-image': 'cat',
|
||||
'icon-size': 0.05,
|
||||
'symbol-placement': 'point',
|
||||
'symbol-z-elevate': true,
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
.w-full {
|
||||
width: 100%;
|
||||
height: 50vh;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,111 @@
|
|||
<template>
|
||||
<a-descriptions bordered :column="2" size="small" :labelStyle="labelStyle">
|
||||
<a-descriptions-item label="办理人">{{
|
||||
caseHandleInfo.info.transactor_name
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="办理时间">
|
||||
{{ caseHandleInfo.info.transact_time }}
|
||||
</a-descriptions-item>
|
||||
|
||||
<a-descriptions-item label="政府统一完善手续证明">
|
||||
<div>
|
||||
<ImagePreview :imageList="agreeImageList" />
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="办理手续照片">
|
||||
<div>
|
||||
<ImagePreview :imageList="checkoutImageList" />
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
|
||||
<a-descriptions-item label="手续有效期">
|
||||
{{ caseHandleInfo.info.procedure_indate }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="批准文件编号">
|
||||
{{ caseHandleInfo.info.evidence_file_number }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="批文有效日期">
|
||||
{{ caseHandleInfo.info.evidence_file_indate }}
|
||||
</a-descriptions-item>
|
||||
|
||||
<a-descriptions-item label="勘测定界图">
|
||||
<div>
|
||||
<ImagePreview :imageList="boundaryImageList" />
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { watch, ref } from 'vue';
|
||||
import { ImagePreview } from '@/components/Preview';
|
||||
import { caseHandleInfoObj } from '../model';
|
||||
const labelStyle = ref({
|
||||
width: '100px',
|
||||
});
|
||||
const caseHandleInfo = ref<caseHandleInfoObj>({
|
||||
info: {},
|
||||
});
|
||||
const playerOptions: any = ref([]);
|
||||
const checkoutImageList: any = ref([]);
|
||||
const boundaryImageList: any = ref([]);
|
||||
const agreeImageList: any = ref([]);
|
||||
const props = defineProps({
|
||||
data: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
playerOptions: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
checkoutImageList: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
boundaryImageList: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
agreeImageList: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
});
|
||||
caseHandleInfo.value = props.data;
|
||||
playerOptions.value = props.playerOptions;
|
||||
boundaryImageList.value = props.checkoutImageList;
|
||||
checkoutImageList.value = props.checkoutImageList;
|
||||
agreeImageList.value = props.checkoutImageList;
|
||||
const imgList = ref([
|
||||
'https://picsum.photos/id/66/346/216',
|
||||
'https://picsum.photos/id/67/346/216',
|
||||
'https://picsum.photos/id/68/346/216',
|
||||
]);
|
||||
|
||||
watch(
|
||||
() => props.data,
|
||||
(newVal, oldVal) => {
|
||||
caseHandleInfo.value = newVal;
|
||||
playerOptions.value = props.playerOptions;
|
||||
boundaryImageList.value = props.checkoutImageList;
|
||||
checkoutImageList.value = props.checkoutImageList;
|
||||
agreeImageList.value = props.checkoutImageList;
|
||||
},
|
||||
);
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .ant-image .ant-image-img {
|
||||
width: 85px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -10,18 +10,34 @@
|
|||
:actions="[
|
||||
{
|
||||
// icon: 'ant-design:ellipsis-outlined',
|
||||
label: '查看',
|
||||
onClick: viewAccount.bind(null, record),
|
||||
label: '详情',
|
||||
onClick: viewDetail.bind(null, record),
|
||||
},
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
|
||||
<BasicModal
|
||||
v-bind="$attrs"
|
||||
@register="registerModal"
|
||||
title="案件详情"
|
||||
:canFullscreen="false"
|
||||
:defaultFullscreen="true"
|
||||
:showCancelBtn="false"
|
||||
:showOkBtn="false"
|
||||
:draggable="false"
|
||||
>
|
||||
<!-- <CaseView :caseId="caseId"></CaseView> -->
|
||||
</BasicModal>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { reactive } from 'vue';
|
||||
import { reactive,ref } from 'vue';
|
||||
|
||||
import { CaseView } from '@/views/demo/monitor/index';
|
||||
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { getRoleListByPage,getReportList, deleteRole } from '@/api/demo/system';
|
||||
|
|
@ -35,9 +51,8 @@
|
|||
defineOptions({ name: 'RoleManagement' });
|
||||
|
||||
const { createConfirm, createMessage } = useMessage();
|
||||
const [registerModal, { openModal: openRoleModal }] = useModal();
|
||||
const [registerModulesModal, { openModal: openModulesModal }] = useModal();
|
||||
const [registerAccountModal, { openModal: openAccountModal }] = useModal();
|
||||
|
||||
|
||||
const searchInfo = reactive<Recordable>({});
|
||||
|
||||
const [registerTable, { reload, getSelectRows, clearSelectedRowKeys }] = useTable({
|
||||
|
|
@ -79,6 +94,8 @@
|
|||
},
|
||||
});
|
||||
|
||||
const [registerModal, { openModal, setModalProps }] = useModal();
|
||||
|
||||
function handleCreate() {
|
||||
openRoleModal(true, {
|
||||
isUpdate: false,
|
||||
|
|
@ -87,10 +104,15 @@
|
|||
function handleExport(){
|
||||
createMessage.success("下载成功!");
|
||||
}
|
||||
function viewAccount(record: Recordable) {
|
||||
openAccountModal(true, {
|
||||
record,
|
||||
});
|
||||
|
||||
|
||||
const caseId = ref('');
|
||||
|
||||
function viewDetail(record) {
|
||||
console.log(record);
|
||||
caseId.value = record.id;
|
||||
alert(caseId.value)
|
||||
openModal();
|
||||
}
|
||||
|
||||
function handleEdit() {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
import { ref,reactive } from 'vue';
|
||||
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { getRoleListByPage,getReportList, deleteRole } from '@/api/demo/system';
|
||||
import { getStatisticalList, deleteRole } from '@/api/demo/system';
|
||||
|
||||
// import {DataPreivew} from './RecordList.vue'
|
||||
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
// 表格名称
|
||||
title: '统计报表',
|
||||
// 获取数据的接口
|
||||
api: getReportList,
|
||||
api: getStatisticalList,
|
||||
// 表单列信息 BasicColumn[]
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
|
|
@ -101,7 +101,7 @@
|
|||
// 表格名称
|
||||
title: '',
|
||||
// 获取数据的接口
|
||||
api: getReportList,
|
||||
api: getStatisticalList,
|
||||
// 表单列信息 BasicColumn[]
|
||||
columnsDataPreview,
|
||||
rowKey: 'id',
|
||||
|
|
|
|||
|
|
@ -287,7 +287,7 @@ export const searchFormSchema: FormSchema[] = [
|
|||
colProps: { span: 6 },
|
||||
},
|
||||
{
|
||||
field: '[startDate, endDate]',
|
||||
field: '[identification_start_time, identification_end_time]',
|
||||
label: '日期范围',
|
||||
component: 'RangePicker',
|
||||
colProps: { span: 8 },
|
||||
|
|
|
|||
Loading…
Reference in New Issue