WeChat-Miniprogramm zur Implementierung elektronischer Signaturen

WeChat-Miniprogramm zur Implementierung elektronischer Signaturen

In diesem Artikel finden Sie den spezifischen Code zur Implementierung elektronischer Signaturen in WeChat Mini-Programmen als Referenz. Der spezifische Inhalt ist wie folgt

<Ansichtsklasse="sign-contain">
 <Klasse anzeigen="Zeichenname">
  <canvas id="Leinwand" Canvas-ID="Leinwand" Klasse="{{ sysType === 'iOS' ? 'Leinwand' : 'Leinwand bg000'}}" disable-scroll="true" bindtouchstart="LeinwandStart" bindtouchmove="LeinwandBewegung" bindtouchend="LeinwandEnde" touchcancel="LeinwandEnde" binderror="LeinwandIdErrorCallback"></Leinwand>
 </Ansicht>

 <Ansichtsklasse="btn-wrap">
  <button catchtap="cleardraw">Signatur löschen</button>
  <button catchtap="uploadImg">Signatur hochladen</button>
 </Ansicht>
</Ansicht>

javascript - Argumente:

var context = null; // Verwenden Sie wx.createContext, um den Zeichenkontext zu erhalten
var isButtonDown = false; //Gibt an, ob gerade gezeichnet wird var arrx = []; //Horizontale Aktionskoordinate var arry = []; //Vertikale Aktionskoordinate var arrz = []; //Gesamtzustand, der eine Kombination aus Drücken und Anheben markiert var canvasw = 0; //Leinwandbreite var canvash = 0; //Leinwandhöhe Page({
  Daten: {
    Leinwandbild: '',
    Leinwand: '',
    imgUrl: '',
    Informationen: {},
    signBase64: '',
    sysType: '' // Bestimmen Sie das Modell},

  onLoad: Funktion (Optionen) {
    lass das = dies
    let res = wx.getSystemInfoSync()
    const system = res.system.split(' ')
    dass.setData({
      Systemtyp: System[0],
    })
    let params = JSON.parse(optionen.params)
    dass.setData({
      Info: Parameter,
    })
    das.startCanvas();
    das.initCanvas()
  },
  /**
  * Unten - Handschriftliche Unterschrift/ Unterschrift hochladen*/
  startCanvas() {//Canvas-Initialisierung ausführen var that = this;
    //Systeminformationen abrufen wx.getSystemInfo({
      Erfolg: Funktion (res) {
        canvasw = res.Fensterbreite;
        canvash = res.windowHeight;
        das.setData({ canvasw: canvasw });
        das.setData({ canvash: canvash });
      }
    });
    dies.initCanvas();
    dies.cleardraw();
  },

  // Initialisierungsfunktion initCanvas() {
    Kontext = wx.createCanvasContext('Leinwand');
    Kontext.BeginPath()
    wenn(dieser.data.sysType === 'iOS') {
      Kontext.Füllstil = "rgba(255, 255, 255, 1)";
      Kontext.setStrokeStyle('#444');
    } anders {
      Kontext.Füllstil = "rgba(0, 0, 0, 1)";
      Kontext.setStrokeStyle('#aaa');
    }
    Kontext.setLineWidth(4);
    Kontext.setLineCap('rund');
    Kontext.setLineJoin('runde');
  },
  canvasStart(Ereignis) {
    istButtonDown = true;
    arrz.push(0);
    arrx.push(event.changedTouches[0].x);
    arry.push(event.changedTouches[0].y);
  },
  canvasMove(Ereignis) {
    wenn (istButtonDown) {
      arrz.push(1);
      arrx.push(event.changedTouches[0].x);
      arry.push(event.changedTouches[0].y);
    }
    für (var i = 0; i < arrx.length; i++) {
      wenn (arrz[i] == 0) {
        Kontext.VerschiebeNach(arrx[i], arry[i])
      } anders {
        Kontext.lineTo(arrx[i], arry[i])
      }
    }
    Kontext.clearRect(0, 0, canvasw, canvash);
    wenn(dieser.data.sysType === 'iOS') {
      Kontext.Füllstil = "rgba(255, 255, 255, 1)";
      Kontext.setStrokeStyle('#444');
    } anders {
      Kontext.Füllstil = "rgba(0, 0, 0, 1)";
      Kontext.setStrokeStyle('#aaa');
    }
    Kontext.setLineWidth(3);
    Kontext.setLineCap('rund');
    Kontext.setLineJoin('runde');
    Kontext.Strich();
    Kontext.zeichnen(falsch);
  },
  canvasEnd(Ereignis) {
    istButtonDown = falsch;
  },
  // Leinwand löschen cleardraw() {
    arrx = [];
    arry = [];
    arrz = [];
    Kontext.clearRect(0, 0, canvasw, canvash);
    wenn(dieser.data.sysType === 'iOS') {
      Kontext.Füllstil = "rgba(255, 255, 255, 1)";
      Kontext.setStrokeStyle('#444');
    } anders {
      Kontext.Füllstil = "rgba(0, 0, 0, 1)";
      Kontext.setStrokeStyle('#aaa');
    }
    Kontext.zeichnen(true);
  },
  uploadImg() {
    var das = dies
    //Bild generieren// context.draw(true,()=> {
    setzeTimeout(() => {
      wx.canvasToTempFilePath({
        canvasId: "Leinwand",
        //Breite und Höhe des Ausgabebildes festlegen Dateityp: 'jpg',
        Qualität: 1,
        Erfolg: Funktion (res) {
          // Canvas-Bildadresse res.tempFilePath
          let imgBase64 = wx.getFileSystemManager().readFileSync(res.tempFilePath, 'base64')
          dass.setData({
            imgUrl: res.tempFilePath,
            signBase64: imgBase64
          })
          das.submitSign()
          Konsole.log('imgBase64', 'Daten:Bild/jpeg;base64,' + imgBase64)
          // wx.saveImageToPhotosAlbum({
          // Dateipfad: res.tempFilePath,
          // Erfolg(res4) { 
          // console.log(res,'Res4 speichern');
          // wx.showToast({
          // Titel: „Erfolgreich im Album gespeichert“,
          // Dauer: 2000
          // } );
          // }
          // })
        },
        fehlgeschlagen: Funktion () {
          wx.showModal({
            Titel: 'Tipps',
            Inhalt: ,,Canvas konnte das Bild nicht generieren. Die aktuelle Version von WeChat wird nicht unterstützt. Bitte aktualisieren Sie auf die neueste Version! ',
            anzeigenAbbrechen: false
          });
        },
        vollständig: Funktion () { }
      }, 5000)

    })
    // })
  },
  // Signatur übermitteln submitSign() {
    lass das = dies
    wx.showLoading({
      Titel: „Senden...“,
      Maske: wahr
    })
    let-Typ = "1"
    wenn (that.data.sysType === 'iOS') {
      Typ = "0"
    } anders {
      Typ = "1"
    }
    wx.$getWxLoginCode(resp => {
      Konstante Parameter = {
        qmbase64: das.data.signBase64,
      
      }
      console.info("Parameter")
      wx.kservice.yyyurl(params, res => {
        wx.hideLoading()
        wenn (res.statusCode === '200') {
          wx.showModal({
            Titel: 'Tipps',
            Inhalt: res.message,
            showCancel: false,
            confirmText: 'Zur Startseite zurückkehren',
            Erfolg(res) {
              wenn (res.bestätigen) {
                wx.reLaunch({
                  URL: '/Seiten/Index/Index'
                })
              }
            }
          })
        } anders {
          wx.showModal({
            Titel: 'Tipps',
            Inhalt: res.message,
            showCancel: true,
            cancelText: 'Zur Startseite zurückkehren',
            confirmText: 'Erneut übermitteln',
            Erfolg: (Ergebnis) => {
              if (Ergebnis.Abbrechen) {
                //Aufenthalt abbrechen wx.reLaunch({
                  URL: '/Seiten/Index/Index'
                })
              } sonst wenn (Ergebnis.bestätigen) {
                //Senden Sie that.submitSign() erneut
              }
            },
          });
        }
      }, {}, wahr, wahr)
    })
  },

  /**
  * Lebenszyklusfunktion - Deinstallation der Seite überwachen*/
  beimEntladen: Funktion () {

  },

  /**
   * Seitenbezogene Ereignisverarbeitungsfunktion - Achten Sie auf die Pulldown-Aktion des Benutzers */
  onPullDownRefresh: Funktion () {

  },

  /**
   * Die Funktion, die das Bottoming-Ereignis auf der Seite behandelt*/
  onReachBottom: Funktion () {

  },

  /**
   * Der Benutzer klickt auf die obere rechte Ecke, um zu teilen*/
  beiShareAppMessage: Funktion () {

  }
})

CSS:

.sign-enthalten {
  Anzeige: Flex;
  Flex-Richtung:Spalte;
  Breite: 100 %;
  Höhe: 100%;
}
.signName {
  biegen: 1;
}
.Leinwand {
  Breite: 100 %;
  Höhe: 100%;
}
.bg000{
  Hintergrundfarbe: #000;
}
.btn-wrap{
  Anzeige: Block;
  Breite: 100 %;
  Höhe: 100rpx;
  Rand: 20 Rpx 0;
  Position: relativ;
}
.btn-wrap button{
  Breite: 43%;
}

Ich möchte Ihnen ein WeChat Mini-Programm-Tutorial empfehlen, das derzeit recht beliebt ist: „WeChat Mini-Programm-Entwicklungstutorial“, das vom Herausgeber sorgfältig zusammengestellt wurde. Ich hoffe, es gefällt Ihnen.

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:
  • Uniapp implementiert den elektronischen Signatureffekt des WeChat-Applets (mit Demo)
  • Beispielcode zur Implementierung einer handschriftlichen Signatur im WeChat-Applet
  • Das WeChat-Applet implementiert eine einfache handschriftliche Signaturkomponente
  • WeChat-Applet-Canvas implementiert Signaturfunktion
  • Das WeChat Mini-Programm implementiert die Funktion für elektronische Signaturen
  • WeChat-Applet implementiert elektronische Signatur und exportiert Bilder
  • Java hat bei WeChat-Applet die Problemlösung „Zahlungsüberprüfungssignatur fehlgeschlagen“ festgestellt
  • Überprüfung und Entschlüsselungscode für die Benutzerdatensignatur des .NET WeChat-Applets
  • Das WeChat-Applet implementiert die horizontale und vertikale Bildschirmsignaturfunktion

<<:  Linux (CentOS7) installiert Tomcat und legt Tomcat als Startobjekt fest (am Beispiel von Tomcat8).

>>:  Zusammenfassung der Methoden zur Verbesserung der MySQL-Anzahl

Artikel empfehlen

Der Unterschied zwischen clientWidth, offsetWidth, scrollWidth in JavaScript

1. Konzept Sie alle sind Attribute des Elements u...

CSS-Float-Eigenschaftsdiagramm, Details der Float-Eigenschaft

Die korrekte Verwendung der CSS-Float-Eigenschaft...

Farbabstimmungstechniken und Effektdarstellung für Beauty- und Styling-Websites

Farbe ist eines der wichtigsten Elemente jeder We...

Wachstumserfahrung eines Webdesigners

<br />Vorab muss ich sagen, dass ich ein abs...

Detaillierte Erklärung des Lebenszyklus von Angular-Komponenten (Teil 2)

Inhaltsverzeichnis 1. Haken anzeigen 1. Was bei d...

Beispiele für die Verwendung temporärer Tabellen in MySQL

Ich war in den letzten beiden Tagen etwas beschäf...

Nodejs konvertiert JSON-String in JSON-Objekt-Fehlerlösung

Wie konvertiere ich eine JSON-Zeichenfolge in ein...

4 Möglichkeiten zum Ändern des MySQL-Root-Passworts (Zusammenfassung)

Methode 1: Verwenden Sie den Befehl SET PASSWORD ...

Beispielcode für Nginx zur Erreichung dynamischer und statischer Trennung

1. Einfache Konfiguration der dynamischen und sta...

Detaillierte Erklärung der XML-Syntax

1. Dokumentationsregeln 1. Groß-/Kleinschreibung b...

So greifen Sie über die IP-Adresse auf MySql zu

1. Melden Sie sich bei MySQL an: mysql -u root -h...

So fügen Sie in JS eine Abbruchfunktion zu einem Versprechen hinzu

Inhaltsverzeichnis Überblick Promise Race Methode...