Merge branch 'dev' of http://192.168.18.88:8077/sznyb/daimp-front into dev
This commit is contained in:
commit
4288429981
@ -1,13 +1,24 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
<head>
|
||||||
<link rel="icon" type="image/svg+xml" href="/logo.png" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<link rel="icon" type="image/svg+xml" href="/logo.png" />
|
||||||
<title></title>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
</head>
|
<title></title>
|
||||||
<body>
|
<script>
|
||||||
<div id="root"></div>
|
window._AMapSecurityConfig = {
|
||||||
<script type="module" src="/src/main.js"></script>
|
securityJsCode: 'f09302d3ed65110614bdb26e44717ddf',
|
||||||
</body>
|
};
|
||||||
</html>
|
</script>
|
||||||
|
<script type="text/javascript"
|
||||||
|
src="https://webapi.amap.com/maps?v=2.0&key=c843a50db7157faf295c6fa37c48719f&plugin=AMap.PlaceSearch,AMap.Geocoder"></script>
|
||||||
|
<script src="https://webapi.amap.com/ui/1.1/main.js?v=1.0.11"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="root"></div>
|
||||||
|
<script type="module" src="/src/main.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
152
main/src/components/custom-echart-multi-line/index.vue
Normal file
152
main/src/components/custom-echart-multi-line/index.vue
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
<template>
|
||||||
|
<div ref="chartRef" :style="{ height, width }"></div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { ref, reactive, watchEffect } from 'vue';
|
||||||
|
import { cloneDeep } from 'lodash';
|
||||||
|
import { useEcharts } from '../../hooks/useEcharts';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CustomEchartMultiLine',
|
||||||
|
props: {
|
||||||
|
chartData: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
option: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: 'line',
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: String,
|
||||||
|
default: '100%',
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: String,
|
||||||
|
default: 'calc(100vh - 78px)',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
emits: ['click'],
|
||||||
|
setup(props, { emit }) {
|
||||||
|
const chartRef = ref(null);
|
||||||
|
const { setOptions, getInstance } = useEcharts(chartRef);
|
||||||
|
const option = reactive({
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
axisPointer: {
|
||||||
|
type: 'shadow',
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
backgroundColor: '#333',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
top: 30,
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
top: 60,
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
data: [],
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value',
|
||||||
|
},
|
||||||
|
series: [],
|
||||||
|
});
|
||||||
|
|
||||||
|
watchEffect(() => {
|
||||||
|
props.chartData && initCharts();
|
||||||
|
});
|
||||||
|
|
||||||
|
function hexToRGBA(hex, alpha = 1) {
|
||||||
|
let hexCode = hex.replace('#', '');
|
||||||
|
if (hexCode.length === 3) {
|
||||||
|
hexCode = hexCode
|
||||||
|
.split('')
|
||||||
|
.map((char) => char + char)
|
||||||
|
.join('');
|
||||||
|
}
|
||||||
|
const r = parseInt(hexCode.slice(0, 2), 16);
|
||||||
|
const g = parseInt(hexCode.slice(2, 4), 16);
|
||||||
|
const b = parseInt(hexCode.slice(4, 6), 16);
|
||||||
|
return `rgba(${r}, ${g}, ${b}, ${alpha})`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setAreaStyle(color) {
|
||||||
|
return {
|
||||||
|
color: {
|
||||||
|
type: 'linear',
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
x2: 0,
|
||||||
|
y2: 1,
|
||||||
|
colorStops: [
|
||||||
|
{
|
||||||
|
offset: 0,
|
||||||
|
color: hexToRGBA(color, 0.2),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 1,
|
||||||
|
color: hexToRGBA(color, 1),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function initCharts() {
|
||||||
|
if (props.option) {
|
||||||
|
Object.assign(option, cloneDeep(props.option));
|
||||||
|
}
|
||||||
|
let typeArr = Array.from(new Set(props.chartData.map((item) => item.type)));
|
||||||
|
let xAxisData = Array.from(new Set(props.chartData.map((item) => item.name)));
|
||||||
|
let seriesData = [];
|
||||||
|
typeArr.forEach((type, index) => {
|
||||||
|
let obj = {
|
||||||
|
name: type,
|
||||||
|
type: props.type,
|
||||||
|
smooth: true,
|
||||||
|
};
|
||||||
|
if (props.option?.color) {
|
||||||
|
obj.areaStyle = setAreaStyle(props.option?.color[index]);
|
||||||
|
}
|
||||||
|
const findItem = props.chartData.find((item) => item.type == type);
|
||||||
|
if (findItem && findItem.color) {
|
||||||
|
obj.color = findItem.color;
|
||||||
|
obj.areaStyle = setAreaStyle(findItem.color[index]);
|
||||||
|
}
|
||||||
|
let data = [];
|
||||||
|
xAxisData.forEach((x) => {
|
||||||
|
let dataArr = props.chartData.filter((item) => type === item.type && item.name == x);
|
||||||
|
if (dataArr && dataArr.length > 0) {
|
||||||
|
data.push(dataArr[0].value);
|
||||||
|
} else {
|
||||||
|
data.push(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
obj['data'] = data;
|
||||||
|
seriesData.push(obj);
|
||||||
|
});
|
||||||
|
option.series = seriesData;
|
||||||
|
option.xAxis.data = xAxisData;
|
||||||
|
setOptions(option);
|
||||||
|
getInstance()?.off('click', onClick);
|
||||||
|
getInstance()?.on('click', onClick);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClick(params) {
|
||||||
|
emit('click', params);
|
||||||
|
}
|
||||||
|
|
||||||
|
return { chartRef };
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
89
main/src/components/custom-echart-pie/index.vue
Normal file
89
main/src/components/custom-echart-pie/index.vue
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
<template>
|
||||||
|
<div ref="chartRef" :style="{ height, width }"></div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { ref, reactive, watch, watchEffect } from 'vue';
|
||||||
|
import { cloneDeep } from 'lodash';
|
||||||
|
import { useEcharts } from '../../hooks/useEcharts';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CustomEchartPie',
|
||||||
|
props: {
|
||||||
|
chartData: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
size: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
option: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: String,
|
||||||
|
default: '100%',
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: String,
|
||||||
|
default: 'calc(100vh - 78px)',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
emits: ['click'],
|
||||||
|
setup(props, { emit }) {
|
||||||
|
const chartRef = ref(null);
|
||||||
|
const { setOptions, getInstance, resize } = useEcharts(chartRef);
|
||||||
|
const option = reactive({
|
||||||
|
tooltip: {
|
||||||
|
formatter: '{b} ({c})',
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'pie',
|
||||||
|
radius: '72%',
|
||||||
|
center: ['50%', '55%'],
|
||||||
|
data: [],
|
||||||
|
labelLine: { show: true },
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
formatter: '{b} \n ({d}%)',
|
||||||
|
color: '#B1B9D3',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
watchEffect(() => {
|
||||||
|
props.chartData && initCharts();
|
||||||
|
});
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.size,
|
||||||
|
() => {
|
||||||
|
resize();
|
||||||
|
},
|
||||||
|
{
|
||||||
|
immediate: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
function initCharts() {
|
||||||
|
if (props.option) {
|
||||||
|
Object.assign(option, cloneDeep(props.option));
|
||||||
|
}
|
||||||
|
option.series[0].data = props.chartData;
|
||||||
|
setOptions(option);
|
||||||
|
resize();
|
||||||
|
getInstance()?.off('click', onClick);
|
||||||
|
getInstance()?.on('click', onClick);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClick(params) {
|
||||||
|
emit('click', params);
|
||||||
|
}
|
||||||
|
|
||||||
|
return { chartRef };
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
@ -3,5 +3,7 @@ import CustomTableOperate from './custom-table-operate';
|
|||||||
import CustomImportExcel from './custom-import-excel';
|
import CustomImportExcel from './custom-import-excel';
|
||||||
import CustomRichEditor from './custom-rich-editor';
|
import CustomRichEditor from './custom-rich-editor';
|
||||||
import CustomEchartBar from './custom-echart-bar';
|
import CustomEchartBar from './custom-echart-bar';
|
||||||
|
import CustomEchartPie from './custom-echart-pie';
|
||||||
|
import CustomEchartMultiLine from './custom-echart-multi-line';
|
||||||
|
|
||||||
export { SvgIcon, CustomTableOperate, CustomImportExcel, CustomRichEditor, CustomEchartBar };
|
export { SvgIcon, CustomTableOperate, CustomImportExcel, CustomRichEditor, CustomEchartBar, CustomEchartPie, CustomEchartMultiLine };
|
||||||
|
@ -1,13 +1,16 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
<head>
|
||||||
<link rel="icon" type="image/svg+xml" href="/logo.png" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<link rel="icon" type="image/svg+xml" href="/logo.png" />
|
||||||
<title>政务服务</title>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
</head>
|
<title>政务服务</title>
|
||||||
<body>
|
</head>
|
||||||
<div id="app"></div>
|
|
||||||
<script type="module" src="/src/main.js"></script>
|
<body>
|
||||||
</body>
|
<div id="app"></div>
|
||||||
</html>
|
<script type="module" src="/src/main.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
@ -17,7 +17,6 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@element-plus/icons-vue": "^2.3.1",
|
"@element-plus/icons-vue": "^2.3.1",
|
||||||
"@smallwei/avue": "^3.6.2",
|
"@smallwei/avue": "^3.6.2",
|
||||||
"@vuemap/vue-amap": "^2.1.9",
|
|
||||||
"@wangeditor/editor": "^5.1.23",
|
"@wangeditor/editor": "^5.1.23",
|
||||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||||
"axios": "^1.6.5",
|
"axios": "^1.6.5",
|
||||||
|
@ -183,3 +183,13 @@ export function getAddrCropByLand(landId) {
|
|||||||
method: 'GET',
|
method: 'GET',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
/* 导入土地 */
|
||||||
|
export function importLands(data) {
|
||||||
|
return request('land-resource/landManage/import', {
|
||||||
|
method: 'POST',
|
||||||
|
data,
|
||||||
|
Headers: {
|
||||||
|
'Content-Type': 'multipart/form-data',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -1,43 +0,0 @@
|
|||||||
<template>
|
|
||||||
<section class="map_container" :style="{ '--width': props.w, '--height': props.h }">
|
|
||||||
<el-amap :center="[121.59996, 31.197646]" :zoom="15" />
|
|
||||||
</section>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts" setup>
|
|
||||||
import { ref } from 'vue';
|
|
||||||
const props = defineProps({
|
|
||||||
w: {
|
|
||||||
type: String,
|
|
||||||
default: '300px',
|
|
||||||
},
|
|
||||||
h: {
|
|
||||||
type: String,
|
|
||||||
default: '300px',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
/* --------------- data --------------- */
|
|
||||||
// #region
|
|
||||||
|
|
||||||
// #endregion
|
|
||||||
|
|
||||||
/* --------------- methods --------------- */
|
|
||||||
// #region
|
|
||||||
|
|
||||||
// #endregion
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.map_container {
|
|
||||||
width: var(--width);
|
|
||||||
height: var(--height);
|
|
||||||
::v-deep() {
|
|
||||||
.el-vue-amap-container {
|
|
||||||
height: 100%;
|
|
||||||
.amap-container {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -7,7 +7,6 @@
|
|||||||
*/
|
*/
|
||||||
import 'virtual:svg-icons-register';
|
import 'virtual:svg-icons-register';
|
||||||
import { createApp } from 'vue';
|
import { createApp } from 'vue';
|
||||||
import VueAMap, { initAMapApiLoader } from '@vuemap/vue-amap';
|
|
||||||
import App from './App.vue';
|
import App from './App.vue';
|
||||||
import router from './router';
|
import router from './router';
|
||||||
import pinia from './store';
|
import pinia from './store';
|
||||||
@ -21,16 +20,8 @@ import { registerGlobalComponents } from './plugins/globalComponents';
|
|||||||
import { registerElIcons } from './plugins/icon';
|
import { registerElIcons } from './plugins/icon';
|
||||||
import { registerMicroApps } from './plugins/micro';
|
import { registerMicroApps } from './plugins/micro';
|
||||||
|
|
||||||
initAMapApiLoader({
|
|
||||||
key: 'c843a50db7157faf295c6fa37c48719f',
|
|
||||||
securityJsCode: 'f09302d3ed65110614bdb26e44717ddf', // 新版key需要配合安全密钥使用
|
|
||||||
//Loca:{
|
|
||||||
// version: '2.0.0'
|
|
||||||
//} // 如果需要使用loca组件库,需要加载Loca
|
|
||||||
});
|
|
||||||
|
|
||||||
const app = createApp(App);
|
const app = createApp(App);
|
||||||
app.use(pinia).use(router).use(ElementPlus).use(Avue).use(VueAMap);
|
app.use(pinia).use(router).use(ElementPlus).use(Avue);
|
||||||
registerGlobalComponents(app);
|
registerGlobalComponents(app);
|
||||||
registerElIcons(app);
|
registerElIcons(app);
|
||||||
registerDirective(app);
|
registerDirective(app);
|
||||||
|
@ -0,0 +1,104 @@
|
|||||||
|
<template>
|
||||||
|
<section class="create_land_attrs_content_">
|
||||||
|
<el-upload
|
||||||
|
v-if="props.view != 'view'"
|
||||||
|
class="custom-form__uploader"
|
||||||
|
action="#"
|
||||||
|
:show-file-list="false"
|
||||||
|
accept="image/*"
|
||||||
|
:limit="20"
|
||||||
|
:http-request="rowUploadPicture"
|
||||||
|
>
|
||||||
|
<el-icon class="custom-form__uploader__icon"><Plus /></el-icon>
|
||||||
|
</el-upload>
|
||||||
|
<div v-for="item in attrs_" :key="`attr_${item.id}`" class="attrs_content__item">
|
||||||
|
<img :src="item.url" :alt="item.name" style="" />
|
||||||
|
<el-icon v-if="props.view != 'view'" class="clear_btn" @click="handleClearAttr(item.id)"><CircleCloseFilled /></el-icon>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { ref, watch } from 'vue';
|
||||||
|
import { CommonUpload } from '@/apis';
|
||||||
|
|
||||||
|
const emit = defineEmits(['update:attrs']);
|
||||||
|
const props = defineProps({
|
||||||
|
view: {
|
||||||
|
type: String,
|
||||||
|
default: 'view',
|
||||||
|
},
|
||||||
|
attrs: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const attrs_ = ref([]);
|
||||||
|
watch(
|
||||||
|
() => props.attrs,
|
||||||
|
(val) => {
|
||||||
|
attrs_.value = val;
|
||||||
|
},
|
||||||
|
{ deep: true, immediate: true }
|
||||||
|
);
|
||||||
|
function handleClearAttr(id) {
|
||||||
|
attrs_.value = attrs_.value.filter((item) => item.id !== id);
|
||||||
|
emit('update:attrs', attrs_.value);
|
||||||
|
}
|
||||||
|
async function rowUploadPicture({ file }) {
|
||||||
|
const formData = new FormData();
|
||||||
|
formData.append('file', file);
|
||||||
|
const res = await CommonUpload(formData);
|
||||||
|
if (res.code === 200) {
|
||||||
|
attrs_.value.push({
|
||||||
|
...res.data,
|
||||||
|
id: 'id_' + Date.now(),
|
||||||
|
});
|
||||||
|
emit('update:attrs', attrs_.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.create_land_attrs_content_ {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
box-sizing: border-box;
|
||||||
|
gap: 20px;
|
||||||
|
.custom-form__uploader {
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
> div {
|
||||||
|
width: calc(50% - 10px);
|
||||||
|
aspect-ratio: 1 / 1;
|
||||||
|
}
|
||||||
|
.attrs_content__item {
|
||||||
|
box-sizing: border-box;
|
||||||
|
position: relative;
|
||||||
|
padding: 6px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 4px;
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
.clear_btn {
|
||||||
|
position: absolute;
|
||||||
|
right: 0px;
|
||||||
|
top: 0px;
|
||||||
|
font-size: 18px;
|
||||||
|
color: #f15c5c;
|
||||||
|
opacity: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
.clear_btn {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -12,17 +12,21 @@
|
|||||||
class="custon_create_land_"
|
class="custon_create_land_"
|
||||||
:data="data"
|
:data="data"
|
||||||
:option="option"
|
:option="option"
|
||||||
|
:before-close="handleCloseFrom"
|
||||||
@current-change="handlePageChange"
|
@current-change="handlePageChange"
|
||||||
@size-change="handleSizeChange"
|
@size-change="handleSizeChange"
|
||||||
@search-reset="handleResetSearch"
|
@search-reset="handleResetSearch"
|
||||||
@search-change="handleSearch"
|
@search-change="handleSearch"
|
||||||
@row-save="handleRowSave"
|
@row-save="handleRowSave"
|
||||||
>
|
>
|
||||||
<!-- <template #menu-form>
|
<template #landTransfer="{ row }">
|
||||||
<CreateLand :row-data="rowData" :land-type="0" />
|
{{ row.landTransfer == '1' ? '是' : '否' }}
|
||||||
</template> -->
|
</template>
|
||||||
|
<template #isUpload="{ row }">
|
||||||
|
{{ row.isUpload != '1' ? '是' : '否' }}
|
||||||
|
</template>
|
||||||
<template #menu-left>
|
<template #menu-left>
|
||||||
<el-button type="success" icon="upload">导入</el-button>
|
<el-button type="success" icon="upload" @click="handleImport">导入</el-button>
|
||||||
<el-button type="success" icon="download" @click="handleExport">导出</el-button>
|
<el-button type="success" icon="download" @click="handleExport">导出</el-button>
|
||||||
</template>
|
</template>
|
||||||
<template #menu="{ row }">
|
<template #menu="{ row }">
|
||||||
@ -33,25 +37,17 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-popconfirm>
|
</el-popconfirm>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #propertyCertificateUrl-form="{ type }">
|
<template #propertyCertificateUrl-form="{ type }">
|
||||||
<section class="create_land_attrs_content_">
|
<Attrs v-model:attrs="attrs" :view="type" />
|
||||||
<el-upload
|
</template>
|
||||||
v-if="type !== 'view'"
|
<template #landCertificateUrl-form="{ type }">
|
||||||
class="custom-form__uploader"
|
<Attrs v-model:attrs="landOwnerAttrs" :view="type" />
|
||||||
action="#"
|
</template>
|
||||||
:show-file-list="false"
|
<template #coordinate-form>
|
||||||
accept="image/*"
|
<avue-input-map v-model="local" :params="params" placeholder="请选择位置"></avue-input-map>
|
||||||
:limit="20"
|
</template>
|
||||||
:http-request="rowUploadPicture"
|
<template #landUrl-form="{ type }">
|
||||||
>
|
<Attrs v-model:attrs="landAttrs" :view="type" />
|
||||||
<el-icon class="custom-form__uploader__icon"><Plus /></el-icon>
|
|
||||||
</el-upload>
|
|
||||||
<div v-for="item in attrs" :key="`attr_${item.id}`" class="attrs_content__item">
|
|
||||||
<img :src="item.url" :alt="item.name" style="" />
|
|
||||||
<el-icon class="clear_btn" @click="handleClearAttr(item.id)"><CircleCloseFilled /></el-icon>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</template>
|
</template>
|
||||||
</avue-crud>
|
</avue-crud>
|
||||||
</CustomCard>
|
</CustomCard>
|
||||||
@ -62,24 +58,27 @@ import { ref, reactive, onMounted } from 'vue';
|
|||||||
import CustomCard from '@/components/CustomCard';
|
import CustomCard from '@/components/CustomCard';
|
||||||
import { CRUD_OPTIONS } from '@/config';
|
import { CRUD_OPTIONS } from '@/config';
|
||||||
import { useUserStore } from '@/store/modules/user';
|
import { useUserStore } from '@/store/modules/user';
|
||||||
import { getLandsList, exportLands, delLand, saveLand } from '@/apis/land.js';
|
import { getLandsList, exportLands, delLand, saveLand, importLands } from '@/apis/land.js';
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
|
|
||||||
import useLandHook from './useLandHook';
|
import useLandHook from './useLandHook';
|
||||||
import { CommonUpload } from '@/apis';
|
import { CommonUpload } from '@/apis';
|
||||||
import { get } from 'lodash';
|
import Attrs from './common/Attrs.vue';
|
||||||
|
import { add } from 'lodash';
|
||||||
|
|
||||||
const { landType, landsType, landClassificationType, handleIficationType } = useLandHook();
|
const { landType, landsType, landClassificationType, handleIficationType } = useLandHook();
|
||||||
const { VITE_APP_BASE_API } = import.meta.env;
|
const { VITE_APP_BASE_API } = import.meta.env;
|
||||||
const UserStore = useUserStore();
|
const UserStore = useUserStore();
|
||||||
|
|
||||||
const landClassificationType_ = ref('');
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
|
const params = ref({
|
||||||
|
zoom: 10,
|
||||||
|
});
|
||||||
|
const local_ = ref([102.833669, 24.88149, '昆明市']);
|
||||||
|
const local = ref(JSON.parse(JSON.stringify(local_.value)));
|
||||||
/* --------------- data --------------- */
|
/* --------------- data --------------- */
|
||||||
// #region
|
// #region
|
||||||
|
|
||||||
const crudRef = ref();
|
const crudRef = ref();
|
||||||
const pageData = reactive({
|
const pageData = reactive({
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
@ -223,6 +222,7 @@ const option = reactive({
|
|||||||
prop: 'landClassificationType',
|
prop: 'landClassificationType',
|
||||||
type: 'select',
|
type: 'select',
|
||||||
dicData: landClassificationType,
|
dicData: landClassificationType,
|
||||||
|
viewDisplay: false,
|
||||||
rules: [
|
rules: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
@ -231,13 +231,30 @@ const option = reactive({
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: '用地分类',
|
||||||
|
prop: 'landClassificationTypeView',
|
||||||
|
addDisplay: false,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: '位置',
|
label: '位置',
|
||||||
prop: 'villageCode',
|
prop: 'villageCode',
|
||||||
|
type: 'cascader',
|
||||||
|
props: {
|
||||||
|
label: 'areaName',
|
||||||
|
value: 'areaCode',
|
||||||
|
children: 'areaChildVOS',
|
||||||
|
},
|
||||||
|
dicUrl: `${VITE_APP_BASE_API}/system/area/region?areaCode=530000`,
|
||||||
|
dicHeaders: {
|
||||||
|
authorization: UserStore.token,
|
||||||
|
},
|
||||||
|
dicFormatter: (res) => res.data ?? [],
|
||||||
|
// change: (o) => setCityChange(o),
|
||||||
rules: [
|
rules: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入',
|
message: '请选择',
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -246,6 +263,7 @@ const option = reactive({
|
|||||||
label: '是否土地流转',
|
label: '是否土地流转',
|
||||||
prop: 'isTransfer',
|
prop: 'isTransfer',
|
||||||
type: 'select',
|
type: 'select',
|
||||||
|
viewDisplay: false,
|
||||||
dicData: [
|
dicData: [
|
||||||
{
|
{
|
||||||
label: '是',
|
label: '是',
|
||||||
@ -257,6 +275,11 @@ const option = reactive({
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: '是否土地流转1',
|
||||||
|
prop: 'isTransferView',
|
||||||
|
addDisplay: false,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: '面积',
|
label: '面积',
|
||||||
prop: 'area',
|
prop: 'area',
|
||||||
@ -293,6 +316,48 @@ const option = reactive({
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: '土地使用权信息',
|
||||||
|
prop: 'baseGroup',
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: '联系人',
|
||||||
|
prop: 'landUseName',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '联系电话',
|
||||||
|
prop: 'landUsePhone',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '用地性质',
|
||||||
|
prop: 'nature',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '证书',
|
||||||
|
prop: 'landCertificateUrl',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '土地使用权信息',
|
||||||
|
prop: 'baseGroup',
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: '地理位置',
|
||||||
|
prop: 'coordinate',
|
||||||
|
viewDisplay: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '地理位置',
|
||||||
|
prop: 'coordinateView',
|
||||||
|
addDisplay: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '图片',
|
||||||
|
prop: 'landUrl',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
const searchData = reactive({
|
const searchData = reactive({
|
||||||
@ -301,6 +366,8 @@ const searchData = reactive({
|
|||||||
owner: '',
|
owner: '',
|
||||||
});
|
});
|
||||||
const attrs = ref([]);
|
const attrs = ref([]);
|
||||||
|
const landOwnerAttrs = ref([]);
|
||||||
|
const landAttrs = ref([]);
|
||||||
const rowData = ref([]);
|
const rowData = ref([]);
|
||||||
// #endregion
|
// #endregion
|
||||||
|
|
||||||
@ -315,14 +382,18 @@ async function getList() {
|
|||||||
...searchData,
|
...searchData,
|
||||||
};
|
};
|
||||||
let res = await getLandsList(params);
|
let res = await getLandsList(params);
|
||||||
console.log('res ---------', res);
|
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
data.value = res.data.records;
|
data.value = res.data.records;
|
||||||
|
data.value.forEach((v) => {
|
||||||
|
v.isTransfer = v.landTransfer || 1;
|
||||||
|
v.isTransferView = v.landTransfer == 1 ? '否' : '是';
|
||||||
|
v.landClassificationTypeView = handleIficationType(v.handleIficationType);
|
||||||
|
v.coordinateView = v.coordinate;
|
||||||
|
});
|
||||||
pageData.total = res.data.total;
|
pageData.total = res.data.total;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function handlePageChange(val) {
|
function handlePageChange(val) {
|
||||||
console.log('page', val);
|
|
||||||
pageData.currentPage = val;
|
pageData.currentPage = val;
|
||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
@ -346,29 +417,32 @@ async function handleResetSearch() {
|
|||||||
pageData.total = 0;
|
pageData.total = 0;
|
||||||
await getList();
|
await getList();
|
||||||
}
|
}
|
||||||
async function handleRowSave(val, done, loading) {
|
const attrNames = reactive(landsType.map((v) => v.label));
|
||||||
let data = JSON.parse(JSON.stringify(val));
|
function handleImport() {
|
||||||
data.isDraftsSave = 0;
|
let inp = document.createElement('input');
|
||||||
data.landType = 0;
|
inp.type = 'file';
|
||||||
let urls = [];
|
inp.onchange = fileUp;
|
||||||
if (data.propertyCertificateUrl.length) {
|
document.body.appendChild(inp);
|
||||||
data.propertyCertificateUrl.forEach((item) => urls.push(item.url));
|
inp.click();
|
||||||
}
|
document.body.removeChild(inp);
|
||||||
data.propertyCertificateUrl = urls.join();
|
}
|
||||||
const res = await saveLand(data);
|
async function fileUp(e) {
|
||||||
|
let formData = new FormData();
|
||||||
|
formData.append('file', e.target.files[0]);
|
||||||
|
formData.append('landType', landType.value);
|
||||||
|
const res = await importLands(formData);
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
ElMessage.success('保存成功');
|
ElMessage.success('导入成功');
|
||||||
getList();
|
getList();
|
||||||
done();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function handleExport() {
|
async function handleExport() {
|
||||||
let res = await exportLands({
|
let res = await exportLands({
|
||||||
landType: 1,
|
landType: landType.value,
|
||||||
});
|
});
|
||||||
if (res) {
|
if (res) {
|
||||||
let a = document.createElement('a');
|
let a = document.createElement('a');
|
||||||
// a.download = attrNames.value[Number(searchCondition.landType)] + '.xlsx';
|
a.download = attrNames.value[Number(landType.value)] + '.xlsx';
|
||||||
a.download = 'test.xlsx';
|
a.download = 'test.xlsx';
|
||||||
let blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
|
let blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
|
||||||
let link = window.URL.createObjectURL(blob);
|
let link = window.URL.createObjectURL(blob);
|
||||||
@ -379,20 +453,6 @@ async function handleExport() {
|
|||||||
window.URL.revokeObjectURL(link);
|
window.URL.revokeObjectURL(link);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const rowUploadPicture = async ({ file }) => {
|
|
||||||
const formData = new FormData();
|
|
||||||
formData.append('file', file);
|
|
||||||
const res = await CommonUpload(formData);
|
|
||||||
if (res.code === 200) {
|
|
||||||
attrs.value.push({
|
|
||||||
...res.data,
|
|
||||||
id: 'id_' + Date.now(),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function handleClearAttr(id) {
|
|
||||||
attrs.value = attrs.value.filter((item) => item.id !== id);
|
|
||||||
}
|
|
||||||
async function handleDelete(id) {
|
async function handleDelete(id) {
|
||||||
let res = await delLand(id);
|
let res = await delLand(id);
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
@ -401,9 +461,76 @@ async function handleDelete(id) {
|
|||||||
}
|
}
|
||||||
function handleView(obj) {
|
function handleView(obj) {
|
||||||
rowData.value = obj;
|
rowData.value = obj;
|
||||||
console.log('row', rowData.value);
|
if (obj.propertyCertificateUrl) {
|
||||||
|
attrs.value = obj.propertyCertificateUrl.split(',').map((v, i) => {
|
||||||
|
return {
|
||||||
|
name: `产权附件_${i}`,
|
||||||
|
url: v,
|
||||||
|
id: 'id_' + Date.now(),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (obj.landCertificateUrl) {
|
||||||
|
landOwnerAttrs.value = obj.landCertificateUrl.split(',').map((v, i) => {
|
||||||
|
return {
|
||||||
|
name: `使用信息附件_${i}`,
|
||||||
|
url: v,
|
||||||
|
id: 'id_' + Date.now(),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
if (obj.landUrl) {
|
||||||
|
landAttrs.value = obj.landUrl.split(',').map((v, i) => {
|
||||||
|
return {
|
||||||
|
name: `位置附件_${i}`,
|
||||||
|
url: v,
|
||||||
|
id: 'id_' + Date.now(),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
crudRef.value.rowView(obj);
|
crudRef.value.rowView(obj);
|
||||||
}
|
}
|
||||||
|
function handleCloseFrom(done) {
|
||||||
|
landOwnerAttrs.value = [];
|
||||||
|
attrs.value = [];
|
||||||
|
landAttrs.value = [];
|
||||||
|
local.value = JSON.parse(JSON.stringify(local_.value));
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function handleRowSave(val, done, loading) {
|
||||||
|
let data = JSON.parse(JSON.stringify(val));
|
||||||
|
data.isDraftsSave = 0;
|
||||||
|
data.landType = landType.value;
|
||||||
|
let urls = [];
|
||||||
|
let landOwnerUrls = [];
|
||||||
|
let landUrls = [];
|
||||||
|
if (attrs.value.length) {
|
||||||
|
attrs.value.forEach((item) => urls.push(item.url));
|
||||||
|
}
|
||||||
|
if (landOwnerAttrs.value.length) {
|
||||||
|
landOwnerAttrs.value.forEach((item) => landOwnerUrls.push(item.url));
|
||||||
|
}
|
||||||
|
if (landAttrs.value.length) {
|
||||||
|
landAttrs.value.forEach((item) => landUrls.push(item.url));
|
||||||
|
}
|
||||||
|
data.propertyCertificateUrl = urls.join();
|
||||||
|
data.landCertificateUrl = landOwnerUrls.join();
|
||||||
|
data.landUrl = landUrls.join();
|
||||||
|
data.villageCode = data.villageCode[data.villageCode.length - 1] || '';
|
||||||
|
if (local.value.length != 0) {
|
||||||
|
data.coordinate = `${local.value[0]}E,${local.value[1]}N`;
|
||||||
|
}
|
||||||
|
const res = await saveLand(data);
|
||||||
|
loading();
|
||||||
|
if (res.code == 200) {
|
||||||
|
ElMessage.success('保存成功');
|
||||||
|
getList();
|
||||||
|
attrs.value = [];
|
||||||
|
landOwnerAttrs.value = [];
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
}
|
||||||
// #endregion
|
// #endregion
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -433,20 +433,6 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
buffer "^6.0.3"
|
buffer "^6.0.3"
|
||||||
|
|
||||||
"@math.gl/core@3.6.3":
|
|
||||||
version "3.6.3"
|
|
||||||
resolved "https://registry.npmmirror.com/@math.gl/core/-/core-3.6.3.tgz#a6bf796ed421093099749d609de8d99a3ac20a53"
|
|
||||||
integrity sha512-jBABmDkj5uuuE0dTDmwwss7Cup5ZwQ6Qb7h1pgvtkEutTrhkcv8SuItQNXmF45494yIHeoGue08NlyeY6wxq2A==
|
|
||||||
dependencies:
|
|
||||||
"@babel/runtime" "^7.12.0"
|
|
||||||
"@math.gl/types" "3.6.3"
|
|
||||||
gl-matrix "^3.4.0"
|
|
||||||
|
|
||||||
"@math.gl/types@3.6.3":
|
|
||||||
version "3.6.3"
|
|
||||||
resolved "https://registry.npmmirror.com/@math.gl/types/-/types-3.6.3.tgz#9fa9866feabcbb76de107d78ff3a89c0243ac374"
|
|
||||||
integrity sha512-3uWLVXHY3jQxsXCr/UCNPSc2BG0hNUljhmOBt9l+lNFDp7zHgm0cK2Tw4kj2XfkJy4TgwZTBGwRDQgWEbLbdTA==
|
|
||||||
|
|
||||||
"@mrmlnc/readdir-enhanced@^2.2.1":
|
"@mrmlnc/readdir-enhanced@^2.2.1":
|
||||||
version "2.2.1"
|
version "2.2.1"
|
||||||
resolved "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
|
resolved "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
|
||||||
@ -719,27 +705,6 @@
|
|||||||
resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
|
resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
|
||||||
integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
|
integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
|
||||||
|
|
||||||
"@turf/helpers@^6.5.0":
|
|
||||||
version "6.5.0"
|
|
||||||
resolved "https://registry.npmmirror.com/@turf/helpers/-/helpers-6.5.0.tgz#f79af094bd6b8ce7ed2bd3e089a8493ee6cae82e"
|
|
||||||
integrity sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==
|
|
||||||
|
|
||||||
"@turf/intersect@^6.5.0":
|
|
||||||
version "6.5.0"
|
|
||||||
resolved "https://registry.npmmirror.com/@turf/intersect/-/intersect-6.5.0.tgz#a14e161ddd0264d0f07ac4e325553c70c421f9e6"
|
|
||||||
integrity sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg==
|
|
||||||
dependencies:
|
|
||||||
"@turf/helpers" "^6.5.0"
|
|
||||||
"@turf/invariant" "^6.5.0"
|
|
||||||
polygon-clipping "^0.15.3"
|
|
||||||
|
|
||||||
"@turf/invariant@^6.5.0":
|
|
||||||
version "6.5.0"
|
|
||||||
resolved "https://registry.npmmirror.com/@turf/invariant/-/invariant-6.5.0.tgz#970afc988023e39c7ccab2341bd06979ddc7463f"
|
|
||||||
integrity sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==
|
|
||||||
dependencies:
|
|
||||||
"@turf/helpers" "^6.5.0"
|
|
||||||
|
|
||||||
"@types/eslint@^8.4.5":
|
"@types/eslint@^8.4.5":
|
||||||
version "8.56.12"
|
version "8.56.12"
|
||||||
resolved "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.12.tgz#1657c814ffeba4d2f84c0d4ba0f44ca7ea1ca53a"
|
resolved "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.12.tgz#1657c814ffeba4d2f84c0d4ba0f44ca7ea1ca53a"
|
||||||
@ -981,51 +946,6 @@
|
|||||||
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f"
|
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f"
|
||||||
integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==
|
integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==
|
||||||
|
|
||||||
"@vuemap/amap-jsapi-loader@1.0.4":
|
|
||||||
version "1.0.4"
|
|
||||||
resolved "https://registry.npmmirror.com/@vuemap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.4.tgz#699fc44eda74306ed489e9873d633f820cdac29a"
|
|
||||||
integrity sha512-s5fFHrsNkjYMovEmUJ5S23jpDtElTanDN2HdCt/amOD245a8wWVcTPjl06YEHXtxf6Ewm+z29wQByOCn209Hxg==
|
|
||||||
|
|
||||||
"@vuemap/amap-jsapi-types@^0.0.16":
|
|
||||||
version "0.0.16"
|
|
||||||
resolved "https://registry.npmmirror.com/@vuemap/amap-jsapi-types/-/amap-jsapi-types-0.0.16.tgz#74f9d381d519fe1ce49b0ae8fe103f7213b1e5c2"
|
|
||||||
integrity sha512-1B1H2IS8sT2RDubbpEY+K8j11Gb7PZY5Bo0cszRkF8Nw+9HNqpbUNeqkQ6+rxLkwIedcSkOsFDy/IyzXCUXqVw==
|
|
||||||
|
|
||||||
"@vuemap/amap-jsapi-types@^0.0.17":
|
|
||||||
version "0.0.17"
|
|
||||||
resolved "https://registry.npmmirror.com/@vuemap/amap-jsapi-types/-/amap-jsapi-types-0.0.17.tgz#3f21674520a97785388885a1b19c68acacaeb20e"
|
|
||||||
integrity sha512-FHI8OMWxJWbgyuQ0tKclvurQIVHRexMIYAOwZ/z9+G7aHHK5EFhKM13siLczNNAgXdJ2dctPEghCdlhcByl3Ag==
|
|
||||||
|
|
||||||
"@vuemap/amap-xyz-layer@0.0.13":
|
|
||||||
version "0.0.13"
|
|
||||||
resolved "https://registry.npmmirror.com/@vuemap/amap-xyz-layer/-/amap-xyz-layer-0.0.13.tgz#e0479c6e5227d3bba5bfb42b70314f988d8920b7"
|
|
||||||
integrity sha512-F6ZSoRGuQzeW9ETKFKES3WwbEogK68vBW5fpY5QGWAf54zumkfpJAIoU2x9gx1bzMT7hwDY895xIhNRuF1LwOw==
|
|
||||||
dependencies:
|
|
||||||
"@math.gl/core" "3.6.3"
|
|
||||||
earcut "2.2.4"
|
|
||||||
gl-matrix "3.4.3"
|
|
||||||
|
|
||||||
"@vuemap/district-cluster@0.0.11":
|
|
||||||
version "0.0.11"
|
|
||||||
resolved "https://registry.npmmirror.com/@vuemap/district-cluster/-/district-cluster-0.0.11.tgz#cdb37d621de03d73d462e47b580353f74f7c65e6"
|
|
||||||
integrity sha512-SY01gFe8uhP5FKjzyTe0x2yL2K5VmwD5UKlEUU4e09UUZphXCj2Ci7iunX0L29nWINkBjdfxu8dXzhIcx9T3ug==
|
|
||||||
dependencies:
|
|
||||||
"@turf/helpers" "^6.5.0"
|
|
||||||
"@turf/intersect" "^6.5.0"
|
|
||||||
"@vuemap/amap-jsapi-types" "^0.0.16"
|
|
||||||
topojson-client "3.1.0"
|
|
||||||
|
|
||||||
"@vuemap/vue-amap@^2.1.9":
|
|
||||||
version "2.1.9"
|
|
||||||
resolved "https://registry.npmmirror.com/@vuemap/vue-amap/-/vue-amap-2.1.9.tgz#ea039ea9e6cdfc7cea7610d4a3088a428922ba5c"
|
|
||||||
integrity sha512-/5Rzljj2gYFuqh52If7Sbr/tYqZYUPPtTvvQBflj7SWVgpH06GMU40DhWizz9Ef62UzaifS2IKZjXeuAvRw4wQ==
|
|
||||||
dependencies:
|
|
||||||
"@vuemap/amap-jsapi-loader" "1.0.4"
|
|
||||||
"@vuemap/amap-jsapi-types" "^0.0.17"
|
|
||||||
"@vuemap/amap-xyz-layer" "0.0.13"
|
|
||||||
"@vuemap/district-cluster" "0.0.11"
|
|
||||||
lodash-es "^4.17.21"
|
|
||||||
|
|
||||||
"@vueuse/core@^9.1.0":
|
"@vueuse/core@^9.1.0":
|
||||||
version "9.13.0"
|
version "9.13.0"
|
||||||
resolved "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz#2f69e66d1905c1e4eebc249a01759cf88ea00cf4"
|
resolved "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz#2f69e66d1905c1e4eebc249a01759cf88ea00cf4"
|
||||||
@ -1748,7 +1668,7 @@ commander@*:
|
|||||||
resolved "https://registry.npmmirror.com/commander/-/commander-13.0.0.tgz#1b161f60ee3ceb8074583a0f95359a4f8701845c"
|
resolved "https://registry.npmmirror.com/commander/-/commander-13.0.0.tgz#1b161f60ee3ceb8074583a0f95359a4f8701845c"
|
||||||
integrity sha512-oPYleIY8wmTVzkvQq10AEok6YcTC4sRUBl8F9gVuwchGVUCTbl/vhLTaQqutuuySYOsu8YTgV+OxKc/8Yvx+mQ==
|
integrity sha512-oPYleIY8wmTVzkvQq10AEok6YcTC4sRUBl8F9gVuwchGVUCTbl/vhLTaQqutuuySYOsu8YTgV+OxKc/8Yvx+mQ==
|
||||||
|
|
||||||
commander@2, commander@^2.20.0:
|
commander@^2.20.0:
|
||||||
version "2.20.3"
|
version "2.20.3"
|
||||||
resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||||
@ -2166,11 +2086,6 @@ dunder-proto@^1.0.0, dunder-proto@^1.0.1:
|
|||||||
es-errors "^1.3.0"
|
es-errors "^1.3.0"
|
||||||
gopd "^1.2.0"
|
gopd "^1.2.0"
|
||||||
|
|
||||||
earcut@2.2.4:
|
|
||||||
version "2.2.4"
|
|
||||||
resolved "https://registry.npmmirror.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a"
|
|
||||||
integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==
|
|
||||||
|
|
||||||
echarts@^5.6.0:
|
echarts@^5.6.0:
|
||||||
version "5.6.0"
|
version "5.6.0"
|
||||||
resolved "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz#2377874dca9fb50f104051c3553544752da3c9d6"
|
resolved "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz#2377874dca9fb50f104051c3553544752da3c9d6"
|
||||||
@ -2965,11 +2880,6 @@ get-value@^2.0.3, get-value@^2.0.6:
|
|||||||
resolved "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
|
resolved "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
|
||||||
integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==
|
integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==
|
||||||
|
|
||||||
gl-matrix@3.4.3, gl-matrix@^3.4.0:
|
|
||||||
version "3.4.3"
|
|
||||||
resolved "https://registry.npmmirror.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9"
|
|
||||||
integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==
|
|
||||||
|
|
||||||
glob-parent@^3.1.0:
|
glob-parent@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
|
resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
|
||||||
@ -4707,14 +4617,6 @@ pkg-types@^1.2.1, pkg-types@^1.3.0:
|
|||||||
mlly "^1.7.4"
|
mlly "^1.7.4"
|
||||||
pathe "^2.0.1"
|
pathe "^2.0.1"
|
||||||
|
|
||||||
polygon-clipping@^0.15.3:
|
|
||||||
version "0.15.7"
|
|
||||||
resolved "https://registry.npmmirror.com/polygon-clipping/-/polygon-clipping-0.15.7.tgz#3823ca1e372566f350795ce9dd9a7b19e97bdaad"
|
|
||||||
integrity sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==
|
|
||||||
dependencies:
|
|
||||||
robust-predicates "^3.0.2"
|
|
||||||
splaytree "^3.1.0"
|
|
||||||
|
|
||||||
posix-character-classes@^0.1.0:
|
posix-character-classes@^0.1.0:
|
||||||
version "0.1.1"
|
version "0.1.1"
|
||||||
resolved "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
resolved "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
||||||
@ -5235,11 +5137,6 @@ rimraf@^3.0.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
glob "^7.1.3"
|
glob "^7.1.3"
|
||||||
|
|
||||||
robust-predicates@^3.0.2:
|
|
||||||
version "3.0.2"
|
|
||||||
resolved "https://registry.npmmirror.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771"
|
|
||||||
integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==
|
|
||||||
|
|
||||||
rollup@^2.77.2:
|
rollup@^2.77.2:
|
||||||
version "2.79.2"
|
version "2.79.2"
|
||||||
resolved "https://registry.npmmirror.com/rollup/-/rollup-2.79.2.tgz#f150e4a5db4b121a21a747d762f701e5e9f49090"
|
resolved "https://registry.npmmirror.com/rollup/-/rollup-2.79.2.tgz#f150e4a5db4b121a21a747d762f701e5e9f49090"
|
||||||
@ -5627,11 +5524,6 @@ specificity@^0.4.1:
|
|||||||
resolved "https://registry.npmmirror.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019"
|
resolved "https://registry.npmmirror.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019"
|
||||||
integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==
|
integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==
|
||||||
|
|
||||||
splaytree@^3.1.0:
|
|
||||||
version "3.1.2"
|
|
||||||
resolved "https://registry.npmmirror.com/splaytree/-/splaytree-3.1.2.tgz#d1db2691665a3c69d630de98d55145a6546dc166"
|
|
||||||
integrity sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A==
|
|
||||||
|
|
||||||
split-string@^3.0.1, split-string@^3.0.2:
|
split-string@^3.0.1, split-string@^3.0.2:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
|
resolved "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
|
||||||
@ -6145,13 +6037,6 @@ to-regex@^3.0.1, to-regex@^3.0.2:
|
|||||||
regex-not "^1.0.2"
|
regex-not "^1.0.2"
|
||||||
safe-regex "^1.1.0"
|
safe-regex "^1.1.0"
|
||||||
|
|
||||||
topojson-client@3.1.0:
|
|
||||||
version "3.1.0"
|
|
||||||
resolved "https://registry.npmmirror.com/topojson-client/-/topojson-client-3.1.0.tgz#22e8b1ed08a2b922feeb4af6f53b6ef09a467b99"
|
|
||||||
integrity sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==
|
|
||||||
dependencies:
|
|
||||||
commander "2"
|
|
||||||
|
|
||||||
traverse@^0.6.6:
|
traverse@^0.6.6:
|
||||||
version "0.6.11"
|
version "0.6.11"
|
||||||
resolved "https://registry.npmmirror.com/traverse/-/traverse-0.6.11.tgz#e8daa071b101ae66767fffa6f177aa6f7110068e"
|
resolved "https://registry.npmmirror.com/traverse/-/traverse-0.6.11.tgz#e8daa071b101ae66767fffa6f177aa6f7110068e"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user