|
|
@@ -24,7 +24,9 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="custom-bottom-fixed-btns">
|
|
|
- <div class="bottom-btn primary-btn" @click="handleConfirmPlan">确认方案</div>
|
|
|
+ <div class="bottom-btn primary-btn" :class="{ 'disabled': isCreating }" @click="handleConfirmPlan">
|
|
|
+ {{ isCreating ? '创建中...' : '确认方案' }}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
<tip-popup
|
|
|
@@ -81,7 +83,13 @@ const getListMySchemes = () => {
|
|
|
|
|
|
const showFarmPopup = ref(false);
|
|
|
const shareData = ref({});
|
|
|
+const isCreating = ref(false); // 标识是否正在创建农场
|
|
|
const handleConfirmPlan = () => {
|
|
|
+ // 如果正在创建,阻止重复点击
|
|
|
+ if (isCreating.value) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
// 从路由参数中获取农场数据
|
|
|
let geomValue = route.query.geom;
|
|
|
|
|
|
@@ -123,6 +131,10 @@ const handleConfirmPlan = () => {
|
|
|
}
|
|
|
|
|
|
delete farmParams.from;
|
|
|
+
|
|
|
+ // 设置正在创建状态
|
|
|
+ isCreating.value = true;
|
|
|
+
|
|
|
// 调用创建农场接口
|
|
|
VE_API.farm
|
|
|
.saveFarm(farmParams)
|
|
|
@@ -131,6 +143,8 @@ const handleConfirmPlan = () => {
|
|
|
shareData.value = res.data;
|
|
|
//选择方案
|
|
|
VE_API.home.selectSchemes({ sourceSchemeId: active.value ,farmId:res.data.id}).then(({code}) => {
|
|
|
+ // 请求完成,重置状态
|
|
|
+ isCreating.value = false;
|
|
|
if (code === 0) {
|
|
|
ElMessage.success("创建成功");
|
|
|
setTimeout(() => {
|
|
|
@@ -139,13 +153,22 @@ const handleConfirmPlan = () => {
|
|
|
} else {
|
|
|
ElMessage.error(res.msg || '创建失败');
|
|
|
}
|
|
|
+ }).catch((err) => {
|
|
|
+ // 请求失败,重置状态
|
|
|
+ isCreating.value = false;
|
|
|
+ console.error("选择方案失败:", err);
|
|
|
+ ElMessage.error("创建失败,请稍后重试");
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
+ // 请求失败,重置状态
|
|
|
+ isCreating.value = false;
|
|
|
ElMessage.error(res.msg || "创建失败");
|
|
|
}
|
|
|
})
|
|
|
.catch((err) => {
|
|
|
+ // 请求失败,重置状态
|
|
|
+ isCreating.value = false;
|
|
|
console.error("创建农场失败:", err);
|
|
|
ElMessage.error("创建失败,请稍后重试");
|
|
|
});
|
|
|
@@ -223,6 +246,11 @@ const handleClickOverlay = () => {
|
|
|
justify-content: center;
|
|
|
.bottom-btn {
|
|
|
padding: 10px 40px;
|
|
|
+ &.disabled {
|
|
|
+ opacity: 0.6;
|
|
|
+ cursor: not-allowed;
|
|
|
+ pointer-events: none;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
</style>
|