Merge branch 'main' of http://123.132.248.154:10000/HC_YFZX/CaiYuanYiTiHua
|
|
@ -65,13 +65,13 @@
|
||||||
DTU和PLC完
|
DTU和PLC完
|
||||||
-->
|
-->
|
||||||
<div class="online">
|
<div class="online">
|
||||||
<div class="title">案件线索统计</div>
|
<div class="title">图斑线索统计</div>
|
||||||
<div class="online_con" id="container2">
|
<div class="online_con" id="container2">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="industry">
|
<div class="industry">
|
||||||
<div class="title">案件分类统计</div>
|
<div class="title">图斑分类统计</div>
|
||||||
<div class="industry_con" id="container3"></div>
|
<div class="industry_con" id="container3"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -138,7 +138,7 @@
|
||||||
<img class="centerimg" src="./images/newscase.png" />
|
<img class="centerimg" src="./images/newscase.png" />
|
||||||
<img class="centerimgActive" style="display: none;"
|
<img class="centerimgActive" style="display: none;"
|
||||||
src="./images/newscase-active.png" />
|
src="./images/newscase-active.png" />
|
||||||
最新案件</span>
|
最新图斑</span>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="center_top_con_but" data-layerName="uavLayer" data-isActive="false">
|
<!-- <div class="center_top_con_but" data-layerName="uavLayer" data-isActive="false">
|
||||||
<span>无人机</span>
|
<span>无人机</span>
|
||||||
|
|
@ -149,13 +149,13 @@
|
||||||
<img class="centerimg" src="./images/historycase.png" />
|
<img class="centerimg" src="./images/historycase.png" />
|
||||||
<img class="centerimgActive" style="display: none;"
|
<img class="centerimgActive" style="display: none;"
|
||||||
src="./images/historycase-active.png" />
|
src="./images/historycase-active.png" />
|
||||||
历史案件</span>
|
历史图斑</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="center_bot" style="position:relative;">
|
<div class="center_bot" style="position:relative;">
|
||||||
<div class="title">今日案件处理</div>
|
<div class="title">今日图斑处理</div>
|
||||||
<div
|
<div
|
||||||
style="position:absolute;left:0px;top:50px;height:25px;width:100%;overflow: hidden;overflow: auto;z-index:10;">
|
style="position:absolute;left:0px;top:50px;height:25px;width:100%;overflow: hidden;overflow: auto;z-index:10;">
|
||||||
<table class="panel-table" bordercolor="#0d48e0" border="1">
|
<table class="panel-table" bordercolor="#0d48e0" border="1">
|
||||||
|
|
@ -407,7 +407,7 @@
|
||||||
<!-- <div class="pop2" style="height: 650px;"> -->
|
<!-- <div class="pop2" style="height: 650px;"> -->
|
||||||
<div class="pop2">
|
<div class="pop2">
|
||||||
<div class="pop-top">
|
<div class="pop-top">
|
||||||
案件详情
|
图斑详情
|
||||||
<span class="pop-close">X</span>
|
<span class="pop-close">X</span>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="pop-content" style="height: 560px;"> -->
|
<!-- <div class="pop-content" style="height: 560px;"> -->
|
||||||
|
|
@ -424,15 +424,15 @@
|
||||||
</thead> -->
|
</thead> -->
|
||||||
<tbody style="line-height:40px;">
|
<tbody style="line-height:40px;">
|
||||||
<tr class="aaa" style="font-size: 16px;height:30px;" align="center">
|
<tr class="aaa" style="font-size: 16px;height:30px;" align="center">
|
||||||
<td style="font-size: 16px;height:30px;width:100px;">案件编号</td>
|
<td style="font-size: 16px;height:30px;width:100px;">图斑编号</td>
|
||||||
<td class="caseinfoNo"></td>
|
<td class="caseinfoNo"></td>
|
||||||
<td>图斑面积</td>
|
<td>图斑面积</td>
|
||||||
<td class="caseinfoArea"> </td>
|
<td class="caseinfoArea"> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="aaa" style="font-size: 16px;" align="center">
|
<tr class="aaa" style="font-size: 16px;" align="center">
|
||||||
<td>案件类型</td>
|
<td>图斑类型</td>
|
||||||
<td class="caseinfoType"> </td>
|
<td class="caseinfoType"> </td>
|
||||||
<td>案件描述</td>
|
<td>图斑描述</td>
|
||||||
<td class="caseinfoDesc"> </td>
|
<td class="caseinfoDesc"> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="aaa" style="font-size: 16px;" align="center">
|
<tr class="aaa" style="font-size: 16px;" align="center">
|
||||||
|
|
@ -442,7 +442,7 @@
|
||||||
<td class="caseinfoAddress"> </td>
|
<td class="caseinfoAddress"> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="aaa" style="font-size: 16px;" align="center">
|
<tr class="aaa" style="font-size: 16px;" align="center">
|
||||||
<td>案件图片</td>
|
<td>图斑图片</td>
|
||||||
<td colspan="3" class="caseinfoImages" style="text-align: left;">
|
<td colspan="3" class="caseinfoImages" style="text-align: left;">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -466,22 +466,22 @@
|
||||||
<!--弹出框-->
|
<!--弹出框-->
|
||||||
<div class="pop3">
|
<div class="pop3">
|
||||||
<div class="pop-top">
|
<div class="pop-top">
|
||||||
案件处理信息
|
图斑处理信息
|
||||||
<span class="pop-close">X</span>
|
<span class="pop-close">X</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="pop-content">
|
<div class="pop-content">
|
||||||
<table class="panel-table case-detail" bordercolor="#deefff" border="1">
|
<table class="panel-table case-detail" bordercolor="#deefff" border="1">
|
||||||
<tbody style="line-height:40px;">
|
<tbody style="line-height:40px;">
|
||||||
<tr class="aaa" style="font-size: 16px;height:30px;" align="center">
|
<tr class="aaa" style="font-size: 16px;height:30px;" align="center">
|
||||||
<td style="font-size: 16px;height:30px;width:100px;">案件编号</td>
|
<td style="font-size: 16px;height:30px;width:100px;">图斑编号</td>
|
||||||
<td class="caseinfoNo"></td>
|
<td class="caseinfoNo"></td>
|
||||||
<td>处理时间</td>
|
<td>处理时间</td>
|
||||||
<td class="dealTime"> </td>
|
<td class="dealTime"> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="aaa" style="font-size: 16px;" align="center">
|
<tr class="aaa" style="font-size: 16px;" align="center">
|
||||||
<td>案件类型</td>
|
<td>图斑类型</td>
|
||||||
<td class="caseinfoType"> </td>
|
<td class="caseinfoType"> </td>
|
||||||
<td>案件描述</td>
|
<td>图斑描述</td>
|
||||||
<td class="caseinfoDesc"> </td>
|
<td class="caseinfoDesc"> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="aaa" style="font-size: 16px;" align="center">
|
<tr class="aaa" style="font-size: 16px;" align="center">
|
||||||
|
|
@ -495,11 +495,11 @@
|
||||||
<td colspan="3" class="dealResult"> </td>
|
<td colspan="3" class="dealResult"> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="aaa" style="font-size: 16px;" align="center">
|
<tr class="aaa" style="font-size: 16px;" align="center">
|
||||||
<td>案件图片</td>
|
<td>图斑图片</td>
|
||||||
<td colspan="3" class="caseinfoImages" style="text-align: left;">
|
<td colspan="3" class="caseinfoImages" style="text-align: left;">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<!-- 案件处理图片 -->
|
<!-- 图斑处理图片 -->
|
||||||
<tr class="aaa" style="font-size: 16px;" align="center">
|
<tr class="aaa" style="font-size: 16px;" align="center">
|
||||||
<td>处理图片</td>
|
<td>处理图片</td>
|
||||||
<td colspan="3" class="dealImages">
|
<td colspan="3" class="dealImages">
|
||||||
|
|
|
||||||
|
|
@ -240,7 +240,7 @@ function getCaseClassData() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//今日案件处理
|
//今日图斑处理
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: BASE_URL + "/api/DroneScreenDisplay/LoadDroneCaseDeal",
|
url: BASE_URL + "/api/DroneScreenDisplay/LoadDroneCaseDeal",
|
||||||
|
|
@ -285,7 +285,7 @@ function getTodayCaseDeal() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// target2.on("click", ".click_pop2", function(){
|
// target2.on("click", ".click_pop2", function(){
|
||||||
// 今日案件处理详情
|
// 今日图斑处理详情
|
||||||
$(".click_pop2").click(function () {
|
$(".click_pop2").click(function () {
|
||||||
$('.bgPop3,.pop3').show();
|
$('.bgPop3,.pop3').show();
|
||||||
var IMAGE_BASE_URL = " http://60.213.14.14:6070";
|
var IMAGE_BASE_URL = " http://60.213.14.14:6070";
|
||||||
|
|
@ -786,16 +786,16 @@ function updateData() {
|
||||||
// 获取最新上报
|
// 获取最新上报
|
||||||
getNewestReport();
|
getNewestReport();
|
||||||
|
|
||||||
//获取今日案件处理
|
//获取今日图斑处理
|
||||||
getTodayCaseDeal();
|
getTodayCaseDeal();
|
||||||
|
|
||||||
//线索办理图表数据更新
|
//线索办理图表数据更新
|
||||||
getDealingAndCompleteData();
|
getDealingAndCompleteData();
|
||||||
|
|
||||||
//案件线索统计表数据更新
|
//图斑线索统计表数据更新
|
||||||
getVillageData();
|
getVillageData();
|
||||||
|
|
||||||
//案件分类统计表数据更新
|
//图斑分类统计表数据更新
|
||||||
getCaseClassData();
|
getCaseClassData();
|
||||||
|
|
||||||
//本周图表数据更新
|
//本周图表数据更新
|
||||||
|
|
@ -840,8 +840,8 @@ var scn_data = {
|
||||||
factoryHeader: [
|
factoryHeader: [
|
||||||
{ "categories": "处理时间" },
|
{ "categories": "处理时间" },
|
||||||
// {"categories":"上报时间"},
|
// {"categories":"上报时间"},
|
||||||
{ "categories": "案件类型" },
|
{ "categories": "图斑类型" },
|
||||||
{ "categories": "案件描述" },
|
{ "categories": "图斑描述" },
|
||||||
{ "categories": "乡镇" },
|
{ "categories": "乡镇" },
|
||||||
{ "categories": "处理结果" }
|
{ "categories": "处理结果" }
|
||||||
],
|
],
|
||||||
|
|
@ -1057,7 +1057,7 @@ function loadCompleteCaseCountCharts(plc) {
|
||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
type: 'category',
|
type: 'category',
|
||||||
data: ['案件总数', '已处理数'],
|
data: ['图斑总数', '已处理数'],
|
||||||
axisLine: {
|
axisLine: {
|
||||||
show: true,
|
show: true,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
|
|
@ -1167,7 +1167,7 @@ function loadCompleteCaseCountCharts(plc) {
|
||||||
}
|
}
|
||||||
loadCompleteCaseCountCharts(news_drow_dtu_num);
|
loadCompleteCaseCountCharts(news_drow_dtu_num);
|
||||||
|
|
||||||
//加载乡镇案件线索统计表
|
//加载乡镇图斑线索统计表
|
||||||
var villageCharts = null;
|
var villageCharts = null;
|
||||||
function loadVillageData(online) {
|
function loadVillageData(online) {
|
||||||
let option = {
|
let option = {
|
||||||
|
|
@ -1222,7 +1222,7 @@ function loadVillageData(online) {
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
name: '乡镇案件数量',
|
name: '乡镇图斑数量',
|
||||||
type: 'pictorialBar',
|
type: 'pictorialBar',
|
||||||
pictorialBar: '40%',
|
pictorialBar: '40%',
|
||||||
// symbol: 'path://M0,10 L10,10 L5,0 L0,10 z',
|
// symbol: 'path://M0,10 L10,10 L5,0 L0,10 z',
|
||||||
|
|
@ -1273,7 +1273,7 @@ function loadVillageData(online) {
|
||||||
}
|
}
|
||||||
loadVillageData(news_online);
|
loadVillageData(news_online);
|
||||||
|
|
||||||
//加载案件分类统计
|
//加载图斑分类统计
|
||||||
var caseClassCharts = null;
|
var caseClassCharts = null;
|
||||||
function loadCaseClassCharts(industy) {
|
function loadCaseClassCharts(industy) {
|
||||||
|
|
||||||
|
|
@ -1296,7 +1296,7 @@ function loadCaseClassCharts(industy) {
|
||||||
calculable: true,
|
calculable: true,
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
name: '案件分类统计',
|
name: '图斑分类统计',
|
||||||
type: 'pie',
|
type: 'pie',
|
||||||
radius: ['35%', '55%'],
|
radius: ['35%', '55%'],
|
||||||
center: ['50%', '40%'],
|
center: ['50%', '40%'],
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ $(function () {
|
||||||
// flyTo: true
|
// flyTo: true
|
||||||
// },
|
// },
|
||||||
// {
|
// {
|
||||||
// name: "历史案件",
|
// name: "历史图斑",
|
||||||
// type: "wms",
|
// type: "wms",
|
||||||
// url: "http://175.27.168.120:8080/geoserver/feixian/wms",
|
// url: "http://175.27.168.120:8080/geoserver/feixian/wms",
|
||||||
// layers: "tanyizhen:anjianjilu",
|
// layers: "tanyizhen:anjianjilu",
|
||||||
|
|
|
||||||
|
|
@ -468,7 +468,7 @@ function loadNewestReportPoint() {
|
||||||
|
|
||||||
var townshipName = document.createElement("div");
|
var townshipName = document.createElement("div");
|
||||||
townshipName.className = 'townshipName';
|
townshipName.className = 'townshipName';
|
||||||
var mytext = document.createTextNode("历史案件:" + townships[t].historyCount);
|
var mytext = document.createTextNode("历史图斑:" + townships[t].historyCount);
|
||||||
townshipName.appendChild(mytext);
|
townshipName.appendChild(mytext);
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -490,7 +490,7 @@ function loadNewestReportPoint() {
|
||||||
|
|
||||||
var newestName = document.createElement("div");
|
var newestName = document.createElement("div");
|
||||||
newestName.className = 'newestName';
|
newestName.className = 'newestName';
|
||||||
var mytext = document.createTextNode("最新案件:" + townships[t].newestCount);
|
var mytext = document.createTextNode("最新图斑:" + townships[t].newestCount);
|
||||||
newestName.appendChild(mytext);
|
newestName.appendChild(mytext);
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -811,7 +811,7 @@ map.on('load', function () {
|
||||||
'fill-opacity': 1,
|
'fill-opacity': 1,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// 历史案件数量
|
// 历史图斑数量
|
||||||
map.addLayer({
|
map.addLayer({
|
||||||
id: `historyCaseLayer`,
|
id: `historyCaseLayer`,
|
||||||
type: 'symbol',
|
type: 'symbol',
|
||||||
|
|
@ -820,7 +820,7 @@ map.on('load', function () {
|
||||||
layout: {
|
layout: {
|
||||||
'icon-image': '',
|
'icon-image': '',
|
||||||
visibility: 'none',
|
visibility: 'none',
|
||||||
'text-field': '历史案件:{count}',//此属性为需要显示的字段
|
'text-field': '历史图斑:{count}',//此属性为需要显示的字段
|
||||||
'text-size': 12,
|
'text-size': 12,
|
||||||
'text-offset': [0, 1],
|
'text-offset': [0, 1],
|
||||||
'text-allow-overlap': false, // 是否允许文本重叠(可选,默认值为 false。
|
'text-allow-overlap': false, // 是否允许文本重叠(可选,默认值为 false。
|
||||||
|
|
@ -835,7 +835,7 @@ map.on('load', function () {
|
||||||
'text-translate-anchor': 'map', // 文本的平移锚点,即相对的参考物(可选,可选值为 map、viewport,默认为 map)
|
'text-translate-anchor': 'map', // 文本的平移锚点,即相对的参考物(可选,可选值为 map、viewport,默认为 map)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
// 最新案件数量
|
// 最新图斑数量
|
||||||
map.addLayer({
|
map.addLayer({
|
||||||
id: `newCaseLayer`,
|
id: `newCaseLayer`,
|
||||||
type: 'symbol',
|
type: 'symbol',
|
||||||
|
|
@ -844,7 +844,7 @@ map.on('load', function () {
|
||||||
layout: {
|
layout: {
|
||||||
'icon-image': '',
|
'icon-image': '',
|
||||||
visibility: 'none',
|
visibility: 'none',
|
||||||
'text-field': '最新案件:{newestCount}',//此属性为需要显示的字段
|
'text-field': '最新图斑:{newestCount}',//此属性为需要显示的字段
|
||||||
'text-size': 12,
|
'text-size': 12,
|
||||||
'text-offset': [0, -1],
|
'text-offset': [0, -1],
|
||||||
'text-allow-overlap': false, // 是否允许文本重叠(可选,默认值为 false。
|
'text-allow-overlap': false, // 是否允许文本重叠(可选,默认值为 false。
|
||||||
|
|
@ -1066,7 +1066,7 @@ map.on('load', function () {
|
||||||
// "icon-image": "cat"
|
// "icon-image": "cat"
|
||||||
// }
|
// }
|
||||||
// });
|
// });
|
||||||
//历史案件
|
//历史图斑
|
||||||
function getPolygonCenter(pList) { //获取多边形中心点
|
function getPolygonCenter(pList) { //获取多边形中心点
|
||||||
var area = 0;
|
var area = 0;
|
||||||
var x = 0;
|
var x = 0;
|
||||||
|
|
@ -1176,7 +1176,7 @@ map.on('load', function () {
|
||||||
return item.name == e.features[0].properties.XZQMC;
|
return item.name == e.features[0].properties.XZQMC;
|
||||||
})
|
})
|
||||||
|
|
||||||
var str = "乡镇名称:" + e.features[0].properties.XZQMC + "<br> <br>案件数量:" + townshipInfo[0].reportCount;
|
var str = "乡镇名称:" + e.features[0].properties.XZQMC + "<br> <br>图斑数量:" + townshipInfo[0].reportCount;
|
||||||
popup.setLngLat([e.lngLat.lng, e.lngLat.lat]).setHTML("<p style='color:#333;font-weight:bold;'>" + str + "</p>").addTo(map);
|
popup.setLngLat([e.lngLat.lng, e.lngLat.lat]).setHTML("<p style='color:#333;font-weight:bold;'>" + str + "</p>").addTo(map);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
@ -1228,7 +1228,7 @@ map.on('load', function () {
|
||||||
|
|
||||||
let jrajs = townshipInfo[0].todayCount || ''
|
let jrajs = townshipInfo[0].todayCount || ''
|
||||||
let lsajs = townshipInfo[0].historyCount || ''
|
let lsajs = townshipInfo[0].historyCount || ''
|
||||||
var str = "区域名称:" + e.features[0].properties.name + "<br> <br>案件数量:" + townshipInfo[0].reportCount;
|
var str = "区域名称:" + e.features[0].properties.name + "<br> <br>图斑数量:" + townshipInfo[0].reportCount;
|
||||||
popup.setLngLat([e.lngLat.lng, e.lngLat.lat]).setHTML("<p style='color:#333;font-weight:bold;'>" + str + "</p>").addTo(map);
|
popup.setLngLat([e.lngLat.lng, e.lngLat.lat]).setHTML("<p style='color:#333;font-weight:bold;'>" + str + "</p>").addTo(map);
|
||||||
|
|
||||||
if (e.features.length > 0) {
|
if (e.features.length > 0) {
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 531 KiB |
|
After Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 918 B |
|
Before Width: | Height: | Size: 292 B |
|
After Width: | Height: | Size: 88 B |
|
After Width: | Height: | Size: 84 B |
|
After Width: | Height: | Size: 86 B |
|
After Width: | Height: | Size: 82 B |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 30 KiB |
|
|
@ -16,9 +16,9 @@ enum Api {
|
||||||
LoadReformCaseCount = '/api/DroneCaseInfoFLH/LoadTaskCount',
|
LoadReformCaseCount = '/api/DroneCaseInfoFLH/LoadTaskCount',
|
||||||
// 非粮化 整改审核第二层
|
// 非粮化 整改审核第二层
|
||||||
LoadTaskIllegalDetailList = '/api/DroneCaseInfoFLH/LoadTaskIllegalDetailList',
|
LoadTaskIllegalDetailList = '/api/DroneCaseInfoFLH/LoadTaskIllegalDetailList',
|
||||||
// 案件详情
|
// 图斑详情
|
||||||
GetCaseInfoById = '/api/DroneCaseInfoFLH/GetCaseInfoById',
|
GetCaseInfoById = '/api/DroneCaseInfoFLH/GetCaseInfoById',
|
||||||
// 非粮化 图斑调整 更新案件行政区划
|
// 非粮化 图斑调整 更新图斑行政区划
|
||||||
UpdateDroneCaseInfo = '/api/DroneCaseInfoFLH/UpdateDroneCaseInfo',
|
UpdateDroneCaseInfo = '/api/DroneCaseInfoFLH/UpdateDroneCaseInfo',
|
||||||
// 分割还原
|
// 分割还原
|
||||||
CaseRecover = '/api/DroneCaseInfoFLH/CaseRecover',
|
CaseRecover = '/api/DroneCaseInfoFLH/CaseRecover',
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,9 @@ enum Api {
|
||||||
// complete-导出
|
// complete-导出
|
||||||
Get_ExportCaseInfoList = '/api/DroneCaseinfo/ExportCaseInfoList',
|
Get_ExportCaseInfoList = '/api/DroneCaseinfo/ExportCaseInfoList',
|
||||||
|
|
||||||
// 案件详情
|
// 图斑详情
|
||||||
Get_getCaseInfo = '/api/DroneCaseinfo/GetCaseInfo',
|
Get_getCaseInfo = '/api/DroneCaseinfo/GetCaseInfo',
|
||||||
// 获取案件处理流程
|
// 获取图斑处理流程
|
||||||
Get_GetCaseFlowLog = '/api/DroneCaseinfo/GetCaseFlowLog',
|
Get_GetCaseFlowLog = '/api/DroneCaseinfo/GetCaseFlowLog',
|
||||||
// 处理详情
|
// 处理详情
|
||||||
Get_GetDroneCaseDeal = '/api/DroneCaseinfo/GetDroneCaseDeal',
|
Get_GetDroneCaseDeal = '/api/DroneCaseinfo/GetDroneCaseDeal',
|
||||||
|
|
@ -61,7 +61,7 @@ export function fun_ExportCaseInfoList(params) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 案件详情
|
// 图斑详情
|
||||||
export function fun_getCaseInfo(params) {
|
export function fun_getCaseInfo(params) {
|
||||||
return defHttp.get<responsesmodel>({
|
return defHttp.get<responsesmodel>({
|
||||||
url: Api.Get_getCaseInfo,
|
url: Api.Get_getCaseInfo,
|
||||||
|
|
@ -77,7 +77,7 @@ export function fun_GetCaseFlowLog(params) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取案件处理流程
|
// 获取图斑处理流程
|
||||||
export function fun_GetDroneCaseDeal(params) {
|
export function fun_GetDroneCaseDeal(params) {
|
||||||
return defHttp.get<droneCaseDealModel>({
|
return defHttp.get<droneCaseDealModel>({
|
||||||
url: Api.Get_GetDroneCaseDeal,
|
url: Api.Get_GetDroneCaseDeal,
|
||||||
|
|
|
||||||
|
|
@ -80,17 +80,27 @@ enum Api {
|
||||||
CaseOffence = '/api/DroneCaseInfoSingle/CaseOffence',
|
CaseOffence = '/api/DroneCaseInfoSingle/CaseOffence',
|
||||||
LoadCaseInfoListOffence = '/api/DroneCaseInfoSingle/LoadCaseInfoListOffence',
|
LoadCaseInfoListOffence = '/api/DroneCaseInfoSingle/LoadCaseInfoListOffence',
|
||||||
DealIllegalCaseInfo = '/api/DroneCaseInfoSingle/dealIllegalCaseInfo',
|
DealIllegalCaseInfo = '/api/DroneCaseInfoSingle/dealIllegalCaseInfo',
|
||||||
// 修改案件-获取案件列表
|
// 修改图斑-获取图斑列表
|
||||||
LoadCaseInfoListForUpdate = '/api/DroneCaseInfoSingle/LoadCaseInfoListForUpdate',
|
LoadCaseInfoListForUpdate = '/api/DroneCaseInfoSingle/LoadCaseInfoListForUpdate',
|
||||||
// 修改案件-获取单个案件信息
|
// 修改图斑-获取单个图斑信息
|
||||||
LoadCaseInfoById = '/api/DroneCaseInfoSingle/LoadCaseInfoById',
|
LoadCaseInfoById = '/api/DroneCaseInfoSingle/LoadCaseInfoById',
|
||||||
// 修改案件-修改案件信息
|
// 修改图斑-修改图斑信息
|
||||||
UpdateCaseInfo = '/api/DroneCaseInfoSingle/UpdateCaseInfo',
|
UpdateCaseInfo = '/api/DroneCaseInfoSingle/UpdateCaseInfo',
|
||||||
// 修改案件-获取案件历史信息
|
// 修改图斑-获取图斑历史信息
|
||||||
LoadCaseHistoryInfoList = '/api/DroneCaseInfoSingle/LoadCaseHistoryInfoList',
|
LoadCaseHistoryInfoList = '/api/DroneCaseInfoSingle/LoadCaseHistoryInfoList',
|
||||||
|
// geo服务增加
|
||||||
|
ShpGeoLayerAdd = '/api/ShpGeoLayer/Add',
|
||||||
|
// geo列表
|
||||||
|
ShpGeoLayerLoadPage = '/api/ShpGeoLayer/LoadPage',
|
||||||
|
// geo获取
|
||||||
|
ShpGeoLayerGet = '/api/ShpGeoLayer/Get',
|
||||||
|
// geo更新
|
||||||
|
ShpGeoLayerUpdateLayer = '/api/ShpGeoLayer/UpdateLayer',
|
||||||
|
// geo删除
|
||||||
|
ShpGeoLayerDelete = '/api/ShpGeoLayer/Delete',
|
||||||
|
// geo解析shp文件
|
||||||
|
ShpGeoLayerParseShpInfo = '/api/ShpGeoLayer/ParseShpInfo',
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getPositionsTree = (params?: AccountParams) =>
|
export const getPositionsTree = (params?: AccountParams) =>
|
||||||
defHttp.get<AccountListGetResultModel>({ url: Api.PositionsTree, params });
|
defHttp.get<AccountListGetResultModel>({ url: Api.PositionsTree, params });
|
||||||
|
|
||||||
|
|
@ -390,6 +400,22 @@ export function LoadCaseHistoryInfoList(params:{key: string}) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const ShpGeoLayerAdd = (params) =>
|
||||||
|
defHttp.post({ url: Api.ShpGeoLayerAdd, params });
|
||||||
|
|
||||||
|
export const ShpGeoLayerLoadPage = (params) =>
|
||||||
|
defHttp.get({ url: Api.ShpGeoLayerLoadPage, params });
|
||||||
|
|
||||||
|
export const ShpGeoLayerGet = (params) =>
|
||||||
|
defHttp.get({ url: Api.ShpGeoLayerGet, params });
|
||||||
|
|
||||||
|
export const ShpGeoLayerUpdateLayer = (params) =>
|
||||||
|
defHttp.post({ url: Api.ShpGeoLayerUpdateLayer, params });
|
||||||
|
|
||||||
|
export const ShpGeoLayerDelete = (params) =>
|
||||||
|
defHttp.post({ url: Api.ShpGeoLayerDelete + '/' + params.id });
|
||||||
|
|
||||||
|
export const ShpGeoLayerParseShpInfo = (params) =>
|
||||||
|
defHttp.post({ url: Api.ShpGeoLayerParseShpInfo + "?srid=" + params.srid + "&tableName=" + params.tableName + "&zipFilePath=" + params.zipFilePath });
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ enum Api {
|
||||||
LoadReformCaseCount = '/api/DroneCaseInfoSatellite/LoadReformCaseCount',
|
LoadReformCaseCount = '/api/DroneCaseInfoSatellite/LoadReformCaseCount',
|
||||||
// 非法采矿整改审核第二层
|
// 非法采矿整改审核第二层
|
||||||
LoadTaskIllegalDetailList = '/api/DroneCaseInfoSatellite/LoadTaskIllegalDetailList',
|
LoadTaskIllegalDetailList = '/api/DroneCaseInfoSatellite/LoadTaskIllegalDetailList',
|
||||||
// 案件详情
|
// 图斑详情
|
||||||
GetCaseInfoById = '/api/DroneCaseInfoSatellite/GetCaseInfoById',
|
GetCaseInfoById = '/api/DroneCaseInfoSatellite/GetCaseInfoById',
|
||||||
}
|
}
|
||||||
export function LoadCaiKuangTaskList(params) {
|
export function LoadCaiKuangTaskList(params) {
|
||||||
|
|
|
||||||
|
|
@ -11,25 +11,25 @@ import {
|
||||||
} from './model/index';
|
} from './model/index';
|
||||||
|
|
||||||
enum Api {
|
enum Api {
|
||||||
// 获取案件详情步骤条
|
// 获取图斑详情步骤条
|
||||||
GetCaseFlowLog = '/api/DroneCaseinfo/GetCaseFlowLog',
|
GetCaseFlowLog = '/api/DroneCaseinfo/GetCaseFlowLog',
|
||||||
// 获取案件处理详情
|
// 获取图斑处理详情
|
||||||
GetDroneCaseDeal = '/api/DroneCaseinfo/GetDroneCaseDeal',
|
GetDroneCaseDeal = '/api/DroneCaseinfo/GetDroneCaseDeal',
|
||||||
// 获取案件详情
|
// 获取图斑详情
|
||||||
GetCaseInfo = '/api/DroneCaseinfo/GetCaseInfo',
|
GetCaseInfo = '/api/DroneCaseinfo/GetCaseInfo',
|
||||||
// 案件列表
|
// 图斑列表
|
||||||
// LoadCaseInfoList = '/api/DroneCaseinfo/LoadCaseInfoList',
|
// LoadCaseInfoList = '/api/DroneCaseinfo/LoadCaseInfoList',
|
||||||
LoadCaseInfoList = '/api/DroneCaseInfoSingle/LoadCaseInfoList',
|
LoadCaseInfoList = '/api/DroneCaseInfoSingle/LoadCaseInfoList',
|
||||||
// 导出案件
|
// 导出图斑
|
||||||
ExportCaseInfo = "/api/DroneCaseInfoSingle/DroneCaseInfoExport",
|
ExportCaseInfo = "/api/DroneCaseInfoSingle/DroneCaseInfoExport",
|
||||||
// 案件统计列表
|
// 图斑统计列表
|
||||||
// 获取GeoJson图层
|
// 获取GeoJson图层
|
||||||
GetDroneGeoJson = '/api/DroneCaseinfo/GetDroneGeoJson',
|
GetDroneGeoJson = '/api/DroneCaseinfo/GetDroneGeoJson',
|
||||||
// 上报案件(案件判读保存)
|
// 上报图斑(图斑判读保存)
|
||||||
AddDroneCaseInfo = '/api/DroneCaseinfo/AddDroneCaseInfo',
|
AddDroneCaseInfo = '/api/DroneCaseinfo/AddDroneCaseInfo',
|
||||||
// 案件判读
|
// 图斑判读
|
||||||
UpdateDroneCaseInfoIntact = '/api/DroneCaseinfo/UpdateDroneCaseInfoIntact',
|
UpdateDroneCaseInfoIntact = '/api/DroneCaseinfo/UpdateDroneCaseInfoIntact',
|
||||||
// 关闭案件
|
// 关闭图斑
|
||||||
CloseDroneCaseInfo = '/api/DroneCaseinfo/CloseDroneCaseInfo',
|
CloseDroneCaseInfo = '/api/DroneCaseinfo/CloseDroneCaseInfo',
|
||||||
// 上传图片任务列表
|
// 上传图片任务列表
|
||||||
PicListTask = '/api/DroneShpImageexif/ListTask',
|
PicListTask = '/api/DroneShpImageexif/ListTask',
|
||||||
|
|
|
||||||
|
|
@ -12,20 +12,20 @@ import {
|
||||||
enum Api {
|
enum Api {
|
||||||
// 获取待办任务统计数据
|
// 获取待办任务统计数据
|
||||||
LoadTaskCount = '/api/DroneCaseInfoSingle/LoadTaskCount',
|
LoadTaskCount = '/api/DroneCaseInfoSingle/LoadTaskCount',
|
||||||
// 获取案件信息统计数据
|
// 获取图斑信息统计数据
|
||||||
LoadDroneCaseInfoCount = '/api/DroneCaseInfoSingle/LoadDroneCaseInfoCount',
|
LoadDroneCaseInfoCount = '/api/DroneCaseInfoSingle/LoadDroneCaseInfoCount',
|
||||||
// 分页获取案件信息列表
|
// 分页获取图斑信息列表
|
||||||
LoadDroneCaseInfoDetail = '/api/DroneCaseInfoSingle/LoadTasklList',
|
LoadDroneCaseInfoDetail = '/api/DroneCaseInfoSingle/LoadTasklList',
|
||||||
// 分页获取任务信息列表
|
// 分页获取任务信息列表
|
||||||
LoadTaskDetailList = '/api/DroneCaseInfoSingle/LoadTaskDetailList',
|
LoadTaskDetailList = '/api/DroneCaseInfoSingle/LoadTaskDetailList',
|
||||||
// 收藏案件
|
// 收藏图斑
|
||||||
AddCaseFavorite = '/api/DroneCaseInfoSingle/AddCaseFavorite',
|
AddCaseFavorite = '/api/DroneCaseInfoSingle/AddCaseFavorite',
|
||||||
// 获取收藏案件列表
|
// 获取收藏图斑列表
|
||||||
FavoriteCaseList = '/api/DroneCaseinfo/FavoriteCaseList',
|
FavoriteCaseList = '/api/DroneCaseinfo/FavoriteCaseList',
|
||||||
DeleteFavoriteCase = '/api/DroneCaseInfoSingle/DeleteFavoriteCase',
|
DeleteFavoriteCase = '/api/DroneCaseInfoSingle/DeleteFavoriteCase',
|
||||||
// 获取案件详情
|
// 获取图斑详情
|
||||||
GetCaseInfoById = '/api/DroneCaseInfoSingle/GetCaseInfoById',
|
GetCaseInfoById = '/api/DroneCaseInfoSingle/GetCaseInfoById',
|
||||||
// 更新案件行政区划
|
// 更新图斑行政区划
|
||||||
UpdateDroneCaseInfo = '/api/DroneCaseInfoSingle/UpdateDroneCaseInfo',
|
UpdateDroneCaseInfo = '/api/DroneCaseInfoSingle/UpdateDroneCaseInfo',
|
||||||
// 督办流程
|
// 督办流程
|
||||||
Supervise = '/api/WFProcess/Supervise',
|
Supervise = '/api/WFProcess/Supervise',
|
||||||
|
|
@ -47,7 +47,7 @@ enum Api {
|
||||||
GetPolygonCenter = '/api/DroneCaseInfoSingle/GetCenterPoints',
|
GetPolygonCenter = '/api/DroneCaseInfoSingle/GetCenterPoints',
|
||||||
// 获取用户访问机构权限
|
// 获取用户访问机构权限
|
||||||
GetUserOrgs = '/api/Check/GetOrgs',
|
GetUserOrgs = '/api/Check/GetOrgs',
|
||||||
// 大屏下发案件统计
|
// 大屏下发图斑统计
|
||||||
IssuedStatitical = "/api/DroneScreenDisplay/CaseOffenceXiaFa",
|
IssuedStatitical = "/api/DroneScreenDisplay/CaseOffenceXiaFa",
|
||||||
// 大屏核实新增统计
|
// 大屏核实新增统计
|
||||||
VerifyStatitical = "/api/DroneScreenDisplay/CaseOffenceCheckAdd",
|
VerifyStatitical = "/api/DroneScreenDisplay/CaseOffenceCheckAdd",
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="my-form-viewer">
|
<div class="my-form-viewer">
|
||||||
<div v-show="tabsColumns.length > 1">
|
<div v-show="tabsColumns.length > 1">
|
||||||
<a-tabs style="width: 100%" @change="tabsChange">
|
<a-tabs v-model:activeKey="activeTabsKey" style="width: 100%" @change="tabsChange">
|
||||||
<a-tab-pane v-for="(colItem, index) in tabsColumns" :tab="colItem.label" :key="index">
|
<a-tab-pane v-for="(colItem, index) in tabsColumns" :tab="colItem.label" :key="index">
|
||||||
<BasicForm ref="tabsFormRef" @register="registerForm">
|
<BasicForm :ref="`tabsFormRef${index}`" @register="registerForm" :key="index">
|
||||||
<template #CardGroup>
|
<template #CardGroup>
|
||||||
<CardGourp
|
<CardGourp
|
||||||
v-if="cardGroupData.length > 0 && cardGroupData[index]"
|
v-if="cardGroupData.length > 0 && cardGroupData[index]"
|
||||||
|
|
@ -91,8 +91,13 @@
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const emit = defineEmits(['getFormSuccess']);
|
const emit = defineEmits(['getFormSuccess']);
|
||||||
const subTableDataStore = subTableStore();
|
const subTableDataStore = subTableStore();
|
||||||
const tabsFormRef = ref()
|
const tabsFormRef0 = ref();
|
||||||
const formRef = ref()
|
const tabsFormRef1 = ref();
|
||||||
|
const tabsFormRef2 = ref();
|
||||||
|
const tabsFormRef3 = ref();
|
||||||
|
const tabsFormRef4 = ref();
|
||||||
|
const formRef = ref();
|
||||||
|
const activeTabsKey = ref();
|
||||||
let formColumns: FormSchema[] = [];
|
let formColumns: FormSchema[] = [];
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
formConfig: Object,
|
formConfig: Object,
|
||||||
|
|
@ -211,7 +216,7 @@
|
||||||
tabElement.schemas.forEach((element) => {
|
tabElement.schemas.forEach((element) => {
|
||||||
if (element.field == props.formRelationId) {
|
if (element.field == props.formRelationId) {
|
||||||
keyValue.value = element.componentProps.fieldName;
|
keyValue.value = element.componentProps.fieldName;
|
||||||
getFormDetail();
|
getFormDetail(scheme.formInfo.tabList);
|
||||||
disDetail = true;
|
disDetail = true;
|
||||||
}
|
}
|
||||||
if (element.component === 'InputGuid') {
|
if (element.component === 'InputGuid') {
|
||||||
|
|
@ -341,11 +346,11 @@
|
||||||
}
|
}
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
setFieldsValue(FieldsValue.value);
|
setFieldsValue(FieldsValue.value);
|
||||||
clearValidate()
|
clearValidate();
|
||||||
}, 10);
|
}, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getFormDetail() {
|
async function getFormDetail(element) {
|
||||||
var instance = props.instanceInfo;
|
var instance = props.instanceInfo;
|
||||||
const querys = {
|
const querys = {
|
||||||
id: props.formVerison,
|
id: props.formVerison,
|
||||||
|
|
@ -370,7 +375,21 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
cardGourpFormData.value = obj;
|
cardGourpFormData.value = obj;
|
||||||
subTableDataStore.setGroupData(obj);
|
let cardGroupKeys = [];
|
||||||
|
element.forEach((tabItem) => {
|
||||||
|
tabItem.schemas.forEach((elItem) => {
|
||||||
|
if (elItem.component == 'CardGroup' && elItem.field.indexOf('guid') == -1) {
|
||||||
|
cardGroupKeys = cardGroupGetKey(elItem, cardGroupKeys);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
let setGroupDataObj = {};
|
||||||
|
Object.keys(obj).forEach((itemKey) => {
|
||||||
|
if (cardGroupKeys.includes(itemKey)) {
|
||||||
|
setGroupDataObj[itemKey] = obj[itemKey];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
subTableDataStore.setGroupData(setGroupDataObj);
|
||||||
subTableDataStore.setToSetGroupData();
|
subTableDataStore.setToSetGroupData();
|
||||||
FieldsValue.value = obj;
|
FieldsValue.value = obj;
|
||||||
setFieldsValue({
|
setFieldsValue({
|
||||||
|
|
@ -409,17 +428,29 @@
|
||||||
emit('getFormSuccess', data[mainTable][0]);
|
emit('getFormSuccess', data[mainTable][0]);
|
||||||
}
|
}
|
||||||
const groupRef = ref();
|
const groupRef = ref();
|
||||||
|
const cardGroupGetKey = (element, resultList) => {
|
||||||
|
resultList.push(element.field);
|
||||||
|
element.componentProps.options.forEach((groupItem) => {
|
||||||
|
groupItem.children.forEach((childItem) => {
|
||||||
|
resultList.push(childItem.field);
|
||||||
|
if (childItem.component == 'CardGroup' && childItem.field.indexOf('guid') == -1) {
|
||||||
|
resultList = cardGroupGetKey(childItem, resultList);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return resultList;
|
||||||
|
};
|
||||||
async function getForm() {
|
async function getForm() {
|
||||||
try {
|
try {
|
||||||
// 验证卡片组必填项
|
// 验证卡片组必填项
|
||||||
if (groupRef.value) {
|
if (groupRef.value) {
|
||||||
if (groupRef.value.length > 0) {
|
if (groupRef.value.length > 0) {
|
||||||
groupRef.value.forEach(async (item) => {
|
for (let index = 0; index < groupRef.value.length; index++) {
|
||||||
await item.changeForm();
|
await groupRef.value[index].changeForm();
|
||||||
if (!(item.verify())) {
|
if (!(await groupRef.value[index].verify())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
} else {
|
} else {
|
||||||
await groupRef.value.changeForm();
|
await groupRef.value.changeForm();
|
||||||
if (!(await groupRef.value.verify())) {
|
if (!(await groupRef.value.verify())) {
|
||||||
|
|
@ -428,26 +459,64 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(subTableDataStore.getGroupData);
|
console.log(subTableDataStore.getGroupData);
|
||||||
let resultObj = {}
|
let resultObj = {};
|
||||||
if(tabsFormRef.value){
|
let values;
|
||||||
tabsFormRef.value.forEach((item,index) => {
|
switch (activeTabsKey.value) {
|
||||||
console.log(item.getFieldsValue(),index)
|
case 0:
|
||||||
let data = item.getFieldsValue()
|
resultObj = tabsFormRef0.value[0].getFieldsValue();
|
||||||
Object.keys(data).forEach(key => {
|
tabsFormRef0.value[0].setFieldsValue({
|
||||||
if(!resultObj[key]){
|
...resultObj,
|
||||||
resultObj[key] = data[key]
|
...subTableDataStore.getGroupData,
|
||||||
}
|
});
|
||||||
})
|
await tabsFormRef0.value[0].validate();
|
||||||
})
|
values = tabsFormRef0.value[0].getFieldsValue();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
resultObj = tabsFormRef1.value[0].getFieldsValue();
|
||||||
|
tabsFormRef1.value[0].setFieldsValue({
|
||||||
|
...resultObj,
|
||||||
|
...subTableDataStore.getGroupData,
|
||||||
|
});
|
||||||
|
await tabsFormRef1.value[0].validate();
|
||||||
|
values = tabsFormRef1.value[0].getFieldsValue();
|
||||||
|
console.log('resultValue111', JSON.parse(JSON.stringify(values)));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
resultObj = tabsFormRef2.value[0].getFieldsValue();
|
||||||
|
tabsFormRef2.value[0].setFieldsValue({
|
||||||
|
...resultObj,
|
||||||
|
...subTableDataStore.getGroupData,
|
||||||
|
});
|
||||||
|
await tabsFormRef2.value[0].validate();
|
||||||
|
values = tabsFormRef2.value[0].getFieldsValue();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
resultObj = tabsFormRef3.value[0].getFieldsValue();
|
||||||
|
tabsFormRef3.value[0].setFieldsValue({
|
||||||
|
...resultObj,
|
||||||
|
...subTableDataStore.getGroupData,
|
||||||
|
});
|
||||||
|
await tabsFormRef3.value[0].validate();
|
||||||
|
values = tabsFormRef3.value[0].getFieldsValue();
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
resultObj = tabsFormRef4.value[0].getFieldsValue();
|
||||||
|
tabsFormRef4.value[0].setFieldsValue({
|
||||||
|
...resultObj,
|
||||||
|
...subTableDataStore.getGroupData,
|
||||||
|
});
|
||||||
|
await tabsFormRef4.value[0].validate();
|
||||||
|
values = tabsFormRef4.value[0].getFieldsValue();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
resultObj = getFieldsValue();
|
||||||
|
setFieldsValue({
|
||||||
|
...resultObj,
|
||||||
|
...subTableDataStore.getGroupData,
|
||||||
|
});
|
||||||
|
values = await validate();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
//卡片组的值赋值给form,优化卡片组必填验证不通过
|
|
||||||
setFieldsValue({
|
|
||||||
...resultObj,
|
|
||||||
...subTableDataStore.getGroupData,
|
|
||||||
});
|
|
||||||
|
|
||||||
// 验证表单必填项
|
|
||||||
let values = await validate();
|
|
||||||
for (const key in values) {
|
for (const key in values) {
|
||||||
for (const fieKey in FieldsValue.value) {
|
for (const fieKey in FieldsValue.value) {
|
||||||
if (key == fieKey) {
|
if (key == fieKey) {
|
||||||
|
|
@ -507,8 +576,8 @@
|
||||||
if (props.formVerison) {
|
if (props.formVerison) {
|
||||||
getFormHistory();
|
getFormHistory();
|
||||||
}
|
}
|
||||||
tabsFormRef.value && tabsFormRef.value.clearValidate();
|
// tabsFormRef.value && tabsFormRef.value.clearValidate();
|
||||||
formRef.value && formRef.value.clearValidate();
|
// formRef.value && formRef.value.clearValidate();
|
||||||
});
|
});
|
||||||
function radioVal() {
|
function radioVal() {
|
||||||
console.log('radioVal');
|
console.log('radioVal');
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,10 @@ export const patchSourceOptions = [
|
||||||
label: '省级矿产卫片图斑',
|
label: '省级矿产卫片图斑',
|
||||||
value: '省级矿产卫片图斑',
|
value: '省级矿产卫片图斑',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: '省级月度图斑',
|
||||||
|
value: '省级月度图斑',
|
||||||
|
},
|
||||||
];
|
];
|
||||||
export const isOverdueOptions = [
|
export const isOverdueOptions = [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@
|
||||||
message.warning('请选择一条数据');
|
message.warning('请选择一条数据');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
modalData.title = type === 'bindCaseTypes' ? '分配案件类型' : '分配角色';
|
modalData.title = type === 'bindCaseTypes' ? '分配图斑类型' : '分配角色';
|
||||||
modalData.topicId = row[0].topicId;
|
modalData.topicId = row[0].topicId;
|
||||||
modalData.type = type;
|
modalData.type = type;
|
||||||
openModal.value = true;
|
openModal.value = true;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ export const columns = [
|
||||||
dataIndex: 'topicName',
|
dataIndex: 'topicName',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '案件类型',
|
title: '图斑类型',
|
||||||
dataIndex: 'caseTypes',
|
dataIndex: 'caseTypes',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -46,7 +46,7 @@ export const emptyTopicItem = {
|
||||||
};
|
};
|
||||||
export const caseTypesColumns = [
|
export const caseTypesColumns = [
|
||||||
{
|
{
|
||||||
title: '案件名称',
|
title: '图斑名称',
|
||||||
dataIndex: 'itemName',
|
dataIndex: 'itemName',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
<BasicModal
|
<BasicModal
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
@register="registerModal"
|
@register="registerModal"
|
||||||
title="案件详情"
|
title="图斑详情"
|
||||||
:canFullscreen="false"
|
:canFullscreen="false"
|
||||||
:defaultFullscreen="true"
|
:defaultFullscreen="true"
|
||||||
:showCancelBtn="false"
|
:showCancelBtn="false"
|
||||||
|
|
@ -72,7 +72,7 @@
|
||||||
dataIndex: 'communityname',
|
dataIndex: 'communityname',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '案件描述',
|
title: '图斑描述',
|
||||||
dataIndex: 'case_description',
|
dataIndex: 'case_description',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -105,7 +105,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '下发时间',
|
title: '下发时间',
|
||||||
dataIndex: 'createtime',
|
dataIndex: 'synchronoustime',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '项目名称',
|
title: '项目名称',
|
||||||
|
|
|
||||||
|
|
@ -229,10 +229,10 @@ export const searchFormSchema: FormSchema[] = [
|
||||||
component: 'RangePicker',
|
component: 'RangePicker',
|
||||||
colProps: { span: 8 },
|
colProps: { span: 8 },
|
||||||
componentProps: {
|
componentProps: {
|
||||||
format: 'YYYY-MM',
|
format: 'YYYY-MM-DD',
|
||||||
picker: 'month',
|
// picker: 'month',
|
||||||
placeholder: ['开始日期', '结束日期'],
|
placeholder: ['开始日期', '结束日期'],
|
||||||
defaultValue: [dayjs(dayjs(), 'YYYY-MM'), dayjs(dayjs(), 'YYYY-MM')]
|
defaultValue: [dayjs(dayjs().add(-1, 'day'), 'YYYY-MM-DD'), dayjs(dayjs().add(-1, 'day'), 'YYYY-MM-DD')]
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -190,7 +190,7 @@
|
||||||
<a-modal v-model:open="open_chuantou" title="导出文件类型" :footer="null">
|
<a-modal v-model:open="open_chuantou" title="导出文件类型" :footer="null">
|
||||||
<div>
|
<div>
|
||||||
<a-button class="exportbutton" @click="handleExport('chuantou_execl')">
|
<a-button class="exportbutton" @click="handleExport('chuantou_execl')">
|
||||||
统计明细案件信息(execl)
|
统计明细图斑信息(execl)
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button class="exportbutton" @click="handleExport('chuantou_shp')">
|
<a-button class="exportbutton" @click="handleExport('chuantou_shp')">
|
||||||
统计明细矢量数据(shp)
|
统计明细矢量数据(shp)
|
||||||
|
|
@ -279,9 +279,14 @@
|
||||||
},
|
},
|
||||||
beforeFetch: (data) => {
|
beforeFetch: (data) => {
|
||||||
// 接口请求前 参数处理
|
// 接口请求前 参数处理
|
||||||
|
// 默认展示昨天的
|
||||||
var temp = {
|
var temp = {
|
||||||
startTime: dayjs(data.startTime).startOf('month').format('YYYY-MM-DD'),
|
startTime: data.startTime
|
||||||
endTime: dayjs(data.endTime).endOf('month').format('YYYY-MM-DD HH:mm:ss'),
|
? dayjs(data.startTime).startOf('day').format('YYYY-MM-DD')
|
||||||
|
: dayjs().startOf('day').add(-1, 'day').format('YYYY-MM-DD'),
|
||||||
|
endTime: data.endTime
|
||||||
|
? dayjs(data.endTime).endOf('day').format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
: dayjs().endOf('day').add(-1, 'day').format('YYYY-MM-DD HH:mm:ss'),
|
||||||
};
|
};
|
||||||
return temp;
|
return temp;
|
||||||
},
|
},
|
||||||
|
|
@ -310,8 +315,8 @@
|
||||||
const searchForm = reactive<searchListSchema>({
|
const searchForm = reactive<searchListSchema>({
|
||||||
AreaId: record.countyid,
|
AreaId: record.countyid,
|
||||||
CaseType: CaseType,
|
CaseType: CaseType,
|
||||||
startTime: dayjs(searchParams.value?.startTime).startOf('month').format('YYYY-MM-DD'),
|
startTime: dayjs(searchParams.value?.startTime).startOf('day').format('YYYY-MM-DD'),
|
||||||
endTime: dayjs(searchParams.value?.endTime).endOf('month').format('YYYY-MM-DD HH:mm:ss'),
|
endTime: dayjs(searchParams.value?.endTime).endOf('day').format('YYYY-MM-DD HH:mm:ss'),
|
||||||
page: 1,
|
page: 1,
|
||||||
limit: 10,
|
limit: 10,
|
||||||
});
|
});
|
||||||
|
|
@ -407,22 +412,22 @@
|
||||||
let params: any = {};
|
let params: any = {};
|
||||||
let afterTitle = '';
|
let afterTitle = '';
|
||||||
if (
|
if (
|
||||||
dayjs(searchParams.value?.startTime).startOf('month').format('YYYY-MM') ===
|
dayjs(searchParams.value?.startTime).startOf('day').format('YYYY-MM-DD') ===
|
||||||
dayjs(searchParams.value?.endTime).endOf('month').format('YYYY-MM')
|
dayjs(searchParams.value?.endTime).endOf('day').format('YYYY-MM-DD')
|
||||||
) {
|
) {
|
||||||
afterTitle = dayjs(searchParams.value?.startTime).startOf('month').format('YYYY-MM');
|
afterTitle = dayjs(searchParams.value?.startTime).startOf('day').format('YYYY-MM-DD');
|
||||||
} else {
|
} else {
|
||||||
afterTitle =
|
afterTitle =
|
||||||
dayjs(searchParams.value?.startTime).startOf('month').format('YYYY-MM') +
|
dayjs(searchParams.value?.startTime).startOf('day').format('YYYY-MM-DD') +
|
||||||
'至' +
|
'至' +
|
||||||
dayjs(searchParams.value?.endTime).endOf('month').format('YYYY-MM');
|
dayjs(searchParams.value?.endTime).endOf('day').format('YYYY-MM-DD');
|
||||||
}
|
}
|
||||||
switch (exportType) {
|
switch (exportType) {
|
||||||
case 'chuantou_execl':
|
case 'chuantou_execl':
|
||||||
// 穿透-导出案件明细execl
|
// 穿透-导出图斑明细execl
|
||||||
url = VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/ExprotCaseListByType';
|
url = VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/ExprotCaseListByType';
|
||||||
fileName =
|
fileName =
|
||||||
'统计明细案件信息 ' +
|
'统计明细图斑信息 ' +
|
||||||
tablist[activeKey.value].countyname +
|
tablist[activeKey.value].countyname +
|
||||||
'-' +
|
'-' +
|
||||||
tablist[activeKey.value].label +
|
tablist[activeKey.value].label +
|
||||||
|
|
@ -431,7 +436,7 @@
|
||||||
'.xls';
|
'.xls';
|
||||||
break;
|
break;
|
||||||
case 'chuantou_shp':
|
case 'chuantou_shp':
|
||||||
// 穿透-导出案件明细shp
|
// 穿透-导出图斑明细shp
|
||||||
url = VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/ExportShapefile';
|
url = VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/ExportShapefile';
|
||||||
fileName =
|
fileName =
|
||||||
'统计明细矢量数据 ' +
|
'统计明细矢量数据 ' +
|
||||||
|
|
@ -468,8 +473,8 @@
|
||||||
}
|
}
|
||||||
if (['mingxi_1', 'mingxi_2', 'mingxi_3'].includes(exportType)) {
|
if (['mingxi_1', 'mingxi_2', 'mingxi_3'].includes(exportType)) {
|
||||||
params = {
|
params = {
|
||||||
startTime: dayjs(searchParams.value?.startTime).startOf('month').format('YYYY-MM-DD'),
|
startTime: dayjs(searchParams.value?.startTime).startOf('day').format('YYYY-MM-DD'),
|
||||||
endTime: dayjs(searchParams.value?.endTime).endOf('month').format('YYYY-MM-DD HH:mm:ss'),
|
endTime: dayjs(searchParams.value?.endTime).endOf('day').format('YYYY-MM-DD HH:mm:ss'),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
<BasicModal
|
<BasicModal
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
@register="registerModal"
|
@register="registerModal"
|
||||||
title="案件详情"
|
title="图斑详情"
|
||||||
:canFullscreen="false"
|
:canFullscreen="false"
|
||||||
:defaultFullscreen="true"
|
:defaultFullscreen="true"
|
||||||
:showCancelBtn="false"
|
:showCancelBtn="false"
|
||||||
|
|
@ -73,7 +73,7 @@
|
||||||
dataIndex: 'communityname',
|
dataIndex: 'communityname',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '案件描述',
|
title: '图斑描述',
|
||||||
dataIndex: 'case_description',
|
dataIndex: 'case_description',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -97,7 +97,7 @@
|
||||||
dataIndex: 'is_illegal',
|
dataIndex: 'is_illegal',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '案件状态',
|
title: '图斑状态',
|
||||||
dataIndex: 'handle_status_name',
|
dataIndex: 'handle_status_name',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -190,7 +190,7 @@
|
||||||
<a-modal v-model:open="open_chuantou" title="导出文件类型" :footer="null">
|
<a-modal v-model:open="open_chuantou" title="导出文件类型" :footer="null">
|
||||||
<div>
|
<div>
|
||||||
<a-button class="exportbutton" @click="handleExport('chuantou_execl')">
|
<a-button class="exportbutton" @click="handleExport('chuantou_execl')">
|
||||||
统计明细案件信息(execl)
|
统计明细图斑信息(execl)
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button class="exportbutton" @click="handleExport('chuantou_shp')">
|
<a-button class="exportbutton" @click="handleExport('chuantou_shp')">
|
||||||
统计明细矢量数据(shp)
|
统计明细矢量数据(shp)
|
||||||
|
|
@ -421,10 +421,10 @@
|
||||||
}
|
}
|
||||||
switch (exportType) {
|
switch (exportType) {
|
||||||
case 'chuantou_execl':
|
case 'chuantou_execl':
|
||||||
// 穿透-导出案件明细execl
|
// 穿透-导出图斑明细execl
|
||||||
url = VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/ExprotCaseListByType';
|
url = VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/ExprotCaseListByType';
|
||||||
fileName =
|
fileName =
|
||||||
'统计明细案件信息 ' +
|
'统计明细图斑信息 ' +
|
||||||
tablist[activeKey.value].countyname +
|
tablist[activeKey.value].countyname +
|
||||||
'-' +
|
'-' +
|
||||||
tablist[activeKey.value].label +
|
tablist[activeKey.value].label +
|
||||||
|
|
@ -433,7 +433,7 @@
|
||||||
'.xls';
|
'.xls';
|
||||||
break;
|
break;
|
||||||
case 'chuantou_shp':
|
case 'chuantou_shp':
|
||||||
// 穿透-导出案件明细shp
|
// 穿透-导出图斑明细shp
|
||||||
url = VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/ExportShapefile';
|
url = VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/ExportShapefile';
|
||||||
fileName =
|
fileName =
|
||||||
'统计明细矢量数据 ' +
|
'统计明细矢量数据 ' +
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,10 @@
|
||||||
:label-col="labelCol"
|
:label-col="labelCol"
|
||||||
:wrapper-col="wrapperCol"
|
:wrapper-col="wrapperCol"
|
||||||
>
|
>
|
||||||
<a-form-item label="案件编号" name="case_no">
|
<a-form-item label="图斑编号" name="case_no">
|
||||||
<a-input v-model:value="formState.case_no" disabled />
|
<a-input v-model:value="formState.case_no" disabled />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="案件描述" name="case_description">
|
<a-form-item label="图斑描述" name="case_description">
|
||||||
<a-input v-model:value="formState.case_description" disabled />
|
<a-input v-model:value="formState.case_description" disabled />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="县区" name="countyid">
|
<a-form-item label="县区" name="countyid">
|
||||||
|
|
@ -61,10 +61,10 @@
|
||||||
:label-col="labelCol"
|
:label-col="labelCol"
|
||||||
:wrapper-col="wrapperCol"
|
:wrapper-col="wrapperCol"
|
||||||
>
|
>
|
||||||
<a-form-item label="案件编号" name="case_no">
|
<a-form-item label="图斑编号" name="case_no">
|
||||||
<a-input v-model:value="formState.case_no" disabled />
|
<a-input v-model:value="formState.case_no" disabled />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="案件描述" name="case_description">
|
<a-form-item label="图斑描述" name="case_description">
|
||||||
<a-input v-model:value="formState.case_description" disabled />
|
<a-input v-model:value="formState.case_description" disabled />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="县区" name="countyid">
|
<a-form-item label="县区" name="countyid">
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@
|
||||||
<a-descriptions-item label="备注">{{ remark }}</a-descriptions-item>
|
<a-descriptions-item label="备注">{{ remark }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="经度">{{ lng }}</a-descriptions-item>
|
<a-descriptions-item label="经度">{{ lng }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="纬度">{{ lat }}</a-descriptions-item>
|
<a-descriptions-item label="纬度">{{ lat }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="下发时间">{{ createtime }}</a-descriptions-item>
|
<a-descriptions-item label="下发时间">{{ synchronoustime }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="图斑照片">
|
<a-descriptions-item label="图斑照片">
|
||||||
<div class="image-div">
|
<div class="image-div">
|
||||||
<a-image-preview-group
|
<a-image-preview-group
|
||||||
|
|
@ -476,6 +476,7 @@
|
||||||
hexiaotime,
|
hexiaotime,
|
||||||
wrjffzhaopian,
|
wrjffzhaopian,
|
||||||
xchczhaopian,
|
xchczhaopian,
|
||||||
|
synchronoustime,
|
||||||
} = props.showInfoData;
|
} = props.showInfoData;
|
||||||
const anjianzhaopianList = computed(() => {
|
const anjianzhaopianList = computed(() => {
|
||||||
return anjianzhaopian ? anjianzhaopian.split(',') : [];
|
return anjianzhaopian ? anjianzhaopian.split(',') : [];
|
||||||
|
|
|
||||||
|
|
@ -87,11 +87,11 @@
|
||||||
<div :style="`${showSortMark('gengdi_area',2)? 'color: #086DEC;': ''}`">▼</div>
|
<div :style="`${showSortMark('gengdi_area',2)? 'color: #086DEC;': ''}`">▼</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sift-item" @click="dataListSort('createtime')">
|
<div class="sift-item" @click="dataListSort('synchronoustime')">
|
||||||
<div class="sift-label">下发时间</div>
|
<div class="sift-label">下发时间</div>
|
||||||
<div class="sift-icon">
|
<div class="sift-icon">
|
||||||
<div :style="`${showSortMark('createtime',1)? 'color: #086DEC;': ''}`">▲</div>
|
<div :style="`${showSortMark('synchronoustime',1)? 'color: #086DEC;': ''}`">▲</div>
|
||||||
<div :style="`${showSortMark('createtime',2)? 'color: #086DEC;': ''}`">▼</div>
|
<div :style="`${showSortMark('synchronoustime',2)? 'color: #086DEC;': ''}`">▼</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
<PermissionBtn @btn-event="onBtnClicked" />
|
<PermissionBtn @btn-event="onBtnClicked" />
|
||||||
</template>
|
</template>
|
||||||
<template #bodyCell="{ column, record }">
|
<template #bodyCell="{ column, record }">
|
||||||
<template v-if="['area', 'gengdiarea'].includes(column.key)">
|
<template v-if="['area', 'gengdiarea','nongyongdiarea'].includes(column.key)">
|
||||||
{{ dataProcessingCount(record[column.key]) }}
|
{{ dataProcessingCount(record[column.key]) }}
|
||||||
</template>
|
</template>
|
||||||
<template v-if="column.key === 'action'">
|
<template v-if="column.key === 'action'">
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,10 @@ export const columns: BasicColumn[] = [
|
||||||
title: '图斑面积',
|
title: '图斑面积',
|
||||||
dataIndex: 'area',
|
dataIndex: 'area',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '农用地面积',
|
||||||
|
dataIndex: 'nongyongdiarea',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '耕地面积',
|
title: '耕地面积',
|
||||||
dataIndex: 'gengdiarea',
|
dataIndex: 'gengdiarea',
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@
|
||||||
<a-descriptions-item label="备注">{{ remark }}</a-descriptions-item>
|
<a-descriptions-item label="备注">{{ remark }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="经度">{{ lng }}</a-descriptions-item>
|
<a-descriptions-item label="经度">{{ lng }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="纬度">{{ lat }}</a-descriptions-item>
|
<a-descriptions-item label="纬度">{{ lat }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="下发时间">{{ createtime }}</a-descriptions-item>
|
<a-descriptions-item label="下发时间">{{ synchronoustime }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="图斑照片">
|
<a-descriptions-item label="图斑照片">
|
||||||
<div class="image-div">
|
<div class="image-div">
|
||||||
<template v-for="(imageItem, imageIndex) in casepicList" :key="imageIndex">
|
<template v-for="(imageItem, imageIndex) in casepicList" :key="imageIndex">
|
||||||
|
|
@ -452,6 +452,7 @@
|
||||||
hexiaotime,
|
hexiaotime,
|
||||||
wrjffzhaopian,
|
wrjffzhaopian,
|
||||||
xchczhaopian,
|
xchczhaopian,
|
||||||
|
synchronoustime,
|
||||||
} = props.showInfoData;
|
} = props.showInfoData;
|
||||||
const anjianzhaopianList = computed(() => {
|
const anjianzhaopianList = computed(() => {
|
||||||
return anjianzhaopian ? anjianzhaopian.split(',') : [];
|
return anjianzhaopian ? anjianzhaopian.split(',') : [];
|
||||||
|
|
|
||||||
|
|
@ -87,11 +87,11 @@
|
||||||
<div :style="`${showSortMark('gengdi_area',2)? 'color: #086DEC;': ''}`">▼</div>
|
<div :style="`${showSortMark('gengdi_area',2)? 'color: #086DEC;': ''}`">▼</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sift-item" @click="dataListSort('createtime')">
|
<div class="sift-item" @click="dataListSort('synchronoustime')">
|
||||||
<div class="sift-label">下发时间</div>
|
<div class="sift-label">下发时间</div>
|
||||||
<div class="sift-icon">
|
<div class="sift-icon">
|
||||||
<div :style="`${showSortMark('createtime',1)? 'color: #086DEC;': ''}`">▲</div>
|
<div :style="`${showSortMark('synchronoustime',1)? 'color: #086DEC;': ''}`">▲</div>
|
||||||
<div :style="`${showSortMark('createtime',2)? 'color: #086DEC;': ''}`">▼</div>
|
<div :style="`${showSortMark('synchronoustime',2)? 'color: #086DEC;': ''}`">▼</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
<PermissionBtn @btn-event="onBtnClicked" />
|
<PermissionBtn @btn-event="onBtnClicked" />
|
||||||
</template>
|
</template>
|
||||||
<template #bodyCell="{ column, record }">
|
<template #bodyCell="{ column, record }">
|
||||||
<template v-if="['area', 'gengdiarea'].includes(column.key)">
|
<template v-if="['area', 'gengdiarea','nongyongdiarea'].includes(column.key)">
|
||||||
{{ dataProcessingCount(record[column.key]) }}
|
{{ dataProcessingCount(record[column.key]) }}
|
||||||
</template>
|
</template>
|
||||||
<template v-if="column.key === 'action'">
|
<template v-if="column.key === 'action'">
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,10 @@ export const columns: BasicColumn[] = [
|
||||||
title: '图斑面积',
|
title: '图斑面积',
|
||||||
dataIndex: 'area',
|
dataIndex: 'area',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '农用地面积',
|
||||||
|
dataIndex: 'nongyongdiarea',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '耕地面积',
|
title: '耕地面积',
|
||||||
dataIndex: 'gengdiarea',
|
dataIndex: 'gengdiarea',
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
<div class="case-view_content">
|
<div class="case-view_content">
|
||||||
<div class="file-box w-1/2 xl:w-1/2" v-if="caseHandleInfo">
|
<div class="file-box w-1/2 xl:w-1/2" v-if="caseHandleInfo">
|
||||||
<CollapseContainer
|
<CollapseContainer
|
||||||
title="【案件下发信息】"
|
title="【图斑下发信息】"
|
||||||
:canExpan="false"
|
:canExpan="false"
|
||||||
v-if="current == 0 || current == 4"
|
v-if="current == 0 || current == 4"
|
||||||
>
|
>
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
</CollapseContainer>
|
</CollapseContainer>
|
||||||
|
|
||||||
<CollapseContainer
|
<CollapseContainer
|
||||||
title="【案件核查信息】"
|
title="【图斑核查信息】"
|
||||||
:canExpan="false"
|
:canExpan="false"
|
||||||
v-if="current == 1 || current == 4"
|
v-if="current == 1 || current == 4"
|
||||||
>
|
>
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
</CollapseContainer>
|
</CollapseContainer>
|
||||||
|
|
||||||
<CollapseContainer
|
<CollapseContainer
|
||||||
title="【案件办理信息-合法举证】"
|
title="【图斑办理信息-合法举证】"
|
||||||
:canExpan="false"
|
:canExpan="false"
|
||||||
v-if="
|
v-if="
|
||||||
(caseHandleInfo.is_illegal == '合法' && current == 2) ||
|
(caseHandleInfo.is_illegal == '合法' && current == 2) ||
|
||||||
|
|
@ -49,18 +49,18 @@
|
||||||
</CollapseContainer>
|
</CollapseContainer>
|
||||||
|
|
||||||
<CollapseContainer
|
<CollapseContainer
|
||||||
title="【案件办理信息-伪变化】"
|
title="【图斑办理信息-伪变化】"
|
||||||
:canExpan="false"
|
:canExpan="false"
|
||||||
v-if="
|
v-if="
|
||||||
(caseHandleInfo.is_illegal == '伪变化' && current == 2) ||
|
(caseHandleInfo.is_illegal == '伪变化' && current == 2) ||
|
||||||
(caseHandleInfo.is_illegal == '伪变化' && current == 4)
|
(caseHandleInfo.is_illegal == '伪变化' && current == 4)
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<div> 伪变化没有案件办理信息 </div>
|
<div> 伪变化没有图斑办理信息 </div>
|
||||||
</CollapseContainer>
|
</CollapseContainer>
|
||||||
|
|
||||||
<CollapseContainer
|
<CollapseContainer
|
||||||
title="【案件办理信息-违法-拟拆除】"
|
title="【图斑办理信息-违法-拟拆除】"
|
||||||
:canExpan="false"
|
:canExpan="false"
|
||||||
v-if="
|
v-if="
|
||||||
(caseHandleInfo.is_illegal == '违法' &&
|
(caseHandleInfo.is_illegal == '违法' &&
|
||||||
|
|
@ -75,7 +75,7 @@
|
||||||
</CollapseContainer>
|
</CollapseContainer>
|
||||||
|
|
||||||
<CollapseContainer
|
<CollapseContainer
|
||||||
title="【案件办理信息-违法-查处】"
|
title="【图斑办理信息-违法-查处】"
|
||||||
:canExpan="false"
|
:canExpan="false"
|
||||||
v-if="
|
v-if="
|
||||||
(caseHandleInfo.is_illegal == '违法' &&
|
(caseHandleInfo.is_illegal == '违法' &&
|
||||||
|
|
@ -94,7 +94,7 @@
|
||||||
</CollapseContainer>
|
</CollapseContainer>
|
||||||
|
|
||||||
<CollapseContainer
|
<CollapseContainer
|
||||||
title="【案件办理信息-违法-拟完善手续】"
|
title="【图斑办理信息-违法-拟完善手续】"
|
||||||
:canExpan="false"
|
:canExpan="false"
|
||||||
v-if="
|
v-if="
|
||||||
(caseHandleInfo.is_illegal == '违法' &&
|
(caseHandleInfo.is_illegal == '违法' &&
|
||||||
|
|
@ -114,7 +114,7 @@
|
||||||
</CollapseContainer>
|
</CollapseContainer>
|
||||||
|
|
||||||
<CollapseContainer
|
<CollapseContainer
|
||||||
title="【案件审核信息】"
|
title="【图斑审核信息】"
|
||||||
:canExpan="false"
|
:canExpan="false"
|
||||||
v-if="current == 3 || current == 4"
|
v-if="current == 3 || current == 4"
|
||||||
>
|
>
|
||||||
|
|
@ -122,7 +122,7 @@
|
||||||
</CollapseContainer>
|
</CollapseContainer>
|
||||||
|
|
||||||
<CollapseContainer
|
<CollapseContainer
|
||||||
title="【案件退回描述】"
|
title="【图斑退回描述】"
|
||||||
:canExpan="false"
|
:canExpan="false"
|
||||||
v-if="detailData.is_drawback == 1"
|
v-if="detailData.is_drawback == 1"
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@
|
||||||
{{ caseHandleInfo.info.is_forever_build == 1 ? '是' : '否' }}
|
{{ caseHandleInfo.info.is_forever_build == 1 ? '是' : '否' }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
|
|
||||||
<!-- 案件违法 - 拆除 -->
|
<!-- 图斑违法 - 拆除 -->
|
||||||
<a-descriptions-item
|
<a-descriptions-item
|
||||||
label="处理办法"
|
label="处理办法"
|
||||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟拆除'"
|
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟拆除'"
|
||||||
|
|
@ -88,7 +88,7 @@
|
||||||
{{ caseHandleInfo.info.build_structure }}
|
{{ caseHandleInfo.info.build_structure }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
|
|
||||||
<!-- 案件违法 查处 -->
|
<!-- 图斑违法 查处 -->
|
||||||
<a-descriptions-item
|
<a-descriptions-item
|
||||||
label="处理办法"
|
label="处理办法"
|
||||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '查处'"
|
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '查处'"
|
||||||
|
|
@ -126,7 +126,7 @@
|
||||||
{{ caseHandleInfo.info.illegal_type }}
|
{{ caseHandleInfo.info.illegal_type }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
|
|
||||||
<!-- 案件违法 完善手续 -->
|
<!-- 图斑违法 完善手续 -->
|
||||||
<a-descriptions-item
|
<a-descriptions-item
|
||||||
label="处理办法"
|
label="处理办法"
|
||||||
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟完善手续'"
|
v-if="caseHandleInfo.is_illegal == '违法' && caseHandleInfo.info.measure_name == '拟完善手续'"
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<a-descriptions bordered :column="2" size="small" :labelStyle="labelStyle">
|
<a-descriptions bordered :column="2" size="small" :labelStyle="labelStyle">
|
||||||
<a-descriptions-item label="案件编号">{{ caseDetail.case_no }}</a-descriptions-item>
|
<a-descriptions-item label="图斑编号">{{ caseDetail.case_no }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="上报人">
|
<a-descriptions-item label="上报人">
|
||||||
{{ caseDetail.identification_user }}
|
{{ caseDetail.identification_user }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
<a-descriptions-item label="上报时间">
|
<a-descriptions-item label="上报时间">
|
||||||
{{ caseDetail.identification_time }}
|
{{ caseDetail.identification_time }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
<a-descriptions-item label="案件状态">
|
<a-descriptions-item label="图斑状态">
|
||||||
<a-tag color="warning" v-if="caseDetail.handle_status_id == 0">
|
<a-tag color="warning" v-if="caseDetail.handle_status_id == 0">
|
||||||
{{ caseDetail.handle_status_name }}
|
{{ caseDetail.handle_status_name }}
|
||||||
</a-tag>
|
</a-tag>
|
||||||
|
|
@ -21,16 +21,16 @@
|
||||||
caseDetail.communityname
|
caseDetail.communityname
|
||||||
}}
|
}}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
<a-descriptions-item label="案件地址">{{ caseDetail.address }}</a-descriptions-item>
|
<a-descriptions-item label="图斑地址">{{ caseDetail.address }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="经纬度"
|
<a-descriptions-item label="经纬度"
|
||||||
>{{ caseDetail.lng }} , {{ caseDetail.lat }}</a-descriptions-item
|
>{{ caseDetail.lng }} , {{ caseDetail.lat }}</a-descriptions-item
|
||||||
>
|
>
|
||||||
<a-descriptions-item label="案件地址">{{ caseDetail.area }} (m²)</a-descriptions-item>
|
<a-descriptions-item label="图斑地址">{{ caseDetail.area }} (m²)</a-descriptions-item>
|
||||||
<a-descriptions-item label="案件类型">{{ caseDetail.typename }}</a-descriptions-item>
|
<a-descriptions-item label="图斑类型">{{ caseDetail.typename }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="案件备注">{{ caseDetail.remark }}</a-descriptions-item>
|
<a-descriptions-item label="图斑备注">{{ caseDetail.remark }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="案件描述">{{ caseDetail.case_description }}</a-descriptions-item>
|
<a-descriptions-item label="图斑描述">{{ caseDetail.case_description }}</a-descriptions-item>
|
||||||
|
|
||||||
<a-descriptions-item label="案件图片">
|
<a-descriptions-item label="图斑图片">
|
||||||
<div>
|
<div>
|
||||||
<ImagePreview :imageList="imgList" />
|
<ImagePreview :imageList="imgList" />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,7 @@
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 案件位置显示无人机图标
|
// 图斑位置显示无人机图标
|
||||||
function loadDroneMarker(lng, lat) {
|
function loadDroneMarker(lng, lat) {
|
||||||
if (detailMap.value.getLayer('cat-on-building')) {
|
if (detailMap.value.getLayer('cat-on-building')) {
|
||||||
detailMap.value.removeLayer('cat-on-building');
|
detailMap.value.removeLayer('cat-on-building');
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,18 @@
|
||||||
// 案件详情首页
|
// 图斑详情首页
|
||||||
export { default as CaseView } from './caseview/index.vue';
|
export { default as CaseView } from './caseview/index.vue';
|
||||||
// 【案件下发信息】
|
// 【图斑下发信息】
|
||||||
export { default as Issue } from './caseview/src/issue.vue';
|
export { default as Issue } from './caseview/src/issue.vue';
|
||||||
// 【案件核查信息】
|
// 【图斑核查信息】
|
||||||
export { default as Inspect } from './caseview/src/inspect.vue';
|
export { default as Inspect } from './caseview/src/inspect.vue';
|
||||||
// 【案件审核信息】
|
// 【图斑审核信息】
|
||||||
export { default as Audit } from './caseview/src/audit.vue';
|
export { default as Audit } from './caseview/src/audit.vue';
|
||||||
// 【案件办理信息-违法-拟拆除】
|
// 【图斑办理信息-违法-拟拆除】
|
||||||
export { default as Dismantle } from './caseview/src/dismantle.vue';
|
export { default as Dismantle } from './caseview/src/dismantle.vue';
|
||||||
// 地图位置
|
// 地图位置
|
||||||
export { default as MapDetail } from './caseview/src/mapDetail.vue';
|
export { default as MapDetail } from './caseview/src/mapDetail.vue';
|
||||||
// 案件办理信息-合法举证
|
// 图斑办理信息-合法举证
|
||||||
export { default as Evidence } from './caseview/src/evidence.vue';
|
export { default as Evidence } from './caseview/src/evidence.vue';
|
||||||
// 【案件办理信息-违法-查处】
|
// 【图斑办理信息-违法-查处】
|
||||||
export { default as Investigate } from './caseview/src/investigate.vue';
|
export { default as Investigate } from './caseview/src/investigate.vue';
|
||||||
// 【案件办理信息-违法-拟完善手续】
|
// 【图斑办理信息-违法-拟完善手续】
|
||||||
export { default as Procedure } from './caseview/src/procedure.vue';
|
export { default as Procedure } from './caseview/src/procedure.vue';
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
<BasicModal
|
<BasicModal
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
@register="registerModal"
|
@register="registerModal"
|
||||||
title="案件详情"
|
title="图斑详情"
|
||||||
:canFullscreen="false"
|
:canFullscreen="false"
|
||||||
:defaultFullscreen="true"
|
:defaultFullscreen="true"
|
||||||
:showCancelBtn="false"
|
:showCancelBtn="false"
|
||||||
|
|
@ -60,7 +60,7 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
const [registerTable, { reload, getSelectRows, clearSelectedRowKeys }] = useTable({
|
const [registerTable, { reload, getSelectRows, clearSelectedRowKeys }] = useTable({
|
||||||
title: '案件列表',
|
title: '图斑列表',
|
||||||
api: getCaseInfoList,
|
api: getCaseInfoList,
|
||||||
// api:()=>1,
|
// api:()=>1,
|
||||||
columns,
|
columns,
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@ import { useMessage } from '@/hooks/web/useMessage';
|
||||||
type CheckedType = boolean | string | number;
|
type CheckedType = boolean | string | number;
|
||||||
export const columns: BasicColumn[] = [
|
export const columns: BasicColumn[] = [
|
||||||
{
|
{
|
||||||
title: '案件编号',
|
title: '图斑编号',
|
||||||
dataIndex: 'caseNo',
|
dataIndex: 'caseNo',
|
||||||
width: 200,
|
width: 200,
|
||||||
},{
|
},{
|
||||||
title: '案件描述',
|
title: '图斑描述',
|
||||||
dataIndex: 'caseDescription',
|
dataIndex: 'caseDescription',
|
||||||
width: 200,
|
width: 200,
|
||||||
},{
|
},{
|
||||||
|
|
@ -39,7 +39,7 @@ export const searchFormSchema: FormSchema[] = [
|
||||||
{
|
{
|
||||||
field: 'is_intact',
|
field: 'is_intact',
|
||||||
component: 'Select',
|
component: 'Select',
|
||||||
label: '案件状态',
|
label: '图斑状态',
|
||||||
colProps: {
|
colProps: {
|
||||||
span: 6,
|
span: 6,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
<BasicModal
|
<BasicModal
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
@register="registerModal"
|
@register="registerModal"
|
||||||
title="案件详情"
|
title="图斑详情"
|
||||||
:canFullscreen="false"
|
:canFullscreen="false"
|
||||||
:defaultFullscreen="true"
|
:defaultFullscreen="true"
|
||||||
:showCancelBtn="false"
|
:showCancelBtn="false"
|
||||||
|
|
@ -35,7 +35,7 @@ const props = defineProps<{
|
||||||
}>()
|
}>()
|
||||||
const caseId = ref('');
|
const caseId = ref('');
|
||||||
let columns = reactive({data:[],col:[{
|
let columns = reactive({data:[],col:[{
|
||||||
title: '案件编号',
|
title: '图斑编号',
|
||||||
dataIndex: 'caseNo',
|
dataIndex: 'caseNo',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -43,7 +43,7 @@ let columns = reactive({data:[],col:[{
|
||||||
dataIndex: 'communityName',
|
dataIndex: 'communityName',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '案件描述',
|
title: '图斑描述',
|
||||||
dataIndex: 'caseDescription',
|
dataIndex: 'caseDescription',
|
||||||
},{
|
},{
|
||||||
title: '所属类型',
|
title: '所属类型',
|
||||||
|
|
@ -61,7 +61,7 @@ let columns = reactive({data:[],col:[{
|
||||||
title: '审核时间',
|
title: '审核时间',
|
||||||
dataIndex: 'verifyTime',
|
dataIndex: 'verifyTime',
|
||||||
},{
|
},{
|
||||||
title: '案件状态',
|
title: '图斑状态',
|
||||||
dataIndex: 'handleStatusName',
|
dataIndex: 'handleStatusName',
|
||||||
}]});
|
}]});
|
||||||
let total = ref(0)
|
let total = ref(0)
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,7 @@
|
||||||
v-model:current="pageNumber"
|
v-model:current="pageNumber"
|
||||||
v-model:pageSize="pageSizeNumber"
|
v-model:pageSize="pageSizeNumber"
|
||||||
:total="total"
|
:total="total"
|
||||||
|
:show-total="total => `共 ${total} 条数据`"
|
||||||
show-size-changer
|
show-size-changer
|
||||||
show-quick-jumper
|
show-quick-jumper
|
||||||
@change="changePagination"
|
@change="changePagination"
|
||||||
|
|
|
||||||
|
|
@ -585,7 +585,7 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取下级行政结构案件统计
|
// 获取下级行政结构图斑统计
|
||||||
function getOrgCaseList(column,record:Recordable){
|
function getOrgCaseList(column,record:Recordable){
|
||||||
|
|
||||||
if(currentOrgLevel.value == 'country'){
|
if(currentOrgLevel.value == 'country'){
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
<PermissionBtn @btn-event="onBtnClicked" />
|
<PermissionBtn @btn-event="onBtnClicked" />
|
||||||
</template>
|
</template>
|
||||||
<template #bodyCell="{ column, record }">
|
<template #bodyCell="{ column, record }">
|
||||||
<template v-if="['area', 'gengdiarea'].includes(column.key)">
|
<template v-if="['area', 'gengdiarea','nongyongdiarea'].includes(column.key)">
|
||||||
{{ dataProcessingCount(record[column.key]) }}
|
{{ dataProcessingCount(record[column.key]) }}
|
||||||
</template>
|
</template>
|
||||||
<template v-if="column.key === 'action'">
|
<template v-if="column.key === 'action'">
|
||||||
|
|
@ -56,10 +56,10 @@
|
||||||
<a-modal v-model:open="open" title="导出文件类型" :footer="null">
|
<a-modal v-model:open="open" title="导出文件类型" :footer="null">
|
||||||
<div>
|
<div>
|
||||||
<a-button class="exportbutton" @click="handleExport('excel')">
|
<a-button class="exportbutton" @click="handleExport('excel')">
|
||||||
图斑汇总统计报表(execl)
|
图斑列表统计报表(execl)
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button class="exportbutton" @click="handleExport('shp')">
|
<a-button class="exportbutton" @click="handleExport('shp')">
|
||||||
图斑汇总矢量数据(shp)
|
图斑列表矢量数据(shp)
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
|
|
@ -92,6 +92,7 @@
|
||||||
import { dataProcessingCount } from '@/views/demo/tiankongdi/util';
|
import { dataProcessingCount } from '@/views/demo/tiankongdi/util';
|
||||||
import { BasicForm, useForm } from '@/components/Form';
|
import { BasicForm, useForm } from '@/components/Form';
|
||||||
import { PageWrapper } from '@/components/Page';
|
import { PageWrapper } from '@/components/Page';
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
|
||||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||||
|
|
||||||
|
|
@ -136,7 +137,7 @@
|
||||||
});
|
});
|
||||||
const [registerTable, { setTableData, reload, clearSelectedRowKeys, setPagination, setLoading }] =
|
const [registerTable, { setTableData, reload, clearSelectedRowKeys, setPagination, setLoading }] =
|
||||||
useTable({
|
useTable({
|
||||||
title: '图斑汇总',
|
title: '图斑列表',
|
||||||
dataSource: tableData.value,
|
dataSource: tableData.value,
|
||||||
columns,
|
columns,
|
||||||
rowKey: 'id',
|
rowKey: 'id',
|
||||||
|
|
@ -166,10 +167,10 @@
|
||||||
let fileName = '';
|
let fileName = '';
|
||||||
if (exportType == 'excel') {
|
if (exportType == 'excel') {
|
||||||
url = VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/ExportCaseInfoTuBanList';
|
url = VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/ExportCaseInfoTuBanList';
|
||||||
fileName = '图斑汇总统计报表' + new Date().getTime() + '.xls';
|
fileName = '图斑列表统计报表' + new Date().getTime() + '.xls';
|
||||||
} else if (exportType == 'shp') {
|
} else if (exportType == 'shp') {
|
||||||
url = VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/ExportCaseInfoShapefile';
|
url = VITE_GLOB_API_URL + '/api/DroneCaseInfoSingle/ExportCaseInfoShapefile';
|
||||||
fileName = '图斑汇总矢量数据' + new Date().getTime() + '.zip';
|
fileName = '图斑列表矢量数据' + new Date().getTime() + '.zip';
|
||||||
}
|
}
|
||||||
axios({
|
axios({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
|
|
@ -224,6 +225,10 @@
|
||||||
getTableData(querys);
|
getTableData(querys);
|
||||||
}
|
}
|
||||||
function getTableData(querys) {
|
function getTableData(querys) {
|
||||||
|
if (querys.startTime && querys.endTime) {
|
||||||
|
querys.startTime = dayjs(querys.startTime).format('YYYY-MM-DD');
|
||||||
|
querys.endTime = dayjs(querys.endTime).endOf('day').format('YYYY-MM-DD HH:mm:ss');
|
||||||
|
}
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
loadCaseInfoTuBanList(querys).then((res) => {
|
loadCaseInfoTuBanList(querys).then((res) => {
|
||||||
tableData.value = res.items;
|
tableData.value = res.items;
|
||||||
|
|
|
||||||
|
|
@ -34,12 +34,15 @@ export const columns: BasicColumn[] = [
|
||||||
{
|
{
|
||||||
title: '图斑类型',
|
title: '图斑类型',
|
||||||
dataIndex: 'typename',
|
dataIndex: 'typename',
|
||||||
width: 80,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '图斑面积',
|
title: '图斑面积',
|
||||||
dataIndex: 'area',
|
dataIndex: 'area',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '农用地面积',
|
||||||
|
dataIndex: 'nongyongdiarea',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '耕地面积',
|
title: '耕地面积',
|
||||||
dataIndex: 'gengdiarea',
|
dataIndex: 'gengdiarea',
|
||||||
|
|
@ -211,6 +214,18 @@ export const searchFormSchema: FormSchema[] = [
|
||||||
component: 'Input',
|
component: 'Input',
|
||||||
colProps: { span: 4 },
|
colProps: { span: 4 },
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'weifaleixing',
|
||||||
|
label: '违法类型',
|
||||||
|
component: 'Select',
|
||||||
|
colProps: { span: 4 },
|
||||||
|
componentProps: {
|
||||||
|
options: [
|
||||||
|
{ label: '非农化违法用地', value: '0' },
|
||||||
|
{ label: '非粮化违法用地', value: '1' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
// 增加图斑面积、耕地面积、永农面积的筛选项;
|
// 增加图斑面积、耕地面积、永农面积的筛选项;
|
||||||
{
|
{
|
||||||
field: 'tubanmianji',
|
field: 'tubanmianji',
|
||||||
|
|
@ -230,4 +245,14 @@ export const searchFormSchema: FormSchema[] = [
|
||||||
colProps: { span: 4 },
|
colProps: { span: 4 },
|
||||||
slot: 'jibennongtianmianji',
|
slot: 'jibennongtianmianji',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: '[startTime, endTime]',
|
||||||
|
label: '下发时间',
|
||||||
|
component: 'RangePicker',
|
||||||
|
colProps: { span: 5 },
|
||||||
|
componentProps: {
|
||||||
|
format: 'YYYY-MM-DD',
|
||||||
|
placeholder: ['开始日期', '结束日期'],
|
||||||
|
},
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ export const columnsDataPreview: BasicColumn[] = [
|
||||||
|
|
||||||
export const columns: BasicColumn[] = [
|
export const columns: BasicColumn[] = [
|
||||||
{
|
{
|
||||||
title: '案件编号',
|
title: '图斑编号',
|
||||||
dataIndex: 'case_no',
|
dataIndex: 'case_no',
|
||||||
width: 120,
|
width: 120,
|
||||||
}
|
}
|
||||||
|
|
@ -154,7 +154,7 @@ export const columns: BasicColumn[] = [
|
||||||
dataIndex: 'communityname',
|
dataIndex: 'communityname',
|
||||||
width: 120,
|
width: 120,
|
||||||
},{
|
},{
|
||||||
title: '案件描述',
|
title: '图斑描述',
|
||||||
dataIndex: 'case_description',
|
dataIndex: 'case_description',
|
||||||
width: 120,
|
width: 120,
|
||||||
},{
|
},{
|
||||||
|
|
@ -179,7 +179,7 @@ export const columns: BasicColumn[] = [
|
||||||
dataIndex: 'verifytime',
|
dataIndex: 'verifytime',
|
||||||
width: 120,
|
width: 120,
|
||||||
},{
|
},{
|
||||||
title: '案件状态',
|
title: '图斑状态',
|
||||||
dataIndex: 'handle_status_name',
|
dataIndex: 'handle_status_name',
|
||||||
width: 120,
|
width: 120,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,13 @@
|
||||||
<a-form-item label="名称" name="name">
|
<a-form-item label="名称" name="name">
|
||||||
<a-input v-model:value="props.modalData.data.name" />
|
<a-input v-model:value="props.modalData.data.name" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
|
<a-form-item label="云查询分类" name="overlay">
|
||||||
|
<a-select
|
||||||
|
v-model:value="props.modalData.data.overlay"
|
||||||
|
:options="props.showTree"
|
||||||
|
:fieldNames="{ label: 'itemName', value: 'itemValue' }"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
<a-form-item label="图层" name="layer">
|
<a-form-item label="图层" name="layer">
|
||||||
<a-select v-model:value="props.modalData.data.layer">
|
<a-select v-model:value="props.modalData.data.layer">
|
||||||
<a-select-option value="1">图层1</a-select-option>
|
<a-select-option value="1">图层1</a-select-option>
|
||||||
|
|
@ -89,7 +96,7 @@
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { defineProps, defineEmits, ref } from 'vue';
|
import { defineProps, defineEmits, ref } from 'vue';
|
||||||
const props = defineProps(['modalData', 'modalForm']);
|
const props = defineProps(['modalData', 'showTree']);
|
||||||
const emit = defineEmits(['closeModal', 'submit']);
|
const emit = defineEmits(['closeModal', 'submit']);
|
||||||
const formRef = ref();
|
const formRef = ref();
|
||||||
const treeRules = {
|
const treeRules = {
|
||||||
|
|
@ -97,6 +104,7 @@
|
||||||
itemValue: [{ required: true, message: '类型不能为空', trigger: 'blur' }],
|
itemValue: [{ required: true, message: '类型不能为空', trigger: 'blur' }],
|
||||||
};
|
};
|
||||||
const rightRules = {
|
const rightRules = {
|
||||||
|
overlay: [{ required: true, message: '查询分类不能为空', trigger: 'blur' }],
|
||||||
layer: [{ required: true, message: '图层不能为空', trigger: 'blur' }],
|
layer: [{ required: true, message: '图层不能为空', trigger: 'blur' }],
|
||||||
tableName: [{ required: true, message: '数据表不能为空', trigger: 'blur' }],
|
tableName: [{ required: true, message: '数据表不能为空', trigger: 'blur' }],
|
||||||
overlayList: [{ required: true, message: '叠加图层不能为空', trigger: 'blur' }],
|
overlayList: [{ required: true, message: '叠加图层不能为空', trigger: 'blur' }],
|
||||||
|
|
@ -20,13 +20,13 @@
|
||||||
<div class="showTree">
|
<div class="showTree">
|
||||||
<BasicTree
|
<BasicTree
|
||||||
ref="treeRef"
|
ref="treeRef"
|
||||||
:treeData="showLTree"
|
:treeData="showTree"
|
||||||
:loading="lLoading"
|
:loading="lLoading"
|
||||||
:fieldNames="{ key: 'itemValue', title: 'itemName' }"
|
:fieldNames="{ key: 'itemValue', title: 'itemName' }"
|
||||||
@select="
|
@select="
|
||||||
(selectedKeys, { node }) => {
|
(selectedKeys, { node }) => {
|
||||||
getLeftSelectId(node.itemDetailId);
|
getSelectId(node.itemDetailId);
|
||||||
changeTypeId(node.key);
|
changeTypeId(node.itemValue);
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
/>
|
/>
|
||||||
|
|
@ -39,6 +39,9 @@
|
||||||
<PermissionBtn @btnEvent="buttonClick"></PermissionBtn>
|
<PermissionBtn @btnEvent="buttonClick"></PermissionBtn>
|
||||||
</template>
|
</template>
|
||||||
<template #bodyCell="{ column, record }">
|
<template #bodyCell="{ column, record }">
|
||||||
|
<template v-if="column.key == 'code'">
|
||||||
|
{{ getCode(record) }}
|
||||||
|
</template>
|
||||||
<template v-if="column.key == 'overlayList'">
|
<template v-if="column.key == 'overlayList'">
|
||||||
<div v-for="tag in record.overlayList" :key="tag">
|
<div v-for="tag in record.overlayList" :key="tag">
|
||||||
<a-tag>{{ tag }}</a-tag>
|
<a-tag>{{ tag }}</a-tag>
|
||||||
|
|
@ -52,15 +55,22 @@
|
||||||
v-model:open="openModal"
|
v-model:open="openModal"
|
||||||
:title="modalData.title"
|
:title="modalData.title"
|
||||||
:afterClose="clearModal"
|
:afterClose="clearModal"
|
||||||
|
:footer="null"
|
||||||
>
|
>
|
||||||
<UseModal ref="modalForm" :modalData="modalData" @closeModal="closeModal" @submit="submit" />
|
<UseModal
|
||||||
|
ref="modalForm"
|
||||||
|
:modalData="modalData"
|
||||||
|
:showTree="showTree"
|
||||||
|
@closeModal="closeModal"
|
||||||
|
@submit="submit"
|
||||||
|
/>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
||||||
import UseModal from './Modal/index.vue';
|
import UseModal from './Modal/modal.vue';
|
||||||
import { BasicTree } from '@/components/Tree';
|
import { BasicTree } from '@/components/Tree';
|
||||||
import { BasicTable, useTable } from '@/components/Table';
|
import { BasicTable, useTable } from '@/components/Table';
|
||||||
import { PermissionBtn } from '@/components/PermissionBtn/index';
|
import { PermissionBtn } from '@/components/PermissionBtn/index';
|
||||||
|
|
@ -74,16 +84,22 @@
|
||||||
Update,
|
Update,
|
||||||
Delete,
|
Delete,
|
||||||
} from '@/api/sys/cloud';
|
} from '@/api/sys/cloud';
|
||||||
import { columns, emptyRightItem, emptyLeftItem, searchFormSchema } from './util';
|
import {
|
||||||
|
columns,
|
||||||
|
emptyRightItem,
|
||||||
|
emptyLeftItem,
|
||||||
|
searchFormSchema_1,
|
||||||
|
searchFormSchema_2,
|
||||||
|
} from './util';
|
||||||
import { Modal, message } from 'ant-design-vue';
|
import { Modal, message } from 'ant-design-vue';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import { cloneDeep } from 'lodash-es';
|
import { cloneDeep, forEach } from 'lodash-es';
|
||||||
|
|
||||||
const modalForm = ref();
|
const modalForm = ref();
|
||||||
let lLoading = ref(false);
|
let lLoading = ref(false);
|
||||||
let typeId = ref('');
|
let typeId = ref('');
|
||||||
let selectTreeId = ref('');
|
let selectTreeId = ref('');
|
||||||
let showLTree = ref([]);
|
let showTree = ref([]);
|
||||||
let openModal = ref(false);
|
let openModal = ref(false);
|
||||||
const modalData = reactive({
|
const modalData = reactive({
|
||||||
title: '',
|
title: '',
|
||||||
|
|
@ -92,19 +108,36 @@
|
||||||
});
|
});
|
||||||
const treeRef = ref();
|
const treeRef = ref();
|
||||||
const firstRequestCode = ref('');
|
const firstRequestCode = ref('');
|
||||||
|
const searchFormSchema = ref(searchFormSchema_1);
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => typeId.value,
|
||||||
|
(newVal) => {
|
||||||
|
if (newVal == 'imgage_data') {
|
||||||
|
searchFormSchema.value = searchFormSchema_2;
|
||||||
|
} else {
|
||||||
|
searchFormSchema.value = searchFormSchema_1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
const [registerTable, { reload, getSelectRows }] = useTable({
|
const [registerTable, { reload, getSelectRows }] = useTable({
|
||||||
// beforeFetch: (params) => {
|
beforeFetch: (params) => {
|
||||||
// console.log(firstRequestCode.value, 'before');
|
if (firstRequestCode.value !== '') {
|
||||||
// if (firstRequestCode.value !== '') {
|
params = { ...params, code: firstRequestCode.value };
|
||||||
// params = { ...params, code: firstRequestCode.value };
|
} else if (typeId.value !== '') {
|
||||||
// } else {
|
params = { ...params, code: typeId.value };
|
||||||
// params = { ...params, code: typeId.value };
|
} else {
|
||||||
// }
|
params = { ...params };
|
||||||
// return params;
|
}
|
||||||
// },
|
return params;
|
||||||
|
},
|
||||||
api: LoadPage,
|
api: LoadPage,
|
||||||
columns,
|
columns,
|
||||||
|
title: '云查询管理',
|
||||||
formConfig: {
|
formConfig: {
|
||||||
labelWidth: 120,
|
labelWidth: 120,
|
||||||
schemas: searchFormSchema,
|
schemas: searchFormSchema,
|
||||||
|
|
@ -125,16 +158,18 @@
|
||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const getLeftTreeData = (isMounted) => {
|
|
||||||
|
const getTreeData = (isMounted) => {
|
||||||
lLoading.value = true;
|
lLoading.value = true;
|
||||||
getLeftTree({ code: 'cloudQueryManagement' })
|
getLeftTree({ code: 'cloudQueryManagement' })
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
showLTree.value = res;
|
showTree.value = res;
|
||||||
lLoading.value = false;
|
lLoading.value = false;
|
||||||
if (isMounted && res.length > 0) {
|
if (isMounted && res.length > 0) {
|
||||||
firstRequestCode.value = res[0].key;
|
firstRequestCode.value = res[0].itemValue;
|
||||||
typeId.value = res[0].key;
|
selectTreeId.value = res[0].itemDetailId;
|
||||||
unref(treeRef).setSelectedKeys([res[0].key]);
|
typeId.value = res[0].itemValue;
|
||||||
|
unref(treeRef).setSelectedKeys([res[0].itemValue]);
|
||||||
}
|
}
|
||||||
reload();
|
reload();
|
||||||
})
|
})
|
||||||
|
|
@ -143,16 +178,27 @@
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getLeftTreeData(true);
|
getTreeData(true);
|
||||||
});
|
});
|
||||||
const changeTypeId = (value) => {
|
|
||||||
typeId.value = value;
|
const changeTypeId = (itemValue) => {
|
||||||
reload();
|
if (typeId.value != itemValue) {
|
||||||
|
typeId.value = itemValue;
|
||||||
|
reload();
|
||||||
|
} else {
|
||||||
|
typeId.value = '';
|
||||||
|
reload();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
const getLeftSelectId = (value) => {
|
const getSelectId = (itemDetailId) => {
|
||||||
selectTreeId.value = value;
|
if (selectTreeId.value != itemDetailId) {
|
||||||
|
selectTreeId.value = itemDetailId;
|
||||||
|
} else {
|
||||||
|
selectTreeId.value = '';
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 按钮分类
|
||||||
const buttonClick = (diffType) => {
|
const buttonClick = (diffType) => {
|
||||||
let check = false;
|
let check = false;
|
||||||
switch (diffType) {
|
switch (diffType) {
|
||||||
|
|
@ -175,7 +221,7 @@
|
||||||
onOk() {
|
onOk() {
|
||||||
return delLeftItem({ id: selectTreeId.value })
|
return delLeftItem({ id: selectTreeId.value })
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
getLeftTreeData(false);
|
getTreeData(false);
|
||||||
typeId.value = '';
|
typeId.value = '';
|
||||||
reload();
|
reload();
|
||||||
})
|
})
|
||||||
|
|
@ -230,21 +276,23 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
// 表单提交
|
||||||
const submit = () => {
|
const submit = () => {
|
||||||
let userName = localStorage.getItem('fireUserLoginName');
|
let userName = localStorage.getItem('fireUserLoginName');
|
||||||
switch (modalData.type) {
|
switch (modalData.type) {
|
||||||
case 'treeAdd':
|
case 'treeAdd':
|
||||||
addLeftItem({
|
addLeftItem({
|
||||||
...modalData.data,
|
...modalData.data,
|
||||||
|
itemCode: 'cloudQueryManagement',
|
||||||
createUserName: userName,
|
createUserName: userName,
|
||||||
modifyUserName: userName,
|
modifyUserName: userName,
|
||||||
createDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
createDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
||||||
modifyDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
modifyDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
||||||
enabledMark: 1,
|
enabledMark: 1,
|
||||||
sortCode: showLTree.value.length,
|
sortCode: showTree.value.length,
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
getLeftTreeData(false);
|
getTreeData(false);
|
||||||
openModal.value = false;
|
openModal.value = false;
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
|
@ -295,8 +343,17 @@
|
||||||
const clearModal = () => {
|
const clearModal = () => {
|
||||||
modalForm.value = cloneDeep(emptyLeftItem);
|
modalForm.value = cloneDeep(emptyLeftItem);
|
||||||
};
|
};
|
||||||
</script>
|
|
||||||
|
|
||||||
|
const getCode = (record) => {
|
||||||
|
let result = '';
|
||||||
|
showTree.value.forEach((item: any) => {
|
||||||
|
if (item.itemValue === record.code) {
|
||||||
|
result = item.itemName;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.page-div {
|
.page-div {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
@ -338,8 +395,7 @@
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
|
||||||
<style lang="scss">
|
|
||||||
.categories-page {
|
.categories-page {
|
||||||
.tree-div {
|
.tree-div {
|
||||||
.h-full {
|
.h-full {
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
|
||||||
export const columns = [
|
export const columns = [
|
||||||
{
|
{
|
||||||
title: 'ID',
|
title: 'ID',
|
||||||
|
|
@ -9,6 +11,11 @@ export const columns = [
|
||||||
dataIndex: 'name',
|
dataIndex: 'name',
|
||||||
width: 100,
|
width: 100,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '云查询分类',
|
||||||
|
dataIndex: 'overlay',
|
||||||
|
width: 100,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '图层',
|
title: '图层',
|
||||||
dataIndex: 'layer',
|
dataIndex: 'layer',
|
||||||
|
|
@ -66,7 +73,8 @@ export const emptyRightItem = {
|
||||||
areaField:'',
|
areaField:'',
|
||||||
isSum: false,
|
isSum: false,
|
||||||
};
|
};
|
||||||
export const searchFormSchema = [
|
|
||||||
|
export const searchFormSchema_1 = [
|
||||||
{
|
{
|
||||||
field: 'key',
|
field: 'key',
|
||||||
label: '关键字',
|
label: '关键字',
|
||||||
|
|
@ -74,3 +82,23 @@ export const searchFormSchema = [
|
||||||
colProps: { span: 8 },
|
colProps: { span: 8 },
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const searchFormSchema_2 = [
|
||||||
|
{
|
||||||
|
field: 'key',
|
||||||
|
label: '关键字',
|
||||||
|
component: 'Input',
|
||||||
|
colProps: { span: 8 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: '[startTime, endTime]',
|
||||||
|
helpMessage: '查询范围只包含时序影像大类',
|
||||||
|
label: '日期范围',
|
||||||
|
component: 'RangePicker',
|
||||||
|
colProps: { span: 8 },
|
||||||
|
componentProps: {
|
||||||
|
format: 'YYYY-MM-DD',
|
||||||
|
placeholder: ['开始日期', '结束日期'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<BasicTable @register="registerTable">
|
|
||||||
<template #toolbar>
|
|
||||||
<a-button type="primary" @click="updateimage">更新最新影像</a-button>
|
|
||||||
</template>
|
|
||||||
<template #bodyCell="{ column, record }">
|
|
||||||
<template v-if="column.key === 'enabledMark'">
|
|
||||||
<a-tag v-if="record.enabledMark" color="success">正常</a-tag>
|
|
||||||
<a-tag v-else color="error">停用</a-tag>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
</BasicTable>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts" setup>
|
|
||||||
// vben
|
|
||||||
import { useMessage } from '@/hooks/web/useMessage';
|
|
||||||
import { BasicTable, useTable } from '@/components/Table';
|
|
||||||
import { columns, searchFormSchema } from './util';
|
|
||||||
|
|
||||||
const { createMessage } = useMessage();
|
|
||||||
|
|
||||||
// 历史记录
|
|
||||||
const [registerTable, { reload, getSelectRows }] = useTable({
|
|
||||||
// api: getRightTable,
|
|
||||||
columns,
|
|
||||||
formConfig: {
|
|
||||||
labelWidth: 120,
|
|
||||||
schemas: searchFormSchema,
|
|
||||||
},
|
|
||||||
showIndexColumn: false,
|
|
||||||
rowSelection: {
|
|
||||||
type: 'radio',
|
|
||||||
},
|
|
||||||
useSearchForm: true,
|
|
||||||
bordered: true,
|
|
||||||
showTableSetting: true,
|
|
||||||
handleSearchInfoFn(info) {
|
|
||||||
return info;
|
|
||||||
},
|
|
||||||
immediate: false,
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
@ -1,207 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="flex-column">
|
|
||||||
<a-row style="overflow-y: hidden">
|
|
||||||
<a-col :span="12" style="padding: 20px; border: 1px silver solid; margin-left: 10px">
|
|
||||||
<a-form
|
|
||||||
ref="form"
|
|
||||||
v-modal:model="currentAppForm"
|
|
||||||
labelAlign="right"
|
|
||||||
label-width="80px"
|
|
||||||
:label-col="labelCol"
|
|
||||||
:wrapper-col="wrapperCol"
|
|
||||||
size="mini"
|
|
||||||
>
|
|
||||||
<a-form-item label="当前版本">
|
|
||||||
<span style="font-size: 15px; font-weight: bold; color: #000">
|
|
||||||
<a-input v-model:value="currentAppInfo.edition" :bordered="false" />
|
|
||||||
</span>
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="版本号">
|
|
||||||
<a-input-number v-model:value="currentAppForm.edition" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="项目名称">
|
|
||||||
<a-input
|
|
||||||
v-model:value="currentAppForm.project_name"
|
|
||||||
defaultValue="drone_enforcement"
|
|
||||||
disabled="true"
|
|
||||||
/>
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="上传">
|
|
||||||
<a-upload
|
|
||||||
v-model:file-list="fileList"
|
|
||||||
:name="imageBoundary_name"
|
|
||||||
:multiple="true"
|
|
||||||
:customRequest="handleCustomRequest"
|
|
||||||
:headers="headers"
|
|
||||||
:progress="progress"
|
|
||||||
:beforeUpload="beforeUpload"
|
|
||||||
>
|
|
||||||
<a-button :loading="imageBoundary_loading"> 点击上传 </a-button>
|
|
||||||
</a-upload>
|
|
||||||
{{ fileName }}
|
|
||||||
<DeleteOutlined v-if="fileName != ''" @click="deleteFileName" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="描述信息">
|
|
||||||
<a-textarea type="textarea" v-model:value="currentAppForm.description" :rows="4" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="是否必须更新" label-width="120px">
|
|
||||||
<a-radio-group v-model:value="currentAppForm.must_update" size="medium">
|
|
||||||
<a-radio :bordered="false" :value="1">是</a-radio>
|
|
||||||
<a-radio :bordered="false" :value="0">否</a-radio>
|
|
||||||
</a-radio-group>
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item :wrapper-col="{ offset: 10, span: 14 }">
|
|
||||||
<a-button type="primary" @click="onSubmit">立即创建</a-button>
|
|
||||||
</a-form-item>
|
|
||||||
</a-form>
|
|
||||||
</a-col>
|
|
||||||
</a-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script lang="ts" setup>
|
|
||||||
// vue
|
|
||||||
import { ref, onMounted } from 'vue';
|
|
||||||
// vben
|
|
||||||
import { useMessage } from '@/hooks/web/useMessage';
|
|
||||||
import { DeleteOutlined, UploadOutlined } from '@ant-design/icons-vue';
|
|
||||||
import { message, Upload } from 'ant-design-vue';
|
|
||||||
import type { UploadProps } from 'ant-design-vue';
|
|
||||||
import { BasicTable, useTable } from '@/components/Table';
|
|
||||||
import { useGlobSetting } from '@/hooks/setting';
|
|
||||||
// api
|
|
||||||
import { fun_GetUpdateFiles, fun_AddAppFiles } from '@/api/demo/version';
|
|
||||||
import { fun_Load, fun_Upload } from '@/api/demo/files';
|
|
||||||
|
|
||||||
const { createMessage } = useMessage();
|
|
||||||
|
|
||||||
// 表单栅格
|
|
||||||
const labelCol = { span: 6 };
|
|
||||||
const wrapperCol = { span: 18 };
|
|
||||||
|
|
||||||
// 影像边界shp
|
|
||||||
const currentAppForm = ref({
|
|
||||||
edition: '',
|
|
||||||
description: '',
|
|
||||||
filepath: '',
|
|
||||||
must_update: '',
|
|
||||||
project_name: '',
|
|
||||||
createuser: '',
|
|
||||||
createtime: '',
|
|
||||||
});
|
|
||||||
|
|
||||||
// 上传文件列表
|
|
||||||
let fileList: any = ref([]);
|
|
||||||
const imageBoundary_loading = ref<boolean>(false);
|
|
||||||
const imageBoundary_name = ref<string>('');
|
|
||||||
// 上传的文件
|
|
||||||
const fileName = ref('');
|
|
||||||
let filePath = '';
|
|
||||||
|
|
||||||
// 上传之前
|
|
||||||
const beforeUpload: UploadProps['beforeUpload'] = (file) => {
|
|
||||||
let extension = file.name.substring(file.name.lastIndexOf('.') + 1);
|
|
||||||
let size = file.size / 1024 / 1024;
|
|
||||||
const isApk = extension === 'apk';
|
|
||||||
const suitableSize = size < 100;
|
|
||||||
|
|
||||||
imageBoundary_name.value = file.name;
|
|
||||||
|
|
||||||
if (!isApk) {
|
|
||||||
createMessage.error('只能上传后缀是.apk的文件');
|
|
||||||
}
|
|
||||||
if (!suitableSize) {
|
|
||||||
createMessage.error('文件大小不得超过100M');
|
|
||||||
}
|
|
||||||
if (isApk && suitableSize) {
|
|
||||||
imageBoundary_loading.value = true;
|
|
||||||
}
|
|
||||||
return (isApk && suitableSize) || Upload.LIST_IGNORE;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 上传文件接口
|
|
||||||
const handleCustomRequest = (file, progress) => {
|
|
||||||
fileList.value = [];
|
|
||||||
fun_Upload(file, progress)
|
|
||||||
.then((res: any) => {
|
|
||||||
if (res.data.result.length > 0) {
|
|
||||||
fileName.value = res.data.result[0].fileName;
|
|
||||||
filePath = res.data.result[0].filePath;
|
|
||||||
imageBoundary_loading.value = false;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
imageBoundary_loading.value = false;
|
|
||||||
file.onError(err);
|
|
||||||
createMessage.error(err.message);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// 删除文件
|
|
||||||
function deleteFileName() {
|
|
||||||
// 影像边界shp-删除文件
|
|
||||||
fileName.value = '';
|
|
||||||
filePath = '';
|
|
||||||
fileList.value = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
// 影像边界shp-立即创建
|
|
||||||
function onSubmit() {
|
|
||||||
if (fileName.value == '' || filePath == '') {
|
|
||||||
createMessage.warn(`请选择上传文件!`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (currentAppForm.value.edition == '') {
|
|
||||||
createMessage.warn(`请先填写版本号!`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (currentAppForm.value.project_name != 'drone_enforcement') {
|
|
||||||
createMessage.warn(`请不要修改项目名称!`);
|
|
||||||
currentAppForm.value.project_name = 'drone_enforcement';
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
fun_Load({ key: fileName.value }).then((res) => {
|
|
||||||
if (res.items.length > 0) {
|
|
||||||
currentAppForm.value.filepath = res.items[0].filePath;
|
|
||||||
fun_AddAppFiles(currentAppForm.value).then((res2) => {
|
|
||||||
if (res2) {
|
|
||||||
createMessage.success(`上传成功!`);
|
|
||||||
currentAppForm.value = {
|
|
||||||
createtime: '',
|
|
||||||
createuser: '',
|
|
||||||
edition: '',
|
|
||||||
description: '',
|
|
||||||
filepath: '',
|
|
||||||
must_update: '',
|
|
||||||
project_name: '',
|
|
||||||
};
|
|
||||||
fileList.value = [];
|
|
||||||
getAppInfo();
|
|
||||||
} else {
|
|
||||||
createMessage.warn(`接口错误!`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
createMessage.warn(`上传文件出现错误!`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 影像边界shp-当前版本信息
|
|
||||||
let currentAppInfo = ref({});
|
|
||||||
// 版本
|
|
||||||
async function getAppInfo() {
|
|
||||||
fun_GetUpdateFiles({ project: 'drone_enforcement' }).then(async (res) => {
|
|
||||||
if (res) {
|
|
||||||
currentAppForm.value.project_name = res.project_name;
|
|
||||||
currentAppForm.value.description = res.description;
|
|
||||||
currentAppInfo.value = res;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
deleteFileName();
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
// 版本
|
|
||||||
getAppInfo();
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
@ -1,178 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="flex-column">
|
|
||||||
<a-row style="overflow-y: hidden">
|
|
||||||
<a-col :span="12" style="padding: 20px; border: 1px silver solid; margin-left: 10px">
|
|
||||||
<a-form
|
|
||||||
ref="form"
|
|
||||||
v-model:model="currentAppForm"
|
|
||||||
labelAlign="right"
|
|
||||||
label-width="80px"
|
|
||||||
:label-col="labelCol"
|
|
||||||
:wrapper-col="wrapperCol"
|
|
||||||
size="mini"
|
|
||||||
>
|
|
||||||
<a-form-item label="当前版本">
|
|
||||||
<span style="font-size: 15px; font-weight: bold; color: #000">
|
|
||||||
<a-input :bordered="false" />
|
|
||||||
</span>
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="版本号">
|
|
||||||
<a-input-number v-model:value="currentAppForm.edition" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="项目名称">
|
|
||||||
<a-input v-model:value="currentAppForm.project_name" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="上传">
|
|
||||||
<a-upload
|
|
||||||
v-model:file-list="fileList"
|
|
||||||
:name="imageRelease_name"
|
|
||||||
:multiple="true"
|
|
||||||
:customRequest="handleCustomRequest"
|
|
||||||
:headers="headers"
|
|
||||||
:progress="progress"
|
|
||||||
:beforeUpload="beforeUpload"
|
|
||||||
>
|
|
||||||
<a-button :loading="imageRelease_loading"> 点击上传 </a-button>
|
|
||||||
</a-upload>
|
|
||||||
{{ fileName }}
|
|
||||||
<DeleteOutlined v-if="fileName != ''" @click="deleteFileName" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="描述信息">
|
|
||||||
<a-textarea type="textarea" v-model:value="currentAppForm.description" :rows="4" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="是否必须更新" label-width="120px">
|
|
||||||
<a-radio-group v-model:value="currentAppForm.must_update" size="medium">
|
|
||||||
<a-radio :bordered="false" :value="1">是</a-radio>
|
|
||||||
<a-radio :bordered="false" :value="0">否</a-radio>
|
|
||||||
</a-radio-group>
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item :wrapper-col="{ offset: 10, span: 14 }">
|
|
||||||
<a-button type="primary" @click="onFlyControlSubmit">立即创建</a-button>
|
|
||||||
</a-form-item>
|
|
||||||
</a-form>
|
|
||||||
</a-col>
|
|
||||||
</a-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script lang="ts" setup>
|
|
||||||
// vue
|
|
||||||
import { ref, onMounted } from 'vue';
|
|
||||||
// vben
|
|
||||||
import { useMessage } from '@/hooks/web/useMessage';
|
|
||||||
import { DeleteOutlined, UploadOutlined } from '@ant-design/icons-vue';
|
|
||||||
import { message, Upload } from 'ant-design-vue';
|
|
||||||
import type { UploadProps } from 'ant-design-vue';
|
|
||||||
// api
|
|
||||||
import { fun_AddAppFiles } from '@/api/demo/version';
|
|
||||||
import { fun_Load, fun_Upload } from '@/api/demo/files';
|
|
||||||
|
|
||||||
const { createMessage } = useMessage();
|
|
||||||
|
|
||||||
// 表单栅格
|
|
||||||
const labelCol = { span: 6 };
|
|
||||||
const wrapperCol = { span: 18 };
|
|
||||||
// 上传文件列表
|
|
||||||
let fileList: any = ref([]);
|
|
||||||
const imageRelease_loading = ref<boolean>(false);
|
|
||||||
const imageRelease_name = ref<string>('');
|
|
||||||
// 上传的文件
|
|
||||||
const fileName = ref('');
|
|
||||||
let filePath = '';
|
|
||||||
|
|
||||||
// 影像发布事件
|
|
||||||
const currentAppForm = ref({
|
|
||||||
edition: '',
|
|
||||||
description: '',
|
|
||||||
filepath: '',
|
|
||||||
must_update: '',
|
|
||||||
project_name: '',
|
|
||||||
createuser: '',
|
|
||||||
createtime: '',
|
|
||||||
});
|
|
||||||
|
|
||||||
// 上传文件接口
|
|
||||||
const handleCustomRequest = (file, progress) => {
|
|
||||||
fileList.value = [];
|
|
||||||
fun_Upload(file, progress)
|
|
||||||
.then((res: any) => {
|
|
||||||
if (res.data.result.length > 0) {
|
|
||||||
fileName.value = res.data.result[0].fileName;
|
|
||||||
filePath = res.data.result[0].filePath;
|
|
||||||
imageRelease_loading.value = false;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
imageRelease_loading.value = false;
|
|
||||||
file.onError(err);
|
|
||||||
createMessage.error(err.message);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// 上传之前
|
|
||||||
const beforeUpload: UploadProps['beforeUpload'] = (file) => {
|
|
||||||
let extension = file.name.substring(file.name.lastIndexOf('.') + 1);
|
|
||||||
let size = file.size / 1024 / 1024;
|
|
||||||
const isApk = extension === 'apk';
|
|
||||||
const suitableSize = size < 100;
|
|
||||||
|
|
||||||
imageRelease_name.value = file.name;
|
|
||||||
if (!isApk) {
|
|
||||||
createMessage.error('只能上传后缀是.apk的文件');
|
|
||||||
}
|
|
||||||
if (!suitableSize) {
|
|
||||||
createMessage.error('文件大小不得超过100M');
|
|
||||||
}
|
|
||||||
if (isApk && suitableSize) {
|
|
||||||
imageRelease_loading.value = true;
|
|
||||||
}
|
|
||||||
return (isApk && suitableSize) || Upload.LIST_IGNORE;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 删除文件
|
|
||||||
function deleteFileName() {
|
|
||||||
// 影像发布事件-删除文件
|
|
||||||
fileName.value = '';
|
|
||||||
filePath = '';
|
|
||||||
fileList.value = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
// 影像发布事件-立即创建
|
|
||||||
function onFlyControlSubmit() {
|
|
||||||
if (fileName.value == '' || filePath == '') {
|
|
||||||
createMessage.warn(`请选择上传文件!`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (currentAppForm.value.edition == '') {
|
|
||||||
createMessage.warn(`请先填写版本号!`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (currentAppForm.value.project_name == '') {
|
|
||||||
createMessage.warn(`请先填写项目名称!`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
fun_Load({ key: fileName.value }).then((res) => {
|
|
||||||
if (res.items.length > 0) {
|
|
||||||
currentAppForm.value.filepath = res.items[0].filePath;
|
|
||||||
fun_AddAppFiles(currentAppForm.value).then((res2) => {
|
|
||||||
if (res2) {
|
|
||||||
createMessage.success(`上传成功!`);
|
|
||||||
currentAppForm.value = {
|
|
||||||
createtime: '',
|
|
||||||
createuser: '',
|
|
||||||
edition: '',
|
|
||||||
description: '',
|
|
||||||
filepath: '',
|
|
||||||
must_update: '',
|
|
||||||
project_name: '',
|
|
||||||
};
|
|
||||||
fileList.value = [];
|
|
||||||
} else {
|
|
||||||
createMessage.warn(`接口错误!`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
createMessage.warn(`上传文件出现错误!`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
@ -1,34 +1,45 @@
|
||||||
<template>
|
<template>
|
||||||
<div style="padding: 24px; overflow-y: hidden">
|
<div>
|
||||||
<a-tabs v-model:activeKey="activeKey">
|
<BasicTable @register="registerTable">
|
||||||
<a-tab-pane key="imageBoundary" tab="影像边界shp">
|
<template #toolbar>
|
||||||
<ImageBoundary />
|
<a-button type="primary" @click="updateimage">更新最新影像</a-button>
|
||||||
</a-tab-pane>
|
</template>
|
||||||
<a-tab-pane key="imageRelease" tab="影像发布事件">
|
<template #bodyCell="{ column, record }">
|
||||||
<ImageRelease />
|
<template v-if="column.key === 'enabledMark'">
|
||||||
</a-tab-pane>
|
<a-tag v-if="record.enabledMark" color="success">正常</a-tag>
|
||||||
<a-tab-pane key="history" tab="历史记录">
|
<a-tag v-else color="error">停用</a-tag>
|
||||||
<History />
|
</template>
|
||||||
</a-tab-pane>
|
</template>
|
||||||
</a-tabs>
|
</BasicTable>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
// vue
|
|
||||||
import { ref, onMounted } from 'vue';
|
|
||||||
// vben
|
// vben
|
||||||
import { useMessage } from '@/hooks/web/useMessage';
|
import { useMessage } from '@/hooks/web/useMessage';
|
||||||
import { DeleteOutlined, UploadOutlined } from '@ant-design/icons-vue';
|
|
||||||
import { message, Upload } from 'ant-design-vue';
|
|
||||||
import type { UploadProps } from 'ant-design-vue';
|
|
||||||
import { BasicTable, useTable } from '@/components/Table';
|
import { BasicTable, useTable } from '@/components/Table';
|
||||||
import { useGlobSetting } from '@/hooks/setting';
|
import { columns, searchFormSchema } from './util';
|
||||||
//
|
|
||||||
import ImageBoundary from './imageBoundary.vue';
|
|
||||||
import ImageRelease from './imageRelease.vue';
|
|
||||||
import History from './history.vue';
|
|
||||||
|
|
||||||
// 标签页
|
const { createMessage } = useMessage();
|
||||||
let activeKey = ref('imageBoundary');
|
|
||||||
|
// 历史记录
|
||||||
|
const [registerTable, { reload, getSelectRows }] = useTable({
|
||||||
|
// api: getRightTable,
|
||||||
|
columns,
|
||||||
|
formConfig: {
|
||||||
|
labelWidth: 120,
|
||||||
|
schemas: searchFormSchema,
|
||||||
|
},
|
||||||
|
showIndexColumn: false,
|
||||||
|
rowSelection: {
|
||||||
|
type: 'radio',
|
||||||
|
},
|
||||||
|
useSearchForm: true,
|
||||||
|
bordered: true,
|
||||||
|
showTableSetting: true,
|
||||||
|
handleSearchInfoFn(info) {
|
||||||
|
return info;
|
||||||
|
},
|
||||||
|
immediate: false,
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
<BasicModal
|
<BasicModal
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
@register="registerModal"
|
@register="registerModal"
|
||||||
title="案件详情"
|
title="图斑详情"
|
||||||
:canFullscreen="false"
|
:canFullscreen="false"
|
||||||
:defaultFullscreen="true"
|
:defaultFullscreen="true"
|
||||||
:showCancelBtn="false"
|
:showCancelBtn="false"
|
||||||
|
|
@ -35,7 +35,7 @@ const props = defineProps<{
|
||||||
}>()
|
}>()
|
||||||
const caseId = ref('');
|
const caseId = ref('');
|
||||||
let columns = reactive({data:[],col:[{
|
let columns = reactive({data:[],col:[{
|
||||||
title: '案件编号',
|
title: '图斑编号',
|
||||||
dataIndex: 'caseNo',
|
dataIndex: 'caseNo',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -43,7 +43,7 @@ let columns = reactive({data:[],col:[{
|
||||||
dataIndex: 'communityName',
|
dataIndex: 'communityName',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '案件描述',
|
title: '图斑描述',
|
||||||
dataIndex: 'caseDescription',
|
dataIndex: 'caseDescription',
|
||||||
},{
|
},{
|
||||||
title: '所属类型',
|
title: '所属类型',
|
||||||
|
|
@ -61,7 +61,7 @@ let columns = reactive({data:[],col:[{
|
||||||
title: '审核时间',
|
title: '审核时间',
|
||||||
dataIndex: 'verifyTime',
|
dataIndex: 'verifyTime',
|
||||||
},{
|
},{
|
||||||
title: '案件状态',
|
title: '图斑状态',
|
||||||
dataIndex: 'handleStatusName',
|
dataIndex: 'handleStatusName',
|
||||||
}]});
|
}]});
|
||||||
let total = ref(0)
|
let total = ref(0)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,142 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<BasicTable @register="headersTable" :searchInfo="searchInfo">
|
||||||
|
<template #bodyCell="{ column, record }">
|
||||||
|
<template v-if="column.key === 'refName'">
|
||||||
|
<a-input
|
||||||
|
v-model:value="record.refName"
|
||||||
|
@change="record.refName = record.refName.toLowerCase()"
|
||||||
|
/>
|
||||||
|
<p style="color: #ff0000; font-size: 12px" v-if="!regExp.test(record.refName)">
|
||||||
|
使用小写字母、数字、下划线的组合
|
||||||
|
</p>
|
||||||
|
</template>
|
||||||
|
<template v-if="column.key === 'initName'">
|
||||||
|
<a-input v-model:value="record.initName" />
|
||||||
|
</template>
|
||||||
|
<template v-if="column.key === 'action'">
|
||||||
|
<TableAction
|
||||||
|
:actions="[
|
||||||
|
{
|
||||||
|
label: '删除',
|
||||||
|
onClick: () => {
|
||||||
|
deleteRow(record);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</BasicTable>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref, reactive, h, onMounted } from 'vue';
|
||||||
|
// vben
|
||||||
|
import { useMessage } from '@/hooks/web/useMessage';
|
||||||
|
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||||
|
|
||||||
|
import { headersColumns, headersSearchFormSchema } from './clound.data';
|
||||||
|
import axios from 'axios';
|
||||||
|
import { cloneDeep } from 'lodash-es';
|
||||||
|
import { getAppEnvConfig } from '@/utils/env';
|
||||||
|
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||||
|
|
||||||
|
const { createMessage } = useMessage();
|
||||||
|
|
||||||
|
const props = defineProps(['headers']);
|
||||||
|
const headers = ref(props.headers);
|
||||||
|
// 查询前的备份
|
||||||
|
const searchBeforeHeaders = ref();
|
||||||
|
const emit = defineEmits(['headersTableSubmit']);
|
||||||
|
// 正则表达式
|
||||||
|
let regExp = /^[a-z0-9_]+$/;
|
||||||
|
|
||||||
|
// 步骤2
|
||||||
|
const searchParams = ref();
|
||||||
|
const [headersTable, { reload, getDataSource }] = useTable({
|
||||||
|
dataSource: headers,
|
||||||
|
columns: headersColumns,
|
||||||
|
formConfig: {
|
||||||
|
labelWidth: 120,
|
||||||
|
schemas: headersSearchFormSchema,
|
||||||
|
},
|
||||||
|
canResize: true,
|
||||||
|
useSearchForm: true,
|
||||||
|
showTableSetting: false,
|
||||||
|
pagination: true,
|
||||||
|
bordered: true,
|
||||||
|
showIndexColumn: true,
|
||||||
|
handleSearchInfoFn(info) {
|
||||||
|
if (info.name == undefined) {
|
||||||
|
// 重置
|
||||||
|
reset();
|
||||||
|
} else {
|
||||||
|
reset();
|
||||||
|
// 搜索
|
||||||
|
searchBeforeHeaders.value = cloneDeep(headers.value);
|
||||||
|
searchParams.value = info;
|
||||||
|
headers.value = headers.value.filter((item) => item.name.includes(info.name));
|
||||||
|
}
|
||||||
|
return info;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// 重置
|
||||||
|
function reset() {
|
||||||
|
if (searchBeforeHeaders.value) {
|
||||||
|
headers.value.forEach((item1) => {
|
||||||
|
searchBeforeHeaders.value.forEach((item2) => {
|
||||||
|
item2 = item1.name == item2.name ? item1 : item2;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
headers.value = cloneDeep(searchBeforeHeaders.value);
|
||||||
|
}
|
||||||
|
searchBeforeHeaders.value = null;
|
||||||
|
}
|
||||||
|
// 删除
|
||||||
|
const deleteRow = (record) => {
|
||||||
|
headers.value = headers.value.filter((item) => {
|
||||||
|
return item.name != record.name;
|
||||||
|
});
|
||||||
|
if (searchBeforeHeaders.value) {
|
||||||
|
searchBeforeHeaders.value = searchBeforeHeaders.value.filter((item) => {
|
||||||
|
return item.name != record.name;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// 提交
|
||||||
|
const submit2 = () => {
|
||||||
|
reset();
|
||||||
|
let data = getDataSource();
|
||||||
|
let flag: Boolean = true;
|
||||||
|
data.forEach((item) => {
|
||||||
|
flag = regExp.test(item.refName);
|
||||||
|
});
|
||||||
|
if (flag) {
|
||||||
|
emit('headersTableSubmit', getDataSource());
|
||||||
|
} else {
|
||||||
|
createMessage.warn('提交的refName字段名中有不符合字段名命名规则的');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
submit2,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
::v-deep .ant-table-container table {
|
||||||
|
line-height: 1.1 !important;
|
||||||
|
|
||||||
|
.ant-table-row {
|
||||||
|
td {
|
||||||
|
padding-top: 8px !important;
|
||||||
|
padding-bottom: 8px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .ant-table-body {
|
||||||
|
height: 410px !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,287 @@
|
||||||
|
<template>
|
||||||
|
<div class="current1">
|
||||||
|
<div class="upload-div w-1/2 xl:w-1/2 m-4 mr-0">
|
||||||
|
<a-upload-dragger
|
||||||
|
v-model:fileList="shpFileList"
|
||||||
|
name="shpFileName"
|
||||||
|
style="height: 274px; width: 300px"
|
||||||
|
class="upload-dragger"
|
||||||
|
:multiple="false"
|
||||||
|
:maxCount="1"
|
||||||
|
:before-upload="shpBeforeUpload"
|
||||||
|
:customRequest="shpCustomRequest"
|
||||||
|
accept=".zip,.xlsx"
|
||||||
|
>
|
||||||
|
<p class="ant-upload-drag-icon">
|
||||||
|
<PlusOutlined />
|
||||||
|
</p>
|
||||||
|
<div style="opacity: 0.7"> 文件上传 </div>
|
||||||
|
<div class="upload-span">
|
||||||
|
<div class="upload-span-content">
|
||||||
|
<div style="opacity: 0.7">将文件拖拽到这里或点击上传按钮</div>
|
||||||
|
<div style="color: #1e5eff">支持扩展名:zip、xls、xlsx</div>
|
||||||
|
<div style="opacity: 0.7"> zip中需要包含 .shp .shx .dbf 文件 </div>
|
||||||
|
<div style="opacity: 0.7"> 且.shp文件大小小于10MB </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a-upload-dragger>
|
||||||
|
</div>
|
||||||
|
<div class="upload-form w-1/2 xl:w-1/2 m-4 mr-0">
|
||||||
|
<a-form
|
||||||
|
ref="formRef"
|
||||||
|
:model="uploadFrom"
|
||||||
|
:labelCol="{ width: '75px' }"
|
||||||
|
labelAlign="right"
|
||||||
|
:rules="uploadFormRules"
|
||||||
|
>
|
||||||
|
<a-form-item label="服务名称" name="serverName">
|
||||||
|
<a-input v-model:value="uploadFrom.serverName" placeholder="请输入服务名称" />
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="空间参考" name="spatialRef">
|
||||||
|
<a-select v-model:value="uploadFrom.spatialRef" placeholder="请选择空间参考">
|
||||||
|
<a-select-option value="EPSG:4326">EPSG:4326</a-select-option>
|
||||||
|
<a-select-option value="EPSG:3857">EPSG:3857</a-select-option>
|
||||||
|
<a-select-option value="EPSG:900913">EPSG:900913</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="数据表名" name="dataTable">
|
||||||
|
<a-input v-model:value="uploadFrom.dataTable" placeholder="请输入表名" />
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="图层样式" name="appendPath">
|
||||||
|
<a-upload
|
||||||
|
v-model:fileList="tucengFileList"
|
||||||
|
name="tucengFileName"
|
||||||
|
list-type="picture-card"
|
||||||
|
class="upload-dragger"
|
||||||
|
:multiple="false"
|
||||||
|
:maxCount="1"
|
||||||
|
:show-upload-list="false"
|
||||||
|
:before-upload="tucengBeforeUpload"
|
||||||
|
:custom-request="tucengCustomRequest"
|
||||||
|
accept=".sld"
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
<PlusOutlined />
|
||||||
|
<div class="ant-upload-text">上传图层样式</div>
|
||||||
|
</div>
|
||||||
|
</a-upload>
|
||||||
|
<div style="position: relative; top: -50px" v-if="tucengFileName">
|
||||||
|
{{ tucengFileName }}
|
||||||
|
<DeleteOutlined @click="deleteTuceng" />
|
||||||
|
</div>
|
||||||
|
</a-form-item>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref, reactive, h } from 'vue';
|
||||||
|
// vben
|
||||||
|
import { PermissionBtn } from '@/components/PermissionBtn/index';
|
||||||
|
import { useMessage } from '@/hooks/web/useMessage';
|
||||||
|
import type { UploadProps } from 'ant-design-vue';
|
||||||
|
import { message, Upload } from 'ant-design-vue';
|
||||||
|
import { PlusOutlined, DeleteOutlined } from '@ant-design/icons-vue';
|
||||||
|
import {
|
||||||
|
getStatisticalList,
|
||||||
|
ShpGeoLayerAdd,
|
||||||
|
ShpGeoLayerLoadPage,
|
||||||
|
ShpGeoLayerGet,
|
||||||
|
ShpGeoLayerUpdateLayer,
|
||||||
|
ShpGeoLayerDelete,
|
||||||
|
ShpGeoLayerParseShpInfo,
|
||||||
|
} from '@/api/demo/system';
|
||||||
|
import { CheckTableExist } from '@/api/database/index';
|
||||||
|
|
||||||
|
import axios from 'axios';
|
||||||
|
import { cloneDeep } from 'lodash-es';
|
||||||
|
import { getAppEnvConfig } from '@/utils/env';
|
||||||
|
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||||
|
|
||||||
|
const { createMessage } = useMessage();
|
||||||
|
|
||||||
|
const formRef = ref();
|
||||||
|
|
||||||
|
const props = defineProps(['uploadForm']);
|
||||||
|
const uploadFrom = ref(props.uploadForm);
|
||||||
|
const emit = defineEmits(['uploadFormSubmit', 'isZipOrXls']);
|
||||||
|
|
||||||
|
const uploadFormRules = reactive({
|
||||||
|
serverName: [{ required: true, message: '请输入服务名称', trigger: 'blur' }],
|
||||||
|
spatialRef: [{ required: true, message: '请选择空间参考', trigger: 'blur' }],
|
||||||
|
// dataType: [{ required: true, message: '请选择数据类型', trigger: 'blur' }],
|
||||||
|
appendPath: [{ required: true, message: '请上传图层样式', trigger: 'blur' }],
|
||||||
|
dataTable: [
|
||||||
|
{ required: true, message: '请输入数据表名', trigger: 'blur' },
|
||||||
|
{
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
let reg = /^[a-z]\w{0,28}$/;
|
||||||
|
if (value !== '' && !reg.test(value)) {
|
||||||
|
callback(
|
||||||
|
new Error('小写字母开头,可包含下划线,但不能有汉字和大写字母,不能超过30字符'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
callback();
|
||||||
|
},
|
||||||
|
trigger: 'blur',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: async (rule, value, callback) => {
|
||||||
|
try {
|
||||||
|
let query: any = { tableName: value };
|
||||||
|
const response = await CheckTableExist(query);
|
||||||
|
if (!response) {
|
||||||
|
callback(new Error('数据库已有此数据表名,请更换表名'));
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
callback(new Error('检查数据表名时发生错误'));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: 'blur',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
// 步骤1-提交
|
||||||
|
const submit1 = () => {
|
||||||
|
formRef.value
|
||||||
|
.validate()
|
||||||
|
.then(() => {
|
||||||
|
let params = {
|
||||||
|
zipFilePath: uploadFrom.value.shpPath,
|
||||||
|
tableName: uploadFrom.value.dataTable,
|
||||||
|
srid: uploadFrom.value.spatialRef,
|
||||||
|
};
|
||||||
|
ShpGeoLayerParseShpInfo(params).then((res) => {
|
||||||
|
uploadFrom.value.dataType = res.dataType;
|
||||||
|
uploadFrom.value.headers = res.headers;
|
||||||
|
emit('uploadFormSubmit', uploadFrom.value);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 步骤1-shp上传
|
||||||
|
const shpFileList = ref<UploadProps['fileList']>([]);
|
||||||
|
const shpFileName = ref<string>('');
|
||||||
|
let isUpload = false;
|
||||||
|
// 步骤1-shp上传之前
|
||||||
|
const shpBeforeUpload: UploadProps['beforeUpload'] = (file) => {
|
||||||
|
let extension = file.name.substring(file.name.lastIndexOf('.') + 1);
|
||||||
|
let size = file.size / 1024 / 1024;
|
||||||
|
const isZipOrXls = extension === 'zip' || extension === 'xls' || extension === 'xlsx';
|
||||||
|
const suitableSize = size < 30;
|
||||||
|
if (!isZipOrXls) {
|
||||||
|
createMessage.error('只能上传后缀是.zip .xls或者.xlsx的文件');
|
||||||
|
}
|
||||||
|
if (extension == 'zip') {
|
||||||
|
emit('isZipOrXls', 'shp');
|
||||||
|
} else if (['xls', 'xlsx'].includes(extension)) {
|
||||||
|
emit('isZipOrXls', 'excel');
|
||||||
|
}
|
||||||
|
if (!suitableSize) {
|
||||||
|
createMessage.error('文件大小不得超过30M');
|
||||||
|
}
|
||||||
|
isUpload = isZipOrXls && suitableSize;
|
||||||
|
return isUpload;
|
||||||
|
};
|
||||||
|
// 步骤1-shp上传文件接口
|
||||||
|
const shpCustomRequest = (options) => {
|
||||||
|
if (isUpload) {
|
||||||
|
const formData = new FormData();
|
||||||
|
formData.append('files', options.file);
|
||||||
|
// 假设 Token 存储在 localStorage 中
|
||||||
|
const token = localStorage.getItem('X-Token');
|
||||||
|
// 设置请求头部,带上 Token
|
||||||
|
const headers = {
|
||||||
|
'X-Token': token,
|
||||||
|
};
|
||||||
|
axios
|
||||||
|
.post(VITE_GLOB_API_URL + '/api/Files/Upload', formData, { headers })
|
||||||
|
.then((response) => {
|
||||||
|
options.onSuccess(response.data, options.file);
|
||||||
|
shpFileName.value = response.data.result[0].fileName;
|
||||||
|
uploadFrom.value.shpPath = response.data.result[0].filePath;
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
options.onError(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 步骤1-图层样式上传
|
||||||
|
const tucengFileList = ref<UploadProps['fileList']>([]);
|
||||||
|
const tucengFileName = ref<string>('');
|
||||||
|
// 步骤1-图层上传之前
|
||||||
|
const tucengBeforeUpload: UploadProps['beforeUpload'] = (file) => {
|
||||||
|
let extension = file.name.substring(file.name.lastIndexOf('.') + 1);
|
||||||
|
let size = file.size / 1024 / 1024;
|
||||||
|
const isSld = extension === 'sld';
|
||||||
|
const suitableSize = size < 1;
|
||||||
|
|
||||||
|
if (!isSld) {
|
||||||
|
createMessage.error('只能上传后缀是.sld的文件');
|
||||||
|
}
|
||||||
|
if (!suitableSize) {
|
||||||
|
createMessage.error('文件大小不得超过1M');
|
||||||
|
}
|
||||||
|
return (isSld && suitableSize) || Upload.LIST_IGNORE;
|
||||||
|
};
|
||||||
|
// 步骤1-图层上传文件接口
|
||||||
|
const tucengCustomRequest = (options) => {
|
||||||
|
const formData = new FormData();
|
||||||
|
formData.append('files', options.file);
|
||||||
|
// 假设 Token 存储在 localStorage 中
|
||||||
|
const token = localStorage.getItem('X-Token');
|
||||||
|
// 设置请求头部,带上 Token
|
||||||
|
const headers = {
|
||||||
|
'X-Token': token,
|
||||||
|
};
|
||||||
|
axios
|
||||||
|
.post(VITE_GLOB_API_URL + '/api/Files/Upload', formData, { headers })
|
||||||
|
.then((response) => {
|
||||||
|
options.onSuccess(response.data, options.file);
|
||||||
|
tucengFileName.value = response.data.result[0].fileName;
|
||||||
|
uploadFrom.value.appendPath = response.data.result[0].filePath;
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
options.onError(error);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 步骤1-删除图层样式
|
||||||
|
const deleteTuceng = () => {
|
||||||
|
tucengFileName.value = '';
|
||||||
|
uploadFrom.value.appendPath = '';
|
||||||
|
};
|
||||||
|
// 清除验证
|
||||||
|
const clearValidation = () => {
|
||||||
|
formRef.value.clearValidate();
|
||||||
|
shpFileName.value = '';
|
||||||
|
tucengFileName.value = '';
|
||||||
|
};
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
submit1,
|
||||||
|
clearValidation,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.current1 {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.upload-div {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
position: relative;
|
||||||
|
top: -30px;
|
||||||
|
}
|
||||||
|
.upload-span {
|
||||||
|
margin: 30px;
|
||||||
|
}
|
||||||
|
.upload-form {
|
||||||
|
margin-left: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -1,541 +1,309 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<a-row ::gutter="0">
|
<a-row ::gutter="0">
|
||||||
<a-col :span="12">
|
<a-col :span="24">
|
||||||
<BasicTable @register="registerTable" :searchInfo="searchInfo">
|
<BasicTable @register="registerTable" :searchInfo="searchInfo">
|
||||||
<template #toolbar>
|
<template #toolbar>
|
||||||
<PermissionBtn @btn-event="onBtnClicked" />
|
<PermissionBtn @btn-event="onBtnClicked" />
|
||||||
</template>
|
</template>
|
||||||
</BasicTable>
|
</BasicTable>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="0">
|
||||||
<div class="map-outer">
|
<div class="map-outer">
|
||||||
<MapboxMap
|
<!-- <MapboxMap
|
||||||
:geomsList="geomsList"
|
:geomsList="geomsList"
|
||||||
:mapConfig="mapConfig"
|
:mapConfig="mapConfig"
|
||||||
@handlerDrawComplete="handlerDrawComplete"
|
@handlerDrawComplete="handlerDrawComplete"
|
||||||
@mapOnLoad="onMapboxLoad"
|
@mapOnLoad="onMapboxLoad"
|
||||||
ref="MapboxComponent"
|
ref="MapboxComponent"
|
||||||
/>
|
/> -->
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
|
||||||
<div class="data-preview-container" v-if="showRecordList">
|
|
||||||
<a-tabs v-model:activeKey="activeKey" hide-add type="editable-card" @edit="onEdit" @change="handleTabChange">
|
|
||||||
<a-tab-pane v-for="(pane,index) in tablist" :key="index.toString()" :tab="pane.streetname+'-'+pane.label" :closable="pane.closable">
|
|
||||||
</a-tab-pane>
|
|
||||||
</a-tabs>
|
|
||||||
<RecordList :tablist="tablist" :currentListQuery="currentListQuery.listQuery"></RecordList>
|
|
||||||
|
|
||||||
<div class="data-preview-container-option">
|
|
||||||
|
|
||||||
<div @click="exportList()">
|
|
||||||
<CloudDownloadOutlined />
|
|
||||||
</div>
|
|
||||||
<div @click="handleCloseRecordList()">
|
|
||||||
<MinusOutlined />
|
|
||||||
</div>
|
|
||||||
<div @click="handleCloseAllRecordList()">
|
|
||||||
<CloseOutlined />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a-modal
|
<a-modal
|
||||||
v-model:open="addModalShow"
|
v-model:open="modalShow"
|
||||||
|
:maskClosable="false"
|
||||||
|
:afterClose="closeAndCreate"
|
||||||
title="添加GeoServer服务"
|
title="添加GeoServer服务"
|
||||||
width="800px"
|
width="1000px"
|
||||||
|
style="top: 20px"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="select-file-div">
|
<div>
|
||||||
<div class="upload-div">
|
<a-steps :current="current" size="small" label-placement="vertical" :items="items" />
|
||||||
<a-upload-dragger
|
|
||||||
style="height: 174px; width: 174px"
|
|
||||||
class="upload-dragger"
|
|
||||||
v-model:fileList="fileList"
|
|
||||||
name="file"
|
|
||||||
:multiple="false"
|
|
||||||
:maxCount="1"
|
|
||||||
:before-upload="beforeUpload"
|
|
||||||
accept=".zip,.xlsx"
|
|
||||||
>
|
|
||||||
<p class="ant-upload-drag-icon">
|
|
||||||
<inbox-outlined></inbox-outlined>
|
|
||||||
</p>
|
|
||||||
<div style="opacity: 0.7">
|
|
||||||
<a-button :icon="h(PlusOutlined)">文件上传</a-button>
|
|
||||||
</div>
|
|
||||||
</a-upload-dragger>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="upload-span">
|
<div class="current1" v-if="current == 0">
|
||||||
<div class="upload-span-content">
|
<UploadFrom
|
||||||
<div style="opacity: 0.7">将文件拖拽到这里或点击上传按钮</div>
|
ref="uploadFormRef"
|
||||||
<div style="color: #1e5eff">支持扩展名:zip,xlsx</div>
|
:uploadForm="uploadFrom"
|
||||||
<div style="opacity: 0.7">zip中需要包含 .shp .shx .dbf 文件 且.shp文件大小小于10MB</div>
|
@isZipOrXls="isZipOrXls"
|
||||||
</div>
|
@uploadFormSubmit="uploadFormSubmit"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="upload-form">
|
<div class="current2" v-if="current == 1 && uploadFrom.dataSourceType == 'shp'">
|
||||||
|
<HeadersTable
|
||||||
<a-form
|
ref="headersTableRef"
|
||||||
ref="formRef"
|
:headers="uploadFrom.headers"
|
||||||
:model="uploadFrom"
|
@headersTableSubmit="headersTableSubmit"
|
||||||
:label-col="{ style: { width: '75px' } }"
|
/>
|
||||||
labelAlign="right"
|
</div>
|
||||||
:rules="uploadFormRules"
|
<div
|
||||||
|
class="current3"
|
||||||
|
v-if="current == 2 || (current == 1 && uploadFrom.dataSourceType == 'excel')"
|
||||||
|
>
|
||||||
|
<a-result
|
||||||
|
status="success"
|
||||||
|
title="图层创建成功"
|
||||||
|
subTitle="图层创建成功,请在云查询图层列表查看"
|
||||||
>
|
>
|
||||||
<a-form-item label="服务名称" name="serverName">
|
<template #extra>
|
||||||
<a-input v-model:value="uploadFrom.serverName" placeholder="请输入服务名称" />
|
<a-button type="primary" @click="handleClose">再次创建</a-button>
|
||||||
</a-form-item>
|
<a-button @click="handleClose">关闭窗口</a-button>
|
||||||
|
</template>
|
||||||
<!-- 显示条件:文件类型为Excel时 -->
|
</a-result>
|
||||||
<a-form-item label="图斑数据" name="hasFeature" v-if="!isShp">
|
|
||||||
<a-select v-model:value="uploadFrom.hasFeature" placeholder="请选择是否具有图斑数据">
|
|
||||||
<a-select-option value="1">是</a-select-option>
|
|
||||||
<a-select-option value="0">否</a-select-option>
|
|
||||||
</a-select>
|
|
||||||
</a-form-item>
|
|
||||||
|
|
||||||
<!-- 显示条件:文件类型为shp 或者 类型为Excel时有图斑数据 -->
|
|
||||||
<a-form-item label="空间参考" name="spaceType" v-if="isShp || (!isShp && uploadFrom.hasFeature == '1')">
|
|
||||||
<a-select v-model:value="uploadFrom.spaceType" placeholder="请选择空间参考">
|
|
||||||
<a-select-option value="EPSG:4326">EPSG:4326</a-select-option>
|
|
||||||
<a-select-option value="3857">EPSG:3857</a-select-option>
|
|
||||||
<a-select-option value="900913">EPSG:900913</a-select-option>
|
|
||||||
</a-select>
|
|
||||||
</a-form-item>
|
|
||||||
|
|
||||||
<!-- 显示条件:文件类型为Excel有图斑时 -->
|
|
||||||
<a-form-item label="数据类型" name="spaceType" v-if="!isShp && uploadFrom.hasFeature == '1'">
|
|
||||||
<a-select v-model:value="uploadFrom.layerType" placeholder="请选择数据类型">
|
|
||||||
<a-select-option value="point">点</a-select-option>
|
|
||||||
<a-select-option value="linestring">线</a-select-option>
|
|
||||||
<a-select-option value="polygon">面</a-select-option>
|
|
||||||
</a-select>
|
|
||||||
</a-form-item>
|
|
||||||
|
|
||||||
<a-form-item label="数据表名" name="tableName">
|
|
||||||
<a-row :gutter="12">
|
|
||||||
<a-col :span="20">
|
|
||||||
<a-input v-model:value="uploadFrom.tableName" placeholder="请输入表名" />
|
|
||||||
</a-col>
|
|
||||||
<a-col :span="4">
|
|
||||||
<a-button type="" :icon="h(PlusOutlined)" @click="handlerGetExistsTableList()" />
|
|
||||||
</a-col>
|
|
||||||
</a-row>
|
|
||||||
</a-form-item>
|
|
||||||
</a-form>
|
|
||||||
|
|
||||||
<!-- <div class="upload-span-button">
|
|
||||||
<a-button type="primary" :icon="h(CloudUploadOutlined)" @click="submitShp">上传</a-button>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<a-button type="default" >取消</a-button>
|
<a-button
|
||||||
<a-button type="primary" >添加</a-button>
|
type="default"
|
||||||
|
@click="handleClose"
|
||||||
|
v-if="
|
||||||
|
!(uploadFrom.dataSourceType == 'shp' && current == 3) ||
|
||||||
|
!(uploadFrom.dataSourceType == 'excel' && current == 2)
|
||||||
|
"
|
||||||
|
>
|
||||||
|
取消
|
||||||
|
</a-button>
|
||||||
|
<a-button
|
||||||
|
type="primary"
|
||||||
|
@click="nextStep"
|
||||||
|
v-if="
|
||||||
|
!(uploadFrom.dataSourceType == 'shp' && current == 3) ||
|
||||||
|
!(uploadFrom.dataSourceType == 'excel' && current == 2)
|
||||||
|
"
|
||||||
|
>
|
||||||
|
下一步
|
||||||
|
</a-button>
|
||||||
</template>
|
</template>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref,reactive,h } from 'vue';
|
import { ref, reactive, h } from 'vue';
|
||||||
|
// vben
|
||||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
|
||||||
import { getStatisticalList, deleteRole } from '@/api/demo/system';
|
|
||||||
|
|
||||||
// import {DataPreivew} from './RecordList.vue'
|
|
||||||
|
|
||||||
import { useMessage } from '@/hooks/web/useMessage';
|
|
||||||
import { useModal } from '@/components/Modal';
|
|
||||||
import { RecordList } from './page';
|
|
||||||
|
|
||||||
import { PermissionBtn } from '@/components/PermissionBtn/index';
|
import { PermissionBtn } from '@/components/PermissionBtn/index';
|
||||||
|
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||||
import { columns, columnsDataPreview,searchFormSchema } from './statistical.data';
|
import { useMessage } from '@/hooks/web/useMessage';
|
||||||
import {MinusOutlined,CloseOutlined,CloudDownloadOutlined,PlusOutlined} from '@ant-design/icons-vue'
|
// 组件
|
||||||
import axios from 'axios';
|
import UploadFrom from './clound/uploadFrom.vue';
|
||||||
import print from "vue3-print-nb";
|
import HeadersTable from './clound/headersTable.vue';
|
||||||
|
|
||||||
import { getAppEnvConfig } from '@/utils/env';
|
|
||||||
import MapboxMap from '@/components/MapboxMaps/MapComponent.vue';
|
import MapboxMap from '@/components/MapboxMaps/MapComponent.vue';
|
||||||
import type { UploadProps } from 'ant-design-vue';
|
import {
|
||||||
|
indexColumns,
|
||||||
|
indexSearchFormSchema,
|
||||||
|
defaultData2,
|
||||||
|
items_shp,
|
||||||
|
items_excel,
|
||||||
|
} from './clound/clound.data';
|
||||||
|
import {
|
||||||
|
getStatisticalList,
|
||||||
|
ShpGeoLayerAdd,
|
||||||
|
ShpGeoLayerLoadPage,
|
||||||
|
ShpGeoLayerGet,
|
||||||
|
ShpGeoLayerUpdateLayer,
|
||||||
|
ShpGeoLayerDelete,
|
||||||
|
ShpGeoLayerParseShpInfo,
|
||||||
|
} from '@/api/demo/system';
|
||||||
|
|
||||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
import axios from 'axios';
|
||||||
|
import { cloneDeep } from 'lodash-es';
|
||||||
const addModalShow = ref<Boolean>(false);
|
|
||||||
|
|
||||||
const vPrint = print;
|
|
||||||
|
|
||||||
const printOpen = ref<boolean>(false);
|
|
||||||
|
|
||||||
const uploadFrom = ref({})
|
|
||||||
const uploadFormRules = reactive({
|
|
||||||
serverName: [{ required: true, message: '请输入服务名称', trigger: 'blur' }],
|
|
||||||
imageServerAddress: [{ required: true, message: '请输入服务地址', trigger: 'blur' }],
|
|
||||||
hasFeature: [{ required: true, message: '请选择是否有图斑数据', trigger: 'blur' }],
|
|
||||||
spaceType: [{ required: true, message: '请选择参考系', trigger: 'blur' }],
|
|
||||||
layerType: [{ required: true, message: '请选数据类型', trigger: 'blur' }],
|
|
||||||
tableName: [{ required: true, message: '请输入表名', trigger: 'blur' }],
|
|
||||||
});
|
|
||||||
|
|
||||||
const printObj = reactive({
|
|
||||||
id:"printMe",
|
|
||||||
popTitle: "",
|
|
||||||
beforeOpenCallback() {
|
|
||||||
|
|
||||||
},
|
|
||||||
openCallback() {
|
|
||||||
|
|
||||||
},
|
|
||||||
closeCallback() {
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const beforeUpload:UploadProps['beforeUpload'] = (file) => {
|
|
||||||
// file.type === FILETYPE.ZIP ? isShp.value = true: isShp.value = false
|
|
||||||
fileList.value = [file];
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
const fileList = ref<UploadProps['fileList']>([]);
|
|
||||||
|
|
||||||
|
|
||||||
defineOptions({ name: 'RoleManagement' });
|
|
||||||
|
|
||||||
let activeKey = ref('0')
|
|
||||||
|
|
||||||
const { createConfirm, createMessage } = useMessage();
|
const { createConfirm, createMessage } = useMessage();
|
||||||
const [registerModal, { openModal: openRoleModal }] = useModal();
|
|
||||||
const [registerModulesModal, { openModal: openModulesModal }] = useModal();
|
|
||||||
const [registerAccountModal, { openModal: openAccountModal }] = useModal();
|
|
||||||
const searchInfo = reactive<Recordable>({
|
|
||||||
countyid:null
|
|
||||||
});
|
|
||||||
|
|
||||||
const currentOrgLevel = ref<string>("country")
|
// 页面表格
|
||||||
|
|
||||||
const showRecordList = ref<boolean>(false);
|
|
||||||
|
|
||||||
const panes = reactive<{ title: string; content: string; key: string; closable?: boolean}[]>([])
|
|
||||||
const searchParams = ref();
|
const searchParams = ref();
|
||||||
const [registerTable, { reload, getSelectRows, clearSelectedRowKeys, updateTableData}] = useTable({
|
const [registerTable, { reload, getSelectRows, clearSelectedRowKeys }] = useTable({
|
||||||
// 表格名称
|
title: '云查询图层',
|
||||||
title: 'GeoServer服务管理',
|
api: ShpGeoLayerLoadPage,
|
||||||
// 获取数据的接口
|
columns: indexColumns,
|
||||||
api: getStatisticalList,
|
|
||||||
// 表单列信息 BasicColumn[]
|
|
||||||
columns,
|
|
||||||
rowKey: 'streetid',
|
|
||||||
formConfig: {
|
formConfig: {
|
||||||
labelWidth: 120,
|
labelWidth: 120,
|
||||||
schemas: searchFormSchema,
|
schemas: indexSearchFormSchema,
|
||||||
},
|
},
|
||||||
// 使用搜索表单
|
|
||||||
useSearchForm: true,
|
useSearchForm: true,
|
||||||
// 显示表格设置工具
|
|
||||||
showTableSetting: true,
|
showTableSetting: true,
|
||||||
// 是否显示分页
|
pagination: true,
|
||||||
pagination:true,
|
|
||||||
// 是否显示表格边框
|
|
||||||
bordered: true,
|
bordered: true,
|
||||||
// 序号列
|
|
||||||
showIndexColumn: true,
|
showIndexColumn: true,
|
||||||
// 勾选列
|
|
||||||
rowSelection: {
|
rowSelection: {
|
||||||
type: 'radio',
|
type: 'radio',
|
||||||
},
|
},
|
||||||
// 搜索
|
|
||||||
handleSearchInfoFn(info) {
|
handleSearchInfoFn(info) {
|
||||||
searchParams.value = info;
|
searchParams.value = info;
|
||||||
return info;
|
return info;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const [registerPrintTable] = useTable({
|
// 步骤
|
||||||
// 表格名称
|
const current = ref(0);
|
||||||
title: '',
|
const items = ref(items_shp);
|
||||||
// 获取数据的接口
|
|
||||||
api: getStatisticalList,
|
|
||||||
// 表单列信息 BasicColumn[]
|
|
||||||
columns,
|
|
||||||
rowKey: 'id',
|
|
||||||
formConfig: {
|
|
||||||
labelWidth: 120,
|
|
||||||
schemas: searchFormSchema,
|
|
||||||
},
|
|
||||||
// 使用搜索表单
|
|
||||||
useSearchForm: false,
|
|
||||||
// 显示表格设置工具
|
|
||||||
showTableSetting: false,
|
|
||||||
// 是否显示分页
|
|
||||||
pagination:false,
|
|
||||||
// 是否显示表格边框
|
|
||||||
bordered: true,
|
|
||||||
// 序号列
|
|
||||||
showIndexColumn: false,
|
|
||||||
// 勾选列
|
|
||||||
rowSelection: false,
|
|
||||||
// 搜索
|
|
||||||
handleSearchInfoFn(info) {
|
|
||||||
searchParams.value = info;
|
|
||||||
return info;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
|
// 步骤1信息
|
||||||
|
const uploadFormRef = ref();
|
||||||
|
const uploadFromAdd = {
|
||||||
|
serverName: '',
|
||||||
|
spatialRef: '',
|
||||||
|
dataSourceType: '',
|
||||||
|
dataType: '',
|
||||||
|
dataTable: '',
|
||||||
|
shpPath: '',
|
||||||
|
appendPath: '',
|
||||||
|
headers: [] as any,
|
||||||
|
};
|
||||||
|
const uploadFrom = ref(uploadFromAdd);
|
||||||
|
|
||||||
|
// 确认上传的文件类型
|
||||||
|
function isZipOrXls(value) {
|
||||||
const [registerTableDataPreview,{ reloadDataPreview, getSelectRowsDataPreview, clearSelectedRowKeysDataPreview }] = useTable({
|
uploadFrom.value.dataSourceType = value;
|
||||||
// 表格名称
|
if (value === 'shp') {
|
||||||
title: '',
|
items.value = items_shp;
|
||||||
// 获取数据的接口
|
} else if (value === 'excel') {
|
||||||
api: getStatisticalList,
|
items.value = items_excel;
|
||||||
// 表单列信息 BasicColumn[]
|
}
|
||||||
columnsDataPreview,
|
|
||||||
rowKey: 'id',
|
|
||||||
formConfig: {
|
|
||||||
labelWidth: 120,
|
|
||||||
// schemas: searchFormSchema,
|
|
||||||
},
|
|
||||||
// 使用搜索表单
|
|
||||||
useSearchForm: false,
|
|
||||||
// 显示表格设置工具
|
|
||||||
showTableSetting: false,
|
|
||||||
// 是否显示表格边框
|
|
||||||
bordered: true,
|
|
||||||
// 序号列
|
|
||||||
showIndexColumn: false,
|
|
||||||
// 勾选列
|
|
||||||
rowSelection: false,
|
|
||||||
// 搜索
|
|
||||||
handleSearchInfoFn(info) {
|
|
||||||
return info;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
function handleCloseRecordList(){
|
|
||||||
showRecordList.value = false;
|
|
||||||
}
|
|
||||||
function exportList(){
|
|
||||||
createMessage.success("接口待对接!")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 步骤1提交
|
||||||
|
function uploadFormSubmit(value) {
|
||||||
|
uploadFrom.value = value;
|
||||||
|
if (uploadFrom.value.headers) {
|
||||||
|
uploadFrom.value.headers.forEach((item) => {
|
||||||
|
item.refName = item.refName != null ? item.refName.toLowerCase() : item.name.toLowerCase();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
current.value = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 步骤2提交
|
||||||
|
const headersTableRef = ref();
|
||||||
|
function headersTableSubmit(value) {
|
||||||
|
uploadFrom.value.headers = value;
|
||||||
|
if (isEdit) {
|
||||||
|
// 编辑
|
||||||
|
ShpGeoLayerUpdateLayer(uploadFrom.value)
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
if (uploadFrom.value.dataSourceType == 'shp') {
|
||||||
|
current.value = 2;
|
||||||
|
} else if (uploadFrom.value.dataSourceType == 'excel') {
|
||||||
|
current.value = 1;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// 新增
|
||||||
|
ShpGeoLayerAdd(uploadFrom.value)
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
if (uploadFrom.value.dataSourceType == 'shp') {
|
||||||
|
current.value = 2;
|
||||||
|
} else if (uploadFrom.value.dataSourceType == 'excel') {
|
||||||
|
current.value = 1;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 下一步
|
||||||
|
function nextStep() {
|
||||||
|
// 新增状态下的
|
||||||
|
if (!isEdit && uploadFrom.value.dataSourceType == '') {
|
||||||
|
createMessage.warn('请先上传shp文件或者excel文件');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (current.value == 0 && uploadFrom.value.dataSourceType == 'shp') {
|
||||||
|
// uploadFormRef.value.submit1();
|
||||||
|
uploadFormSubmit(defaultData2);
|
||||||
|
} else if (current.value == 0 && uploadFrom.value.dataSourceType == 'excel') {
|
||||||
|
headersTableSubmit([]);
|
||||||
|
} else if (current.value == 1) {
|
||||||
|
headersTableRef.value.submit2();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按键
|
||||||
|
let isEdit: Boolean = false;
|
||||||
|
function onBtnClicked(domId) {
|
||||||
|
switch (domId) {
|
||||||
|
case 'btnAdd':
|
||||||
|
handleCreate();
|
||||||
|
isEdit = false;
|
||||||
|
break;
|
||||||
|
case 'btnEdit':
|
||||||
|
handleEdit();
|
||||||
|
isEdit = true;
|
||||||
|
break;
|
||||||
|
case 'btnDelete':
|
||||||
|
handleDelete();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打开新增弹窗
|
||||||
|
const modalShow = ref<Boolean>(false);
|
||||||
function handleCreate() {
|
function handleCreate() {
|
||||||
addModalShow.value = true;
|
uploadFrom.value = cloneDeep(uploadFromAdd);
|
||||||
}
|
modalShow.value = true;
|
||||||
function viewAccount(record: Recordable) {
|
if (uploadFormRef.value) {
|
||||||
openAccountModal(true, {
|
uploadFormRef.value.clearValidation();
|
||||||
record,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function onEdit(targetKey: string){
|
|
||||||
tablist.splice(parseInt(targetKey),1);
|
|
||||||
if(tablist.length==0){
|
|
||||||
showRecordList.value = false;
|
|
||||||
}
|
}
|
||||||
if(parseInt(targetKey)>1){
|
|
||||||
activeKey.value = (parseInt(targetKey)-1).toString();
|
|
||||||
|
|
||||||
}else{
|
|
||||||
activeKey.value = '0';
|
|
||||||
}
|
|
||||||
currentListQuery.listQuery = tablist[activeKey.value].listQuery
|
|
||||||
}
|
}
|
||||||
|
// 关闭窗口
|
||||||
let currentListQuery = reactive({listQuery:{}});
|
function handleClose() {
|
||||||
|
current.value = 0;
|
||||||
function handleTabChange(e){
|
modalShow.value = false;
|
||||||
currentListQuery.listQuery = tablist[e].listQuery
|
uploadFrom.value = cloneDeep(uploadFromAdd);
|
||||||
|
|
||||||
console.log(currentListQuery)
|
|
||||||
}
|
}
|
||||||
|
// 再次创建
|
||||||
|
function closeAndCreate() {
|
||||||
// function remvoeTab(){
|
current.value = 0;
|
||||||
|
uploadFrom.value = cloneDeep(uploadFromAdd);
|
||||||
// }
|
if (uploadFormRef.value) {
|
||||||
|
uploadFormRef.value.clearValidation();
|
||||||
const tablist = reactive<{streetname:string;label:string;listQuery:searchListSchema}[]>([])
|
}
|
||||||
// 查询条件
|
|
||||||
interface searchListSchema{
|
|
||||||
is_intact?:number;
|
|
||||||
streetid?:number;
|
|
||||||
countyid?:number;
|
|
||||||
identification_start_time?:string;
|
|
||||||
identification_end_time?:string;
|
|
||||||
page?:number;
|
|
||||||
limit?:number;
|
|
||||||
is_deal?:number;
|
|
||||||
is_not_deal_hour24?:number;
|
|
||||||
is_drawback?:number;
|
|
||||||
typeid?:number;
|
|
||||||
is_illegal?:number;
|
|
||||||
is_complete?:number;
|
|
||||||
handle_status_id?:number;
|
|
||||||
out_time_flag?:number;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// const searchForm = reactive<searchListSchema>({
|
|
||||||
|
|
||||||
// })
|
|
||||||
|
|
||||||
function handlePreViewData(column,record:Recordable){
|
|
||||||
|
|
||||||
const searchForm = reactive<searchListSchema>({
|
|
||||||
identification_start_time:searchParams.value?.identification_start_time,
|
|
||||||
identification_end_time:searchParams.value?.identification_end_time,
|
|
||||||
is_intact:1,
|
|
||||||
page:1,
|
|
||||||
limit:10,
|
|
||||||
})
|
|
||||||
|
|
||||||
if(currentOrgLevel.value == 'country'){
|
|
||||||
searchForm.countyid = record.streetid;
|
|
||||||
}else if(currentOrgLevel.value == 'street'){
|
|
||||||
searchForm.streetid = record.streetid;
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log("searchForm",searchForm);
|
|
||||||
|
|
||||||
switch(column.dataIndex){
|
|
||||||
case 'allCount':
|
|
||||||
break;
|
|
||||||
case 'handleStatus':
|
|
||||||
searchForm.is_deal = 1;
|
|
||||||
break;
|
|
||||||
case 'notDealHour24':
|
|
||||||
searchForm.is_not_deal_hour24 = 1;
|
|
||||||
searchForm.is_drawback = 0;
|
|
||||||
break;
|
|
||||||
case 'notDealHour24':
|
|
||||||
searchForm.is_not_deal_hour24 = 1;
|
|
||||||
searchForm.is_drawback = 0;
|
|
||||||
break;
|
|
||||||
case 'typeFanxinCount':
|
|
||||||
searchForm.typeid = record.typeid
|
|
||||||
case 'typeJiagaiCount':
|
|
||||||
searchForm.typeid = record.typeid
|
|
||||||
case 'typeFanjianCount':
|
|
||||||
searchForm.typeid = record.typeid
|
|
||||||
case 'typeCunliangCount':
|
|
||||||
searchForm.typeid = record.typeid
|
|
||||||
case 'typeTuituCount':
|
|
||||||
searchForm.typeid = record.typeid
|
|
||||||
case 'illegal0Count':
|
|
||||||
searchForm.is_illegal = 0;
|
|
||||||
searchForm.is_deal = 1;
|
|
||||||
break;
|
|
||||||
case 'illegal1Count':
|
|
||||||
searchForm.is_illegal = 1;
|
|
||||||
searchForm.is_deal = 1;
|
|
||||||
break;
|
|
||||||
case 'illegal2Count':
|
|
||||||
searchForm.is_illegal = 2;
|
|
||||||
searchForm.is_deal = 1;
|
|
||||||
break;
|
|
||||||
case 'illegal1Count1':
|
|
||||||
searchForm.is_illegal = 1;
|
|
||||||
searchForm.is_deal = 1;
|
|
||||||
break;
|
|
||||||
case 'illegalHandle2Status':
|
|
||||||
searchForm.handle_status_id = 1;
|
|
||||||
searchForm.is_deal = 1;
|
|
||||||
break;
|
|
||||||
case 'illegalHandle01Status':
|
|
||||||
searchForm.is_illegal = 1;
|
|
||||||
searchForm.is_deal = 1;
|
|
||||||
searchForm.is_complete = 0;
|
|
||||||
break;
|
|
||||||
case 'notComplete3':
|
|
||||||
searchForm.is_illegal = 1;
|
|
||||||
searchForm.is_complete = 0;
|
|
||||||
searchForm.out_time_flag = 1;
|
|
||||||
break;
|
|
||||||
case 'notComplete7':
|
|
||||||
searchForm.is_illegal = 1;
|
|
||||||
searchForm.is_complete = 0;
|
|
||||||
searchForm.out_time_flag = 2;
|
|
||||||
break;
|
|
||||||
case 'notComplete30':
|
|
||||||
searchForm.is_illegal = 1;
|
|
||||||
searchForm.is_complete = 0;
|
|
||||||
searchForm.out_time_flag = 4;
|
|
||||||
break;
|
|
||||||
case 'notComplete30More':
|
|
||||||
searchForm.is_illegal = 1;
|
|
||||||
searchForm.is_complete = 0;
|
|
||||||
searchForm.out_time_flag = 5;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
let tabItem = {
|
|
||||||
streetname:record.streetname,
|
|
||||||
label:column.title,
|
|
||||||
listQuery:searchForm,
|
|
||||||
}
|
|
||||||
|
|
||||||
tablist.push(tabItem)
|
|
||||||
activeKey.value = tablist.length > 1 ? (tablist.length-1).toString() : '0';
|
|
||||||
|
|
||||||
showRecordList.value = true;
|
|
||||||
currentListQuery.listQuery = searchForm
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取下级行政结构案件统计
|
|
||||||
function getOrgCaseList(column,record:Recordable){
|
|
||||||
|
|
||||||
if(currentOrgLevel.value == 'country'){
|
|
||||||
currentOrgLevel.value = 'street'
|
|
||||||
}else if(currentOrgLevel.value == 'street'){
|
|
||||||
currentOrgLevel.value = 'country'
|
|
||||||
}
|
|
||||||
searchInfo.countyid = record.streetid;
|
|
||||||
console.log("searchInfo",searchInfo);
|
|
||||||
reload();
|
|
||||||
console.log("searchInfo",searchInfo);
|
|
||||||
}
|
|
||||||
function handleCloseAllRecordList(){
|
|
||||||
for(let i=0;i<tablist.length;i++){
|
|
||||||
tablist.pop();
|
|
||||||
}
|
|
||||||
showRecordList.value = false;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// 编辑
|
||||||
function handleEdit() {
|
function handleEdit() {
|
||||||
let rows = getSelectRows();
|
let rows: any = getSelectRows();
|
||||||
if (rows.length == 0) {
|
if (rows.length == 0) {
|
||||||
return createMessage.warn('请勾选一个角色进行编辑');
|
return createMessage.warn('请勾选一个图层进行编辑');
|
||||||
}
|
}
|
||||||
const record = rows[0];
|
uploadFrom.value = rows[0];
|
||||||
openRoleModal(true, {
|
isZipOrXls(uploadFrom.value.dataSourceType);
|
||||||
record,
|
modalShow.value = true;
|
||||||
isUpdate: true,
|
current.value = 0;
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
// 删除
|
||||||
async function handleDelete() {
|
async function handleDelete() {
|
||||||
let rows = getSelectRows();
|
let rows = getSelectRows();
|
||||||
if (rows.length == 0) {
|
if (rows.length == 0) {
|
||||||
return createMessage.warn('请勾选一个角色进行删除');
|
return createMessage.warn('请勾选一个图层进行删除');
|
||||||
}
|
}
|
||||||
const query = [rows[0].id];
|
const query = { id: rows[0].id };
|
||||||
createConfirm({
|
createConfirm({
|
||||||
iconType: 'info',
|
iconType: 'info',
|
||||||
title: '删除',
|
title: '删除',
|
||||||
content: '确定要删除当前角色吗',
|
content: '确定要删除当前图层吗?',
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
const data = await deleteRole(query);
|
const data = await ShpGeoLayerDelete(query);
|
||||||
if (data) {
|
if (data) {
|
||||||
handleSuccess();
|
handleSuccess();
|
||||||
createMessage.success('删除成功');
|
createMessage.success('删除成功');
|
||||||
|
|
@ -545,135 +313,20 @@
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// 刷新表格
|
||||||
function handlePrint(){
|
|
||||||
printOpen.value = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 直接下载接口返回的二进制流
|
|
||||||
|
|
||||||
function handleExport(){
|
|
||||||
let params = {...searchParams.value}
|
|
||||||
params.countyid = searchInfo?.countyid;
|
|
||||||
axios({
|
|
||||||
method:"post",
|
|
||||||
url:VITE_GLOB_API_URL+"/api/DroneCaseinfo/ExportCaseSynthesisCensusStreet",
|
|
||||||
params:params,
|
|
||||||
headers:{
|
|
||||||
"X-Token":localStorage.getItem("X-Token")
|
|
||||||
},
|
|
||||||
responseType:"blob"
|
|
||||||
}).then(res=>{
|
|
||||||
console.log("excel",res);
|
|
||||||
let fileName = "统计报表" + new Date().getTime() + ".xls";
|
|
||||||
const elink = document.createElement('a')
|
|
||||||
elink.download = fileName;
|
|
||||||
elink.style.display = 'none'
|
|
||||||
elink.href = URL.createObjectURL(res.data)
|
|
||||||
document.body.appendChild(elink)
|
|
||||||
elink.click()
|
|
||||||
URL.revokeObjectURL(elink.href)
|
|
||||||
document.body.removeChild(elink)
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleExcelDownload(data) {
|
|
||||||
// 将二进制数据转换为Excel文件
|
|
||||||
const workbook = XLSX.read(data, { type: 'array' });
|
|
||||||
|
|
||||||
// 可以进一步处理workbook对象,例如提取工作表数据等
|
|
||||||
const firstSheetName = workbook.SheetNames[0];
|
|
||||||
const worksheet = workbook.Sheets[firstSheetName];
|
|
||||||
const excelData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
|
|
||||||
|
|
||||||
console.log('Excel Data:', excelData);
|
|
||||||
|
|
||||||
// 下载Excel文件
|
|
||||||
XLSX.writeFile(workbook, 'example.xlsx');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function handleSuccess() {
|
function handleSuccess() {
|
||||||
clearSelectedRowKeys();
|
clearSelectedRowKeys();
|
||||||
reload();
|
reload();
|
||||||
reloadDataPreview();
|
|
||||||
}
|
|
||||||
|
|
||||||
function onBtnClicked(domId) {
|
|
||||||
switch (domId) {
|
|
||||||
case 'btnBack':
|
|
||||||
currentOrgLevel.value = 'street'
|
|
||||||
getOrgCaseList({},{streetid:null});
|
|
||||||
break;
|
|
||||||
case 'btnAdd':
|
|
||||||
handleCreate();
|
|
||||||
break;
|
|
||||||
case 'btnEdit':
|
|
||||||
handleEdit();
|
|
||||||
break;
|
|
||||||
case 'btnDelete':
|
|
||||||
handleDelete();
|
|
||||||
break;
|
|
||||||
case 'btnModules':
|
|
||||||
let rows = getSelectRows();
|
|
||||||
if (rows.length == 0) {
|
|
||||||
return createMessage.warn('请勾选一个角色进行编辑');
|
|
||||||
}
|
|
||||||
const record = rows[0];
|
|
||||||
openModulesModal(true, {
|
|
||||||
record,
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case 'btnPrint':
|
|
||||||
handlePrint();
|
|
||||||
break;
|
|
||||||
case 'btnExport':
|
|
||||||
handleExport();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style lang="less" scoped>
|
||||||
.map-outer{
|
.content {
|
||||||
width:100%;
|
padding: 20px;
|
||||||
height: calc( 100vh - 80px);
|
}
|
||||||
}
|
|
||||||
.data-preview-container{
|
|
||||||
width:100%;
|
|
||||||
height: calc( 100% - 0px);
|
|
||||||
position:absolute;
|
|
||||||
padding:30px 10px;
|
|
||||||
top:0px;
|
|
||||||
left:0px;
|
|
||||||
background:#fff;
|
|
||||||
}
|
|
||||||
.data-preview-container-option{
|
|
||||||
width:120px;
|
|
||||||
height: 40px;
|
|
||||||
position:absolute;
|
|
||||||
top:30px;
|
|
||||||
right:0px;
|
|
||||||
}
|
|
||||||
.data-preview-container-option div{
|
|
||||||
width:40px;
|
|
||||||
height:40px;
|
|
||||||
line-height:40px;
|
|
||||||
float:left;
|
|
||||||
text-align: center;
|
|
||||||
cursor:pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content{
|
.current1 {
|
||||||
padding:20px;
|
margin-top: 30px;
|
||||||
}
|
display: flex;
|
||||||
|
width: 800px;
|
||||||
.upload-div{
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.upload-span{
|
|
||||||
margin:30px auto;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ export const columnsDataPreview: BasicColumn[] = [
|
||||||
|
|
||||||
export const columns: BasicColumn[] = [
|
export const columns: BasicColumn[] = [
|
||||||
{
|
{
|
||||||
title: '案件编号',
|
title: '图斑编号',
|
||||||
dataIndex: 'case_no',
|
dataIndex: 'case_no',
|
||||||
width: 120,
|
width: 120,
|
||||||
}
|
}
|
||||||
|
|
@ -154,7 +154,7 @@ export const columns: BasicColumn[] = [
|
||||||
dataIndex: 'communityname',
|
dataIndex: 'communityname',
|
||||||
width: 120,
|
width: 120,
|
||||||
},{
|
},{
|
||||||
title: '案件描述',
|
title: '图斑描述',
|
||||||
dataIndex: 'case_description',
|
dataIndex: 'case_description',
|
||||||
width: 120,
|
width: 120,
|
||||||
},{
|
},{
|
||||||
|
|
@ -179,7 +179,7 @@ export const columns: BasicColumn[] = [
|
||||||
dataIndex: 'verifytime',
|
dataIndex: 'verifytime',
|
||||||
width: 120,
|
width: 120,
|
||||||
},{
|
},{
|
||||||
title: '案件状态',
|
title: '图斑状态',
|
||||||
dataIndex: 'handle_status_name',
|
dataIndex: 'handle_status_name',
|
||||||
width: 120,
|
width: 120,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -149,6 +149,7 @@
|
||||||
v-model:current="pageNumber"
|
v-model:current="pageNumber"
|
||||||
v-model:pageSize="pageSizeNumber"
|
v-model:pageSize="pageSizeNumber"
|
||||||
:total="total"
|
:total="total"
|
||||||
|
:show-total="total => `共 ${total} 条数据`"
|
||||||
show-size-changer
|
show-size-changer
|
||||||
show-quick-jumper
|
show-quick-jumper
|
||||||
@change="changePagination"
|
@change="changePagination"
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,10 @@
|
||||||
:label-col="labelCol"
|
:label-col="labelCol"
|
||||||
:wrapper-col="wrapperCol"
|
:wrapper-col="wrapperCol"
|
||||||
>
|
>
|
||||||
<a-form-item label="案件编号" name="case_no">
|
<a-form-item label="图斑编号" name="case_no">
|
||||||
<a-input v-model:value="formState.case_no" disabled />
|
<a-input v-model:value="formState.case_no" disabled />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="案件描述" name="case_description">
|
<a-form-item label="图斑描述" name="case_description">
|
||||||
<a-input v-model:value="formState.case_description" disabled />
|
<a-input v-model:value="formState.case_description" disabled />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="县区" name="countyid">
|
<a-form-item label="县区" name="countyid">
|
||||||
|
|
@ -36,14 +36,14 @@
|
||||||
@change="handleStreetChange"
|
@change="handleStreetChange"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- <a-form-item label="村/社区" name="communityid">
|
<a-form-item label="村/社区" name="communityid">
|
||||||
<a-select
|
<a-select
|
||||||
v-model:value="formState.communityid"
|
v-model:value="formState.communityid"
|
||||||
:options="data.communityOptions"
|
:options="data.communityOptions"
|
||||||
:field-names="{ label: 'name', value: 'id' }"
|
:field-names="{ label: 'name', value: 'id' }"
|
||||||
@change="handleCommunityChange"
|
@change="handleCommunityChange"
|
||||||
/>
|
/>
|
||||||
</a-form-item> -->
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
|
|
||||||
|
|
@ -61,10 +61,10 @@
|
||||||
:label-col="labelCol"
|
:label-col="labelCol"
|
||||||
:wrapper-col="wrapperCol"
|
:wrapper-col="wrapperCol"
|
||||||
>
|
>
|
||||||
<a-form-item label="案件编号" name="case_no">
|
<a-form-item label="图斑编号" name="case_no">
|
||||||
<a-input v-model:value="formState.case_no" disabled />
|
<a-input v-model:value="formState.case_no" disabled />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="案件描述" name="case_description">
|
<a-form-item label="图斑描述" name="case_description">
|
||||||
<a-input v-model:value="formState.case_description" disabled />
|
<a-input v-model:value="formState.case_description" disabled />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="县区" name="countyid">
|
<a-form-item label="县区" name="countyid">
|
||||||
|
|
@ -84,14 +84,14 @@
|
||||||
@change="handleStreetChange"
|
@change="handleStreetChange"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- <a-form-item label="村/社区" name="communityid">
|
<a-form-item label="村/社区" name="communityid">
|
||||||
<a-select
|
<a-select
|
||||||
v-model:value="formState.communityid"
|
v-model:value="formState.communityid"
|
||||||
:options="data.communityOptions"
|
:options="data.communityOptions"
|
||||||
:field-names="{ label: 'name', value: 'id' }"
|
:field-names="{ label: 'name', value: 'id' }"
|
||||||
@change="handleCommunityChange"
|
@change="handleCommunityChange"
|
||||||
/>
|
/>
|
||||||
</a-form-item> -->
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -123,12 +123,12 @@
|
||||||
const rules = ref({
|
const rules = ref({
|
||||||
countyid: [{ required: true, message: '县区不能为空', trigger: 'blur' }],
|
countyid: [{ required: true, message: '县区不能为空', trigger: 'blur' }],
|
||||||
streetid: [{ required: true, message: '乡镇不能为空', trigger: 'blur' }],
|
streetid: [{ required: true, message: '乡镇不能为空', trigger: 'blur' }],
|
||||||
// communityid: [{ required: true, message: '村/社区不能为空', trigger: 'blur' }],
|
communityid: [{ required: true, message: '村/社区不能为空', trigger: 'blur' }],
|
||||||
});
|
});
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
countyOptions: [],
|
countyOptions: [],
|
||||||
streetOptions: [],
|
streetOptions: [],
|
||||||
// communityOptions: [],
|
communityOptions: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
|
|
@ -157,19 +157,20 @@
|
||||||
data.streetOptions = res;
|
data.streetOptions = res;
|
||||||
});
|
});
|
||||||
formState.value.streetid = '';
|
formState.value.streetid = '';
|
||||||
// formState.value.communityid = '';
|
formState.value.communityid = '';
|
||||||
}
|
}
|
||||||
async function handleStreetChange(value, option) {
|
async function handleStreetChange(value, option) {
|
||||||
formState.value.streetid = value;
|
formState.value.streetid = value;
|
||||||
formState.value.streetname = option.name;
|
formState.value.streetname = option.name;
|
||||||
// getOptions(value).then((res) => {
|
getOptions(value).then((res) => {
|
||||||
// data.communityOptions = res;
|
data.communityOptions = res;
|
||||||
// });
|
});
|
||||||
|
formState.value.communityid = '';
|
||||||
|
}
|
||||||
|
async function handleCommunityChange(value, option) {
|
||||||
|
formState.value.communityid = value;
|
||||||
|
formState.value.communityname = option.name;
|
||||||
}
|
}
|
||||||
// async function handleCommunityChange(value, option) {
|
|
||||||
// formState.value.communityid = value;
|
|
||||||
// formState.value.communityname = option.name;
|
|
||||||
// }
|
|
||||||
async function getOptions(value) {
|
async function getOptions(value) {
|
||||||
const data = await getChildrenTree({
|
const data = await getChildrenTree({
|
||||||
parentId: value,
|
parentId: value,
|
||||||
|
|
@ -192,9 +193,9 @@
|
||||||
data.streetOptions = res;
|
data.streetOptions = res;
|
||||||
});
|
});
|
||||||
// 获取村/社区数据
|
// 获取村/社区数据
|
||||||
// getOptions(formState.value.streetid).then((res) => {
|
getOptions(formState.value.streetid).then((res) => {
|
||||||
// data.communityOptions = res;
|
data.communityOptions = res;
|
||||||
// });
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function handlerCloseModal() {
|
function handlerCloseModal() {
|
||||||
|
|
@ -211,8 +212,8 @@
|
||||||
countyname: formState.value.countyname,
|
countyname: formState.value.countyname,
|
||||||
streetid: formState.value.streetid,
|
streetid: formState.value.streetid,
|
||||||
streetname: formState.value.streetname,
|
streetname: formState.value.streetname,
|
||||||
// communityid: formState.value.communityid,
|
communityid: formState.value.communityid,
|
||||||
// communityname: formState.value.communityname,
|
communityname: formState.value.communityname,
|
||||||
};
|
};
|
||||||
console.log(querys);
|
console.log(querys);
|
||||||
const data = await updateDroneCaseInfo(querys);
|
const data = await updateDroneCaseInfo(querys);
|
||||||
|
|
|
||||||
|
|
@ -220,6 +220,7 @@
|
||||||
v-model:pageSize="pageSize"
|
v-model:pageSize="pageSize"
|
||||||
v-model:current="pageNo"
|
v-model:current="pageNo"
|
||||||
:total="total"
|
:total="total"
|
||||||
|
:show-total="total => `共 ${total} 条数据`"
|
||||||
show-size-changer
|
show-size-changer
|
||||||
show-quick-jumper
|
show-quick-jumper
|
||||||
@change="changePage"
|
@change="changePage"
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
<a-descriptions-item label="备注">{{ remark }}</a-descriptions-item>
|
<a-descriptions-item label="备注">{{ remark }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="经度">{{ lng }}</a-descriptions-item>
|
<a-descriptions-item label="经度">{{ lng }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="纬度">{{ lat }}</a-descriptions-item>
|
<a-descriptions-item label="纬度">{{ lat }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="下发时间">{{ createtime }}</a-descriptions-item>
|
<a-descriptions-item label="下发时间">{{ synchronoustime }}</a-descriptions-item>
|
||||||
<a-descriptions-item label="图斑照片">
|
<a-descriptions-item label="图斑照片">
|
||||||
<div class="image-div">
|
<div class="image-div">
|
||||||
<a-image-preview-group
|
<a-image-preview-group
|
||||||
|
|
@ -480,6 +480,7 @@
|
||||||
hexiaotime,
|
hexiaotime,
|
||||||
wrjffzhaopian,
|
wrjffzhaopian,
|
||||||
xchczhaopian,
|
xchczhaopian,
|
||||||
|
synchronoustime,
|
||||||
} = props.showInfoData;
|
} = props.showInfoData;
|
||||||
|
|
||||||
const imageList = ref([])
|
const imageList = ref([])
|
||||||
|
|
|
||||||
|
|
@ -110,11 +110,11 @@
|
||||||
<div :style="`${showSortMark('gengdi_area',2)? 'color: #086DEC;': ''}`">▼</div>
|
<div :style="`${showSortMark('gengdi_area',2)? 'color: #086DEC;': ''}`">▼</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sift-item" @click="dataListSort('createtime')">
|
<div class="sift-item" @click="dataListSort('synchronoustime')">
|
||||||
<div class="sift-label">下发时间</div>
|
<div class="sift-label">下发时间</div>
|
||||||
<div class="sift-icon">
|
<div class="sift-icon">
|
||||||
<div :style="`${showSortMark('createtime',1)? 'color: #086DEC;': ''}`">▲</div>
|
<div :style="`${showSortMark('synchronoustime',1)? 'color: #086DEC;': ''}`">▲</div>
|
||||||
<div :style="`${showSortMark('createtime',2)? 'color: #086DEC;': ''}`">▼</div>
|
<div :style="`${showSortMark('synchronoustime',2)? 'color: #086DEC;': ''}`">▼</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -232,6 +232,7 @@
|
||||||
v-model:pageSize="props.pageSize"
|
v-model:pageSize="props.pageSize"
|
||||||
v-model:current="props.pageNo"
|
v-model:current="props.pageNo"
|
||||||
:total="props.total"
|
:total="props.total"
|
||||||
|
:show-total="total => `共 ${total} 条数据`"
|
||||||
show-size-changer
|
show-size-changer
|
||||||
show-quick-jumper
|
show-quick-jumper
|
||||||
@change="changePage" />
|
@change="changePage" />
|
||||||
|
|
|
||||||
|
|
@ -440,7 +440,6 @@
|
||||||
|
|
||||||
footerStyle.value.width = mapConfig.value?.isShowMap ? '100%' : '60%';
|
footerStyle.value.width = mapConfig.value?.isShowMap ? '100%' : '60%';
|
||||||
if (mapConfig.value?.isShowMap) {
|
if (mapConfig.value?.isShowMap) {
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
currentNode = auditNode;
|
currentNode = auditNode;
|
||||||
|
|
@ -687,6 +686,15 @@
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
// 有表单先提交表单数据
|
// 有表单先提交表单数据
|
||||||
|
if (btn.code == 'disagree') {
|
||||||
|
if (!formData.value.des) {
|
||||||
|
createMessage.warning('请填写驳回意见');
|
||||||
|
btnVisble.value = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
btnVisble.value = false;
|
||||||
|
}
|
||||||
if (formVisble.value) {
|
if (formVisble.value) {
|
||||||
var querys = {
|
var querys = {
|
||||||
schemeId: designerData.formCurrentNode.formVerison,
|
schemeId: designerData.formCurrentNode.formVerison,
|
||||||
|
|
@ -694,12 +702,15 @@
|
||||||
pkey: instanceInfo.pkey,
|
pkey: instanceInfo.pkey,
|
||||||
pkeyValue: instanceInfo.pkeyValue,
|
pkeyValue: instanceInfo.pkeyValue,
|
||||||
};
|
};
|
||||||
formBoxRef.value
|
await formBoxRef.value
|
||||||
.getForm()
|
.getForm()
|
||||||
.then(async (res) => {
|
.then(async (res) => {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
if (!res) {
|
if (!res) {
|
||||||
|
console.log('无语无语');
|
||||||
createMessage.error('请检查表单必填项');
|
createMessage.error('请检查表单必填项');
|
||||||
|
btnVisble.value = true;
|
||||||
|
return false;
|
||||||
} else {
|
} else {
|
||||||
res[designerData.formCurrentNode.formRelationId] = instanceInfo.pkeyValue;
|
res[designerData.formCurrentNode.formRelationId] = instanceInfo.pkeyValue;
|
||||||
for (var item in res) {
|
for (var item in res) {
|
||||||
|
|
@ -710,13 +721,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
console.log('审核提交');
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
querys.data = JSON.stringify(res);
|
querys.data = JSON.stringify(res);
|
||||||
const formValue = await functionsaveForm(querys);
|
const formValue = await functionsaveForm(querys);
|
||||||
if (formValue) {
|
if (formValue) {
|
||||||
if(btn.code == 'zancun'){
|
if (btn.code == 'zancun') {
|
||||||
createMessage.success('暂存成功');
|
createMessage.success('暂存成功');
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
handleSubmit(btn);
|
handleSubmit(btn);
|
||||||
}
|
}
|
||||||
|
|
@ -792,6 +804,7 @@
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
async function auditFun() {
|
async function auditFun() {
|
||||||
|
btnVisble.value = false;
|
||||||
// 获取接下来节点审核人
|
// 获取接下来节点审核人
|
||||||
if (designerData.currentBtn.isNextAuditor) {
|
if (designerData.currentBtn.isNextAuditor) {
|
||||||
const res = await getLoadNextAuditors({
|
const res = await getLoadNextAuditors({
|
||||||
|
|
@ -830,6 +843,7 @@
|
||||||
closePage();
|
closePage();
|
||||||
return createMessage.success('成功');
|
return createMessage.success('成功');
|
||||||
} else {
|
} else {
|
||||||
|
btnVisble.value = true;
|
||||||
return createMessage.error('失败');
|
return createMessage.error('失败');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -963,6 +977,7 @@
|
||||||
btnVisble.value = false;
|
btnVisble.value = false;
|
||||||
return createMessage.success('成功');
|
return createMessage.success('成功');
|
||||||
} else {
|
} else {
|
||||||
|
btnVisble.value = true;
|
||||||
return createMessage.error('失败');
|
return createMessage.error('失败');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -997,10 +1012,7 @@
|
||||||
getTaskInfo();
|
getTaskInfo();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function onFormContainerMouseOver(event) {}
|
||||||
function onFormContainerMouseOver(event){
|
|
||||||
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
::v-deep .ant-tabs-nav-wrap {
|
::v-deep .ant-tabs-nav-wrap {
|
||||||
|
|
|
||||||
|
|
@ -6,21 +6,22 @@
|
||||||
src="/subject_lindidiaocha/top.png"
|
src="/subject_lindidiaocha/top.png"
|
||||||
:style="{
|
:style="{
|
||||||
width: '100%',
|
width: '100%',
|
||||||
height: `${114 * bi}px`,
|
height: `${116 * bi}px`,
|
||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
class="subject_top_title"
|
class="subject_top_title"
|
||||||
:style="{
|
:style="{
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
top: `${-124 * bi}px`,
|
top: `${-116 * bi}px`,
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
:style="{
|
:style="{
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
fontSize: `${58 * bi}px`,
|
fontSize: `${55 * bi}px`,
|
||||||
height: `${114 * bi}px`,
|
top: `${-20 * bi}px`,
|
||||||
|
height: `${116 * bi}px`,
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
|
|
@ -40,7 +41,7 @@
|
||||||
class="subject_top_currentTime"
|
class="subject_top_currentTime"
|
||||||
:style="{
|
:style="{
|
||||||
left: `${87 * bi}px`,
|
left: `${87 * bi}px`,
|
||||||
top: `${4 * bi}px`,
|
top: `${0 * bi}px`,
|
||||||
height: `${40 * bi}px`,
|
height: `${40 * bi}px`,
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
|
|
@ -55,13 +56,16 @@
|
||||||
<div
|
<div
|
||||||
class="subject_top_adminAndLogout"
|
class="subject_top_adminAndLogout"
|
||||||
:style="{
|
:style="{
|
||||||
right: `${87 * bi}px`,
|
right: `${40 * bi}px`,
|
||||||
top: `${4 * bi}px`,
|
top: `${0 * bi}px`,
|
||||||
height: `${40 * bi}px`,
|
height: `${40 * bi}px`,
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<span class="loginUser"> {{ loginUser }} {{ t('sys.subject.header_admin') }}</span>
|
<span class="loginUser"> {{ loginUser }} {{ t('sys.subject.header_admin') }}</span>
|
||||||
|
|
||||||
|
<img src="/subject_lindidiaocha/setting.png" @click="getHome(setting)" />
|
||||||
|
|
||||||
|
<span class="line" @click="getHome(setting)"> {{ setting.title }} </span>
|
||||||
<span class="line"> | </span>
|
<span class="line"> | </span>
|
||||||
|
|
||||||
<img src="/subject_lindidiaocha/logout.png" @click="handleLoginOut()" />
|
<img src="/subject_lindidiaocha/logout.png" @click="handleLoginOut()" />
|
||||||
|
|
@ -101,7 +105,7 @@
|
||||||
marginBottom: `${10 * bi}px`,
|
marginBottom: `${10 * bi}px`,
|
||||||
height: `${300 * bi}px`,
|
height: `${300 * bi}px`,
|
||||||
width: `${210 * bi}px`,
|
width: `${210 * bi}px`,
|
||||||
'background-image': `url(${item.isHover ? '/subject_lindidiaocha/btn_2.png' : '/subject_lindidiaocha/btn_1.png'})`,
|
'background-image': `url(${item.isHover ? '/subject_lindidiaocha/btn_2.webp' : '/subject_lindidiaocha/btn_1.webp'})`,
|
||||||
'background-size': `${100}%`,
|
'background-size': `${100}%`,
|
||||||
'background-repeat': 'no-repeat',
|
'background-repeat': 'no-repeat',
|
||||||
}"
|
}"
|
||||||
|
|
@ -110,24 +114,32 @@
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
class="subject_box_btn_div_img"
|
class="subject_box_btn_div_img"
|
||||||
src="/subject_lindidiaocha/line.png"
|
:src="
|
||||||
|
item.isHover
|
||||||
|
? '/subject_lindidiaocha/line1_hover.webp'
|
||||||
|
: '/subject_lindidiaocha/line1.webp'
|
||||||
|
"
|
||||||
:style="{
|
:style="{
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
display: 'block',
|
display: 'block',
|
||||||
top: `${(200 - ((fotSize + 3) / 2) * getWrap(item.title)) * bi}px`,
|
top: `${(200 - ((fotSize + 3) / 2) * getWrap(item.title)) * bi}px`,
|
||||||
left: `${45 * bi}px`,
|
left: `${25 * bi}px`,
|
||||||
width: `${120 * bi}px`,
|
width: `${160 * bi}px`,
|
||||||
height: `${7 * bi}px`,
|
height: `${3 * bi}px`,
|
||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
<img
|
<img
|
||||||
class="subject_box_btn_div_img"
|
class="subject_box_btn_div_img"
|
||||||
src="/subject_lindidiaocha/line.png"
|
:src="
|
||||||
|
item.isHover
|
||||||
|
? '/subject_lindidiaocha/line2_hover.webp'
|
||||||
|
: '/subject_lindidiaocha/line2.webp'
|
||||||
|
"
|
||||||
:style="{
|
:style="{
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
top: `${(180 + ((fotSize + 3) / 2) * (getWrap(item.title) + 1)) * bi}px`,
|
top: `${(180 + ((fotSize + 3) / 2) * (getWrap(item.title) + 1)) * bi}px`,
|
||||||
width: `${120 * bi}px`,
|
width: `${160 * bi}px`,
|
||||||
height: `${7 * bi}px`,
|
height: `${3 * bi}px`,
|
||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
<span
|
<span
|
||||||
|
|
@ -140,41 +152,53 @@
|
||||||
height: `${(fotSize + 3) * spanWrap * bi}px`,
|
height: `${(fotSize + 3) * spanWrap * bi}px`,
|
||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
|
<img
|
||||||
|
src="/subject_lindidiaocha/nochoose.webp"
|
||||||
|
:style="{
|
||||||
|
display: 'block',
|
||||||
|
position: 'relative',
|
||||||
|
top: `${(20 - fotSize * spanWrap) * bi}px`,
|
||||||
|
left: `${55 * bi}px`,
|
||||||
|
width: `${100 * bi}px`,
|
||||||
|
height: `${100 * bi}px`,
|
||||||
|
zIndex: 2,
|
||||||
|
}"
|
||||||
|
/>
|
||||||
<img
|
<img
|
||||||
:src="getImageUrl(item.imgUrl)"
|
:src="getImageUrl(item.imgUrl)"
|
||||||
:style="{
|
:style="{
|
||||||
display: 'block',
|
display: 'block',
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
top: `${20 - fotSize * spanWrap * bi}px`,
|
top: `${(-55 - fotSize * spanWrap) * bi}px`,
|
||||||
left: `${50 * bi}px`,
|
left: `${75 * bi}px`,
|
||||||
width: `${110 * bi}px`,
|
width: `${60 * bi}px`,
|
||||||
height: `${110 * bi}px`,
|
height: `${58 * bi}px`,
|
||||||
zIndex: 1,
|
zIndex: 3,
|
||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
<img
|
<img
|
||||||
v-show="item.isHover"
|
v-show="item.isHover"
|
||||||
src="/subject_lindidiaocha/choose.png"
|
src="/subject_lindidiaocha/choose.webp"
|
||||||
:style="{
|
:style="{
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
top: `${(-80 - fotSize * spanWrap) * bi}px`,
|
top: `${(-127 - fotSize * spanWrap) * bi}px`,
|
||||||
width: `${80 * bi}px`,
|
width: `${70 * bi}px`,
|
||||||
height: `${90 * bi}px`,
|
height: `${75 * bi}px`,
|
||||||
zIndex: 2,
|
zIndex: 4,
|
||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="subject_bottom">
|
<div class="subject_bottom">
|
||||||
<img src="/subject_lindidiaocha/bottom.png" />
|
<img src="/subject_lindidiaocha/bottom.webp" />
|
||||||
<span>
|
<span>
|
||||||
{{
|
{{
|
||||||
VITE_GLOB_APP_MANAGEMENT_UNIT
|
VITE_GLOB_APP_MANAGEMENT_UNIT
|
||||||
? VITE_GLOB_APP_MANAGEMENT_UNIT
|
? VITE_GLOB_APP_MANAGEMENT_UNIT
|
||||||
: t('sys.subject.bottom_copyright_lindidiaocha')
|
: t('sys.subject.bottom_copyright_lindidiaocha')
|
||||||
}}
|
}}
|
||||||
|
|
||||||
{{
|
{{
|
||||||
VITE_GLOB_APP_TECHINICAL_SUPPORT
|
VITE_GLOB_APP_TECHINICAL_SUPPORT
|
||||||
? VITE_GLOB_APP_TECHINICAL_SUPPORT
|
? VITE_GLOB_APP_TECHINICAL_SUPPORT
|
||||||
|
|
@ -209,14 +233,20 @@
|
||||||
const list: any = ref([]);
|
const list: any = ref([]);
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const spanWrap = ref(1);
|
const spanWrap = ref(1);
|
||||||
|
const setting = ref({});
|
||||||
|
|
||||||
async function getData() {
|
async function getData() {
|
||||||
const res: any = await getSpecialData();
|
const res: any = await getSpecialData();
|
||||||
// 最大标题文字行数
|
// 最大标题文字行数
|
||||||
res?.forEach((item) => {
|
res?.forEach((item, index) => {
|
||||||
res.isHover = false;
|
if (item.title == '系统管理') {
|
||||||
if (Math.ceil(item.title.length / 6) > spanWrap.value) {
|
setting.value = item;
|
||||||
spanWrap.value = Math.ceil(item.title.length / 6);
|
res.splice(index, 1);
|
||||||
|
} else {
|
||||||
|
res.isHover = false;
|
||||||
|
if (Math.ceil(item.title.length / 6) > spanWrap.value) {
|
||||||
|
spanWrap.value = Math.ceil(item.title.length / 6);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
list.value = res;
|
list.value = res;
|
||||||
|
|
@ -276,42 +306,7 @@
|
||||||
box[1] = 40;
|
box[1] = 40;
|
||||||
box[2] = 700;
|
box[2] = 700;
|
||||||
box[3] = 1840;
|
box[3] = 1840;
|
||||||
box[4] = 10;
|
box[4] = 20;
|
||||||
// if (list.value.length <= 7) {
|
|
||||||
// box[0] = 80;
|
|
||||||
// box[1] = 85;
|
|
||||||
// box[2] = 700;
|
|
||||||
// box[3] = 1750;
|
|
||||||
// box[4] = 12;
|
|
||||||
// }
|
|
||||||
// if (list.value.length == 8) {
|
|
||||||
// box[0] = 80;
|
|
||||||
// box[1] = 185;
|
|
||||||
// box[2] = 700;
|
|
||||||
// box[3] = 1550;
|
|
||||||
// box[4] = 50;
|
|
||||||
// }
|
|
||||||
// if (list.value.length == 9 || list.value.length == 10) {
|
|
||||||
// box[0] = 80;
|
|
||||||
// box[1] = 135;
|
|
||||||
// box[2] = 700;
|
|
||||||
// box[3] = 1650;
|
|
||||||
// box[4] = 50;
|
|
||||||
// }
|
|
||||||
// if (list.value.length == 11 || list.value.length == 12) {
|
|
||||||
// box[0] = 80;
|
|
||||||
// box[1] = 85;
|
|
||||||
// box[2] = 700;
|
|
||||||
// box[3] = 1750;
|
|
||||||
// box[4] = 30;
|
|
||||||
// }
|
|
||||||
// if (list.value.length == 13 || list.value.length == 14) {
|
|
||||||
// box[0] = 80;
|
|
||||||
// box[1] = 85;
|
|
||||||
// box[2] = 700;
|
|
||||||
// box[3] = 1750;
|
|
||||||
// box[4] = 12;
|
|
||||||
// }
|
|
||||||
return box;
|
return box;
|
||||||
}
|
}
|
||||||
const updateWindowSize = () => {
|
const updateWindowSize = () => {
|
||||||
|
|
@ -352,7 +347,7 @@
|
||||||
</script>
|
</script>
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.subject {
|
.subject {
|
||||||
background-image: url('/subject_lindidiaocha/bg.png');
|
background-image: url('/subject_lindidiaocha/bg.webp');
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: center;
|
background-position: center;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
|
|
@ -375,9 +370,7 @@
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
// 字体样式
|
|
||||||
font-family: Alimama ShuHeiTi;
|
font-family: Alimama ShuHeiTi;
|
||||||
// font-size: 58px;
|
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
// text-shadow: 0px 2px 3px rgba(0, 0, 0, 0.25);
|
// text-shadow: 0px 2px 3px rgba(0, 0, 0, 0.25);
|
||||||
background: linear-gradient(268deg, #f8fbff 0%, #ffffff 100%);
|
background: linear-gradient(268deg, #f8fbff 0%, #ffffff 100%);
|
||||||
|
|
@ -450,7 +443,8 @@
|
||||||
|
|
||||||
.line {
|
.line {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -2px;
|
top: 0px;
|
||||||
|
font-size: 18px;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -460,14 +454,14 @@
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 93%;
|
height: 93%;
|
||||||
bottom: 10px;
|
bottom: 10px;
|
||||||
left: 0px;
|
left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&_right {
|
&_right {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 93%;
|
height: 93%;
|
||||||
bottom: 10px;
|
bottom: 10px;
|
||||||
right: 0px;
|
right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&_box {
|
&_box {
|
||||||
|
|
@ -524,9 +518,13 @@
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
// 字体样式
|
// 字体样式
|
||||||
font-family: Microsoft YaHei;
|
font-family: Alimama ShuHeiTi;
|
||||||
color: #ffffff !important;
|
font-weight: bold;
|
||||||
background: linear-gradient(0deg, #6da7ff 0%, #e2ebff 100%);
|
font-size: 23px;
|
||||||
|
color: #ffffff;
|
||||||
|
line-height: 15px;
|
||||||
|
// text-shadow: 0px 2px 6px rgba(10, 30, 52, 0.48);
|
||||||
|
background: linear-gradient(0deg, #5db1fc 0%, #e2ebff 100%);
|
||||||
-webkit-background-clip: text;
|
-webkit-background-clip: text;
|
||||||
-webkit-text-fill-color: transparent;
|
-webkit-text-fill-color: transparent;
|
||||||
background-clip: text;
|
background-clip: text;
|
||||||
|
|
@ -541,13 +539,13 @@
|
||||||
span {
|
span {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 10px;
|
bottom: 10px;
|
||||||
left: calc(50% - 645px / 2);
|
left: calc(50% - 660px / 2);
|
||||||
width: 645px;
|
width: 660px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
font-family: PingFang SC;
|
font-family: PingFang SC;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
color: #074684;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
|
|
|
||||||