JS implementiert das Lehrplan-Stundenplan-Applet (imitiert den Super-Lehrplan) und fügt eine benutzerdefinierte Hintergrundfunktion hinzu

JS implementiert das Lehrplan-Stundenplan-Applet (imitiert den Super-Lehrplan) und fügt eine benutzerdefinierte Hintergrundfunktion hinzu

Überblick:

Ich habe aus mehreren auf dem Markt erhältlichen Fahrplanprogrammen gelernt. Da die Funktionen zu kompliziert sind, habe ich versucht, ein Fahrplan-Applet zu erstellen und als Open Source bereitzustellen. Es unterstützt derzeit die Funktionen zum Hinzufügen und Löschen von Fahrplänen und fügt auch einen Tagesfahrplan hinzu. Insgesamt fühlt es sich wie ein ziemlich prägnanter Fahrplan an. Das Backend wurde auf Basis von Fastadmin entwickelt.

GIF-Demo:

Die Open-Source-Adresse von Gitee wird unten angezeigt

In letzter Zeit habe ich immer das Gefühl, dass die aktuelle Benutzeroberfläche zu einfach ist und den Anforderungen einer anständigen Person wie mir nicht gerecht wird. Daher habe ich die Funktion zum Anpassen des Hintergrunds des Kursplans hinzugefügt.
Neue Seiten hinzugefügt:

Wirkung:

Sie müssen einen Eintrag in mine.js hinzufügen:

{
                Name: "Stundenplan-Hintergrund festlegen",
                Symbol: "/images/scheduleIcon.png",
                URL: "/Seiten/Zeitplan/Zeitplan?",
            },

Einen neuen Seitenplan hinzufügen

WXML-Code

<Ansichtsstil="Höhe:{{CustomBar}}px;">
    <view class="cu-bar ev-fr-start" bindtap="ZurückSeite" style="height:{{CustomBar}}px;padding-top:{{StatusBar}}px;">
        <text class="cuIcon-back padding-lr-sm"></text>
        <view class="action">{{couples? "Hintergrund für Ta festlegen":"Den Stundenplan-Hintergrund festlegen"}}</view>
    </Ansicht>
</Ansicht>
<view wx:if="{{Paare}}" class="ev-mainBody">
    <Ansichtsklasse="ev-fc-center">
        <view wx:if="{{!CouplesBG}}" data-type='Paare' bind:tap="modifyImage" class="addBG ev-fc-center">
            <text Klasse="cuIcon-roundadd" Stil="Farbe:#5E99FB"></text>
            <text class="padding-xs" style="color:#5E99FB">Hintergrund hochladen</text>
        </Ansicht>
        <view wx:if="{{CouplesBG}}" class="BGBox ev-fc-center">
            <view class="BGImg" data-type='Paare' bind:tap="modifyImage">
                <image mode="aspectFill" src="{{CouplesBG}}" />
            </Ansicht>
            <view class="round BGState">Paar-Stundenplan-Hintergrund</view>
        </Ansicht>
    </Ansicht>
    <Ansichtsklasse="padding-top">
        <view class="title">Startanzeigezeit des Hintergrunds</view>
        <dateTimePicker Typ="Minute" bind:change="TimePicker">
            <view class="sendTimeBox ev-fr">
                <input type="text" class="sendTime padding-lr" disabled="{{true}}" value="{{sendTime}}" />
                <text style="Schriftgröße: 24px; Farbe: #92979D" Klasse="cuIcon-triangledownfill padding-lr-sm"></text>
            </Ansicht>
        </dateTimePicker>
    </Ansicht>
    <Ansichtsklasse="padding-top">
        <view class="title">Hintergrundanzeigedauer festlegen</view>
        <button wx:for="{{displayTimeList}}" wx:key="index" class="cu-btn runder Rand-tb {{item.checked ? 'bg-blue':''}} Rand rechts" data-id="{{index}}" bind:tap="showTime">
            {{item.label}}
        </button>
    </Ansicht>
    <button bind:tap="saveCouplesBG" deaktiviert="{{!CouplesBG}}" Klasse="cu-btn block bg-blue margin-tb-sm lg saveButton" Stil="unten: {{StatusBar}}px;" Typ="">
        Speichern</button>
</Ansicht>
<Ansicht wx:else Klasse="ev-mainBody">
    <Ansicht>
        <image class="message" mode="scaleToFill" src="/images/scheduleIcon.png" />
    </Ansicht>
    <Ansicht>
        <text class="title">Stundenplan-Hintergrund festlegen</text>
        <view class="padding-top-sm tips">Benutzer können ihre Lieblingsbilder als Hintergrundanzeige des Stundenplans hochladen (zum Ersetzen auf das Bild klicken)</view>
    </Ansicht>
    <Ansichtsklasse="ev-fr BGListBox">
        <view wx:if="{{dailySchedule}}" class="BGBox ev-fc-center">
            <view Klasse="BGImg" Datentyp='täglich' bind:tap="modifyImage">
                <image mode="aspectFill" src="{{dailySchedule}}" />
            </Ansicht>
            <view class="round BGState">Täglicher Zeitplanhintergrund</view>
        </Ansicht>
        <view wx:if="{{!dailySchedule}}" data-type='daily' bind:tap="modifyImage" class="addBG ev-fc-center">
            <text Klasse="cuIcon-roundadd" Stil="Farbe:#5E99FB"></text>
            <text class="padding-xs" style="color:#5E99FB">Tagesplan-Hintergrund hochladen</text>
        </Ansicht>
        <view wx:if="{{weeklySchedule}}" class="BGBox ev-fc-center">
            <view class="BGImg" data-type='Woche' bind:tap="modifyImage">
                <image mode="aspectFill" src="{{weeklySchedule}}" />
            </Ansicht>
            <view class="round BGState">Hintergrund des Wochenplans</view>
        </Ansicht>
        <view wx:if="{{!weeklySchedule}}" data-type='Woche' bind:tap="modifyImage" class="addBG ev-fc-center">
            <text Klasse="cuIcon-roundadd" Stil="Farbe:#5E99FB"></text>
            <text class="padding-xs" style="color:#5E99FB">Wochenstundenplan-Hintergrund hochladen</text>
        </Ansicht>
    </Ansicht>
    <button wx:if="{{(weeklySchedule || dailySchedule)}}" bind:tap="SpeichernButton" class="cu-btn block bg-blue margin-tb-sm lg SpeichernButton" style="bottom: {{StatusBar}}px;" type="">
        Standardhintergrund wiederherstellen</button>
</Ansicht>

JS-Code

importieren {
    ZeitplanBG,
    PaareBG,
    PaareInfoAdd,
    setbgdefault,
} von "../../utils/api/user";
//Anwendungsinstanz abrufen const app = getApp();
: Ein Tagjs-Tag hat eine Länge von 128 Zeichen.
importiere { wxShowToast } von "../../utils/promisify";
Seite({
    Daten: {
        Statusleiste: app.globalData.StatusBar,
        Benutzerdefinierte Leiste: app.globalData.CustomBar,
        ImgUrl: app.globalData.ImgUrl,
        Anzeigebereich: app.globalData.displayArea,
        CouplesBG: null, // Hintergrund für den Zeitplan von Paaren dailySchedule: null, // Hintergrund für den Zeitplan von Tag zu Tag weeklySchedule: null, // Hintergrund für den Zeitplan von Tag zu Tag sendTime: "now", // Startzeit des Hintergrunds für den Zeitplan von Paaren displayTimeList: [
            {
                Beschriftung: "Eines Tages",
                geprüft: falsch,
                Zeit: 1,
            },
            {
                Beschriftung: "eine Woche",
                geprüft: wahr,
                Zeit: 7,
            },
            {
                Bezeichnung: "ein Monat",
                geprüft: falsch,
                Zeit: 30,
            },
        ],
        Startzeit: null,
    },
    onLoad: Funktion (Abfrage) {
        let { index_bgimage, table_bgimage } = app.globalData.userInfo;
        dies.setData({
            Paare: Abfrage.Paare? Abfrage.Paare: null,
            Tagesplan: index_bgimage
                ? app.globalData.ImgUrl + index_bgimage
                : null, //Täglicher Zeitplan-Hintergrund weeklySchedule: table_bgimage
                ? app.globalData.ImgUrl + table_bgimage
                : null, // Wöchentlicher Zeitplan-Hintergrund});
    },
    /**
     * Eine Seite zurück */
    ZurückSeite() {
        wx.navigateZurück({
            Delta: 1,
        });
    },
    /**
     * Anzeigezeit umschalten */
    zeigeZeit(e) {
        let id = e.currentTarget.dataset.id;
        Konsole.log(e.currentTarget.dataset.id);
        let displayTimeList = this.data.displayTimeList.map((v, i) => {
            v.geprüft = id === i;
            zurückgeben v;
        });
        dies.setData({
            AnzeigeZeitliste,
        });
    },
    /**
     * Hintergrund ändern */
    Bild ändern(e) {
        let-Typ = e.currentTarget.dataset.type;
        wx.wählenBild({
            Anzahl: 1,
            sizeType: ["komprimiert"],
            Quelltyp: ["Album"],
            Erfolg: (res) => {
                // tempFilePath kann als src-Attribut des img-Tags verwendet werden, um Bilder anzuzeigen const tempFilePaths = res.tempFilePaths;
                Schalter (Typ) {
                Fall "Woche":
                    scheduleBG(tempFilePaths[0], "table").then((v) => {
                        app.getSet();
                        v.code und wxShowToast(v.msg);
                        dies.setData({
                            wöchentlicher Zeitplan: tempFilePaths[0],
                        });
                    });
                    brechen;
                Fall "täglich":
                    scheduleBG(tempFilePaths[0], "index").then((v) => {
                        app.getSet();
                        v.code und wxShowToast(v.msg);
                        dies.setData({
                            dailySchedule: tempFilePaths[0],
                        });
                    });
                    brechen;
                Fall „Paare“:
                    PaareBG(tempFilePaths[0]).then((v) => {
                        konsole.log(v);
                        app.getSet();
                        v.code und wxShowToast(v.msg);
                        dies.setData({
                            PaareBG:
                                    app.globalData.ImgUrl + v.data.imgurl,
                        });
                    });
                    brechen;
                Standard:
                    wxShowToast("Einstellung fehlgeschlagen, bitte versuchen Sie es erneut");
                    brechen;
                }
            },
        });
    },
    /**
     * Standardhintergrund wiederherstellen */
    speichernButton() {
        dies.setData({
            Tagesplan: null,
            wöchentlicher Zeitplan: null,
        });
        setbgdefault().then((v) => {
            v.code und wxShowToast(v.msg);
            app.getSet();
        });
    },
    /**
     * Beginn des Stundenplans für Paarkurse */
    Zeitauswahl(e) {
        let day = dayjs(e.detail).format("TT.MM.");
        let am = dayjs(e.detail).format("A") == "PM" ? "Nachmittag" : "Morgen";
        let Zeit = Tagjs (e.detail).format("HH:mm");
        let sendTime = `${day} ${am} ${time}`;
        console.log(sendTime, "Zeitauswahl");
        dies.setData({
            Sendezeit,
            Startzeit: dayjs(e.detail),
        });
    },
    /**
     * Paarhintergrund speichern */
    speichernPaareBG() {
        let { displayTimeList, startTime, CouplesBG } = diese.Daten;
        let endType = displayTimeList.filter((v) => v.checked === true)[0];
        let _startTime = Startzeit ? dayjs(Startzeit) : dayjs();
        let endTime = endType.time;
        let tid = app.globalData.userInfo.lovers_id;
        wenn (!tid) {
            wx.showToast({
                Titel: "Speichern fehlgeschlagen",
                Symbol: "keine",
                Dauer: 2000,
            });
            zurückkehren;
        }
        PaareInfoAdd({
            bald,
            Startzeit: _startTime.unix(),
            Endzeit: Endzeit,
            Liebessortierung: 1,
            Inhalt: CouplesBG.replace(this.data.ImgUrl, ""),
        }).then((v) => {
            wxShowToast(v.msg);
            wenn (v.code) {
                app.getSet().then(() => {
                    dies.BackPage();
                });
            }
        });
    },
});

WSS-Code

KopfBox {
  Breite: 750rpx; }

Seite {
  Hintergrundfarbe: #fff; }

.BGListBox {
  Flex-Wrap: Umwickeln;
  Inhalt ausrichten: Abstand zwischen; }

.BGBox {
  Breite: 321rpx;
  Höhe: 321rpx;
  Rahmenradius: 34rpx;
  Überlauf: versteckt;
  Rand oben: 22rpx; }
  .BGBox .BGImg {
    Breite: 321rpx;
    Höhe: 321rpx; }
  .BGBox .BGState {
    Position: relativ;
    Hintergrund: #000000;
    Deckkraft: 0,5;
    Polsterung: 10rpx 20rpx;
    unten: 50rpx;
    Farbe: #fff; }

.addBG {
  Breite: 321rpx;
  Höhe: 321rpx;
  Rand oben: 22rpx;
  Rand: 1rpx gestrichelt #92979d;
  Rahmenradius: 24rpx;
  Rahmenradius: 34rpx; }

.Nachricht {
  Breite: 70rpx;
  Höhe: 70rpx;
  Rand oben: 20rpx; }

.Titel {
  Schriftgröße: 32rpx;
  Schriftstärke: 500;
  Zeilenhöhe: 45rpx;
  Farbe: #282b2f; }

.Tipps {
  Schriftgröße: 24rpx;
  Schriftstärke: 400;
  Zeilenhöhe: 33rpx;
  Farbe: #92979d; }

.sendTimeBox {
  Breite: 686rpx;
  Höhe: 90rpx;
  Hintergrund: #ffffff;
  Rand: 1rpx durchgezogen #dfe4ea;
  Rahmenradius: 14rpx;
  Rand: 24rpx 0; }

*** Open-Source-Adresse:
Gitee Open Source: (https://gitee.com/chengdu-gengzixin_liu-jiyuan/timetable)

Dies ist das Ende dieses Artikels darüber, wie man mit JS ein kleines Programm namens Stundenplan implementiert (das den Super-Stundenplan imitiert) und eine benutzerdefinierte Hintergrundfunktion hinzufügt. Weitere relevante Inhalte zum Super-Stundenplan finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder stöbern Sie weiter in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • JavaScript implementiert das Klassenlotterie-Applet
  • JavaScript zum Implementieren eines Applets für zufällige Namensaufrufe
  • WeChat-Applet: 12 Zeilen JS-Code, um selbst eine Slider-Funktion zu schreiben (empfohlen)
  • WeChat-Applet zum Abrufen des Beispielcodes zur JavaScript-Entschlüsselung einer Mobiltelefonnummer – detaillierte Erläuterung

<<:  Responsive Layout-Zusammenfassung (empfohlen)

>>:  Lösung zur Verwendung von html2canvas zum Verarbeiten von Dom-Elementen mit Baidu-Map in Bilder

Artikel empfehlen

Mehrere Möglichkeiten zur Implementierung der Vererbung in JavaScript

Inhaltsverzeichnis Strukturelle Vererbung (implem...

MySQL-Beispielcode für die Addition und Subtraktion von Datum und Uhrzeit

Inhaltsverzeichnis 1.MySQL addiert oder subtrahie...

JavaScript zur Implementierung eines einziehbaren sekundären Menüs

Der spezifische Code zur Implementierung des einz...

Implementierung der Knotenverbindung zur MySQL-Abfragetransaktionsverarbeitung

Inhaltsverzeichnis Geben Sie das Thema MySQL ein:...

Linux-Installation Redis-Implementierungsprozess und Fehlerlösung

Ich habe heute Redis installiert und es sind eini...

Spezifische Verwendung von Nginx Keepalive

Der Standardanforderungsheader des http1.1-Protok...

Erste Schritte Tutorial für Anfänger⑧: Einfaches Erstellen einer Artikel-Site

In meinem letzten Beitrag habe ich darüber gesproc...

Beispielcode zur Implementierung der PC-Auflösungsanpassung in Vue

Inhaltsverzeichnis planen Abhängigkeiten installi...

Beispiel für die Konfiguration von Nginx im CentOS-Server

Laden Sie das sichere Terminal MobaXterm_Personal...

Analyse der Verwendung des Linux-Schwachstellen-Scan-Tools lynis

Vorwort: Lynis ist ein Sicherheitsprüfungs- und H...

Installieren Sie Docker für Windows unter Windows 10 Home Edition

0. Hintergrund Hardware: Xiaomi Notebook Air 13/I...