国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3 +element動(dòng)態(tài)表單實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了vue3 +element動(dòng)態(tài)表單實(shí)現(xiàn)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

可以直接復(fù)制,接口看后端
父頁面

	<schedules
					ref="schedulesRef"
					:dxbz="props.dxbz"
					:jdlx="props.jdlx"
					:woId="myWoId"
					:addendumList="formInline.addendumList"
					v-if="addendumShow"
					@addendum="addendum"
				></schedules>


ts
//定義附表顯示隱藏屬性
const addendumShow = ref(false);
const addendum = (val: any) => {
	formInline.value.addendumList = val;
};
保存操作
save(){
	//接收附表信息
		let scedulesData = schedulesRef.value.getScedulesData();
		//獲取附表Id值和附表值
		const controlIds = scedulesData.data.map((item: any) => {
			return {
				controlId: item.controlId,
				controlValue: item.controlValue ? item.controlValue.toString() : ""
			};
		});
		//賦值附表信息
		formInline.value.addendumList = controlIds || [];
		//賦值附表校驗(yàn)信息
		formInline.value.schedulesCheck = scedulesData.check;
}

子頁面文章來源地址http://www.zghlxwxcb.cn/news/detail-616780.html

<!-- 自定義附表 -->
<template>
	<div>
		<el-form
			:inline="true"
			:model="modelItems"
			:rules="rules"
			ref="ruleFormRef"
			:disabled="fbDisabled || route.query.isDisabled"
			label-width="130"
		>
			<el-row>
				<el-col :span="item.controlLayout == 'T2' ? 24 : 12" v-for="(item, index) in infoList" :key="index">
					<el-form-item :label="item.controlName" :prop="item.controlId">
						<el-input
							v-model="item.controlValue"
							placeholder="請輸入"
							:required="item.required == 'Y'"
							v-if="item.controlLayout == 'T1' || item.controlLayout == 'N1' || item.controlLayout == 'N2'"
						></el-input>
						<el-input
							v-model="item.controlValue"
							:required="item.required == 'Y'"
							placeholder="請輸入"
							v-if="item.controlLayout == 'T2'"
							type="textarea"
						></el-input>
						<el-select
							:required="item.required == 'Y'"
							v-model="item.controlValue"
							style="width: 100%"
							placeholder="請選擇"
							v-if="item.controlLayout == 'S1'"
						>
							<el-option v-for="item1 in item.optionItem" :key="item1.value" :label="item1.label" :value="item1.value" />
						</el-select>
						<el-select
							multiple
							:required="item.required == 'Y'"
							v-model="item.controlValue"
							style="width: 100%"
							placeholder="請選擇"
							v-if="item.controlLayout == 'S2'"
						>
							<el-option v-for="item1 in item.optionItem" :key="item1.value" :label="item1.label" :value="item1.value" />
						</el-select>
						<el-date-picker
							:required="item.required == 'Y'"
							v-model="item.controlValue"
							format="YYYY-MM-DD"
							value-format="YYYY-MM-DD"
							type="date"
							placeholder="請選擇"
							v-if="item.controlLayout == 'D1'"
						/>
						<el-time-picker
							:required="item.required == 'Y'"
							v-model="item.controlValue"
							format="HH:mm:ss"
							value-format="HH:mm:ss"
							placeholder="請選擇"
							v-if="item.controlLayout == 'D2'"
						/>
						<el-date-picker
							:required="item.required == 'Y'"
							v-model="item.controlValue"
							format="YYYY-MM-DD HH:mm:ss"
							value-format="YYYY-MM-DD HH:mm:ss"
							type="datetime"
							placeholder="請選擇"
							v-if="item.controlLayout == 'D3'"
						/>
					</el-form-item>
				</el-col>
			</el-row>
		</el-form>
	</div>
</template>
<script setup lang="ts">
import { loadConfDetail } from "@/api/interface/workManage/index";
import { loadAddendumConfDetail } from "@/api/modules/workManage/indexApi";
import type { FormInstance, FormRules } from "element-plus";
const route = useRoute();
//動(dòng)態(tài)表單model
const modelItems = ref({} as any);
//定義自定義表單數(shù)據(jù)
const infoList = ref<loadConfDetail[]>([]);
//工單id
const woId = ref("");
//接收父組件的值
interface Props {
	dxbz?: string;
	addendumList: any;
	jdlx?: string;
	woId?: string;
}
const props = defineProps<Props>();
const fbDisabled = ref(false);
//讀寫標(biāo)志為只讀或者接單類型為一線工程師時(shí),表單不可編輯
if (props.dxbz == "0" || props.jdlx == "1") {
	fbDisabled.value = true;
}
//下拉框數(shù)據(jù)
interface options {
	label: string;
	value: string;
}
const ruleFormRef = ref<FormInstance>();
const rules = reactive<FormRules>({
	controlValue: [{ required: true, message: "請輸入", trigger: ["blur", "change"] }]
});
const emit = defineEmits(["addendum"]);
//表單數(shù)據(jù)實(shí)現(xiàn)方法
const getInfo = () => {
	loadAddendumConfDetail(woId.value || props.woId).then(res => {
		const data = res.data || [];
		//將數(shù)據(jù)轉(zhuǎn)換成表單需要的格式
		data.forEach((item: loadConfDetail) => {
			item.controlValue = "";
			//下拉數(shù)據(jù)傳成數(shù)組顯示到頁面
			if (item.controlLayout == "S1" || item.controlLayout == "S2") {
				let arr: options[] = [];
				item.options.split(",").forEach((index: string) => {
					arr.push({ label: index, value: index });
				});
				item.optionItem = arr;
			}
			//如果是必填項(xiàng),加入校驗(yàn)規(guī)則
			if (item.required == "Y") {
				rules[item.controlId] = [{ required: true, message: "", trigger: ["blur", "change"] }];
			}
		});
		infoList.value = data;
		emit("addendum", infoList.value);
		let addendumList = props.addendumList;
		//將附表數(shù)據(jù)賦值到表單
		infoList.value.forEach(e => {
			//如果是下拉框,將下拉框的值轉(zhuǎn)換成數(shù)組
			let arr = (addendumList || []).filter((i: any) => i.controlId == e.controlId);
			if (arr.length > 0) {
				if (e.controlLayout == "S2") {
					if (arr[0].controlValue != "" && arr[0].controlValue.length > 0) {
						e.controlValue = (arr[0].controlValue || "").split(",");
					} else {
						e.controlValue = [];
					}
				} else {
					e.controlValue = arr[0].controlValue;
				}
			}
		});
	});
};
getInfo();
//校驗(yàn)是否有必填項(xiàng)未填
const checkFun = () => {
	let l = infoList.value.filter(item => item.required == "Y" && (!item.controlValue || item.controlValue == ""));
	return l.length > 0;
};
//表單數(shù)據(jù)方法暴露給父組件
const getScedulesData = () => {
	return { data: infoList.value, check: checkFun() };
};
defineExpose({
	getScedulesData
});
</script>

到了這里,關(guān)于vue3 +element動(dòng)態(tài)表單實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Element+Vue實(shí)現(xiàn)動(dòng)態(tài)表單(多個(gè)下拉框組件)

    Element+Vue實(shí)現(xiàn)動(dòng)態(tài)表單(多個(gè)下拉框組件)

    表單的內(nèi)容為巡檢計(jì)劃,巡檢計(jì)劃可以選擇多個(gè)巡檢點(diǎn)位,每個(gè)巡檢點(diǎn)位可以選擇多個(gè)設(shè)備和對應(yīng)操作。 點(diǎn)擊加號圖標(biāo)增加一個(gè)下拉框 減號圖標(biāo)刪除對應(yīng)下拉框 下拉框備選項(xiàng)目相同 點(diǎn)擊設(shè)置動(dòng)作按鈕,彈出可編輯表格,可以為該巡檢點(diǎn)位設(shè)置多個(gè)動(dòng)作 表格每行內(nèi)容可編 設(shè)

    2024年02月15日
    瀏覽(20)
  • VUE element-ui實(shí)現(xiàn)表格動(dòng)態(tài)展示、動(dòng)態(tài)刪減列、動(dòng)態(tài)排序、動(dòng)態(tài)搜索條件配置、表單組件化。

    VUE element-ui實(shí)現(xiàn)表格動(dòng)態(tài)展示、動(dòng)態(tài)刪減列、動(dòng)態(tài)排序、動(dòng)態(tài)搜索條件配置、表單組件化。

    ? ? 1、本組件支持列表的表頭自定義配置,checkbox實(shí)現(xiàn) 2、本組件支持列表列排序,vuedraggable是拖拽插件,上圖中字段管理里的拖拽效果 ,需要的話請自行npm install 3、本組件支持查詢條件動(dòng)態(tài)配置,穿梭框?qū)崿F(xiàn) https://download.csdn.net/download/askuld/88216937

    2024年01月16日
    瀏覽(41)
  • vue+Element UI 實(shí)現(xiàn)動(dòng)態(tài)表單(點(diǎn)擊按鈕增刪表格及嵌套輸入框的增刪)(1)

    vue+Element UI 實(shí)現(xiàn)動(dòng)態(tài)表單(點(diǎn)擊按鈕增刪表格及嵌套輸入框的增刪)(1)

    el-button size=“small” @click=“addTable”新增 el-button size=“small” @click=“delTable”刪除 el-table ref=“table” :data=“tableDataBind.taAssessltems” tooltip-effect=“dark” border @selection-change=“selectRow” 規(guī)格: 重量: 數(shù)量: 加工費(fèi): el-button size=“mini” type=“primary” icon=“el-icon-circle-plus-ou

    2024年04月13日
    瀏覽(36)
  • vue3+element Plus實(shí)現(xiàn)表格前端分頁

    vue3+element Plus實(shí)現(xiàn)表格前端分頁

    每一處都寫了注釋,還是很容易看懂的 ?

    2024年02月11日
    瀏覽(31)
  • (二) Vue3 + Element-Plus 實(shí)現(xiàn)動(dòng)態(tài)菜單欄

    (二) Vue3 + Element-Plus 實(shí)現(xiàn)動(dòng)態(tài)菜單欄

    系列介紹:Vue3 + Vite + TS 從零開始學(xué)習(xí) 項(xiàng)目搭建:(一) Vue3 + Vite + TS 項(xiàng)目搭建 實(shí)現(xiàn)動(dòng)態(tài)菜單欄:(二) Vue3 + Element-Plus 實(shí)現(xiàn)動(dòng)態(tài)菜單欄 實(shí)現(xiàn)動(dòng)態(tài)面包屑:(三) Vue3 + Element-Plus 實(shí)現(xiàn)動(dòng)態(tài)面包屑 實(shí)現(xiàn)動(dòng)態(tài)標(biāo)簽頁:(四) Vue3 + Element-Plus 實(shí)現(xiàn)動(dòng)態(tài)標(biāo)簽頁 實(shí)現(xiàn)動(dòng)態(tài)主題色切換(demo):(五)

    2023年04月23日
    瀏覽(59)
  • 基于VUE3+Layui從頭搭建通用后臺(tái)管理系統(tǒng)(前端篇)十一:通用表單組件封裝實(shí)現(xiàn)

    基于VUE3+Layui從頭搭建通用后臺(tái)管理系統(tǒng)(前端篇)十一:通用表單組件封裝實(shí)現(xiàn)

    ??本章實(shí)現(xiàn)通用表單組件,根據(jù)實(shí)體配置識別實(shí)體屬性,并自動(dòng)生成編輯組件,實(shí)現(xiàn)對應(yīng)數(shù)據(jù)填充、校驗(yàn)及保存等邏輯。 1. 詳細(xì)課程地址: https://edu.csdn.net/course/detail/38183 2. 源碼下載地址: 點(diǎn)擊下載

    2024年02月10日
    瀏覽(30)
  • 前端vue3+element plus 分頁table排序功能實(shí)現(xiàn)

    我有如下所示的一個(gè)table,數(shù)據(jù)data是一個(gè)computed計(jì)算屬性,一般情況下篩選使用element的sortable屬性就可以了,可查看Element - The world\\\'s most popular Vue UI framework 但我的 table 是一個(gè)分頁的 table ,當(dāng)我使用?sortable 時(shí)發(fā)現(xiàn),它只是對當(dāng)前頁的數(shù)據(jù)進(jìn)行排序,但這并不是我需要的,我的

    2024年02月14日
    瀏覽(27)
  • vue3使用el-form實(shí)現(xiàn)登錄、注冊功能,且進(jìn)行表單驗(yàn)證(Element Plus中的el-form)

    vue3使用el-form實(shí)現(xiàn)登錄、注冊功能,且進(jìn)行表單驗(yàn)證(Element Plus中的el-form)

    簡介:Element Plus 中的 el-form 是一個(gè)表單組件,用于快速構(gòu)建表單并進(jìn)行數(shù)據(jù)校驗(yàn)。它提供了豐富的表單元素和驗(yàn)證規(guī)則,使表單開發(fā)變得更加簡單和高效。可以搭配el-dialog實(shí)現(xiàn)當(dāng)前頁面的登錄、注冊頁 ,這兩天在vue3中用到了表單登錄,特意記錄一下,這里沒有封裝,直接使

    2024年02月07日
    瀏覽(130)
  • vue element 動(dòng)態(tài)生成表單

    vue element 動(dòng)態(tài)生成表單

    場景:表單中的項(xiàng)是由后端返回的,不是前端提前定義好的。 需要注意的點(diǎn): 1、因?yàn)楸韱紊闲枰壎╲-model來獲取此表單項(xiàng)的值,但是要綁的值名稱是根據(jù)后端數(shù)據(jù)來的,所以請求回來后端的數(shù)據(jù)后再渲染整個(gè)表單,否則會(huì)報(bào)錯(cuò)【v-if=\\\"configLabelData\\\"】,根據(jù)請求到的后端數(shù)據(jù)

    2024年02月16日
    瀏覽(22)
  • Vue3 + Element Plus 實(shí)現(xiàn)動(dòng)態(tài)標(biāo)簽頁及右鍵菜單

    Vue3 + Element Plus 實(shí)現(xiàn)動(dòng)態(tài)標(biāo)簽頁及右鍵菜單

    目錄 先上圖 ?使用el-dropdown綁定右鍵菜單,為每個(gè)tab頁綁定一個(gè)右鍵 右鍵菜單生效后控制每個(gè)下拉項(xiàng)的禁用與顯示(每一項(xiàng)代表一個(gè)功能) 每個(gè)右鍵項(xiàng)對應(yīng)的功能? 控制每次只顯示一個(gè)右鍵 完整代碼 ????????只有首頁的情況 ????????多個(gè)tab頁的情況 ?

    2024年02月07日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包