1.保存按钮新增禁止重复点击功能

v1.0.0
sws 2024-09-25 15:17:47 +08:00
parent 7ee83f2661
commit 6cd9bc6505
3 changed files with 26 additions and 10 deletions

View File

@ -16,8 +16,8 @@
<div class="nav-right">
<el-button class="btn-plain" @click="upload_manage"></el-button>
<el-button class="btn-plain" @click="preview_event"></el-button>
<el-button class="btn-plain" @click="save_event"></el-button>
<el-button class="btn-white" @click="save_close_event"></el-button>
<el-button class="btn-plain" :disabled="true" @click="save_event"></el-button>
<el-button class="btn-white" :disabled="saveDisabled" @click="save_close_event"></el-button>
</div>
</div>
<el-dialog v-model="dialog_visible" class="radius-lg" width="650" draggable :close-on-click-modal="false" append-to-body>
@ -53,6 +53,12 @@
</template>
<script setup lang="ts">
import { FormInstance, FormRules } from 'element-plus';
const props = defineProps({
saveDisabled: {
type: Boolean,
default: false,
},
});
const modelValue = defineModel({ type: Object, default: {} });
// #region --------------------start
const is_custom_dialog = ref(false);
@ -91,15 +97,13 @@ const upload_manage = () => {
const preview_event = () => {
emit('preview');
};
//
const save_event = () => {
emit('save');
emit('save', true);
};
//
const save_close_event = () => {
emit('saveClose');
emit('saveClose', true);
};
const confirm_event = async (formEl: FormInstance | undefined) => {

View File

@ -2,7 +2,7 @@
<div v-loading.fullscreen.lock="loading" class="app-wrapper no-copy" element-loading-background="rgba(255,255,255,1)" element-loading-custom-class="loading-custom">
<template v-if="!loading_content">
<template v-if="!is_empty">
<navbar v-model="form.model" @preview="preview_event" @save="save_event" @save-close="save_close_event" />
<navbar v-model="form.model" :save-disabled="save_disabled" @preview="preview_event" @save="save_event" @save-close="save_close_event" />
<div class="app-wrapper-content flex-row">
<app-main :diy-data="form.diy_data" :tabs-data="form.tabs_data" :header="form.header" :footer="form.footer" @right-update="right_update" @import="import_data_event" @export="export_data_event" @clear="clear_data_event"></app-main>
<settings :key="key" :value="diy_data_item"></settings>
@ -177,10 +177,13 @@ const diy_id = ref('');
const preview_event = () => {
save_formmat_form_data(form.value, false, false, true);
};
const save_event = () => {
const save_disabled = ref(false);
const save_event = (bool: boolean) => {
save_disabled.value = bool;
save_formmat_form_data(form.value);
};
const save_close_event = () => {
const save_close_event = (bool: boolean) => {
save_disabled.value = bool;
save_formmat_form_data(form.value, true);
};
// save_formmat_form_data: data close is_export is_preview
@ -275,6 +278,10 @@ const save_formmat_form_data = (data: diy_data_item, close: boolean = false, is_
form.value.id = String(res.data);
history.pushState({}, '', '?s=diy/saveinfo/id/' + res.data + '.html');
}
setTimeout(() => {
save_disabled.value = false;
}, 500);
});
};
//#endregion ---------------------end

View File

@ -7,7 +7,7 @@
<settings :key="key" :value="form"></settings>
</div>
<div class="app-wrapper-footer flex-row align-c">
<el-button type="primary" class="footer-save" @click="save_event"></el-button>
<el-button type="primary" class="footer-save" :disabled="save_disabled" @click="save_event"></el-button>
</div>
</template>
<template v-else>
@ -71,16 +71,21 @@ const loading_event = () => {
//#endregion ---------------------end
//#region ---------------------start
const save_disabled = ref(false);
const save_event = () => {
const clone_form = cloneDeep(form.value);
const new_data = {
type: 'home',
config: clone_form,
};
save_disabled.value = true;
//
DiyAPI.saveTabbar(new_data).then((res: any) => {
//
ElMessage.success('保存成功');
setTimeout(() => {
save_disabled.value = false;
}, 500);
});
};
//#endregion ---------------------end