1.0.3 • Published 3 years ago

modelselecttree v1.0.3

Weekly downloads
4
License
ISC
Repository
-
Last release
3 years ago

安装

# npm方式安装
npm i modelselecttree

代码示例

<!-- 弹出框选择树组件 -->
<modelselecttree
	v-model="showModelSelectTree"
	title="选择人员(单选)"
	@currentPageChange="userListPageChange"
	:pageSize="userDataListPageSize"
	:total="userDataListTotal"
	:multiple="multiple"
	ref="userList"
	search
	searchKey="deptName"
	treeNodeKey="deptId"
	@nodeClick="nodeDeptClick"
	:treeData="deptList"
	:defaultProps="{label:'deptName',children:'children'}"
	:fileds="userFileds"
	:tableData="userDataList"
	tableRowKey="userId"
	@selectDataFn="selectUserDataFn"
/>

<el-button type="primary" @click="openModelSelectTree"
	>打开modelselecttree</el-button
>
import modelselecttree from 'modelselecttree'
export default {
	components: {
		modelselecttree,
	},
	data() {
		return {
			// 是否显示modelselecttree组件
			showModelSelectTree: false,
			// 部门列表(左侧树结构)
			deptList: [],

			// 表格需要展示的数据字段
			userFileds: [
				{
					label: '昵称',
					prop: 'nickName',
				},
				{
					label: '电话',
					prop: 'phonenumber',
				},
				{
					label: '部门',
					prop: 'deptName',
				},
			],
			// 表格列表数据(右侧表格)
			userDataList: [],
			// 表格列表的总条数(右侧表格)
			userDataListTotal: 0,
			// 表格列表一页的数据条数(右侧表格)
			userDataListPageSize: 10,
			// 表格列表当前页(右侧表格)
			userDataListPageNum: 1,
			// 表格是否多选
			multiple: false,
		}
	},
	methods: {
		// 人员页码发生改变
		userListPageChange(currentPage, node) {
			this.userDataListPageNum = currentPage
			this.nodeDeptClick(node)
		},

		// 选中的人员列表
		selectUserDataFn(select) {
			//select 是选中的数据(如果传入multiple则返回数组,未传入则是对象)
			// ......业务逻辑
		},

		// 点击左侧部门树
		nodeDeptClick(node) {
			//node是点击的节点--->可以console.log看下console.log(node)
			// tableLoading 是控制右侧表单加载是否显示
			this.$refs.userList.tableLoading = true
			// 下面是接口请求右侧的表单数据(listUser这个是我这边的接口,你用自己的接口就行)
			listUser({
				deptId: node.deptId,
				pageNum: this.userDataListPageNum,
				pageSize: this.userDataListPageSize,
			}).then((res) => {
				// 设置右侧表单列表数据
				this.userDataList = res.rows
				// 设置右侧表单的条数
				this.userDataListTotal = res.total
				this.$refs.userList.tableLoading = false
			})
		},

		// 打开人员列表
		openModelSelectTree() {
			// 请求部门列表(生成树)
			listDept().then((response) => {
				this.deptList = response.data
				// 清空表格数据
				this.userDataList = []
				// 清空组件中的已选数据
				this.$refs.userList.selectDataList = []
				this.showModelSelectTree = true
			})
		},
	},
}

属性说明

属性名称类型是否必填说明
v-modelBoolean必填控制显示隐藏
treeDataArray[]必填树结构数据
defaultPropsObject{}必填后面详解
searchBoolean--是否需要搜索树结构
searchKeyString--搜索树结构的 key(search 必须为 true 的情况下)
treeNodeKeyString--每个树节点用来作为唯一标识的属性,整棵树应该是唯一的
filedsArray[]必填右侧表格字段 后面详解
tableDataArray[]必填表格数据
tableRowKeyString必填表格数据的 key(唯一,一般传 id)
multipleBoolean--是否多选(默认多选)
titleString--标题
treeNameString--树结构的 class
asideNameString--侧边栏 class
customClassString--模态框 class
totalNumber--表格数据的总条数(默认 0)
pageSizeNumber--表格数据的一页多少条(默认 5)
carKeyString--卡片要展示的字段(如果没有就展示表格第一项)

defaultProps

属性名称类型是否必填说明
childrenString必填指定子树为节点对象的某个属性值
labelString必填指定节点标签为节点对象的某个属性值

fileds

属性名称类型是否必填说明
labelString必填展示的文本
propString必填数据

事件

事件名称说明返回值
nodeClick当前节点被点击当前节点 node
tableSelectionChange表格选中事件处理选中的数据 Array[]:selection
currentPageChange页码改变当前点击的页码(currentPage),左侧树节点对象(node)
selectDataFn最终数据列表返回已选的数据 Array[]:selectDataList