merge
commit
01a1ebfb33
|
|
@ -79,6 +79,7 @@ enum Api {
|
|||
LoadCaseInfoIllegalList = '/api/DroneCaseInfoSingle/LoadCaseInfoIllegalList',
|
||||
CaseOffence = '/api/DroneCaseInfoSingle/CaseOffence',
|
||||
LoadCaseInfoListOffence = '/api/DroneCaseInfoSingle/LoadCaseInfoListOffence',
|
||||
DealIllegalCaseInfo = '/api/DroneCaseInfoSingle/dealIllegalCaseInfo',
|
||||
}
|
||||
|
||||
export const getPositionsTree = (params?: AccountParams) =>
|
||||
|
|
@ -349,3 +350,9 @@ export const getCaseOffence = (params: ReportParams) =>
|
|||
export const getLoadCaseInfoListOffence = (params: ReportParams) =>
|
||||
defHttp.get<StatisticalListGetResultModel>({ url: Api.LoadCaseInfoListOffence, params });
|
||||
|
||||
export function dealIllegalCaseInfo(params) {
|
||||
return defHttp.post({
|
||||
url: Api.DealIllegalCaseInfo,
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { computed, onMounted, ref } from 'vue';
|
||||
import { computed, onMounted, ref, h } from 'vue';
|
||||
import { Popover, Tabs, Badge } from 'ant-design-vue';
|
||||
import { BellOutlined } from '@ant-design/icons-vue';
|
||||
import { tabListData } from './data';
|
||||
|
|
@ -54,7 +54,7 @@
|
|||
const userInfo: any = userStore.getUserInfo;
|
||||
|
||||
const { prefixCls } = useDesign('header-notify');
|
||||
const { createMessage } = useMessage();
|
||||
const { createMessage, notification } = useMessage();
|
||||
const listData = ref(tabListData);
|
||||
const numberStyle = {};
|
||||
const auditOpen = ref(false);
|
||||
|
|
@ -94,8 +94,8 @@
|
|||
// });
|
||||
console.log(data);
|
||||
let arr: any = [];
|
||||
if (data.items && data.items.length > 0) {
|
||||
data.items.forEach((item: any) => {
|
||||
if (data && data.length > 0) {
|
||||
data.forEach((item: any) => {
|
||||
arr.push({
|
||||
id: item.msgId,
|
||||
title: item.content,
|
||||
|
|
@ -110,7 +110,12 @@
|
|||
// 连接
|
||||
async function start() {
|
||||
try {
|
||||
await signal.start();
|
||||
await signal.start().then(() => {
|
||||
signal
|
||||
.invoke('SendInfo', userInfo.id.toString())
|
||||
.catch((err) => console.error(err.toString()));
|
||||
});
|
||||
console.log('userInfo.id', userInfo.id);
|
||||
console.log('SignalR Connected.连接成功');
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
|
|
@ -120,18 +125,31 @@
|
|||
signal.onclose(async () => {
|
||||
await start();
|
||||
});
|
||||
//接口推送
|
||||
signal.on('RevMsg', (user, message, time, id, issystem) => {
|
||||
console.log('报警', user, message, time, id, issystem); //拿到后台推送的数据
|
||||
notification.info({
|
||||
message: '您有一条新消息',
|
||||
description: () => {
|
||||
const res = message + '\n' + time;
|
||||
return h('pre', {}, res);
|
||||
},
|
||||
|
||||
duration: 3,
|
||||
});
|
||||
getList();
|
||||
// openModal(true, {
|
||||
// user: user,
|
||||
// message: message,
|
||||
// time: time,
|
||||
// id: id,
|
||||
// issystem: issystem,
|
||||
// });
|
||||
});
|
||||
onMounted(() => {
|
||||
getList();
|
||||
start();
|
||||
});
|
||||
//接口推送
|
||||
signal.on('RevMsg', (user, message) => {
|
||||
console.log('报警', user, message); //拿到后台推送的数据
|
||||
openModal(true, {
|
||||
user: user,
|
||||
message: message,
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<style lang="less">
|
||||
@prefix-cls: ~'@{namespace}-header-notify';
|
||||
|
|
|
|||
|
|
@ -25,9 +25,11 @@
|
|||
import { BasicModal, useModalInner } from '@/components/Modal';
|
||||
import { Look } from '@/views/demo/workflow/task/process/page';
|
||||
|
||||
const info = ref({});
|
||||
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
|
||||
setModalProps({ confirmLoading: false });
|
||||
console.log(data);
|
||||
info.value = data;
|
||||
});
|
||||
const auditOpen = ref(false);
|
||||
const processId = ref('');
|
||||
|
|
|
|||
|
|
@ -5,6 +5,6 @@ const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
|||
console.log(VITE_GLOB_API_URL);
|
||||
export const signal = new signalR.HubConnectionBuilder()
|
||||
.withUrl(VITE_GLOB_API_URL + '/chathub')
|
||||
.withAutomaticReconnect([0, 2000, 10000, 30000])
|
||||
.configureLogging(signalR.LogLevel.Information)
|
||||
// .withAutomaticReconnect([0, 2000, 10000, 30000])
|
||||
// .configureLogging(signalR.LogLevel.Information)
|
||||
.build();
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import dayjs from 'dayjs';
|
||||
|
||||
// 无人机发现违法行为情况统计明细表-table
|
||||
export const columns: BasicColumn[] = [
|
||||
|
|
@ -10,7 +11,8 @@ export const columns: BasicColumn[] = [
|
|||
{
|
||||
title: '县区',
|
||||
dataIndex: 'countyname',
|
||||
width: 200,
|
||||
width: 150,
|
||||
// fixed: 'left',
|
||||
},
|
||||
{
|
||||
title: '下发图斑',
|
||||
|
|
@ -238,13 +240,14 @@ export const columns: BasicColumn[] = [
|
|||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: '[startTime, endTime]',
|
||||
label: '年月范围',
|
||||
label: '日期范围',
|
||||
component: 'RangePicker',
|
||||
colProps: { span: 8 },
|
||||
componentProps: {
|
||||
format: 'YYYY-MM',
|
||||
picker: 'month',
|
||||
placeholder: ['开始日期', '结束日期'],
|
||||
defaultValue: [dayjs(dayjs(), 'YYYY-MM'), dayjs(dayjs(), 'YYYY-MM')]
|
||||
},
|
||||
},
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<PageWrapper>
|
||||
<div>
|
||||
<BasicTable @register="registerTable">
|
||||
<template #toolbar>
|
||||
<PermissionBtn @btnEvent="buttonClick"></PermissionBtn>
|
||||
|
|
@ -11,110 +11,121 @@
|
|||
</template> -->
|
||||
|
||||
<!-- 下发图斑·宗数 -->
|
||||
<template v-if="column.key === 'xftbzs'">
|
||||
<template v-if="column.key === 'xftbzs' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 1)">{{ record.xftbzs }}</a>
|
||||
</template>
|
||||
<!-- 下发图斑·耕地面积 -->
|
||||
<template v-if="column.key === 'xfgdmj'">
|
||||
<template v-if="column.key === 'xfgdmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 1)">{{ record.xfgdmj }}</a>
|
||||
</template>
|
||||
|
||||
<!-- 新增建设用地·合法·宗数 -->
|
||||
<template v-if="column.key === 'hfzs'">
|
||||
<template v-if="column.key === 'hfzs' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 2)">{{ record.hfzs }}</a>
|
||||
</template>
|
||||
<!-- 新增建设用地·合法·面积 -->
|
||||
<template v-if="column.key === 'hfmj'">
|
||||
<template v-if="column.key === 'hfmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 2)">{{ record.hfmj }}</a>
|
||||
</template>
|
||||
<!-- 新增建设用地·合法·耕地面积 -->
|
||||
<template v-if="column.key === 'hfgdmj'">
|
||||
<template v-if="column.key === 'hfgdmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 2)">{{ record.hfgdmj }}</a>
|
||||
</template>
|
||||
<!-- 新增建设用地·违法·宗数 -->
|
||||
<template v-if="column.key === 'wfzs'">
|
||||
<template v-if="column.key === 'wfzs' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 3)">{{ record.wfzs }}</a>
|
||||
</template>
|
||||
<!-- 新增建设用地·违法·面积 -->
|
||||
<template v-if="column.key === 'wfmj'">
|
||||
<template v-if="column.key === 'wfmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 3)">{{ record.wfmj }}</a>
|
||||
</template>
|
||||
<!-- 新增建设用地·违法·耕地面积 -->
|
||||
<template v-if="column.key === 'wfgdmj'">
|
||||
<template v-if="column.key === 'wfgdmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 3)">{{ record.wfgdmj }}</a>
|
||||
</template>
|
||||
|
||||
<!-- 非新增建设用地·其他·宗数 -->
|
||||
<template v-if="column.key === 'qtzs'">
|
||||
<template v-if="column.key === 'qtzs' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 4)">{{ record.qtzs }}</a>
|
||||
</template>
|
||||
<!-- 非新增建设用地·其他·面积 -->
|
||||
<template v-if="column.key === 'qtmj'">
|
||||
<template v-if="column.key === 'qtmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 4)">{{ record.qtmj }}</a>
|
||||
</template>
|
||||
<!-- 非新增建设用地·其他·耕地面积 -->
|
||||
<template v-if="column.key === 'qtgdmj'">
|
||||
<template v-if="column.key === 'qtgdmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 4)">{{ record.qtgdmj }}</a>
|
||||
</template>
|
||||
|
||||
<!-- 农业项目耕地·非粮化·宗数 -->
|
||||
<template v-if="column.key === 'flhzs'">
|
||||
<template v-if="column.key === 'flhzs' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 5)">{{ record.flhzs }}</a>
|
||||
</template>
|
||||
<!-- 农业项目耕地·非粮化·面积 -->
|
||||
<template v-if="column.key === 'flhmj'">
|
||||
<template v-if="column.key === 'flhmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 5)">{{ record.flhmj }}</a>
|
||||
</template>
|
||||
<!-- 农业项目耕地·非粮化·耕地面积 -->
|
||||
<template v-if="column.key === 'flhgdmj'">
|
||||
<template v-if="column.key === 'flhgdmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 5)">{{ record.flhgdmj }}</a>
|
||||
</template>
|
||||
|
||||
<!-- 整改情况·补办手续·宗数 -->
|
||||
<template v-if="column.key === 'bbsxzs'">
|
||||
<template v-if="column.key === 'bbsxzs' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 6)">{{ record.bbsxzs }}</a>
|
||||
</template>
|
||||
<!-- 整改情况·补办手续·面积 -->
|
||||
<template v-if="column.key === 'bbsxmj'">
|
||||
<template v-if="column.key === 'bbsxmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 6)">{{ record.bbsxmj }}</a>
|
||||
</template>
|
||||
<!-- 整改情况·补办手续·耕地面积 -->
|
||||
<template v-if="column.key === 'bbsxgdmj'">
|
||||
<template v-if="column.key === 'bbsxgdmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 6)">{{ record.bbsxgdmj }}</a>
|
||||
</template>
|
||||
<!-- 整改情况·拆除·宗数 -->
|
||||
<template v-if="column.key === 'cczs'">
|
||||
<template v-if="column.key === 'cczs' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 7)">{{ record.cczs }}</a>
|
||||
</template>
|
||||
<!-- 整改情况·拆除·面积 -->
|
||||
<template v-if="column.key === 'ccmj'">
|
||||
<template v-if="column.key === 'ccmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 7)">{{ record.ccmj }}</a>
|
||||
</template>
|
||||
<!-- 整改情况·拆除·耕地面积 -->
|
||||
<template v-if="column.key === 'ccgdmj'">
|
||||
<template v-if="column.key === 'ccgdmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record, 7)">{{ record.ccgdmj }}</a>
|
||||
</template>
|
||||
|
||||
<!-- 新增违法占用耕地情况计算·核实后新增违法耕地·宗数 -->
|
||||
<template v-if="column.key === 'hshxzwfgdzs'">
|
||||
<template v-if="column.key === 'hshxzwfgdzs' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record)">{{ record.hshxzwfgdzs }}</a>
|
||||
</template>
|
||||
<!-- 新增违法占用耕地情况计算·核实后新增违法耕地·耕地面积 -->
|
||||
<template v-if="column.key === 'hshxzwfgdgdmj'">
|
||||
<template v-if="column.key === 'hshxzwfgdgdmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record)">{{ record.hshxzwfgdgdmj }}</a>
|
||||
</template>
|
||||
<!-- 新增违法占用耕地情况计算·整改后剩余违法耕地·宗数 -->
|
||||
<template v-if="column.key === 'zghsywfgdzs'">
|
||||
<template v-if="column.key === 'zghsywfgdzs' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record)">{{ record.zghsywfgdzs }}</a>
|
||||
</template>
|
||||
<!-- 新增违法占用耕地情况计算·整改后剩余违法耕地·耕地面积 -->
|
||||
<template v-if="column.key === 'zghsywfgdgdmj'">
|
||||
<template v-if="column.key === 'zghsywfgdgdmj' && record.countyname != '总计'">
|
||||
<a @click="handlePreViewData(column, record)">{{ record.zghsywfgdgdmj }}</a>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
|
||||
<div class="data-preview-container" v-if="showRecordList">
|
||||
<a-modal
|
||||
v-model:open="showRecordList"
|
||||
width="1500px"
|
||||
:footer="null"
|
||||
style="top: 100px"
|
||||
@ok="handleOk"
|
||||
>
|
||||
<template #closeIcon>
|
||||
<CloudDownloadOutlined id="closeIconButton" @click="exportList()" />
|
||||
<MinusOutlined id="closeIconButton" @click="handleCloseRecordList()" />
|
||||
<CloseOutlined id="closeIconButton" @click="handleCloseAllRecordList()" />
|
||||
</template>
|
||||
<a-tabs
|
||||
v-model:activeKey="activeKey"
|
||||
hide-add
|
||||
|
|
@ -131,19 +142,8 @@
|
|||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
<RecordList :tablist="tablist" :currentListQuery="currentListQuery.listQuery"></RecordList>
|
||||
<div class="data-preview-container-option">
|
||||
<div @click="exportList()">
|
||||
<CloudDownloadOutlined />
|
||||
</div>
|
||||
<div @click="handleCloseRecordList()">
|
||||
<MinusOutlined />
|
||||
</div>
|
||||
<div @click="handleCloseAllRecordList()">
|
||||
<CloseOutlined />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</PageWrapper>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
|
@ -178,7 +178,6 @@
|
|||
striped: false,
|
||||
bordered: true,
|
||||
showSummary: true,
|
||||
summaryFunc: handleSummary,
|
||||
canResize: false,
|
||||
useSearchForm: true,
|
||||
pagination: false,
|
||||
|
|
@ -197,90 +196,6 @@
|
|||
},
|
||||
afterFetch: (res) => {},
|
||||
});
|
||||
// 页面总计
|
||||
function handleSummary(tableData: Recordable[]) {
|
||||
let total: any = {
|
||||
xftbzs: 0 as number,
|
||||
xfgdmj: 0 as number,
|
||||
hfzs: 0 as number,
|
||||
hfmj: 0 as number,
|
||||
hfgdmj: 0 as number,
|
||||
wfzs: 0 as number,
|
||||
wfmj: 0 as number,
|
||||
wfgdmj: 0 as number,
|
||||
qtzs: 0 as number,
|
||||
qtmj: 0 as number,
|
||||
qtgdmj: 0 as number,
|
||||
flhzs: 0 as number,
|
||||
flhmj: 0 as number,
|
||||
flhgdmj: 0 as number,
|
||||
bbsxzs: 0 as number,
|
||||
bbsxmj: 0 as number,
|
||||
bbsxgdmj: 0 as number,
|
||||
cczs: 0 as number,
|
||||
ccmj: 0 as number,
|
||||
ccgdmj: 0 as number,
|
||||
hshxzwfgdzs: 0 as number,
|
||||
hshxzwfgdgdmj: 0 as number,
|
||||
zghsywfgdzs: 0 as number,
|
||||
zghsywfgdgdmj: 0 as number,
|
||||
};
|
||||
tableData.forEach((item) => {
|
||||
total.xftbzs += item.xftbzs;
|
||||
total.xfgdmj += item.xfgdmj;
|
||||
total.hfzs += item.hfzs;
|
||||
total.hfmj += item.hfmj;
|
||||
total.hfgdmj += item.hfgdmj;
|
||||
total.wfzs += item.wfzs;
|
||||
total.wfmj += item.wfmj;
|
||||
total.wfgdmj += item.wfgdmj;
|
||||
total.qtzs += item.qtzs;
|
||||
total.qtmj += item.qtmj;
|
||||
total.qtgdmj += item.qtgdmj;
|
||||
total.flhzs += item.flhzs;
|
||||
total.flhmj += item.flhmj;
|
||||
total.flhgdmj += item.flhgdmj;
|
||||
total.bbsxzs += item.bbsxzs;
|
||||
total.bbsxmj += item.bbsxmj;
|
||||
total.bbsxgdmj += item.bbsxgdmj;
|
||||
total.cczs += item.cczs;
|
||||
total.ccmj += item.ccmj;
|
||||
total.ccgdmj += item.ccgdmj;
|
||||
total.hshxzwfgdzs += item.hshxzwfgdzs;
|
||||
total.hshxzwfgdgdmj += item.hshxzwfgdgdmj;
|
||||
total.zghsywfgdzs += item.zghsywfgdzs;
|
||||
total.zghsywfgdgdmj += item.zghsywfgdgdmj;
|
||||
});
|
||||
return [
|
||||
{
|
||||
countyname: '合计',
|
||||
xftbzs: total.xftbzs,
|
||||
xfgdmj: total.xfgdmj,
|
||||
hfzs: total.hfzs,
|
||||
hfmj: total.hfmj,
|
||||
hfgdmj: total.hfgdmj,
|
||||
wfzs: total.wfzs,
|
||||
wfmj: total.wfmj,
|
||||
wfgdmj: total.wfgdmj,
|
||||
qtzs: total.qtzs,
|
||||
qtmj: total.qtmj,
|
||||
qtgdmj: total.qtgdmj,
|
||||
flhzs: total.flhzs,
|
||||
flhmj: total.flhmj,
|
||||
flhgdmj: total.flhgdmj,
|
||||
bbsxzs: total.bbsxzs,
|
||||
bbsxmj: total.bbsxmj,
|
||||
bbsxgdmj: total.bbsxgdmj,
|
||||
cczs: total.cczs,
|
||||
ccmj: total.ccmj,
|
||||
ccgdmj: total.ccgdmj,
|
||||
hshxzwfgdzs: total.hshxzwfgdzs,
|
||||
hshxzwfgdgdmj: total.hshxzwfgdgdmj,
|
||||
zghsywfgdzs: total.zghsywfgdzs,
|
||||
zghsywfgdgdmj: total.zghsywfgdgdmj,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
const printOpen = ref<boolean>(false);
|
||||
const showRecordList = ref<boolean>(false);
|
||||
|
|
@ -367,24 +282,8 @@
|
|||
}
|
||||
</script>
|
||||
<style>
|
||||
.data-preview-container {
|
||||
width: 100%;
|
||||
height: calc(100% - 0px);
|
||||
position: absolute;
|
||||
padding: 30px 10px;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
background: #fff;
|
||||
}
|
||||
.data-preview-container-option {
|
||||
width: 120px;
|
||||
height: 40px;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
right: 0px;
|
||||
}
|
||||
.data-preview-container-option div {
|
||||
width: 40px;
|
||||
#closeIconButton {
|
||||
width: 30px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
float: left;
|
||||
|
|
|
|||
|
|
@ -26,12 +26,10 @@ export const columns: BasicColumn[] = [
|
|||
{
|
||||
title: '区县',
|
||||
dataIndex: 'countyname',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '乡镇',
|
||||
dataIndex: 'streetname',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '图斑编号',
|
||||
|
|
@ -41,22 +39,18 @@ export const columns: BasicColumn[] = [
|
|||
{
|
||||
title: '下发时间',
|
||||
dataIndex: 'identificationtime',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '图斑面积',
|
||||
dataIndex: 'area',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '耕地面积',
|
||||
dataIndex: 'gengdiarea',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '判定结果',
|
||||
dataIndex: 'typename',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '当前状态',
|
||||
|
|
@ -81,18 +75,51 @@ export const columns: BasicColumn[] = [
|
|||
{
|
||||
title: '处理方式',
|
||||
dataIndex: 'resultname',
|
||||
editRow: true,
|
||||
editComponent: 'Select',
|
||||
editComponentProps: {
|
||||
options: [
|
||||
{
|
||||
label: '立案',
|
||||
value: '立案',
|
||||
},
|
||||
{
|
||||
label: '非立案',
|
||||
value: '非立案',
|
||||
},
|
||||
{
|
||||
label: '移交其他部门处理',
|
||||
value: '移交其他部门处理',
|
||||
},
|
||||
{
|
||||
label: '未处理',
|
||||
value: '未处理',
|
||||
},
|
||||
],
|
||||
},
|
||||
fixed: 'right',
|
||||
},
|
||||
{
|
||||
title: '立案号',
|
||||
dataIndex: 'registrnumber',
|
||||
editRow: true,
|
||||
editComponent: 'Input',
|
||||
fixed: 'right',
|
||||
},
|
||||
{
|
||||
title: '违法联系人',
|
||||
dataIndex: 'illegalcontact',
|
||||
editRow: true,
|
||||
editComponent: 'Input',
|
||||
fixed: 'right',
|
||||
},
|
||||
{
|
||||
title: '违法人身份证号',
|
||||
dataIndex: 'illegalshenfenzhenghao',
|
||||
editRow: true,
|
||||
editComponent: 'Input',
|
||||
fixed: 'right',
|
||||
width: 160,
|
||||
},
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -1,21 +1,12 @@
|
|||
<template>
|
||||
<div>
|
||||
<BasicTable @register="registerTable" :searchInfo="searchInfo">
|
||||
<BasicTable @register="registerTable">
|
||||
<template #toolbar>
|
||||
<PermissionBtn @btn-event="onBtnClicked" />
|
||||
</template>
|
||||
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
// icon: 'ant-design:ellipsis-outlined',
|
||||
label: '查看',
|
||||
onClick: viewAccount.bind(null, record),
|
||||
},
|
||||
]"
|
||||
/>
|
||||
<TableAction :actions="createActions(record)" />
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
|
|
@ -37,17 +28,19 @@
|
|||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { loadCaseInfoIllegalList } from '@/api/demo/system';
|
||||
import { BasicTable, useTable, TableAction, EditRecordRow } from '@/components/Table';
|
||||
import { loadCaseInfoIllegalList, dealIllegalCaseInfo } from '@/api/demo/system';
|
||||
import { PermissionBtn } from '@/components/PermissionBtn/index';
|
||||
import { columns, searchFormSchema } from './illegaltreatment.data';
|
||||
import { getAppEnvConfig } from '@/utils/env';
|
||||
import axios from 'axios';
|
||||
import ShowInfoModal from '@/views/demo/tiankongdi/curbspotcity/MapList/ShowInfoModal/index.vue';
|
||||
import { getCaseInfoById } from '@/api/tiankongdi/index';
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
import { cloneDeep } from 'lodash-es';
|
||||
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
|
||||
const { createMessage } = useMessage();
|
||||
defineOptions({ name: 'RoleManagement' });
|
||||
|
||||
const searchInfo = reactive<Recordable>({
|
||||
|
|
@ -56,11 +49,10 @@
|
|||
const showInfoData = ref();
|
||||
const showInfoOpen = ref(false);
|
||||
const searchParams = ref();
|
||||
const [registerTable, { reload, clearSelectedRowKeys }] = useTable({
|
||||
const [registerTable] = useTable({
|
||||
title: '违法处理',
|
||||
api: loadCaseInfoIllegalList,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
showAdvancedButton: false,
|
||||
|
|
@ -68,21 +60,94 @@
|
|||
},
|
||||
useSearchForm: true,
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
tableSetting: { fullScreen: true },
|
||||
// 搜索
|
||||
handleSearchInfoFn(info) {
|
||||
searchParams.value = info;
|
||||
return info;
|
||||
},
|
||||
actionColumn: {
|
||||
width: 80,
|
||||
width: 120,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
// slots: { customRender: 'action' },
|
||||
fixed: 'right',
|
||||
},
|
||||
});
|
||||
|
||||
const currentEditKeyRef = ref('');
|
||||
function createActions(record: EditRecordRow): ActionItem[] {
|
||||
if (!record.editable) {
|
||||
return [
|
||||
{
|
||||
label: '编辑',
|
||||
disabled: currentEditKeyRef.value ? currentEditKeyRef.value !== record.Id : false,
|
||||
onClick: handleEdit.bind(null, record),
|
||||
},
|
||||
{
|
||||
// icon: 'ant-design:ellipsis-outlined',
|
||||
label: '查看',
|
||||
onClick: viewAccount.bind(null, record),
|
||||
},
|
||||
];
|
||||
}
|
||||
return [
|
||||
{
|
||||
label: '保存',
|
||||
onClick: handleSave.bind(null, record),
|
||||
},
|
||||
{
|
||||
label: '取消',
|
||||
popConfirm: {
|
||||
title: '是否取消编辑',
|
||||
confirm: handleCancel.bind(null, record),
|
||||
},
|
||||
},
|
||||
];
|
||||
}
|
||||
function handleEdit(record: EditRecordRow) {
|
||||
console.log(record);
|
||||
currentEditKeyRef.value = record.Id;
|
||||
record.onEdit?.(true);
|
||||
}
|
||||
|
||||
function handleCancel(record: EditRecordRow) {
|
||||
currentEditKeyRef.value = '';
|
||||
record.onEdit?.(false, false);
|
||||
}
|
||||
|
||||
async function handleSave(record: EditRecordRow) {
|
||||
console.log(record);
|
||||
// 校验
|
||||
createMessage.loading({ content: '正在保存...', duration: 0, key: 'saving' });
|
||||
const valid = await record.onValid?.();
|
||||
console.log(valid);
|
||||
if (valid) {
|
||||
try {
|
||||
const data = cloneDeep(record.editValueRefs);
|
||||
console.log(data);
|
||||
let querys = { ...data };
|
||||
querys.id = record.Id;
|
||||
console.log(querys);
|
||||
//TODO 此处将数据提交给服务器保存
|
||||
const res = await dealIllegalCaseInfo(querys);
|
||||
console.log(res);
|
||||
if (res) {
|
||||
// 保存之后提交编辑状态
|
||||
const pass = await record.onEdit?.(false, true);
|
||||
if (pass) {
|
||||
currentEditKeyRef.value = '';
|
||||
}
|
||||
createMessage.success({ content: '数据已保存', key: 'saving' });
|
||||
}
|
||||
} catch (error) {
|
||||
createMessage.error({ content: '保存失败', key: 'saving' });
|
||||
}
|
||||
} else {
|
||||
// const pass = await record.onEdit?.(false, true);
|
||||
createMessage.error({ content: '请填写正确的数据', key: 'saving' });
|
||||
}
|
||||
}
|
||||
|
||||
// 直接下载接口返回的二进制流
|
||||
function handleExport() {
|
||||
let params = { ...searchParams.value };
|
||||
|
|
|
|||
|
|
@ -25,17 +25,14 @@ export const columns: BasicColumn[] = [
|
|||
{
|
||||
title: '图斑来源',
|
||||
dataIndex: 'tubanlaiyuan',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '区县',
|
||||
dataIndex: 'countyname',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '乡镇',
|
||||
dataIndex: 'streetname',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '图斑编号',
|
||||
|
|
@ -45,22 +42,18 @@ export const columns: BasicColumn[] = [
|
|||
{
|
||||
title: '下发时间',
|
||||
dataIndex: 'identificationtime',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '图斑面积',
|
||||
dataIndex: 'area',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '耕地面积',
|
||||
dataIndex: 'typeTuituCount',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '判定结果',
|
||||
dataIndex: 'typename',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '当前状态',
|
||||
|
|
@ -146,7 +139,8 @@ export const searchFormSchema: FormSchema[] = [
|
|||
colProps: { span: 4 },
|
||||
componentProps: {
|
||||
options: [
|
||||
{ label: '农用地', value: '农用地' },
|
||||
{ label: '农用地违法', value: '农用地违法' },
|
||||
{ label: '建设用地', value: '建设用地' },
|
||||
{ label: '推堆土', value: '推堆土' },
|
||||
],
|
||||
},
|
||||
|
|
|
|||
|
|
@ -36,7 +36,17 @@
|
|||
<a-descriptions-item label="判读时间">{{ identification_time }}</a-descriptions-item>
|
||||
<a-descriptions-item label="案件备注">{{ remark }}</a-descriptions-item>
|
||||
<a-descriptions-item label="下发时间">{{ createtime }}</a-descriptions-item>
|
||||
<a-descriptions-item label="案件图片">{{ anjianzhaopian }}</a-descriptions-item>
|
||||
<a-descriptions-item label="案件图片">
|
||||
<template v-for="(imageItem, imageIndex) in anjianzhaopianList" :key="imageIndex" >
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`http://192.168.10.102:9023/${imageItem}`"
|
||||
></a-image>
|
||||
</template>
|
||||
<!-- {{ anjianzhaopian }} -->
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" tab="线索填报" force-render>
|
||||
|
|
@ -58,8 +68,30 @@
|
|||
<a-descriptions-item label="违法联系人">{{ illegal_contact }}</a-descriptions-item>
|
||||
<a-descriptions-item label="违法人身份证号">{{ illegal_shenfenzhenghao }}</a-descriptions-item>
|
||||
<a-descriptions-item label="判定依据说明">{{ pandingyijushuoming }}</a-descriptions-item>
|
||||
<a-descriptions-item label="附件">{{ fujian }}</a-descriptions-item>
|
||||
<a-descriptions-item label="照片">{{ casepic }}</a-descriptions-item>
|
||||
<a-descriptions-item label="附件">
|
||||
<template v-for="(item, itemIndex) in fujianList" :key="itemIndex" >
|
||||
<div v-if="item">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<!-- {{ fujian }} -->
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="照片">
|
||||
<template v-for="(imageItem, imageIndex) in casepicList" :key="imageIndex" >
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`http://192.168.10.102:9023/${imageItem}`"
|
||||
></a-image>
|
||||
</template>
|
||||
<!-- {{ casepic }} -->
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="填报人">{{ examiner_name }}</a-descriptions-item>
|
||||
<a-descriptions-item label="填报时间">{{ examine_time }}</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
|
|
@ -74,9 +106,43 @@
|
|||
'word-break': 'break-all'
|
||||
}">
|
||||
<a-descriptions-item label="整改措施">{{ measure_name }}</a-descriptions-item>
|
||||
<a-descriptions-item label="验收表">{{ yanshoubiao }}</a-descriptions-item>
|
||||
<a-descriptions-item label="拆除复耕后照片">{{ chaichufugenghoupic }}</a-descriptions-item>
|
||||
<a-descriptions-item label="附件">{{ zhenggaifujian }}</a-descriptions-item>
|
||||
<a-descriptions-item label="验收表">
|
||||
<template v-for="(item, itemIndex) in yanshoubiaoList" :key="itemIndex" >
|
||||
<div v-if="item">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<!-- {{ yanshoubiao }} -->
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="拆除复耕后照片">
|
||||
<template v-for="(imageItem, imageIndex) in chaichufugenghoupicList" :key="imageIndex" >
|
||||
<a-image
|
||||
v-if="imageItem"
|
||||
width="100px"
|
||||
height="100px"
|
||||
:src="`http://192.168.10.102:9023/${imageItem}`"
|
||||
></a-image>
|
||||
</template>
|
||||
<!-- {{ chaichufugenghoupic }} -->
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="附件">
|
||||
<template v-for="(item, itemIndex) in zhenggaifujianList" :key="itemIndex" >
|
||||
<div v-if="item">
|
||||
<Icon
|
||||
:style="`font-size: 30px; cursor: pointer;`"
|
||||
icon="ion:document-attach-outline"
|
||||
@click="downLoadFile(item)"
|
||||
/>
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<!-- {{ zhenggaifujian }} -->
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="办理人">{{ transactor_name }}</a-descriptions-item>
|
||||
<a-descriptions-item label="办理时间">{{ transact_time }}</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
|
|
@ -100,12 +166,13 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { defineProps,ref, } from "vue"
|
||||
import { defineProps,ref,computed } from "vue"
|
||||
import MapboxMap from '@/components/MapboxMaps/MapComponent.vue'
|
||||
import {getConfig} from '@/api/sys/layerManagement'
|
||||
import { getGeom } from '@/api/sys/layerManagement';
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
const { createMessage } = useMessage();
|
||||
import Icon from '@/components/Icon/Icon.vue';
|
||||
|
||||
const MapboxComponent = ref();
|
||||
const mapConfig = ref({})
|
||||
|
|
@ -217,6 +284,24 @@ const {
|
|||
is_jieshou,
|
||||
anjianzhaopian
|
||||
} = props.showInfoData
|
||||
const anjianzhaopianList = computed(() => {
|
||||
return anjianzhaopian?anjianzhaopian.split(','):[]
|
||||
})
|
||||
const casepicList = computed(() => {
|
||||
return casepic?casepic.split(','):[]
|
||||
})
|
||||
const chaichufugenghoupicList = computed(() => {
|
||||
return chaichufugenghoupic?chaichufugenghoupic.split(','):[]
|
||||
})
|
||||
const fujianList = computed(() => {
|
||||
return fujian?fujian.split(','):[]
|
||||
})
|
||||
const zhenggaifujianList = computed(() => {
|
||||
return zhenggaifujian?zhenggaifujian.split(','):[]
|
||||
})
|
||||
const yanshoubiaoList = computed(() => {
|
||||
return yanshoubiao?yanshoubiao.split(','):[]
|
||||
})
|
||||
|
||||
function onMapboxLoad(){
|
||||
changeTask();
|
||||
|
|
@ -254,6 +339,9 @@ function changeTask() {
|
|||
createMessage.error('当前数据没有图斑!');
|
||||
}
|
||||
}
|
||||
const downLoadFile = (url) => {
|
||||
window.open(`http://192.168.10.102:9023/${rul}`,'_self')
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue