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

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.15 winx64

In diesem Artikel wird die Installations- und Kon...

Detaillierte Erläuterung der praktischen Anwendung des HTML-Tabellenlayouts

Wann wird die Tabelle eingesetzt? Tabellen werden...

JavaScript zum Erzielen eines einfachen Drag-Effekts

In diesem Artikel wird der spezifische JavaScript...

Befehle zum Suchen der Domänen-IP-Adresse im Linux-Terminal (fünf Methoden)

In diesem Tutorial wird erklärt, wie Sie die IP-A...

Dinge, die Sie nicht über die CSS-Pseudoelemente ::before und ::after wissen

CSS hat zwei Pseudoklassen, die nicht häufig verw...

Verwendung von MySQL DDL-Anweisungen

Vorwort Die Sprachklassifikation von SQL umfasst ...

React implementiert den Beispielcode der Radiokomponente

Ziel dieses Artikels ist es, die Grundfunktionen ...

So konfigurieren Sie den Redis-Sentinel-Modus in Docker (auf mehreren Servern)

Inhaltsverzeichnis Vorwort Zustand Docker install...

Zusammenfassung der Standardverwendung von HTML-, CSS- und JS-Kommentaren

Das Hinzufügen der erforderlichen Kommentare ist ...

Detaillierte Erläuterung der Redis-Master-Slave-Replikationspraxis mit Docker

Inhaltsverzeichnis 1. Hintergrund 2. Bedienungssc...