于添 il y a 3 mois
Parent
commit
0dbd908f6b

+ 6 - 5
src/components/MiniYun/resourceUpload.vue

@@ -106,9 +106,7 @@
 
 			<!-- 选择成员 -->
 			<userSelection
-				:visible="userReleaseVisible"
-				:userRelateIds="userRelateIdss"
-				@close="userReleaseVisible = false"
+				ref="userSelectionRef"
 				@confirm="confirmUser"
 			></userSelection>
 		</a-form>
@@ -190,6 +188,7 @@
 	const majorOptions = ref([]) //专业
 	const courseOptions = ref([]) //课程
 	const userRelateIdss = ref([])
+	const userSelectionRef = ref(null)
 	const myHot = ref({})
 	// 上传资源模态框
 	const uploadModalVisible = ref(false)
@@ -389,7 +388,9 @@
 	const setPublicStatus = (status) => {
 		formState.authType = status
 		if (status === '1') {
-			userReleaseVisible.value = true
+			// userReleaseVisible.value = true
+			console.log('给过去什么', formState.userRelateIds)
+			userSelectionRef.value.open(formState.userRelateIds)
 		}
 	}
 	//院系组织查询
@@ -451,7 +452,7 @@
 	}
 	const confirmUser = (userIds) => {
 		console.log(userIds, '用户id')
-		userReleaseVisible.value = false
+		// userReleaseVisible.value = false
 		formState.userRelateIds = userIds.join(',')
 	}
 	// 确认上传

+ 54 - 25
src/components/MiniYun/userSelection.vue

@@ -1,6 +1,6 @@
 <template>
 	<a-drawer
-		v-model:visible="props.visible"
+		v-model:visible="visible"
 		title="选择可见成员"
 		placement="right"
 		width="50%"
@@ -84,18 +84,19 @@
 	import { Modal, Input, Tree, List, Avatar, Button } from 'ant-design-vue'
 	const emit = defineEmits(['close', 'confirm'])
 	// const visible = ref(true)
-	const props = defineProps({
-		visible: {
-			type: Boolean,
-			default: false
-		},
-		userRelateIds: {
-			type: Array,
-			default: () => {}
-		}
-	})
+	// const props = defineProps({
+	// 	visible: {
+	// 		type: Boolean,
+	// 		default: false
+	// 	},
+	// 	userRelateIds: {
+	// 		type: Array,
+	// 		default: () => {}
+	// 	}
+	// })
 
 	const searchValue = ref('')
+	const visible = ref(false)
 	const treeData = ref([
 		{
 			id: '1',
@@ -134,19 +135,34 @@
 			]
 		}
 	])
-	watch(
-		() => props.userRelateIds,
-		(newVal) => {
-			if (newVal) {
-				console.log(newVal, 'props.userRelateIds')
-				checkedKeys.value = newVal
-				// selectedUsers.value = flatTree(treeData.value)
-				// 	.filter((node) => newVal.includes(node.id))
-				// 	.map((node) => ({ id: node.id, name: node.name }))
-			}
-		},
-		{ deep: true }
-	)
+	const flatTree = (nodes) => {
+		let result = []
+
+		const traverse = (nodeList) => {
+			nodeList.forEach(node => {
+				result.push(node)
+				if (node.children && node.children.length > 0) {
+					traverse(node.children)
+				}
+			})
+		}
+
+		traverse(nodes)
+		return result
+	}
+	// watch(
+	// 	() => props.userRelateIds,
+	// 	(newVal) => {
+	// 		if (newVal) {
+	// 			console.log(newVal, 'props.userRelateIds')
+	// 			checkedKeys.value = newVal
+	// 			// selectedUsers.value = flatTree(treeData.value)
+	// 			// 	.filter((node) => newVal.includes(node.id))
+	// 			// 	.map((node) => ({ id: node.id, name: node.name }))
+	// 		}
+	// 	},
+	// 	{ deep: true }
+	// )
 	const selectedKeys = ref([])
 	const selectedUsers = ref([])
 	const checkedKeys = ref([])
@@ -230,7 +246,19 @@
 		selectedUsers.value = []
 		checkedKeys.value = []
 	}
+	const open = (listData) =>{
+		visible.value = true
+		selectedUsers.value = []
+		checkedKeys.value = listData ? listData : []
+		if(listData ==  null){
+			selectedUsers.value = []
+		}else{
+			selectedUsers.value = flatTree(treeData.value)
+				.filter((node) =>listData.includes(node.id))
+				.map((node) => ({ id: node.id, name: node.name }))
+		}
 
+	}
 	const removeUser = (user) => {
 		const index = selectedUsers.value.findIndex((u) => u.id === user.id)
 		if (index !== -1) {
@@ -247,7 +275,7 @@
 	}
 
 	const handleOk = () => {
-		console.log('Selected Users:', selectedUsers.value, checkedKeys.value)
+		console.log('Selected Users:',  checkedKeys.value)
 		emit('confirm', checkedKeys.value)
 	}
 
@@ -260,6 +288,7 @@
 		// 	checkedKeys.value = props.userRelateIds // 直接赋值给树组件的checkedKeys
 		// }
 	})
+	defineExpose({open})
 </script>
 
 <style scoped>

+ 4 - 5
src/views/myResources/resourceUpload.vue

@@ -116,9 +116,7 @@
 			</a-form-item>
 			<!-- 选择成员 -->
 			<userSelection
-				:visible="userReleaseVisible"
-				:userRelateIds="userRelateIdss"
-				@close="userReleaseVisible = false"
+				ref="userSelectionRef"
 				@confirm="confirmUser"
 			></userSelection>
 		</a-form>
@@ -191,6 +189,7 @@
 		isRecommend: 0, // 资源是否推荐
 		isHot: 0 // 资源是否热门
 	})
+	const userSelectionRef = ref(null) // 预览回显
 	const coverImagePath = ref() // 预览回显
 	const teacherData = ref(null) // 预览回显
 	const itemDatas = ref(null) // 预览回显
@@ -399,7 +398,8 @@
 	const setPublicStatus = (status) => {
 		formState.authType = status
 		if (status === '1') {
-			userReleaseVisible.value = true
+			// userReleaseVisible.value = true
+			userSelectionRef.value.open(formState.userRelateIds)
 		}
 	}
 	//院系组织查询
@@ -461,7 +461,6 @@
 	}
 	const confirmUser = (userIds) => {
 		console.log(userIds, '用户id')
-		userReleaseVisible.value = false
 		formState.userRelateIds = userIds.join(',')
 	}
 	// 确认上传

+ 57 - 24
src/views/myResources/userSelection.vue

@@ -1,6 +1,6 @@
 <template>
 	<a-drawer
-		v-model:visible="props.visible"
+		v-model:visible="visible"
 		title="选择可见成员"
 		placement="right"
 		width="50%"
@@ -84,18 +84,19 @@
 	import { Modal, Input, Tree, List, Avatar, Button } from 'ant-design-vue'
 	const emit = defineEmits(['close', 'confirm'])
 	// const visible = ref(true)
-	const props = defineProps({
-		visible: {
-			type: Boolean,
-			default: false
-		},
-		userRelateIds: {
-			type: Array,
-			default: () => {}
-		}
-	})
+	// const props = defineProps({
+	// 	visible: {
+	// 		type: Boolean,
+	// 		default: false
+	// 	},
+	// 	userRelateIds: {
+	// 		type: Array,
+	// 		default: () => {}
+	// 	}
+	// })
 
 	const searchValue = ref('')
+	const visible = ref(false)
 	const treeData = ref([
 		{
 			id: '1',
@@ -134,19 +135,19 @@
 			]
 		}
 	])
-	watch(
-		() => props.userRelateIds,
-		(newVal) => {
-			if (newVal) {
-				console.log(newVal, 'props.userRelateIds')
-				checkedKeys.value = newVal
-				// selectedUsers.value = flatTree(treeData.value)
-				// 	.filter((node) => newVal.includes(node.id))
-				// 	.map((node) => ({ id: node.id, name: node.name }))
-			}
-		},
-		{ deep: true }
-	)
+	// watch(
+	// 	() => props.userRelateIds,
+	// 	(newVal) => {
+	// 		if (newVal) {
+	// 			console.log(newVal, 'props.userRelateIds')
+	// 			checkedKeys.value = newVal
+	// 			// selectedUsers.value = flatTree(treeData.value)
+	// 			// 	.filter((node) => newVal.includes(node.id))
+	// 			// 	.map((node) => ({ id: node.id, name: node.name }))
+	// 		}
+	// 	},
+	// 	{ deep: true }
+	// )
 	const selectedKeys = ref([])
 	const selectedUsers = ref([])
 	const checkedKeys = ref([])
@@ -248,9 +249,39 @@
 
 	const handleOk = () => {
 		console.log('Selected Users:', selectedUsers.value, checkedKeys.value)
+		visible.value = false
 		emit('confirm', checkedKeys.value)
 	}
+	const flatTree = (nodes) => {
+		let result = []
+
+		const traverse = (nodeList) => {
+			nodeList.forEach(node => {
+				result.push(node)
+				if (node.children && node.children.length > 0) {
+					traverse(node.children)
+				}
+			})
+		}
+
+		traverse(nodes)
+		return result
+	}
+	const open = (listData) =>{
+		visible.value = true
+		selectedUsers.value = []
+		if(listData ==  null){
+			selectedUsers.value = []
+		}else{
+			checkedKeys.value = listData.split(',')
+			selectedUsers.value = flatTree(treeData.value)
+				.filter((node) =>listData.includes(node.id))
+				.map((node) => ({ id: node.id, name: node.name }))
 
+			console.log('选择了吗',selectedUsers.value)
+			console.log('选择了吗 左面',checkedKeys.value)
+		}
+	}
 	const handleCancel = () => {
 		emit('close')
 	}
@@ -260,6 +291,8 @@
 		// 	checkedKeys.value = props.userRelateIds // 直接赋值给树组件的checkedKeys
 		// }
 	})
+
+	defineExpose({open})
 </script>
 
 <style scoped>