Vue realisiert Preiskalendereffekt

Vue realisiert Preiskalendereffekt

In diesem Artikelbeispiel wird der spezifische Code von Vue zur Erzielung des Preiskalendereffekts als Referenz geteilt. Der spezifische Inhalt ist wie folgt

1. Rendern

2. Herunterladen und global installieren: npm install ele-calendar

3. Erstellen Sie unter Komponenten eine neue Datei calendar.vue mit folgendem Inhalt:

<Vorlage>
  <div Stil="Breite:600px">
    <ele-kalender
      :render-content="Renderinhalt"
      :data="Datumsdefinition"
      :prop="Eigenschaft"
      :disabledDate="Deaktivierungsdatum"
      :effektivesZeitlimit="effektivesZeitlimit"
      :Standardwert="Standardwert"
    >
    </ele-Kalender>
  </div>
</Vorlage>

<Skript>
importiere eleCalendar aus „ele-calendar“
importiere 'ele-calendar/dist/vue-calendar.css'
Standard exportieren {
  Requisiten: {
    Datumsdefinition: {
      Typ: Array,
      Standard: () => {
        zurückkehren []
      }
    },
    Standardpreis: {
      Typ: Zeichenfolge,
      Standard: () => {
        zurückkehren ''
      }
    },
    effektivesZeitlimit:
      Typ: Zeichenfolge,
      Standard: () => {
        zurückkehren ''
      }
    },
    Standardwert: {
      Typ: Datum,
      Standard: () => {
        returniere neues Datum()
      }
    }
  },
  Daten () {
    const self = dies
    zurückkehren {
      prop: 'date', // Entsprechender Datumsfeldname disabledDate: date => {
        zurückkehren (
          Datum.Wert von() < neues Datum().Wert von() - 1 * 24 * 60 * 60 * 1000 ||
          Datum.Wert von() > neues Datum (selbst.effektivesZeitlimit).Wert von()
        )
      }
    }
  },
  Komponenten:
    eleKalender
  },
  Methoden: {
    //JSX-Syntax renderContent (h, parmas) {
      const self = dies
      const Schleife = Daten => {
        zurückkehren (
          <div Klasse={data.defvalue.value ? 'aktiv' : ''}>
            <div>{Daten.defvalue.text}</div>
            <div>
              ¥
            <i-Eingabe
              Wert={
                Daten.Defwert.Wert.Inhalt
                  ? Daten.Defwert.Wert.Inhalt
                  : selbst.Standardpreis
              }
              ein-ein-Unschärfe={Ereignis =>
                selbst.handleChange(
                  Ereignis,
                  Daten.defwert.Wert
                    ? Daten.defwert.Wert.Datum
                    : selbst.handleDate(data.defdate)
                )
              }
              deaktiviert={
                Daten.defwert.Wert
                  ? neues Datum(data.defvalue.value.date).valueOf() <
                        neues Date().valueOf() - 1 * 24 * 60 * 60 * 1000 ||
                      neues Datum(data.defvalue.value.date).valueOf() >
                        neues Datum (selbst.effektivesZeitlimit).valueOf ()
                  : data.defdate.valueOf() <
                        neues Date().valueOf() - 1 * 24 * 60 * 60 * 1000 ||
                      Daten.defdate.valueOf() >
                        neues Datum (selbst.effektivesZeitlimit).valueOf ()
              }
              Schlüssel={
                Daten.defwert.Wert
                  ? Daten.defwert.Wert.Datum
                  : selbst.handleDate(data.defdate)
              }
            />
            </div>
          </div>
        )
      }
      zurück <div style='min-height:60px;'>{loop(parmas)}</div>
    },
    handleChange (Ereignis, Datum) {
      console.log(Ereignis, Datum, 'dddddd')
      const self = dies
      const index = self.datedef.findIndex(item => {
        Rückgabewert: item.date === Datum
      })
      wenn (istNaN(Ereignis.Ziel.Wert)) {
        self.$Message.error('Bitte geben Sie den korrekten Preis ein.')
        event.target.value = selbst.Standardpreis
        zurückkehren
      }
      wenn (Ereignis.Ziel.Wert && Index === -1) {
        wenn (Ereignis.Ziel.Wert === selbst.Standardpreis) {
          zurückkehren
        }
        selbst.datedef.push({
          Datum,
          Inhalt: Ereignis.Ziel.Wert,
          cid: null
        })
        Konsole.log('self.datedef', self.datedef)
        dies.$emit('aaa', self.datedef)
      } sonst wenn (Ereignis.Ziel.Wert && Index !== -1) {
        wenn (Ereignis.Ziel.Wert === selbst.Standardpreis) {
          selbst.datedef.splice(index, 1)
          zurückkehren
        }
        const selectItem = self.datedef[index]
        selectItem.content = Ereignis.Ziel.Wert
        self.datedef.splice(Index, 1, Element auswählen)
      } sonst wenn (!event.target.value && index !== -1) {
        selbst.datedef.splice(index, 1)
      } anders {
        event.target.value = selbst.Standardpreis
      }
    },
    handleDate (Datum) {
      const jahr = date.getFullYear()
      lass Monat = date.getMonth() + 1
      Monat = Monat >= 10 ? Monat : '0' + Monat
      lass idate = date.getDate()
      idate = idate >= 10 ? idate : '0' + idate
      gibt `${year}-${month}-${idate}` zurück
    }
  }
}
</Skript>

<style lang="scss">
.el-picker-panel-calendar.el-date-picker-calendar.el-popper {
  Kastenschatten: keiner;
}
.el-date-table-calendar td > div > div {
  Rand: 1px durchgezogen #aaa;
  Farbe: #fff;
  Rand: 5px;
  & > div:erstes-Kind {
    Hintergrundfarbe: #aaa;
  }
  & > div:n-tes-Kind(2) {
    Polsterung: 5px;
    Farbe: #000;
    .ivu-input-wrapper {
      Breite: 80%;
    }
  }
  &.aktiv {
    Rand: 1px durchgezogen #2ab561;
    & > div:erstes-Kind {
      Hintergrundfarbe: #2ab561;
    }
    & > div:n-tes-Kind(2) {
      Polsterung: 5px;
      Farbe: #000;
      .ivu-input-wrapper {
        Breite: 80%;
      }
    }
  }
}
// Wenn dieser Abschnitt freigegeben wird, werden alle Felder vor dem aktuellen Tag ausgegraut // .el-date-table-calendar td.disabled > div > div {
// Rand: 1px durchgezogen #aaa;
//Farbe: #fff;
//Rand: 5px;
// & > div:erstes-Kind {
// Hintergrundfarbe: #aaa;
// }
// & > div:n-tes-Kind(2) {
// Polsterung: 5px;
//Farbe: #000;
// .ivu-input-wrapper {
// Breite: 80 %;
// }
// }
// }
.el-date-table-calendar td.verfügbar:hover {
  Farbe: #000;
}
.el-date-table-calendar td.verfügbar.heute {
  Farbe: #000;
  Schriftstärke: normal;
}
.el-date-table-calendar tr td.current.available:nicht(.deaktiviert) {
  Hintergrundfarbe: #fff;
}
</Stil>

4. Seiteneinführung Registrierung

<Skript>
 Kalender importieren aus '../../components/calendar'
 Standard exportieren {
    Komponenten: { Kalender }
  }
  Daten() {
    zurückkehren {
      effektivesZeitlimit: '',
      RegelForm: {
        Preis: '',
        Konfigurationspreisliste: []
      }
      },
      Regeln:
      }
 }
    }
</Skript>

5.html

Ich habe es in den Dialog geschrieben

<el-form-item label="Preiseinstellungen" prop="calendarPrice">
 <Kalender
 :datedef="ruleForm.configPreisliste"
 :Standardpreis="Regelform.Preis"
 :effektivesZeitlimit="effektivesZeitlimit"
 ></Kalender>
</el-form-item>

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • WeChat-Applet: benutzerdefinierter Kalendereffekt mit Preisanzeige
  • jQuery-Kalenderpreis, Inventar usw.
  • jQuery-Webkomponente Hintergrundkalender Preis, Inventareinstellungscode

<<:  Mysql speichert Baumstruktur durch Adjazenzliste (Adjazenzliste)

>>:  So starten und stoppen Sie das Shell-Skript zur Bereitstellung eines SpringBoot-JAR-Programms unter Linux

Artikel empfehlen

Detaillierte Erklärung des Unterschieds zwischen Flex und Inline-Flex in CSS

inline-flex ist dasselbe wie inline-block. Es ist...

So zeigen Sie die Ausführungszeit von MySQL-Anweisungen über Query Profiler an

Im vorherigen Artikel wurden zwei Methoden zum Üb...

Schritte zur Einführung von PWA in ein Vue-Projekt

Inhaltsverzeichnis 1. Abhängigkeiten installieren...

MySQL-Lerndatenbank-Suchanweisung DQL Xiaobai Kapitel

Inhaltsverzeichnis 1. Einfacher Datenabruf 2. Dat...

Detaillierte Erklärung der Verwendung des Linux-Befehls „tee“

Der Befehl tee wird hauptsächlich verwendet, um d...

JavaScript zum Erzielen digitaler Uhreffekte

In diesem Artikelbeispiel wird der spezifische Co...

Referenz zum Detaildesign des Benutzererlebnisses auf B2C-Websites

Als ich kürzlich Apple.com/Ebay.com/Amazon.com/sh...

Zusammenfassung des fragmentierten Wissens zum Docker-Management

Inhaltsverzeichnis 1. Übersicht 2. Anwendungsbeis...

CSS Sticky Footer-Implementierungscode

Dieser Artikel stellt den Implementierungscode fü...

Zusammenfassung von 10 erweiterten Tipps für Vue Router

Vorwort Vue Router ist der offizielle Routing-Man...

Eine Sammlung möglicher Probleme bei der Migration von SQLite3 nach MySQL

Kurzbeschreibung Passend für Leser: Mobile Entwic...

Detaillierte Erklärung zur Installation der PHP-Curl-Erweiterung unter Linux

Dieser Artikel beschreibt, wie man die PHP-Curl-E...

So definieren Sie Eingabetyp=Dateistil

Warum die Dateisteuerung verschönern? Stellen Sie ...