亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue按照順序?qū)崿F(xiàn)多級彈窗效果 附Demo

 更新時間:2024年05月08日 11:30:18   作者:碼農(nóng)研究僧  
這篇文章主要介紹了Vue按照順序?qū)崿F(xiàn)多級彈窗效果 附Demo,通過實例代碼介紹了單個彈窗和多級彈窗的實現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧

前言

強化各個知識點,以實戰(zhàn)融合,以下兩個Demo從實戰(zhàn)提取

1. 單個彈窗

部署按鈕框以及確定的方法即可

截圖如下所示:

以下Demo整體邏輯如下:

  • 點擊“生成周月計劃”按鈕會觸發(fā)showWeekPlanDialog方法,該方法會先檢查是否選擇了數(shù)據(jù),然后調(diào)用calculateWeekPeriods方法計算時間段并顯示周計劃對話框
  • 在周計劃對話框中,選擇時間段后點擊提交按鈕會觸發(fā)submitWeekPlan方法,該方法會檢查是否選擇了時間段,然后執(zhí)行doSubmitWeekPlan方法提交周計劃,并在操作成功后關(guān)閉周計劃對話框并清空選中的時間段
<template>
  <div>
    <el-button type="primary" size="small" plain @click="showWeekPlanDialog">生成周月計劃</el-button>
    <el-dialog title="周計劃" :visible.sync="showWeekPlanDialogBox" :append-to-body="true" width="20%">
      <el-radio-group v-model="selectedPeriod" @change="handlePeriodChange">
        <el-table :data="weekPeriods" border>
          <el-table-column label="時間段" width="100">
            <template slot-scope="scope">
              <el-radio :label="scope.row.label"></el-radio>
            </template>
          </el-table-column>
          <el-table-column prop="dateRange" label="日期范圍" width=200></el-table-column>
        </el-table>
      </el-radio-group>
      <el-button type="primary" size="small" @click="submitWeekPlan" style="margin: 10px;">提交</el-button>
    </el-dialog>
  </div>
</template>
<script>
import moment from 'moment';
export default {
  data() {
    return {
      showWeekPlanDialogBox: false, // 控制周計劃對話框的顯示
      selectedPeriod: '', // 選中的時間段
      weekPeriods: [], // 時間段數(shù)組
    };
  },
  methods: {
    showWeekPlanDialog() {
      if (this.selectionList.length === 0) { // 檢查是否選擇了數(shù)據(jù)
        this.$message.warning("請選擇至少一條數(shù)據(jù)");
        return;
      }
      // 確保選中數(shù)據(jù)后計算時間段
      this.calculateWeekPeriods();
      this.showWeekPlanDialogBox = true; // 顯示周計劃對話框
    },
    calculateWeekPeriods() {
      const today = moment();
      const dayOfWeek = today.isoWeekday();
      // 計算本周的起始日期和結(jié)束日期
      const startDateThisWeek = today.clone().startOf('isoWeek');
      const endDateThisWeek = today.clone().endOf('isoWeek');
      // 計算上周和下周的起始日期和結(jié)束日期
      const startDateLastWeek = startDateThisWeek.clone().subtract(1, 'week');
      const endDateLastWeek = startDateLastWeek.clone().endOf('isoWeek');
      const startDateNextWeek = startDateThisWeek.clone().add(1, 'week');
      const endDateNextWeek = startDateNextWeek.clone().endOf('isoWeek');
      // 格式化日期范圍
      const formatDateRange = (startDate, endDate) => {
        return `${startDate.format('YYYY-MM-DD')}~${endDate.format('YYYY-MM-DD')}`;
      };
      // 生成周期數(shù)組
      const weekPeriods = [
        { label: '上周', dateRange: formatDateRange(startDateLastWeek, endDateLastWeek) },
        { label: '本周', dateRange: formatDateRange(startDateThisWeek, endDateThisWeek) },
        { label: '下周', dateRange: formatDateRange(startDateNextWeek, endDateNextWeek) }
      ];
      this.weekPeriods = weekPeriods;
    },
    submitWeekPlan() {
      if (this.selectedPeriod === '') { // 檢查是否選擇了時間段
        this.$message.warning("請選擇一個時間段");
        return;
      }
      // 執(zhí)行提交周計劃的操作
      this.doSubmitWeekPlan();
    },
    doSubmitWeekPlan() {
      // 在這里執(zhí)行提交周計劃的操作,可以調(diào)用API等
      console.log("提交周計劃");
      this.showWeekPlanDialogBox = false; // 關(guān)閉周計劃對話框
      // 清空選中的時間段,以便下次使用
      this.selectedPeriod = '';
      this.$message({
        type: "success",
        message: "操作成功!"
      });
    }
  }
};
</script>

2. 多級彈窗

在上面彈窗前加入一層彈窗

之后才是

整體邏輯如下:

  • 按鈕邏輯流程: 確保每個按鈕的點擊觸發(fā)正確的邏輯流程,比如點擊第一個按鈕后顯示第一個對話框,點擊第一個對話框的確定按鈕后顯示第二個對話框,以此類推
  • 數(shù)據(jù)傳遞: 確保在不同的對話框之間正確傳遞數(shù)據(jù),比如第一個對話框選擇的選項需要傳遞到第二個對話框
  • 錯誤處理: 考慮每個步驟中進(jìn)行錯誤處理,比如在確認(rèn)選項時確保用戶選擇了正確的選項,或者在提交周計劃時確保選擇了時間段

對應(yīng)Demo如下:

<template>
  <div>
    <el-button type="primary" size="small" plain @click="showOptionsDialog">生成周月計劃</el-button>
    <!-- 第一個對話框 -->
    <el-dialog title="工單類型" :visible.sync="showOptionsDialogBox" :append-to-body="true" width="20%">
      <!-- 在此設(shè)置檢查或更換選項 -->
      <el-radio-group v-model="selectedOption">
        <el-radio label="檢查">鋼絲繩檢查</el-radio>
        <el-radio label="更換">鋼絲繩更換</el-radio>
      </el-radio-group>
      <!-- 點擊確定后顯示第二個對話框 -->
      <el-button type="primary" size="small" @click="confirmOptions" style="margin: 10px;">確定</el-button>
    </el-dialog>
    <!-- 第二個對話框 -->
    <el-dialog title="周計劃" :visible.sync="showWeekPlanDialogBox" :append-to-body="true" width="20%">
      <el-radio-group v-model="selectedPeriod">
        <el-table :data="weekPeriods" border>
          <el-table-column label="時間段" width="100">
            <template slot-scope="scope">
              <el-radio :label="scope.row.label"></el-radio>
            </template>
          </el-table-column>
          <el-table-column prop="dateRange" label="日期范圍" width=200></el-table-column>
        </el-table>
      </el-radio-group>
      <el-button type="primary" size="small" @click="submitWeekPlan" style="margin: 10px;">提交</el-button>
    </el-dialog>
  </div>
</template>
<script>
import moment from 'moment';
export default {
  data() {
    return {
      // 控制第一個對話框的顯示
      showOptionsDialogBox: false,
      showWeekPlanDialogBox: false, // 顯示框,一開始為false,才有彈窗
      selectedOption: '', // 如果不初始化,后續(xù)會無法選中
      selectedPeriod: '', // 如果不初始化,后續(xù)會無法選中
      weekPeriods: []
    };
  },
  methods: {
    showOptionsDialog() {
      this.showOptionsDialogBox = true;
    },
    confirmOptions() {
      if (!this.selectedOption) {
        this.$message.warning("請選擇檢查或更換");
        return;
      }
      this.showOptionsDialogBox = false;
      // 如果需要根據(jù)選項動態(tài)生成周期,在這里調(diào)用相應(yīng)的方法生成周期數(shù)組
      this.generateWeekPeriods();
      this.showWeekPlanDialogBox = true; // 打開第二個對話框
    },
    generateWeekPeriods() {
      const today = moment();
      const dayOfWeek = today.isoWeekday();
      // 計算本周的起始日期和結(jié)束日期
      const startDateThisWeek = today.clone().startOf('isoWeek');
      const endDateThisWeek = today.clone().endOf('isoWeek');
      // 計算上周和下周的起始日期和結(jié)束日期
      const startDateLastWeek = startDateThisWeek.clone().subtract(1, 'week');
      const endDateLastWeek = startDateLastWeek.clone().endOf('isoWeek');
      const startDateNextWeek = startDateThisWeek.clone().add(1, 'week');
      const endDateNextWeek = startDateNextWeek.clone().endOf('isoWeek');
      // 格式化日期范圍
      const formatDateRange = (startDate, endDate) => {
        return `${startDate.format('YYYY-MM-DD')}~${endDate.format('YYYY-MM-DD')}`;
      };
      // 生成周期數(shù)組
      const weekPeriods = [
        { label: '上周', dateRange: formatDateRange(startDateLastWeek, endDateLastWeek) },
        { label: '本周', dateRange: formatDateRange(startDateThisWeek, endDateThisWeek) },
        { label: '下周', dateRange: formatDateRange(startDateNextWeek, endDateNextWeek) }
      ];
      this.weekPeriods = weekPeriods;
    },
    submitWeekPlan() {
      if (this.selectedPeriod === '') {
        this.$message.warning("請選擇一個時間段");
        return;
      }
      // 在這里執(zhí)行提交周計劃的操作,傳遞選中的周期和選項等參數(shù)
      this.doSubmitWeekPlan();
    },
    doSubmitWeekPlan() {
      // 在這里執(zhí)行提交周計劃的操作,傳遞選中的周期和選項等參數(shù)
      console.log("提交周計劃");
      this.showWeekPlanDialogBox = false;
      this.$message({
        type: "success",
        message: "操作成功!"
      });
    }
  }
};
</script>

到此這篇關(guān)于Vue按照順序?qū)崿F(xiàn)多級彈窗(附Demo)的文章就介紹到這了,更多相關(guān)Vue多級彈窗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue el-checkbox實現(xiàn)全選單選方式

    vue el-checkbox實現(xiàn)全選單選方式

    這篇文章主要介紹了vue el-checkbox實現(xiàn)全選單選方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 一篇文章教你簡單使用Vue的watch偵聽器

    一篇文章教你簡單使用Vue的watch偵聽器

    這篇文章主要為大家介紹了Vue watch偵聽器,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Vue項目設(shè)置多個靜態(tài)文件及自定義靜態(tài)文件目錄的方案詳解

    Vue項目設(shè)置多個靜態(tài)文件及自定義靜態(tài)文件目錄的方案詳解

    本文介紹了如何在Vue項目中配置多個靜態(tài)文件目錄,并提供了使用Vite和Webpack實現(xiàn)的示例,通過在vite.config.ts或vue.config.js中引入相關(guān)插件和配置,可以輕松實現(xiàn)自定義靜態(tài)文件目錄,希望這些內(nèi)容對您有所幫助,感興趣的朋友一起看看吧
    2025-01-01
  • vue模仿網(wǎng)易云音樂的單頁面應(yīng)用

    vue模仿網(wǎng)易云音樂的單頁面應(yīng)用

    這篇文章主要介紹了vue仿網(wǎng)易云音樂的單頁面應(yīng)用實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • vue3+TS 實現(xiàn)自定義指令長按觸發(fā)綁定的函數(shù)

    vue3+TS 實現(xiàn)自定義指令長按觸發(fā)綁定的函數(shù)

    這篇文章主要介紹了vue3+TS實現(xiàn)自定義指令長按觸發(fā)綁定的函數(shù),文中給大家分享了編寫自定義指令時遇到的幾個難點,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 解決vue js IOS H5focus無法自動彈出鍵盤的問題

    解決vue js IOS H5focus無法自動彈出鍵盤的問題

    今天小編就為大家分享一篇解決vue js IOS H5focus無法自動彈出鍵盤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vue3 el-form-item如何自定義label標(biāo)簽內(nèi)容

    vue3 el-form-item如何自定義label標(biāo)簽內(nèi)容

    這篇文章主要介紹了vue3 el-form-item如何自定義label標(biāo)簽內(nèi)容問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 使用vue.js寫一個tab選項卡效果

    使用vue.js寫一個tab選項卡效果

    Vue 實現(xiàn) Tab切換實現(xiàn)的場景很多,比如,利用vue-router、利用第三方插件、利用組件等等.本文使用組件來實踐tab選項卡
    2017-03-03
  • vue3中element Plus插槽示例詳解

    vue3中element Plus插槽示例詳解

    這篇文章主要介紹了vue3中element Plus插槽,#default=scope定義了一個名為 default 的插槽,并將當(dāng)前行的數(shù)據(jù)傳遞給一個名為 scope 的變量,本文結(jié)合示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • vue.js input框之間賦值方法

    vue.js input框之間賦值方法

    今天小編就為大家分享一篇vue.js input框之間賦值方法具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08

最新評論