Antd + vue realisiert die Idee der dynamischen Überprüfung kreisförmiger Attributformen

Antd + vue realisiert die Idee der dynamischen Überprüfung kreisförmiger Attributformen

Ich hoffe, einige Eigenschaften des Abfrageformulars implementieren zu können, um eine Schleife zu erstellen und die erforderlichen Elemente zu überprüfen:

brauchen:

1. Name, Vergleichselement und Bemerkungen sind erforderlich. Der Standardwert ist eine Zeile. Sie können mehrere Zeilen hinzufügen.

2. Fordern Sie dynamisch eine Liste mit Vergleichselementen basierend auf dem Namen an. Wenn sich der Name ändert, löschen Sie das aktuell ausgewählte Vergleichselement in dieser Zeile

Idee: Die gesamte Suche auf zwei Formulare aufteilen und die Überprüfung separat durchführen. Eines ist ein dynamisch hinzugefügtes Schleifenformular und das andere ist ein normales dateForm-Formular.

html

			<a-form :form="formular" @keyup.enter.native='Suchanfrage'>
				<div Klasse="dynamischer Wrap">
					<div v-for="(item,index) in formList" :key="index">
						<a-row :gutter="24">
							<a-col :span="6">
								<a-form-item label="Name" :labelCol="{span: 7}" :wrapperCol="{span: 17}">
									<a-select placeholder='Bitte wählen Sie einen Namen aus'
									          v-decorator="[`equipment[${index}]`,{ initialValue: formList[index] ? formList[index].equipment : '', rules: [{ required: true, message: 'Bitte wählen Sie eine Ausrüstung aus!' }]}]"
									          @change="(e)=>Ausstattungsänderung(e,index)">
										<a-select-option v-for='Optionen in Formliste[index].eqpList' :Schlüssel='Optionen.name' :Wert='Optionen.name'>
											{{ Optionen.name }}
										</a-Auswahloption>
									</a-auswählen>
								</a-form-item>
							</a-col>
							<a-col :span="6">
								<a-form-item label="Vergleichsartikel" :labelCol="{span: 7}" :wrapperCol="{span: 17}">
									<a-Auswahl
										Platzhalter="Bitte wählen Sie einen Vergleichsartikel aus"
										v-decorator="[`dataCode[${index}]`,{initialValue: formList[index] ? formList[index].dataCode : '',rules: [{ required: true, message: 'Bitte wählen Sie das Vergleichselement aus!' }]}]">
										<a-select-option v-for='Option in Formularliste[index].dataTypeList' :Schlüssel='Option.name' :Wert='Option.name'>
											{{ option.name }}
										</a-Auswahloption>
									</a-auswählen>
								</a-form-item>
							</a-col>
							<a-col :span="6">
								<a-form-item label="Bemerkungen" :labelCol="{span: 6}" :wrapperCol="{span: 18}">
									<a-input v-decorator="[`remark[${index}]`]" placeholder="Bitte Anmerkungen eingeben"></a-input>
								</a-form-item>
							</a-col>
							<a-col: span="2" style="padding-left: 0px">
								<a-form-item :labelCol="{span: 0}" :wrapperCol="{span: 24}">
									<template v-if="formList.length > 1">
										<a-icon Typ="Löschen" @click="removeRow(index)"/>
									</Vorlage>
								</a-form-item>
							</a-col>
						</a-row>
					</div>
				</div>
			</a-form>
 
			<a-form :form="dateForm" inline @keyup.enter.native='Suchabfrage'>
				<a-form-item label='Abfragedatum' :labelCol="{span: 8}" :wrapperCol="{span: 16}"
				             Stil="Anzeige: Inline-Block;Breite: 300px;">
					<a-Datumsauswahl
						Stil="Breite: 200px;"
						Klasse = "Abfragegruppe-Kunden"
						v-decorator="['startTime', { rules: [{ required: true, message: 'Bitte wählen Sie eine Startzeit!' }] }]"
						:disabled-date='deaktiviertesStartdatum'
						Format = "JJJJ-MM-TT"
						Platzhalter='Bitte wählen Sie eine Startzeit aus'
						@change='handleStart($ereignis)'
						@openChange='handleStartOpenChange'></a-date-picker>
				</a-form-item>
				<span :style="{ Anzeige: 'inline-block', Breite: '24px', Textausrichtung: 'Mitte' }">-</span>
				<a-form-item style="Anzeige: Inline-Block;Breite: 200px;">
					<a-Datumsauswahl
						Stil="Breite: 200px;"
						Klasse = "Abfragegruppe-Kunden"
						v-decorator="['endTime', { rules: [{ required: true, message: 'Bitte wählen Sie eine Endzeit!' }] }]"
						:deaktiviertes Datum = 'deaktiviertes Enddatum'
						Format = "JJJJ-MM-TT"
						Platzhalter='Bitte Endzeit auswählen'
						@change='handleEnd($ereignis)'
						:öffnen='EndeÖffnen'
						@openChange='handleEndOpenChange'></a-date-picker>
				</a-form-item>
				<span style="margin-left: 10px">
				        <a-button type='primary' :disabled='loading' @click='searchQuery' icon='search'>Suchen</a-button>
				        <a-button type='primary' @click='searchReset' icon='search' style='margin-left:10px'>Zurücksetzen</a-button>
				        <a-button type="primary" icon="plus" @click="addRow" style='margin-left:10px'>Abfragebedingungen hinzufügen</a-button>
			        </span>
			</a-form>
			<p>Die Abfragebedingung ist: {{searchData}}</p>

js

initForm() {
				// Zuerst die Geräteliste anfordern und in eqpList speichern // Das Formular this.formList.push({ initialisieren
					Ausrüstung: '',
					Datencode: '',
					Bemerkung: '',
					eqpList: diese.eqpList,
					Datentypliste: []
				})
			},
			// Eine Zeile löschen handleRemove(index) {
				wenn (diese.formList.length === 1) {
					zurückkehren
				}
				diese.formList.splice(index, 1)
			},
			// Füge eine neue Zeile hinzu handleAdd() {
				diese.formList.push({
					Ausrüstung: '',
					Datencode: '',
					Bemerkung: '',
					eqpList: this.eqpList, // Kann dynamisch entsprechend der Schnittstelle abgerufen werden. Hier ist es einfach zu demonstrieren und direkt zuzuweisen dataTypeList: [], // Kann dynamisch entsprechend der Schnittstelle abgerufen und entsprechend dem Gerät zugeordnet werden })
			},
			equipChange(Wert, Index) {
				// Wert ändern this.formList[index].equipment = Wert;
				//Aktualisiere synchron die Vergleichselementliste, die dem aktuell ausgewählten Gerät entspricht this.handleEqpIdentity(value, index)
			},
			// Abfrage der entsprechenden Vergleichselementliste entsprechend dem Gerät handleEqpIdentity(value, index) {
				this.dataTypeList = []; // dataTypeList löschen
				this.formList[index].dataTypeList = []; // Lösche die dataTypeList der aktuellen Zeile
				//Holen Sie sich die entsprechende Vergleichselementliste entsprechend dem neuen Gerätenamen getAction(this.url.getDataTypeList, {equipment: value})
					.then((res) => {
						wenn (res.erfolg) {
							diese.dataTypeList = res.result;
							diese.formList[index].dataTypeList = diese.dataTypeList;
							// this.formList[index].dataCode = ''; Die direkte Zuweisung eines Nullwertes ist ungültig //Sie müssen getFieldValue, setFieldsValue verwenden
							let dataCode1Arr = this.form.getFieldValue('dataCode');
							wenn (dataCode1Arr.length !== 0) {
								dataCode1Arr[index] = ''
							}
							this.form.setFieldsValue({dataCode: dataCode1Arr})
						} anders {
							dies.$message.warning(res.message)
						}
					})
					.fangen(() => {
						this.$message.error('Abruf fehlgeschlagen, bitte versuchen Sie es erneut!')
					})
			},
// Klickabfrage searchQuery() {
				// Validiere zuerst die Schleifenform const {form: {validateFields}} = this
				validateFields((Fehler, Werte) => {
					wenn (!Fehler) {
						this.dateForm.validateFields((dateErr, dateValues) => {
							//Das Datumssuchformular erneut validieren dateValues.startTime = moment(dateValues.startTime).format('JJJJ-MM-TT')
							dateValues.endTime = Moment(dateValues.endTime).format('JJJJ-MM-TT')
							wenn (!dateErr) {
								dies.laden = wahr;
								let formData = Object.assign({}, dateValues);
								//In die vom Hintergrund benötigte Datenstruktur organisieren // Schleifenform let searchArr = [];
								(Werte[`Ausrüstung`]).fürJedes((Artikel, Index) => {
									const obj = {
										Ausrüstung: Gegenstand,
										Bemerkung: Werte[`Bemerkung`][Index],
										Datencode: Werte[`Datencode`][Index]
									}
									SucheArr.push(obj);
 
								})
								// Datumsform if (!dateValues.startTime) {
									formData.startTime = Moment (neues Datum ()).format ('JJJJ-MM-TT')
								}
								formData.eqpInfoParamVoList = Sucharr;
								diese.Suchdaten = JSON.parse(Formulardaten)
							  // Schnittstelle anfordern }
						})
					}
				})
			},

Dies ist das Ende dieses Artikels über die Implementierung des dynamischen Validierungsschleifen-Attributformulars von Antd Vue. Weitere verwandte Inhalte zum dynamischen Validierungsschleifen-Attributformular von Antd Vue 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:
  • Antdesign-vue kombiniert mit sortablejs, um die Funktion zum Ziehen und Sortieren von zwei Tabellen zu erreichen
  • Detaillierte Erläuterung der benutzerfreundlichen Verwendung von Antdv-Beispielen in vue3.0
  • Die Antd-Vue-Tabellenkomponente fügt ein Klickereignis hinzu, um auf eine Datenzeile zu klicken (Tutorial)
  • Antd Vue Table führt Zellen über Zeilen hinweg zusammen und passt Inhaltsinstanzen an
  • antd vue refresh behält die aktuelle Seitenroute bei, behält das ausgewählte Menü bei, behält die Menüauswahloperation bei
  • Methode zum Implementieren des Rechtsklickmenüs in der Tabellenkomponentenzeile in Vue (basierend auf Vue + AntDesign)

<<:  5 Befehle zur Verwendung des Rechners in der Linux-Befehlszeile

>>:  Detailliertes Tutorial zum Bereitstellen eines SpringBoot + Vue-Projekts auf einem Linux-Server

Artikel empfehlen

html-Seite!--[if IE]...![endif]--Detaillierte Einführung in die Verwendung

Code kopieren Der Code lautet wie folgt: <!--[...

Installieren und konfigurieren Sie MySQL 5.7 unter CentOS 7

Dieser Artikel testet die Umgebung: CentOS 7 64-B...

WeChat-Miniprogramme ermöglichen nahtloses Scrollen

In diesem Artikelbeispiel wird der spezifische Co...

Mysql-Timeline-Daten, um die ersten drei Daten desselben Tages zu erhalten

Erstellen von Tabellendaten CREATE TABLE `praise_...

Lösung für das Timeout-Problem der SNMP4J-Serververbindung

Als Verwaltungszentrale und Server dient dabei un...

mysql-5.7.28 Installations-Tutorial unter Linux

1. Laden Sie die Linux-Version von der offizielle...

Vue implementiert ein einfaches Einkaufswagenbeispiel

In diesem Artikel wird der spezifische Code von V...

So installieren und implementieren Sie einen Gitlab-Server auf CentOS7

Ich verwende hier das 64-Bit-System CentOS 7. Ich...

So verwenden Sie den EXPLAIN-Befehl in SQL

Bei unserer täglichen Arbeit führen wir manchmal ...

Anwendungsszenarien für React useMemo und useCallback

Inhaltsverzeichnis verwendenMemo useCallback verw...

Schritte zur Installation von MySQL 5.7.10 auf Windows Server 2008 R2

Installation mithilfe des MSI-Installationspakets...

Beispielanalyse der MySQL-Datumsverarbeitungsfunktion

Dieser Artikel stellt hauptsächlich die Beispiela...