最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue?+?ele?實(shí)現(xiàn)下拉選擇框和下拉多選選擇框處理方案

 更新時(shí)間:2023年08月01日 12:06:06   作者:牧羊人の冬天  
這篇文章主要介紹了vue?+?ele?實(shí)現(xiàn)下拉選擇框和下拉多選選擇框處理方案,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

效果圖如下:

<!-- 添加項(xiàng)目的彈框 -->
<el-dialog v-model="addDlg"  class="pro_dialog" title="添加項(xiàng)目" width="40%">
	<el-form :model="addForm">
		<el-form-item label="項(xiàng)目名"><el-input v-model="addForm.name" autocomplete="off" class="input-field"/></el-form-item>
		<el-form-item label="部門(mén)">
		<el-tree
		ref="departmentTreeRef"
		:data="departmentTree"
		:props="departmentTreeProps"
		show-checkbox
		highlight-current
		node-key="id"
		v-model="addForm.org"
		></el-tree>
		</el-form-item>
		<el-form-item label="負(fù)責(zé)人" >
			<el-select v-model="addForm.leader" autocomplete="off" multiple filterable class="input-field">
			<el-option 
			v-for="leader in filterLeaders" 
			:key="leader.id" 
			:label="leader.userName" 
			:value="leader.id"></el-option>
			</el-select>
		</el-form-item>
	</el-form>
	<template #footer>
		<span class="dialog-footer">
			<el-button @click="addDlg = false" size="mini">取消</el-button>
			<el-button type="primary" @click="addPro" size="mini">確定</el-button>
		</span>
	</template>
</el-dialog>

// 獲取所有用戶
	async getLeaders() {
		try {
			const response = await this.$api.getUsers();
			this.leaders = response.data.result.records;
		} catch (error) {
			console.error(error);
		}},
	// 獲取所有機(jī)構(gòu)
	async getorgInfo() {
		try {
			const response = await this.$api.getOrgInfo();
			if (response.data.code === "0"){
				this.departmentTree = [response.data.result];
			}
		} catch (error) {
			console.error(error);
		}},
	// 點(diǎn)擊進(jìn)入項(xiàng)目
	clickView(pro) {
		// 將選中的項(xiàng)目信息保存的vuex
		this.selectPro(pro);
		// 路由跳轉(zhuǎn)
		this.$router.push({ name: 'home' });
	},
	// 點(diǎn)擊添加項(xiàng)目按鈕
	clickAdd() {
		// 將添加表單置空
		this.addForm = {
			name: '',
			leader: [],
			org:[]
		};
		// 顯示模態(tài)框
		this.addDlg = true;
	},
	// 點(diǎn)擊編輯項(xiàng)目按鈕
	clickEdit(item) {
		this.updateForm = {
			id:item.id,
			name:item.name,
			leader:item.leader.map(leader => leader.userId),
			org:item.org.map(org => this.findOrgNodeById(this.departmentTree,org.orgId))
		};
		this.defaultCheckedKeys =  this.updateForm.org.map(org => org.id);
		// 保存默認(rèn)值
		const temp = [...this.defaultCheckedKeys];  
		this.updateDlg = true;
		this.$nextTick(() => {
			if (this.$refs.departmentTreeRef){
				// 用$refs清空已勾選的,否則不生效,重新勾選,
				this.$refs.departmentTreeRef.setCheckedKeys([]);
				this.defaultCheckedKeys = temp;
			}		
		})
	},
	// 點(diǎn)擊刪除按鈕
	clickDelete(id) {
		ElMessageBox.confirm('確定要?jiǎng)h除該項(xiàng)目嗎?', '提示', {
			confirmButtonText: '確定',
			cancelButtonText: '取消',
			type: 'warning'
		})
			.then(() => {
				this.deletePro(id);
			})
			.catch(() => {
				ElMessage({
					type: 'info',
					message: '取消刪除'
				});
			});
	},
	//在機(jī)構(gòu)列表中根據(jù)id查找對(duì)應(yīng)節(jié)點(diǎn)的label
	findOrgNodeById(nodes, id) {
		for (const node of nodes) {
		if (node.id === id) {
			return node;
		}
		// 遞歸查找子節(jié)點(diǎn)
		if (node.childOrg && node.childOrg.length > 0) {
			const foundNode = this.findOrgNodeById(node.childOrg, id);
			if (foundNode) {
			return foundNode;
			}}}
		return null;
	},
	// 添加項(xiàng)目
	async addPro() {
		// 獲取選中的部門(mén)id
		const selectedOrgIds = this.$refs.departmentTreeRef.getCheckedNodes().map(node => node.id);
		//根據(jù)部門(mén)查找部門(mén)名稱
		const selectedOrgLabels = selectedOrgIds.map(orgId => {
			const orgNode = this.findOrgNodeById(this.departmentTree, orgId);
			return orgNode && orgNode.name ? orgNode.name : "";
		});
		//組裝部門(mén)數(shù)據(jù)
		const orgData = selectedOrgIds.map((id, index) => {
				return { orgId: id, orgName: selectedOrgLabels[index] };
				});
		//組裝請(qǐng)求數(shù)據(jù)
		const data = {
			name: this.addForm.name,
			org:orgData,
			// 根據(jù)id獲取用戶名
			leader: this.addForm.leader.map(id => {
				const leaderinfo = this.leaders.find(leader => leader.id==id);
				return{
					userId:id,
					userName:leaderinfo.userName
				}})};
		const response = await this.$api.createProjects(data);
		if (response.status === 201) {
			this.$message({
				message: '添加成功!',
				type: 'success',
				duration: 1000
			});
			// 刷新頁(yè)面數(shù)據(jù)
			this.getAllPro();
			this.addDlg = false;
		}},

接口返回的數(shù)據(jù)結(jié)構(gòu)如下:

到此這篇關(guān)于vue + ele 下拉選擇框和下拉多選選擇框處理的文章就介紹到這了,更多相關(guān)vue 下拉選擇框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue實(shí)現(xiàn)按鈕的長(zhǎng)按功能

    vue實(shí)現(xiàn)按鈕的長(zhǎng)按功能

    這篇文章主要介紹了vue實(shí)現(xiàn)按鈕的長(zhǎng)按功能,點(diǎn)擊按鈕實(shí)現(xiàn)長(zhǎng)按,用戶需要按下按鈕幾秒鐘,然后觸發(fā)相應(yīng)的事件,本文通過(guò)實(shí)例代碼給大家分享實(shí)現(xiàn)思路,感興趣的朋友一起看看吧
    2022-01-01
  • uniapp?APP中內(nèi)嵌webview的H5與APP相互通訊動(dòng)態(tài)傳參代碼示例

    uniapp?APP中內(nèi)嵌webview的H5與APP相互通訊動(dòng)態(tài)傳參代碼示例

    最近外部公司的app要接入我司的uni H5項(xiàng)目,所以這篇文章主要給大家介紹了關(guān)于uniapp?APP中內(nèi)嵌webview的H5與APP相互通訊動(dòng)態(tài)傳參的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • Vue.js?前端路由和異步組件介紹

    Vue.js?前端路由和異步組件介紹

    這篇文章主要介紹了Vue.js?前端路由和異步組件介紹,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • vue如何修改瀏覽器的標(biāo)題title

    vue如何修改瀏覽器的標(biāo)題title

    這篇文章主要介紹了vue如何修改瀏覽器的標(biāo)題title問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue項(xiàng)目中props傳值時(shí)子組件檢測(cè)不到的問(wèn)題及解決

    Vue項(xiàng)目中props傳值時(shí)子組件檢測(cè)不到的問(wèn)題及解決

    這篇文章主要介紹了Vue項(xiàng)目中props傳值時(shí)子組件檢測(cè)不到的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue 插槽簡(jiǎn)介及使用示例

    vue 插槽簡(jiǎn)介及使用示例

    這篇文章主要介紹了vue 插槽簡(jiǎn)介及使用示例,幫助大家更好的理解和學(xué)習(xí)vue框架,感興趣的朋友可以了解下
    2020-11-11
  • vue項(xiàng)目打包發(fā)布后接口報(bào)405錯(cuò)誤的解決

    vue項(xiàng)目打包發(fā)布后接口報(bào)405錯(cuò)誤的解決

    這篇文章主要介紹了vue項(xiàng)目打包發(fā)布后接口報(bào)405錯(cuò)誤的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue登錄成功之后的token處理詳細(xì)步驟

    vue登錄成功之后的token處理詳細(xì)步驟

    Token是身份驗(yàn)證后服務(wù)端返回的令牌,常用于訪問(wèn)授權(quán)API和頁(yè)面權(quán)限校驗(yàn),Token數(shù)據(jù)可存儲(chǔ)在本地或Vuex中,本地存儲(chǔ)可實(shí)現(xiàn)數(shù)據(jù)持久化,這篇文章主要介紹了vue登錄成功之后的token處理詳細(xì)步驟,需要的朋友可以參考下
    2024-10-10
  • Vue之TodoList案例詳解

    Vue之TodoList案例詳解

    這篇文章主要為大家介紹了Vue之TodoList的案例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助<BR>
    2021-11-11
  • vue項(xiàng)目因內(nèi)存溢出啟動(dòng)報(bào)錯(cuò)的解決方案

    vue項(xiàng)目因內(nèi)存溢出啟動(dòng)報(bào)錯(cuò)的解決方案

    這篇文章主要介紹了vue項(xiàng)目因內(nèi)存溢出啟動(dòng)報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09

最新評(píng)論

顺昌县| 古田县| 河津市| 黑水县| 静宁县| 海阳市| 莒南县| 五华县| 临潭县| 米泉市| 乌兰察布市| 大悟县| 泰兴市| 海城市| 略阳县| 龙门县| 化德县| 尉氏县| 策勒县| 宁化县| 石河子市| 西贡区| 大石桥市| 洛隆县| 九台市| 建德市| 四会市| 南木林县| 望谟县| 丽水市| 潮州市| 延津县| 石河子市| 六枝特区| 和林格尔县| 丰原市| 平谷区| 灵台县| 高邮市| 合肥市| 凯里市|