欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

強(qiáng)化各個(gè)知識(shí)點(diǎn),以實(shí)戰(zhàn)融合,以下兩個(gè)Demo從實(shí)戰(zhàn)提取

1. 單個(gè)彈窗

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

截圖如下所示:

以下Demo整體邏輯如下:

  • 點(diǎn)擊“生成周月計(jì)劃”按鈕會(huì)觸發(fā)showWeekPlanDialog方法,該方法會(huì)先檢查是否選擇了數(shù)據(jù),然后調(diào)用calculateWeekPeriods方法計(jì)算時(shí)間段并顯示周計(jì)劃對(duì)話框
  • 在周計(jì)劃對(duì)話框中,選擇時(shí)間段后點(diǎn)擊提交按鈕會(huì)觸發(fā)submitWeekPlan方法,該方法會(huì)檢查是否選擇了時(shí)間段,然后執(zhí)行doSubmitWeekPlan方法提交周計(jì)劃,并在操作成功后關(guān)閉周計(jì)劃對(duì)話框并清空選中的時(shí)間段
<template>
  <div>
    <el-button type="primary" size="small" plain @click="showWeekPlanDialog">生成周月計(jì)劃</el-button>
    <el-dialog title="周計(jì)劃" :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="時(shí)間段" 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, // 控制周計(jì)劃對(duì)話框的顯示
      selectedPeriod: '', // 選中的時(shí)間段
      weekPeriods: [], // 時(shí)間段數(shù)組
    };
  },
  methods: {
    showWeekPlanDialog() {
      if (this.selectionList.length === 0) { // 檢查是否選擇了數(shù)據(jù)
        this.$message.warning("請(qǐng)選擇至少一條數(shù)據(jù)");
        return;
      }
      // 確保選中數(shù)據(jù)后計(jì)算時(shí)間段
      this.calculateWeekPeriods();
      this.showWeekPlanDialogBox = true; // 顯示周計(jì)劃對(duì)話框
    },
    calculateWeekPeriods() {
      const today = moment();
      const dayOfWeek = today.isoWeekday();
      // 計(jì)算本周的起始日期和結(jié)束日期
      const startDateThisWeek = today.clone().startOf('isoWeek');
      const endDateThisWeek = today.clone().endOf('isoWeek');
      // 計(jì)算上周和下周的起始日期和結(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 === '') { // 檢查是否選擇了時(shí)間段
        this.$message.warning("請(qǐng)選擇一個(gè)時(shí)間段");
        return;
      }
      // 執(zhí)行提交周計(jì)劃的操作
      this.doSubmitWeekPlan();
    },
    doSubmitWeekPlan() {
      // 在這里執(zhí)行提交周計(jì)劃的操作,可以調(diào)用API等
      console.log("提交周計(jì)劃");
      this.showWeekPlanDialogBox = false; // 關(guān)閉周計(jì)劃對(duì)話框
      // 清空選中的時(shí)間段,以便下次使用
      this.selectedPeriod = '';
      this.$message({
        type: "success",
        message: "操作成功!"
      });
    }
  }
};
</script>

2. 多級(jí)彈窗

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

之后才是

整體邏輯如下:

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

對(duì)應(yīng)Demo如下:

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

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

相關(guān)文章

最新評(píng)論