From 1a8a9ff4fd90e28bf33bca809c5ea0372db3dd48 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Thu, 04 Sep 2025 17:13:34 +0800
Subject: [PATCH] feat:设置间距
---
src/views/resource/components/spotDetails.vue | 167 +++++++++++++++++++++++++++++++++++++------------------
1 files changed, 113 insertions(+), 54 deletions(-)
diff --git a/src/views/resource/components/spotDetails.vue b/src/views/resource/components/spotDetails.vue
index bc2d166..aec18a0 100644
--- a/src/views/resource/components/spotDetails.vue
+++ b/src/views/resource/components/spotDetails.vue
@@ -28,7 +28,7 @@
<el-select
v-model="item.value"
placeholder="请选择图斑类型"
- style="width: 100%"
+ style="width: 102%"
>
<el-option
v-for="opt in spotTypeOptions"
@@ -39,11 +39,11 @@
</el-select>
</template>
<template v-else-if="item.name === '文件名称'">
- <el-input v-model="item.value" />
+ <el-input style="width: 102%" v-model="item.value" />
</template>
</template>
- <template v-else>
- <div class="itemValue">{{ item.value }}</div>
+ <template v-else >
+ <div class="itemValue" :class="{ 'error-text': item.name === '异常图斑数量' }">{{ item.value }}</div>
</template>
</div>
</div>
@@ -59,9 +59,9 @@
<div class="tabname">图斑列表</div>
<el-table
ref="polygonTableEle"
- highlight-current-row
+ highlight-current-row
:row-class-name="tableRowClassName"
- :data="tableData"
+ :data="tableData"
@row-click="handleLocationPolygon"
>
<el-table-column type="index" align="center" width="30" label="序号">
@@ -89,7 +89,8 @@
:current-page="params.page"
:page-size="params.pageSize"
background
- layout="prev, pager, next"
+ layout="prev, pager, next, ..."
+ :pager-count="3"
prev-text="上一页"
next-text="下一页"
:total="total"
@@ -143,6 +144,9 @@
let tbJwdList = [];
let total = ref(0);
const refreshonload = inject('searchReset');
+const initialFileName = ref('');
+const initialSpotTypeId = ref('');
+const initialSpotTypeLabel = ref('');
// 当前选中的图斑面数据
let nowSelectObj = ref({});
// 记录上一次点击高亮
@@ -156,6 +160,7 @@
const selectionList = ref([]);
// 当前在编辑状态的异常图斑
let curCustomPolygon = null;
+
// 表格隔行变色
const tableRowClassName = ({ rowIndex }) => {
return rowIndex % 2 === 1 ? 'oddNumberRow' : 'even-row';
@@ -198,38 +203,32 @@
return option ? option.label : '';
};
const updateInfoList = detailData => {
+
+ if (detailData && (initialFileName.value === '' || initialSpotTypeId.value === '')) {
+ initialFileName.value = detailData.file_name || '';
+ initialSpotTypeId.value = detailData.lot_type_id || '';
+ initialSpotTypeLabel.value = detailData.patches_type_desc
+ ? detailData.patches_type_desc
+ : getPatchTypeLabel(detailData.lot_type_id);
+ }
+
infoList.value = infoList.value.map(item => {
let value = detailData[item.field] !== undefined ? detailData[item.field] : item.value;
- // 处理图斑类型字段
+
if (item.name === '图斑类型') {
- // 如果有 patches_type_desc,显示它(但存储的是 lot_type_id)
if (detailData.patches_type_desc !== undefined) {
- return {
- ...item,
- value: detailData.patches_type_desc,
- // 保留原始 lot_type_id 用于提交
- originalValue: detailData.lot_type_id,
- };
- }
- // 否则根据 lot_type_id 查找对应的 label
- else if (detailData.lot_type_id !== undefined) {
- return {
- ...item,
- value: getPatchTypeLabel(detailData.lot_type_id),
- originalValue: detailData.lot_type_id,
- };
+ return { ...item, value: detailData.patches_type_desc, originalValue: detailData.lot_type_id };
+ } else if (detailData.lot_type_id !== undefined) {
+ return { ...item, value: getPatchTypeLabel(detailData.lot_type_id), originalValue: detailData.lot_type_id };
}
}
- return {
- ...item,
- value: value,
- };
+ return { ...item, value: value };
});
};
const params = ref({
page: 1,
- pageSize: 20,
+ pageSize: 10,
});
// 图斑管理表格
const getTableList = () => {
@@ -279,6 +278,7 @@
};
// 初始化所有图斑
const entitiesAddSpot = () => {
+ viewer?.entities.removeAll(); //清除旧实体
tableData.value.forEach(item => {
// 取出当中经纬度
const numbersWithCommas = item.dkfw.match(/\d+(\.\d+)?/g);
@@ -324,6 +324,11 @@
const boundingSphere = Cesium.BoundingSphere.fromPoints(positions);
homeViewer.value?.camera.flyToBoundingSphere(boundingSphere, {
duration: 0,
+ offset: new Cesium.HeadingPitchRange(
+ Cesium.Math.toRadians(-45),
+ Cesium.Math.toRadians(-90),
+
+ ),
});
}
viewInstance.value?.removeLeftClickEvent('spotHighlighting');
@@ -444,24 +449,54 @@
});
};
-// 完成
+// 保存
const handleSave = () => {
- const fileNameItem = infoList.value.find(item => item.name === '文件名称');
- const patchTypeItem = infoList.value.find(item => item.name === '图斑类型');
- const updateParams = {
- file_name: fileNameItem?.value || '',
- lot_type_id: patchTypeItem?.value || '',
- type: patchTypeItem?.value || '',
- id: props.detailList.id,
- };
- patchEditApi(updateParams).then(res => {
- ElMessage.success(res.data.data);
- refreshonload();
- uploadPatchDialog.value = false;
- });
+ const fileNameItem = infoList.value.find(item => item.name === '文件名称');
+ const patchTypeItem = infoList.value.find(item => item.name === '图斑类型');
+ let lotTypeId;
+ // 检查value是否为数字类型(包括字符串形式的数字)
+ const isValueNumber =
+ !isNaN(Number(patchTypeItem.value)) &&
+ patchTypeItem.value !== '' &&
+ patchTypeItem.value !== null &&
+ patchTypeItem.value !== undefined;
+ console.log('isValueNumber',isValueNumber);
+ if (isValueNumber) {
+ // 转换为数字类型
+ lotTypeId = Number(patchTypeItem.value);
+ } else {
+ // 使用原始值
+ lotTypeId = patchTypeItem.originalValue;
+ }
+ // 构建请求参数
+ const updateParams = {
+ file_name: fileNameItem.value,
+ lot_type_id: lotTypeId,
+ type: lotTypeId,
+ id: props.detailList.id,
+ };
+ patchEditApi(updateParams).then(res => {
+ ElMessage.success(res.data.data);
+ refreshonload();
+ uploadPatchDialog.value = false;
+ });
};
// 取消
-const handleCancel = () => {};
+const handleCancel = () => {
+ const fileNameItem = infoList.value.find(item => item.name === '文件名称');
+ const spotTypeItem = infoList.value.find(item => item.name === '图斑类型');
+
+ if (fileNameItem) {
+ fileNameItem.value = initialFileName.value;
+ }
+ if (spotTypeItem) {
+ spotTypeItem.value = initialSpotTypeLabel.value;
+ spotTypeItem.originalValue = initialSpotTypeId.value;
+ }
+ clearSelect();
+ isDrawPolygon.value = false; // 关闭地图绘制状态
+ uploadPatchDialog.value = false;
+};
provide('selectionIds', selectionIds);
provide('homeViewer', homeViewer);
provide('viewInstance', viewInstance);
@@ -489,6 +524,7 @@
}
destroyMap();
}
+ refreshonload();
});
onMounted(() => {});
onBeforeUnmount(() => {
@@ -568,11 +604,19 @@
line-height: 33px;
padding-right: 10px;
margin: 0 -10px 0 -10px;
+ border-right: 1px solid #e8e8e8;
}
.itemContent {
flex: 1;
padding-left: 10px;
+ .itemValue {
+ padding-left: 6px;
+ color: #7B7B7B;
+ }
+ .error-text{
+ color: #FF0A0A;
+ }
}
}
}
@@ -587,11 +631,11 @@
top: 0;
left: 0;
height: 99%;
- z-index: 999;
+ z-index: 99;
width: 277px;
overflow: hidden;
- background: rgba(0, 0, 0, 0.4);
- backdrop-filter: blur(5px);
+ background: rgba(0, 0, 0, 0.6);
+ // backdrop-filter: blur(5px);
border-radius: 8px 8px 8px 8px;
padding: 6px 10px 0 10px;
display: flex;
@@ -609,6 +653,7 @@
font-size: 14px;
color: #ffffff;
}
+
// 表格样式
:deep(.el-table) {
// 清除表格内部横线和竖线
@@ -671,25 +716,34 @@
background-color: var(--el-table-current-row-bg-color) !important;
}
}
-
+:deep(.el-table__body) {
+ tr {
+ height: 46px;
+ }
+ td {
+ padding: 8px 0;
+ }
+}
.operationspan {
cursor: pointer;
}
.operationspan:first-child {
margin-right: 10px;
}
+
// 分页
:deep(.pagination-container) {
background: transparent !important;
}
:deep(.el-pagination) {
+
.btn-prev,
.btn-next {
- padding: 5px 13px;
+ padding: 5px 6px;
}
}
:deep(.el-pager li) {
- margin: 0 0.4rem;
+ margin: 0 0.1rem;
background: rgba(34, 34, 34, 0.9) !important;
box-shadow: 0px 4px 72px 0px rgba(0, 0, 0, 0.25) !important;
border-radius: 8px 8px 8px 8px !important;
@@ -708,18 +762,23 @@
border-radius: 8px 8px 8px 8px !important;
}
.pagination-container {
- margin-top: auto;
- padding: 10px 0;
+ margin-top: auto;
+ padding: 8px 5px !important;
background: white;
display: flex;
justify-content: center;
- height: 20px;
+ height: auto; // 取消固定高度20px,避免内容被截断
margin: 24px 0 14px 0;
+ width: 100%;
+ box-sizing: border-box
}
}
-
+:deep(.el-tooltip__popper) {
+ z-index: 9999 !important;
+ max-width: 300px;
+}
.el-table {
- flex: 1; /* 让表格占据剩余空间 */
+ flex: 1;
overflow: auto;
}
.btnGroups {
--
Gitblit v1.9.3