diff --git a/main/.env.development b/main/.env.development
index 6687280..7729b29 100644
--- a/main/.env.development
+++ b/main/.env.development
@@ -13,9 +13,9 @@ VITE_APP_SUB_GSR = '//localhost:9530/new-digital-agriculture-screen/'
VITE_APP_BASE_API = '/apis'
VITE_APP_UPLOAD_API = '/uploadApis'
# 阿里云接口地址
-# VITE_APP_BASE_URL = 'http://47.109.205.240:8080'
-# VITE_APP_UPLOAD_URL = 'http://47.109.205.240:9300'
+VITE_APP_BASE_URL = 'http://47.109.205.240:8080'
+VITE_APP_UPLOAD_URL = 'http://47.109.205.240:9300'
# 内网接口地址
-VITE_APP_BASE_URL = 'http://192.168.18.74:8080'
+# VITE_APP_BASE_URL = 'http://192.168.18.99:8080'
# VITE_APP_UPLOAD_URL = 'http://192.168.18.99:8080'
# VITE_APP_VIST_URL = 'http://192.168.18.99'
diff --git a/new-digital-agriculture-screen/components.d.ts b/new-digital-agriculture-screen/components.d.ts
index ca0fa36..694dcaa 100644
--- a/new-digital-agriculture-screen/components.d.ts
+++ b/new-digital-agriculture-screen/components.d.ts
@@ -12,7 +12,6 @@ declare module 'vue' {
'CenterMap copy': typeof import('./src/components/centerMap copy.vue')['default']
CodeDialog: typeof import('./src/components/code-dialog/index.vue')['default']
Components: typeof import('./src/components/index.js')['default']
- copy: typeof import('./src/components/centerMap copy.vue')['default']
CurrentTime: typeof import('./src/components/currentTime.vue')['default']
CustomBack: typeof import('./src/components/customBack.vue')['default']
CustomCarouselPicture: typeof import('./src/components/custom-carousel-picture/index.vue')['default']
diff --git a/sub-government-affairs-service/.env.development b/sub-government-affairs-service/.env.development
index 93c9ebe..a0a3355 100644
--- a/sub-government-affairs-service/.env.development
+++ b/sub-government-affairs-service/.env.development
@@ -9,11 +9,12 @@ VITE_APP_BASE_API = '/apis'
VITE_APP_UPLOAD_API = '/uploadApis'
# 阿里云接口地址
-# VITE_APP_BASE_URL = 'http://47.109.205.240:8080'
-# VITE_APP_UPLOAD_URL = 'http://47.109.205.240:9204'
+VITE_APP_BASE_URL = 'http://47.109.205.240:8080'
+VITE_APP_UPLOAD_URL = 'http://47.109.205.240:9204'
# 内网测试库接口地址
-VITE_APP_BASE_URL = 'http://192.168.18.99:8080'
+# VITE_APP_BASE_URL = 'http://192.168.18.99:8080'
+# VITE_APP_UPLOAD_URL = 'http://192.168.18.99:8080'
# 本地开发接口地址
# VITE_APP_BASE_URL = 'http://192.168.18.74:8080'
diff --git a/sub-government-affairs-service/.eslintrc.cjs b/sub-government-affairs-service/.eslintrc.cjs
index 974ba1b..04d04c5 100644
--- a/sub-government-affairs-service/.eslintrc.cjs
+++ b/sub-government-affairs-service/.eslintrc.cjs
@@ -50,6 +50,7 @@ module.exports = {
defineEmits: 'readonly',
defineExpose: 'readonly',
withDefaults: 'readonly',
+ T: 'readonly',
},
// 这里时配置规则的,自己看情况配置
rules: {
diff --git a/sub-government-affairs-service/package.json b/sub-government-affairs-service/package.json
index 1620349..ea6967b 100644
--- a/sub-government-affairs-service/package.json
+++ b/sub-government-affairs-service/package.json
@@ -22,6 +22,7 @@
"@wangeditor/editor-for-vue": "^5.1.12",
"axios": "^1.6.5",
"echarts": "^5.6.0",
+ "echarts-gl": "^2.0.9",
"element-plus": "^2.7.2",
"js-base64": "^3.7.6",
"lodash": "^4.17.21",
@@ -33,7 +34,8 @@
"screenfull": "^6.0.2",
"splitpanes": "^4.0.3",
"vue": "^3.3.11",
- "vue-router": "^4.2.5"
+ "vue-router": "^4.2.5",
+ "vue-tianditu": "^2.7.6"
},
"devDependencies": {
"@babel/core": "^7.23.7",
diff --git a/sub-government-affairs-service/src/apis/inputSuppliesApi/material.js b/sub-government-affairs-service/src/apis/inputSuppliesApi/material.js
index 71f0e72..73eea46 100644
--- a/sub-government-affairs-service/src/apis/inputSuppliesApi/material.js
+++ b/sub-government-affairs-service/src/apis/inputSuppliesApi/material.js
@@ -11,27 +11,35 @@ export function getMaterailTypes(params) {
/* 获取农药列表 */
export function getPesticideList(params) {
- return request('/inputGoods/pesticide/page', {
+ return request('/inputGoods/supervise/pesticide/page', {
params,
});
}
/* 新增农药 */
export function addPesticide(data) {
- return request('/inputGoods/pesticide/save', {
+ return request('/inputGoods/supervise/pesticide/save', {
method: 'POST',
data,
});
}
-/* 农药检测报告 */
+/* 编辑农药 */
export function pesticideReportSave(data) {
- return request('/inputGoods/pesticide/uploadReport', {
+ return request('/inputGoods/supervise/pesticide/edit', {
data,
method: 'PUT',
});
}
/* 删除农药 */
export function delPesticide(ids) {
- return request(`/inputGoods/pesticide/delete/${ids}`);
+ return request(`/inputGoods/supervise/pesticide/delete/${ids}`);
+}
+/* 获取用药地块下拉选项 */
+export function getLandList() {
+ return request(`/inputGoods/supervise/pesticide/getLandList`);
+}
+/* 获取农药用药下拉选项 */
+export function getPesticideSelectList() {
+ return request(`/inputGoods/pesticide/getPesticideList`);
}
// #endregion
diff --git a/sub-government-affairs-service/src/apis/inputSuppliesApi/record.js b/sub-government-affairs-service/src/apis/inputSuppliesApi/record.js
new file mode 100644
index 0000000..5ea0597
--- /dev/null
+++ b/sub-government-affairs-service/src/apis/inputSuppliesApi/record.js
@@ -0,0 +1,47 @@
+import request from '@/utils/axios';
+//新增备案信息(POST)
+export function createRecord(data) {
+ return request({
+ url: '/inputGoods/cropPlantRegistration/save',
+ method: 'post',
+ data: data,
+ });
+}
+// 删除备案信息(DELETE)
+export function deleteRecord(id) {
+ return request({
+ url: `/inputGoods/cropPlantRegistration/delete/${id}`,
+ method: 'delete',
+ });
+}
+// 修改备案信息(PUT)
+export function updateRecord(data) {
+ return request({
+ url: `/inputGoods/cropPlantRegistration/uploadReport`,
+ method: 'put',
+ data: data,
+ });
+}
+// 查询备案信息(GET)
+export function getRecord(id) {
+ return request({
+ url: `/inputGoods/cropPlantRegistration/get/${id}`,
+ method: 'get',
+ });
+}
+// 查询备案信息列表(GET)
+export function fetchRecordList(params) {
+ return request({
+ url: '/inputGoods/cropPlantRegistration/page',
+ method: 'get',
+ params: params,
+ });
+}
+// 备案审核(PUT)
+export function auditRecord(data) {
+ return request({
+ url: `/inputGoods/cropPlantRegistration/approval`,
+ method: 'put',
+ data,
+ });
+}
diff --git a/sub-government-affairs-service/src/apis/landResourceManagement/landManagement/index.js b/sub-government-affairs-service/src/apis/landResourceManagement/landManagement/index.js
index b13e65c..b16adb0 100644
--- a/sub-government-affairs-service/src/apis/landResourceManagement/landManagement/index.js
+++ b/sub-government-affairs-service/src/apis/landResourceManagement/landManagement/index.js
@@ -68,3 +68,12 @@ export function getLandById(id) {
params: { landId: id },
});
}
+
+// 土地信息审批(PUT)
+export function approveLand(data) {
+ return request({
+ url: '/land-resource/approval/approval',
+ method: 'POST',
+ data,
+ });
+}
diff --git a/sub-government-affairs-service/src/apis/resource/statisticAnalysis.js b/sub-government-affairs-service/src/apis/resource/statisticAnalysis.js
index f2d640e..87f22f7 100644
--- a/sub-government-affairs-service/src/apis/resource/statisticAnalysis.js
+++ b/sub-government-affairs-service/src/apis/resource/statisticAnalysis.js
@@ -15,3 +15,17 @@ export function GetLandData(params = {}) {
params,
});
}
+//获取流转去未流转接口
+export function getOverview(params = {}) {
+ return request('/land-resource/analysis/overview', {
+ method: 'GET',
+ params,
+ });
+}
+//获取具体土地信息
+export function getSubArea(params = {}) {
+ return request('/land-resource/analysis/subArea', {
+ method: 'GET',
+ params,
+ });
+}
diff --git a/sub-government-affairs-service/src/components/AreaCascader/index.vue b/sub-government-affairs-service/src/components/AreaCascader/index.vue
index 81d74f2..b65c570 100644
--- a/sub-government-affairs-service/src/components/AreaCascader/index.vue
+++ b/sub-government-affairs-service/src/components/AreaCascader/index.vue
@@ -98,7 +98,14 @@ async function fetchGridList(regionCode) {
}
}
-onMounted(fetchAreaData);
+onMounted(async () => {
+ await fetchAreaData();
+
+ // 初始化时如果有区域编码,加载对应网格
+ if (props.regionCode) {
+ await fetchGridList(props.regionCode);
+ }
+});
// 样式计算
const containerStyle = computed(() => ({
diff --git a/sub-government-affairs-service/src/components/FileUploader/index.vue b/sub-government-affairs-service/src/components/FileUploader/index.vue
index 808d766..62afe0c 100644
--- a/sub-government-affairs-service/src/components/FileUploader/index.vue
+++ b/sub-government-affairs-service/src/components/FileUploader/index.vue
@@ -2,6 +2,7 @@
diff --git a/sub-government-affairs-service/src/components/UrlSelect/index.vue b/sub-government-affairs-service/src/components/UrlSelect/index.vue
index bbb6394..e2ed994 100644
--- a/sub-government-affairs-service/src/components/UrlSelect/index.vue
+++ b/sub-government-affairs-service/src/components/UrlSelect/index.vue
@@ -11,19 +11,12 @@
@remove-tag="$emit('remove-tag', $event)"
@scroll="$emit('scroll', $event)"
>
-
-
-
+
+
+
-
-
-
-
-
-
-
diff --git a/sub-government-affairs-service/src/components/tableComponent.vue b/sub-government-affairs-service/src/components/tableComponent.vue
new file mode 100644
index 0000000..bebcf19
--- /dev/null
+++ b/sub-government-affairs-service/src/components/tableComponent.vue
@@ -0,0 +1,331 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (currentPage - 1) * pageSize + $index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/composables/useLandCrud.js b/sub-government-affairs-service/src/composables/useLandCrud.js
index 3b26c1b..b6f8e95 100644
--- a/sub-government-affairs-service/src/composables/useLandCrud.js
+++ b/sub-government-affairs-service/src/composables/useLandCrud.js
@@ -1,5 +1,5 @@
import { ref } from 'vue';
-import { fetchLandList, deleteLand, createLand, updateLand } from '@/apis/landResourceManagement/landManagement';
+import { createLand, deleteLand, editLand, fetchLandList, getLandById } from '@/apis/landResourceManagement/landManagement';
import { ElMessageBox, ElMessage } from 'element-plus';
import { cloneDeep } from 'lodash';
@@ -36,7 +36,7 @@ export function useLandCrud(type) {
await createLand({ ...data, type });
ElMessage.success('新增成功');
} else {
- await updateLand(data);
+ await editLand(data);
ElMessage.success('更新成功');
}
formVisible.value = false;
diff --git a/sub-government-affairs-service/src/config/map.js b/sub-government-affairs-service/src/config/map.js
new file mode 100644
index 0000000..a8da465
--- /dev/null
+++ b/sub-government-affairs-service/src/config/map.js
@@ -0,0 +1,55 @@
+export const map_config = {
+ tianditu: {
+ version: '4.0',
+ token: '5e3204b9312c1d2618049d90a4ae917c',
+ center: [100.088, 23.883],
+ zoom: 13,
+ },
+
+ baseMaps: [
+ {
+ label: 'OSM街道图',
+ Url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
+ },
+ {
+ label: 'ArcGIS影像图',
+ Url: 'https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',
+ },
+ {
+ label: 'ArcGIS街道图',
+ Url: 'http://cache1.arcgisonline.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}',
+ },
+ {
+ label: '天地图街道图',
+ Url: 'http://t{s}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=7786923a385369346d56b966bb6ad62f',
+ },
+ {
+ label: '天地图影像图',
+ Url: 'http://t{s}.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=7786923a385369346d56b966bb6ad62f',
+ },
+ {
+ label: '谷歌街道图',
+ Url: 'http://www.google.cn/maps/vt?lyrs=m@189&gl=cn&x={x}&y={y}&z={z}',
+ },
+ {
+ label: '谷歌影像图',
+ Url: 'http://www.google.cn/maps/vt?lyrs=s@189&gl=cn&x={x}&y={y}&z={z}',
+ },
+ {
+ label: '高德街道图',
+ Url: 'http://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
+ },
+ {
+ label: '高德影像图',
+ Url: 'http://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
+ },
+ {
+ label: '百度街道图',
+ Url: 'http://online{s}.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles={styles}&scaler=1&p=1',
+ },
+ {
+ label: '百度影像图',
+ Url: 'http://shangetu{s}.map.bdimg.com/it/u=x={x};y={y};z={z};v=009;type=sate&fm=46',
+ },
+ ],
+};
diff --git a/sub-government-affairs-service/src/main.js b/sub-government-affairs-service/src/main.js
index 1228094..8718b51 100644
--- a/sub-government-affairs-service/src/main.js
+++ b/sub-government-affairs-service/src/main.js
@@ -8,14 +8,20 @@ import 'element-plus/dist/index.css';
import Avue from '@smallwei/avue';
import '@smallwei/avue/lib/index.css';
import './utils/permission';
+import './styles/custom.scss';
import { registerDirective } from './directives';
import { registerGlobalComponents } from './plugins/globalComponents';
import { registerElIcons } from './plugins/icon';
import { registerMicroApps } from './plugins/micro';
import { registerSplitpanes } from './plugins/splitpanes';
+import VueTianditu from 'vue-tianditu';
+import { map_config } from './config/map';
const app = createApp(App);
-app.use(pinia).use(router).use(ElementPlus).use(Avue);
+app.use(pinia).use(router).use(ElementPlus).use(Avue).use(VueTianditu, {
+ v: map_config.tianditu.version,
+ tk: map_config.tianditu.token,
+});
registerGlobalComponents(app);
registerElIcons(app);
registerSplitpanes(app);
diff --git a/sub-government-affairs-service/src/router/modules/inputSupplies/index.js b/sub-government-affairs-service/src/router/modules/inputSupplies/index.js
index b8f4e0f..f8e28e6 100644
--- a/sub-government-affairs-service/src/router/modules/inputSupplies/index.js
+++ b/sub-government-affairs-service/src/router/modules/inputSupplies/index.js
@@ -9,6 +9,18 @@ const inputSuppliesRoutes = [
redirect: '/sub-government-affairs-service/material/pesticide',
meta: { title: '农产品种植管理', icon: 'FullScreen' },
children: [
+ {
+ path: '/sub-government-affairs-service/statistics',
+ name: 'Statistics',
+ component: () => import('@/views/planting-management/statistics/index.vue'),
+ meta: { title: '使用监管概况统计', icon: 'PieChart' },
+ },
+ {
+ path: '/sub-government-affairs-service/variety-record',
+ name: 'PlantVarietyRecord',
+ component: () => import('@/views/planting-management/variety-record/index.vue'),
+ meta: { title: '农产品种植品种备案', icon: 'Calendar' },
+ },
{
path: '/sub-government-affairs-service/material/annualPlans',
name: 'annualPlans',
diff --git a/sub-government-affairs-service/src/styles/custom.scss b/sub-government-affairs-service/src/styles/custom.scss
new file mode 100644
index 0000000..4c81671
--- /dev/null
+++ b/sub-government-affairs-service/src/styles/custom.scss
@@ -0,0 +1,348 @@
+.app-container {
+ .container-custom {
+ width: 100%;
+ overflow: hidden; /* 防止全局滚动条 */
+ border-radius: 10px;
+ background: #fff;
+
+ .custom-h2 {
+ margin: 14px 0 0 20px;
+ font-size: 24px;
+ }
+
+ .search-box {
+ overflow: hidden;
+ padding: 16px 8px 0 16px;
+ background: #fff;
+ .order-tab {
+ width: 100%;
+ .el-tabs__nav-wrap::after {
+ background: transparent !important;
+ }
+ .el-tabs__active-bar {
+ height: 3px !important;
+ border-radius: 4px;
+ }
+ .el-descriptions__label,
+ .el-descriptions__content {
+ font-size: 16px !important;
+ }
+ .cell-item {
+ display: inline-flex;
+ }
+ .el-descriptions__label {
+ color: #999;
+ }
+ .el-descriptions__content {
+ color: #333;
+ }
+ }
+ }
+ .search-bar {
+ display: flex;
+ flex-shrink: 0; /* 禁止收缩 */
+
+ .search-bar-left {
+ flex: 1;
+ }
+
+ .search-bar-right {
+ width: 100px;
+ text-align: right;
+ padding-right: 8px;
+ }
+
+ .demo-form-inline {
+ text-align: left;
+ }
+
+ .el-form--inline .el-form-item {
+ margin-right: 30px;
+ }
+
+ .demo-form-inline .el-input {
+ --el-input-width: 160px;
+ }
+
+ .demo-form-inline .el-select {
+ --el-select-width: 160px;
+ }
+
+ .demo-form-inline .el-date-picker {
+ --el-select-width: 160px;
+ }
+ .el-form .el-form-item__label {
+ font-weight: 400;
+ }
+ .custom-form-inline .el-input {
+ width: 260px;
+ }
+ }
+ .table-toolbar {
+ text-align: left;
+ padding-left: 20px;
+ padding-top: 20px;
+ background-color: #fff;
+ }
+ .table-cont {
+ padding: 10px 20px;
+ overflow: hidden;
+ background-color: #fff;
+ position: relative;
+ .el-table__empty-text {
+ width: 200px;
+ }
+ .el-button-custom{
+ font-size: 14px !important;
+ color: #25bf82;
+ padding: 0;
+ }
+ .el-button-delete{
+ font-size: 14px !important;
+ color: #ff4d4f;
+ padding: 0;
+ }
+ }
+
+ /* 自定义弹窗样式 */
+ .traceability-dialog {
+ background: transparent;
+ box-shadow: none;
+ border-radius: 16px !important;
+ }
+
+ /* 主要内容区域 */
+ .dialog-content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ background: white;
+ border-radius: 8px;
+ padding: 0 0 20px 0;
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+ }
+
+ /* 产品信息 */
+ .product-info {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 20px;
+ font-size: 14px;
+ color: #666;
+ }
+
+ .product-name {
+ font-weight: bold;
+ color: #333;
+ }
+
+ /* 二维码图片 */
+ .qrcode-image {
+ width: 200px;
+ height: 200px;
+ margin: 0 auto;
+ }
+
+ /* 下载区域 */
+ .download-section {
+ display: flex;
+ align-items: center;
+ margin: 0 0 10px 0;
+ color: #25bf82;
+ cursor: pointer;
+ font-size: 12px;
+ line-height: 18px;
+ }
+
+ .download-icon {
+ margin-left: 8px;
+ font-size: 16px;
+ }
+
+ /* 遗传编码区域 */
+ .code-section {
+ display: flex;
+ align-items: center;
+ margin: 10px 0;
+ background: rgba(37, 191, 130, 0.1);
+ border-radius: 4px;
+ }
+
+ .genetic-code {
+ font-family: monospace;
+ font-size: 14px;
+ color: #25bf82;
+ display: inline-block;
+ max-width: 250px;
+ padding: 0 10px;
+ }
+
+ .copy-icon {
+ margin-left: 10px;
+ color: #409eff;
+ cursor: pointer;
+ font-size: 16px;
+ }
+
+ /* 关闭按钮 */
+ .close-button {
+ position: absolute;
+ left: 50%;
+ transform: translateX(-50%);
+ bottom: -60px;
+ color: white;
+ font-size: 30px;
+ cursor: pointer;
+ transition: all 0.3s;
+ }
+ }
+ // 表格中文本的颜色
+ .color-blue {
+ color: #3685fe;
+ }
+ .color-black {
+ color: #000000;
+ }
+ .color-gray {
+ color: #5a5a5a;
+ }
+ .color-orange {
+ color: #ffb345;
+ }
+ .color-green {
+ color: #25bf82;
+ }
+ .color-red {
+ color: #ff4348;
+ }
+}
+.el-button {
+ font-size: 12px !important;
+ font-weight: 400;
+}
+// 页面添加的自定义容器,上下撑满
+.customer-control {
+ position: absolute;
+ height: 100%;
+ left: 0;
+ right: 0;
+ min-width: 1000px;
+}
+// 表格组件中的各插槽元素自定义样式
+.custom-tooltip-content {
+ display: flex;
+ justify-content: space-between;
+ gap: 10px;
+ padding: 3px 0;
+
+}
+.el-icon-custom {
+ vertical-align: middle;
+ cursor: pointer;
+ font-size: 16px;
+ // color: #fff;
+}
+.table-cell-img-box {
+ width: 60px;
+ height: 60px;
+ text-align: center;
+ overflow: hidden; /* 隐藏超出部分 */
+ display: flex; /* 使用 Flex 布局居中 */
+ justify-content: center;
+ align-items: center;
+ .table-cell-img {
+ min-width: 100%; /* 至少撑满宽度 */
+ min-height: 100%; /* 至少撑满高度 */
+ object-fit: cover; /* 保持比例并覆盖容器 */
+ }
+}
+
+// 新增商品页面-开始
+.customer-box {
+ height: 100%;
+ border-radius: 16px;
+ padding: 20px 16px;
+ overflow-y: auto;
+ background-color: #fff;
+ .my-el-select {
+ width: 200px;
+ }
+ .el-input-number .el-input__inner {
+ text-align: left;
+ }
+ // 商品属性
+ .attr-item {
+ display: inline-block;
+ margin-right: 10px;
+ .el-icon {
+ vertical-align: middle;
+ margin: 5px;
+ }
+ }
+ .attr-row {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ flex-wrap: nowrap;
+ gap: 10px;
+ margin-bottom: 10px;
+ }
+ .attr-input {
+ width: 120px;
+ }
+ .attr-clomn {
+ width: 160px;
+ }
+ .attr-clomn200 {
+ width: 160px;
+ }
+ .attr-clomn220 {
+ width: 220px;
+ }
+ .attr-box {
+ padding: 16px 16px 6px 16px;
+ border-radius: 6px;
+ border: 1px solid #999;
+ }
+}
+// 新增商品页面-结束
+
+// 弹性布局-左对齐-上对齐
+.flex-left-top {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: flex-start;
+}
+
+// 溢出隐藏
+.text-ellipsis {
+ width: 100%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+// 弹窗表单样式-子元素一行2个列
+.dialog-form-container {
+ .dialog-form-title {
+ font-weight: bold;
+ margin-bottom: 20px;
+ }
+ .dialog-form-item{
+ margin-right: 20px;
+ .el-input,
+ .el-select {
+ width: 230px;
+ }
+ }
+ .dialog-form-many {
+ position: relative;
+ .dialog-form-many-delete {
+ position: absolute;
+ top: 28px;
+ right: 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/sub-government-affairs-service/src/views/inputSuppliesManage/material/pesticide/index.vue b/sub-government-affairs-service/src/views/inputSuppliesManage/material/pesticide/index.vue
index 2f6df0b..cc955d8 100644
--- a/sub-government-affairs-service/src/views/inputSuppliesManage/material/pesticide/index.vue
+++ b/sub-government-affairs-service/src/views/inputSuppliesManage/material/pesticide/index.vue
@@ -1,617 +1,477 @@
-
- 农药基本信息
-
-
- {
- getData(1);
- done();
- }
- "
- @search-reset="getData(1)"
- @refresh-change="getData"
- @current-change="getData"
- @size-change="getData(1)"
- @row-save="handleRowSave"
- @row-update="handleRowUpdate"
- >
-
-
+
+
+
农药使用监管
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 重置
+
+
+
+
+
+
+ 新增
+
+
+
+
+
+ 详情
+ 编辑
+ 删除
+
+
+
+
+
+
+ 农药用药详情
+
+
+
+
+
+
+
+
+
+
+
+
+ 土地残留检测
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 农药用药信息
+ 添加用药信息
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
- {{ value }}
-
-
-
- {{ value }}
-
-
-
-
-
-
+
+
+};
+const cancelDialog = async () => {
+ restDialogForm();
+ dialogFormVisible.value = false;
+};
+const restDialogForm = () => {
+ Object.assign(dialogForm, {
+ id: '',
+ name: '',
+ phone: '',
+ landId: '',
+ landName: '',
+ detectionTime: '',
+ detectionResult: '',
+ detectionUnit: '',
+ detectionReport: '',
+ pesticideSuperviseDetailVO: [{ pesticideId: '', pesticideName: '', useNumber: 1, useTime: '', useUnit: 'ml' }],
+ });
+};
+onMounted(() => {
+ onSubmit();
+ getLandsList();
+ getPesticidesList();
+});
+
diff --git a/sub-government-affairs-service/src/views/inputSuppliesManage/material/pesticide/index原.vue b/sub-government-affairs-service/src/views/inputSuppliesManage/material/pesticide/index原.vue
new file mode 100644
index 0000000..e680321
--- /dev/null
+++ b/sub-government-affairs-service/src/views/inputSuppliesManage/material/pesticide/index原.vue
@@ -0,0 +1,624 @@
+
+
+ 农药使用监管
+
+
+ {
+ getData(1);
+ done();
+ }
+ "
+ @search-reset="getData(1)"
+ @refresh-change="getData"
+ @current-change="getData"
+ @size-change="getData(1)"
+ @row-save="handleRowSave"
+ @row-update="handleRowUpdate"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ value }}
+
+
+
+ {{ value }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/inputSuppliesManage/material/seed/index.vue b/sub-government-affairs-service/src/views/inputSuppliesManage/material/seed/index.vue
index 5ad332f..74b710f 100644
--- a/sub-government-affairs-service/src/views/inputSuppliesManage/material/seed/index.vue
+++ b/sub-government-affairs-service/src/views/inputSuppliesManage/material/seed/index.vue
@@ -1,263 +1,413 @@
-
- 种子基本信息
-
-
- {
- getData(1);
- done();
- }
- "
- @search-reset="getData(1)"
- @refresh-change="getData"
- @current-change="getData"
- @size-change="getData(1)"
- @row-save="handleRowSave"
- >
-
- 详情
- 删除
+
+
+
种子种苗管理
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 重置
+
+
+
+
+
+
+ 新增
+
+
+
+
+
+ 查看
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+};
+const cancelDialog = async () => {
+ restDialogForm();
+ dialogFormVisible.value = false;
+};
+const restDialogForm = () => {
+ Object.assign(dialogForm, {
+ id: '',
+ seedName: '', //种子种苗名称
+ varietyName: '', //品种名称
+ brand: '', //品牌
+ manufacturer: '', //生产厂家
+ classifyId: '', //蔬菜种苗id
+ classifyName: '', //蔬菜种苗名称
+ productSpecification: '', //产品规格(number)
+ productUnit: '', //产品规格单位
+ productAttributes: '', //自定义商品属性
+ photoUrl: '', //种子种苗主图
+ photoUrlDetail: '', //种子种苗详情图
+ });
+};
+const seedTypeList = ref([]);
+const seedTypeDialogList = ref([]);
+const getSeedTypeList = async () => {
+ try {
+ let response = await getMaterailTypes({ moduleType: '4' });
+ console.log(response);
+ if (response.code == 200) {
+ if (response.data?.length > 0) {
+ seedTypeDialogList.value = response.data[0].children;
+ let result = extractThirdLevelChildren(response.data);
+ seedTypeList.value = result;
+ console.log(seedTypeDialogList.value);
+ }
+ }
+ } catch (error) {
+ console.error(error);
+ }
+};
+// 级联选择器配置
+const cascaderProps = ref({
+ label: 'dataName', // 选项标签字段名
+ value: 'id', // 选项值字段名
+ children: 'children', // 子选项字段名
+ emitPath: true,
+ expandTrigger: 'hover',
+});
+const handleCascaderChange = () => {
+ const selectedNames = getSelectedNames(dialogForm.classifyId);
+ console.log('对应的名称:', selectedNames); // 例如: ['花草类种子', '具体种子名称']
+ // 如果需要,可以将名称也保存到表单数据中
+ dialogForm.classifyName = selectedNames;
+};
+const getSelectedNames = (ids) => {
+ if (!ids || !ids.length) return [];
+
+ let names = [];
+ let currentLevel = seedTypeDialogList.value;
+
+ for (const id of ids) {
+ const foundItem = currentLevel.find((item) => item.id === id);
+ if (!foundItem) break;
+
+ names.push(foundItem.dataName);
+ currentLevel = foundItem.children || [];
+ }
+
+ return names;
+};
+
+onMounted(() => {
+ onSubmit();
+ getSeedTypeList();
+});
+
diff --git a/sub-government-affairs-service/src/views/inputSuppliesManage/material/seed/index原.vue b/sub-government-affairs-service/src/views/inputSuppliesManage/material/seed/index原.vue
new file mode 100644
index 0000000..5ad332f
--- /dev/null
+++ b/sub-government-affairs-service/src/views/inputSuppliesManage/material/seed/index原.vue
@@ -0,0 +1,263 @@
+
+
+ 种子基本信息
+
+
+ {
+ getData(1);
+ done();
+ }
+ "
+ @search-reset="getData(1)"
+ @refresh-change="getData"
+ @current-change="getData"
+ @size-change="getData(1)"
+ @row-save="handleRowSave"
+ >
+
+ 详情
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/planting-management/statistics/index.vue b/sub-government-affairs-service/src/views/planting-management/statistics/index.vue
new file mode 100644
index 0000000..6d99cb5
--- /dev/null
+++ b/sub-government-affairs-service/src/views/planting-management/statistics/index.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/planting-management/variety-record/components/RecordForm.vue b/sub-government-affairs-service/src/views/planting-management/variety-record/components/RecordForm.vue
new file mode 100644
index 0000000..2105e1a
--- /dev/null
+++ b/sub-government-affairs-service/src/views/planting-management/variety-record/components/RecordForm.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/planting-management/variety-record/components/RecordPage.vue b/sub-government-affairs-service/src/views/planting-management/variety-record/components/RecordPage.vue
new file mode 100644
index 0000000..9c55009
--- /dev/null
+++ b/sub-government-affairs-service/src/views/planting-management/variety-record/components/RecordPage.vue
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 提交
+
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/planting-management/variety-record/components/SearchBar.vue b/sub-government-affairs-service/src/views/planting-management/variety-record/components/SearchBar.vue
new file mode 100644
index 0000000..594b552
--- /dev/null
+++ b/sub-government-affairs-service/src/views/planting-management/variety-record/components/SearchBar.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/planting-management/variety-record/index.vue b/sub-government-affairs-service/src/views/planting-management/variety-record/index.vue
new file mode 100644
index 0000000..35e73e3
--- /dev/null
+++ b/sub-government-affairs-service/src/views/planting-management/variety-record/index.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/planting-management/variety-record/indexBac.vue b/sub-government-affairs-service/src/views/planting-management/variety-record/indexBac.vue
new file mode 100644
index 0000000..b445e14
--- /dev/null
+++ b/sub-government-affairs-service/src/views/planting-management/variety-record/indexBac.vue
@@ -0,0 +1,537 @@
+
+
+
农产品种植品种备案
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 基本信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 承包信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 流转信息
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/planting-management/variety-record/mockData.js b/sub-government-affairs-service/src/views/planting-management/variety-record/mockData.js
new file mode 100644
index 0000000..2f04b04
--- /dev/null
+++ b/sub-government-affairs-service/src/views/planting-management/variety-record/mockData.js
@@ -0,0 +1,87 @@
+export const mockData = [
+ {
+ id: 'LD20230001',
+ landName: '阳光农场1号地',
+ area: 120.5,
+ fullRegionName: '浙江省杭州市余杭区',
+ gridName: '网格A',
+ address: '余杭区五常街道阳光路1号',
+ CropName: '水稻',
+ CropVarietyName: '超级稻',
+ plantingStartTime: '2023-04-10',
+ plantingEndTime: '2023-09-20',
+ businessSubjectName: '杭州阳光农业有限公司',
+ account: '13800138001',
+ fillTime: '2023-04-05 10:30',
+ auditTime: '', // 待审核状态没有审核时间
+ landStatus: 0, // 0=待审核
+ },
+ {
+ id: 'LD20230002',
+ landName: '绿洲农场2号地',
+ area: 85.2,
+ fullRegionName: '浙江省杭州市西湖区',
+ gridName: '网格B',
+ address: '西湖区转塘街道绿洲路2号',
+ CropName: '小麦',
+ CropVarietyName: '冬小麦',
+ plantingStartTime: '2023-03-15',
+ plantingEndTime: '2023-07-25',
+ businessSubjectName: '杭州绿洲农业合作社',
+ account: '13900139002',
+ fillTime: '2023-03-10 14:20',
+ auditTime: '2023-03-12 09:15', // 已通过有审核时间
+ landStatus: 1, // 1=已通过
+ },
+ {
+ id: 'LD20230003',
+ landName: '丰收农场3号地',
+ area: 200.0,
+ fullRegionName: '浙江省杭州市萧山区',
+ gridName: '网格C',
+ address: '萧山区宁围街道丰收路3号',
+ CropName: '玉米',
+ CropVarietyName: '甜玉米',
+ plantingStartTime: '2023-05-01',
+ plantingEndTime: '2023-10-30',
+ businessSubjectName: '萧山丰收农业有限公司',
+ account: '13700137003',
+ fillTime: '2023-04-28 16:45',
+ auditTime: '2023-04-30 11:00', // 已驳回有审核时间
+ landStatus: 2, // 2=已驳回
+ },
+ {
+ id: 'LD20230004',
+ landName: '试验田4号地',
+ area: 50.8,
+ fullRegionName: '浙江省杭州市滨江区',
+ gridName: '网格D',
+ address: '滨江区长河街道试验田路4号',
+ CropName: '大豆',
+ CropVarietyName: '转基因大豆',
+ plantingStartTime: '2023-06-01',
+ plantingEndTime: '2023-11-15',
+ businessSubjectName: '滨江农业研究所',
+ account: '13600136004',
+ fillTime: '2023-05-25 09:10',
+ auditTime: '', // 待审核状态没有审核时间
+ landStatus: 0, // 0=待审核
+ },
+ {
+ id: 'LD20230005',
+ landName: '有机农场5号地',
+ area: 180.3,
+ fullRegionName: '浙江省杭州市临安区',
+ gridName: '网格E',
+ address: '临安区青山湖街道有机路5号',
+ CropName: '蔬菜',
+ CropVarietyName: '有机菠菜',
+ plantingStartTime: '2023-02-20',
+ plantingEndTime: '2023-12-31',
+ businessSubjectName: '临安有机农业有限公司',
+ account: '13500135005',
+ fillTime: '2023-02-15 13:25',
+ auditTime: '2023-02-18 10:30', // 已通过有审核时间
+ landStatus: 1, // 1=已通过
+ },
+];
diff --git a/sub-government-affairs-service/src/views/productOperateMain/coOp/index.vue b/sub-government-affairs-service/src/views/productOperateMain/coOp/index.vue
index 74c44fc..0dc337b 100644
--- a/sub-government-affairs-service/src/views/productOperateMain/coOp/index.vue
+++ b/sub-government-affairs-service/src/views/productOperateMain/coOp/index.vue
@@ -2,7 +2,7 @@
-
+
@@ -60,7 +60,7 @@ import { getEnterList, getEnterById, addEnter, updateEnter, approvalEnter, delet
// 控制弹窗显示
const visible = ref(false);
-const activeCrudTab = ref('0');
+const activeCrudTab = ref('1');
const activeTab = ref('basic');
const dialogTitle = ref('新增');
const isReadonly = ref(false);
@@ -173,13 +173,19 @@ const crudOptions = reactive({
searchBtn: false,
emptyBtn: false,
column: [
+ { label: '生产经营主体编码', prop: 'id' },
{ label: '企业名称', prop: 'businessName' },
- { label: '所属行政区划', prop: 'address' },
+ { label: '企业负责人', prop: 'contactPerson' },
+ { label: '联系方式', prop: 'phone' },
+ { label: '企业地址', prop: 'address' },
+ { label: '地块数量', prop: 'villageCount' },
+ { label: '地块编号', prop: 'villageCode' },
+ { label: '地块名称', prop: 'villageName' },
{ label: '面积', prop: 'area', formatter: (row, column, cellValue) => `${Number(cellValue).toFixed(2)} 亩` },
- { label: '经营产品', prop: 'businessScope' },
- { label: '联系人', prop: 'contactPerson' },
- { label: '联系电话', prop: 'phone' },
- // { label: '聘工人数', prop: 'villageCount' },
+ { label: '所属行政区划', prop: 'address' },
+ { label: '所属网格', prop: 'gridCode' },
+ { label: '种植作物', prop: 'primaryProduct' },
+ { label: '账号(手机号)', prop: 'account' },
{ label: '信息录入时间', prop: 'createTime' },
{ label: '信息更新时间', prop: 'updateTime' },
],
diff --git a/sub-government-affairs-service/src/views/productOperateMain/coOp/oldindex.vue b/sub-government-affairs-service/src/views/productOperateMain/coOp/oldindex.vue
deleted file mode 100644
index 90e9ba1..0000000
--- a/sub-government-affairs-service/src/views/productOperateMain/coOp/oldindex.vue
+++ /dev/null
@@ -1,712 +0,0 @@
-
-
-
-
-
- 批量删除
-
-
-
-
-
-
-
-
-
diff --git a/sub-government-affairs-service/src/views/productOperateMain/individual/index.vue b/sub-government-affairs-service/src/views/productOperateMain/individual/index.vue
index 2230106..3953b1a 100644
--- a/sub-government-affairs-service/src/views/productOperateMain/individual/index.vue
+++ b/sub-government-affairs-service/src/views/productOperateMain/individual/index.vue
@@ -13,7 +13,7 @@
-
+
@@ -141,7 +141,7 @@ const isAuditor = computed(() => role.value === 'auditor');
// ---------------------------------------------------------------------
// 2. Tab 与数据的状态控制
// ---------------------------------------------------------------------
-const activeTab = ref('0');
+const activeTab = ref('1');
const dialogTitle = ref('新增');
const isReadonly = ref(false);
// 搜索表单模型
@@ -203,26 +203,19 @@ const crudOptions = reactive({
emptyBtn: false,
refreshBtn: false,
column: [
+ { label: '生产经营主体编码', prop: 'id' },
{ label: '姓名', prop: 'name' },
- {
- label: '证件类型',
- prop: 'idType',
- formatter: (row, column, cellValue) => {
- return cellValue === '101' ? '身份证' : cellValue === '2' ? '护照' : cellValue === '3' ? '港澳身份证' : '';
- },
- },
- { label: '证件号码', prop: 'idCardEncrypt' },
- {
- label: '性别',
- prop: 'sex',
- formatter: (row, column, cellValue) => {
- return cellValue === '1' ? '男' : cellValue === '0' ? '女' : '';
- },
- },
- { label: '年龄', prop: 'age' },
{ label: '联系方式', prop: 'phone' },
- { label: '居住地行政区划', prop: 'address' },
+ // 地址
+ { label: '地址', prop: 'address', width: '300px' },
+ { label: '地块数量', prop: 'villageCount' },
+ { label: '地块编号', prop: 'villageCode' },
+ { label: '地块名称', prop: 'villageName' },
+ { label: '面积', prop: 'area', formatter: (row, column, cellValue) => `${Number(cellValue).toFixed(2)} 亩` },
+ { label: '所属行政区划', prop: 'address' },
+ { label: '所属网格', prop: 'gridCode' },
{ label: '种植作物', prop: 'planCropName' },
+ { label: '账号(手机号)', prop: 'account' },
{ label: '创建时间', prop: 'createTime' },
{ label: '更新时间', prop: 'updateTime' },
],
diff --git a/sub-government-affairs-service/src/views/resource/database/ForestLand.vue b/sub-government-affairs-service/src/views/resource/database/ForestLand.vue
new file mode 100644
index 0000000..9cc63e1
--- /dev/null
+++ b/sub-government-affairs-service/src/views/resource/database/ForestLand.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/resource/database/Grassland.vue b/sub-government-affairs-service/src/views/resource/database/Grassland.vue
index 5209aa7..68a239d 100644
--- a/sub-government-affairs-service/src/views/resource/database/Grassland.vue
+++ b/sub-government-affairs-service/src/views/resource/database/Grassland.vue
@@ -142,18 +142,8 @@
@@ -272,6 +262,22 @@ const crudOptions = reactive({
icon: 'delete',
event: ({ row }) => handleDelete(row),
},
+ {
+ name: '审核',
+ icon: 'approve',
+ event: ({ row }) => onApprove(row),
+ },
+ // TODO: 驳回应该有填写驳回原因的弹窗
+ {
+ name: '驳回',
+ icon: 'reject',
+ event: ({ row }) => onReject(row),
+ },
+ {
+ name: '驳回原因',
+ icon: 'reject',
+ event: ({ row }) => onRejectReason(row),
+ },
],
});
const handleTabChange = ({ name }) => {
@@ -347,7 +353,7 @@ const handleSubmit = async () => {
// ---------------------------------------------------------------------
// 业务代码
// ---------------------------------------------------------------------
-import { createLand, deleteLand, editLand, fetchLandList, getLandById } from '@/apis/landResourceManagement/landManagement';
+import { createLand, deleteLand, editLand, fetchLandList, getLandById, approveLand } from '@/apis/landResourceManagement/landManagement';
onMounted(() => {
getData();
@@ -385,6 +391,53 @@ const fetchLandTypeData = async () => {
console.error('获取土地类型数据失败', error);
}
};
+const submitAll = async () => {
+ console.log('提交表单:', formData.value);
+ await editLand(formData.value);
+ ElMessage.success('保存成功');
+ resetForm();
+ visible.value = false;
+};
+
+const onApprove = async (row) => {
+ // UNSUBMIT(-1,"未提交"),
+ // REVIEW(0,"待审核"),
+ // PASS(1,"通过"),
+ // REFUSE(2,"驳回");
+ if (row.landStatus !== 0) {
+ ElMessage.error('该地块状态不是待审核状态');
+ return;
+ }
+ const requiredBody = {
+ bizType: 'landResInfo',
+ bizId: row.id,
+ status: 1,
+ opinion: '',
+ };
+ await approveLand(requiredBody);
+ ElMessage.success('审核成功');
+ getData();
+};
+
+const onReject = async (row) => {
+ if (row.landStatus !== 0) {
+ ElMessage.error('该地块状态不是待审核状态');
+ return;
+ }
+ const requiredBody = {
+ bizType: 'landResInfo',
+ bizId: row.id,
+ status: 2,
+ opinion: '',
+ };
+ await approveLand(requiredBody);
+ ElMessage.success('驳回成功');
+ getData();
+};
+// 显示驳回原因
+const onRejectReason = async (row) => {
+ ElMessageBox.alert(row.rejectReason || '无驳回原因', '驳回原因');
+};
const handleAdd = () => {
console.log('handleAdd');
resetForm();
diff --git a/sub-government-affairs-service/src/views/resource/database/LandMap.vue b/sub-government-affairs-service/src/views/resource/database/LandMap.vue
index cfa7f6b..09701fa 100644
--- a/sub-government-affairs-service/src/views/resource/database/LandMap.vue
+++ b/sub-government-affairs-service/src/views/resource/database/LandMap.vue
@@ -1,20 +1,401 @@
-
-
+
+
+
+
+
+
+
+
+
+ {{ row.area.toFixed(2) }}
+
+
+
+
+
总面积: {{ totalArea.toFixed(2) }} ㎡
+
+
+ 新增地块
+ 删除地块
+
+
+
+
+
+
+
+
+
+ 矢量
+ 影像
+
+
+
+
+
+
+
+
缩放级别: {{ mapZoom }}, 比例尺: 1:{{ scale.toLocaleString() }}
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
-
diff --git a/sub-government-affairs-service/src/views/resource/database/LandMapBak.vue b/sub-government-affairs-service/src/views/resource/database/LandMapBak.vue
new file mode 100644
index 0000000..49c7114
--- /dev/null
+++ b/sub-government-affairs-service/src/views/resource/database/LandMapBak.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/resource/database/Statistics.vue b/sub-government-affairs-service/src/views/resource/database/Statistics.vue
index b0a241f..f6b1187 100644
--- a/sub-government-affairs-service/src/views/resource/database/Statistics.vue
+++ b/sub-government-affairs-service/src/views/resource/database/Statistics.vue
@@ -1,13 +1,130 @@
-
-
+
+
diff --git a/sub-government-affairs-service/src/views/resource/database/components/LandForm.vue b/sub-government-affairs-service/src/views/resource/database/components/LandForm.vue
index e69de29..dae4e5f 100644
--- a/sub-government-affairs-service/src/views/resource/database/components/LandForm.vue
+++ b/sub-government-affairs-service/src/views/resource/database/components/LandForm.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/resource/database/components/LandSearch.vue b/sub-government-affairs-service/src/views/resource/database/components/LandSearch.vue
index e69de29..e58c3fc 100644
--- a/sub-government-affairs-service/src/views/resource/database/components/LandSearch.vue
+++ b/sub-government-affairs-service/src/views/resource/database/components/LandSearch.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/resource/database/components/pie-chart.vue b/sub-government-affairs-service/src/views/resource/database/components/pie-chart.vue
new file mode 100644
index 0000000..5dcbca7
--- /dev/null
+++ b/sub-government-affairs-service/src/views/resource/database/components/pie-chart.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
diff --git a/sub-government-affairs-service/yarn.lock b/sub-government-affairs-service/yarn.lock
index 9aeb966..b0e36a8 100644
--- a/sub-government-affairs-service/yarn.lock
+++ b/sub-government-affairs-service/yarn.lock
@@ -1601,6 +1601,11 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
+claygl@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/claygl/-/claygl-1.3.0.tgz#7a6e2903210519ac358848f5d78070ed211685f3"
+ integrity sha512-+gGtJjT6SSHD2l2yC3MCubW/sCV40tZuSs5opdtn79vFSGUgp/lH139RNEQ6Jy078/L0aV8odCw8RSrUcMfLaQ==
+
clone-regexp@^1.0.0:
version "1.0.1"
resolved "https://registry.npmmirror.com/clone-regexp/-/clone-regexp-1.0.1.tgz#051805cd33173375d82118fc0918606da39fd60f"
@@ -2086,6 +2091,14 @@ dunder-proto@^1.0.0, dunder-proto@^1.0.1:
es-errors "^1.3.0"
gopd "^1.2.0"
+echarts-gl@^2.0.9:
+ version "2.0.9"
+ resolved "https://registry.npmmirror.com/echarts-gl/-/echarts-gl-2.0.9.tgz#ee228a6c7520a6fb7bbb71ea94394f3637ade033"
+ integrity sha512-oKeMdkkkpJGWOzjgZUsF41DOh6cMsyrGGXimbjK2l6Xeq/dBQu4ShG2w2Dzrs/1bD27b2pLTGSaUzouY191gzA==
+ dependencies:
+ claygl "^1.2.1"
+ zrender "^5.1.1"
+
echarts@^5.6.0:
version "5.6.0"
resolved "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz#2377874dca9fb50f104051c3553544752da3c9d6"
@@ -4170,6 +4183,11 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
+mitt@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
+ integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
+
mixin-deep@^1.2.0:
version "1.3.2"
resolved "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
@@ -6503,6 +6521,11 @@ vue-demi@*, vue-demi@^0.14.10:
resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04"
integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==
+vue-demi@^0.12.1:
+ version "0.12.5"
+ resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.12.5.tgz#8eeed566a7d86eb090209a11723f887d28aeb2d1"
+ integrity sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==
+
vue-eslint-parser@^9.4.3:
version "9.4.3"
resolved "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz#9b04b22c71401f1e8bca9be7c3e3416a4bde76a8"
@@ -6523,6 +6546,14 @@ vue-router@^4.2.5:
dependencies:
"@vue/devtools-api" "^6.6.4"
+vue-tianditu@^2.7.6:
+ version "2.7.6"
+ resolved "https://registry.npmmirror.com/vue-tianditu/-/vue-tianditu-2.7.6.tgz#c48425c49306300cae9664182dd170c626a38371"
+ integrity sha512-Yvcxg0IAgGB3ZY8zlC5ayjo9f85fa8PFTaifguTNpri76g67GO9toaRWMjBKi39yYHMBADaT3P6bEkJx87X8MQ==
+ dependencies:
+ mitt "^3.0.0"
+ vue-demi "^0.12.1"
+
vue@^3.3.11:
version "3.5.13"
resolved "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz#9f760a1a982b09c0c04a867903fc339c9f29ec0a"
@@ -6679,7 +6710,7 @@ yocto-queue@^0.1.0:
resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
-zrender@5.6.1:
+zrender@5.6.1, zrender@^5.1.1:
version "5.6.1"
resolved "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz#e08d57ecf4acac708c4fcb7481eb201df7f10a6b"
integrity sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==