Beispielcode zur Verwendung der Elementkalenderkomponente in Vue

Beispielcode zur Verwendung der Elementkalenderkomponente in Vue

Schauen Sie sich zunächst das Wirkungsdiagramm an:

Bildbeschreibung hier einfügen
Bildbeschreibung hier einfügen
Bildbeschreibung hier einfügen

Der komplette Code ist beigefügt

<Vorlage>
  <div Klasse="newSeeds" id="famerCalendar">
    <div Klasse="Titel-unten">
      <el-Datumsauswahl
        :löschbar="falsch"
        Präfix-Symbol = "Zeitfilter"
        v-Modell="Wert2"
        Typ="Monat"
        Platzhalter="Monat auswählen"
        Werteformat="jjjj-MM"
        @change="Änderungsdatum"
      >
      </el-Datumsauswahl>
    </div>
    <div Klasse="calendarBody">
      <el-calendar v-model="Wert">
        <template slot="dateCell" slot-scope="{ Datum, Daten }">
          <div
            @click="Tagwählen(Daten)"
            Klasse="Zelleninfo"
            :Klasse="data.isSelected == true ? 'shadowBox' : ''"
          >
            <ul Klasse="ZellenInfoUl">
              <li v-for="(Element, Index) in ActiveList" :Schlüssel="Index">
                <p v-if="Daten.Tag == Artikel.Zeit" Klasse="ZellInfoUlP">
                  {{ Artikelname }}
                </p>
              </li>
            </ul>
            <div
              v-for="(val, keys, i) in umgekehrter Nachricht"
              :Schlüssel="i"
              :Klasse="data.day == keys ? 'tipMsg' : ''"
            >
              <span v-if="data.day == keys" class="tipMsged">{{ val }}</span>
            </div>
            <div Klasse="ZellenInfoBox">
              <p>{{ Daten.Tag.split("-")[2] }}</p>
            </div>
          </div>
        </Vorlage>
      </el-Kalender>
    </div>
    <!-- Schublade -->
    <el-Schublade
      :title="ZeitWählen"
      :visible.sync="Schublade"
      :direction="Richtung"
    >
      <div Klasse="ModusJeder" v-if="ListeNormal[0]">
        <div Klasse="modeEachs" v-for="(item, index) in listNormal" :key="index">
          <i class="setI el-icon-delete" @click="delTips(item)"></i>
          <i
            Klasse = "setI setIs el-icon-edit-outline"
            @click="Tipps hinzufügen(1, Artikel)"
          ></i>
          <p>
            <span>Startzeit:</span> <span>{{ item.time }}</span>
          </p>
          <p>
            <span>Name der landwirtschaftlichen Aktivität:</span> <span>{{ item.name }}</span>
          </p>
          <p>
            <span>Verantwortliche Person:</span> <span>{{ item.userName }}</span>
          </p>
          <p>
            <span>Anzahl der Teilnehmer:</span> <span>{{ item.people }}</span>
          </p>
          <p>
            <span>Zielspezifikation:</span> <span>{{ item.content }}</span>
          </p>
        </div>
      </div>
      <div Klasse="modeEach modeEached" v-else>
        <div Klasse="leererZustand">
          <img src="../../../assets/leftScreen/math17.png" alt="" />
        </div>
        <p>Für das aktuelle Datum sind keine landwirtschaftlichen Aktivitäten geplant.</p>
        <p>Klicken Sie auf die Schaltfläche „Landwirtschaftliche Aktivität hinzufügen“ in der unteren rechten Ecke, um sie hinzuzufügen! </p>
      </div>
      <div Klasse="FußBox">
        <el-button type="primary" @click="addTips(0)">Landwirtschaftliche Aktivitäten hinzufügen</el-button>
      </div>
    </el-Schublade>
    <!-- Neue Änderungen -->
    <el-dialog
      Titel=""
      :visible.sync="Formular aktualisieren"
      Breite="31vw"
      Klasse="addAlameBox"
    >
      <div slot="Titel" Klasse="Header-Titel" Stil="Position: relativ">
        <span class="Titelname"></span>
        <span class="title-age">{{ boxPrompt }}</span>
        <span
          Stil="
            Position: absolut;
            oben: 50 %;
            transformieren: verschiebeY(-50%);
            rechts: 0px;
            Schriftgröße: 2,22vh;
          "
        >
        </span>
      </div>
      <div Klasse="addAlaForm">
        <el-form
          ref="upTableData"
          :Regeln="Regeln"
          :Modell="upTableData"
          Beschriftungsbreite = "10vw"
        >
          <!-- <el-form-item label="Startzeit" prop="Zeit">
            <div Klasse="Block">
              <el-Datumsauswahl
                v-Modell="upTableData.time"
                Typ="Datum/Uhrzeit"
                Werteformat="jjjj-MM-tt HH:mm:ss"
                Platzhalter="Datum und Uhrzeit auswählen"
              >
              </el-Datumsauswahl>
            </div>
          </el-form-item> -->
          <el-form-item label="Name der landwirtschaftlichen Tätigkeit" prop="Name">
            <el-input v-model="upTableData.name"></el-input>
          </el-form-item>
          <el-form-item label="Verantwortlicher" prop="Benutzername">
            <el-input v-model="upTableData.Benutzername"></el-input>
          </el-form-item>
          <el-form-item label="Anzahl der Teilnehmer" prop="Personen">
            <el-input v-model="upTableData.Personen"></el-input>
          </el-form-item>
          <el-form-item label="Zielspezifikation" prop="content">
            <el-input v-model="upTableData.content"></el-input>
          </el-form-item>
          <el-form-item size="groß">
            <el-Schaltfläche
              Klasse="saveBtn"
              Typ="primär"
              @click="Form speichern('upTableData')"
              >Speichern</el-Schaltfläche
            >
          </el-form-item>
        </el-form>
      </div>
    </el-dialog>
  </div>
</Vorlage>
<Skript>
importiere Datumsformat aus "../../../components/dealTime.js";
Standard exportieren {
  Daten() {
    zurückkehren {
      Zeitauswahl: "7-26",
      Sechsen: [],
      Zahl: 0,
      aktiver Tag: 0,
      timeRex: "",
      listParams: {
        Seite: 1,
        Größe: "",
        Wo: "",
        Zeit: "",
      },
      IDs: 0,
      ListeNormal: [],
      aktiveListe: [
        {
          data1: "17.08.2021 15:30",
          data2: "1# Parzellenbewässerung",
          Daten3: „Sonne Guodong“,
          Daten4: "16",
          data5: „Bodenfeuchtigkeit erreicht 40%“,
        },
        {
          data1: "17.08.2021 15:30",
          data2: "1# Parzellenbewässerung",
          Daten3: „Sonne Guodong“,
          Daten4: "16",
          data5: „Bodenfeuchtigkeit erreicht 40%“,
        },
      ],
      updateForm: false,
      boxPrompt: "Neu",
      upTableData: {
        ID: 0,
        Name: "", //Operationsname Zeit: "", //Geplante Zeit Benutzername: "", //Verantwortliche Person Personen: "", //Anzahl der Personen Inhalt: "", //Inhalt},
      Regeln:
        Daten1: [
          { erforderlich: true, Nachricht: "Zeit", Auslöser: ["Unschärfe", "Änderung"] },
        ],
        Daten2: [
          {
            erforderlich: wahr,
            Meldung: „Produktname darf nicht leer sein“,
            Auslöser: ["verwischen", "ändern"],
          },
        ],
        Daten3: {
          erforderlich: wahr,
          Meldung: „Produkttyp darf nicht leer sein“,
          Auslöser: ["verwischen", "ändern"],
        },
        Daten4: {
          erforderlich: wahr,
          Meldung: "Spezifikation darf nicht leer sein",
          Auslöser: ["verwischen", "ändern"],
        },
        Daten5: {
          erforderlich: wahr,
          Meldung: "Die Liefermenge darf nicht leer sein",
          Auslöser: ["verwischen", "ändern"],
        },
      },
      // Schublade: false,
      Richtung: "rtl",
      // Datumswert2: "",
      Wert: neues Datum(),
      wird geladen: falsch,
      LogistikFormular: {
        Name: "",
        Region: -1,
      },
    };
  },

  montiert() {
    dies.requrstLists();
    dies.getNowDate();
    // dies.getActivityCalendar;
  },
  betrachten:
    aktiveListe(neuerWert) {
      this.activeList = neuerWert;
    },
  },
  berechnet: {
    reverseMessage() {
      var arrs = [];
      var countArrs = [];
      dies.activeList.forEach((val) => {
        arrs.push(Wert.Zeit);
      });
      return arrs.reduce(Funktion (vorherige, nächste) {
        vorherige[nächste] = vorherige[nächste] + 1 || 1;
        countArrs.push({ vorherige });
        zurück vorh.;
      }, {});
      // };
    },
  },
  Methoden: {
    // Aktuelle Uhrzeit abrufen getNowDate(){
      var date = neues Datum();
      this.value2 = dateFormat('JJJJ-mm',Datum)
    },
    // Holen Sie sich die Listenschnittstelle async requrstLists() {
      Konstante {
        Daten: {Daten},
      } = warte darauf.$post("product/getProductPlayList", {
        Seite: 1,
        Größe: "",
        Wo: "",
        Zeit: "",
      });
      datas.forEach((val) => {
        wenn (val.time.indexOf(":")) {
          console.log("Speicherplatz gefunden");
          val.time = val.time.split(" ")[0];
        }
      });
      this.activeList = Daten;
      // dies.sortArr()
    },
    asynchrone Anfrageliste () {
      Konstante {
        Daten: {Daten},
      } = warte auf dies.$post("product/getProductPlayList", dies.listParams);
      this.listNormal = Daten;
    },
    // Hinzufügen addTips(val, item) {
      dies.updateForm = wahr;
      wenn (Wert === 0) {
        this.boxPrompt = "Neu";
        dies.upTableData = {
          ID: 0,
          Name: "", //Name des Vorgangs Zeit: "", //Geplante Zeit Benutzername: "", //Verantwortliche Person Personen: "", //Anzahl der Personen Inhalt: "", //Inhalt};
      } sonst wenn (Wert === 1) {
        this.boxPrompt = "Bearbeiten";
        diese.ids = Artikel-ID;
        dies.$nextTick(() => {
          Dies.upTableData = JSON.parse(JSON.stringify(item));
        });
      }
    },
    //Speichern saveForm() {
      let url = "/Produkt/EditProductPlay";
      wenn (this.boxPrompt == "Neu") {
        diese.upTableData.id = 0;
      } sonst wenn (this.boxPrompt == "Bearbeiten") {
        diese.upTableData.id = diese.ids;
      }
      this.upTableData.time = this.timeChoose + "00:00:00";
      dies.$refs["upTableData"].validate((gültig) => {
        if (gültig) {
          dies.$get(url, dies.upTableData).then((res) => {
            this.updateForm = falsch;
            wenn (res.data.state == "Erfolg") {
              diese.requrstList();
              dies.requrstLists();
              this.$message.success("Vorgang erfolgreich");
            } anders {
              this.$message.error("Vorgang fehlgeschlagen! Bitte versuchen Sie es später erneut!");
            }
          });
        } anders {
          console.log("Fehler beim Senden!!");
          gibt false zurück;
        }
      });
    },
    wähleTag(Daten) {
      dies.$nextTick(() => {
        wenn (Datentyp === "aktueller Monat") {
          diese.Schublade = wahr;
          diese.listParams.time = Daten.Tag;
          diese.Zeitauswahl = Daten.Tag;
          diese.requrstList();
        } sonst wenn (data.type === "vorheriger Monat") {
          dies.prevBtn.click();
        } sonst wenn (data.type === "nächster-Monat") {
          dies.nextBtn.click();
        }
      });
    },

    // SchubladengriffSchließen(erledigt) {
      this.$confirm("Schließen bestätigen?")
        .then((res) => {
          Erledigt();
          dies.requrstLists();
        })
        .catch((err) => {});
    },
    // Löschen delTips(val) {
      konsole.log(Wert);
      this.$confirm("Dieser Vorgang löscht die Datei unwiderruflich. Möchten Sie fortfahren?", "Prompt", {
        confirmButtonText: "Bestätigen",
        cancelButtonText: "Abbrechen",
        Typ: "Warnung",
      })
        .then(() => {
          dies.$post("/product/deteleProductPlay", { id: val.id }).dann(
            (res) => {
              wenn (res.data.state == "Erfolg") {
                this.$message.success("Erfolgreich gelöscht");
                diese.requrstList();
                dies.requrstLists();
              } anders {
                dies.$message(res.data.msg);
              }
            }
          );
        })
        .fangen(() => {
          diese.$nachricht({
            Typ: "info",
            Nachricht: "Gelöscht",
          });
        });
    },

    //Zeitauswahl changeDate(val) {
      dieser.Wert = Wert;
    },
    //Aktualisieren refresh() {
      dies.laden = wahr;
      // diese.requrstList();
    },
    //Suchesearch() {
      let name = diese.logisticsForm.name;
      let level = diese.logisticsForm.region;
      wenn (Ebene == -1) Ebene = "";
      dies.laden = wahr;
      // diese.requrstList(Name, Ebene);
    },
    //Reset removeForm() {
      this.logisticsForm.name = "";
      diese.logisticsForm.region = -1;
      // diese.requrstList();
    },
  },
};
</Skript>

<style scoped lang="weniger">
@import "../../../style/backTable.less";
</Stil>
  <style scoped lang="weniger">
#famerCalendar /deep/ .el-calendar-table {
  Breite: 100 %;
  Höhe: 100%;
  &:nicht(.is-range) {
    // Daten, die nicht in diesem Monat liegen, nicht anklickbar machen und nicht in andere Monate springen lassen td.next {
      Zeigerereignisse: keine;
    }
    td.vorher {
      Zeigerereignisse: keine;
    }
  }
}

.calendarBody {
  Breite: 100 %;
  Höhe: 81vh;
}
#famerCalendar .newSeeds {
  Höhe: 90vh;
}
#famerCalendar /deep/ .el-calendar__header {
  Inhalt ausrichten: Abstand dazwischen;
  Polsterung: 12px 20px;
  Rand: keiner;
  Textausrichtung: zentriert;
  Hintergrund: #00284d;
  Anzeige: Block;
}
#famerCalendar /deep/ .el-button-group {
  Anzeige: keine;
}
#famerCalendar /deep/ .el-calendar__title {
  Farbe: #fff;
  selbst ausrichten: zentrieren;
  Zeilenhöhe: 3vh;
}
#famerCalendar /deep/ .el-calendar-table thead th:nth-of-type(2n) {
  Hintergrund: #5c768d;
  Farbe: #fff;
  Polsterung: 1vh 0;
}
#famerCalendar /deep/ .el-calendar-table thead th:nth-of-type(2n + 1) {
  Hintergrund: #335371;
  Farbe: #fff;
  Polsterung: 1vh 0;
}
#famerCalendar /deep/ .el-calendar__body {
  Polsterung: 0;
}
#famerCalendar .title-bottom /deep/ .el-input--prefix .el-input__inner {
  Polsterung links: 3vw;
  Breite: 75 %;
  /* Höhe: 4vh;
    Zeilenhöhe: 4vh; */
}
#famerCalendar /deep/ .el-date-editor.el-input,
.el-date-editor.el-input__inner {
  Breite: 10vw;
}
#famerCalendar .timeFilter {
  Position: relativ;
}
#famerCalendar /deep/ .el-calendar-table td {
  Textausrichtung: rechts;
}
#famerCalendar /deep/ .el-calendar-table .el-calendar-day {
  Box-Größe: Rahmenbox;
  // Polsterung: 1vh;
  Polsterung: 0;
  Höhe: 11,5vh;
}
#famerCalendar /deep/ .el-calendar-table .el-calendar-day > p {
  Box-Größe: Rahmenbox;
  Polsterung: 1vh;
}
#famerCalendar /deep/ .timeFilter:after {
  Mindestbreite: 2vw;
  Leerzeichen: Nowrap;
  Inhalt: "Datum";
  Rahmen rechts: 1px durchgezogen #c0c4cc;
  Polsterung: 0 0,2vw;
  Box-Größe: Rahmenbox;
  /* Zeilenhöhe: 4vh; */
}
#famerCalendar /deep/ .el-drawer__open .el-drawer.rtl:focus-visible {
  Rand: keiner;
}
#famerCalendar /deep/ .el-drawer__header:focus-visible {
  Rand: keiner;
}
.cellInfoUl {
  Breite: 80%;
  Höhe: 100%;
  Überlauf: versteckt;
  Überlauf-y: scrollen;
}
.cellInfoUl::-webkit-scrollbar {
  Anzeige: keine;
}
.cellInfo {
  Position: relativ;
  Breite: 100 %;
  Höhe: 100%;
  Anzeige: Flex;
  Inhalt ausrichten: Abstand dazwischen;
  Polsterung: 1vh;
  Box-Größe: Rahmenbox;
}
.tipMsg {
  Position: absolut;
  Anzeige: Flex;
  rechts: 0vh;
  unten: 0vh;
  Breite: 2vw;
  Höhe: 2vw;
  Farbe: #fff;
}
.tipMsged {
  Position: absolut;
  oben: 50 %;
  links: 50%;
  Z-Index: 100;
  transformieren: übersetzen (-10 %, -20 %);
}
.tipMsg::vor {
  Inhalt: "";
  Position: absolut;
  oben: 0;
  links: 0;
  Höhe: 0px;
  Breite: 0px;
  Rand oben: durchgehend 2vw transparent;
  Rand links: durchgezogen 2vw #3999e6;
  transformieren: drehenZ(-90 Grad);
}
.cellInfoUl li {
  Breite: 100 %;
  Zeilenhöhe: 2,5vh;
  Farbe: #fff;
  Hintergrund: #61adeb;
  Rand unten: 1vh;
  Polsterung: 0 0,5vw;
  Box-Größe: Rahmenbox;
  Rahmenradius: 16px;
  Textausrichtung: zentriert;
}
.cellInfoBox {
  Textausrichtung: zentriert;
  /* Farbe: #; */
}
.modeEach {
  Breite: 100 %;
  Polsterung: 2vh 1vw;
  Box-Größe: Rahmenbox;
  Höhe: 78vh;
  Überlauf: versteckt;
  Überlauf-y: scrollen;
}
.modeEach::-webkit-scrollbar {
  Anzeige: keine;
}
.FußBox {
  Breite: 100 %;
  Polsterung: 2vh 1vw;
  Box-Größe: Rahmenbox;
}
.modeEachs {
  Breite: 100 %;
  Mindesthöhe: 18vh;
  Hintergrund: #3999e6;
  Rahmenradius: 6px;
  Polsterung: 2vh 1vw;
  Box-Größe: Rahmenbox;
  Position: relativ;
  Rand unten: 1vh;
}
.setI {
  Position: absolut;
  oben: 1vh;
  rechts: 0,5vw;
  Hintergrund: #fff;
  Breite: 2,5vh;
  Höhe: 2,5vh;
  Randradius: 50 %;
  Textausrichtung: zentriert;
  Zeilenhöhe: 2,5vh;
  Farbe: rot;
}
.setIs {
  oben: 1vh;
  rechts: 2vw;
  Farbe: #3999e6;
}
.modeEachs span {
  Schriftgröße: 1,3vh;
  Schriftfamilie: Source Han Sans CN;
  Schriftstärke: 400;
  Farbe: #ffffff;
  Zeilenhöhe: 2,78vh;
}
.modeEachs span:n-ter-Typ(1) {
  Mindestbreite: 3vw;
  Anzeige: Inline-Block;
}
.FußBox {
  Textausrichtung: rechts;
}
.emptyState {
  Breite: 100 %;
  Höhe: 60%;
  Textausrichtung: zentriert;
}
.emptyState img {
  Breite: 80%;
  Mindesthöhe: 100 %;
}
.modeEached {
  Textausrichtung: zentriert;
}
.modeEached p {
  Schriftgröße: 1,67vh;
  Schriftfamilie: Source Han Sans CN;
  Schriftstärke: 400;
  Farbe: #666666;
  Zeilenhöhe: 2,78vh;
}
.shadowBox {
  Kastenschatten: 0px 0px 15px 3px rgba (0, 0, 0, 0,15);
  Polsterung: 1vh;
  Box-Größe: Rahmenbox;
}
</Stil>

Dies ist das Ende dieses Artikels über den Beispielcode der Kalenderkomponente mit Element in Vue. Weitere relevante Inhalte zur Kalenderkomponente mit Vue-Element finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Vue implementiert Kalenderkomponente
  • Vue implementiert eine vertikal unendlich verschiebbare Kalenderkomponente
  • Kapselungsmethode der Vue-Kalenderkomponente
  • Schreiben Sie eine Vue-Kalenderkomponente von Grund auf neu
  • Benutzerdefinierte optionale Zeitkalenderkomponente von Vue
  • Verbesserte Kalenderkomponente basierend auf Vue2-Calendar (einschließlich chinesischer Anweisungen)
  • Vue implementiert eine coole Kalenderkomponente
  • VUE implementiert Kalenderkomponentenfunktion
  • Vue-Version der handschriftlichen Kalenderkomponente

<<:  Analyse von 2 Implementierungsmethoden zum Konfigurieren der JNID-Datenquelle in Tomcatc3p0

>>:  Detaillierte Erklärung zur korrekten Verwendung der Zählfunktion in MySQL

Artikel empfehlen

So verwenden Sie die Vue-Timeline-Komponente

In diesem Artikelbeispiel wird der spezifische Im...

el-table in vue realisiert automatischen Deckeneffekt (unterstützt feste)

Inhaltsverzeichnis Vorwort Umsetzungsideen Wirkun...

Analyse der Vorteile von path.join() in Node.js

Sie fragen sich möglicherweise, warum Sie die Met...

So lösen Sie das Problem zu vieler geöffneter Dateien in Linux

Die Ursache liegt darin, dass der Prozess zu eine...

Detaillierte Analyse des Linux-Kernel-Makros container_of

1. Wie oben erwähnt Ich habe dieses Makro gesehen...

Datagrip2020 kann MySQL-Treiber nicht herunterladen

Wenn Sie es nicht durch direktes Klicken auf „Dow...

impress.js Präsentationsschicht-Framework (Demonstrationstool) - erste Erfahrungen

Ich habe ein halbes Jahr lang nicht gebloggt, wofü...

Ein kurzes Verständnis des Unterschieds zwischen MySQL Union All und Union

Union ist eine Vereinigungsoperation für die Date...