Merge branch 'main' of http://123.132.248.154:10000/HC_YFZX/CaiYuanYiTiHua
commit
3f6d6e78fd
|
|
@ -24,6 +24,12 @@ enum Api {
|
|||
CaseRecover = '/api/DroneCaseInfoFLH/CaseRecover',
|
||||
// 图斑分割
|
||||
CaseSplit = '/api/DroneCaseInfoFLH/CaseSplit',
|
||||
// 判读-待审核列表
|
||||
LoadCaseInfoLists = '/api/DroneCaseInfoFLH/LoadCaseInfoCheckTuBanList',
|
||||
// 判读-详情
|
||||
GetCaseInfo = '/api/DroneCaseInfoFLH/GetCaseInfo',
|
||||
// 判读-关闭案件
|
||||
CloseCaseInfo = '/api/DroneCaseInfoFLH/CloseSingleCaseInfo',
|
||||
}
|
||||
export function LoadCaiKuangTaskList(params) {
|
||||
return defHttp.get({ url: Api.LoadCaiKuangTaskList, params });
|
||||
|
|
@ -62,4 +68,22 @@ export function CaseRecover(params){
|
|||
}
|
||||
export function CaseSplit(params){
|
||||
return defHttp.post({ url: Api.CaseSplit, data: params });
|
||||
}
|
||||
export function LoadCaseInfoLists(params){
|
||||
return defHttp.get({
|
||||
url: Api.LoadCaseInfoLists,
|
||||
params,
|
||||
})
|
||||
}
|
||||
export function GetCaseInfo(params: { id: string }){
|
||||
return defHttp.get({
|
||||
url: Api.GetCaseInfo,
|
||||
params,
|
||||
})
|
||||
}
|
||||
export function CloseCaseInfo(params: string){
|
||||
return defHttp.post({
|
||||
url: Api.CloseCaseInfo,
|
||||
data: params,
|
||||
})
|
||||
}
|
||||
|
|
@ -18,6 +18,12 @@ enum Api {
|
|||
LoadTaskIllegalDetailList = '/api/DroneCaseInfoSatellite/LoadTaskIllegalDetailList',
|
||||
// 图斑详情
|
||||
GetCaseInfoById = '/api/DroneCaseInfoSatellite/GetCaseInfoById',
|
||||
// 判读-待审核列表
|
||||
LoadCaseInfoLists = '/api/DroneCaseInfoSatellite/LoadCaseInfoCheckTuBanList',
|
||||
// 判读-详情
|
||||
GetCaseInfo = '/api/DroneCaseInfoSatellite/GetCaseInfo',
|
||||
// 判读-关闭案件
|
||||
CloseCaseInfo = '/api/DroneCaseInfoSatellite/CloseSingleCaseInfo',
|
||||
|
||||
/****************************************************************************************************************************/
|
||||
|
||||
|
|
@ -51,6 +57,12 @@ enum Api {
|
|||
SplitCase = '/api/DroneCaseInfoMinerals/CaseSplit',
|
||||
// 更新图斑行政区划
|
||||
UpdateDroneCaseInfo = '/api/DroneCaseInfoMinerals/UpdateDroneCaseInfo',
|
||||
// 判读-待审核列表
|
||||
MainLoadCaseInfoLists = '/api/DroneCaseInfoMinerals/LoadCaseInfoCheckTuBanList',
|
||||
// 判读-详情
|
||||
MainGetCaseInfo = '/api/DroneCaseInfoMinerals/GetCaseInfo',
|
||||
// 判读-关闭案件
|
||||
MainCloseCaseInfo = '/api/DroneCaseInfoMinerals/CloseSingleCaseInfo',
|
||||
}
|
||||
|
||||
export function LoadCaiKuangTaskList(params) {
|
||||
|
|
@ -83,6 +95,24 @@ export function LoadReformCaseCount(params) {
|
|||
export function GetCaseInfoById(params?: { id: string }) {
|
||||
return defHttp.get({ url: Api.GetCaseInfoById, params });
|
||||
}
|
||||
export function LoadCaseInfoLists(params){
|
||||
return defHttp.get({
|
||||
url: Api.LoadCaseInfoLists,
|
||||
params,
|
||||
})
|
||||
}
|
||||
export function GetCaseInfo(params: { id: string }){
|
||||
return defHttp.get({
|
||||
url: Api.GetCaseInfo,
|
||||
params,
|
||||
})
|
||||
}
|
||||
export function CloseCaseInfo(params: string){
|
||||
return defHttp.post({
|
||||
url: Api.CloseCaseInfo,
|
||||
data: params,
|
||||
})
|
||||
}
|
||||
|
||||
/****************************************************************************************************************************/
|
||||
|
||||
|
|
@ -129,4 +159,22 @@ export function splitCase(params){
|
|||
return defHttp.post({ url: Api.SplitCase, data: params });
|
||||
}
|
||||
export const updateDroneCaseInfo = (params) =>
|
||||
defHttp.post({ url: Api.UpdateDroneCaseInfo, params });
|
||||
defHttp.post({ url: Api.UpdateDroneCaseInfo, params });
|
||||
export function MainLoadCaseInfoLists(params){
|
||||
return defHttp.get({
|
||||
url: Api.MainLoadCaseInfoLists,
|
||||
params,
|
||||
})
|
||||
}
|
||||
export function MainGetCaseInfo(params: { id: string }){
|
||||
return defHttp.get({
|
||||
url: Api.MainGetCaseInfo,
|
||||
params,
|
||||
})
|
||||
}
|
||||
export function MainCloseCaseInfo(params: string){
|
||||
return defHttp.post({
|
||||
url: Api.MainCloseCaseInfo,
|
||||
data: params,
|
||||
})
|
||||
}
|
||||
|
|
@ -51,6 +51,12 @@ enum Api {
|
|||
LoadCaseInfoTuBanList = '/api/DroneCaseInfoXcsj/LoadCaseInfoTuBanList',
|
||||
CaseOffence = '/api/DroneCaseInfoXcsj/CaseOffence',
|
||||
LoadCaseInfoListOffence = '/api/DroneCaseInfoXcsj/LoadCaseInfoListOffence',
|
||||
// 判读-待审核列表
|
||||
LoadCaseInfoLists = '/api/DroneCaseInfoXcsj/LoadCaseInfoCheckTuBanList',
|
||||
// 判读-详情
|
||||
GetCaseInfo = '/api/DroneCaseInfoXcsj/GetCaseInfo',
|
||||
// 判读-关闭案件
|
||||
CloseCaseInfo = '/api/DroneCaseInfoXcsj/CloseSingleCaseInfo',
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -168,4 +174,22 @@ export function loadCaseInfoTuBanList(params) {
|
|||
export const getCaseOffence = (params) =>
|
||||
defHttp.get({ url: Api.CaseOffence, params });
|
||||
export const getLoadCaseInfoListOffence = (params) =>
|
||||
defHttp.get({ url: Api.LoadCaseInfoListOffence, params });
|
||||
defHttp.get({ url: Api.LoadCaseInfoListOffence, params });
|
||||
export function LoadCaseInfoLists(params){
|
||||
return defHttp.get({
|
||||
url: Api.LoadCaseInfoLists,
|
||||
params,
|
||||
})
|
||||
}
|
||||
export function GetCaseInfo(params: { id: string }){
|
||||
return defHttp.get({
|
||||
url: Api.GetCaseInfo,
|
||||
params,
|
||||
})
|
||||
}
|
||||
export function CloseCaseInfo(params: string){
|
||||
return defHttp.post({
|
||||
url: Api.CloseCaseInfo,
|
||||
data: params,
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<BasicTable class="w-4/4 xl:w-5/5" @register="registerTable">
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
label: '详情',
|
||||
onClick: () => {
|
||||
handleAudit(record);
|
||||
},
|
||||
}
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<a-modal width="75%" v-model:open="openModal" title="线索审核" :destroyOnClose="true" :footer="null">
|
||||
<InfoModal :infoData="infoData.info" @handleOk="handleOk" @closeModal="closeModal" :control="false"/>
|
||||
</a-modal>
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import InfoModal from '../audit/InfoModal/index.vue'
|
||||
import { columns, searchFormSchema } from './util';
|
||||
import { LoadCaseInfoLists, GetCaseInfo } from '@/api/degraining/index';
|
||||
|
||||
const infoData = ref({})
|
||||
const openModal = ref(false)
|
||||
|
||||
const [registerTable, { reload, expandAll}] = useTable({
|
||||
title: '已审核',
|
||||
api: LoadCaseInfoLists,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
striped: false,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 使用搜索表单
|
||||
useSearchForm: true,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
beforeFetch(data) {
|
||||
let params = {...data,nowStatus: '已审核'}
|
||||
return params
|
||||
},
|
||||
afterFetch(data) {
|
||||
console.log('afterFetch', data);
|
||||
},
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
},
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
function handleAudit(record) {
|
||||
GetCaseInfo({id: record.Id}).then(res => {
|
||||
console.log(res)
|
||||
infoData.value = res
|
||||
openModal.value = true
|
||||
})
|
||||
}
|
||||
const handleOk = () => {
|
||||
console.log('infoData',infoData.value)
|
||||
}
|
||||
const closeModal = () => {
|
||||
openModal.value = false
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { h } from 'vue';
|
||||
import { Tag } from 'ant-design-vue';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '案件编号',
|
||||
dataIndex: 'case_no',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '案件描述',
|
||||
dataIndex: 'case_description',
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: '案件类型',
|
||||
dataIndex: 'typename',
|
||||
},
|
||||
{
|
||||
title: '县',
|
||||
dataIndex: 'countyname',
|
||||
},
|
||||
{
|
||||
title: '镇',
|
||||
dataIndex: 'streetname',
|
||||
},
|
||||
{
|
||||
title: '判读人',
|
||||
dataIndex: 'identification_user',
|
||||
},
|
||||
{
|
||||
title: '判读时间',
|
||||
dataIndex: 'identification_time',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'checkstatus',
|
||||
customRender: ({ record }) => {
|
||||
const { checkstatus } = record;
|
||||
if(checkstatus == '待审核'){
|
||||
return h(Tag, { color: 'yellow' }, () => checkstatus);
|
||||
}else if(checkstatus == '已审核'){
|
||||
return h(Tag, { color: 'green' }, () => checkstatus);
|
||||
}
|
||||
return h(Tag, {}, () => checkstatus);
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '案件编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 5 },
|
||||
componentProps: {
|
||||
placeholder: '请输入名称/编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'typename',
|
||||
label:'案件类型',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({formModel}) => {
|
||||
return {
|
||||
api: getLoad,
|
||||
params: { code: 'gdflhtblx' },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'itemName',
|
||||
valueField: 'itemValue',
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'countyid',
|
||||
label:'县/区',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ tableAction, formModel }) => {
|
||||
return {
|
||||
api: getChildrenTree,
|
||||
params: { parentId: 371300 },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
onChange: () => {
|
||||
formModel.streetid = '';
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'streetid',
|
||||
label:'乡镇/街道',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: formModel.countyid && getChildrenTree,
|
||||
params: { parentId: formModel.countyid },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
};
|
||||
},
|
||||
}
|
||||
];
|
||||
|
|
@ -0,0 +1,381 @@
|
|||
<template>
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">案件编号:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.case_no" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">案件类型:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.typename"
|
||||
:options="typenameOptions"
|
||||
placeholder="请选择案件类型" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="flex:2">
|
||||
<div class="label">案件详情:</div>
|
||||
<div class="item-value" style="flex:3">
|
||||
<a-input v-model:value="props.infoData.case_description" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">县/区:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.countyid"
|
||||
:options="countyOptions"
|
||||
placeholder="请选择县/区" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">乡镇/街道:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.streetid"
|
||||
:options="streetOptions"
|
||||
placeholder="请选择乡镇/街道" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">社区/村:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.communityid"
|
||||
:options="communityOptions"
|
||||
placeholder="请选择社区/村" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">详细地址:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.address" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">图斑面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">耕地面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.gengdi_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">占重点区域面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.zhongdianquyu_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">占生态红线面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.shengtaibaohuhongxian_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">占空间规划面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.guotukongjianguihua_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">占农用地面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.nongyongdi_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="flex:2">
|
||||
<div class="label">占永久基本农田面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.yongjiujibennongtian_area" disabled/>
|
||||
</div>
|
||||
<div style="flex:2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">前影像名称:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.pre_phase_img" disabled />
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">前时相时间:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.pre_phase_time" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">备注:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.remark" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">后影像名称:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.later_phase_img" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">后时相时间:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.later_phase_time" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">经纬度:</div>
|
||||
<div class="item-value" style="flex:2;display: flex">
|
||||
<a-input id="lnglat" style="margin-right: 15px;" :value="`${props.infoData.lng},${props.infoData.lat}`" disabled/>
|
||||
<a-button @click="copyText">复制</a-button>
|
||||
<textarea id="copyText" style="position: absolute;left: -9999px;top: -9999px;" :value="`${props.infoData.lng},${props.infoData.lat}`"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">判读人:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.identification_user" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">判读时间:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.identification_time" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item" style="width: 100%;">
|
||||
<div class="label">图片:</div>
|
||||
<div style="flex:9;display:flex;">
|
||||
<a-image-preview-group>
|
||||
<div class="video-item" v-for="(item, index) in fileList" :key="index" style="display: inline-block;position:relative;">
|
||||
<!-- <div v-if="!$attrs.disabled" class="video-delete-btn" @click="handlerDelete(index)">
|
||||
<CloseOutlined />
|
||||
</div> -->
|
||||
<a-image :src="item.url" style="width:100px;height:100px;" />
|
||||
</div>
|
||||
</a-image-preview-group>
|
||||
<!-- <Upload
|
||||
list-type="picture-card"
|
||||
:showUploadList="false"
|
||||
:custom-request="customRequest"
|
||||
@change="handleChange"
|
||||
>
|
||||
<div>
|
||||
<plus-outlined />
|
||||
<div style="margin-top: 8px">Upload</div>
|
||||
</div>
|
||||
</Upload> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<div class="button-div">
|
||||
<a-button style="margin-right: 10px;" @click="emits('closeModal')">关闭弹窗</a-button>
|
||||
<a-button v-if="props.control" style="margin-right: 10px;" type="primary" class="danger-button" @click="emits('closeCase',props.infoData.id)">关闭线索</a-button>
|
||||
<a-button v-if="props.control" style="margin-right: 10px;" type="primary" @click="submit">审核通过</a-button>
|
||||
<a-button v-if="props.control" style="margin-right: 10px;" type="primary" class="danger-button" @click="reSubmit">复提</a-button>
|
||||
<!-- <a-button v-if="props.control" type="primary">导入</a-button> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { defineProps, ref, watch, onMounted, defineEmits } from "vue"
|
||||
import { PlusOutlined, CloseOutlined } from '@ant-design/icons-vue';
|
||||
import { Upload, message } from 'ant-design-vue';
|
||||
import { uploadFile } from '@/api/formrender/index';
|
||||
import { getAppEnvConfig } from '@/utils/env';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
|
||||
const props = defineProps(['infoData','control'])
|
||||
const emits = defineEmits(['handleOk','closeModal','closeCase','reSubmit'])
|
||||
|
||||
const typenameOptions = ref([])
|
||||
const countyOptions = ref([])
|
||||
const streetOptions = ref([])
|
||||
const communityOptions = ref([])
|
||||
const fileList = ref<any>([])
|
||||
const previewVisible = ref(false);
|
||||
const previewImage = ref('');
|
||||
const previewTitle = ref('');
|
||||
|
||||
onMounted(() => {
|
||||
getLoad({code:'gdflhtblx'}).then(res => {
|
||||
typenameOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.itemName,
|
||||
value: item.itemValue
|
||||
}
|
||||
})
|
||||
})
|
||||
getChildrenTree({ parentId: 371300 }).then(res => {
|
||||
countyOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
}
|
||||
})
|
||||
})
|
||||
props.infoData.countyid && getChildrenTree({ parentId: props.infoData.countyid }).then(res => {
|
||||
streetOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
}
|
||||
})
|
||||
})
|
||||
props.infoData.streetid && getChildrenTree({ parentId: props.infoData.streetid }).then(res => {
|
||||
communityOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
}
|
||||
})
|
||||
})
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
props.infoData.casepic && props.infoData.casepic.split(',').forEach(item => {
|
||||
fileList.value.push({
|
||||
uid: '-1',
|
||||
name: item,
|
||||
status: 'done',
|
||||
url: VITE_GLOB_API_URL + '/' + item,
|
||||
})
|
||||
})
|
||||
})
|
||||
watch(() => fileList.value.length, (val) => {
|
||||
props.infoData.casepic = fileList.value.map(item => item.name).join(',')
|
||||
})
|
||||
|
||||
const handleChange = (info) => {
|
||||
if (info.file.status !== 'uploading') {
|
||||
}
|
||||
if (info.file.status === 'done') {
|
||||
} else if (info.file.status === 'error') {
|
||||
}
|
||||
};
|
||||
const customRequest = (file) => {
|
||||
console.log('handleCustomRequest',file)
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
const formData = new FormData()
|
||||
formData.append('files', file.file)
|
||||
uploadFile(formData).then(res => {
|
||||
console.log(res)
|
||||
fileList.value?.push({
|
||||
uid: '-1',
|
||||
name: res[0].filePath,
|
||||
status: 'done',
|
||||
url: VITE_GLOB_API_URL + '/' + res[0].filePath,
|
||||
});
|
||||
})
|
||||
}
|
||||
const handlePreview = () => {
|
||||
|
||||
}
|
||||
const handleRemove = () => {
|
||||
|
||||
}
|
||||
const handlerDelete = (index) => {
|
||||
fileList.value.splice(index, 1);
|
||||
}
|
||||
const handlerPreviewImage = (url,list) => {
|
||||
|
||||
}
|
||||
const submit = () => {
|
||||
console.log('通过')
|
||||
emits('handleOk')
|
||||
}
|
||||
const reSubmit = () => {
|
||||
emits('reSubmit',props.infoData.original_case_no)
|
||||
}
|
||||
const copyText = () => {
|
||||
const copyTextDom = document.getElementById('copyText')
|
||||
console.log(copyTextDom)
|
||||
if(copyTextDom){
|
||||
copyTextDom.select()
|
||||
document.execCommand('Copy');
|
||||
message.success('复制成功')
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
:deep(.ant-image){
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.video-delete-btn {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 10px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-bottom-left-radius: 80%;
|
||||
background: rgb(0 0 0 / 20%);
|
||||
color: #fff;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
z-index: 999;
|
||||
}
|
||||
.modal-content{
|
||||
padding: 20px;
|
||||
}
|
||||
.row{
|
||||
display: flex;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.select-width{
|
||||
width:100%;
|
||||
}
|
||||
.item{
|
||||
display: flex;
|
||||
flex:1;
|
||||
.label{
|
||||
flex: 1;
|
||||
padding: 0px 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.item-value{
|
||||
padding: 0px 15px;
|
||||
flex:1;
|
||||
}
|
||||
}
|
||||
.button-div{
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
.danger-button{
|
||||
background: #ed6f6f;
|
||||
&:hover{
|
||||
background: #faa19d;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,225 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<BasicTable class="w-4/4 xl:w-5/5" @register="registerTable">
|
||||
<template #toolbar>
|
||||
<!-- <a-button type="primary" @click="handleCreate">模板下载</a-button> -->
|
||||
<!-- <a-upload
|
||||
:accept="'.xlsx,.csv,.xls'"
|
||||
:showUploadList="false"
|
||||
:custom-request="customRequest"
|
||||
>
|
||||
<a-button type="primary">导入</a-button>
|
||||
</a-upload> -->
|
||||
</template>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
label: '审核',
|
||||
onClick: () => {
|
||||
handleAudit(record);
|
||||
},
|
||||
}
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<a-modal width="75%" v-model:open="openModal" title="线索审核" :destroyOnClose="true" :footer="null">
|
||||
<InfoModal
|
||||
:infoData="infoData.info"
|
||||
@handleOk="handleOk"
|
||||
@closeModal="closeModal"
|
||||
:control="true"
|
||||
@closeCase="closeCase"
|
||||
@reSubmit="reSubmit"/>
|
||||
</a-modal>
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref, h } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import InfoModal from './InfoModal/index.vue'
|
||||
import { columns, searchFormSchema, dictionary, code } from './util';
|
||||
import { getDetail } from '@/api/sys/WFSchemeInfo';
|
||||
import { functionsaveForm, LoadFormScheme } from '@/api/demo/formScheme';
|
||||
import { buildGUID } from '@/utils/uuid';
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
import { create, saveDraft, GetDraft } from '@/api/sys/WFProcess';
|
||||
import { message, Modal, Input } from 'ant-design-vue';
|
||||
import { SaveReSubmitInfo } from '@/api/demo/resubmit';
|
||||
import { LoadCaseInfoLists, GetCaseInfo, CloseCaseInfo } from '@/api/degraining/index';
|
||||
|
||||
const userStore = useUserStore();
|
||||
const userInfo = userStore.getUserInfo;
|
||||
const infoData = ref({})
|
||||
const openModal = ref(false)
|
||||
const reSubmitRemark = ref("")
|
||||
|
||||
const [registerTable, { reload, expandAll}] = useTable({
|
||||
title: '待审核',
|
||||
api: LoadCaseInfoLists,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
striped: false,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 使用搜索表单
|
||||
useSearchForm: true,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
beforeFetch(data) {
|
||||
let params = {...data,nowStatus: '待审核'}
|
||||
return params
|
||||
},
|
||||
afterFetch(data) {
|
||||
console.log('afterFetch', data);
|
||||
},
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
},
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
function handleAudit(record) {
|
||||
GetCaseInfo({id: record.Id}).then(res => {
|
||||
console.log(res)
|
||||
infoData.value = res
|
||||
openModal.value = true
|
||||
})
|
||||
}
|
||||
const handleOk = async () => {
|
||||
try {
|
||||
const { id } = infoData.value.info
|
||||
const checkValue = await GetDraft({id})
|
||||
if(checkValue.process == null){
|
||||
let data = await getDetail({ code });
|
||||
let content = JSON.parse(data.scheme.content);
|
||||
const currentNode = content.wfData.find((t) => t.type == 'bpmn:StartEvent');
|
||||
let formVerison = currentNode.formVerison
|
||||
let keyValue = ''
|
||||
const schemaData = await LoadFormScheme({
|
||||
schemeId: formVerison
|
||||
});
|
||||
const scheme = JSON.parse(schemaData.scheme);
|
||||
scheme.formInfo.tabList.forEach((tabElement) => {
|
||||
tabElement.schemas.forEach((element) => {
|
||||
if (element.field == currentNode.formRelationId) {
|
||||
keyValue = element.componentProps.fieldName;
|
||||
}
|
||||
});
|
||||
});
|
||||
let commit = {
|
||||
schemeId: currentNode.formVerison,
|
||||
pkey: keyValue,
|
||||
pkeyValue: id,
|
||||
};
|
||||
let resultQuery = {
|
||||
schemeCode: code,
|
||||
userId: userInfo.id,
|
||||
title: '',
|
||||
processId: id,
|
||||
InstanceInfo: JSON.stringify(commit),
|
||||
};
|
||||
await saveDraft(resultQuery);
|
||||
resultQuery.schemeCode = '';
|
||||
const result = await create(resultQuery);
|
||||
if(result){
|
||||
message.success('发起流程成功');
|
||||
reload()
|
||||
openModal.value = false
|
||||
}else{
|
||||
message.error('发起流程失败');
|
||||
}
|
||||
}else{
|
||||
message.warning('该案件已发起流程');
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err)
|
||||
}
|
||||
}
|
||||
const closeModal = () => {
|
||||
openModal.value = false
|
||||
}
|
||||
const closeCase = (id: string) => {
|
||||
Modal.confirm({
|
||||
title: '关闭案件',
|
||||
content: '确定关闭该案件吗?',
|
||||
onOk: async () => {
|
||||
const result = await CloseCaseInfo(id)
|
||||
if(result){
|
||||
message.success('关闭案件成功');
|
||||
reload()
|
||||
openModal.value = false
|
||||
}else{
|
||||
message.error('关闭案件失败');
|
||||
}
|
||||
},
|
||||
onCancel() {},
|
||||
})
|
||||
}
|
||||
const reSubmit = (originalcaseno: string) => {
|
||||
Modal.confirm({
|
||||
title: '请输入复提原因',
|
||||
content: h('input',{
|
||||
class: 'reSubmitInput',
|
||||
onChange: (e) => reSubmitRemark.value = e.target.value
|
||||
}),
|
||||
onOk: async () => {
|
||||
console.log(reSubmitRemark.value)
|
||||
const result = await SaveReSubmitInfo({ originalcaseno, remark: reSubmitRemark.value })
|
||||
if(result){
|
||||
message.success('复提成功');
|
||||
reload()
|
||||
openModal.value = false
|
||||
}else{
|
||||
message.error('复提失败');
|
||||
}
|
||||
reSubmitRemark.value = ''
|
||||
},
|
||||
onCancel() {
|
||||
reSubmitRemark.value = ''
|
||||
},
|
||||
})
|
||||
}
|
||||
const customRequest = (file) => {
|
||||
console.log('handleCustomRequest',file)
|
||||
// const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
const formData = new FormData()
|
||||
formData.append('files', file.file)
|
||||
// uploadFile(formData).then(res => {
|
||||
// console.log(res)
|
||||
// fileList.value?.push({
|
||||
// uid: '-1',
|
||||
// name: res[0].filePath,
|
||||
// status: 'done',
|
||||
// url: VITE_GLOB_API_URL + '/' + res[0].filePath,
|
||||
// });
|
||||
// })
|
||||
}
|
||||
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.reSubmitInput{
|
||||
border: 1px solid;
|
||||
width: 100%;
|
||||
height: 35px;
|
||||
border-radius: 5px;
|
||||
padding: 0px 10px;
|
||||
border-color: #000;
|
||||
transition: 0.2s;
|
||||
&:focus{
|
||||
border-color: #6db8ff;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { h } from 'vue';
|
||||
import { Tag } from 'ant-design-vue';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
|
||||
export const code = '0000004'
|
||||
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '案件编号',
|
||||
dataIndex: 'case_no',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '案件描述',
|
||||
dataIndex: 'case_description',
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: '案件类型',
|
||||
dataIndex: 'typename',
|
||||
},
|
||||
{
|
||||
title: '县',
|
||||
dataIndex: 'countyname',
|
||||
},
|
||||
{
|
||||
title: '镇',
|
||||
dataIndex: 'streetname',
|
||||
},
|
||||
{
|
||||
title: '判读人',
|
||||
dataIndex: 'identification_user',
|
||||
},
|
||||
{
|
||||
title: '判读时间',
|
||||
dataIndex: 'identification_time',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'checkstatus',
|
||||
customRender: ({ record }) => {
|
||||
const { checkstatus } = record;
|
||||
if(checkstatus == '待审核'){
|
||||
return h(Tag, { color: 'yellow' }, () => checkstatus);
|
||||
}else if(checkstatus == '已审核'){
|
||||
return h(Tag, { color: 'green' }, () => checkstatus);
|
||||
}
|
||||
return h(Tag, {}, () => checkstatus);
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '案件编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 5 },
|
||||
componentProps: {
|
||||
placeholder: '请输入名称/编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'typename',
|
||||
label:'案件类型',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({formModel}) => {
|
||||
return {
|
||||
api: getLoad,
|
||||
params: { code: 'gdflhtblx' },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'itemName',
|
||||
valueField: 'itemValue',
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'countyid',
|
||||
label:'县/区',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ tableAction, formModel }) => {
|
||||
return {
|
||||
api: getChildrenTree,
|
||||
params: { parentId: 371300 },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
onChange: () => {
|
||||
formModel.streetid = '';
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'streetid',
|
||||
label:'乡镇/街道',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: formModel.countyid && getChildrenTree,
|
||||
params: { parentId: formModel.countyid },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
};
|
||||
},
|
||||
}
|
||||
];
|
||||
|
||||
export const dictionary = {
|
||||
_input_39: 'case_no',
|
||||
_input_15: 'typename',
|
||||
_input_16: 'case_description',
|
||||
_input_3: 'countyid',
|
||||
_input_10: 'streetid',
|
||||
_input_ca1c543fcf014e6abdcb6d329d796cee: 'communityid',
|
||||
_input_43: 'area',
|
||||
_input_18fd0953784b4c35b9219bd6defaf376: 'gengdi_area',
|
||||
_input_42fed651e58c4b5daf9868ff6a0da3b0: 'shengtaibaohuhongxian_area',
|
||||
_input_520d1d8068f4492ea8c42ce9bb61b3cf: 'nongyongdi_area',
|
||||
_input_039dd978de5c4176b2913eae5ba60844: 'yongjiujibennongtian_area',
|
||||
_input_17: 'remark',
|
||||
_input_4: 'lng',
|
||||
_input_14: 'lat',
|
||||
_input_44: 'identification_time',
|
||||
_image_upload_369: 'casepic',
|
||||
}
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<BasicTable class="w-4/4 xl:w-5/5" @register="registerTable">
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
label: '详情',
|
||||
onClick: () => {
|
||||
handleAudit(record);
|
||||
},
|
||||
}
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<a-modal width="75%" v-model:open="openModal" title="线索审核" :destroyOnClose="true" :footer="null">
|
||||
<InfoModal :infoData="infoData.info" @handleOk="handleOk" :control="false"/>
|
||||
</a-modal>
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import InfoModal from '../audit/InfoModal/index.vue'
|
||||
import { columns, searchFormSchema } from './util';
|
||||
import { LoadCaseInfoLists, GetCaseInfo } from '@/api/degraining/index';
|
||||
|
||||
const infoData = ref({})
|
||||
const openModal = ref(false)
|
||||
|
||||
const [registerTable, { reload, expandAll}] = useTable({
|
||||
title: '已关闭',
|
||||
api: LoadCaseInfoLists,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
striped: false,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 使用搜索表单
|
||||
useSearchForm: true,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
beforeFetch(data) {
|
||||
let params = {...data,nowStatus: '已关闭'}
|
||||
return params
|
||||
},
|
||||
afterFetch(data) {
|
||||
console.log('afterFetch', data);
|
||||
},
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
},
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
function handleAudit(record) {
|
||||
GetCaseInfo({id: record.Id}).then(res => {
|
||||
console.log(res)
|
||||
infoData.value = res
|
||||
openModal.value = true
|
||||
})
|
||||
}
|
||||
const handleOk = () => {
|
||||
console.log('infoData',infoData.value)
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { h } from 'vue';
|
||||
import { Tag } from 'ant-design-vue';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '案件编号',
|
||||
dataIndex: 'case_no',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '案件描述',
|
||||
dataIndex: 'case_description',
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: '案件类型',
|
||||
dataIndex: 'typename',
|
||||
},
|
||||
{
|
||||
title: '县',
|
||||
dataIndex: 'countyname',
|
||||
},
|
||||
{
|
||||
title: '镇',
|
||||
dataIndex: 'streetname',
|
||||
},
|
||||
{
|
||||
title: '判读人',
|
||||
dataIndex: 'identification_user',
|
||||
},
|
||||
{
|
||||
title: '判读时间',
|
||||
dataIndex: 'identification_time',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'checkstatus',
|
||||
customRender: ({ record }) => {
|
||||
const { checkstatus } = record;
|
||||
if(checkstatus == '待审核'){
|
||||
return h(Tag, { color: 'yellow' }, () => checkstatus);
|
||||
}else if(checkstatus == '已审核'){
|
||||
return h(Tag, { color: 'green' }, () => checkstatus);
|
||||
}
|
||||
return h(Tag, {}, () => checkstatus);
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '案件编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 5 },
|
||||
componentProps: {
|
||||
placeholder: '请输入名称/编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'typename',
|
||||
label:'案件类型',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({formModel}) => {
|
||||
return {
|
||||
api: getLoad,
|
||||
params: { code: 'gdflhtblx' },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'itemName',
|
||||
valueField: 'itemValue',
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'countyid',
|
||||
label:'县/区',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ tableAction, formModel }) => {
|
||||
return {
|
||||
api: getChildrenTree,
|
||||
params: { parentId: 371300 },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
onChange: () => {
|
||||
formModel.streetid = '';
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'streetid',
|
||||
label:'乡镇/街道',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: formModel.countyid && getChildrenTree,
|
||||
params: { parentId: formModel.countyid },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
};
|
||||
},
|
||||
}
|
||||
];
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<BasicTable class="w-4/4 xl:w-5/5" @register="registerTable">
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
label: '详情',
|
||||
onClick: () => {
|
||||
handleAudit(record);
|
||||
},
|
||||
}
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<a-modal width="75%" v-model:open="openModal" title="线索审核" :destroyOnClose="true" :footer="null">
|
||||
<InfoModal :infoData="infoData.info" @handleOk="handleOk" @closeModal="closeModal" :control="false"/>
|
||||
</a-modal>
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import InfoModal from '../audit/InfoModal/index.vue'
|
||||
import { columns, searchFormSchema } from './util';
|
||||
import { LoadCaseInfoLists, GetCaseInfo } from '@/api/illegalmining/index';
|
||||
|
||||
const infoData = ref({})
|
||||
const openModal = ref(false)
|
||||
|
||||
const [registerTable, { reload, expandAll}] = useTable({
|
||||
title: '已审核',
|
||||
api: LoadCaseInfoLists,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
striped: false,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 使用搜索表单
|
||||
useSearchForm: true,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
beforeFetch(data) {
|
||||
let params = {...data,nowStatus: '已审核'}
|
||||
return params
|
||||
},
|
||||
afterFetch(data) {
|
||||
console.log('afterFetch', data);
|
||||
},
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
},
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
function handleAudit(record) {
|
||||
GetCaseInfo({id: record.Id}).then(res => {
|
||||
console.log(res)
|
||||
infoData.value = res
|
||||
openModal.value = true
|
||||
})
|
||||
}
|
||||
const handleOk = () => {
|
||||
console.log('infoData',infoData.value)
|
||||
}
|
||||
const closeModal = () => {
|
||||
openModal.value = false
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { h } from 'vue';
|
||||
import { Tag } from 'ant-design-vue';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '案件编号',
|
||||
dataIndex: 'case_no',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '案件描述',
|
||||
dataIndex: 'case_description',
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: '案件类型',
|
||||
dataIndex: 'typename',
|
||||
},
|
||||
{
|
||||
title: '县',
|
||||
dataIndex: 'countyname',
|
||||
},
|
||||
{
|
||||
title: '镇',
|
||||
dataIndex: 'streetname',
|
||||
},
|
||||
{
|
||||
title: '判读人',
|
||||
dataIndex: 'identification_user',
|
||||
},
|
||||
{
|
||||
title: '判读时间',
|
||||
dataIndex: 'identification_time',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'checkstatus',
|
||||
customRender: ({ record }) => {
|
||||
const { checkstatus } = record;
|
||||
if(checkstatus == '待审核'){
|
||||
return h(Tag, { color: 'yellow' }, () => checkstatus);
|
||||
}else if(checkstatus == '已审核'){
|
||||
return h(Tag, { color: 'green' }, () => checkstatus);
|
||||
}
|
||||
return h(Tag, {}, () => checkstatus);
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '案件编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 5 },
|
||||
componentProps: {
|
||||
placeholder: '请输入名称/编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'typename',
|
||||
label:'案件类型',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({formModel}) => {
|
||||
return {
|
||||
api: getLoad,
|
||||
params: { code: 'kctubanleixing' },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'itemName',
|
||||
valueField: 'itemValue',
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'countyid',
|
||||
label:'县/区',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ tableAction, formModel }) => {
|
||||
return {
|
||||
api: getChildrenTree,
|
||||
params: { parentId: 371300 },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
onChange: () => {
|
||||
formModel.streetid = '';
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'streetid',
|
||||
label:'乡镇/街道',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: formModel.countyid && getChildrenTree,
|
||||
params: { parentId: formModel.countyid },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
};
|
||||
},
|
||||
}
|
||||
];
|
||||
|
|
@ -0,0 +1,381 @@
|
|||
<template>
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">案件编号:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.case_no" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">案件类型:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.typename"
|
||||
:options="typenameOptions"
|
||||
placeholder="请选择案件类型" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="flex:2">
|
||||
<div class="label">案件详情:</div>
|
||||
<div class="item-value" style="flex:3">
|
||||
<a-input v-model:value="props.infoData.case_description" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">县/区:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.countyid"
|
||||
:options="countyOptions"
|
||||
placeholder="请选择县/区" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">乡镇/街道:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.streetid"
|
||||
:options="streetOptions"
|
||||
placeholder="请选择乡镇/街道" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">社区/村:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.communityid"
|
||||
:options="communityOptions"
|
||||
placeholder="请选择社区/村" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">详细地址:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.address" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">图斑面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">耕地面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.gengdi_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">占重点区域面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.zhongdianquyu_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">占生态红线面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.shengtaibaohuhongxian_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">占空间规划面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.guotukongjianguihua_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">占农用地面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.nongyongdi_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="flex:2">
|
||||
<div class="label">占永久基本农田面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.yongjiujibennongtian_area" disabled/>
|
||||
</div>
|
||||
<div style="flex:2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">前影像名称:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.pre_phase_img" disabled />
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">前时相时间:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.pre_phase_time" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">备注:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.remark" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">后影像名称:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.later_phase_img" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">后时相时间:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.later_phase_time" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">经纬度:</div>
|
||||
<div class="item-value" style="flex:2;display: flex">
|
||||
<a-input id="lnglat" style="margin-right: 15px;" :value="`${props.infoData.lng},${props.infoData.lat}`" disabled/>
|
||||
<a-button @click="copyText">复制</a-button>
|
||||
<textarea id="copyText" style="position: absolute;left: -9999px;top: -9999px;" :value="`${props.infoData.lng},${props.infoData.lat}`"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">判读人:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.identification_user" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">判读时间:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.identification_time" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item" style="width: 100%;">
|
||||
<div class="label">图片:</div>
|
||||
<div style="flex:9;display:flex;">
|
||||
<a-image-preview-group>
|
||||
<div class="video-item" v-for="(item, index) in fileList" :key="index" style="display: inline-block;position:relative;">
|
||||
<!-- <div v-if="!$attrs.disabled" class="video-delete-btn" @click="handlerDelete(index)">
|
||||
<CloseOutlined />
|
||||
</div> -->
|
||||
<a-image :src="item.url" style="width:100px;height:100px;" />
|
||||
</div>
|
||||
</a-image-preview-group>
|
||||
<!-- <Upload
|
||||
list-type="picture-card"
|
||||
:showUploadList="false"
|
||||
:custom-request="customRequest"
|
||||
@change="handleChange"
|
||||
>
|
||||
<div>
|
||||
<plus-outlined />
|
||||
<div style="margin-top: 8px">Upload</div>
|
||||
</div>
|
||||
</Upload> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<div class="button-div">
|
||||
<a-button style="margin-right: 10px;" @click="emits('closeModal')">关闭弹窗</a-button>
|
||||
<a-button v-if="props.control" style="margin-right: 10px;" type="primary" class="danger-button" @click="emits('closeCase',props.infoData.id)">关闭线索</a-button>
|
||||
<a-button v-if="props.control" style="margin-right: 10px;" type="primary" @click="submit">审核通过</a-button>
|
||||
<a-button v-if="props.control" style="margin-right: 10px;" type="primary" class="danger-button" @click="reSubmit">复提</a-button>
|
||||
<!-- <a-button v-if="props.control" type="primary">导入</a-button> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { defineProps, ref, watch, onMounted, defineEmits } from "vue"
|
||||
import { PlusOutlined, CloseOutlined } from '@ant-design/icons-vue';
|
||||
import { Upload, message } from 'ant-design-vue';
|
||||
import { uploadFile } from '@/api/formrender/index';
|
||||
import { getAppEnvConfig } from '@/utils/env';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
|
||||
const props = defineProps(['infoData','control'])
|
||||
const emits = defineEmits(['handleOk','closeModal','closeCase','reSubmit'])
|
||||
|
||||
const typenameOptions = ref([])
|
||||
const countyOptions = ref([])
|
||||
const streetOptions = ref([])
|
||||
const communityOptions = ref([])
|
||||
const fileList = ref<any>([])
|
||||
const previewVisible = ref(false);
|
||||
const previewImage = ref('');
|
||||
const previewTitle = ref('');
|
||||
|
||||
onMounted(() => {
|
||||
getLoad({code:'kctubanleixing'}).then(res => {
|
||||
typenameOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.itemName,
|
||||
value: item.itemValue
|
||||
}
|
||||
})
|
||||
})
|
||||
getChildrenTree({ parentId: 371300 }).then(res => {
|
||||
countyOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
}
|
||||
})
|
||||
})
|
||||
props.infoData.countyid && getChildrenTree({ parentId: props.infoData.countyid }).then(res => {
|
||||
streetOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
}
|
||||
})
|
||||
})
|
||||
props.infoData.streetid && getChildrenTree({ parentId: props.infoData.streetid }).then(res => {
|
||||
communityOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
}
|
||||
})
|
||||
})
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
props.infoData.casepic && props.infoData.casepic.split(',').forEach(item => {
|
||||
fileList.value.push({
|
||||
uid: '-1',
|
||||
name: item,
|
||||
status: 'done',
|
||||
url: VITE_GLOB_API_URL + '/' + item,
|
||||
})
|
||||
})
|
||||
})
|
||||
watch(() => fileList.value.length, (val) => {
|
||||
props.infoData.casepic = fileList.value.map(item => item.name).join(',')
|
||||
})
|
||||
|
||||
const handleChange = (info) => {
|
||||
if (info.file.status !== 'uploading') {
|
||||
}
|
||||
if (info.file.status === 'done') {
|
||||
} else if (info.file.status === 'error') {
|
||||
}
|
||||
};
|
||||
const customRequest = (file) => {
|
||||
console.log('handleCustomRequest',file)
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
const formData = new FormData()
|
||||
formData.append('files', file.file)
|
||||
uploadFile(formData).then(res => {
|
||||
console.log(res)
|
||||
fileList.value?.push({
|
||||
uid: '-1',
|
||||
name: res[0].filePath,
|
||||
status: 'done',
|
||||
url: VITE_GLOB_API_URL + '/' + res[0].filePath,
|
||||
});
|
||||
})
|
||||
}
|
||||
const handlePreview = () => {
|
||||
|
||||
}
|
||||
const handleRemove = () => {
|
||||
|
||||
}
|
||||
const handlerDelete = (index) => {
|
||||
fileList.value.splice(index, 1);
|
||||
}
|
||||
const handlerPreviewImage = (url,list) => {
|
||||
|
||||
}
|
||||
const submit = () => {
|
||||
console.log('通过')
|
||||
emits('handleOk')
|
||||
}
|
||||
const reSubmit = () => {
|
||||
emits('reSubmit',props.infoData.original_case_no)
|
||||
}
|
||||
const copyText = () => {
|
||||
const copyTextDom = document.getElementById('copyText')
|
||||
console.log(copyTextDom)
|
||||
if(copyTextDom){
|
||||
copyTextDom.select()
|
||||
document.execCommand('Copy');
|
||||
message.success('复制成功')
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
:deep(.ant-image){
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.video-delete-btn {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 10px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-bottom-left-radius: 80%;
|
||||
background: rgb(0 0 0 / 20%);
|
||||
color: #fff;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
z-index: 999;
|
||||
}
|
||||
.modal-content{
|
||||
padding: 20px;
|
||||
}
|
||||
.row{
|
||||
display: flex;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.select-width{
|
||||
width:100%;
|
||||
}
|
||||
.item{
|
||||
display: flex;
|
||||
flex:1;
|
||||
.label{
|
||||
flex: 1;
|
||||
padding: 0px 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.item-value{
|
||||
padding: 0px 15px;
|
||||
flex:1;
|
||||
}
|
||||
}
|
||||
.button-div{
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
.danger-button{
|
||||
background: #ed6f6f;
|
||||
&:hover{
|
||||
background: #faa19d;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,225 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<BasicTable class="w-4/4 xl:w-5/5" @register="registerTable">
|
||||
<template #toolbar>
|
||||
<!-- <a-button type="primary" @click="handleCreate">模板下载</a-button> -->
|
||||
<a-upload
|
||||
:accept="'.xlsx,.csv,.xls'"
|
||||
:showUploadList="false"
|
||||
:custom-request="customRequest"
|
||||
>
|
||||
<a-button type="primary">导入</a-button>
|
||||
</a-upload>
|
||||
</template>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
label: '审核',
|
||||
onClick: () => {
|
||||
handleAudit(record);
|
||||
},
|
||||
}
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<a-modal width="75%" v-model:open="openModal" title="线索审核" :destroyOnClose="true" :footer="null">
|
||||
<InfoModal
|
||||
:infoData="infoData.info"
|
||||
@handleOk="handleOk"
|
||||
@closeModal="closeModal"
|
||||
:control="true"
|
||||
@closeCase="closeCase"
|
||||
@reSubmit="reSubmit"/>
|
||||
</a-modal>
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref, h } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import InfoModal from './InfoModal/index.vue'
|
||||
import { columns, searchFormSchema, dictionary, code } from './util';
|
||||
import { getDetail } from '@/api/sys/WFSchemeInfo';
|
||||
import { functionsaveForm, LoadFormScheme } from '@/api/demo/formScheme';
|
||||
import { buildGUID } from '@/utils/uuid';
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
import { create, saveDraft, GetDraft } from '@/api/sys/WFProcess';
|
||||
import { message, Modal, Input } from 'ant-design-vue';
|
||||
import { SaveReSubmitInfo } from '@/api/demo/resubmit';
|
||||
import { LoadCaseInfoLists, GetCaseInfo, CloseCaseInfo } from '@/api/illegalmining/index';
|
||||
|
||||
const userStore = useUserStore();
|
||||
const userInfo = userStore.getUserInfo;
|
||||
const infoData = ref({})
|
||||
const openModal = ref(false)
|
||||
const reSubmitRemark = ref("")
|
||||
|
||||
const [registerTable, { reload, expandAll}] = useTable({
|
||||
title: '待审核',
|
||||
api: LoadCaseInfoLists,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
striped: false,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 使用搜索表单
|
||||
useSearchForm: true,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
beforeFetch(data) {
|
||||
let params = {...data,nowStatus: '待审核'}
|
||||
return params
|
||||
},
|
||||
afterFetch(data) {
|
||||
console.log('afterFetch', data);
|
||||
},
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
},
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
function handleAudit(record) {
|
||||
GetCaseInfo({id: record.Id}).then(res => {
|
||||
console.log(res)
|
||||
infoData.value = res
|
||||
openModal.value = true
|
||||
})
|
||||
}
|
||||
const handleOk = async () => {
|
||||
try {
|
||||
const { id } = infoData.value.info
|
||||
const checkValue = await GetDraft({id})
|
||||
if(checkValue.process == null){
|
||||
let data = await getDetail({ code });
|
||||
let content = JSON.parse(data.scheme.content);
|
||||
const currentNode = content.wfData.find((t) => t.type == 'bpmn:StartEvent');
|
||||
let formVerison = currentNode.formVerison
|
||||
let keyValue = ''
|
||||
const schemaData = await LoadFormScheme({
|
||||
schemeId: formVerison
|
||||
});
|
||||
const scheme = JSON.parse(schemaData.scheme);
|
||||
scheme.formInfo.tabList.forEach((tabElement) => {
|
||||
tabElement.schemas.forEach((element) => {
|
||||
if (element.field == currentNode.formRelationId) {
|
||||
keyValue = element.componentProps.fieldName;
|
||||
}
|
||||
});
|
||||
});
|
||||
let commit = {
|
||||
schemeId: currentNode.formVerison,
|
||||
pkey: keyValue,
|
||||
pkeyValue: id,
|
||||
};
|
||||
let resultQuery = {
|
||||
schemeCode: code,
|
||||
userId: userInfo.id,
|
||||
title: '',
|
||||
processId: id,
|
||||
InstanceInfo: JSON.stringify(commit),
|
||||
};
|
||||
await saveDraft(resultQuery);
|
||||
resultQuery.schemeCode = '';
|
||||
const result = await create(resultQuery);
|
||||
if(result){
|
||||
message.success('发起流程成功');
|
||||
reload()
|
||||
openModal.value = false
|
||||
}else{
|
||||
message.error('发起流程失败');
|
||||
}
|
||||
}else{
|
||||
message.warning('该案件已发起流程');
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err)
|
||||
}
|
||||
}
|
||||
const closeModal = () => {
|
||||
openModal.value = false
|
||||
}
|
||||
const closeCase = (id: string) => {
|
||||
Modal.confirm({
|
||||
title: '关闭案件',
|
||||
content: '确定关闭该案件吗?',
|
||||
onOk: async () => {
|
||||
const result = await CloseCaseInfo(id)
|
||||
if(result){
|
||||
message.success('关闭案件成功');
|
||||
reload()
|
||||
openModal.value = false
|
||||
}else{
|
||||
message.error('关闭案件失败');
|
||||
}
|
||||
},
|
||||
onCancel() {},
|
||||
})
|
||||
}
|
||||
const reSubmit = (originalcaseno: string) => {
|
||||
Modal.confirm({
|
||||
title: '请输入复提原因',
|
||||
content: h('input',{
|
||||
class: 'reSubmitInput',
|
||||
onChange: (e) => reSubmitRemark.value = e.target.value
|
||||
}),
|
||||
onOk: async () => {
|
||||
console.log(reSubmitRemark.value)
|
||||
const result = await SaveReSubmitInfo({ originalcaseno, remark: reSubmitRemark.value })
|
||||
if(result){
|
||||
message.success('复提成功');
|
||||
reload()
|
||||
openModal.value = false
|
||||
}else{
|
||||
message.error('复提失败');
|
||||
}
|
||||
reSubmitRemark.value = ''
|
||||
},
|
||||
onCancel() {
|
||||
reSubmitRemark.value = ''
|
||||
},
|
||||
})
|
||||
}
|
||||
const customRequest = (file) => {
|
||||
console.log('handleCustomRequest',file)
|
||||
// const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
const formData = new FormData()
|
||||
formData.append('files', file.file)
|
||||
// uploadFile(formData).then(res => {
|
||||
// console.log(res)
|
||||
// fileList.value?.push({
|
||||
// uid: '-1',
|
||||
// name: res[0].filePath,
|
||||
// status: 'done',
|
||||
// url: VITE_GLOB_API_URL + '/' + res[0].filePath,
|
||||
// });
|
||||
// })
|
||||
}
|
||||
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.reSubmitInput{
|
||||
border: 1px solid;
|
||||
width: 100%;
|
||||
height: 35px;
|
||||
border-radius: 5px;
|
||||
padding: 0px 10px;
|
||||
border-color: #000;
|
||||
transition: 0.2s;
|
||||
&:focus{
|
||||
border-color: #6db8ff;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { h } from 'vue';
|
||||
import { Tag } from 'ant-design-vue';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
|
||||
export const code = '0000003'
|
||||
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '案件编号',
|
||||
dataIndex: 'case_no',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '案件描述',
|
||||
dataIndex: 'case_description',
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: '案件类型',
|
||||
dataIndex: 'typename',
|
||||
},
|
||||
{
|
||||
title: '县',
|
||||
dataIndex: 'countyname',
|
||||
},
|
||||
{
|
||||
title: '镇',
|
||||
dataIndex: 'streetname',
|
||||
},
|
||||
{
|
||||
title: '判读人',
|
||||
dataIndex: 'identification_user',
|
||||
},
|
||||
{
|
||||
title: '判读时间',
|
||||
dataIndex: 'identification_time',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'checkstatus',
|
||||
customRender: ({ record }) => {
|
||||
const { checkstatus } = record;
|
||||
if(checkstatus == '待审核'){
|
||||
return h(Tag, { color: 'yellow' }, () => checkstatus);
|
||||
}else if(checkstatus == '已审核'){
|
||||
return h(Tag, { color: 'green' }, () => checkstatus);
|
||||
}
|
||||
return h(Tag, {}, () => checkstatus);
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '案件编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 5 },
|
||||
componentProps: {
|
||||
placeholder: '请输入名称/编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'typename',
|
||||
label:'案件类型',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({formModel}) => {
|
||||
return {
|
||||
api: getLoad,
|
||||
params: { code: 'kctubanleixing' },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'itemName',
|
||||
valueField: 'itemValue',
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'countyid',
|
||||
label:'县/区',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ tableAction, formModel }) => {
|
||||
return {
|
||||
api: getChildrenTree,
|
||||
params: { parentId: 371300 },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
onChange: () => {
|
||||
formModel.streetid = '';
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'streetid',
|
||||
label:'乡镇/街道',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: formModel.countyid && getChildrenTree,
|
||||
params: { parentId: formModel.countyid },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
};
|
||||
},
|
||||
}
|
||||
];
|
||||
|
||||
export const dictionary = {
|
||||
_input_39: 'case_no',
|
||||
_input_15: 'typename',
|
||||
_input_16: 'case_description',
|
||||
_input_3: 'countyid',
|
||||
_input_10: 'streetid',
|
||||
_input_ca1c543fcf014e6abdcb6d329d796cee: 'communityid',
|
||||
_input_43: 'area',
|
||||
_input_18fd0953784b4c35b9219bd6defaf376: 'gengdi_area',
|
||||
_input_42fed651e58c4b5daf9868ff6a0da3b0: 'shengtaibaohuhongxian_area',
|
||||
_input_520d1d8068f4492ea8c42ce9bb61b3cf: 'nongyongdi_area',
|
||||
_input_039dd978de5c4176b2913eae5ba60844: 'yongjiujibennongtian_area',
|
||||
_input_17: 'remark',
|
||||
_input_4: 'lng',
|
||||
_input_14: 'lat',
|
||||
_input_44: 'identification_time',
|
||||
_image_upload_369: 'casepic',
|
||||
}
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<BasicTable class="w-4/4 xl:w-5/5" @register="registerTable">
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
label: '详情',
|
||||
onClick: () => {
|
||||
handleAudit(record);
|
||||
},
|
||||
}
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<a-modal width="75%" v-model:open="openModal" title="线索审核" :destroyOnClose="true" :footer="null">
|
||||
<InfoModal :infoData="infoData.info" @handleOk="handleOk" :control="false"/>
|
||||
</a-modal>
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import InfoModal from '../audit/InfoModal/index.vue'
|
||||
import { columns, searchFormSchema } from './util';
|
||||
import { MainLoadCaseInfoLists, MainGetCaseInfo } from '@/api/illegalmining/index';
|
||||
|
||||
const infoData = ref({})
|
||||
const openModal = ref(false)
|
||||
|
||||
const [registerTable, { reload, expandAll}] = useTable({
|
||||
title: '已关闭',
|
||||
api: MainLoadCaseInfoLists,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
striped: false,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 使用搜索表单
|
||||
useSearchForm: true,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
beforeFetch(data) {
|
||||
let params = {...data,nowStatus: '已关闭'}
|
||||
return params
|
||||
},
|
||||
afterFetch(data) {
|
||||
console.log('afterFetch', data);
|
||||
},
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
},
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
function handleAudit(record) {
|
||||
MainGetCaseInfo({id: record.Id}).then(res => {
|
||||
console.log(res)
|
||||
infoData.value = res
|
||||
openModal.value = true
|
||||
})
|
||||
}
|
||||
const handleOk = () => {
|
||||
console.log('infoData',infoData.value)
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { h } from 'vue';
|
||||
import { Tag } from 'ant-design-vue';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '案件编号',
|
||||
dataIndex: 'case_no',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '案件描述',
|
||||
dataIndex: 'case_description',
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: '案件类型',
|
||||
dataIndex: 'typename',
|
||||
},
|
||||
{
|
||||
title: '县',
|
||||
dataIndex: 'countyname',
|
||||
},
|
||||
{
|
||||
title: '镇',
|
||||
dataIndex: 'streetname',
|
||||
},
|
||||
{
|
||||
title: '判读人',
|
||||
dataIndex: 'identification_user',
|
||||
},
|
||||
{
|
||||
title: '判读时间',
|
||||
dataIndex: 'identification_time',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'checkstatus',
|
||||
customRender: ({ record }) => {
|
||||
const { checkstatus } = record;
|
||||
if(checkstatus == '待审核'){
|
||||
return h(Tag, { color: 'yellow' }, () => checkstatus);
|
||||
}else if(checkstatus == '已审核'){
|
||||
return h(Tag, { color: 'green' }, () => checkstatus);
|
||||
}
|
||||
return h(Tag, {}, () => checkstatus);
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '案件编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 5 },
|
||||
componentProps: {
|
||||
placeholder: '请输入名称/编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'typename',
|
||||
label:'案件类型',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({formModel}) => {
|
||||
return {
|
||||
api: getLoad,
|
||||
params: { code: 'kctubanleixing' },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'itemName',
|
||||
valueField: 'itemValue',
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'countyid',
|
||||
label:'县/区',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ tableAction, formModel }) => {
|
||||
return {
|
||||
api: getChildrenTree,
|
||||
params: { parentId: 371300 },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
onChange: () => {
|
||||
formModel.streetid = '';
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'streetid',
|
||||
label:'乡镇/街道',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: formModel.countyid && getChildrenTree,
|
||||
params: { parentId: formModel.countyid },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
};
|
||||
},
|
||||
}
|
||||
];
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<BasicTable class="w-4/4 xl:w-5/5" @register="registerTable">
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
label: '详情',
|
||||
onClick: () => {
|
||||
handleAudit(record);
|
||||
},
|
||||
}
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<a-modal width="75%" v-model:open="openModal" title="线索审核" :destroyOnClose="true" :footer="null">
|
||||
<InfoModal :infoData="infoData.info" @handleOk="handleOk" @closeModal="closeModal" :control="false"/>
|
||||
</a-modal>
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import InfoModal from '../mainaudit/InfoModal/index.vue'
|
||||
import { columns, searchFormSchema } from './util';
|
||||
import { MainLoadCaseInfoLists, MainGetCaseInfo } from '@/api/illegalmining/index';
|
||||
|
||||
const infoData = ref({})
|
||||
const openModal = ref(false)
|
||||
|
||||
const [registerTable, { reload, expandAll}] = useTable({
|
||||
title: '已审核',
|
||||
api: MainLoadCaseInfoLists,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
striped: false,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 使用搜索表单
|
||||
useSearchForm: true,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
beforeFetch(data) {
|
||||
let params = {...data,nowStatus: '已审核'}
|
||||
return params
|
||||
},
|
||||
afterFetch(data) {
|
||||
console.log('afterFetch', data);
|
||||
},
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
},
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
function handleAudit(record) {
|
||||
MainGetCaseInfo({id: record.Id}).then(res => {
|
||||
console.log(res)
|
||||
infoData.value = res
|
||||
openModal.value = true
|
||||
})
|
||||
}
|
||||
const handleOk = () => {
|
||||
console.log('infoData',infoData.value)
|
||||
}
|
||||
const closeModal = () => {
|
||||
openModal.value = false
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { h } from 'vue';
|
||||
import { Tag } from 'ant-design-vue';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '案件编号',
|
||||
dataIndex: 'case_no',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '案件描述',
|
||||
dataIndex: 'case_description',
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: '案件类型',
|
||||
dataIndex: 'typename',
|
||||
},
|
||||
{
|
||||
title: '县',
|
||||
dataIndex: 'countyname',
|
||||
},
|
||||
{
|
||||
title: '镇',
|
||||
dataIndex: 'streetname',
|
||||
},
|
||||
{
|
||||
title: '判读人',
|
||||
dataIndex: 'identification_user',
|
||||
},
|
||||
{
|
||||
title: '判读时间',
|
||||
dataIndex: 'identification_time',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'checkstatus',
|
||||
customRender: ({ record }) => {
|
||||
const { checkstatus } = record;
|
||||
if(checkstatus == '待审核'){
|
||||
return h(Tag, { color: 'yellow' }, () => checkstatus);
|
||||
}else if(checkstatus == '已审核'){
|
||||
return h(Tag, { color: 'green' }, () => checkstatus);
|
||||
}
|
||||
return h(Tag, {}, () => checkstatus);
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '案件编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 5 },
|
||||
componentProps: {
|
||||
placeholder: '请输入名称/编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'typename',
|
||||
label:'案件类型',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({formModel}) => {
|
||||
return {
|
||||
api: getLoad,
|
||||
params: { code: 'kctubanleixing' },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'itemName',
|
||||
valueField: 'itemValue',
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'countyid',
|
||||
label:'县/区',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ tableAction, formModel }) => {
|
||||
return {
|
||||
api: getChildrenTree,
|
||||
params: { parentId: 371300 },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
onChange: () => {
|
||||
formModel.streetid = '';
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'streetid',
|
||||
label:'乡镇/街道',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: formModel.countyid && getChildrenTree,
|
||||
params: { parentId: formModel.countyid },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
};
|
||||
},
|
||||
}
|
||||
];
|
||||
|
|
@ -0,0 +1,381 @@
|
|||
<template>
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">案件编号:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.case_no" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">案件类型:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.typename"
|
||||
:options="typenameOptions"
|
||||
placeholder="请选择案件类型" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="flex:2">
|
||||
<div class="label">案件详情:</div>
|
||||
<div class="item-value" style="flex:3">
|
||||
<a-input v-model:value="props.infoData.case_description" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">县/区:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.countyid"
|
||||
:options="countyOptions"
|
||||
placeholder="请选择县/区" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">乡镇/街道:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.streetid"
|
||||
:options="streetOptions"
|
||||
placeholder="请选择乡镇/街道" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">社区/村:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.communityid"
|
||||
:options="communityOptions"
|
||||
placeholder="请选择社区/村" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">详细地址:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.address" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">图斑面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">耕地面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.gengdi_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">占重点区域面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.zhongdianquyu_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">占生态红线面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.shengtaibaohuhongxian_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">占空间规划面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.guotukongjianguihua_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">占农用地面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.nongyongdi_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="flex:2">
|
||||
<div class="label">占永久基本农田面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.yongjiujibennongtian_area" disabled/>
|
||||
</div>
|
||||
<div style="flex:2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">前影像名称:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.pre_phase_img" disabled />
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">前时相时间:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.pre_phase_time" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">备注:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.remark" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">后影像名称:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.later_phase_img" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">后时相时间:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.later_phase_time" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">经纬度:</div>
|
||||
<div class="item-value" style="flex:2;display: flex">
|
||||
<a-input id="lnglat" style="margin-right: 15px;" :value="`${props.infoData.lng},${props.infoData.lat}`" disabled/>
|
||||
<a-button @click="copyText">复制</a-button>
|
||||
<textarea id="copyText" style="position: absolute;left: -9999px;top: -9999px;" :value="`${props.infoData.lng},${props.infoData.lat}`"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">判读人:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.identification_user" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">判读时间:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.identification_time" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item" style="width: 100%;">
|
||||
<div class="label">图片:</div>
|
||||
<div style="flex:9;display:flex;">
|
||||
<a-image-preview-group>
|
||||
<div class="video-item" v-for="(item, index) in fileList" :key="index" style="display: inline-block;position:relative;">
|
||||
<!-- <div v-if="!$attrs.disabled" class="video-delete-btn" @click="handlerDelete(index)">
|
||||
<CloseOutlined />
|
||||
</div> -->
|
||||
<a-image :src="item.url" style="width:100px;height:100px;" />
|
||||
</div>
|
||||
</a-image-preview-group>
|
||||
<!-- <Upload
|
||||
list-type="picture-card"
|
||||
:showUploadList="false"
|
||||
:custom-request="customRequest"
|
||||
@change="handleChange"
|
||||
>
|
||||
<div>
|
||||
<plus-outlined />
|
||||
<div style="margin-top: 8px">Upload</div>
|
||||
</div>
|
||||
</Upload> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<div class="button-div">
|
||||
<a-button style="margin-right: 10px;" @click="emits('closeModal')">关闭弹窗</a-button>
|
||||
<a-button v-if="props.control" style="margin-right: 10px;" type="primary" class="danger-button" @click="emits('closeCase',props.infoData.id)">关闭线索</a-button>
|
||||
<a-button v-if="props.control" style="margin-right: 10px;" type="primary" @click="submit">审核通过</a-button>
|
||||
<a-button v-if="props.control" style="margin-right: 10px;" type="primary" class="danger-button" @click="reSubmit">复提</a-button>
|
||||
<!-- <a-button v-if="props.control" type="primary">导入</a-button> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { defineProps, ref, watch, onMounted, defineEmits } from "vue"
|
||||
import { PlusOutlined, CloseOutlined } from '@ant-design/icons-vue';
|
||||
import { Upload, message } from 'ant-design-vue';
|
||||
import { uploadFile } from '@/api/formrender/index';
|
||||
import { getAppEnvConfig } from '@/utils/env';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
|
||||
const props = defineProps(['infoData','control'])
|
||||
const emits = defineEmits(['handleOk','closeModal','closeCase','reSubmit'])
|
||||
|
||||
const typenameOptions = ref([])
|
||||
const countyOptions = ref([])
|
||||
const streetOptions = ref([])
|
||||
const communityOptions = ref([])
|
||||
const fileList = ref<any>([])
|
||||
const previewVisible = ref(false);
|
||||
const previewImage = ref('');
|
||||
const previewTitle = ref('');
|
||||
|
||||
onMounted(() => {
|
||||
getLoad({code:'kctubanleixing'}).then(res => {
|
||||
typenameOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.itemName,
|
||||
value: item.itemValue
|
||||
}
|
||||
})
|
||||
})
|
||||
getChildrenTree({ parentId: 371300 }).then(res => {
|
||||
countyOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
}
|
||||
})
|
||||
})
|
||||
props.infoData.countyid && getChildrenTree({ parentId: props.infoData.countyid }).then(res => {
|
||||
streetOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
}
|
||||
})
|
||||
})
|
||||
props.infoData.streetid && getChildrenTree({ parentId: props.infoData.streetid }).then(res => {
|
||||
communityOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
}
|
||||
})
|
||||
})
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
props.infoData.casepic && props.infoData.casepic.split(',').forEach(item => {
|
||||
fileList.value.push({
|
||||
uid: '-1',
|
||||
name: item,
|
||||
status: 'done',
|
||||
url: VITE_GLOB_API_URL + '/' + item,
|
||||
})
|
||||
})
|
||||
})
|
||||
watch(() => fileList.value.length, (val) => {
|
||||
props.infoData.casepic = fileList.value.map(item => item.name).join(',')
|
||||
})
|
||||
|
||||
const handleChange = (info) => {
|
||||
if (info.file.status !== 'uploading') {
|
||||
}
|
||||
if (info.file.status === 'done') {
|
||||
} else if (info.file.status === 'error') {
|
||||
}
|
||||
};
|
||||
const customRequest = (file) => {
|
||||
console.log('handleCustomRequest',file)
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
const formData = new FormData()
|
||||
formData.append('files', file.file)
|
||||
uploadFile(formData).then(res => {
|
||||
console.log(res)
|
||||
fileList.value?.push({
|
||||
uid: '-1',
|
||||
name: res[0].filePath,
|
||||
status: 'done',
|
||||
url: VITE_GLOB_API_URL + '/' + res[0].filePath,
|
||||
});
|
||||
})
|
||||
}
|
||||
const handlePreview = () => {
|
||||
|
||||
}
|
||||
const handleRemove = () => {
|
||||
|
||||
}
|
||||
const handlerDelete = (index) => {
|
||||
fileList.value.splice(index, 1);
|
||||
}
|
||||
const handlerPreviewImage = (url,list) => {
|
||||
|
||||
}
|
||||
const submit = () => {
|
||||
console.log('通过')
|
||||
emits('handleOk')
|
||||
}
|
||||
const reSubmit = () => {
|
||||
emits('reSubmit',props.infoData.original_case_no)
|
||||
}
|
||||
const copyText = () => {
|
||||
const copyTextDom = document.getElementById('copyText')
|
||||
console.log(copyTextDom)
|
||||
if(copyTextDom){
|
||||
copyTextDom.select()
|
||||
document.execCommand('Copy');
|
||||
message.success('复制成功')
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
:deep(.ant-image){
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.video-delete-btn {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 10px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-bottom-left-radius: 80%;
|
||||
background: rgb(0 0 0 / 20%);
|
||||
color: #fff;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
z-index: 999;
|
||||
}
|
||||
.modal-content{
|
||||
padding: 20px;
|
||||
}
|
||||
.row{
|
||||
display: flex;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.select-width{
|
||||
width:100%;
|
||||
}
|
||||
.item{
|
||||
display: flex;
|
||||
flex:1;
|
||||
.label{
|
||||
flex: 1;
|
||||
padding: 0px 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.item-value{
|
||||
padding: 0px 15px;
|
||||
flex:1;
|
||||
}
|
||||
}
|
||||
.button-div{
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
.danger-button{
|
||||
background: #ed6f6f;
|
||||
&:hover{
|
||||
background: #faa19d;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,225 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<BasicTable class="w-4/4 xl:w-5/5" @register="registerTable">
|
||||
<template #toolbar>
|
||||
<!-- <a-button type="primary" @click="handleCreate">模板下载</a-button> -->
|
||||
<a-upload
|
||||
:accept="'.xlsx,.csv,.xls'"
|
||||
:showUploadList="false"
|
||||
:custom-request="customRequest"
|
||||
>
|
||||
<a-button type="primary">导入</a-button>
|
||||
</a-upload>
|
||||
</template>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
label: '审核',
|
||||
onClick: () => {
|
||||
handleAudit(record);
|
||||
},
|
||||
}
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<a-modal width="75%" v-model:open="openModal" title="线索审核" :destroyOnClose="true" :footer="null">
|
||||
<InfoModal
|
||||
:infoData="infoData.info"
|
||||
@handleOk="handleOk"
|
||||
@closeModal="closeModal"
|
||||
:control="true"
|
||||
@closeCase="closeCase"
|
||||
@reSubmit="reSubmit"/>
|
||||
</a-modal>
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref, h } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import InfoModal from './InfoModal/index.vue'
|
||||
import { columns, searchFormSchema, dictionary, code } from './util';
|
||||
import { getDetail } from '@/api/sys/WFSchemeInfo';
|
||||
import { functionsaveForm, LoadFormScheme } from '@/api/demo/formScheme';
|
||||
import { buildGUID } from '@/utils/uuid';
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
import { create, saveDraft, GetDraft } from '@/api/sys/WFProcess';
|
||||
import { message, Modal, Input } from 'ant-design-vue';
|
||||
import { SaveReSubmitInfo } from '@/api/demo/resubmit';
|
||||
import { MainLoadCaseInfoLists, MainGetCaseInfo, MainCloseCaseInfo } from '@/api/illegalmining/index';
|
||||
|
||||
const userStore = useUserStore();
|
||||
const userInfo = userStore.getUserInfo;
|
||||
const infoData = ref({})
|
||||
const openModal = ref(false)
|
||||
const reSubmitRemark = ref("")
|
||||
|
||||
const [registerTable, { reload, expandAll}] = useTable({
|
||||
title: '待审核',
|
||||
api: MainLoadCaseInfoLists,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
striped: false,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 使用搜索表单
|
||||
useSearchForm: true,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
beforeFetch(data) {
|
||||
let params = {...data,nowStatus: '待审核'}
|
||||
return params
|
||||
},
|
||||
afterFetch(data) {
|
||||
console.log('afterFetch', data);
|
||||
},
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
},
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
function handleAudit(record) {
|
||||
MainGetCaseInfo({id: record.Id}).then(res => {
|
||||
console.log(res)
|
||||
infoData.value = res
|
||||
openModal.value = true
|
||||
})
|
||||
}
|
||||
const handleOk = async () => {
|
||||
try {
|
||||
const { id } = infoData.value.info
|
||||
const checkValue = await GetDraft({id})
|
||||
if(checkValue.process == null){
|
||||
let data = await getDetail({ code });
|
||||
let content = JSON.parse(data.scheme.content);
|
||||
const currentNode = content.wfData.find((t) => t.type == 'bpmn:StartEvent');
|
||||
let formVerison = currentNode.formVerison
|
||||
let keyValue = ''
|
||||
const schemaData = await LoadFormScheme({
|
||||
schemeId: formVerison
|
||||
});
|
||||
const scheme = JSON.parse(schemaData.scheme);
|
||||
scheme.formInfo.tabList.forEach((tabElement) => {
|
||||
tabElement.schemas.forEach((element) => {
|
||||
if (element.field == currentNode.formRelationId) {
|
||||
keyValue = element.componentProps.fieldName;
|
||||
}
|
||||
});
|
||||
});
|
||||
let commit = {
|
||||
schemeId: currentNode.formVerison,
|
||||
pkey: keyValue,
|
||||
pkeyValue: id,
|
||||
};
|
||||
let resultQuery = {
|
||||
schemeCode: code,
|
||||
userId: userInfo.id,
|
||||
title: '',
|
||||
processId: id,
|
||||
InstanceInfo: JSON.stringify(commit),
|
||||
};
|
||||
await saveDraft(resultQuery);
|
||||
resultQuery.schemeCode = '';
|
||||
const result = await create(resultQuery);
|
||||
if(result){
|
||||
message.success('发起流程成功');
|
||||
reload()
|
||||
openModal.value = false
|
||||
}else{
|
||||
message.error('发起流程失败');
|
||||
}
|
||||
}else{
|
||||
message.warning('该案件已发起流程');
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err)
|
||||
}
|
||||
}
|
||||
const closeModal = () => {
|
||||
openModal.value = false
|
||||
}
|
||||
const closeCase = (id: string) => {
|
||||
Modal.confirm({
|
||||
title: '关闭案件',
|
||||
content: '确定关闭该案件吗?',
|
||||
onOk: async () => {
|
||||
const result = await MainCloseCaseInfo(id)
|
||||
if(result){
|
||||
message.success('关闭案件成功');
|
||||
reload()
|
||||
openModal.value = false
|
||||
}else{
|
||||
message.error('关闭案件失败');
|
||||
}
|
||||
},
|
||||
onCancel() {},
|
||||
})
|
||||
}
|
||||
const reSubmit = (originalcaseno: string) => {
|
||||
Modal.confirm({
|
||||
title: '请输入复提原因',
|
||||
content: h('input',{
|
||||
class: 'reSubmitInput',
|
||||
onChange: (e) => reSubmitRemark.value = e.target.value
|
||||
}),
|
||||
onOk: async () => {
|
||||
console.log(reSubmitRemark.value)
|
||||
const result = await SaveReSubmitInfo({ originalcaseno, remark: reSubmitRemark.value })
|
||||
if(result){
|
||||
message.success('复提成功');
|
||||
reload()
|
||||
openModal.value = false
|
||||
}else{
|
||||
message.error('复提失败');
|
||||
}
|
||||
reSubmitRemark.value = ''
|
||||
},
|
||||
onCancel() {
|
||||
reSubmitRemark.value = ''
|
||||
},
|
||||
})
|
||||
}
|
||||
const customRequest = (file) => {
|
||||
console.log('handleCustomRequest',file)
|
||||
// const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
const formData = new FormData()
|
||||
formData.append('files', file.file)
|
||||
// uploadFile(formData).then(res => {
|
||||
// console.log(res)
|
||||
// fileList.value?.push({
|
||||
// uid: '-1',
|
||||
// name: res[0].filePath,
|
||||
// status: 'done',
|
||||
// url: VITE_GLOB_API_URL + '/' + res[0].filePath,
|
||||
// });
|
||||
// })
|
||||
}
|
||||
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.reSubmitInput{
|
||||
border: 1px solid;
|
||||
width: 100%;
|
||||
height: 35px;
|
||||
border-radius: 5px;
|
||||
padding: 0px 10px;
|
||||
border-color: #000;
|
||||
transition: 0.2s;
|
||||
&:focus{
|
||||
border-color: #6db8ff;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { h } from 'vue';
|
||||
import { Tag } from 'ant-design-vue';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
|
||||
export const code = '100001'
|
||||
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '案件编号',
|
||||
dataIndex: 'case_no',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '案件描述',
|
||||
dataIndex: 'case_description',
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: '案件类型',
|
||||
dataIndex: 'typename',
|
||||
},
|
||||
{
|
||||
title: '县',
|
||||
dataIndex: 'countyname',
|
||||
},
|
||||
{
|
||||
title: '镇',
|
||||
dataIndex: 'streetname',
|
||||
},
|
||||
{
|
||||
title: '判读人',
|
||||
dataIndex: 'identification_user',
|
||||
},
|
||||
{
|
||||
title: '判读时间',
|
||||
dataIndex: 'identification_time',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'checkstatus',
|
||||
customRender: ({ record }) => {
|
||||
const { checkstatus } = record;
|
||||
if(checkstatus == '待审核'){
|
||||
return h(Tag, { color: 'yellow' }, () => checkstatus);
|
||||
}else if(checkstatus == '已审核'){
|
||||
return h(Tag, { color: 'green' }, () => checkstatus);
|
||||
}
|
||||
return h(Tag, {}, () => checkstatus);
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '案件编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 5 },
|
||||
componentProps: {
|
||||
placeholder: '请输入名称/编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'typename',
|
||||
label:'案件类型',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({formModel}) => {
|
||||
return {
|
||||
api: getLoad,
|
||||
params: { code: 'kctubanleixing' },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'itemName',
|
||||
valueField: 'itemValue',
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'countyid',
|
||||
label:'县/区',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ tableAction, formModel }) => {
|
||||
return {
|
||||
api: getChildrenTree,
|
||||
params: { parentId: 371300 },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
onChange: () => {
|
||||
formModel.streetid = '';
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'streetid',
|
||||
label:'乡镇/街道',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: formModel.countyid && getChildrenTree,
|
||||
params: { parentId: formModel.countyid },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
};
|
||||
},
|
||||
}
|
||||
];
|
||||
|
||||
export const dictionary = {
|
||||
_input_39: 'case_no',
|
||||
_input_15: 'typename',
|
||||
_input_16: 'case_description',
|
||||
_input_3: 'countyid',
|
||||
_input_10: 'streetid',
|
||||
_input_ca1c543fcf014e6abdcb6d329d796cee: 'communityid',
|
||||
_input_43: 'area',
|
||||
_input_18fd0953784b4c35b9219bd6defaf376: 'gengdi_area',
|
||||
_input_42fed651e58c4b5daf9868ff6a0da3b0: 'shengtaibaohuhongxian_area',
|
||||
_input_520d1d8068f4492ea8c42ce9bb61b3cf: 'nongyongdi_area',
|
||||
_input_039dd978de5c4176b2913eae5ba60844: 'yongjiujibennongtian_area',
|
||||
_input_17: 'remark',
|
||||
_input_4: 'lng',
|
||||
_input_14: 'lat',
|
||||
_input_44: 'identification_time',
|
||||
_image_upload_369: 'casepic',
|
||||
}
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<BasicTable class="w-4/4 xl:w-5/5" @register="registerTable">
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
label: '详情',
|
||||
onClick: () => {
|
||||
handleAudit(record);
|
||||
},
|
||||
}
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<a-modal width="75%" v-model:open="openModal" title="线索审核" :destroyOnClose="true" :footer="null">
|
||||
<InfoModal :infoData="infoData.info" @handleOk="handleOk" :control="false"/>
|
||||
</a-modal>
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import InfoModal from '../audit/InfoModal/index.vue'
|
||||
import { columns, searchFormSchema } from './util';
|
||||
import { LoadCaseInfoLists, GetCaseInfo } from '@/api/illegalmining/index';
|
||||
|
||||
const infoData = ref({})
|
||||
const openModal = ref(false)
|
||||
|
||||
const [registerTable, { reload, expandAll}] = useTable({
|
||||
title: '已关闭',
|
||||
api: LoadCaseInfoLists,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
striped: false,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 使用搜索表单
|
||||
useSearchForm: true,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
beforeFetch(data) {
|
||||
let params = {...data,nowStatus: '已关闭'}
|
||||
return params
|
||||
},
|
||||
afterFetch(data) {
|
||||
console.log('afterFetch', data);
|
||||
},
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
},
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
function handleAudit(record) {
|
||||
GetCaseInfo({id: record.Id}).then(res => {
|
||||
console.log(res)
|
||||
infoData.value = res
|
||||
openModal.value = true
|
||||
})
|
||||
}
|
||||
const handleOk = () => {
|
||||
console.log('infoData',infoData.value)
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { h } from 'vue';
|
||||
import { Tag } from 'ant-design-vue';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '案件编号',
|
||||
dataIndex: 'case_no',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '案件描述',
|
||||
dataIndex: 'case_description',
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: '案件类型',
|
||||
dataIndex: 'typename',
|
||||
},
|
||||
{
|
||||
title: '县',
|
||||
dataIndex: 'countyname',
|
||||
},
|
||||
{
|
||||
title: '镇',
|
||||
dataIndex: 'streetname',
|
||||
},
|
||||
{
|
||||
title: '判读人',
|
||||
dataIndex: 'identification_user',
|
||||
},
|
||||
{
|
||||
title: '判读时间',
|
||||
dataIndex: 'identification_time',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'checkstatus',
|
||||
customRender: ({ record }) => {
|
||||
const { checkstatus } = record;
|
||||
if(checkstatus == '待审核'){
|
||||
return h(Tag, { color: 'yellow' }, () => checkstatus);
|
||||
}else if(checkstatus == '已审核'){
|
||||
return h(Tag, { color: 'green' }, () => checkstatus);
|
||||
}
|
||||
return h(Tag, {}, () => checkstatus);
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '案件编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 5 },
|
||||
componentProps: {
|
||||
placeholder: '请输入名称/编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'typename',
|
||||
label:'案件类型',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({formModel}) => {
|
||||
return {
|
||||
api: getLoad,
|
||||
params: { code: 'kctubanleixing' },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'itemName',
|
||||
valueField: 'itemValue',
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'countyid',
|
||||
label:'县/区',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ tableAction, formModel }) => {
|
||||
return {
|
||||
api: getChildrenTree,
|
||||
params: { parentId: 371300 },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
onChange: () => {
|
||||
formModel.streetid = '';
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'streetid',
|
||||
label:'乡镇/街道',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: formModel.countyid && getChildrenTree,
|
||||
params: { parentId: formModel.countyid },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
};
|
||||
},
|
||||
}
|
||||
];
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<BasicTable class="w-4/4 xl:w-5/5" @register="registerTable">
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
label: '详情',
|
||||
onClick: () => {
|
||||
handleAudit(record);
|
||||
},
|
||||
}
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<a-modal width="75%" v-model:open="openModal" title="线索审核" :destroyOnClose="true" :footer="null">
|
||||
<InfoModal :infoData="infoData.info" @handleOk="handleOk" @closeModal="closeModal" :control="false"/>
|
||||
</a-modal>
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import InfoModal from '../audit/InfoModal/index.vue'
|
||||
import { columns, searchFormSchema } from './util';
|
||||
import { LoadCaseInfoLists, GetCaseInfo } from '@/api/inspectionaudit/index';
|
||||
|
||||
const infoData = ref({})
|
||||
const openModal = ref(false)
|
||||
|
||||
const [registerTable, { reload, expandAll}] = useTable({
|
||||
title: '已审核',
|
||||
api: LoadCaseInfoLists,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
striped: false,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 使用搜索表单
|
||||
useSearchForm: true,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
beforeFetch(data) {
|
||||
let params = {...data,nowStatus: '已审核'}
|
||||
return params
|
||||
},
|
||||
afterFetch(data) {
|
||||
console.log('afterFetch', data);
|
||||
},
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
},
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
function handleAudit(record) {
|
||||
GetCaseInfo({id: record.Id}).then(res => {
|
||||
console.log(res)
|
||||
infoData.value = res
|
||||
openModal.value = true
|
||||
})
|
||||
}
|
||||
const handleOk = () => {
|
||||
console.log('infoData',infoData.value)
|
||||
}
|
||||
const closeModal = () => {
|
||||
openModal.value = false
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { h } from 'vue';
|
||||
import { Tag } from 'ant-design-vue';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '案件编号',
|
||||
dataIndex: 'case_no',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '案件描述',
|
||||
dataIndex: 'case_description',
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: '案件类型',
|
||||
dataIndex: 'typename',
|
||||
},
|
||||
{
|
||||
title: '县',
|
||||
dataIndex: 'countyname',
|
||||
},
|
||||
{
|
||||
title: '镇',
|
||||
dataIndex: 'streetname',
|
||||
},
|
||||
{
|
||||
title: '判读人',
|
||||
dataIndex: 'identification_user',
|
||||
},
|
||||
{
|
||||
title: '判读时间',
|
||||
dataIndex: 'identification_time',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'checkstatus',
|
||||
customRender: ({ record }) => {
|
||||
const { checkstatus } = record;
|
||||
if(checkstatus == '待审核'){
|
||||
return h(Tag, { color: 'yellow' }, () => checkstatus);
|
||||
}else if(checkstatus == '已审核'){
|
||||
return h(Tag, { color: 'green' }, () => checkstatus);
|
||||
}
|
||||
return h(Tag, {}, () => checkstatus);
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '案件编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 5 },
|
||||
componentProps: {
|
||||
placeholder: '请输入名称/编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'typename',
|
||||
label:'案件类型',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({formModel}) => {
|
||||
return {
|
||||
api: getLoad,
|
||||
params: { code: 'xcsjtblx' },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'itemName',
|
||||
valueField: 'itemValue',
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'countyid',
|
||||
label:'县/区',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ tableAction, formModel }) => {
|
||||
return {
|
||||
api: getChildrenTree,
|
||||
params: { parentId: 371300 },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
onChange: () => {
|
||||
formModel.streetid = '';
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'streetid',
|
||||
label:'乡镇/街道',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: formModel.countyid && getChildrenTree,
|
||||
params: { parentId: formModel.countyid },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
};
|
||||
},
|
||||
}
|
||||
];
|
||||
|
|
@ -0,0 +1,381 @@
|
|||
<template>
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">案件编号:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.case_no" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">案件类型:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.typename"
|
||||
:options="typenameOptions"
|
||||
placeholder="请选择案件类型" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="flex:2">
|
||||
<div class="label">案件详情:</div>
|
||||
<div class="item-value" style="flex:3">
|
||||
<a-input v-model:value="props.infoData.case_description" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">县/区:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.countyid"
|
||||
:options="countyOptions"
|
||||
placeholder="请选择县/区" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">乡镇/街道:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.streetid"
|
||||
:options="streetOptions"
|
||||
placeholder="请选择乡镇/街道" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">社区/村:</div>
|
||||
<div class="item-value">
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-model:value="props.infoData.communityid"
|
||||
:options="communityOptions"
|
||||
placeholder="请选择社区/村" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">详细地址:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.address" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">图斑面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">耕地面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.gengdi_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">占重点区域面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.zhongdianquyu_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">占生态红线面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.shengtaibaohuhongxian_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">占空间规划面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.guotukongjianguihua_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">占农用地面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.nongyongdi_area" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="flex:2">
|
||||
<div class="label">占永久基本农田面积:</div>
|
||||
<div class="item-value">
|
||||
<a-input v-model:value="props.infoData.yongjiujibennongtian_area" disabled/>
|
||||
</div>
|
||||
<div style="flex:2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">前影像名称:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.pre_phase_img" disabled />
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">前时相时间:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.pre_phase_time" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">备注:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.remark" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">后影像名称:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.later_phase_img" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">后时相时间:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.later_phase_time" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">经纬度:</div>
|
||||
<div class="item-value" style="flex:2;display: flex">
|
||||
<a-input id="lnglat" style="margin-right: 15px;" :value="`${props.infoData.lng},${props.infoData.lat}`" disabled/>
|
||||
<a-button @click="copyText">复制</a-button>
|
||||
<textarea id="copyText" style="position: absolute;left: -9999px;top: -9999px;" :value="`${props.infoData.lng},${props.infoData.lat}`"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item">
|
||||
<div class="label">判读人:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.identification_user" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">判读时间:</div>
|
||||
<div class="item-value" style="flex:2">
|
||||
<a-input v-model:value="props.infoData.identification_time" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="item" style="width: 100%;">
|
||||
<div class="label">图片:</div>
|
||||
<div style="flex:9;display:flex;">
|
||||
<a-image-preview-group>
|
||||
<div class="video-item" v-for="(item, index) in fileList" :key="index" style="display: inline-block;position:relative;">
|
||||
<!-- <div v-if="!$attrs.disabled" class="video-delete-btn" @click="handlerDelete(index)">
|
||||
<CloseOutlined />
|
||||
</div> -->
|
||||
<a-image :src="item.url" style="width:100px;height:100px;" />
|
||||
</div>
|
||||
</a-image-preview-group>
|
||||
<!-- <Upload
|
||||
list-type="picture-card"
|
||||
:showUploadList="false"
|
||||
:custom-request="customRequest"
|
||||
@change="handleChange"
|
||||
>
|
||||
<div>
|
||||
<plus-outlined />
|
||||
<div style="margin-top: 8px">Upload</div>
|
||||
</div>
|
||||
</Upload> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<div class="button-div">
|
||||
<a-button style="margin-right: 10px;" @click="emits('closeModal')">关闭弹窗</a-button>
|
||||
<a-button v-if="props.control" style="margin-right: 10px;" type="primary" class="danger-button" @click="emits('closeCase',props.infoData.id)">关闭线索</a-button>
|
||||
<a-button v-if="props.control" style="margin-right: 10px;" type="primary" @click="submit">审核通过</a-button>
|
||||
<a-button v-if="props.control" style="margin-right: 10px;" type="primary" class="danger-button" @click="reSubmit">复提</a-button>
|
||||
<!-- <a-button v-if="props.control" type="primary">导入</a-button> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { defineProps, ref, watch, onMounted, defineEmits } from "vue"
|
||||
import { PlusOutlined, CloseOutlined } from '@ant-design/icons-vue';
|
||||
import { Upload, message } from 'ant-design-vue';
|
||||
import { uploadFile } from '@/api/formrender/index';
|
||||
import { getAppEnvConfig } from '@/utils/env';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
|
||||
const props = defineProps(['infoData','control'])
|
||||
const emits = defineEmits(['handleOk','closeModal','closeCase','reSubmit'])
|
||||
|
||||
const typenameOptions = ref([])
|
||||
const countyOptions = ref([])
|
||||
const streetOptions = ref([])
|
||||
const communityOptions = ref([])
|
||||
const fileList = ref<any>([])
|
||||
const previewVisible = ref(false);
|
||||
const previewImage = ref('');
|
||||
const previewTitle = ref('');
|
||||
|
||||
onMounted(() => {
|
||||
getLoad({code:'xcsjtblx'}).then(res => {
|
||||
typenameOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.itemName,
|
||||
value: item.itemValue
|
||||
}
|
||||
})
|
||||
})
|
||||
getChildrenTree({ parentId: 371300 }).then(res => {
|
||||
countyOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
}
|
||||
})
|
||||
})
|
||||
props.infoData.countyid && getChildrenTree({ parentId: props.infoData.countyid }).then(res => {
|
||||
streetOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
}
|
||||
})
|
||||
})
|
||||
props.infoData.streetid && getChildrenTree({ parentId: props.infoData.streetid }).then(res => {
|
||||
communityOptions.value = res.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
}
|
||||
})
|
||||
})
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
props.infoData.casepic && props.infoData.casepic.split(',').forEach(item => {
|
||||
fileList.value.push({
|
||||
uid: '-1',
|
||||
name: item,
|
||||
status: 'done',
|
||||
url: VITE_GLOB_API_URL + '/' + item,
|
||||
})
|
||||
})
|
||||
})
|
||||
watch(() => fileList.value.length, (val) => {
|
||||
props.infoData.casepic = fileList.value.map(item => item.name).join(',')
|
||||
})
|
||||
|
||||
const handleChange = (info) => {
|
||||
if (info.file.status !== 'uploading') {
|
||||
}
|
||||
if (info.file.status === 'done') {
|
||||
} else if (info.file.status === 'error') {
|
||||
}
|
||||
};
|
||||
const customRequest = (file) => {
|
||||
console.log('handleCustomRequest',file)
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
const formData = new FormData()
|
||||
formData.append('files', file.file)
|
||||
uploadFile(formData).then(res => {
|
||||
console.log(res)
|
||||
fileList.value?.push({
|
||||
uid: '-1',
|
||||
name: res[0].filePath,
|
||||
status: 'done',
|
||||
url: VITE_GLOB_API_URL + '/' + res[0].filePath,
|
||||
});
|
||||
})
|
||||
}
|
||||
const handlePreview = () => {
|
||||
|
||||
}
|
||||
const handleRemove = () => {
|
||||
|
||||
}
|
||||
const handlerDelete = (index) => {
|
||||
fileList.value.splice(index, 1);
|
||||
}
|
||||
const handlerPreviewImage = (url,list) => {
|
||||
|
||||
}
|
||||
const submit = () => {
|
||||
console.log('通过')
|
||||
emits('handleOk')
|
||||
}
|
||||
const reSubmit = () => {
|
||||
emits('reSubmit',props.infoData.original_case_no)
|
||||
}
|
||||
const copyText = () => {
|
||||
const copyTextDom = document.getElementById('copyText')
|
||||
console.log(copyTextDom)
|
||||
if(copyTextDom){
|
||||
copyTextDom.select()
|
||||
document.execCommand('Copy');
|
||||
message.success('复制成功')
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
:deep(.ant-image){
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.video-delete-btn {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 10px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-bottom-left-radius: 80%;
|
||||
background: rgb(0 0 0 / 20%);
|
||||
color: #fff;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
z-index: 999;
|
||||
}
|
||||
.modal-content{
|
||||
padding: 20px;
|
||||
}
|
||||
.row{
|
||||
display: flex;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.select-width{
|
||||
width:100%;
|
||||
}
|
||||
.item{
|
||||
display: flex;
|
||||
flex:1;
|
||||
.label{
|
||||
flex: 1;
|
||||
padding: 0px 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.item-value{
|
||||
padding: 0px 15px;
|
||||
flex:1;
|
||||
}
|
||||
}
|
||||
.button-div{
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
.danger-button{
|
||||
background: #ed6f6f;
|
||||
&:hover{
|
||||
background: #faa19d;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,225 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<BasicTable class="w-4/4 xl:w-5/5" @register="registerTable">
|
||||
<template #toolbar>
|
||||
<!-- <a-button type="primary" @click="handleCreate">模板下载</a-button> -->
|
||||
<!-- <a-upload
|
||||
:accept="'.xlsx,.csv,.xls'"
|
||||
:showUploadList="false"
|
||||
:custom-request="customRequest"
|
||||
>
|
||||
<a-button type="primary">导入</a-button>
|
||||
</a-upload> -->
|
||||
</template>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
label: '审核',
|
||||
onClick: () => {
|
||||
handleAudit(record);
|
||||
},
|
||||
}
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<a-modal width="75%" v-model:open="openModal" title="线索审核" :destroyOnClose="true" :footer="null">
|
||||
<InfoModal
|
||||
:infoData="infoData.info"
|
||||
@handleOk="handleOk"
|
||||
@closeModal="closeModal"
|
||||
:control="true"
|
||||
@closeCase="closeCase"
|
||||
@reSubmit="reSubmit"/>
|
||||
</a-modal>
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref, h } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import InfoModal from './InfoModal/index.vue'
|
||||
import { columns, searchFormSchema, dictionary, code } from './util';
|
||||
import { getDetail } from '@/api/sys/WFSchemeInfo';
|
||||
import { functionsaveForm, LoadFormScheme } from '@/api/demo/formScheme';
|
||||
import { buildGUID } from '@/utils/uuid';
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
import { create, saveDraft, GetDraft } from '@/api/sys/WFProcess';
|
||||
import { message, Modal, Input } from 'ant-design-vue';
|
||||
import { SaveReSubmitInfo } from '@/api/demo/resubmit';
|
||||
import { LoadCaseInfoLists, GetCaseInfo, CloseCaseInfo } from '@/api/inspectionaudit/index';
|
||||
|
||||
const userStore = useUserStore();
|
||||
const userInfo = userStore.getUserInfo;
|
||||
const infoData = ref({})
|
||||
const openModal = ref(false)
|
||||
const reSubmitRemark = ref("")
|
||||
|
||||
const [registerTable, { reload, expandAll}] = useTable({
|
||||
title: '待审核',
|
||||
api: LoadCaseInfoLists,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
striped: false,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 使用搜索表单
|
||||
useSearchForm: true,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
beforeFetch(data) {
|
||||
let params = {...data,nowStatus: '待审核'}
|
||||
return params
|
||||
},
|
||||
afterFetch(data) {
|
||||
console.log('afterFetch', data);
|
||||
},
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
},
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
function handleAudit(record) {
|
||||
GetCaseInfo({id: record.Id}).then(res => {
|
||||
console.log(res)
|
||||
infoData.value = res
|
||||
openModal.value = true
|
||||
})
|
||||
}
|
||||
const handleOk = async () => {
|
||||
try {
|
||||
const { id } = infoData.value.info
|
||||
const checkValue = await GetDraft({id})
|
||||
if(checkValue.process == null){
|
||||
let data = await getDetail({ code });
|
||||
let content = JSON.parse(data.scheme.content);
|
||||
const currentNode = content.wfData.find((t) => t.type == 'bpmn:StartEvent');
|
||||
let formVerison = currentNode.formVerison
|
||||
let keyValue = ''
|
||||
const schemaData = await LoadFormScheme({
|
||||
schemeId: formVerison
|
||||
});
|
||||
const scheme = JSON.parse(schemaData.scheme);
|
||||
scheme.formInfo.tabList.forEach((tabElement) => {
|
||||
tabElement.schemas.forEach((element) => {
|
||||
if (element.field == currentNode.formRelationId) {
|
||||
keyValue = element.componentProps.fieldName;
|
||||
}
|
||||
});
|
||||
});
|
||||
let commit = {
|
||||
schemeId: currentNode.formVerison,
|
||||
pkey: keyValue,
|
||||
pkeyValue: id,
|
||||
};
|
||||
let resultQuery = {
|
||||
schemeCode: code,
|
||||
userId: userInfo.id,
|
||||
title: '',
|
||||
processId: id,
|
||||
InstanceInfo: JSON.stringify(commit),
|
||||
};
|
||||
await saveDraft(resultQuery);
|
||||
resultQuery.schemeCode = '';
|
||||
const result = await create(resultQuery);
|
||||
if(result){
|
||||
message.success('发起流程成功');
|
||||
reload()
|
||||
openModal.value = false
|
||||
}else{
|
||||
message.error('发起流程失败');
|
||||
}
|
||||
}else{
|
||||
message.warning('该案件已发起流程');
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err)
|
||||
}
|
||||
}
|
||||
const closeModal = () => {
|
||||
openModal.value = false
|
||||
}
|
||||
const closeCase = (id: string) => {
|
||||
Modal.confirm({
|
||||
title: '关闭案件',
|
||||
content: '确定关闭该案件吗?',
|
||||
onOk: async () => {
|
||||
const result = await CloseCaseInfo(id)
|
||||
if(result){
|
||||
message.success('关闭案件成功');
|
||||
reload()
|
||||
openModal.value = false
|
||||
}else{
|
||||
message.error('关闭案件失败');
|
||||
}
|
||||
},
|
||||
onCancel() {},
|
||||
})
|
||||
}
|
||||
const reSubmit = (originalcaseno: string) => {
|
||||
Modal.confirm({
|
||||
title: '请输入复提原因',
|
||||
content: h('input',{
|
||||
class: 'reSubmitInput',
|
||||
onChange: (e) => reSubmitRemark.value = e.target.value
|
||||
}),
|
||||
onOk: async () => {
|
||||
console.log(reSubmitRemark.value)
|
||||
const result = await SaveReSubmitInfo({ originalcaseno, remark: reSubmitRemark.value })
|
||||
if(result){
|
||||
message.success('复提成功');
|
||||
reload()
|
||||
openModal.value = false
|
||||
}else{
|
||||
message.error('复提失败');
|
||||
}
|
||||
reSubmitRemark.value = ''
|
||||
},
|
||||
onCancel() {
|
||||
reSubmitRemark.value = ''
|
||||
},
|
||||
})
|
||||
}
|
||||
const customRequest = (file) => {
|
||||
console.log('handleCustomRequest',file)
|
||||
// const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
const formData = new FormData()
|
||||
formData.append('files', file.file)
|
||||
// uploadFile(formData).then(res => {
|
||||
// console.log(res)
|
||||
// fileList.value?.push({
|
||||
// uid: '-1',
|
||||
// name: res[0].filePath,
|
||||
// status: 'done',
|
||||
// url: VITE_GLOB_API_URL + '/' + res[0].filePath,
|
||||
// });
|
||||
// })
|
||||
}
|
||||
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.reSubmitInput{
|
||||
border: 1px solid;
|
||||
width: 100%;
|
||||
height: 35px;
|
||||
border-radius: 5px;
|
||||
padding: 0px 10px;
|
||||
border-color: #000;
|
||||
transition: 0.2s;
|
||||
&:focus{
|
||||
border-color: #6db8ff;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { h } from 'vue';
|
||||
import { Tag } from 'ant-design-vue';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
|
||||
export const code = '0000002'
|
||||
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '案件编号',
|
||||
dataIndex: 'case_no',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '案件描述',
|
||||
dataIndex: 'case_description',
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: '案件类型',
|
||||
dataIndex: 'typename',
|
||||
},
|
||||
{
|
||||
title: '县',
|
||||
dataIndex: 'countyname',
|
||||
},
|
||||
{
|
||||
title: '镇',
|
||||
dataIndex: 'streetname',
|
||||
},
|
||||
{
|
||||
title: '判读人',
|
||||
dataIndex: 'identification_user',
|
||||
},
|
||||
{
|
||||
title: '判读时间',
|
||||
dataIndex: 'identification_time',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'checkstatus',
|
||||
customRender: ({ record }) => {
|
||||
const { checkstatus } = record;
|
||||
if(checkstatus == '待审核'){
|
||||
return h(Tag, { color: 'yellow' }, () => checkstatus);
|
||||
}else if(checkstatus == '已审核'){
|
||||
return h(Tag, { color: 'green' }, () => checkstatus);
|
||||
}
|
||||
return h(Tag, {}, () => checkstatus);
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '案件编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 5 },
|
||||
componentProps: {
|
||||
placeholder: '请输入名称/编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'typename',
|
||||
label:'案件类型',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({formModel}) => {
|
||||
return {
|
||||
api: getLoad,
|
||||
params: { code: 'xcsjtblx' },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'itemName',
|
||||
valueField: 'itemValue',
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'countyid',
|
||||
label:'县/区',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ tableAction, formModel }) => {
|
||||
return {
|
||||
api: getChildrenTree,
|
||||
params: { parentId: 371300 },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
onChange: () => {
|
||||
formModel.streetid = '';
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'streetid',
|
||||
label:'乡镇/街道',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: formModel.countyid && getChildrenTree,
|
||||
params: { parentId: formModel.countyid },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
};
|
||||
},
|
||||
}
|
||||
];
|
||||
|
||||
export const dictionary = {
|
||||
_input_39: 'case_no',
|
||||
_input_15: 'typename',
|
||||
_input_16: 'case_description',
|
||||
_input_3: 'countyid',
|
||||
_input_10: 'streetid',
|
||||
_input_ca1c543fcf014e6abdcb6d329d796cee: 'communityid',
|
||||
_input_43: 'area',
|
||||
_input_18fd0953784b4c35b9219bd6defaf376: 'gengdi_area',
|
||||
_input_42fed651e58c4b5daf9868ff6a0da3b0: 'shengtaibaohuhongxian_area',
|
||||
_input_520d1d8068f4492ea8c42ce9bb61b3cf: 'nongyongdi_area',
|
||||
_input_039dd978de5c4176b2913eae5ba60844: 'yongjiujibennongtian_area',
|
||||
_input_17: 'remark',
|
||||
_input_4: 'lng',
|
||||
_input_14: 'lat',
|
||||
_input_44: 'identification_time',
|
||||
_image_upload_369: 'casepic',
|
||||
}
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
<template>
|
||||
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
|
||||
<BasicTable class="w-4/4 xl:w-5/5" @register="registerTable">
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'action'">
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
label: '详情',
|
||||
onClick: () => {
|
||||
handleAudit(record);
|
||||
},
|
||||
}
|
||||
]"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<a-modal width="75%" v-model:open="openModal" title="线索审核" :destroyOnClose="true" :footer="null">
|
||||
<InfoModal :infoData="infoData.info" @handleOk="handleOk" :control="false"/>
|
||||
</a-modal>
|
||||
</PageWrapper>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref } from 'vue';
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
import { PageWrapper } from '@/components/Page';
|
||||
import InfoModal from '../audit/InfoModal/index.vue'
|
||||
import { columns, searchFormSchema } from './util';
|
||||
import { LoadCaseInfoLists, GetCaseInfo } from '@/api/inspectionaudit/index';
|
||||
|
||||
const infoData = ref({})
|
||||
const openModal = ref(false)
|
||||
|
||||
const [registerTable, { reload, expandAll}] = useTable({
|
||||
title: '已关闭',
|
||||
api: LoadCaseInfoLists,
|
||||
columns,
|
||||
rowKey: 'id',
|
||||
formConfig: {
|
||||
labelWidth: 120,
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
striped: false,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 使用搜索表单
|
||||
useSearchForm: true,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: true,
|
||||
bordered: true,
|
||||
beforeFetch(data) {
|
||||
let params = {...data,nowStatus: '已关闭'}
|
||||
return params
|
||||
},
|
||||
afterFetch(data) {
|
||||
console.log('afterFetch', data);
|
||||
},
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
},
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
function handleAudit(record) {
|
||||
GetCaseInfo({id: record.Id}).then(res => {
|
||||
console.log(res)
|
||||
infoData.value = res
|
||||
openModal.value = true
|
||||
})
|
||||
}
|
||||
const handleOk = () => {
|
||||
console.log('infoData',infoData.value)
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
import { BasicColumn, FormSchema } from '@/components/Table';
|
||||
import { h } from 'vue';
|
||||
import { Tag } from 'ant-design-vue';
|
||||
import { getChildrenTree } from '@/api/demo/system';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '案件编号',
|
||||
dataIndex: 'case_no',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '案件描述',
|
||||
dataIndex: 'case_description',
|
||||
width: 300,
|
||||
},
|
||||
{
|
||||
title: '案件类型',
|
||||
dataIndex: 'typename',
|
||||
},
|
||||
{
|
||||
title: '县',
|
||||
dataIndex: 'countyname',
|
||||
},
|
||||
{
|
||||
title: '镇',
|
||||
dataIndex: 'streetname',
|
||||
},
|
||||
{
|
||||
title: '判读人',
|
||||
dataIndex: 'identification_user',
|
||||
},
|
||||
{
|
||||
title: '判读时间',
|
||||
dataIndex: 'identification_time',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'checkstatus',
|
||||
customRender: ({ record }) => {
|
||||
const { checkstatus } = record;
|
||||
if(checkstatus == '待审核'){
|
||||
return h(Tag, { color: 'yellow' }, () => checkstatus);
|
||||
}else if(checkstatus == '已审核'){
|
||||
return h(Tag, { color: 'green' }, () => checkstatus);
|
||||
}
|
||||
return h(Tag, {}, () => checkstatus);
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'caseNo',
|
||||
label: '案件编号',
|
||||
component: 'Input',
|
||||
colProps: { span: 5 },
|
||||
componentProps: {
|
||||
placeholder: '请输入名称/编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'typename',
|
||||
label:'案件类型',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({formModel}) => {
|
||||
return {
|
||||
api: getLoad,
|
||||
params: { code: 'xcsjtblx' },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'itemName',
|
||||
valueField: 'itemValue',
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'countyid',
|
||||
label:'县/区',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ tableAction, formModel }) => {
|
||||
return {
|
||||
api: getChildrenTree,
|
||||
params: { parentId: 371300 },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
onChange: () => {
|
||||
formModel.streetid = '';
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'streetid',
|
||||
label:'乡镇/街道',
|
||||
component: 'ApiSelect',
|
||||
colProps: { span: 4 },
|
||||
componentProps: ({ formModel }) => {
|
||||
return {
|
||||
api: formModel.countyid && getChildrenTree,
|
||||
params: { parentId: formModel.countyid },
|
||||
// 接口参数
|
||||
resultField: 'result',
|
||||
labelField: 'name',
|
||||
valueField: 'id',
|
||||
};
|
||||
},
|
||||
}
|
||||
];
|
||||
Loading…
Reference in New Issue