element 级联 父传子

html代码例子

父组件

复制代码
	<el-cascader
		style="width: 100%"
		@change="unitIdChange"
		:options="unitOptions"
		filterable
		v-model="formInline.unitId"
		:props="unitProps"
	    />
	</el-form-item>
	//改变级联传值到这个组件里面
	<resource-view :resourceList="formInline.resourceList" ref="resourceRef"></resource-view>

子组件

复制代码
	<el-form label-position="right" label-width="auto" :model="formData" :disabled="flag == '1'" :rules="rules" ref="addRef">
		<el-table :data="resourceList" style="width: 100%; margin: 10px 0" max-height="250" border>
			<el-table-column fixed prop="ipAddr" label="IP地址" width="250">
				<template #default="{ row, $index }">
					<el-form-item style="width: 100%" :prop="`resourceList.${$index}.ipAddr`" :rules="rules.ipAddr">
						<el-input type="text" :disabled="flag == '1'" placeholder="输入IP地址" v-model="row.ipAddr"></el-input>
					</el-form-item>
				</template>
			</el-table-column>
			<el-table-column prop="locationAreaId" label="所在网络区域">
				<template #default="{ row, $index }">
					<el-form-item :prop="`resourceList.${$index}.locationAreaId`" style="width: 100%">
						<el-tree-select
							style="width: 100%"
							:disabled="flag == '1'"
							v-model="row.locationAreaId"
							:data="locationAreaIdOptions"
							node-key="networkId"
							:render-after-expand="false"
							:check-strictly="true"
							:props="networkIdProps"
						/>
					</el-form-item>
				</template>
			</el-table-column>
			<el-table-column prop="cloudPlatformId" label="所属云平台">
				<template #default="{ row, $index }">
					<el-form-item :prop="`resourceList.${$index}.cloudPlatformId`" style="width: 100%">
						<el-tree-select
							style="width: 100%"
							:disabled="flag == '1'"
							v-model="row.cloudPlatformId"
							:data="cloudPlatformIdOptions"
							node-key="cloudId"
							:render-after-expand="false"
							:check-strictly="true"
							:props="cloudProps"
						/>
					</el-form-item>
				</template>
			</el-table-column>
			<el-table-column prop="applicationId" label="系统项目">
				<template #default="{ row, $index }">
					<el-form-item :prop="`resourceList.${$index}.applicationId`" style="width: 100%">
						<el-select :disabled="flag == '1'" v-model="row.applicationId" style="width: 100%" placeholder="请选择">
							<el-option v-for="item in applicationOptions" :key="item.value" :label="item.label" :value="item.value" />
						</el-select>
					</el-form-item>
				</template>
			</el-table-column>
			<el-table-column fixed="right" label="操作" width="120" v-if="!flag">
				<template #default="scope">
					<el-button link type="danger" size="small" @click.prevent="deleteRow(scope.$index)"> 删除 </el-button>
				</template>
			</el-table-column>
		</el-table>
	</el-form>
	<el-button v-if="!flag" class="mt-4" style="width: 100%; margin-bottom: 10px" @click="onAddItem">添加</el-button>
</template>

ts

复制代码
// 设置级联选择器的属性
const unitProps = {
	checkStrictly: true,//是否严格的遵守父子节点不互相关联
	emitPath: false,//是否返回数组
	filterable: true//是否可以搜索
};
//改变级联的值并且传值
const unitIdChange = (val: any) => {
//传true为新增,false为编辑
	resourceRef.value.getApplyList(val, true);
};

子组件接收的方法
//获取应用系统
const getApplyList = (val: any, isChange: any) => {
	//判断是否是change,是change才清空
	if (isChange) {
		resourceList.value = resourceList.value.map((item: any) => {
			item.applicationId = "";
			return item;
		});
	}
	getApplyListByUnitId(val).then((res: any) => {
		applicationOptions.value = res.data;
	});
};

例子展示

单位级联展示

根据单位加载系统项目

相关推荐
像我这样帅的人丶你还20 小时前
别再让JS耽误你进步了。
css·vue.js
@yanyu66620 小时前
07-引入element布局及spring boot完善后端
javascript·vue.js·spring boot
王霸天21 小时前
💥别再抄网上的Scale缩放代码了!50行源码教你写一个永不翻车的大屏适配
前端·vue.js·数据可视化
悟空瞎说21 小时前
深入 Vue3 响应式:为什么有的要加.value,有的不用?从设计到源码彻底讲透
前端·vue.js
SuperEugene1 天前
前端通用基础组件设计:按钮/输入框/弹窗,统一设计标准|组件化设计基础篇
前端·javascript·vue.js·架构
我命由我123451 天前
在 React 项目中,可以执行 npm start 命令,但是,无法执行 npm build 命令
前端·javascript·vue.js·react.js·前端框架·json·ecmascript
aidou13141 天前
Vue3自定义实现日期选择器(可单选或多选)
前端·javascript·vue.js·日期选择器·transition
忆琳1 天前
Vue3 优雅解决单引号注入问题:自定义指令 + 全局插件双方案
vue.js·element
Ruihong1 天前
放弃 Vue3 传统 <script>!我的 VuReact 编译器做了一次清醒取舍
前端·vue.js
蜡台1 天前
IDEA LiveTemplates Vue ElementUI
前端·vue.js·elementui·idea·livetemplates