|
@@ -14,7 +14,7 @@
|
|
|
<span>{{ t('agriRecord.phenologyWorkName') }}</span>
|
|
<span>{{ t('agriRecord.phenologyWorkName') }}</span>
|
|
|
<div class="question">{{ workDetail.interaction_issue }}</div>
|
|
<div class="question">{{ workDetail.interaction_issue }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="record-body" :style="{ paddingBottom: recordType === 'phenology' ? '10px' : '90px' }">
|
|
|
|
|
|
|
+ <div class="record-body">
|
|
|
<div class="card-wrap" v-if="recordType === 'growth'">
|
|
<div class="card-wrap" v-if="recordType === 'growth'">
|
|
|
<div class="card-item">
|
|
<div class="card-item">
|
|
|
<span class="item-label">{{ t('recordDetails.scienceLabel') }}</span>
|
|
<span class="item-label">{{ t('recordDetails.scienceLabel') }}</span>
|
|
@@ -132,7 +132,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <!-- <div class="tabs-list" v-if="!showMap">
|
|
|
|
|
|
|
+ <!-- <div class="tabs-list" v-if="showMap">
|
|
|
<div class="item-tab" :class="{ 'item-tab--active': activeTab === index }"
|
|
<div class="item-tab" :class="{ 'item-tab--active': activeTab === index }"
|
|
|
v-for="(item, index) in tabsList" :key="index" @click="handleTabClick(index)">{{ item.label }}
|
|
v-for="(item, index) in tabsList" :key="index" @click="handleTabClick(index)">{{ item.label }}
|
|
|
</div>
|
|
</div>
|
|
@@ -148,7 +148,7 @@
|
|
|
</el-input>
|
|
</el-input>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="my-map">
|
|
<div class="my-map">
|
|
|
- <div class="map-container" ref="mapContainer">
|
|
|
|
|
|
|
+ <div class="map-container" ref="recordMapContainer">
|
|
|
<div class="tip">{{ t('recordDetails.drawTip') }}</div>
|
|
<div class="tip">{{ t('recordDetails.drawTip') }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="confirm-btn-wrap">
|
|
<div class="confirm-btn-wrap">
|
|
@@ -173,15 +173,6 @@
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="confirm-btn-wrap">
|
|
<div class="confirm-btn-wrap">
|
|
|
- <uploader @click="handleUploadClick" :before-read="beforeReadUpload" class="upload-wrap"
|
|
|
|
|
- multiple :max-count="10" :after-read="afterReadUpload">
|
|
|
|
|
- <div class="upload-btn">
|
|
|
|
|
- <el-icon>
|
|
|
|
|
- <Plus />
|
|
|
|
|
- </el-icon>
|
|
|
|
|
- <span>{{ t('recordDetails.uploadPhoto') }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </uploader>
|
|
|
|
|
<div class="confirm-btn" @click="hanldeSubmit">{{ t('recordDetails.confirmInfo') }}</div>
|
|
<div class="confirm-btn" @click="hanldeSubmit">{{ t('recordDetails.confirmInfo') }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -195,21 +186,24 @@
|
|
|
<div class="bottom-btn secondary-btn">{{ $t('转发记录') }}</div>
|
|
<div class="bottom-btn secondary-btn">{{ $t('转发记录') }}</div>
|
|
|
</div> -->
|
|
</div> -->
|
|
|
|
|
|
|
|
- <!-- <UploadProgressPopup ref="uploadProgressPopupRef" v-model:show="showUploadProgressPopup"
|
|
|
|
|
- :popup-image-upload-loading="popupImageUploadLoading" :init-img-arr="initImgArr"
|
|
|
|
|
- @cancel="handleCancelUploadPopup" @confirm="handleConfirmUpload" @handleUpload="handleUploadSuccess">
|
|
|
|
|
|
|
+ <RiskAssessPopup v-model:show="showRiskAssessPopup" />
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 物候 上传弹窗 -->
|
|
|
|
|
+ <UploadProgressPopup ref="phenologyUploadPopupRef" v-model:show="showPhenologyUploadPopup"
|
|
|
|
|
+ @cancel="handleCancelPhenologyUploadPopup" :upload-required="false" @confirm="handleConfirmPhenologyUpload">
|
|
|
<template #header>
|
|
<template #header>
|
|
|
<div class="upload-progress-title">
|
|
<div class="upload-progress-title">
|
|
|
- <span class="label">{{ $t('当前现状:') }}</span>
|
|
|
|
|
- <span class="value">{{ $t('60% 进入红黄叶进程') }}</span>
|
|
|
|
|
|
|
+ <!-- <span class="label">{{ $t('当前现状:') }}</span> -->
|
|
|
|
|
+ <span class="value">{{ currentStatusText }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
- </UploadProgressPopup> -->
|
|
|
|
|
|
|
+ </UploadProgressPopup>
|
|
|
|
|
|
|
|
- <UploadProgressPopup ref="uploadProgressPopupRef" v-model:show="showUploadProgressPopup"
|
|
|
|
|
- :popup-image-upload-loading="popupImageUploadLoading" :init-img-arr="initImgArr"
|
|
|
|
|
|
|
+ <!-- 病虫害 上传弹窗 -->
|
|
|
|
|
+ <UploadProgressPopup ref="pestUploadPopupRef" v-model:show="showPestUploadPopup"
|
|
|
|
|
+ :popup-image-upload-loading="pestPopupImageUploadLoading" :init-img-arr="pestInitImgArr"
|
|
|
:confirm-text="t('recordDetails.confirmUpload')" :upload-required="false"
|
|
:confirm-text="t('recordDetails.confirmUpload')" :upload-required="false"
|
|
|
- @reset="handleUploadPopupReset" @cancel="handleCancelUploadPopup" @confirm="handleConfirmUpload">
|
|
|
|
|
|
|
+ @reset="handlePestUploadPopupReset" @cancel="handleCancelPestUploadPopup" @confirm="handleConfirmPestUpload">
|
|
|
<template #header>
|
|
<template #header>
|
|
|
<div class="upload-form">
|
|
<div class="upload-form">
|
|
|
<div class="form-item special-input">
|
|
<div class="form-item special-input">
|
|
@@ -246,17 +240,15 @@ import customHeader from "@/components/customHeader.vue";
|
|
|
import PhenologyTrackTimelineItem from "@/components/pageComponents/PhenologyTrackTimelineItem.vue";
|
|
import PhenologyTrackTimelineItem from "@/components/pageComponents/PhenologyTrackTimelineItem.vue";
|
|
|
import GrowthStageTimeline from "@/components/pageComponents/GrowthStageTimeline.vue";
|
|
import GrowthStageTimeline from "@/components/pageComponents/GrowthStageTimeline.vue";
|
|
|
import UploadProgressPopup from "@/components/popup/UploadProgressPopup.vue";
|
|
import UploadProgressPopup from "@/components/popup/UploadProgressPopup.vue";
|
|
|
|
|
+import RiskAssessPopup from "./components/RiskAssessPopup.vue";
|
|
|
import { ref, onActivated, watch, nextTick, computed } from 'vue';
|
|
import { ref, onActivated, watch, nextTick, computed } from 'vue';
|
|
|
import { useRouter, useRoute } from 'vue-router';
|
|
import { useRouter, useRoute } from 'vue-router';
|
|
|
import { useStore } from 'vuex';
|
|
import { useStore } from 'vuex';
|
|
|
import { useI18n } from '@/i18n';
|
|
import { useI18n } from '@/i18n';
|
|
|
import { RECORD_KEY_MAP } from '@/i18n/recordTextMap';
|
|
import { RECORD_KEY_MAP } from '@/i18n/recordTextMap';
|
|
|
-import { Uploader, TextEllipsis } from "vant";
|
|
|
|
|
|
|
+import { TextEllipsis } from "vant";
|
|
|
import { ElMessage } from "element-plus";
|
|
import { ElMessage } from "element-plus";
|
|
|
-import UploadFile from "@/utils/upliadFile";
|
|
|
|
|
-import { getFileExt } from "@/utils/util";
|
|
|
|
|
import IndexMap from "./map/index.js";
|
|
import IndexMap from "./map/index.js";
|
|
|
-import { Plus } from "@element-plus/icons-vue";
|
|
|
|
|
|
|
|
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
@@ -284,6 +276,7 @@ function goPartitionManage() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const showMap = ref(false);
|
|
const showMap = ref(false);
|
|
|
|
|
+const showRiskAssessPopup = ref(false);
|
|
|
|
|
|
|
|
/** 病虫害态势监控:分类选择(接入接口后可绑定 workDetail) */
|
|
/** 病虫害态势监控:分类选择(接入接口后可绑定 workDetail) */
|
|
|
const pestTopIndex = ref(0);
|
|
const pestTopIndex = ref(0);
|
|
@@ -365,7 +358,7 @@ const handlePestDetailClick = (index) => {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const indexMap = new IndexMap();
|
|
const indexMap = new IndexMap();
|
|
|
-const mapContainer = ref(null);
|
|
|
|
|
|
|
+const recordMapContainer = ref(null);
|
|
|
const uploadMapContainer = ref(null);
|
|
const uploadMapContainer = ref(null);
|
|
|
const location = ref(null);
|
|
const location = ref(null);
|
|
|
const input = ref('');
|
|
const input = ref('');
|
|
@@ -418,22 +411,40 @@ const formData = ref({
|
|
|
regionName: '',
|
|
regionName: '',
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-function destroyUploadMap() {
|
|
|
|
|
|
|
+function destroyMap() {
|
|
|
if (indexMap.kmap?.destroy) {
|
|
if (indexMap.kmap?.destroy) {
|
|
|
indexMap.kmap.destroy();
|
|
indexMap.kmap.destroy();
|
|
|
}
|
|
}
|
|
|
indexMap.kmap = null;
|
|
indexMap.kmap = null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+function ensureRecordMap() {
|
|
|
|
|
+ if (!recordMapContainer.value) return false;
|
|
|
|
|
+ location.value = getFarmMapLocation();
|
|
|
|
|
+ destroyMap();
|
|
|
|
|
+ indexMap.initMap(location.value, recordMapContainer.value, { editable: false, movable: false });
|
|
|
|
|
+ return Boolean(indexMap.kmap);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function syncRecordMapView() {
|
|
|
|
|
+ nextTick(() => {
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ if (showMap.value) return;
|
|
|
|
|
+ if (!ensureRecordMap()) return;
|
|
|
|
|
+ resizeMap();
|
|
|
|
|
+ }, 250);
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
function ensureUploadMap() {
|
|
function ensureUploadMap() {
|
|
|
if (!uploadMapContainer.value) return false;
|
|
if (!uploadMapContainer.value) return false;
|
|
|
location.value = getFarmMapLocation();
|
|
location.value = getFarmMapLocation();
|
|
|
- destroyUploadMap();
|
|
|
|
|
|
|
+ destroyMap();
|
|
|
indexMap.initMap(location.value, uploadMapContainer.value, { editable: false, movable: false });
|
|
indexMap.initMap(location.value, uploadMapContainer.value, { editable: false, movable: false });
|
|
|
return Boolean(indexMap.kmap);
|
|
return Boolean(indexMap.kmap);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function resizeUploadMap() {
|
|
|
|
|
|
|
+function resizeMap() {
|
|
|
indexMap.kmap?.map?.updateSize?.();
|
|
indexMap.kmap?.map?.updateSize?.();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -443,24 +454,24 @@ function syncUploadMapView() {
|
|
|
nextTick(() => {
|
|
nextTick(() => {
|
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
|
if (!ensureUploadMap()) return;
|
|
if (!ensureUploadMap()) return;
|
|
|
- resizeUploadMap();
|
|
|
|
|
|
|
+ resizeMap();
|
|
|
if (geometryArr.length) {
|
|
if (geometryArr.length) {
|
|
|
indexMap.setAreaGeometry(geometryArr);
|
|
indexMap.setAreaGeometry(geometryArr);
|
|
|
- resizeUploadMap();
|
|
|
|
|
|
|
+ resizeMap();
|
|
|
}
|
|
}
|
|
|
}, 250);
|
|
}, 250);
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function syncFormFromMapConfirmPayload() {
|
|
function syncFormFromMapConfirmPayload() {
|
|
|
- if (!showUploadProgressPopup.value) return;
|
|
|
|
|
|
|
+ if (!showPestUploadPopup.value) return;
|
|
|
syncUploadMapView();
|
|
syncUploadMapView();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const handleAbnormalRecord = () => {
|
|
const handleAbnormalRecord = () => {
|
|
|
formData.value.ratio = '';
|
|
formData.value.ratio = '';
|
|
|
formData.value.regionName = '';
|
|
formData.value.regionName = '';
|
|
|
- showUploadProgressPopup.value = true;
|
|
|
|
|
|
|
+ showPestUploadPopup.value = true;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const handleMapClick = () => {
|
|
const handleMapClick = () => {
|
|
@@ -471,31 +482,29 @@ const handleMapClick = () => {
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-const showUploadProgressPopup = ref(false);
|
|
|
|
|
|
|
+const showPhenologyUploadPopup = ref(false);
|
|
|
|
|
+const showPestUploadPopup = ref(false);
|
|
|
|
|
|
|
|
-watch(showUploadProgressPopup, (show) => {
|
|
|
|
|
|
|
+watch(showPestUploadPopup, (show) => {
|
|
|
if (show) {
|
|
if (show) {
|
|
|
syncUploadMapView();
|
|
syncUploadMapView();
|
|
|
} else {
|
|
} else {
|
|
|
- destroyUploadMap();
|
|
|
|
|
|
|
+ destroyMap();
|
|
|
|
|
+ if (!showMap.value) {
|
|
|
|
|
+ syncRecordMapView();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-const initImgArr = ref([]);
|
|
|
|
|
-const uploadProgressPopupRef = ref(null);
|
|
|
|
|
|
|
+const pestInitImgArr = ref([]);
|
|
|
|
|
+const phenologyUploadPopupRef = ref(null);
|
|
|
|
|
+const pestUploadPopupRef = ref(null);
|
|
|
const phenologyTrackTimelineRef = ref(null);
|
|
const phenologyTrackTimelineRef = ref(null);
|
|
|
-const popupImageUploadLoading = ref(false);
|
|
|
|
|
-const uploadFileObj = new UploadFile();
|
|
|
|
|
-const miniUserId = localStorage.getItem("MINI_USER_ID");
|
|
|
|
|
-
|
|
|
|
|
-const handleUploadPopupReset = () => {
|
|
|
|
|
- initImgArr.value = [];
|
|
|
|
|
- popupImageUploadLoading.value = false;
|
|
|
|
|
-};
|
|
|
|
|
|
|
+const pestPopupImageUploadLoading = ref(false);
|
|
|
|
|
|
|
|
-const beforeReadUpload = (file) => {
|
|
|
|
|
- showUploadProgressPopup.value = true;
|
|
|
|
|
- return true;
|
|
|
|
|
|
|
+const handlePestUploadPopupReset = () => {
|
|
|
|
|
+ pestInitImgArr.value = [];
|
|
|
|
|
+ pestPopupImageUploadLoading.value = false;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const curStage = ref({});
|
|
const curStage = ref({});
|
|
@@ -515,53 +524,34 @@ function labelPercentToProgress(label) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const hanldeSubmit = () => {
|
|
const hanldeSubmit = () => {
|
|
|
- const farmData = JSON.parse(localStorage.getItem('selectedFarmData'))
|
|
|
|
|
- const time = new Date().toISOString()
|
|
|
|
|
|
|
+ showPhenologyUploadPopup.value = true;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+const handleCancelPhenologyUploadPopup = () => {
|
|
|
|
|
+ showPhenologyUploadPopup.value = false;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+const handleConfirmPhenologyUpload = () => {
|
|
|
|
|
+ const farmData = JSON.parse(localStorage.getItem('selectedFarmData'));
|
|
|
|
|
+ const time = new Date().toISOString();
|
|
|
const params = {
|
|
const params = {
|
|
|
farm_id: farmData.farm_id,
|
|
farm_id: farmData.farm_id,
|
|
|
farm_variety: farmData.farm_variety,
|
|
farm_variety: farmData.farm_variety,
|
|
|
current_code: curCode.value,
|
|
current_code: curCode.value,
|
|
|
new_start_date: time.slice(0, 10),
|
|
new_start_date: time.slice(0, 10),
|
|
|
progress: labelPercentToProgress(curStage.value.label),
|
|
progress: labelPercentToProgress(curStage.value.label),
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
VE_API.monitor.farmPhenologyAdjust(params).then(res => {
|
|
VE_API.monitor.farmPhenologyAdjust(params).then(res => {
|
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
|
- ElMessage.success(t('recordDetails.confirmSuccess'))
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-const afterReadUpload = async (data) => {
|
|
|
|
|
- initImgArr.value = [];
|
|
|
|
|
- if (!Array.isArray(data)) {
|
|
|
|
|
- data = [data];
|
|
|
|
|
- }
|
|
|
|
|
- popupImageUploadLoading.value = true;
|
|
|
|
|
- try {
|
|
|
|
|
- for (const file of data) {
|
|
|
|
|
- const fileVal = file.file;
|
|
|
|
|
- file.status = "uploading";
|
|
|
|
|
- file.message = "上传中...";
|
|
|
|
|
- const ext = getFileExt(fileVal.name);
|
|
|
|
|
- const key = `birdseye-look-mini/${miniUserId}/${new Date().getTime()}.${ext}`;
|
|
|
|
|
- const resFilename = await uploadFileObj.put(key, fileVal);
|
|
|
|
|
- if (resFilename) {
|
|
|
|
|
- file.status = "done";
|
|
|
|
|
- file.message = "";
|
|
|
|
|
- initImgArr.value.push(resFilename);
|
|
|
|
|
- } else {
|
|
|
|
|
- file.status = "failed";
|
|
|
|
|
- file.message = "上传失败";
|
|
|
|
|
- ElMessage.error("图片上传失败,请稍后再试!");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ showPhenologyUploadPopup.value = false;
|
|
|
|
|
+ phenologyTrackTimelineRef.value?.refresh?.();
|
|
|
|
|
+ ElMessage.success(t('recordDetails.confirmSuccess'));
|
|
|
}
|
|
}
|
|
|
- } finally {
|
|
|
|
|
- popupImageUploadLoading.value = false;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ });
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-const handleCancelUploadPopup = () => {
|
|
|
|
|
- showUploadProgressPopup.value = false;
|
|
|
|
|
|
|
+const handleCancelPestUploadPopup = () => {
|
|
|
|
|
+ showPestUploadPopup.value = false;
|
|
|
store.commit('recordDetails/CLEAR_MAP_CONFIRM_PAYLOAD');
|
|
store.commit('recordDetails/CLEAR_MAP_CONFIRM_PAYLOAD');
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -579,7 +569,7 @@ function validateAbnormalRatio() {
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-const handleConfirmUpload = (imgArr) => {
|
|
|
|
|
|
|
+const handleConfirmPestUpload = (imgArr) => {
|
|
|
if (!validateAbnormalRatio()) return;
|
|
if (!validateAbnormalRatio()) return;
|
|
|
|
|
|
|
|
if (recordType.value === 'pest') {
|
|
if (recordType.value === 'pest') {
|
|
@@ -605,7 +595,7 @@ const handleConfirmUpload = (imgArr) => {
|
|
|
}
|
|
}
|
|
|
VE_API.record.writeFarmRecord(params).then(res => {
|
|
VE_API.record.writeFarmRecord(params).then(res => {
|
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
|
- showUploadProgressPopup.value = false;
|
|
|
|
|
|
|
+ showPestUploadPopup.value = false;
|
|
|
store.commit('recordDetails/CLEAR_MAP_CONFIRM_PAYLOAD');
|
|
store.commit('recordDetails/CLEAR_MAP_CONFIRM_PAYLOAD');
|
|
|
phenologyTrackTimelineRef.value?.refresh?.();
|
|
phenologyTrackTimelineRef.value?.refresh?.();
|
|
|
ElMessage.success(t('recordDetails.confirmSuccess'));
|
|
ElMessage.success(t('recordDetails.confirmSuccess'));
|
|
@@ -615,8 +605,6 @@ const handleConfirmUpload = (imgArr) => {
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-const handleUploadClick = () => { };
|
|
|
|
|
-
|
|
|
|
|
const activeTab = ref(0);
|
|
const activeTab = ref(0);
|
|
|
|
|
|
|
|
const handleTabClick = (index) => {
|
|
const handleTabClick = (index) => {
|
|
@@ -764,9 +752,8 @@ onActivated(async () => {
|
|
|
getGrowthAnomalyInfo();
|
|
getGrowthAnomalyInfo();
|
|
|
}
|
|
}
|
|
|
getFindPhenologyInfo();
|
|
getFindPhenologyInfo();
|
|
|
- if (showMap.value) {
|
|
|
|
|
- location.value = "POINT(113.6142086995688 23.585836479509055)";
|
|
|
|
|
- indexMap.initMap(location.value, mapContainer.value);
|
|
|
|
|
|
|
+ if (!showMap.value) {
|
|
|
|
|
+ syncRecordMapView();
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|
|
@@ -991,6 +978,7 @@ const getFindPhenologyInfo = async () => {
|
|
|
|
|
|
|
|
.question-box {
|
|
.question-box {
|
|
|
border: 1px solid #2199F8;
|
|
border: 1px solid #2199F8;
|
|
|
|
|
+ background: rgba(33, 153, 248, 0.1);
|
|
|
border-radius: 5px;
|
|
border-radius: 5px;
|
|
|
padding: 8px;
|
|
padding: 8px;
|
|
|
color: #5A5A5A;
|
|
color: #5A5A5A;
|
|
@@ -1047,37 +1035,6 @@ const getFindPhenologyInfo = async () => {
|
|
|
margin: 10px 0;
|
|
margin: 10px 0;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- .no-map-wrap {
|
|
|
|
|
- .confirm-btn-wrap {
|
|
|
|
|
- div {
|
|
|
|
|
- font-size: 14px;
|
|
|
|
|
- flex: none;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .upload-wrap {
|
|
|
|
|
- width: calc(100% - 96px - 13px);
|
|
|
|
|
- padding: 0;
|
|
|
|
|
- background: rgba(255, 149, 61, 0.1);
|
|
|
|
|
- color: #FF953D;
|
|
|
|
|
- border-radius: 4px;
|
|
|
|
|
- display: flex;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- border: 1px solid #FF953D;
|
|
|
|
|
-
|
|
|
|
|
- .upload-btn {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- gap: 3px;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .confirm-btn {
|
|
|
|
|
- width: 96px;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.card-wrap+.card-wrap {
|
|
.card-wrap+.card-wrap {
|