| | |
| | | <input type="checkbox" v-model="selectedMemberIds" :value="item.userId"> |
| | | <span>{{ item.oldName }}</span> |
| | | </label> |
| | | |
| | | <hr class="divider-line"> |
| | | |
| | | <label v-for="item in anotherFamilyMembers" :key="item.userId" class="signature-checkbox"> |
| | | <input type="checkbox" v-model="selectedMemberIds" :value="item.userId"> |
| | | <span> {{ item.oldName }} </span> |
| | | </label> |
| | | |
| | | <!-- 多选列表(有数据) --> |
| | | <!-- <el-checkbox-group> |
| | | <el-checkbox |
| | |
| | | |
| | | import { Notification, MessageBox, Message, Loading } from 'element-ui' |
| | | import {getAllInfo} from "@/api/system/user" |
| | | import { getFamilyMembers } from '@/api/root'; // 假设获取家族成员的API |
| | | import { getFamilyMembers,listAnotherFamilyInfo } from '@/api/root'; // 假设获取家族成员的API |
| | | |
| | | //在system/note/index.js中导入接口函数 --接好了 |
| | | import {listFamilyevent,enload, delFamilyevent , addFamilyevent , uploadPic, |
| | | import {listFamilyevent, enload, delFamilyevent , addFamilyevent , uploadPic, |
| | | share,shareToWho,getWhoShare,downShareData,deleteShareData,showShareData,showShareUser |
| | | } from "@/api/bignote/index"; |
| | | import {listUserAll} from "@/api/root/index"; |
| | |
| | | // 成员多选相关 |
| | | memberDialogVisible: false, // 弹窗可见性 |
| | | familyMembers: [], // 家族成员列表(原始数据) |
| | | anotherFamilyMembers: [], //另外家族成员信息 |
| | | selectedMemberIds: [], // 弹窗中临时选中的成员ID(用于多选交互) |
| | | memberSearch: '', // 成员搜索关键词 |
| | | loading: false, // 加载状态 |
| | |
| | | total: 0, |
| | | // 家大事记表格数据 |
| | | familyList: [], |
| | | |
| | | selectedMemberIds:[], |
| | | displayMemberNames: [], // 显示用的成员名称数组 |
| | | |
| | | // 弹出层标题 |
| | | title: "", |
| | |
| | | computed: { |
| | | // 已选成员姓名(用于回显) |
| | | selectedMemberNames() { |
| | | return this.familyMembers |
| | | |
| | | |
| | | // 优先使用直接设置的显示名称 |
| | | if(this.displayMemberNames && this.displayMemberNames.length > 0 && this.selectedMemberIds.length==0) { |
| | | return this.displayMemberNames; |
| | | } |
| | | |
| | | |
| | | // 否则根据选中的ID计算 |
| | | // 合并过滤后的成员名称和displayMemberNames内容 |
| | | console.log(this.selectedMemberIds) |
| | | const filteredNames = this.familyMembers |
| | | .filter(member => this.selectedMemberIds.includes(member.userId)) |
| | | .map(member => member.oldName); |
| | | |
| | | const filterAnotherNames = this.anotherFamilyMembers |
| | | .filter(member => this.selectedMemberIds.includes(member.userId)) |
| | | .map(member => member.oldName); |
| | | |
| | | // 创建一个Set来存储唯一名称,避免重复 |
| | | const uniqueNames = new Set([...filteredNames]); |
| | | filterAnotherNames.forEach(item => uniqueNames.add(item)); |
| | | console.log(uniqueNames) |
| | | // 如果displayMemberNames有内容,也加入Set中 |
| | | if(this.displayMemberNames && this.displayMemberNames.length > 0) { |
| | | this.displayMemberNames.forEach(name => uniqueNames.add(name)); |
| | | } |
| | | else |
| | | this.displayMemberNames = Array.from(uniqueNames) |
| | | // this.selectedMemberIds = [] |
| | | // 转回数组并返回 |
| | | return Array.from(uniqueNames); |
| | | }, |
| | | // 过滤后的成员列表(搜索功能) |
| | | filteredMembers() { |
| | |
| | | getInfo(){ |
| | | console.log('-----------------') |
| | | getInfo().then(response=>{ |
| | | console.log(response.user) |
| | | // alert(123) |
| | | console.log(response.user.roles[0].roleId,'roleID') |
| | | this.userId = response.user.roles[0].roleId |
| | | }) |
| | |
| | | this.dialogImageUrl = file.url; |
| | | this.dialogVisible = true; |
| | | }, |
| | | handleTagClose(index, name) { |
| | | // 从 selectedMemberNames 数组中移除当前关闭的标签名称 |
| | | // const index = this.selectedMemberNames.findIndex(item=== name); |
| | | selectedMemberIds: this.selectedMemberIds.filter( |
| | | item => item!== index // 过滤掉与关闭名称相同的元素 |
| | | ) |
| | | this.$forceUpdate(); |
| | | console.log(this.selectedMemberIds) |
| | | this.selectedMemberNames.splice(index, 1); |
| | | this.$forceUpdate(); |
| | | selectedMemberNames: this.selectedMemberNames.filter( |
| | | item => item !== name // 过滤掉与关闭名称相同的元素 |
| | | ) |
| | | this.displayMemberNames = this.selectedMemberNames |
| | | console.log(this.selectedMemberNames) |
| | | |
| | | }, |
| | | /** 提交按钮(数据权限) */ |
| | | submitDataScope: function() { |
| | | |
| | |
| | | this.handleRemoveFile(this.fileListOther[0]); |
| | | } |
| | | this.getList(); |
| | | this.selectedMemberNames = []; |
| | | this.displayMemberNames = [] |
| | | }); |
| | | } |
| | | }); |
| | |
| | | this.loading = true; |
| | | |
| | | let clanId = this.$store.state.user.clanId |
| | | let userId = this.$store.state.user.userId |
| | | // alert(userId) |
| | | try { |
| | | const res = await getFamilyMembers(clanId); // 假设需要家族ID参数 |
| | | |
| | | const ano = await listAnotherFamilyInfo(userId) |
| | | |
| | | console.log(res) |
| | | console.log(res.data) |
| | | this.anotherFamilyMembers = ano.data; |
| | | this.familyMembers = res.data; |
| | | // console.log(this.familyMembers.length) |
| | | // console.log(this.familyMembers.length) |
| | |
| | | |
| | | // 确认选择成员(保存到表单) |
| | | confirmMemberSelection() { |
| | | console.log() |
| | | this.formDat.selectedMemberIds = [...this.selectedMemberIds]; // 将弹窗选中的ID同步到表单 |
| | | this.memberDialogVisible = false; |
| | | this.$modal.message(`已选择 ${this.selectedMemberNames.length} 名家族成员`); |
| | | this.$message.info(`已选择 ${this.selectedMemberNames.length} 名家族成员`); |
| | | // 清空对话框里面选择的内容 |
| | | // if(this.displayMemberNames.length==0) |
| | | this.displayMemberNames = this.selectedMemberNames |
| | | this.selectedMemberIds = []; |
| | | }, |
| | | handleTagClose(index, name) { |
| | | // 从 selectedMemberNames 数组中移除当前关闭的标签名称 |
| | | // const index = this.selectedMemberNames.findIndex(item=== name); |
| | | selectedMemberIds: this.selectedMemberIds.filter( |
| | | item => item!== index // 过滤掉与关闭名称相同的元素 |
| | | ) |
| | | this.$forceUpdate(); |
| | | console.log(this.selectedMemberIds) |
| | | this.selectedMemberNames.splice(index, 1); |
| | | this.$forceUpdate(); |
| | | selectedMemberNames: this.selectedMemberNames.filter( |
| | | item => item !== name // 过滤掉与关闭名称相同的元素 |
| | | ) |
| | | console.log(this.selectedMemberNames) |
| | | |
| | | // 移除已选成员标签 |
| | | handleTagClose(index) { |
| | | const removedId = this.familyForm.selectedMemberIds[index]; |
| | | this.familyForm.selectedMemberIds = this.familyForm.selectedMemberIds.filter(id => id !== removedId); |
| | | } |
| | | }, |
| | | // |
| | | |
| | | } |
| | | }; |
| | |
| | | .el-loading-spinner { |
| | | margin-bottom: 16px; |
| | | } |
| | | } |
| | | .signature-checkbox |
| | | }.signature-checkbox |
| | | { |
| | | margin-right: 15px; |
| | | display: inline-block; |
| | | margin-bottom: 8px; |
| | | cursor: pointer; |
| | | } |
| | | .signature-checkbox input[type="checkbox"] { |
| | | margin-right: 6px; |
| | | } |
| | | |
| | | .signature-checkbox span { |
| | | cursor: pointer; |
| | | } |
| | | /* 无数据样式 */ |
| | | .no-data { |